mirror of
https://github.com/friendica/friendica
synced 2024-11-15 06:13:54 +00:00
1 line
No EOL
1.6 MiB
1 line
No EOL
1.6 MiB
{"version":3,"file":"hls-demo.js.map","sources":["tests/test-streams.js","node_modules/jsonpack/main.js","node_modules/promise-polyfill/src/finally.js","node_modules/promise-polyfill/src/allSettled.js","node_modules/promise-polyfill/src/any.js","node_modules/promise-polyfill/src/index.js","node_modules/promise-polyfill/src/polyfill.js","demo/demo-utils.js","node_modules/moment/moment.js","node_modules/chart.js/dist/Chart.js","demo/chart/chartjs-horizontal-bar.ts","demo/chart/timeline-chart.ts","demo/main.js"],"sourcesContent":["/**\n * Create test stream\n * @param {string} url\n * @param {string} description\n * @param {boolean} [live]\n * @param {boolean} [abr]\n * @param {string[]} [skip_ua]\n * @returns {{url: string, description: string, live: boolean, abr: boolean, skip_ua: string[]}}\n */\nfunction createTestStream(\n url,\n description,\n live = false,\n abr = true,\n skip_ua = [],\n) {\n return {\n url: url,\n description: description,\n live: live,\n abr: abr,\n skip_ua: skip_ua,\n };\n}\n\n/**\n * @param {Object} target\n * @param {Object} [config]\n * @returns {{url: string, description: string, live: boolean, abr: boolean, skip_ua: string[]}}\n */\nfunction createTestStreamWithConfig(target, config) {\n if (typeof target !== 'object') {\n throw new Error('target should be object');\n }\n\n const testStream = createTestStream(\n target.url,\n target.description,\n target.live,\n target.abr,\n target.skip_ua,\n );\n\n testStream.config = config;\n\n return testStream;\n}\n\nmodule.exports = {\n bbb: {\n url: 'https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8',\n description: 'Big Buck Bunny - adaptive qualities',\n abr: true,\n },\n fdr: {\n url: 'https://cdn.jwplayer.com/manifests/pZxWPRg4.m3u8',\n description: 'FDR - CDN packaged, 4s segments, 180p - 1080p',\n abr: true,\n },\n bigBuckBunny480p: {\n url: 'https://test-streams.mux.dev/x36xhzz/url_6/193039199_mp4_h264_aac_hq_7.m3u8',\n description: 'Big Buck Bunny - 480p only',\n abr: false,\n },\n arte: {\n url: 'https://test-streams.mux.dev/test_001/stream.m3u8',\n description: 'ARTE China,ABR',\n abr: true,\n },\n deltatreDAI: {\n url: 'https://test-streams.mux.dev/dai-discontinuity-deltatre/manifest.m3u8',\n description: 'Ad-insertion in event stream',\n abr: false,\n },\n issue666: {\n url: 'https://playertest.longtailvideo.com/adaptive/issue666/playlists/cisq0gim60007xzvi505emlxx.m3u8',\n description:\n 'Surveillance footage - https://github.com/video-dev/hls.js/issues/666',\n abr: false,\n },\n closedCaptions: {\n url: 'https://playertest.longtailvideo.com/adaptive/captions/playlist.m3u8',\n description: 'CNN special report, with CC',\n abr: false,\n },\n customIvBadDts: {\n url: 'https://playertest.longtailvideo.com/adaptive/customIV/prog_index.m3u8',\n description: 'Custom IV with bad PTS DTS',\n abr: false,\n },\n oceansAES: {\n url: 'https://playertest.longtailvideo.com/adaptive/oceans_aes/oceans_aes.m3u8',\n description: 'AES-128 encrypted, ABR',\n abr: true,\n },\n tracksWithAES: {\n url: 'https://playertest.longtailvideo.com/adaptive/aes-with-tracks/master.m3u8',\n description: 'AES-128 encrypted, TS main with AAC audio track',\n abr: false,\n },\n mp3Audio: {\n url: 'https://playertest.longtailvideo.com/adaptive/vod-with-mp3/manifest.m3u8',\n description: 'MP3 VOD demo',\n abr: false,\n },\n mpegAudioOnly: {\n url: 'https://pl.streamingvideoprovider.com/mp3-playlist/playlist.m3u8',\n description: 'MPEG Audio Only demo',\n abr: false,\n skip_ua: ['MicrosoftEdge', 'firefox'],\n },\n fmp4: {\n url: 'https://storage.googleapis.com/shaka-demo-assets/angel-one-hls/hls.m3u8',\n description: 'HLS fMP4 Angel-One multiple audio-tracks',\n abr: true,\n },\n fmp4Bitmovin: {\n url: 'https://bitdash-a.akamaihd.net/content/MI201109210084_1/m3u8s-fmp4/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8',\n description: 'HLS fMP4 by Bitmovin',\n abr: true,\n },\n fmp4BitmovinHevc: {\n url: 'https://bitmovin-a.akamaihd.net/content/dataset/multi-codec/hevc/stream_fmp4.m3u8',\n description:\n 'HLS HEVC fMP4 by Bitmovin (Safari and Edge? only as of 2020-08)',\n abr: true,\n skipFunctionalTests: true,\n },\n offset_pts: {\n url: 'https://test-streams.mux.dev/pts_shift/master.m3u8',\n description: 'DK Turntable, PTS shifted by 2.3s',\n abr: true,\n },\n angelOneShakaWidevine: createTestStreamWithConfig(\n {\n url: 'https://storage.googleapis.com/shaka-demo-assets/angel-one-widevine-hls/hls.m3u8',\n description:\n 'Shaka-packager Widevine DRM (EME) HLS-fMP4 - Angel One Demo',\n abr: true,\n skip_ua: [\n 'firefox',\n 'safari',\n { name: 'chrome', version: '75.0' },\n { name: 'chrome', version: '79.0' },\n ],\n },\n {\n widevineLicenseUrl: 'https://cwip-shaka-proxy.appspot.com/no_auth',\n emeEnabled: true,\n },\n ),\n audioOnlyMultipleLevels: {\n url: 'https://s3.amazonaws.com/qa.jwplayer.com/~alex/121628/new_master.m3u8',\n description: 'Multiple non-alternate audio levels',\n abr: true,\n },\n pdtDuplicate: {\n url: 'https://playertest.longtailvideo.com/adaptive/artbeats/manifest.m3u8',\n description: 'Duplicate sequential PDT values',\n abr: false,\n },\n pdtLargeGap: {\n url: 'https://playertest.longtailvideo.com/adaptive/boxee/playlist.m3u8',\n description: 'PDTs with large gaps following discontinuities',\n abr: false,\n },\n pdtBadValues: {\n url: 'https://playertest.longtailvideo.com/adaptive/progdatime/playlist2.m3u8',\n description: 'PDTs with bad values',\n abr: false,\n },\n pdtOneValue: {\n url: 'https://playertest.longtailvideo.com/adaptive/aviion/manifest.m3u8',\n description: 'One PDT, no discontinuities',\n abr: false,\n },\n noTrackIntersection: createTestStreamWithConfig(\n {\n url: 'https://s3.amazonaws.com/qa.jwplayer.com/~alex/123633/new_master.m3u8',\n description:\n 'Audio/video track PTS values do not intersect; 10 second start gap',\n abr: false,\n },\n {\n avBufferOffset: 10.5,\n },\n ),\n altAudioAndTracks: {\n // url: 'https://wowzaec2demo.streamlock.net/vod-multitrack/_definst_/smil:ElephantsDream/elephantsdream2.smil/playlist.m3u',\n url: 'https://playertest.longtailvideo.com/adaptive/elephants_dream_v4/index.m3u8',\n description: 'Alternate audio tracks, and multiple VTT tracks',\n vendor: 'wowza',\n abr: true,\n },\n altAudioAudioOnly: createTestStreamWithConfig(\n {\n url: 'https://playertest.longtailvideo.com/adaptive/alt-audio-no-video/sintel/playlist.m3u8',\n description: 'Audio only with alternate audio track (Sintel)',\n abr: false,\n },\n {\n // the playlist segment durations are longer than the media. So much so, that when seeking near the end,\n // the timeline shifts roughly 10 seconds seconds back, and as a result buffering skips several segments\n // to adjust for the currentTime now being places at the very end of the stream.\n allowedBufferedRangesInSeekTest: 3,\n },\n ),\n altAudioMultiAudioOnly: {\n url: 'https://playertest.longtailvideo.com/adaptive/alt-audio-no-video/angel-one.m3u8',\n description: 'Audio only with multiple alternate audio tracks (Angel One)',\n abr: false,\n },\n muxedFmp4: {\n url: 'https://s3.amazonaws.com/qa.jwplayer.com/hlsjs/muxed-fmp4/hls.m3u8',\n description: 'Muxed av fmp4 - appended to \"audiovideo\" SourceBuffer',\n abr: false,\n },\n altAudioWithPdtAndStartGap: {\n url: 'https://playertest.longtailvideo.com/adaptive/hls-test-streams/test-audio-pdt/playlist.m3u8',\n description: 'PDT before each segment, 1.59s start gap',\n // Disable smooth switch on this stream. Test is flakey because of what looks like (auto)play issue. To be expected with this large a gap (for now).\n // abr: true,\n startSeek: true,\n },\n AppleAdvancedHevcAvcHls: {\n url: 'https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_adv_example_hevc/master.m3u8',\n description:\n 'Advanced stream (HEVC/H.264, AC-3/AAC, WebVTT, fMP4 segments)',\n },\n MuxLowLatencyHls: {\n url: 'https://stream.mux.com/v69RSHhFelSm4701snP22dYz2jICy4E4FUyk02rW4gxRM.m3u8',\n description:\n 'Low-Latency HLS sample of Big Buck Bunny loop and a timer. Restarts every 12 hours. (fMP4 segments)',\n live: true,\n },\n // AppleLowLatencyHls: {\n // url: 'https://ll-hls-test.apple.com/master.m3u8',\n // description: 'Apple Low-Latency HLS sample (TS segments)',\n // live: true,\n // },\n // AppleLowLatencyCmafHls: {\n // url: 'https://ll-hls-test.apple.com/cmaf/master.m3u8',\n // description: 'Apple Low-Latency HLS sample (fMP4 segments)',\n // live: true,\n // },\n groupIds: {\n url: 'https://mtoczko.github.io/hls-test-streams/test-group/playlist.m3u8',\n description: 'Group-id: subtitle and audio',\n abr: true,\n skipFunctionalTests: true,\n },\n redundantLevelsWithTrackGroups: {\n url: 'https://playertest.longtailvideo.com/adaptive/elephants_dream_v4/redundant.m3u8',\n description: 'Redundant levels with subtitle and audio track groups',\n abr: true,\n skipFunctionalTests: true,\n },\n startDelimiterOverlappingBetweenPESPackets: {\n url: 'https://wistia.github.io/hlsjs-test-streams/assets/start-delimiter.m3u8',\n description: `A stream with the start delimiter overlapping between PES packets.\n Related to https://github.com/video-dev/hls.js/issues/3834, where Apple Silicon chips throw decoding errors if\n NAL units are not starting right at the beginning of the PES packet when using hardware accelerated decoding.`,\n abr: false,\n skipFunctionalTests: true,\n },\n};\n","/*\n Copyright (c) 2013, Rodrigo González, Sapienlab All Rights Reserved.\n Available via MIT LICENSE. See https://github.com/roro89/jsonpack/blob/master/LICENSE.md for details.\n */\n(function(define) {\n\n\tdefine([], function() {\n\n\t\tvar TOKEN_TRUE = -1;\n\t\tvar TOKEN_FALSE = -2;\n\t\tvar TOKEN_NULL = -3;\n\t\tvar TOKEN_EMPTY_STRING = -4;\n\t\tvar TOKEN_UNDEFINED = -5;\n\n\t\tvar pack = function(json, options) {\n\n\t\t\t// Canonizes the options\n\t\t\toptions = options || {};\n\n\t\t\t// A shorthand for debugging\n\t\t\tvar verbose = options.verbose || false;\n\n\t\t\tverbose && console.log('Normalize the JSON Object');\n\n\t\t\t// JSON as Javascript Object (Not string representation)\n\t\t\tjson = typeof json === 'string' ? this.JSON.parse(json) : json;\n\n\t\t\tverbose && console.log('Creating a empty dictionary');\n\n\t\t\t// The dictionary\n\t\t\tvar dictionary = {\n\t\t\t\tstrings : [],\n\t\t\t\tintegers : [],\n\t\t\t\tfloats : []\n\t\t\t};\n\n\t\t\tverbose && console.log('Creating the AST');\n\n\t\t\t// The AST\n\t\t\tvar ast = (function recursiveAstBuilder(item) {\n\n\t\t\t\tverbose && console.log('Calling recursiveAstBuilder with ' + this.JSON.stringify(item));\n\n\t\t\t\t// The type of the item\n\t\t\t\tvar type = typeof item;\n\n\t\t\t\t// Case 7: The item is null\n\t\t\t\tif (item === null) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype : 'null',\n\t\t\t\t\t\tindex : TOKEN_NULL\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t//add undefined \n\t\t\t\tif (typeof item === 'undefined') {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype : 'undefined',\n\t\t\t\t\t\tindex : TOKEN_UNDEFINED\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Case 1: The item is Array Object\n\t\t\t\tif ( item instanceof Array) {\n\n\t\t\t\t\t// Create a new sub-AST of type Array (@)\n\t\t\t\t\tvar ast = ['@'];\n\n\t\t\t\t\t// Add each items\n\t\t\t\t\tfor (var i in item) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (!item.hasOwnProperty(i)) continue;\n\n\t\t\t\t\t\tast.push(recursiveAstBuilder(item[i]));\n\t\t\t\t\t}\n\n\t\t\t\t\t// And return\n\t\t\t\t\treturn ast;\n\n\t\t\t\t}\n\n\t\t\t\t// Case 2: The item is Object\n\t\t\t\tif (type === 'object') {\n\n\t\t\t\t\t// Create a new sub-AST of type Object ($)\n\t\t\t\t\tvar ast = ['$'];\n\n\t\t\t\t\t// Add each items\n\t\t\t\t\tfor (var key in item) {\n\n\t\t\t\t\t\tif (!item.hasOwnProperty(key))\n\t\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t\tast.push(recursiveAstBuilder(key));\n\t\t\t\t\t\tast.push(recursiveAstBuilder(item[key]));\n\t\t\t\t\t}\n\n\t\t\t\t\t// And return\n\t\t\t\t\treturn ast;\n\n\t\t\t\t}\n\n\t\t\t\t// Case 3: The item empty string\n\t\t\t\tif (item === '') {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype : 'empty',\n\t\t\t\t\t\tindex : TOKEN_EMPTY_STRING\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Case 4: The item is String\n\t\t\t\tif (type === 'string') {\n\n\t\t\t\t\t// The index of that word in the dictionary\n\t\t\t\t\tvar index = _indexOf.call(dictionary.strings, item);\n\n\t\t\t\t\t// If not, add to the dictionary and actualize the index\n\t\t\t\t\tif (index == -1) {\n\t\t\t\t\t\tdictionary.strings.push(_encode(item));\n\t\t\t\t\t\tindex = dictionary.strings.length - 1;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Return the token\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype : 'strings',\n\t\t\t\t\t\tindex : index\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Case 5: The item is integer\n\t\t\t\tif (type === 'number' && item % 1 === 0) {\n\n\t\t\t\t\t// The index of that number in the dictionary\n\t\t\t\t\tvar index = _indexOf.call(dictionary.integers, item);\n\n\t\t\t\t\t// If not, add to the dictionary and actualize the index\n\t\t\t\t\tif (index == -1) {\n\t\t\t\t\t\tdictionary.integers.push(_base10To36(item));\n\t\t\t\t\t\tindex = dictionary.integers.length - 1;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Return the token\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype : 'integers',\n\t\t\t\t\t\tindex : index\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Case 6: The item is float\n\t\t\t\tif (type === 'number') {\n\t\t\t\t\t// The index of that number in the dictionary\n\t\t\t\t\tvar index = _indexOf.call(dictionary.floats, item);\n\n\t\t\t\t\t// If not, add to the dictionary and actualize the index\n\t\t\t\t\tif (index == -1) {\n\t\t\t\t\t\t// Float not use base 36\n\t\t\t\t\t\tdictionary.floats.push(item);\n\t\t\t\t\t\tindex = dictionary.floats.length - 1;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Return the token\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype : 'floats',\n\t\t\t\t\t\tindex : index\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Case 7: The item is boolean\n\t\t\t\tif (type === 'boolean') {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype : 'boolean',\n\t\t\t\t\t\tindex : item ? TOKEN_TRUE : TOKEN_FALSE\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Default\n\t\t\t\tthrow new Error('Unexpected argument of type ' + typeof (item));\n\n\t\t\t})(json);\n\n\t\t\t// A set of shorthands proxies for the length of the dictionaries\n\t\t\tvar stringLength = dictionary.strings.length;\n\t\t\tvar integerLength = dictionary.integers.length;\n\t\t\tvar floatLength = dictionary.floats.length;\n\n\t\t\tverbose && console.log('Parsing the dictionary');\n\n\t\t\t// Create a raw dictionary\n\t\t\tvar packed = dictionary.strings.join('|');\n\t\t\tpacked += '^' + dictionary.integers.join('|');\n\t\t\tpacked += '^' + dictionary.floats.join('|');\n\n\t\t\tverbose && console.log('Parsing the structure');\n\n\t\t\t// And add the structure\n\t\t\tpacked += '^' + (function recursiveParser(item) {\n\n\t\t\t\tverbose && console.log('Calling a recursiveParser with ' + this.JSON.stringify(item));\n\n\t\t\t\t// If the item is Array, then is a object of\n\t\t\t\t// type [object Object] or [object Array]\n\t\t\t\tif ( item instanceof Array) {\n\n\t\t\t\t\t// The packed resulting\n\t\t\t\t\tvar packed = item.shift();\n\n\t\t\t\t\tfor (var i in item) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (!item.hasOwnProperty(i)) \n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\n\t\t\t\t\t\tpacked += recursiveParser(item[i]) + '|';\n\t\t\t\t\t}\n\n\t\t\t\t\treturn (packed[packed.length - 1] === '|' ? packed.slice(0, -1) : packed) + ']';\n\n\t\t\t\t}\n\n\t\t\t\t// A shorthand proxies\n\t\t\t\tvar type = item.type, index = item.index;\n\n\t\t\t\tif (type === 'strings') {\n\t\t\t\t\t// Just return the base 36 of index\n\t\t\t\t\treturn _base10To36(index);\n\t\t\t\t}\n\n\t\t\t\tif (type === 'integers') {\n\t\t\t\t\t// Return a base 36 of index plus stringLength offset\n\t\t\t\t\treturn _base10To36(stringLength + index);\n\t\t\t\t}\n\n\t\t\t\tif (type === 'floats') {\n\t\t\t\t\t// Return a base 36 of index plus stringLength and integerLength offset\n\t\t\t\t\treturn _base10To36(stringLength + integerLength + index);\n\t\t\t\t}\n\n\t\t\t\tif (type === 'boolean') {\n\t\t\t\t\treturn item.index;\n\t\t\t\t}\n\n\t\t\t\tif (type === 'null') {\n\t\t\t\t\treturn TOKEN_NULL;\n\t\t\t\t}\n\n\t\t\t\tif (type === 'undefined') {\n\t\t\t\t\treturn TOKEN_UNDEFINED;\n\t\t\t\t}\n\n\t\t\t\tif (type === 'empty') {\n\t\t\t\t\treturn TOKEN_EMPTY_STRING;\n\t\t\t\t}\n\n\t\t\t\tthrow new TypeError('The item is alien!');\n\n\t\t\t})(ast);\n\n\t\t\tverbose && console.log('Ending parser');\n\n\t\t\t// If debug, return a internal representation of dictionary and stuff\n\t\t\tif (options.debug)\n\t\t\t\treturn {\n\t\t\t\t\tdictionary : dictionary,\n\t\t\t\t\tast : ast,\n\t\t\t\t\tpacked : packed\n\t\t\t\t};\n\n\t\t\treturn packed;\n\n\t\t};\n\n\t\tvar unpack = function(packed, options) {\n\n\t\t\t// Canonizes the options\n\t\t\toptions = options || {};\n\n\t\t\t// A raw buffer\n\t\t\tvar rawBuffers = packed.split('^');\n\n\t\t\t// Create a dictionary\n\t\t\toptions.verbose && console.log('Building dictionary');\n\t\t\tvar dictionary = [];\n\n\t\t\t// Add the strings values\n\t\t\tvar buffer = rawBuffers[0];\n\t\t\tif (buffer !== '') {\n\t\t\t\tbuffer = buffer.split('|');\n\t\t\t\toptions.verbose && console.log('Parse the strings dictionary');\n\t\t\t\tfor (var i=0, n=buffer.length; i<n; i++){\n\t\t\t\t\tdictionary.push(_decode(buffer[i]));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the integers values\n\t\t\tbuffer = rawBuffers[1];\n\t\t\tif (buffer !== '') {\n\t\t\t\tbuffer = buffer.split('|');\n\t\t\t\toptions.verbose && console.log('Parse the integers dictionary');\n\t\t\t\tfor (var i=0, n=buffer.length; i<n; i++){\n\t\t\t\t\tdictionary.push(_base36To10(buffer[i]));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the floats values\n\t\t\tbuffer = rawBuffers[2];\n\t\t\tif (buffer !== '') {\n\t\t\t\tbuffer = buffer.split('|')\n\t\t\t\toptions.verbose && console.log('Parse the floats dictionary');\n\t\t\t\tfor (var i=0, n=buffer.length; i<n; i++){\n\t\t\t\t\tdictionary.push(parseFloat(buffer[i]));\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Free memory\n\t\t\tbuffer = null;\n\n\t\t\toptions.verbose && console.log('Tokenizing the structure');\n\n\t\t\t// Tokenizer the structure\n\t\t\tvar number36 = '';\n\t\t\tvar tokens = [];\n\t\t\tvar len=rawBuffers[3].length;\n\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\tvar symbol = rawBuffers[3].charAt(i);\n\t\t\t\tif (symbol === '|' || symbol === '$' || symbol === '@' || symbol === ']') {\n\t\t\t\t\tif (number36) {\n\t\t\t\t\t\ttokens.push(_base36To10(number36));\n\t\t\t\t\t\tnumber36 = '';\n\t\t\t\t\t}\n\t\t\t\t\tsymbol !== '|' && tokens.push(symbol);\n\t\t\t\t} else {\n\t\t\t\t\tnumber36 += symbol;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// A shorthand proxy for tokens.length\n\t\t\tvar tokensLength = tokens.length;\n\n\t\t\t// The index of the next token to read\n\t\t\tvar tokensIndex = 0;\n\n\t\t\toptions.verbose && console.log('Starting recursive parser');\n\n\t\t\treturn (function recursiveUnpackerParser() {\n\n\t\t\t\t// Maybe '$' (object) or '@' (array)\n\t\t\t\tvar type = tokens[tokensIndex++];\n\n\t\t\t\toptions.verbose && console.log('Reading collection type ' + (type === '$' ? 'object' : 'Array'));\n\n\t\t\t\t// Parse an array\n\t\t\t\tif (type === '@') {\n\n\t\t\t\t\tvar node = [];\n\n\t\t\t\t\tfor (; tokensIndex < tokensLength; tokensIndex++) {\n\t\t\t\t\t\tvar value = tokens[tokensIndex];\n\t\t\t\t\t\toptions.verbose && console.log('Read ' + value + ' symbol');\n\t\t\t\t\t\tif (value === ']')\n\t\t\t\t\t\t\treturn node;\n\t\t\t\t\t\tif (value === '@' || value === '$') {\n\t\t\t\t\t\t\tnode.push(recursiveUnpackerParser());\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tswitch(value) {\n\t\t\t\t\t\t\t\tcase TOKEN_TRUE:\n\t\t\t\t\t\t\t\t\tnode.push(true);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase TOKEN_FALSE:\n\t\t\t\t\t\t\t\t\tnode.push(false);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase TOKEN_NULL:\n\t\t\t\t\t\t\t\t\tnode.push(null);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase TOKEN_UNDEFINED:\n\t\t\t\t\t\t\t\t\tnode.push(undefined);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase TOKEN_EMPTY_STRING:\n\t\t\t\t\t\t\t\t\tnode.push('');\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\tnode.push(dictionary[value]);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\toptions.verbose && console.log('Parsed ' + this.JSON.stringify(node));\n\n\t\t\t\t\treturn node;\n\n\t\t\t\t}\n\n\t\t\t\t// Parse a object\n\t\t\t\tif (type === '$') {\n\t\t\t\t\tvar node = {};\n\n\t\t\t\t\tfor (; tokensIndex < tokensLength; tokensIndex++) {\n\n\t\t\t\t\t\tvar key = tokens[tokensIndex];\n\n\t\t\t\t\t\tif (key === ']')\n\t\t\t\t\t\t\treturn node;\n\n\t\t\t\t\t\tif (key === TOKEN_EMPTY_STRING)\n\t\t\t\t\t\t\tkey = '';\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tkey = dictionary[key];\n\n\t\t\t\t\t\tvar value = tokens[++tokensIndex];\n\n\t\t\t\t\t\tif (value === '@' || value === '$') {\n\t\t\t\t\t\t\tnode[key] = recursiveUnpackerParser();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tswitch(value) {\n\t\t\t\t\t\t\t\tcase TOKEN_TRUE:\n\t\t\t\t\t\t\t\t\tnode[key] = true;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase TOKEN_FALSE:\n\t\t\t\t\t\t\t\t\tnode[key] = false;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase TOKEN_NULL:\n\t\t\t\t\t\t\t\t\tnode[key] = null;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase TOKEN_UNDEFINED:\n\t\t\t\t\t\t\t\t\tnode[key] = undefined;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase TOKEN_EMPTY_STRING:\n\t\t\t\t\t\t\t\t\tnode[key] = '';\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\tnode[key] = dictionary[value];\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\toptions.verbose && console.log('Parsed ' + this.JSON.stringify(node));\n\n\t\t\t\t\treturn node;\n\t\t\t\t}\n\n\t\t\t\tthrow new TypeError('Bad token ' + type + ' isn\\'t a type');\n\n\t\t\t})();\n\n\t\t}\n\t\t/**\n\t\t * Get the index value of the dictionary\n\t\t * @param {Object} dictionary a object that have two array attributes: 'string' and 'number'\n\t\t * @param {Object} data\n\t\t */\n\t\tvar _indexOfDictionary = function(dictionary, value) {\n\n\t\t\t// The type of the value\n\t\t\tvar type = typeof value;\n\n\t\t\t// If is boolean, return a boolean token\n\t\t\tif (type === 'boolean')\n\t\t\t\treturn value ? TOKEN_TRUE : TOKEN_FALSE;\n\n\t\t\t// If is null, return a... yes! the null token\n\t\t\tif (value === null)\n\t\t\t\treturn TOKEN_NULL;\n\n\t\t\t//add undefined\n\t\t\tif (typeof value === 'undefined')\n\t\t\t\treturn TOKEN_UNDEFINED;\n\n\n\t\t\tif (value === '') {\n\t\t\t\treturn TOKEN_EMPTY_STRING;\n\t\t\t}\n\n\t\t\tif (type === 'string') {\n\t\t\t\tvalue = _encode(value);\n\t\t\t\tvar index = _indexOf.call(dictionary.strings, value);\n\t\t\t\tif (index === -1) {\n\t\t\t\t\tdictionary.strings.push(value);\n\t\t\t\t\tindex = dictionary.strings.length - 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If has an invalid JSON type (example a function)\n\t\t\tif (type !== 'string' && type !== 'number') {\n\t\t\t\tthrow new Error('The type is not a JSON type');\n\t\t\t};\n\n\t\t\tif (type === 'string') {// string\n\t\t\t\tvalue = _encode(value);\n\t\t\t} else if (value % 1 === 0) {// integer\n\t\t\t\tvalue = _base10To36(value);\n\t\t\t} else {// float\n\n\t\t\t}\n\n\t\t\t// If is number, \"serialize\" the value\n\t\t\tvalue = type === 'number' ? _base10To36(value) : _encode(value);\n\n\t\t\t// Retrieve the index of that value in the dictionary\n\t\t\tvar index = _indexOf.call(dictionary[type], value);\n\n\t\t\t// If that value is not in the dictionary\n\t\t\tif (index === -1) {\n\t\t\t\t// Push the value\n\t\t\t\tdictionary[type].push(value);\n\t\t\t\t// And return their index\n\t\t\t\tindex = dictionary[type].length - 1;\n\t\t\t}\n\n\t\t\t// If the type is a number, then add the '+' prefix character\n\t\t\t// to differentiate that they is a number index. If not, then\n\t\t\t// just return a 36-based representation of the index\n\t\t\treturn type === 'number' ? '+' + index : index;\n\n\t\t};\n\n\t\tvar _encode = function(str) {\n\t\t\tif ( typeof str !== 'string')\n\t\t\t\treturn str;\n\n\t\t\treturn str.replace(/[\\+ \\|\\^\\%]/g, function(a) {\n\t\t\t\treturn ({\n\t\t\t\t' ' : '+',\n\t\t\t\t'+' : '%2B',\n\t\t\t\t'|' : '%7C',\n\t\t\t\t'^' : '%5E',\n\t\t\t\t'%' : '%25'\n\t\t\t\t})[a]\n\t\t\t});\n\t\t};\n\n\t\tvar _decode = function(str) {\n\t\t\tif ( typeof str !== 'string')\n\t\t\t\treturn str;\n\n\t\t\treturn str.replace(/\\+|%2B|%7C|%5E|%25/g, function(a) {\n\t\t\t\treturn ({\n\t\t\t\t'+' : ' ',\n\t\t\t\t'%2B' : '+',\n\t\t\t\t'%7C' : '|',\n\t\t\t\t'%5E' : '^',\n\t\t\t\t'%25' : '%'\n\t\t\t\t})[a]\n\t\t\t})\n\t\t};\n\n\t\tvar _base10To36 = function(number) {\n\t\t\treturn Number.prototype.toString.call(number, 36).toUpperCase();\n\t\t};\n\n\t\tvar _base36To10 = function(number) {\n\t\t\treturn parseInt(number, 36);\n\t\t};\n\n\t\tvar _indexOf = Array.prototype.indexOf ||\n\t\tfunction(obj, start) {\n\t\t\tfor (var i = (start || 0), j = this.length; i < j; i++) {\n\t\t\t\tif (this[i] === obj) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t};\n\n\t\treturn {\n\t\t\tJSON : JSON,\n\t\t\tpack : pack,\n\t\t\tunpack : unpack\n\t\t};\n\n\t});\n\n})( typeof define == 'undefined' || !define.amd ? function(deps, factory) {\n\tvar jsonpack = factory();\n\tif ( typeof exports != 'undefined')\n\t\tfor (var key in jsonpack)\n\t\texports[key] = jsonpack[key];\n\telse\n\t\twindow.jsonpack = jsonpack;\n} : define);\n","/**\n * @this {Promise}\n */\nfunction finallyConstructor(callback) {\n var constructor = this.constructor;\n return this.then(\n function(value) {\n // @ts-ignore\n return constructor.resolve(callback()).then(function() {\n return value;\n });\n },\n function(reason) {\n // @ts-ignore\n return constructor.resolve(callback()).then(function() {\n // @ts-ignore\n return constructor.reject(reason);\n });\n }\n );\n}\n\nexport default finallyConstructor;\n","function allSettled(arr) {\n var P = this;\n return new P(function(resolve, reject) {\n if (!(arr && typeof arr.length !== 'undefined')) {\n return reject(\n new TypeError(\n typeof arr +\n ' ' +\n arr +\n ' is not iterable(cannot read property Symbol(Symbol.iterator))'\n )\n );\n }\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(\n val,\n function(val) {\n res(i, val);\n },\n function(e) {\n args[i] = { status: 'rejected', reason: e };\n if (--remaining === 0) {\n resolve(args);\n }\n }\n );\n return;\n }\n }\n args[i] = { status: 'fulfilled', value: val };\n if (--remaining === 0) {\n resolve(args);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n}\n\nexport default allSettled;\n","/**\n * @constructor\n */\nfunction AggregateError(errors, message) {\n (this.name = 'AggregateError'), (this.errors = errors);\n this.message = message || '';\n}\nAggregateError.prototype = Error.prototype;\n\nfunction any(arr) {\n var P = this;\n return new P(function(resolve, reject) {\n if (!(arr && typeof arr.length !== 'undefined')) {\n return reject(new TypeError('Promise.any accepts an array'));\n }\n\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return reject();\n\n var rejectionReasons = [];\n for (var i = 0; i < args.length; i++) {\n try {\n P.resolve(args[i])\n .then(resolve)\n .catch(function(error) {\n rejectionReasons.push(error);\n if (rejectionReasons.length === args.length) {\n reject(\n new AggregateError(\n rejectionReasons,\n 'All promises were rejected'\n )\n );\n }\n });\n } catch (ex) {\n reject(ex);\n }\n }\n });\n}\n\nexport default any;\n","import promiseFinally from './finally';\nimport allSettled from './allSettled';\nimport any from './any';\n\n// Store setTimeout reference so promise-polyfill will be unaffected by\n// other code modifying setTimeout (like sinon.useFakeTimers())\nvar setTimeoutFunc = setTimeout;\n\nfunction isArray(x) {\n return Boolean(x && typeof x.length !== 'undefined');\n}\n\nfunction noop() {}\n\n// Polyfill for Function.prototype.bind\nfunction bind(fn, thisArg) {\n return function() {\n fn.apply(thisArg, arguments);\n };\n}\n\n/**\n * @constructor\n * @param {Function} fn\n */\nfunction Promise(fn) {\n if (!(this instanceof Promise))\n throw new TypeError('Promises must be constructed via new');\n if (typeof fn !== 'function') throw new TypeError('not a function');\n /** @type {!number} */\n this._state = 0;\n /** @type {!boolean} */\n this._handled = false;\n /** @type {Promise|undefined} */\n this._value = undefined;\n /** @type {!Array<!Function>} */\n this._deferreds = [];\n\n doResolve(fn, this);\n}\n\nfunction handle(self, deferred) {\n while (self._state === 3) {\n self = self._value;\n }\n if (self._state === 0) {\n self._deferreds.push(deferred);\n return;\n }\n self._handled = true;\n Promise._immediateFn(function() {\n var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n (self._state === 1 ? resolve : reject)(deferred.promise, self._value);\n return;\n }\n var ret;\n try {\n ret = cb(self._value);\n } catch (e) {\n reject(deferred.promise, e);\n return;\n }\n resolve(deferred.promise, ret);\n });\n}\n\nfunction resolve(self, newValue) {\n try {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self)\n throw new TypeError('A promise cannot be resolved with itself.');\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = newValue.then;\n if (newValue instanceof Promise) {\n self._state = 3;\n self._value = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(bind(then, newValue), self);\n return;\n }\n }\n self._state = 1;\n self._value = newValue;\n finale(self);\n } catch (e) {\n reject(self, e);\n }\n}\n\nfunction reject(self, newValue) {\n self._state = 2;\n self._value = newValue;\n finale(self);\n}\n\nfunction finale(self) {\n if (self._state === 2 && self._deferreds.length === 0) {\n Promise._immediateFn(function() {\n if (!self._handled) {\n Promise._unhandledRejectionFn(self._value);\n }\n });\n }\n\n for (var i = 0, len = self._deferreds.length; i < len; i++) {\n handle(self, self._deferreds[i]);\n }\n self._deferreds = null;\n}\n\n/**\n * @constructor\n */\nfunction Handler(onFulfilled, onRejected, promise) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, self) {\n var done = false;\n try {\n fn(\n function(value) {\n if (done) return;\n done = true;\n resolve(self, value);\n },\n function(reason) {\n if (done) return;\n done = true;\n reject(self, reason);\n }\n );\n } catch (ex) {\n if (done) return;\n done = true;\n reject(self, ex);\n }\n}\n\nPromise.prototype['catch'] = function(onRejected) {\n return this.then(null, onRejected);\n};\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n // @ts-ignore\n var prom = new this.constructor(noop);\n\n handle(this, new Handler(onFulfilled, onRejected, prom));\n return prom;\n};\n\nPromise.prototype['finally'] = promiseFinally;\n\nPromise.all = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!isArray(arr)) {\n return reject(new TypeError('Promise.all accepts an array'));\n }\n\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n try {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(\n val,\n function(val) {\n res(i, val);\n },\n reject\n );\n return;\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (ex) {\n reject(ex);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.any = any;\n\nPromise.allSettled = allSettled;\n\nPromise.resolve = function(value) {\n if (value && typeof value === 'object' && value.constructor === Promise) {\n return value;\n }\n\n return new Promise(function(resolve) {\n resolve(value);\n });\n};\n\nPromise.reject = function(value) {\n return new Promise(function(resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!isArray(arr)) {\n return reject(new TypeError('Promise.race accepts an array'));\n }\n\n for (var i = 0, len = arr.length; i < len; i++) {\n Promise.resolve(arr[i]).then(resolve, reject);\n }\n });\n};\n\n// Use polyfill for setImmediate for performance gains\nPromise._immediateFn =\n // @ts-ignore\n (typeof setImmediate === 'function' &&\n function(fn) {\n // @ts-ignore\n setImmediate(fn);\n }) ||\n function(fn) {\n setTimeoutFunc(fn, 0);\n };\n\nPromise._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n if (typeof console !== 'undefined' && console) {\n console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n }\n};\n\nexport default Promise;\n","import Promise from './index';\nimport promiseFinally from './finally';\nimport allSettled from './allSettled';\nimport any from './any';\n\n/** @suppress {undefinedVars} */\nvar globalNS = (function() {\n // the only reliable means to get the global object is\n // `Function('return this')()`\n // However, this causes CSP violations in Chrome apps.\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n})();\n\n// Expose the polyfill if Promise is undefined or set to a\n// non-function value. The latter can be due to a named HTMLElement\n// being exposed by browsers for legacy reasons.\n// https://github.com/taylorhakes/promise-polyfill/issues/114\nif (typeof globalNS['Promise'] !== 'function') {\n globalNS['Promise'] = Promise;\n} else {\n if (!globalNS.Promise.prototype['finally']) {\n globalNS.Promise.prototype['finally'] = promiseFinally;\n }\n if (!globalNS.Promise.allSettled) {\n globalNS.Promise.allSettled = allSettled;\n }\n if (!globalNS.Promise.any) {\n globalNS.Promise.any = any;\n }\n}\n","export function sortObject(obj) {\n if (typeof obj !== 'object') {\n return obj;\n }\n let temp = {};\n let keys = [];\n for (let key in obj) {\n keys.push(key);\n }\n keys.sort();\n for (let index in keys) {\n temp[keys[index]] = sortObject(obj[keys[index]]);\n }\n return temp;\n}\n\nexport function copyTextToClipboard(text) {\n let textArea = document.createElement('textarea');\n textArea.value = text;\n document.body.appendChild(textArea);\n textArea.select();\n try {\n let successful = document.execCommand('copy');\n let msg = successful ? 'successful' : 'unsuccessful';\n console.log('Copying text command was ' + msg);\n } catch (err) {\n console.log('Oops, unable to copy');\n }\n document.body.removeChild(textArea);\n}\n","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\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.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.4';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM', // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n","/*!\n * Chart.js v2.9.4\n * https://www.chartjs.org\n * (c) 2020 Chart.js Contributors\n * Released under the MIT License\n */\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(function() { try { return require('moment'); } catch(e) { } }()) :\ntypeof define === 'function' && define.amd ? define(['require'], function(require) { return factory(function() { try { return require('moment'); } catch(e) { } }()); }) :\n(global = global || self, global.Chart = factory(global.moment));\n}(this, (function (moment) { 'use strict';\n\nmoment = moment && moment.hasOwnProperty('default') ? moment['default'] : moment;\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nfunction getCjsExportFromNamespace (n) {\n\treturn n && n['default'] || n;\n}\n\nvar colorName = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\n\nvar conversions = createCommonjsModule(function (module) {\n/* MIT license */\n\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in colorName) {\n\tif (colorName.hasOwnProperty(key)) {\n\t\treverseKeywords[colorName[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in colorName) {\n\t\tif (colorName.hasOwnProperty(keyword)) {\n\t\t\tvar value = colorName[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn colorName[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n});\nvar conversions_1 = conversions.rgb;\nvar conversions_2 = conversions.hsl;\nvar conversions_3 = conversions.hsv;\nvar conversions_4 = conversions.hwb;\nvar conversions_5 = conversions.cmyk;\nvar conversions_6 = conversions.xyz;\nvar conversions_7 = conversions.lab;\nvar conversions_8 = conversions.lch;\nvar conversions_9 = conversions.hex;\nvar conversions_10 = conversions.keyword;\nvar conversions_11 = conversions.ansi16;\nvar conversions_12 = conversions.ansi256;\nvar conversions_13 = conversions.hcg;\nvar conversions_14 = conversions.apple;\nvar conversions_15 = conversions.gray;\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nvar route = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nvar colorConvert = convert;\n\nvar colorName$1 = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\n\n/* MIT license */\n\n\nvar colorString = {\n getRgba: getRgba,\n getHsla: getHsla,\n getRgb: getRgb,\n getHsl: getHsl,\n getHwb: getHwb,\n getAlpha: getAlpha,\n\n hexString: hexString,\n rgbString: rgbString,\n rgbaString: rgbaString,\n percentString: percentString,\n percentaString: percentaString,\n hslString: hslString,\n hslaString: hslaString,\n hwbString: hwbString,\n keyword: keyword\n};\n\nfunction getRgba(string) {\n if (!string) {\n return;\n }\n var abbr = /^#([a-fA-F0-9]{3,4})$/i,\n hex = /^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i,\n rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n keyword = /(\\w+)/;\n\n var rgb = [0, 0, 0],\n a = 1,\n match = string.match(abbr),\n hexAlpha = \"\";\n if (match) {\n match = match[1];\n hexAlpha = match[3];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i] + match[i], 16);\n }\n if (hexAlpha) {\n a = Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100;\n }\n }\n else if (match = string.match(hex)) {\n hexAlpha = match[2];\n match = match[1];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16);\n }\n if (hexAlpha) {\n a = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100;\n }\n }\n else if (match = string.match(rgba)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i + 1]);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(per)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(keyword)) {\n if (match[1] == \"transparent\") {\n return [0, 0, 0, 0];\n }\n rgb = colorName$1[match[1]];\n if (!rgb) {\n return;\n }\n }\n\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = scale(rgb[i], 0, 255);\n }\n if (!a && a != 0) {\n a = 1;\n }\n else {\n a = scale(a, 0, 1);\n }\n rgb[3] = a;\n return rgb;\n}\n\nfunction getHsla(string) {\n if (!string) {\n return;\n }\n var hsl = /^hsla?\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hsl);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n s = scale(parseFloat(match[2]), 0, 100),\n l = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, s, l, a];\n }\n}\n\nfunction getHwb(string) {\n if (!string) {\n return;\n }\n var hwb = /^hwb\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hwb);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n w = scale(parseFloat(match[2]), 0, 100),\n b = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, w, b, a];\n }\n}\n\nfunction getRgb(string) {\n var rgba = getRgba(string);\n return rgba && rgba.slice(0, 3);\n}\n\nfunction getHsl(string) {\n var hsla = getHsla(string);\n return hsla && hsla.slice(0, 3);\n}\n\nfunction getAlpha(string) {\n var vals = getRgba(string);\n if (vals) {\n return vals[3];\n }\n else if (vals = getHsla(string)) {\n return vals[3];\n }\n else if (vals = getHwb(string)) {\n return vals[3];\n }\n}\n\n// generators\nfunction hexString(rgba, a) {\n var a = (a !== undefined && rgba.length === 3) ? a : rgba[3];\n return \"#\" + hexDouble(rgba[0]) \n + hexDouble(rgba[1])\n + hexDouble(rgba[2])\n + (\n (a >= 0 && a < 1)\n ? hexDouble(Math.round(a * 255))\n : \"\"\n );\n}\n\nfunction rgbString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return rgbaString(rgba, alpha);\n }\n return \"rgb(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \")\";\n}\n\nfunction rgbaString(rgba, alpha) {\n if (alpha === undefined) {\n alpha = (rgba[3] !== undefined ? rgba[3] : 1);\n }\n return \"rgba(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2]\n + \", \" + alpha + \")\";\n}\n\nfunction percentString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return percentaString(rgba, alpha);\n }\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n\n return \"rgb(\" + r + \"%, \" + g + \"%, \" + b + \"%)\";\n}\n\nfunction percentaString(rgba, alpha) {\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n return \"rgba(\" + r + \"%, \" + g + \"%, \" + b + \"%, \" + (alpha || rgba[3] || 1) + \")\";\n}\n\nfunction hslString(hsla, alpha) {\n if (alpha < 1 || (hsla[3] && hsla[3] < 1)) {\n return hslaString(hsla, alpha);\n }\n return \"hsl(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%)\";\n}\n\nfunction hslaString(hsla, alpha) {\n if (alpha === undefined) {\n alpha = (hsla[3] !== undefined ? hsla[3] : 1);\n }\n return \"hsla(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%, \"\n + alpha + \")\";\n}\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\nfunction hwbString(hwb, alpha) {\n if (alpha === undefined) {\n alpha = (hwb[3] !== undefined ? hwb[3] : 1);\n }\n return \"hwb(\" + hwb[0] + \", \" + hwb[1] + \"%, \" + hwb[2] + \"%\"\n + (alpha !== undefined && alpha !== 1 ? \", \" + alpha : \"\") + \")\";\n}\n\nfunction keyword(rgb) {\n return reverseNames[rgb.slice(0, 3)];\n}\n\n// helpers\nfunction scale(num, min, max) {\n return Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n var str = num.toString(16).toUpperCase();\n return (str.length < 2) ? \"0\" + str : str;\n}\n\n\n//create a list of reverse color names\nvar reverseNames = {};\nfor (var name in colorName$1) {\n reverseNames[colorName$1[name]] = name;\n}\n\n/* MIT license */\n\n\n\nvar Color = function (obj) {\n\tif (obj instanceof Color) {\n\t\treturn obj;\n\t}\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj);\n\t}\n\n\tthis.valid = false;\n\tthis.values = {\n\t\trgb: [0, 0, 0],\n\t\thsl: [0, 0, 0],\n\t\thsv: [0, 0, 0],\n\t\thwb: [0, 0, 0],\n\t\tcmyk: [0, 0, 0, 0],\n\t\talpha: 1\n\t};\n\n\t// parse Color() argument\n\tvar vals;\n\tif (typeof obj === 'string') {\n\t\tvals = colorString.getRgba(obj);\n\t\tif (vals) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals = colorString.getHsla(obj)) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals = colorString.getHwb(obj)) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t}\n\t} else if (typeof obj === 'object') {\n\t\tvals = obj;\n\t\tif (vals.r !== undefined || vals.red !== undefined) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals.l !== undefined || vals.lightness !== undefined) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals.v !== undefined || vals.value !== undefined) {\n\t\t\tthis.setValues('hsv', vals);\n\t\t} else if (vals.w !== undefined || vals.whiteness !== undefined) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t} else if (vals.c !== undefined || vals.cyan !== undefined) {\n\t\t\tthis.setValues('cmyk', vals);\n\t\t}\n\t}\n};\n\nColor.prototype = {\n\tisValid: function () {\n\t\treturn this.valid;\n\t},\n\trgb: function () {\n\t\treturn this.setSpace('rgb', arguments);\n\t},\n\thsl: function () {\n\t\treturn this.setSpace('hsl', arguments);\n\t},\n\thsv: function () {\n\t\treturn this.setSpace('hsv', arguments);\n\t},\n\thwb: function () {\n\t\treturn this.setSpace('hwb', arguments);\n\t},\n\tcmyk: function () {\n\t\treturn this.setSpace('cmyk', arguments);\n\t},\n\n\trgbArray: function () {\n\t\treturn this.values.rgb;\n\t},\n\thslArray: function () {\n\t\treturn this.values.hsl;\n\t},\n\thsvArray: function () {\n\t\treturn this.values.hsv;\n\t},\n\thwbArray: function () {\n\t\tvar values = this.values;\n\t\tif (values.alpha !== 1) {\n\t\t\treturn values.hwb.concat([values.alpha]);\n\t\t}\n\t\treturn values.hwb;\n\t},\n\tcmykArray: function () {\n\t\treturn this.values.cmyk;\n\t},\n\trgbaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.rgb.concat([values.alpha]);\n\t},\n\thslaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.hsl.concat([values.alpha]);\n\t},\n\talpha: function (val) {\n\t\tif (val === undefined) {\n\t\t\treturn this.values.alpha;\n\t\t}\n\t\tthis.setValues('alpha', val);\n\t\treturn this;\n\t},\n\n\tred: function (val) {\n\t\treturn this.setChannel('rgb', 0, val);\n\t},\n\tgreen: function (val) {\n\t\treturn this.setChannel('rgb', 1, val);\n\t},\n\tblue: function (val) {\n\t\treturn this.setChannel('rgb', 2, val);\n\t},\n\thue: function (val) {\n\t\tif (val) {\n\t\t\tval %= 360;\n\t\t\tval = val < 0 ? 360 + val : val;\n\t\t}\n\t\treturn this.setChannel('hsl', 0, val);\n\t},\n\tsaturation: function (val) {\n\t\treturn this.setChannel('hsl', 1, val);\n\t},\n\tlightness: function (val) {\n\t\treturn this.setChannel('hsl', 2, val);\n\t},\n\tsaturationv: function (val) {\n\t\treturn this.setChannel('hsv', 1, val);\n\t},\n\twhiteness: function (val) {\n\t\treturn this.setChannel('hwb', 1, val);\n\t},\n\tblackness: function (val) {\n\t\treturn this.setChannel('hwb', 2, val);\n\t},\n\tvalue: function (val) {\n\t\treturn this.setChannel('hsv', 2, val);\n\t},\n\tcyan: function (val) {\n\t\treturn this.setChannel('cmyk', 0, val);\n\t},\n\tmagenta: function (val) {\n\t\treturn this.setChannel('cmyk', 1, val);\n\t},\n\tyellow: function (val) {\n\t\treturn this.setChannel('cmyk', 2, val);\n\t},\n\tblack: function (val) {\n\t\treturn this.setChannel('cmyk', 3, val);\n\t},\n\n\thexString: function () {\n\t\treturn colorString.hexString(this.values.rgb);\n\t},\n\trgbString: function () {\n\t\treturn colorString.rgbString(this.values.rgb, this.values.alpha);\n\t},\n\trgbaString: function () {\n\t\treturn colorString.rgbaString(this.values.rgb, this.values.alpha);\n\t},\n\tpercentString: function () {\n\t\treturn colorString.percentString(this.values.rgb, this.values.alpha);\n\t},\n\thslString: function () {\n\t\treturn colorString.hslString(this.values.hsl, this.values.alpha);\n\t},\n\thslaString: function () {\n\t\treturn colorString.hslaString(this.values.hsl, this.values.alpha);\n\t},\n\thwbString: function () {\n\t\treturn colorString.hwbString(this.values.hwb, this.values.alpha);\n\t},\n\tkeyword: function () {\n\t\treturn colorString.keyword(this.values.rgb, this.values.alpha);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.values.rgb;\n\t\treturn (rgb[0] << 16) | (rgb[1] << 8) | rgb[2];\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.values.rgb;\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tdark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.values.rgb;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tlight: function () {\n\t\treturn !this.dark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = [];\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb[i] = 255 - this.values.rgb[i];\n\t\t}\n\t\tthis.setValues('rgb', rgb);\n\t\treturn this;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] += hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] -= hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] += hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] -= hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[1] += hwb[1] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[2] += hwb[2] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tgreyscale: function () {\n\t\tvar rgb = this.values.rgb;\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\tthis.setValues('rgb', [val, val, val]);\n\t\treturn this;\n\t},\n\n\tclearer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha - (alpha * ratio));\n\t\treturn this;\n\t},\n\n\topaquer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha + (alpha * ratio));\n\t\treturn this;\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.values.hsl;\n\t\tvar hue = (hsl[0] + degrees) % 360;\n\t\thsl[0] = hue < 0 ? 360 + hue : hue;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\t/**\n\t * Ported from sass implementation in C\n\t * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t */\n\tmix: function (mixinColor, weight) {\n\t\tvar color1 = this;\n\t\tvar color2 = mixinColor;\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn this\n\t\t\t.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue()\n\t\t\t)\n\t\t\t.alpha(color1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n\n\ttoJSON: function () {\n\t\treturn this.rgb();\n\t},\n\n\tclone: function () {\n\t\t// NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\n\t\t// making the final build way to big to embed in Chart.js. So let's do it manually,\n\t\t// assuming that values to clone are 1 dimension arrays containing only numbers,\n\t\t// except 'alpha' which is a number.\n\t\tvar result = new Color();\n\t\tvar source = this.values;\n\t\tvar target = result.values;\n\t\tvar value, type;\n\n\t\tfor (var prop in source) {\n\t\t\tif (source.hasOwnProperty(prop)) {\n\t\t\t\tvalue = source[prop];\n\t\t\t\ttype = ({}).toString.call(value);\n\t\t\t\tif (type === '[object Array]') {\n\t\t\t\t\ttarget[prop] = value.slice(0);\n\t\t\t\t} else if (type === '[object Number]') {\n\t\t\t\t\ttarget[prop] = value;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('unexpected color value:', value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n};\n\nColor.prototype.spaces = {\n\trgb: ['red', 'green', 'blue'],\n\thsl: ['hue', 'saturation', 'lightness'],\n\thsv: ['hue', 'saturation', 'value'],\n\thwb: ['hue', 'whiteness', 'blackness'],\n\tcmyk: ['cyan', 'magenta', 'yellow', 'black']\n};\n\nColor.prototype.maxes = {\n\trgb: [255, 255, 255],\n\thsl: [360, 100, 100],\n\thsv: [360, 100, 100],\n\thwb: [360, 100, 100],\n\tcmyk: [100, 100, 100, 100]\n};\n\nColor.prototype.getValues = function (space) {\n\tvar values = this.values;\n\tvar vals = {};\n\n\tfor (var i = 0; i < space.length; i++) {\n\t\tvals[space.charAt(i)] = values[space][i];\n\t}\n\n\tif (values.alpha !== 1) {\n\t\tvals.a = values.alpha;\n\t}\n\n\t// {r: 255, g: 255, b: 255, a: 0.4}\n\treturn vals;\n};\n\nColor.prototype.setValues = function (space, vals) {\n\tvar values = this.values;\n\tvar spaces = this.spaces;\n\tvar maxes = this.maxes;\n\tvar alpha = 1;\n\tvar i;\n\n\tthis.valid = true;\n\n\tif (space === 'alpha') {\n\t\talpha = vals;\n\t} else if (vals.length) {\n\t\t// [10, 10, 10]\n\t\tvalues[space] = vals.slice(0, space.length);\n\t\talpha = vals[space.length];\n\t} else if (vals[space.charAt(0)] !== undefined) {\n\t\t// {r: 10, g: 10, b: 10}\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[space.charAt(i)];\n\t\t}\n\n\t\talpha = vals.a;\n\t} else if (vals[spaces[space][0]] !== undefined) {\n\t\t// {red: 10, green: 10, blue: 10}\n\t\tvar chans = spaces[space];\n\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[chans[i]];\n\t\t}\n\n\t\talpha = vals.alpha;\n\t}\n\n\tvalues.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha)));\n\n\tif (space === 'alpha') {\n\t\treturn false;\n\t}\n\n\tvar capped;\n\n\t// cap values of the space prior converting all values\n\tfor (i = 0; i < space.length; i++) {\n\t\tcapped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\n\t\tvalues[space][i] = Math.round(capped);\n\t}\n\n\t// convert to all the other color spaces\n\tfor (var sname in spaces) {\n\t\tif (sname !== space) {\n\t\t\tvalues[sname] = colorConvert[space][sname](values[space]);\n\t\t}\n\t}\n\n\treturn true;\n};\n\nColor.prototype.setSpace = function (space, args) {\n\tvar vals = args[0];\n\n\tif (vals === undefined) {\n\t\t// color.rgb()\n\t\treturn this.getValues(space);\n\t}\n\n\t// color.rgb(10, 10, 10)\n\tif (typeof vals === 'number') {\n\t\tvals = Array.prototype.slice.call(args);\n\t}\n\n\tthis.setValues(space, vals);\n\treturn this;\n};\n\nColor.prototype.setChannel = function (space, index, val) {\n\tvar svalues = this.values[space];\n\tif (val === undefined) {\n\t\t// color.red()\n\t\treturn svalues[index];\n\t} else if (val === svalues[index]) {\n\t\t// color.red(color.red())\n\t\treturn this;\n\t}\n\n\t// color.red(100)\n\tsvalues[index] = val;\n\tthis.setValues(space, svalues);\n\n\treturn this;\n};\n\nif (typeof window !== 'undefined') {\n\twindow.Color = Color;\n}\n\nvar chartjsColor = Color;\n\nfunction isValidKey(key) {\r\n\treturn ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\r\n}\r\n\r\n/**\r\n * @namespace Chart.helpers\r\n */\r\nvar helpers = {\r\n\t/**\r\n\t * An empty function that can be used, for example, for optional callback.\r\n\t */\r\n\tnoop: function() {},\r\n\r\n\t/**\r\n\t * Returns a unique id, sequentially generated from a global variable.\r\n\t * @returns {number}\r\n\t * @function\r\n\t */\r\n\tuid: (function() {\r\n\t\tvar id = 0;\r\n\t\treturn function() {\r\n\t\t\treturn id++;\r\n\t\t};\r\n\t}()),\r\n\r\n\t/**\r\n\t * Returns true if `value` is neither null nor undefined, else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t * @since 2.7.0\r\n\t */\r\n\tisNullOrUndef: function(value) {\r\n\t\treturn value === null || typeof value === 'undefined';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is an array (including typed arrays), else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t * @function\r\n\t */\r\n\tisArray: function(value) {\r\n\t\tif (Array.isArray && Array.isArray(value)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar type = Object.prototype.toString.call(value);\r\n\t\tif (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is an object (excluding null), else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t * @since 2.7.0\r\n\t */\r\n\tisObject: function(value) {\r\n\t\treturn value !== null && Object.prototype.toString.call(value) === '[object Object]';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is a finite number, else returns false\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t */\r\n\tisFinite: function(value) {\r\n\t\treturn (typeof value === 'number' || value instanceof Number) && isFinite(value);\r\n\t},\r\n\r\n\t/**\r\n\t * Returns `value` if defined, else returns `defaultValue`.\r\n\t * @param {*} value - The value to return if defined.\r\n\t * @param {*} defaultValue - The value to return if `value` is undefined.\r\n\t * @returns {*}\r\n\t */\r\n\tvalueOrDefault: function(value, defaultValue) {\r\n\t\treturn typeof value === 'undefined' ? defaultValue : value;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns value at the given `index` in array if defined, else returns `defaultValue`.\r\n\t * @param {Array} value - The array to lookup for value at `index`.\r\n\t * @param {number} index - The index in `value` to lookup for value.\r\n\t * @param {*} defaultValue - The value to return if `value[index]` is undefined.\r\n\t * @returns {*}\r\n\t */\r\n\tvalueAtIndexOrDefault: function(value, index, defaultValue) {\r\n\t\treturn helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\r\n\t},\r\n\r\n\t/**\r\n\t * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\r\n\t * value returned by `fn`. If `fn` is not a function, this method returns undefined.\r\n\t * @param {function} fn - The function to call.\r\n\t * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\r\n\t * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n\t * @returns {*}\r\n\t */\r\n\tcallback: function(fn, args, thisArg) {\r\n\t\tif (fn && typeof fn.call === 'function') {\r\n\t\t\treturn fn.apply(thisArg, args);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Note(SB) for performance sake, this method should only be used when loopable type\r\n\t * is unknown or in none intensive code (not called often and small loopable). Else\r\n\t * it's preferable to use a regular for() loop and save extra function calls.\r\n\t * @param {object|Array} loopable - The object or array to be iterated.\r\n\t * @param {function} fn - The function to call for each item.\r\n\t * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n\t * @param {boolean} [reverse] - If true, iterates backward on the loopable.\r\n\t */\r\n\teach: function(loopable, fn, thisArg, reverse) {\r\n\t\tvar i, len, keys;\r\n\t\tif (helpers.isArray(loopable)) {\r\n\t\t\tlen = loopable.length;\r\n\t\t\tif (reverse) {\r\n\t\t\t\tfor (i = len - 1; i >= 0; i--) {\r\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfor (i = 0; i < len; i++) {\r\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (helpers.isObject(loopable)) {\r\n\t\t\tkeys = Object.keys(loopable);\r\n\t\t\tlen = keys.length;\r\n\t\t\tfor (i = 0; i < len; i++) {\r\n\t\t\t\tfn.call(thisArg, loopable[keys[i]], keys[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\r\n\t * @see https://stackoverflow.com/a/14853974\r\n\t * @param {Array} a0 - The array to compare\r\n\t * @param {Array} a1 - The array to compare\r\n\t * @returns {boolean}\r\n\t */\r\n\tarrayEquals: function(a0, a1) {\r\n\t\tvar i, ilen, v0, v1;\r\n\r\n\t\tif (!a0 || !a1 || a0.length !== a1.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = a0.length; i < ilen; ++i) {\r\n\t\t\tv0 = a0[i];\r\n\t\t\tv1 = a1[i];\r\n\r\n\t\t\tif (v0 instanceof Array && v1 instanceof Array) {\r\n\t\t\t\tif (!helpers.arrayEquals(v0, v1)) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t} else if (v0 !== v1) {\r\n\t\t\t\t// NOTE: two different object instances will never be equal: {x:20} != {x:20}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a deep copy of `source` without keeping references on objects and arrays.\r\n\t * @param {*} source - The value to clone.\r\n\t * @returns {*}\r\n\t */\r\n\tclone: function(source) {\r\n\t\tif (helpers.isArray(source)) {\r\n\t\t\treturn source.map(helpers.clone);\r\n\t\t}\r\n\r\n\t\tif (helpers.isObject(source)) {\r\n\t\t\tvar target = Object.create(source);\r\n\t\t\tvar keys = Object.keys(source);\r\n\t\t\tvar klen = keys.length;\r\n\t\t\tvar k = 0;\r\n\r\n\t\t\tfor (; k < klen; ++k) {\r\n\t\t\t\ttarget[keys[k]] = helpers.clone(source[keys[k]]);\r\n\t\t\t}\r\n\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\treturn source;\r\n\t},\r\n\r\n\t/**\r\n\t * The default merger when Chart.helpers.merge is called without merger option.\r\n\t * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\r\n\t * @private\r\n\t */\r\n\t_merger: function(key, target, source, options) {\r\n\t\tif (!isValidKey(key)) {\r\n\t\t\t// We want to ensure we do not copy prototypes over\r\n\t\t\t// as this can pollute global namespaces\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar tval = target[key];\r\n\t\tvar sval = source[key];\r\n\r\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\r\n\t\t\thelpers.merge(tval, sval, options);\r\n\t\t} else {\r\n\t\t\ttarget[key] = helpers.clone(sval);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Merges source[key] in target[key] only if target[key] is undefined.\r\n\t * @private\r\n\t */\r\n\t_mergerIf: function(key, target, source) {\r\n\t\tif (!isValidKey(key)) {\r\n\t\t\t// We want to ensure we do not copy prototypes over\r\n\t\t\t// as this can pollute global namespaces\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar tval = target[key];\r\n\t\tvar sval = source[key];\r\n\r\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\r\n\t\t\thelpers.mergeIf(tval, sval);\r\n\t\t} else if (!target.hasOwnProperty(key)) {\r\n\t\t\ttarget[key] = helpers.clone(sval);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Recursively deep copies `source` properties into `target` with the given `options`.\r\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n\t * @param {object} target - The target object in which all sources are merged into.\r\n\t * @param {object|object[]} source - Object(s) to merge into `target`.\r\n\t * @param {object} [options] - Merging options:\r\n\t * @param {function} [options.merger] - The merge method (key, target, source, options)\r\n\t * @returns {object} The `target` object.\r\n\t */\r\n\tmerge: function(target, source, options) {\r\n\t\tvar sources = helpers.isArray(source) ? source : [source];\r\n\t\tvar ilen = sources.length;\r\n\t\tvar merge, i, keys, klen, k;\r\n\r\n\t\tif (!helpers.isObject(target)) {\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\toptions = options || {};\r\n\t\tmerge = options.merger || helpers._merger;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tsource = sources[i];\r\n\t\t\tif (!helpers.isObject(source)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tkeys = Object.keys(source);\r\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\r\n\t\t\t\tmerge(keys[k], target, source, options);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn target;\r\n\t},\r\n\r\n\t/**\r\n\t * Recursively deep copies `source` properties into `target` *only* if not defined in target.\r\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n\t * @param {object} target - The target object in which all sources are merged into.\r\n\t * @param {object|object[]} source - Object(s) to merge into `target`.\r\n\t * @returns {object} The `target` object.\r\n\t */\r\n\tmergeIf: function(target, source) {\r\n\t\treturn helpers.merge(target, source, {merger: helpers._mergerIf});\r\n\t},\r\n\r\n\t/**\r\n\t * Applies the contents of two or more objects together into the first object.\r\n\t * @param {object} target - The target object in which all objects are merged into.\r\n\t * @param {object} arg1 - Object containing additional properties to merge in target.\r\n\t * @param {object} argN - Additional objects containing properties to merge in target.\r\n\t * @returns {object} The `target` object.\r\n\t */\r\n\textend: Object.assign || function(target) {\r\n\t\treturn helpers.merge(target, [].slice.call(arguments, 1), {\r\n\t\t\tmerger: function(key, dst, src) {\r\n\t\t\t\tdst[key] = src[key];\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Basic javascript inheritance based on the model created in Backbone.js\r\n\t */\r\n\tinherits: function(extensions) {\r\n\t\tvar me = this;\r\n\t\tvar ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() {\r\n\t\t\treturn me.apply(this, arguments);\r\n\t\t};\r\n\r\n\t\tvar Surrogate = function() {\r\n\t\t\tthis.constructor = ChartElement;\r\n\t\t};\r\n\r\n\t\tSurrogate.prototype = me.prototype;\r\n\t\tChartElement.prototype = new Surrogate();\r\n\t\tChartElement.extend = helpers.inherits;\r\n\r\n\t\tif (extensions) {\r\n\t\t\thelpers.extend(ChartElement.prototype, extensions);\r\n\t\t}\r\n\r\n\t\tChartElement.__super__ = me.prototype;\r\n\t\treturn ChartElement;\r\n\t},\r\n\r\n\t_deprecated: function(scope, value, previous, current) {\r\n\t\tif (value !== undefined) {\r\n\t\t\tconsole.warn(scope + ': \"' + previous +\r\n\t\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar helpers_core = helpers;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.callback instead.\r\n * @function Chart.helpers.callCallback\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.callCallback = helpers.callback;\r\n\r\n/**\r\n * Provided for backward compatibility, use Array.prototype.indexOf instead.\r\n * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\r\n * @function Chart.helpers.indexOf\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.indexOf = function(array, item, fromIndex) {\r\n\treturn Array.prototype.indexOf.call(array, item, fromIndex);\r\n};\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\r\n * @function Chart.helpers.getValueOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.getValueOrDefault = helpers.valueOrDefault;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\r\n * @function Chart.helpers.getValueAtIndexOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\n/**\r\n * Easing functions adapted from Robert Penner's easing equations.\r\n * @namespace Chart.helpers.easingEffects\r\n * @see http://www.robertpenner.com/easing/\r\n */\r\nvar effects = {\r\n\tlinear: function(t) {\r\n\t\treturn t;\r\n\t},\r\n\r\n\teaseInQuad: function(t) {\r\n\t\treturn t * t;\r\n\t},\r\n\r\n\teaseOutQuad: function(t) {\r\n\t\treturn -t * (t - 2);\r\n\t},\r\n\r\n\teaseInOutQuad: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t;\r\n\t\t}\r\n\t\treturn -0.5 * ((--t) * (t - 2) - 1);\r\n\t},\r\n\r\n\teaseInCubic: function(t) {\r\n\t\treturn t * t * t;\r\n\t},\r\n\r\n\teaseOutCubic: function(t) {\r\n\t\treturn (t = t - 1) * t * t + 1;\r\n\t},\r\n\r\n\teaseInOutCubic: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t;\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * t + 2);\r\n\t},\r\n\r\n\teaseInQuart: function(t) {\r\n\t\treturn t * t * t * t;\r\n\t},\r\n\r\n\teaseOutQuart: function(t) {\r\n\t\treturn -((t = t - 1) * t * t * t - 1);\r\n\t},\r\n\r\n\teaseInOutQuart: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t * t;\r\n\t\t}\r\n\t\treturn -0.5 * ((t -= 2) * t * t * t - 2);\r\n\t},\r\n\r\n\teaseInQuint: function(t) {\r\n\t\treturn t * t * t * t * t;\r\n\t},\r\n\r\n\teaseOutQuint: function(t) {\r\n\t\treturn (t = t - 1) * t * t * t * t + 1;\r\n\t},\r\n\r\n\teaseInOutQuint: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t * t * t;\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\r\n\t},\r\n\r\n\teaseInSine: function(t) {\r\n\t\treturn -Math.cos(t * (Math.PI / 2)) + 1;\r\n\t},\r\n\r\n\teaseOutSine: function(t) {\r\n\t\treturn Math.sin(t * (Math.PI / 2));\r\n\t},\r\n\r\n\teaseInOutSine: function(t) {\r\n\t\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\r\n\t},\r\n\r\n\teaseInExpo: function(t) {\r\n\t\treturn (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));\r\n\t},\r\n\r\n\teaseOutExpo: function(t) {\r\n\t\treturn (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;\r\n\t},\r\n\r\n\teaseInOutExpo: function(t) {\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * Math.pow(2, 10 * (t - 1));\r\n\t\t}\r\n\t\treturn 0.5 * (-Math.pow(2, -10 * --t) + 2);\r\n\t},\r\n\r\n\teaseInCirc: function(t) {\r\n\t\tif (t >= 1) {\r\n\t\t\treturn t;\r\n\t\t}\r\n\t\treturn -(Math.sqrt(1 - t * t) - 1);\r\n\t},\r\n\r\n\teaseOutCirc: function(t) {\r\n\t\treturn Math.sqrt(1 - (t = t - 1) * t);\r\n\t},\r\n\r\n\teaseInOutCirc: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn -0.5 * (Math.sqrt(1 - t * t) - 1);\r\n\t\t}\r\n\t\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\r\n\t},\r\n\r\n\teaseInElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.3;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\treturn -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\r\n\t},\r\n\r\n\teaseOutElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.3;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\treturn a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\r\n\t},\r\n\r\n\teaseInOutElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif ((t /= 0.5) === 2) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.45;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\tif (t < 1) {\r\n\t\t\treturn -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\r\n\t\t}\r\n\t\treturn a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\r\n\t},\r\n\teaseInBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\treturn t * t * ((s + 1) * t - s);\r\n\t},\r\n\r\n\teaseOutBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\treturn (t = t - 1) * t * ((s + 1) * t + s) + 1;\r\n\t},\r\n\r\n\teaseInOutBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\r\n\t},\r\n\r\n\teaseInBounce: function(t) {\r\n\t\treturn 1 - effects.easeOutBounce(1 - t);\r\n\t},\r\n\r\n\teaseOutBounce: function(t) {\r\n\t\tif (t < (1 / 2.75)) {\r\n\t\t\treturn 7.5625 * t * t;\r\n\t\t}\r\n\t\tif (t < (2 / 2.75)) {\r\n\t\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\r\n\t\t}\r\n\t\tif (t < (2.5 / 2.75)) {\r\n\t\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\r\n\t\t}\r\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\r\n\t},\r\n\r\n\teaseInOutBounce: function(t) {\r\n\t\tif (t < 0.5) {\r\n\t\t\treturn effects.easeInBounce(t * 2) * 0.5;\r\n\t\t}\r\n\t\treturn effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\r\n\t}\r\n};\r\n\r\nvar helpers_easing = {\r\n\teffects: effects\r\n};\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\r\n * @function Chart.helpers.easingEffects\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.easingEffects = effects;\n\nvar PI = Math.PI;\r\nvar RAD_PER_DEG = PI / 180;\r\nvar DOUBLE_PI = PI * 2;\r\nvar HALF_PI = PI / 2;\r\nvar QUARTER_PI = PI / 4;\r\nvar TWO_THIRDS_PI = PI * 2 / 3;\r\n\r\n/**\r\n * @namespace Chart.helpers.canvas\r\n */\r\nvar exports$1 = {\r\n\t/**\r\n\t * Clears the entire canvas associated to the given `chart`.\r\n\t * @param {Chart} chart - The chart for which to clear the canvas.\r\n\t */\r\n\tclear: function(chart) {\r\n\t\tchart.ctx.clearRect(0, 0, chart.width, chart.height);\r\n\t},\r\n\r\n\t/**\r\n\t * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\r\n\t * given size (width, height) and the same `radius` for all corners.\r\n\t * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\r\n\t * @param {number} x - The x axis of the coordinate for the rectangle starting point.\r\n\t * @param {number} y - The y axis of the coordinate for the rectangle starting point.\r\n\t * @param {number} width - The rectangle's width.\r\n\t * @param {number} height - The rectangle's height.\r\n\t * @param {number} radius - The rounded amount (in pixels) for the four corners.\r\n\t * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\r\n\t */\r\n\troundedRect: function(ctx, x, y, width, height, radius) {\r\n\t\tif (radius) {\r\n\t\t\tvar r = Math.min(radius, height / 2, width / 2);\r\n\t\t\tvar left = x + r;\r\n\t\t\tvar top = y + r;\r\n\t\t\tvar right = x + width - r;\r\n\t\t\tvar bottom = y + height - r;\r\n\r\n\t\t\tctx.moveTo(x, top);\r\n\t\t\tif (left < right && top < bottom) {\r\n\t\t\t\tctx.arc(left, top, r, -PI, -HALF_PI);\r\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, 0);\r\n\t\t\t\tctx.arc(right, bottom, r, 0, HALF_PI);\r\n\t\t\t\tctx.arc(left, bottom, r, HALF_PI, PI);\r\n\t\t\t} else if (left < right) {\r\n\t\t\t\tctx.moveTo(left, y);\r\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, HALF_PI);\r\n\t\t\t\tctx.arc(left, top, r, HALF_PI, PI + HALF_PI);\r\n\t\t\t} else if (top < bottom) {\r\n\t\t\t\tctx.arc(left, top, r, -PI, 0);\r\n\t\t\t\tctx.arc(left, bottom, r, 0, PI);\r\n\t\t\t} else {\r\n\t\t\t\tctx.arc(left, top, r, -PI, PI);\r\n\t\t\t}\r\n\t\t\tctx.closePath();\r\n\t\t\tctx.moveTo(x, y);\r\n\t\t} else {\r\n\t\t\tctx.rect(x, y, width, height);\r\n\t\t}\r\n\t},\r\n\r\n\tdrawPoint: function(ctx, style, radius, x, y, rotation) {\r\n\t\tvar type, xOffset, yOffset, size, cornerRadius;\r\n\t\tvar rad = (rotation || 0) * RAD_PER_DEG;\r\n\r\n\t\tif (style && typeof style === 'object') {\r\n\t\t\ttype = style.toString();\r\n\t\t\tif (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\r\n\t\t\t\tctx.save();\r\n\t\t\t\tctx.translate(x, y);\r\n\t\t\t\tctx.rotate(rad);\r\n\t\t\t\tctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\r\n\t\t\t\tctx.restore();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (isNaN(radius) || radius <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.beginPath();\r\n\r\n\t\tswitch (style) {\r\n\t\t// Default includes circle\r\n\t\tdefault:\r\n\t\t\tctx.arc(x, y, radius, 0, DOUBLE_PI);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'triangle':\r\n\t\t\tctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\trad += TWO_THIRDS_PI;\r\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\trad += TWO_THIRDS_PI;\r\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'rectRounded':\r\n\t\t\t// NOTE: the rounded rect implementation changed to use `arc` instead of\r\n\t\t\t// `quadraticCurveTo` since it generates better results when rect is\r\n\t\t\t// almost a circle. 0.516 (instead of 0.5) produces results with visually\r\n\t\t\t// closer proportion to the previous impl and it is inscribed in the\r\n\t\t\t// circle with `radius`. For more details, see the following PRs:\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5597\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5858\r\n\t\t\tcornerRadius = radius * 0.516;\r\n\t\t\tsize = radius - cornerRadius;\r\n\t\t\txOffset = Math.cos(rad + QUARTER_PI) * size;\r\n\t\t\tyOffset = Math.sin(rad + QUARTER_PI) * size;\r\n\t\t\tctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\r\n\t\t\tctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\r\n\t\t\tctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\r\n\t\t\tctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'rect':\r\n\t\t\tif (!rotation) {\r\n\t\t\t\tsize = Math.SQRT1_2 * radius;\r\n\t\t\t\tctx.rect(x - size, y - size, 2 * size, 2 * size);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\t/* falls through */\r\n\t\tcase 'rectRot':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'crossRot':\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\t/* falls through */\r\n\t\tcase 'cross':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'star':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'line':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'dash':\r\n\t\t\tctx.moveTo(x, y);\r\n\t\t\tctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tctx.fill();\r\n\t\tctx.stroke();\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if the point is inside the rectangle\r\n\t * @param {object} point - The point to test\r\n\t * @param {object} area - The rectangle\r\n\t * @returns {boolean}\r\n\t * @private\r\n\t */\r\n\t_isPointInArea: function(point, area) {\r\n\t\tvar epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\r\n\r\n\t\treturn point.x > area.left - epsilon && point.x < area.right + epsilon &&\r\n\t\t\tpoint.y > area.top - epsilon && point.y < area.bottom + epsilon;\r\n\t},\r\n\r\n\tclipArea: function(ctx, area) {\r\n\t\tctx.save();\r\n\t\tctx.beginPath();\r\n\t\tctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\r\n\t\tctx.clip();\r\n\t},\r\n\r\n\tunclipArea: function(ctx) {\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\tlineTo: function(ctx, previous, target, flip) {\r\n\t\tvar stepped = target.steppedLine;\r\n\t\tif (stepped) {\r\n\t\t\tif (stepped === 'middle') {\r\n\t\t\t\tvar midpoint = (previous.x + target.x) / 2.0;\r\n\t\t\t\tctx.lineTo(midpoint, flip ? target.y : previous.y);\r\n\t\t\t\tctx.lineTo(midpoint, flip ? previous.y : target.y);\r\n\t\t\t} else if ((stepped === 'after' && !flip) || (stepped !== 'after' && flip)) {\r\n\t\t\t\tctx.lineTo(previous.x, target.y);\r\n\t\t\t} else {\r\n\t\t\t\tctx.lineTo(target.x, previous.y);\r\n\t\t\t}\r\n\t\t\tctx.lineTo(target.x, target.y);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!target.tension) {\r\n\t\t\tctx.lineTo(target.x, target.y);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.bezierCurveTo(\r\n\t\t\tflip ? previous.controlPointPreviousX : previous.controlPointNextX,\r\n\t\t\tflip ? previous.controlPointPreviousY : previous.controlPointNextY,\r\n\t\t\tflip ? target.controlPointNextX : target.controlPointPreviousX,\r\n\t\t\tflip ? target.controlPointNextY : target.controlPointPreviousY,\r\n\t\t\ttarget.x,\r\n\t\t\ttarget.y);\r\n\t}\r\n};\r\n\r\nvar helpers_canvas = exports$1;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\r\n * @namespace Chart.helpers.clear\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.clear = exports$1.clear;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\r\n * @namespace Chart.helpers.drawRoundedRectangle\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.drawRoundedRectangle = function(ctx) {\r\n\tctx.beginPath();\r\n\texports$1.roundedRect.apply(exports$1, arguments);\r\n};\n\nvar defaults = {\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_set: function(scope, values) {\r\n\t\treturn helpers_core.merge(this[scope] || (this[scope] = {}), values);\r\n\t}\r\n};\r\n\r\n// TODO(v3): remove 'global' from namespace. all default are global and\r\n// there's inconsistency around which options are under 'global'\r\ndefaults._set('global', {\r\n\tdefaultColor: 'rgba(0,0,0,0.1)',\r\n\tdefaultFontColor: '#666',\r\n\tdefaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\r\n\tdefaultFontSize: 12,\r\n\tdefaultFontStyle: 'normal',\r\n\tdefaultLineHeight: 1.2,\r\n\tshowLines: true\r\n});\r\n\r\nvar core_defaults = defaults;\n\nvar valueOrDefault = helpers_core.valueOrDefault;\r\n\r\n/**\r\n * Converts the given font object into a CSS font string.\r\n * @param {object} font - A font object.\r\n * @return {string} The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\r\n * @private\r\n */\r\nfunction toFontString(font) {\r\n\tif (!font || helpers_core.isNullOrUndef(font.size) || helpers_core.isNullOrUndef(font.family)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\treturn (font.style ? font.style + ' ' : '')\r\n\t\t+ (font.weight ? font.weight + ' ' : '')\r\n\t\t+ font.size + 'px '\r\n\t\t+ font.family;\r\n}\r\n\r\n/**\r\n * @alias Chart.helpers.options\r\n * @namespace\r\n */\r\nvar helpers_options = {\r\n\t/**\r\n\t * Converts the given line height `value` in pixels for a specific font `size`.\r\n\t * @param {number|string} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\r\n\t * @param {number} size - The font size (in pixels) used to resolve relative `value`.\r\n\t * @returns {number} The effective line height in pixels (size * 1.2 if value is invalid).\r\n\t * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\r\n\t * @since 2.7.0\r\n\t */\r\n\ttoLineHeight: function(value, size) {\r\n\t\tvar matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\r\n\t\tif (!matches || matches[1] === 'normal') {\r\n\t\t\treturn size * 1.2;\r\n\t\t}\r\n\r\n\t\tvalue = +matches[2];\r\n\r\n\t\tswitch (matches[3]) {\r\n\t\tcase 'px':\r\n\t\t\treturn value;\r\n\t\tcase '%':\r\n\t\t\tvalue /= 100;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn size * value;\r\n\t},\r\n\r\n\t/**\r\n\t * Converts the given value into a padding object with pre-computed width/height.\r\n\t * @param {number|object} value - If a number, set the value to all TRBL component,\r\n\t * else, if and object, use defined properties and sets undefined ones to 0.\r\n\t * @returns {object} The padding values (top, right, bottom, left, width, height)\r\n\t * @since 2.7.0\r\n\t */\r\n\ttoPadding: function(value) {\r\n\t\tvar t, r, b, l;\r\n\r\n\t\tif (helpers_core.isObject(value)) {\r\n\t\t\tt = +value.top || 0;\r\n\t\t\tr = +value.right || 0;\r\n\t\t\tb = +value.bottom || 0;\r\n\t\t\tl = +value.left || 0;\r\n\t\t} else {\r\n\t\t\tt = r = b = l = +value || 0;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttop: t,\r\n\t\t\tright: r,\r\n\t\t\tbottom: b,\r\n\t\t\tleft: l,\r\n\t\t\theight: t + b,\r\n\t\t\twidth: l + r\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Parses font options and returns the font object.\r\n\t * @param {object} options - A object that contains font options to be parsed.\r\n\t * @return {object} The font object.\r\n\t * @todo Support font.* options and renamed to toFont().\r\n\t * @private\r\n\t */\r\n\t_parseFont: function(options) {\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\r\n\t\tvar font = {\r\n\t\t\tfamily: valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily),\r\n\t\t\tlineHeight: helpers_core.options.toLineHeight(valueOrDefault(options.lineHeight, globalDefaults.defaultLineHeight), size),\r\n\t\t\tsize: size,\r\n\t\t\tstyle: valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle),\r\n\t\t\tweight: null,\r\n\t\t\tstring: ''\r\n\t\t};\r\n\r\n\t\tfont.string = toFontString(font);\r\n\t\treturn font;\r\n\t},\r\n\r\n\t/**\r\n\t * Evaluates the given `inputs` sequentially and returns the first defined value.\r\n\t * @param {Array} inputs - An array of values, falling back to the last value.\r\n\t * @param {object} [context] - If defined and the current value is a function, the value\r\n\t * is called with `context` as first argument and the result becomes the new input.\r\n\t * @param {number} [index] - If defined and the current value is an array, the value\r\n\t * at `index` become the new input.\r\n\t * @param {object} [info] - object to return information about resolution in\r\n\t * @param {boolean} [info.cacheable] - Will be set to `false` if option is not cacheable.\r\n\t * @since 2.7.0\r\n\t */\r\n\tresolve: function(inputs, context, index, info) {\r\n\t\tvar cacheable = true;\r\n\t\tvar i, ilen, value;\r\n\r\n\t\tfor (i = 0, ilen = inputs.length; i < ilen; ++i) {\r\n\t\t\tvalue = inputs[i];\r\n\t\t\tif (value === undefined) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (context !== undefined && typeof value === 'function') {\r\n\t\t\t\tvalue = value(context);\r\n\t\t\t\tcacheable = false;\r\n\t\t\t}\r\n\t\t\tif (index !== undefined && helpers_core.isArray(value)) {\r\n\t\t\t\tvalue = value[index];\r\n\t\t\t\tcacheable = false;\r\n\t\t\t}\r\n\t\t\tif (value !== undefined) {\r\n\t\t\t\tif (info && !cacheable) {\r\n\t\t\t\t\tinfo.cacheable = false;\r\n\t\t\t\t}\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\n\n/**\r\n * @alias Chart.helpers.math\r\n * @namespace\r\n */\r\nvar exports$2 = {\r\n\t/**\r\n\t * Returns an array of factors sorted from 1 to sqrt(value)\r\n\t * @private\r\n\t */\r\n\t_factorize: function(value) {\r\n\t\tvar result = [];\r\n\t\tvar sqrt = Math.sqrt(value);\r\n\t\tvar i;\r\n\r\n\t\tfor (i = 1; i < sqrt; i++) {\r\n\t\t\tif (value % i === 0) {\r\n\t\t\t\tresult.push(i);\r\n\t\t\t\tresult.push(value / i);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (sqrt === (sqrt | 0)) { // if value is a square number\r\n\t\t\tresult.push(sqrt);\r\n\t\t}\r\n\r\n\t\tresult.sort(function(a, b) {\r\n\t\t\treturn a - b;\r\n\t\t}).pop();\r\n\t\treturn result;\r\n\t},\r\n\r\n\tlog10: Math.log10 || function(x) {\r\n\t\tvar exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\r\n\t\t// Check for whole powers of 10,\r\n\t\t// which due to floating point rounding error should be corrected.\r\n\t\tvar powerOf10 = Math.round(exponent);\r\n\t\tvar isPowerOf10 = x === Math.pow(10, powerOf10);\r\n\r\n\t\treturn isPowerOf10 ? powerOf10 : exponent;\r\n\t}\r\n};\r\n\r\nvar helpers_math = exports$2;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.math.log10 instead.\r\n * @namespace Chart.helpers.log10\r\n * @deprecated since version 2.9.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.log10 = exports$2.log10;\n\nvar getRtlAdapter = function(rectX, width) {\r\n\treturn {\r\n\t\tx: function(x) {\r\n\t\t\treturn rectX + rectX + width - x;\r\n\t\t},\r\n\t\tsetWidth: function(w) {\r\n\t\t\twidth = w;\r\n\t\t},\r\n\t\ttextAlign: function(align) {\r\n\t\t\tif (align === 'center') {\r\n\t\t\t\treturn align;\r\n\t\t\t}\r\n\t\t\treturn align === 'right' ? 'left' : 'right';\r\n\t\t},\r\n\t\txPlus: function(x, value) {\r\n\t\t\treturn x - value;\r\n\t\t},\r\n\t\tleftForLtr: function(x, itemWidth) {\r\n\t\t\treturn x - itemWidth;\r\n\t\t},\r\n\t};\r\n};\r\n\r\nvar getLtrAdapter = function() {\r\n\treturn {\r\n\t\tx: function(x) {\r\n\t\t\treturn x;\r\n\t\t},\r\n\t\tsetWidth: function(w) { // eslint-disable-line no-unused-vars\r\n\t\t},\r\n\t\ttextAlign: function(align) {\r\n\t\t\treturn align;\r\n\t\t},\r\n\t\txPlus: function(x, value) {\r\n\t\t\treturn x + value;\r\n\t\t},\r\n\t\tleftForLtr: function(x, _itemWidth) { // eslint-disable-line no-unused-vars\r\n\t\t\treturn x;\r\n\t\t},\r\n\t};\r\n};\r\n\r\nvar getAdapter = function(rtl, rectX, width) {\r\n\treturn rtl ? getRtlAdapter(rectX, width) : getLtrAdapter();\r\n};\r\n\r\nvar overrideTextDirection = function(ctx, direction) {\r\n\tvar style, original;\r\n\tif (direction === 'ltr' || direction === 'rtl') {\r\n\t\tstyle = ctx.canvas.style;\r\n\t\toriginal = [\r\n\t\t\tstyle.getPropertyValue('direction'),\r\n\t\t\tstyle.getPropertyPriority('direction'),\r\n\t\t];\r\n\r\n\t\tstyle.setProperty('direction', direction, 'important');\r\n\t\tctx.prevTextDirection = original;\r\n\t}\r\n};\r\n\r\nvar restoreTextDirection = function(ctx) {\r\n\tvar original = ctx.prevTextDirection;\r\n\tif (original !== undefined) {\r\n\t\tdelete ctx.prevTextDirection;\r\n\t\tctx.canvas.style.setProperty('direction', original[0], original[1]);\r\n\t}\r\n};\r\n\r\nvar helpers_rtl = {\r\n\tgetRtlAdapter: getAdapter,\r\n\toverrideTextDirection: overrideTextDirection,\r\n\trestoreTextDirection: restoreTextDirection,\r\n};\n\nvar helpers$1 = helpers_core;\r\nvar easing = helpers_easing;\r\nvar canvas = helpers_canvas;\r\nvar options = helpers_options;\r\nvar math = helpers_math;\r\nvar rtl = helpers_rtl;\nhelpers$1.easing = easing;\nhelpers$1.canvas = canvas;\nhelpers$1.options = options;\nhelpers$1.math = math;\nhelpers$1.rtl = rtl;\n\nfunction interpolate(start, view, model, ease) {\r\n\tvar keys = Object.keys(model);\r\n\tvar i, ilen, key, actual, origin, target, type, c0, c1;\r\n\r\n\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\tkey = keys[i];\r\n\r\n\t\ttarget = model[key];\r\n\r\n\t\t// if a value is added to the model after pivot() has been called, the view\r\n\t\t// doesn't contain it, so let's initialize the view to the target value.\r\n\t\tif (!view.hasOwnProperty(key)) {\r\n\t\t\tview[key] = target;\r\n\t\t}\r\n\r\n\t\tactual = view[key];\r\n\r\n\t\tif (actual === target || key[0] === '_') {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tif (!start.hasOwnProperty(key)) {\r\n\t\t\tstart[key] = actual;\r\n\t\t}\r\n\r\n\t\torigin = start[key];\r\n\r\n\t\ttype = typeof target;\r\n\r\n\t\tif (type === typeof origin) {\r\n\t\t\tif (type === 'string') {\r\n\t\t\t\tc0 = chartjsColor(origin);\r\n\t\t\t\tif (c0.valid) {\r\n\t\t\t\t\tc1 = chartjsColor(target);\r\n\t\t\t\t\tif (c1.valid) {\r\n\t\t\t\t\t\tview[key] = c1.mix(c0, ease).rgbString();\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (helpers$1.isFinite(origin) && helpers$1.isFinite(target)) {\r\n\t\t\t\tview[key] = origin + (target - origin) * ease;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tview[key] = target;\r\n\t}\r\n}\r\n\r\nvar Element = function(configuration) {\r\n\thelpers$1.extend(this, configuration);\r\n\tthis.initialize.apply(this, arguments);\r\n};\r\n\r\nhelpers$1.extend(Element.prototype, {\r\n\t_type: undefined,\r\n\r\n\tinitialize: function() {\r\n\t\tthis.hidden = false;\r\n\t},\r\n\r\n\tpivot: function() {\r\n\t\tvar me = this;\r\n\t\tif (!me._view) {\r\n\t\t\tme._view = helpers$1.extend({}, me._model);\r\n\t\t}\r\n\t\tme._start = {};\r\n\t\treturn me;\r\n\t},\r\n\r\n\ttransition: function(ease) {\r\n\t\tvar me = this;\r\n\t\tvar model = me._model;\r\n\t\tvar start = me._start;\r\n\t\tvar view = me._view;\r\n\r\n\t\t// No animation -> No Transition\r\n\t\tif (!model || ease === 1) {\r\n\t\t\tme._view = helpers$1.extend({}, model);\r\n\t\t\tme._start = null;\r\n\t\t\treturn me;\r\n\t\t}\r\n\r\n\t\tif (!view) {\r\n\t\t\tview = me._view = {};\r\n\t\t}\r\n\r\n\t\tif (!start) {\r\n\t\t\tstart = me._start = {};\r\n\t\t}\r\n\r\n\t\tinterpolate(start, view, model, ease);\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\treturn {\r\n\t\t\tx: this._model.x,\r\n\t\t\ty: this._model.y\r\n\t\t};\r\n\t},\r\n\r\n\thasValue: function() {\r\n\t\treturn helpers$1.isNumber(this._model.x) && helpers$1.isNumber(this._model.y);\r\n\t}\r\n});\r\n\r\nElement.extend = helpers$1.inherits;\r\n\r\nvar core_element = Element;\n\nvar exports$3 = core_element.extend({\r\n\tchart: null, // the animation associated chart instance\r\n\tcurrentStep: 0, // the current animation step\r\n\tnumSteps: 60, // default number of steps\r\n\teasing: '', // the easing to use for this animation\r\n\trender: null, // render function used by the animation service\r\n\r\n\tonAnimationProgress: null, // user specified callback to fire on each step of the animation\r\n\tonAnimationComplete: null, // user specified callback to fire when the animation finishes\r\n});\r\n\r\nvar core_animation = exports$3;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.Animation instead\r\n * @prop Chart.Animation#animationObject\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\r\nObject.defineProperty(exports$3.prototype, 'animationObject', {\r\n\tget: function() {\r\n\t\treturn this;\r\n\t}\r\n});\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.Animation#chart instead\r\n * @prop Chart.Animation#chartInstance\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\r\nObject.defineProperty(exports$3.prototype, 'chartInstance', {\r\n\tget: function() {\r\n\t\treturn this.chart;\r\n\t},\r\n\tset: function(value) {\r\n\t\tthis.chart = value;\r\n\t}\r\n});\n\ncore_defaults._set('global', {\r\n\tanimation: {\r\n\t\tduration: 1000,\r\n\t\teasing: 'easeOutQuart',\r\n\t\tonProgress: helpers$1.noop,\r\n\t\tonComplete: helpers$1.noop\r\n\t}\r\n});\r\n\r\nvar core_animations = {\r\n\tanimations: [],\r\n\trequest: null,\r\n\r\n\t/**\r\n\t * @param {Chart} chart - The chart to animate.\r\n\t * @param {Chart.Animation} animation - The animation that we will animate.\r\n\t * @param {number} duration - The animation duration in ms.\r\n\t * @param {boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\r\n\t */\r\n\taddAnimation: function(chart, animation, duration, lazy) {\r\n\t\tvar animations = this.animations;\r\n\t\tvar i, ilen;\r\n\r\n\t\tanimation.chart = chart;\r\n\t\tanimation.startTime = Date.now();\r\n\t\tanimation.duration = duration;\r\n\r\n\t\tif (!lazy) {\r\n\t\t\tchart.animating = true;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = animations.length; i < ilen; ++i) {\r\n\t\t\tif (animations[i].chart === chart) {\r\n\t\t\t\tanimations[i] = animation;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tanimations.push(animation);\r\n\r\n\t\t// If there are no animations queued, manually kickstart a digest, for lack of a better word\r\n\t\tif (animations.length === 1) {\r\n\t\t\tthis.requestAnimationFrame();\r\n\t\t}\r\n\t},\r\n\r\n\tcancelAnimation: function(chart) {\r\n\t\tvar index = helpers$1.findIndex(this.animations, function(animation) {\r\n\t\t\treturn animation.chart === chart;\r\n\t\t});\r\n\r\n\t\tif (index !== -1) {\r\n\t\t\tthis.animations.splice(index, 1);\r\n\t\t\tchart.animating = false;\r\n\t\t}\r\n\t},\r\n\r\n\trequestAnimationFrame: function() {\r\n\t\tvar me = this;\r\n\t\tif (me.request === null) {\r\n\t\t\t// Skip animation frame requests until the active one is executed.\r\n\t\t\t// This can happen when processing mouse events, e.g. 'mousemove'\r\n\t\t\t// and 'mouseout' events will trigger multiple renders.\r\n\t\t\tme.request = helpers$1.requestAnimFrame.call(window, function() {\r\n\t\t\t\tme.request = null;\r\n\t\t\t\tme.startDigest();\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tstartDigest: function() {\r\n\t\tvar me = this;\r\n\r\n\t\tme.advance();\r\n\r\n\t\t// Do we have more stuff to animate?\r\n\t\tif (me.animations.length > 0) {\r\n\t\t\tme.requestAnimationFrame();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tadvance: function() {\r\n\t\tvar animations = this.animations;\r\n\t\tvar animation, chart, numSteps, nextStep;\r\n\t\tvar i = 0;\r\n\r\n\t\t// 1 animation per chart, so we are looping charts here\r\n\t\twhile (i < animations.length) {\r\n\t\t\tanimation = animations[i];\r\n\t\t\tchart = animation.chart;\r\n\t\t\tnumSteps = animation.numSteps;\r\n\r\n\t\t\t// Make sure that currentStep starts at 1\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/6104\r\n\t\t\tnextStep = Math.floor((Date.now() - animation.startTime) / animation.duration * numSteps) + 1;\r\n\t\t\tanimation.currentStep = Math.min(nextStep, numSteps);\r\n\r\n\t\t\thelpers$1.callback(animation.render, [chart, animation], chart);\r\n\t\t\thelpers$1.callback(animation.onAnimationProgress, [animation], chart);\r\n\r\n\t\t\tif (animation.currentStep >= numSteps) {\r\n\t\t\t\thelpers$1.callback(animation.onAnimationComplete, [animation], chart);\r\n\t\t\t\tchart.animating = false;\r\n\t\t\t\tanimations.splice(i, 1);\r\n\t\t\t} else {\r\n\t\t\t\t++i;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\n\nvar resolve = helpers$1.options.resolve;\r\n\r\nvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\r\n\r\n/**\r\n * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\r\n * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\r\n * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\r\n */\r\nfunction listenArrayEvents(array, listener) {\r\n\tif (array._chartjs) {\r\n\t\tarray._chartjs.listeners.push(listener);\r\n\t\treturn;\r\n\t}\r\n\r\n\tObject.defineProperty(array, '_chartjs', {\r\n\t\tconfigurable: true,\r\n\t\tenumerable: false,\r\n\t\tvalue: {\r\n\t\t\tlisteners: [listener]\r\n\t\t}\r\n\t});\r\n\r\n\tarrayEvents.forEach(function(key) {\r\n\t\tvar method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\r\n\t\tvar base = array[key];\r\n\r\n\t\tObject.defineProperty(array, key, {\r\n\t\t\tconfigurable: true,\r\n\t\t\tenumerable: false,\r\n\t\t\tvalue: function() {\r\n\t\t\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\t\t\tvar res = base.apply(this, args);\r\n\r\n\t\t\t\thelpers$1.each(array._chartjs.listeners, function(object) {\r\n\t\t\t\t\tif (typeof object[method] === 'function') {\r\n\t\t\t\t\t\tobject[method].apply(object, args);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn res;\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n}\r\n\r\n/**\r\n * Removes the given array event listener and cleanup extra attached properties (such as\r\n * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\r\n */\r\nfunction unlistenArrayEvents(array, listener) {\r\n\tvar stub = array._chartjs;\r\n\tif (!stub) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar listeners = stub.listeners;\r\n\tvar index = listeners.indexOf(listener);\r\n\tif (index !== -1) {\r\n\t\tlisteners.splice(index, 1);\r\n\t}\r\n\r\n\tif (listeners.length > 0) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tarrayEvents.forEach(function(key) {\r\n\t\tdelete array[key];\r\n\t});\r\n\r\n\tdelete array._chartjs;\r\n}\r\n\r\n// Base class for all dataset controllers (line, bar, etc)\r\nvar DatasetController = function(chart, datasetIndex) {\r\n\tthis.initialize(chart, datasetIndex);\r\n};\r\n\r\nhelpers$1.extend(DatasetController.prototype, {\r\n\r\n\t/**\r\n\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\r\n\t * @type {Chart.core.element}\r\n\t */\r\n\tdatasetElementType: null,\r\n\r\n\t/**\r\n\t * Element type used to generate a meta data (e.g. Chart.element.Point).\r\n\t * @type {Chart.core.element}\r\n\t */\r\n\tdataElementType: null,\r\n\r\n\t/**\r\n\t * Dataset element option keys to be resolved in _resolveDatasetElementOptions.\r\n\t * A derived controller may override this to resolve controller-specific options.\r\n\t * The keys defined here are for backward compatibility for legend styles.\r\n\t * @private\r\n\t */\r\n\t_datasetElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderCapStyle',\r\n\t\t'borderColor',\r\n\t\t'borderDash',\r\n\t\t'borderDashOffset',\r\n\t\t'borderJoinStyle',\r\n\t\t'borderWidth'\r\n\t],\r\n\r\n\t/**\r\n\t * Data element option keys to be resolved in _resolveDataElementOptions.\r\n\t * A derived controller may override this to resolve controller-specific options.\r\n\t * The keys defined here are for backward compatibility for legend styles.\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'pointStyle'\r\n\t],\r\n\r\n\tinitialize: function(chart, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tme.chart = chart;\r\n\t\tme.index = datasetIndex;\r\n\t\tme.linkScales();\r\n\t\tme.addElements();\r\n\t\tme._type = me.getMeta().type;\r\n\t},\r\n\r\n\tupdateIndex: function(datasetIndex) {\r\n\t\tthis.index = datasetIndex;\r\n\t},\r\n\r\n\tlinkScales: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar chart = me.chart;\r\n\t\tvar scales = chart.scales;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar scalesOpts = chart.options.scales;\r\n\r\n\t\tif (meta.xAxisID === null || !(meta.xAxisID in scales) || dataset.xAxisID) {\r\n\t\t\tmeta.xAxisID = dataset.xAxisID || scalesOpts.xAxes[0].id;\r\n\t\t}\r\n\t\tif (meta.yAxisID === null || !(meta.yAxisID in scales) || dataset.yAxisID) {\r\n\t\t\tmeta.yAxisID = dataset.yAxisID || scalesOpts.yAxes[0].id;\r\n\t\t}\r\n\t},\r\n\r\n\tgetDataset: function() {\r\n\t\treturn this.chart.data.datasets[this.index];\r\n\t},\r\n\r\n\tgetMeta: function() {\r\n\t\treturn this.chart.getDatasetMeta(this.index);\r\n\t},\r\n\r\n\tgetScaleForId: function(scaleID) {\r\n\t\treturn this.chart.scales[scaleID];\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.getMeta().yAxisID;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.getMeta().xAxisID;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScale: function() {\r\n\t\treturn this.getScaleForId(this._getValueScaleId());\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScale: function() {\r\n\t\treturn this.getScaleForId(this._getIndexScaleId());\r\n\t},\r\n\r\n\treset: function() {\r\n\t\tthis._update(true);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tdestroy: function() {\r\n\t\tif (this._data) {\r\n\t\t\tunlistenArrayEvents(this._data, this);\r\n\t\t}\r\n\t},\r\n\r\n\tcreateMetaDataset: function() {\r\n\t\tvar me = this;\r\n\t\tvar type = me.datasetElementType;\r\n\t\treturn type && new type({\r\n\t\t\t_chart: me.chart,\r\n\t\t\t_datasetIndex: me.index\r\n\t\t});\r\n\t},\r\n\r\n\tcreateMetaData: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar type = me.dataElementType;\r\n\t\treturn type && new type({\r\n\t\t\t_chart: me.chart,\r\n\t\t\t_datasetIndex: me.index,\r\n\t\t\t_index: index\r\n\t\t});\r\n\t},\r\n\r\n\taddElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar data = me.getDataset().data || [];\r\n\t\tvar metaData = meta.data;\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = data.length; i < ilen; ++i) {\r\n\t\t\tmetaData[i] = metaData[i] || me.createMetaData(i);\r\n\t\t}\r\n\r\n\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\r\n\t},\r\n\r\n\taddElementAndReset: function(index) {\r\n\t\tvar element = this.createMetaData(index);\r\n\t\tthis.getMeta().data.splice(index, 0, element);\r\n\t\tthis.updateElement(element, index, true);\r\n\t},\r\n\r\n\tbuildOrUpdateElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar data = dataset.data || (dataset.data = []);\r\n\r\n\t\t// In order to correctly handle data addition/deletion animation (an thus simulate\r\n\t\t// real-time charts), we need to monitor these data modifications and synchronize\r\n\t\t// the internal meta data accordingly.\r\n\t\tif (me._data !== data) {\r\n\t\t\tif (me._data) {\r\n\t\t\t\t// This case happens when the user replaced the data array instance.\r\n\t\t\t\tunlistenArrayEvents(me._data, me);\r\n\t\t\t}\r\n\r\n\t\t\tif (data && Object.isExtensible(data)) {\r\n\t\t\t\tlistenArrayEvents(data, me);\r\n\t\t\t}\r\n\t\t\tme._data = data;\r\n\t\t}\r\n\r\n\t\t// Re-sync meta data in case the user replaced the data array or if we missed\r\n\t\t// any updates and so make sure that we handle number of datapoints changing.\r\n\t\tme.resyncElements();\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the merged user-supplied and default dataset-level options\r\n\t * @private\r\n\t */\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tme._config = helpers$1.merge(Object.create(null), [\r\n\t\t\tme.chart.options.datasets[me._type],\r\n\t\t\tme.getDataset(),\r\n\t\t], {\r\n\t\t\tmerger: function(key, target, source) {\r\n\t\t\t\tif (key !== '_meta' && key !== 'data') {\r\n\t\t\t\t\thelpers$1._merger(key, target, source);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\t_update: function(reset) {\r\n\t\tvar me = this;\r\n\t\tme._configure();\r\n\t\tme._cachedDataOpts = null;\r\n\t\tme.update(reset);\r\n\t},\r\n\r\n\tupdate: helpers$1.noop,\r\n\r\n\ttransition: function(easingValue) {\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar elements = meta.data || [];\r\n\t\tvar ilen = elements.length;\r\n\t\tvar i = 0;\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\telements[i].transition(easingValue);\r\n\t\t}\r\n\r\n\t\tif (meta.dataset) {\r\n\t\t\tmeta.dataset.transition(easingValue);\r\n\t\t}\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar elements = meta.data || [];\r\n\t\tvar ilen = elements.length;\r\n\t\tvar i = 0;\r\n\r\n\t\tif (meta.dataset) {\r\n\t\t\tmeta.dataset.draw();\r\n\t\t}\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\telements[i].draw();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a set of predefined style properties that should be used to represent the dataset\r\n\t * or the data if the index is specified\r\n\t * @param {number} index - data index\r\n\t * @return {IStyleInterface} style object\r\n\t */\r\n\tgetStyle: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar dataset = meta.dataset;\r\n\t\tvar style;\r\n\r\n\t\tme._configure();\r\n\t\tif (dataset && index === undefined) {\r\n\t\t\tstyle = me._resolveDatasetElementOptions(dataset || {});\r\n\t\t} else {\r\n\t\t\tindex = index || 0;\r\n\t\t\tstyle = me._resolveDataElementOptions(meta.data[index] || {}, index);\r\n\t\t}\r\n\r\n\t\tif (style.fill === false || style.fill === null) {\r\n\t\t\tstyle.backgroundColor = style.borderColor;\r\n\t\t}\r\n\r\n\t\treturn style;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDatasetElementOptions: function(element, hover) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasetOpts = me._config;\r\n\t\tvar custom = element.custom || {};\r\n\t\tvar options = chart.options.elements[me.datasetElementType.prototype._type] || {};\r\n\t\tvar elementOptions = me._datasetElementOptions;\r\n\t\tvar values = {};\r\n\t\tvar i, ilen, key, readKey;\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: chart,\r\n\t\t\tdataset: me.getDataset(),\r\n\t\t\tdatasetIndex: me.index,\r\n\t\t\thover: hover\r\n\t\t};\r\n\r\n\t\tfor (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\r\n\t\t\tkey = elementOptions[i];\r\n\t\t\treadKey = hover ? 'hover' + key.charAt(0).toUpperCase() + key.slice(1) : key;\r\n\t\t\tvalues[key] = resolve([\r\n\t\t\t\tcustom[readKey],\r\n\t\t\t\tdatasetOpts[readKey],\r\n\t\t\t\toptions[readKey]\r\n\t\t\t], context);\r\n\t\t}\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDataElementOptions: function(element, index) {\r\n\t\tvar me = this;\r\n\t\tvar custom = element && element.custom;\r\n\t\tvar cached = me._cachedDataOpts;\r\n\t\tif (cached && !custom) {\r\n\t\t\treturn cached;\r\n\t\t}\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasetOpts = me._config;\r\n\t\tvar options = chart.options.elements[me.dataElementType.prototype._type] || {};\r\n\t\tvar elementOptions = me._dataElementOptions;\r\n\t\tvar values = {};\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: chart,\r\n\t\t\tdataIndex: index,\r\n\t\t\tdataset: me.getDataset(),\r\n\t\t\tdatasetIndex: me.index\r\n\t\t};\r\n\r\n\t\t// `resolve` sets cacheable to `false` if any option is indexed or scripted\r\n\t\tvar info = {cacheable: !custom};\r\n\r\n\t\tvar keys, i, ilen, key;\r\n\r\n\t\tcustom = custom || {};\r\n\r\n\t\tif (helpers$1.isArray(elementOptions)) {\r\n\t\t\tfor (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\r\n\t\t\t\tkey = elementOptions[i];\r\n\t\t\t\tvalues[key] = resolve([\r\n\t\t\t\t\tcustom[key],\r\n\t\t\t\t\tdatasetOpts[key],\r\n\t\t\t\t\toptions[key]\r\n\t\t\t\t], context, index, info);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tkeys = Object.keys(elementOptions);\r\n\t\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\t\t\tkey = keys[i];\r\n\t\t\t\tvalues[key] = resolve([\r\n\t\t\t\t\tcustom[key],\r\n\t\t\t\t\tdatasetOpts[elementOptions[key]],\r\n\t\t\t\t\tdatasetOpts[key],\r\n\t\t\t\t\toptions[key]\r\n\t\t\t\t], context, index, info);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (info.cacheable) {\r\n\t\t\tme._cachedDataOpts = Object.freeze(values);\r\n\t\t}\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\tremoveHoverStyle: function(element) {\r\n\t\thelpers$1.merge(element._model, element.$previousStyle || {});\r\n\t\tdelete element.$previousStyle;\r\n\t},\r\n\r\n\tsetHoverStyle: function(element) {\r\n\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\r\n\t\tvar index = element._index;\r\n\t\tvar custom = element.custom || {};\r\n\t\tvar model = element._model;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\telement.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = resolve([custom.hoverBackgroundColor, dataset.hoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index);\r\n\t\tmodel.borderColor = resolve([custom.hoverBorderColor, dataset.hoverBorderColor, getHoverColor(model.borderColor)], undefined, index);\r\n\t\tmodel.borderWidth = resolve([custom.hoverBorderWidth, dataset.hoverBorderWidth, model.borderWidth], undefined, index);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_removeDatasetHoverStyle: function() {\r\n\t\tvar element = this.getMeta().dataset;\r\n\r\n\t\tif (element) {\r\n\t\t\tthis.removeHoverStyle(element);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_setDatasetHoverStyle: function() {\r\n\t\tvar element = this.getMeta().dataset;\r\n\t\tvar prev = {};\r\n\t\tvar i, ilen, key, keys, hoverOptions, model;\r\n\r\n\t\tif (!element) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmodel = element._model;\r\n\t\thoverOptions = this._resolveDatasetElementOptions(element, true);\r\n\r\n\t\tkeys = Object.keys(hoverOptions);\r\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\t\tkey = keys[i];\r\n\t\t\tprev[key] = model[key];\r\n\t\t\tmodel[key] = hoverOptions[key];\r\n\t\t}\r\n\r\n\t\telement.$previousStyle = prev;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tresyncElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar data = me.getDataset().data;\r\n\t\tvar numMeta = meta.data.length;\r\n\t\tvar numData = data.length;\r\n\r\n\t\tif (numData < numMeta) {\r\n\t\t\tmeta.data.splice(numData, numMeta - numData);\r\n\t\t} else if (numData > numMeta) {\r\n\t\t\tme.insertElements(numMeta, numData - numMeta);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tinsertElements: function(start, count) {\r\n\t\tfor (var i = 0; i < count; ++i) {\r\n\t\t\tthis.addElementAndReset(start + i);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataPush: function() {\r\n\t\tvar count = arguments.length;\r\n\t\tthis.insertElements(this.getDataset().data.length - count, count);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataPop: function() {\r\n\t\tthis.getMeta().data.pop();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataShift: function() {\r\n\t\tthis.getMeta().data.shift();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataSplice: function(start, count) {\r\n\t\tthis.getMeta().data.splice(start, count);\r\n\t\tthis.insertElements(start, arguments.length - 2);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataUnshift: function() {\r\n\t\tthis.insertElements(0, arguments.length);\r\n\t}\r\n});\r\n\r\nDatasetController.extend = helpers$1.inherits;\r\n\r\nvar core_datasetController = DatasetController;\n\nvar TAU = Math.PI * 2;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\tarc: {\r\n\t\t\tbackgroundColor: core_defaults.global.defaultColor,\r\n\t\t\tborderColor: '#fff',\r\n\t\t\tborderWidth: 2,\r\n\t\t\tborderAlign: 'center'\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction clipArc(ctx, arc) {\r\n\tvar startAngle = arc.startAngle;\r\n\tvar endAngle = arc.endAngle;\r\n\tvar pixelMargin = arc.pixelMargin;\r\n\tvar angleMargin = pixelMargin / arc.outerRadius;\r\n\tvar x = arc.x;\r\n\tvar y = arc.y;\r\n\r\n\t// Draw an inner border by cliping the arc and drawing a double-width border\r\n\t// Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\r\n\tctx.beginPath();\r\n\tctx.arc(x, y, arc.outerRadius, startAngle - angleMargin, endAngle + angleMargin);\r\n\tif (arc.innerRadius > pixelMargin) {\r\n\t\tangleMargin = pixelMargin / arc.innerRadius;\r\n\t\tctx.arc(x, y, arc.innerRadius - pixelMargin, endAngle + angleMargin, startAngle - angleMargin, true);\r\n\t} else {\r\n\t\tctx.arc(x, y, pixelMargin, endAngle + Math.PI / 2, startAngle - Math.PI / 2);\r\n\t}\r\n\tctx.closePath();\r\n\tctx.clip();\r\n}\r\n\r\nfunction drawFullCircleBorders(ctx, vm, arc, inner) {\r\n\tvar endAngle = arc.endAngle;\r\n\tvar i;\r\n\r\n\tif (inner) {\r\n\t\tarc.endAngle = arc.startAngle + TAU;\r\n\t\tclipArc(ctx, arc);\r\n\t\tarc.endAngle = endAngle;\r\n\t\tif (arc.endAngle === arc.startAngle && arc.fullCircles) {\r\n\t\t\tarc.endAngle += TAU;\r\n\t\t\tarc.fullCircles--;\r\n\t\t}\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.startAngle + TAU, arc.startAngle, true);\r\n\tfor (i = 0; i < arc.fullCircles; ++i) {\r\n\t\tctx.stroke();\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.startAngle + TAU);\r\n\tfor (i = 0; i < arc.fullCircles; ++i) {\r\n\t\tctx.stroke();\r\n\t}\r\n}\r\n\r\nfunction drawBorder(ctx, vm, arc) {\r\n\tvar inner = vm.borderAlign === 'inner';\r\n\r\n\tif (inner) {\r\n\t\tctx.lineWidth = vm.borderWidth * 2;\r\n\t\tctx.lineJoin = 'round';\r\n\t} else {\r\n\t\tctx.lineWidth = vm.borderWidth;\r\n\t\tctx.lineJoin = 'bevel';\r\n\t}\r\n\r\n\tif (arc.fullCircles) {\r\n\t\tdrawFullCircleBorders(ctx, vm, arc, inner);\r\n\t}\r\n\r\n\tif (inner) {\r\n\t\tclipArc(ctx, arc);\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.endAngle);\r\n\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\r\n\tctx.closePath();\r\n\tctx.stroke();\r\n}\r\n\r\nvar element_arc = core_element.extend({\r\n\t_type: 'arc',\r\n\r\n\tinLabelRange: function(mouseX) {\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm) {\r\n\t\t\treturn (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\tinRange: function(chartX, chartY) {\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm) {\r\n\t\t\tvar pointRelativePosition = helpers$1.getAngleFromPoint(vm, {x: chartX, y: chartY});\r\n\t\t\tvar angle = pointRelativePosition.angle;\r\n\t\t\tvar distance = pointRelativePosition.distance;\r\n\r\n\t\t\t// Sanitise angle range\r\n\t\t\tvar startAngle = vm.startAngle;\r\n\t\t\tvar endAngle = vm.endAngle;\r\n\t\t\twhile (endAngle < startAngle) {\r\n\t\t\t\tendAngle += TAU;\r\n\t\t\t}\r\n\t\t\twhile (angle > endAngle) {\r\n\t\t\t\tangle -= TAU;\r\n\t\t\t}\r\n\t\t\twhile (angle < startAngle) {\r\n\t\t\t\tangle += TAU;\r\n\t\t\t}\r\n\r\n\t\t\t// Check if within the range of the open/close angle\r\n\t\t\tvar betweenAngles = (angle >= startAngle && angle <= endAngle);\r\n\t\t\tvar withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius);\r\n\r\n\t\t\treturn (betweenAngles && withinRadius);\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar halfAngle = (vm.startAngle + vm.endAngle) / 2;\r\n\t\tvar halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\r\n\t\treturn {\r\n\t\t\tx: vm.x + Math.cos(halfAngle) * halfRadius,\r\n\t\t\ty: vm.y + Math.sin(halfAngle) * halfRadius\r\n\t\t};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2);\r\n\t\tvar rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\r\n\r\n\t\treturn {\r\n\t\t\tx: vm.x + (Math.cos(centreAngle) * rangeFromCentre),\r\n\t\t\ty: vm.y + (Math.sin(centreAngle) * rangeFromCentre)\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar pixelMargin = (vm.borderAlign === 'inner') ? 0.33 : 0;\r\n\t\tvar arc = {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y,\r\n\t\t\tinnerRadius: vm.innerRadius,\r\n\t\t\touterRadius: Math.max(vm.outerRadius - pixelMargin, 0),\r\n\t\t\tpixelMargin: pixelMargin,\r\n\t\t\tstartAngle: vm.startAngle,\r\n\t\t\tendAngle: vm.endAngle,\r\n\t\t\tfullCircles: Math.floor(vm.circumference / TAU)\r\n\t\t};\r\n\t\tvar i;\r\n\r\n\t\tctx.save();\r\n\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\t\tctx.strokeStyle = vm.borderColor;\r\n\r\n\t\tif (arc.fullCircles) {\r\n\t\t\tarc.endAngle = arc.startAngle + TAU;\r\n\t\t\tctx.beginPath();\r\n\t\t\tctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\r\n\t\t\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\r\n\t\t\tctx.closePath();\r\n\t\t\tfor (i = 0; i < arc.fullCircles; ++i) {\r\n\t\t\t\tctx.fill();\r\n\t\t\t}\r\n\t\t\tarc.endAngle = arc.startAngle + vm.circumference % TAU;\r\n\t\t}\r\n\r\n\t\tctx.beginPath();\r\n\t\tctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\r\n\t\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\r\n\t\tctx.closePath();\r\n\t\tctx.fill();\r\n\r\n\t\tif (vm.borderWidth) {\r\n\t\t\tdrawBorder(ctx, vm, arc);\r\n\t\t}\r\n\r\n\t\tctx.restore();\r\n\t}\r\n});\n\nvar valueOrDefault$1 = helpers$1.valueOrDefault;\r\n\r\nvar defaultColor = core_defaults.global.defaultColor;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\tline: {\r\n\t\t\ttension: 0.4,\r\n\t\t\tbackgroundColor: defaultColor,\r\n\t\t\tborderWidth: 3,\r\n\t\t\tborderColor: defaultColor,\r\n\t\t\tborderCapStyle: 'butt',\r\n\t\t\tborderDash: [],\r\n\t\t\tborderDashOffset: 0.0,\r\n\t\t\tborderJoinStyle: 'miter',\r\n\t\t\tcapBezierPoints: true,\r\n\t\t\tfill: true, // do we fill in the area between the line and its base axis\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar element_line = core_element.extend({\r\n\t_type: 'line',\r\n\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar vm = me._view;\r\n\t\tvar ctx = me._chart.ctx;\r\n\t\tvar spanGaps = vm.spanGaps;\r\n\t\tvar points = me._children.slice(); // clone array\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar globalOptionLineElements = globalDefaults.elements.line;\r\n\t\tvar lastDrawnIndex = -1;\r\n\t\tvar closePath = me._loop;\r\n\t\tvar index, previous, currentVM;\r\n\r\n\t\tif (!points.length) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (me._loop) {\r\n\t\t\tfor (index = 0; index < points.length; ++index) {\r\n\t\t\t\tprevious = helpers$1.previousItem(points, index);\r\n\t\t\t\t// If the line has an open path, shift the point array\r\n\t\t\t\tif (!points[index]._view.skip && previous._view.skip) {\r\n\t\t\t\t\tpoints = points.slice(index).concat(points.slice(0, index));\r\n\t\t\t\t\tclosePath = spanGaps;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// If the line has a close path, add the first point again\r\n\t\t\tif (closePath) {\r\n\t\t\t\tpoints.push(points[0]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\r\n\t\t// Stroke Line Options\r\n\t\tctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\r\n\r\n\t\t// IE 9 and 10 do not support line dash\r\n\t\tif (ctx.setLineDash) {\r\n\t\t\tctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\r\n\t\t}\r\n\r\n\t\tctx.lineDashOffset = valueOrDefault$1(vm.borderDashOffset, globalOptionLineElements.borderDashOffset);\r\n\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\r\n\t\tctx.lineWidth = valueOrDefault$1(vm.borderWidth, globalOptionLineElements.borderWidth);\r\n\t\tctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\r\n\r\n\t\t// Stroke Line\r\n\t\tctx.beginPath();\r\n\r\n\t\t// First point moves to it's starting position no matter what\r\n\t\tcurrentVM = points[0]._view;\r\n\t\tif (!currentVM.skip) {\r\n\t\t\tctx.moveTo(currentVM.x, currentVM.y);\r\n\t\t\tlastDrawnIndex = 0;\r\n\t\t}\r\n\r\n\t\tfor (index = 1; index < points.length; ++index) {\r\n\t\t\tcurrentVM = points[index]._view;\r\n\t\t\tprevious = lastDrawnIndex === -1 ? helpers$1.previousItem(points, index) : points[lastDrawnIndex];\r\n\r\n\t\t\tif (!currentVM.skip) {\r\n\t\t\t\tif ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\r\n\t\t\t\t\t// There was a gap and this is the first point after the gap\r\n\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Line to next point\r\n\t\t\t\t\thelpers$1.canvas.lineTo(ctx, previous._view, currentVM);\r\n\t\t\t\t}\r\n\t\t\t\tlastDrawnIndex = index;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (closePath) {\r\n\t\t\tctx.closePath();\r\n\t\t}\r\n\r\n\t\tctx.stroke();\r\n\t\tctx.restore();\r\n\t}\r\n});\n\nvar valueOrDefault$2 = helpers$1.valueOrDefault;\r\n\r\nvar defaultColor$1 = core_defaults.global.defaultColor;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\tpoint: {\r\n\t\t\tradius: 3,\r\n\t\t\tpointStyle: 'circle',\r\n\t\t\tbackgroundColor: defaultColor$1,\r\n\t\t\tborderColor: defaultColor$1,\r\n\t\t\tborderWidth: 1,\r\n\t\t\t// Hover\r\n\t\t\thitRadius: 1,\r\n\t\t\thoverRadius: 4,\r\n\t\t\thoverBorderWidth: 1\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction xRange(mouseX) {\r\n\tvar vm = this._view;\r\n\treturn vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false;\r\n}\r\n\r\nfunction yRange(mouseY) {\r\n\tvar vm = this._view;\r\n\treturn vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false;\r\n}\r\n\r\nvar element_point = core_element.extend({\r\n\t_type: 'point',\r\n\r\n\tinRange: function(mouseX, mouseY) {\r\n\t\tvar vm = this._view;\r\n\t\treturn vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false;\r\n\t},\r\n\r\n\tinLabelRange: xRange,\r\n\tinXRange: xRange,\r\n\tinYRange: yRange,\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\treturn Math.PI * Math.pow(this._view.radius, 2);\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y,\r\n\t\t\tpadding: vm.radius + vm.borderWidth\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function(chartArea) {\r\n\t\tvar vm = this._view;\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar pointStyle = vm.pointStyle;\r\n\t\tvar rotation = vm.rotation;\r\n\t\tvar radius = vm.radius;\r\n\t\tvar x = vm.x;\r\n\t\tvar y = vm.y;\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar defaultColor = globalDefaults.defaultColor; // eslint-disable-line no-shadow\r\n\r\n\t\tif (vm.skip) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Clipping for Points.\r\n\t\tif (chartArea === undefined || helpers$1.canvas._isPointInArea(vm, chartArea)) {\r\n\t\t\tctx.strokeStyle = vm.borderColor || defaultColor;\r\n\t\t\tctx.lineWidth = valueOrDefault$2(vm.borderWidth, globalDefaults.elements.point.borderWidth);\r\n\t\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\r\n\t\t\thelpers$1.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\r\n\t\t}\r\n\t}\r\n});\n\nvar defaultColor$2 = core_defaults.global.defaultColor;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\trectangle: {\r\n\t\t\tbackgroundColor: defaultColor$2,\r\n\t\t\tborderColor: defaultColor$2,\r\n\t\t\tborderSkipped: 'bottom',\r\n\t\t\tborderWidth: 0\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction isVertical(vm) {\r\n\treturn vm && vm.width !== undefined;\r\n}\r\n\r\n/**\r\n * Helper function to get the bounds of the bar regardless of the orientation\r\n * @param bar {Chart.Element.Rectangle} the bar\r\n * @return {Bounds} bounds of the bar\r\n * @private\r\n */\r\nfunction getBarBounds(vm) {\r\n\tvar x1, x2, y1, y2, half;\r\n\r\n\tif (isVertical(vm)) {\r\n\t\thalf = vm.width / 2;\r\n\t\tx1 = vm.x - half;\r\n\t\tx2 = vm.x + half;\r\n\t\ty1 = Math.min(vm.y, vm.base);\r\n\t\ty2 = Math.max(vm.y, vm.base);\r\n\t} else {\r\n\t\thalf = vm.height / 2;\r\n\t\tx1 = Math.min(vm.x, vm.base);\r\n\t\tx2 = Math.max(vm.x, vm.base);\r\n\t\ty1 = vm.y - half;\r\n\t\ty2 = vm.y + half;\r\n\t}\r\n\r\n\treturn {\r\n\t\tleft: x1,\r\n\t\ttop: y1,\r\n\t\tright: x2,\r\n\t\tbottom: y2\r\n\t};\r\n}\r\n\r\nfunction swap(orig, v1, v2) {\r\n\treturn orig === v1 ? v2 : orig === v2 ? v1 : orig;\r\n}\r\n\r\nfunction parseBorderSkipped(vm) {\r\n\tvar edge = vm.borderSkipped;\r\n\tvar res = {};\r\n\r\n\tif (!edge) {\r\n\t\treturn res;\r\n\t}\r\n\r\n\tif (vm.horizontal) {\r\n\t\tif (vm.base > vm.x) {\r\n\t\t\tedge = swap(edge, 'left', 'right');\r\n\t\t}\r\n\t} else if (vm.base < vm.y) {\r\n\t\tedge = swap(edge, 'bottom', 'top');\r\n\t}\r\n\r\n\tres[edge] = true;\r\n\treturn res;\r\n}\r\n\r\nfunction parseBorderWidth(vm, maxW, maxH) {\r\n\tvar value = vm.borderWidth;\r\n\tvar skip = parseBorderSkipped(vm);\r\n\tvar t, r, b, l;\r\n\r\n\tif (helpers$1.isObject(value)) {\r\n\t\tt = +value.top || 0;\r\n\t\tr = +value.right || 0;\r\n\t\tb = +value.bottom || 0;\r\n\t\tl = +value.left || 0;\r\n\t} else {\r\n\t\tt = r = b = l = +value || 0;\r\n\t}\r\n\r\n\treturn {\r\n\t\tt: skip.top || (t < 0) ? 0 : t > maxH ? maxH : t,\r\n\t\tr: skip.right || (r < 0) ? 0 : r > maxW ? maxW : r,\r\n\t\tb: skip.bottom || (b < 0) ? 0 : b > maxH ? maxH : b,\r\n\t\tl: skip.left || (l < 0) ? 0 : l > maxW ? maxW : l\r\n\t};\r\n}\r\n\r\nfunction boundingRects(vm) {\r\n\tvar bounds = getBarBounds(vm);\r\n\tvar width = bounds.right - bounds.left;\r\n\tvar height = bounds.bottom - bounds.top;\r\n\tvar border = parseBorderWidth(vm, width / 2, height / 2);\r\n\r\n\treturn {\r\n\t\touter: {\r\n\t\t\tx: bounds.left,\r\n\t\t\ty: bounds.top,\r\n\t\t\tw: width,\r\n\t\t\th: height\r\n\t\t},\r\n\t\tinner: {\r\n\t\t\tx: bounds.left + border.l,\r\n\t\t\ty: bounds.top + border.t,\r\n\t\t\tw: width - border.l - border.r,\r\n\t\t\th: height - border.t - border.b\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction inRange(vm, x, y) {\r\n\tvar skipX = x === null;\r\n\tvar skipY = y === null;\r\n\tvar bounds = !vm || (skipX && skipY) ? false : getBarBounds(vm);\r\n\r\n\treturn bounds\r\n\t\t&& (skipX || x >= bounds.left && x <= bounds.right)\r\n\t\t&& (skipY || y >= bounds.top && y <= bounds.bottom);\r\n}\r\n\r\nvar element_rectangle = core_element.extend({\r\n\t_type: 'rectangle',\r\n\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar rects = boundingRects(vm);\r\n\t\tvar outer = rects.outer;\r\n\t\tvar inner = rects.inner;\r\n\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\t\tctx.fillRect(outer.x, outer.y, outer.w, outer.h);\r\n\r\n\t\tif (outer.w === inner.w && outer.h === inner.h) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\t\tctx.beginPath();\r\n\t\tctx.rect(outer.x, outer.y, outer.w, outer.h);\r\n\t\tctx.clip();\r\n\t\tctx.fillStyle = vm.borderColor;\r\n\t\tctx.rect(inner.x, inner.y, inner.w, inner.h);\r\n\t\tctx.fill('evenodd');\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\theight: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn vm.base - vm.y;\r\n\t},\r\n\r\n\tinRange: function(mouseX, mouseY) {\r\n\t\treturn inRange(this._view, mouseX, mouseY);\r\n\t},\r\n\r\n\tinLabelRange: function(mouseX, mouseY) {\r\n\t\tvar vm = this._view;\r\n\t\treturn isVertical(vm)\r\n\t\t\t? inRange(vm, mouseX, null)\r\n\t\t\t: inRange(vm, null, mouseY);\r\n\t},\r\n\r\n\tinXRange: function(mouseX) {\r\n\t\treturn inRange(this._view, mouseX, null);\r\n\t},\r\n\r\n\tinYRange: function(mouseY) {\r\n\t\treturn inRange(this._view, null, mouseY);\r\n\t},\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar x, y;\r\n\t\tif (isVertical(vm)) {\r\n\t\t\tx = vm.x;\r\n\t\t\ty = (vm.y + vm.base) / 2;\r\n\t\t} else {\r\n\t\t\tx = (vm.x + vm.base) / 2;\r\n\t\t\ty = vm.y;\r\n\t\t}\r\n\r\n\t\treturn {x: x, y: y};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\tvar vm = this._view;\r\n\r\n\t\treturn isVertical(vm)\r\n\t\t\t? vm.width * Math.abs(vm.y - vm.base)\r\n\t\t\t: vm.height * Math.abs(vm.x - vm.base);\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\t}\r\n});\n\nvar elements = {};\r\nvar Arc = element_arc;\r\nvar Line = element_line;\r\nvar Point = element_point;\r\nvar Rectangle = element_rectangle;\nelements.Arc = Arc;\nelements.Line = Line;\nelements.Point = Point;\nelements.Rectangle = Rectangle;\n\nvar deprecated = helpers$1._deprecated;\r\nvar valueOrDefault$3 = helpers$1.valueOrDefault;\r\n\r\ncore_defaults._set('bar', {\r\n\thover: {\r\n\t\tmode: 'label'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'category',\r\n\t\t\toffset: true,\r\n\t\t\tgridLines: {\r\n\t\t\t\toffsetGridLines: true\r\n\t\t\t}\r\n\t\t}],\r\n\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear'\r\n\t\t}]\r\n\t}\r\n});\r\n\r\ncore_defaults._set('global', {\r\n\tdatasets: {\r\n\t\tbar: {\r\n\t\t\tcategoryPercentage: 0.8,\r\n\t\t\tbarPercentage: 0.9\r\n\t\t}\r\n\t}\r\n});\r\n\r\n/**\r\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\r\n * @private\r\n */\r\nfunction computeMinSampleSize(scale, pixels) {\r\n\tvar min = scale._length;\r\n\tvar prev, curr, i, ilen;\r\n\r\n\tfor (i = 1, ilen = pixels.length; i < ilen; ++i) {\r\n\t\tmin = Math.min(min, Math.abs(pixels[i] - pixels[i - 1]));\r\n\t}\r\n\r\n\tfor (i = 0, ilen = scale.getTicks().length; i < ilen; ++i) {\r\n\t\tcurr = scale.getPixelForTick(i);\r\n\t\tmin = i > 0 ? Math.min(min, Math.abs(curr - prev)) : min;\r\n\t\tprev = curr;\r\n\t}\r\n\r\n\treturn min;\r\n}\r\n\r\n/**\r\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\r\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\r\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\r\n * @private\r\n */\r\nfunction computeFitCategoryTraits(index, ruler, options) {\r\n\tvar thickness = options.barThickness;\r\n\tvar count = ruler.stackCount;\r\n\tvar curr = ruler.pixels[index];\r\n\tvar min = helpers$1.isNullOrUndef(thickness)\r\n\t\t? computeMinSampleSize(ruler.scale, ruler.pixels)\r\n\t\t: -1;\r\n\tvar size, ratio;\r\n\r\n\tif (helpers$1.isNullOrUndef(thickness)) {\r\n\t\tsize = min * options.categoryPercentage;\r\n\t\tratio = options.barPercentage;\r\n\t} else {\r\n\t\t// When bar thickness is enforced, category and bar percentages are ignored.\r\n\t\t// Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\r\n\t\t// and deprecate barPercentage since this value is ignored when thickness is absolute.\r\n\t\tsize = thickness * count;\r\n\t\tratio = 1;\r\n\t}\r\n\r\n\treturn {\r\n\t\tchunk: size / count,\r\n\t\tratio: ratio,\r\n\t\tstart: curr - (size / 2)\r\n\t};\r\n}\r\n\r\n/**\r\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\r\n * percentage options are 1), based on the previous and following categories. This mode\r\n * generates bars with different widths when data are not evenly spaced.\r\n * @private\r\n */\r\nfunction computeFlexCategoryTraits(index, ruler, options) {\r\n\tvar pixels = ruler.pixels;\r\n\tvar curr = pixels[index];\r\n\tvar prev = index > 0 ? pixels[index - 1] : null;\r\n\tvar next = index < pixels.length - 1 ? pixels[index + 1] : null;\r\n\tvar percent = options.categoryPercentage;\r\n\tvar start, size;\r\n\r\n\tif (prev === null) {\r\n\t\t// first data: its size is double based on the next point or,\r\n\t\t// if it's also the last data, we use the scale size.\r\n\t\tprev = curr - (next === null ? ruler.end - ruler.start : next - curr);\r\n\t}\r\n\r\n\tif (next === null) {\r\n\t\t// last data: its size is also double based on the previous point.\r\n\t\tnext = curr + curr - prev;\r\n\t}\r\n\r\n\tstart = curr - (curr - Math.min(prev, next)) / 2 * percent;\r\n\tsize = Math.abs(next - prev) / 2 * percent;\r\n\r\n\treturn {\r\n\t\tchunk: size / ruler.stackCount,\r\n\t\tratio: options.barPercentage,\r\n\t\tstart: start\r\n\t};\r\n}\r\n\r\nvar controller_bar = core_datasetController.extend({\r\n\r\n\tdataElementType: elements.Rectangle,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderSkipped',\r\n\t\t'borderWidth',\r\n\t\t'barPercentage',\r\n\t\t'barThickness',\r\n\t\t'categoryPercentage',\r\n\t\t'maxBarThickness',\r\n\t\t'minBarLength'\r\n\t],\r\n\r\n\tinitialize: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta, scaleOpts;\r\n\r\n\t\tcore_datasetController.prototype.initialize.apply(me, arguments);\r\n\r\n\t\tmeta = me.getMeta();\r\n\t\tmeta.stack = me.getDataset().stack;\r\n\t\tmeta.bar = true;\r\n\r\n\t\tscaleOpts = me._getIndexScale().options;\r\n\t\tdeprecated('bar chart', scaleOpts.barPercentage, 'scales.[x/y]Axes.barPercentage', 'dataset.barPercentage');\r\n\t\tdeprecated('bar chart', scaleOpts.barThickness, 'scales.[x/y]Axes.barThickness', 'dataset.barThickness');\r\n\t\tdeprecated('bar chart', scaleOpts.categoryPercentage, 'scales.[x/y]Axes.categoryPercentage', 'dataset.categoryPercentage');\r\n\t\tdeprecated('bar chart', me._getValueScale().options.minBarLength, 'scales.[x/y]Axes.minBarLength', 'dataset.minBarLength');\r\n\t\tdeprecated('bar chart', scaleOpts.maxBarThickness, 'scales.[x/y]Axes.maxBarThickness', 'dataset.maxBarThickness');\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar rects = me.getMeta().data;\r\n\t\tvar i, ilen;\r\n\r\n\t\tme._ruler = me.getRuler();\r\n\r\n\t\tfor (i = 0, ilen = rects.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(rects[i], i, reset);\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(rectangle, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar options = me._resolveDataElementOptions(rectangle, index);\r\n\r\n\t\trectangle._xScale = me.getScaleForId(meta.xAxisID);\r\n\t\trectangle._yScale = me.getScaleForId(meta.yAxisID);\r\n\t\trectangle._datasetIndex = me.index;\r\n\t\trectangle._index = index;\r\n\t\trectangle._model = {\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderSkipped: options.borderSkipped,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\tdatasetLabel: dataset.label,\r\n\t\t\tlabel: me.chart.data.labels[index]\r\n\t\t};\r\n\r\n\t\tif (helpers$1.isArray(dataset.data[index])) {\r\n\t\t\trectangle._model.borderSkipped = null;\r\n\t\t}\r\n\r\n\t\tme._updateElementGeometry(rectangle, index, reset, options);\r\n\r\n\t\trectangle.pivot();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_updateElementGeometry: function(rectangle, index, reset, options) {\r\n\t\tvar me = this;\r\n\t\tvar model = rectangle._model;\r\n\t\tvar vscale = me._getValueScale();\r\n\t\tvar base = vscale.getBasePixel();\r\n\t\tvar horizontal = vscale.isHorizontal();\r\n\t\tvar ruler = me._ruler || me.getRuler();\r\n\t\tvar vpixels = me.calculateBarValuePixels(me.index, index, options);\r\n\t\tvar ipixels = me.calculateBarIndexPixels(me.index, index, ruler, options);\r\n\r\n\t\tmodel.horizontal = horizontal;\r\n\t\tmodel.base = reset ? base : vpixels.base;\r\n\t\tmodel.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\r\n\t\tmodel.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\r\n\t\tmodel.height = horizontal ? ipixels.size : undefined;\r\n\t\tmodel.width = horizontal ? undefined : ipixels.size;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the stacks based on groups and bar visibility.\r\n\t * @param {number} [last] - The dataset index\r\n\t * @returns {string[]} The list of stack IDs\r\n\t * @private\r\n\t */\r\n\t_getStacks: function(last) {\r\n\t\tvar me = this;\r\n\t\tvar scale = me._getIndexScale();\r\n\t\tvar metasets = scale._getMatchingVisibleMetas(me._type);\r\n\t\tvar stacked = scale.options.stacked;\r\n\t\tvar ilen = metasets.length;\r\n\t\tvar stacks = [];\r\n\t\tvar i, meta;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tmeta = metasets[i];\r\n\t\t\t// stacked | meta.stack\r\n\t\t\t// | found | not found | undefined\r\n\t\t\t// false | x | x | x\r\n\t\t\t// true | | x |\r\n\t\t\t// undefined | | x | x\r\n\t\t\tif (stacked === false || stacks.indexOf(meta.stack) === -1 ||\r\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\r\n\t\t\t\tstacks.push(meta.stack);\r\n\t\t\t}\r\n\t\t\tif (meta.index === last) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn stacks;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the effective number of stacks based on groups and bar visibility.\r\n\t * @private\r\n\t */\r\n\tgetStackCount: function() {\r\n\t\treturn this._getStacks().length;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the stack index for the given dataset based on groups and bar visibility.\r\n\t * @param {number} [datasetIndex] - The dataset index\r\n\t * @param {string} [name] - The stack name to find\r\n\t * @returns {number} The stack index\r\n\t * @private\r\n\t */\r\n\tgetStackIndex: function(datasetIndex, name) {\r\n\t\tvar stacks = this._getStacks(datasetIndex);\r\n\t\tvar index = (name !== undefined)\r\n\t\t\t? stacks.indexOf(name)\r\n\t\t\t: -1; // indexOf returns -1 if element is not present\r\n\r\n\t\treturn (index === -1)\r\n\t\t\t? stacks.length - 1\r\n\t\t\t: index;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tgetRuler: function() {\r\n\t\tvar me = this;\r\n\t\tvar scale = me._getIndexScale();\r\n\t\tvar pixels = [];\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\r\n\t\t\tpixels.push(scale.getPixelForValue(null, i, me.index));\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tpixels: pixels,\r\n\t\t\tstart: scale._startPixel,\r\n\t\t\tend: scale._endPixel,\r\n\t\t\tstackCount: me.getStackCount(),\r\n\t\t\tscale: scale\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Note: pixel values are not clamped to the scale area.\r\n\t * @private\r\n\t */\r\n\tcalculateBarValuePixels: function(datasetIndex, index, options) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar scale = me._getValueScale();\r\n\t\tvar isHorizontal = scale.isHorizontal();\r\n\t\tvar datasets = chart.data.datasets;\r\n\t\tvar metasets = scale._getMatchingVisibleMetas(me._type);\r\n\t\tvar value = scale._parseValue(datasets[datasetIndex].data[index]);\r\n\t\tvar minBarLength = options.minBarLength;\r\n\t\tvar stacked = scale.options.stacked;\r\n\t\tvar stack = me.getMeta().stack;\r\n\t\tvar start = value.start === undefined ? 0 : value.max >= 0 && value.min >= 0 ? value.min : value.max;\r\n\t\tvar length = value.start === undefined ? value.end : value.max >= 0 && value.min >= 0 ? value.max - value.min : value.min - value.max;\r\n\t\tvar ilen = metasets.length;\r\n\t\tvar i, imeta, ivalue, base, head, size, stackLength;\r\n\r\n\t\tif (stacked || (stacked === undefined && stack !== undefined)) {\r\n\t\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\t\timeta = metasets[i];\r\n\r\n\t\t\t\tif (imeta.index === datasetIndex) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (imeta.stack === stack) {\r\n\t\t\t\t\tstackLength = scale._parseValue(datasets[imeta.index].data[index]);\r\n\t\t\t\t\tivalue = stackLength.start === undefined ? stackLength.end : stackLength.min >= 0 && stackLength.max >= 0 ? stackLength.max : stackLength.min;\r\n\r\n\t\t\t\t\tif ((value.min < 0 && ivalue < 0) || (value.max >= 0 && ivalue > 0)) {\r\n\t\t\t\t\t\tstart += ivalue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tbase = scale.getPixelForValue(start);\r\n\t\thead = scale.getPixelForValue(start + length);\r\n\t\tsize = head - base;\r\n\r\n\t\tif (minBarLength !== undefined && Math.abs(size) < minBarLength) {\r\n\t\t\tsize = minBarLength;\r\n\t\t\tif (length >= 0 && !isHorizontal || length < 0 && isHorizontal) {\r\n\t\t\t\thead = base - minBarLength;\r\n\t\t\t} else {\r\n\t\t\t\thead = base + minBarLength;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tsize: size,\r\n\t\t\tbase: base,\r\n\t\t\thead: head,\r\n\t\t\tcenter: head + size / 2\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tcalculateBarIndexPixels: function(datasetIndex, index, ruler, options) {\r\n\t\tvar me = this;\r\n\t\tvar range = options.barThickness === 'flex'\r\n\t\t\t? computeFlexCategoryTraits(index, ruler, options)\r\n\t\t\t: computeFitCategoryTraits(index, ruler, options);\r\n\r\n\t\tvar stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\r\n\t\tvar center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\r\n\t\tvar size = Math.min(\r\n\t\t\tvalueOrDefault$3(options.maxBarThickness, Infinity),\r\n\t\t\trange.chunk * range.ratio);\r\n\r\n\t\treturn {\r\n\t\t\tbase: center - size / 2,\r\n\t\t\thead: center + size / 2,\r\n\t\t\tcenter: center,\r\n\t\t\tsize: size\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar scale = me._getValueScale();\r\n\t\tvar rects = me.getMeta().data;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar ilen = rects.length;\r\n\t\tvar i = 0;\r\n\r\n\t\thelpers$1.canvas.clipArea(chart.ctx, chart.chartArea);\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tvar val = scale._parseValue(dataset.data[i]);\r\n\t\t\tif (!isNaN(val.min) && !isNaN(val.max)) {\r\n\t\t\t\trects[i].draw();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\thelpers$1.canvas.unclipArea(chart.ctx);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDataElementOptions: function() {\r\n\t\tvar me = this;\r\n\t\tvar values = helpers$1.extend({}, core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments));\r\n\t\tvar indexOpts = me._getIndexScale().options;\r\n\t\tvar valueOpts = me._getValueScale().options;\r\n\r\n\t\tvalues.barPercentage = valueOrDefault$3(indexOpts.barPercentage, values.barPercentage);\r\n\t\tvalues.barThickness = valueOrDefault$3(indexOpts.barThickness, values.barThickness);\r\n\t\tvalues.categoryPercentage = valueOrDefault$3(indexOpts.categoryPercentage, values.categoryPercentage);\r\n\t\tvalues.maxBarThickness = valueOrDefault$3(indexOpts.maxBarThickness, values.maxBarThickness);\r\n\t\tvalues.minBarLength = valueOrDefault$3(valueOpts.minBarLength, values.minBarLength);\r\n\r\n\t\treturn values;\r\n\t}\r\n\r\n});\n\nvar valueOrDefault$4 = helpers$1.valueOrDefault;\r\nvar resolve$1 = helpers$1.options.resolve;\r\n\r\ncore_defaults._set('bubble', {\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'linear', // bubble should probably use a linear scale by default\r\n\t\t\tposition: 'bottom',\r\n\t\t\tid: 'x-axis-0' // need an ID so datasets can reference the scale\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'left',\r\n\t\t\tid: 'y-axis-0'\r\n\t\t}]\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(item, data) {\r\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\r\n\t\t\t\tvar dataPoint = data.datasets[item.datasetIndex].data[item.index];\r\n\t\t\t\treturn datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_bubble = core_datasetController.extend({\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tdataElementType: elements.Point,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'hoverBackgroundColor',\r\n\t\t'hoverBorderColor',\r\n\t\t'hoverBorderWidth',\r\n\t\t'hoverRadius',\r\n\t\t'hitRadius',\r\n\t\t'pointStyle',\r\n\t\t'rotation'\r\n\t],\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar points = meta.data;\r\n\r\n\t\t// Update Points\r\n\t\thelpers$1.each(points, function(point, index) {\r\n\t\t\tme.updateElement(point, index, reset);\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tupdateElement: function(point, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar xScale = me.getScaleForId(meta.xAxisID);\r\n\t\tvar yScale = me.getScaleForId(meta.yAxisID);\r\n\t\tvar options = me._resolveDataElementOptions(point, index);\r\n\t\tvar data = me.getDataset().data[index];\r\n\t\tvar dsIndex = me.index;\r\n\r\n\t\tvar x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\r\n\t\tvar y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\r\n\r\n\t\tpoint._xScale = xScale;\r\n\t\tpoint._yScale = yScale;\r\n\t\tpoint._options = options;\r\n\t\tpoint._datasetIndex = dsIndex;\r\n\t\tpoint._index = index;\r\n\t\tpoint._model = {\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\thitRadius: options.hitRadius,\r\n\t\t\tpointStyle: options.pointStyle,\r\n\t\t\trotation: options.rotation,\r\n\t\t\tradius: reset ? 0 : options.radius,\r\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\tx: x,\r\n\t\t\ty: y,\r\n\t\t};\r\n\r\n\t\tpoint.pivot();\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(point) {\r\n\t\tvar model = point._model;\r\n\t\tvar options = point._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tpoint.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t\tradius: model.radius\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$4(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$4(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$4(options.hoverBorderWidth, options.borderWidth);\r\n\t\tmodel.radius = options.radius + options.hoverRadius;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDataElementOptions: function(point, index) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar data = dataset.data[index] || {};\r\n\t\tvar values = core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments);\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: chart,\r\n\t\t\tdataIndex: index,\r\n\t\t\tdataset: dataset,\r\n\t\t\tdatasetIndex: me.index\r\n\t\t};\r\n\r\n\t\t// In case values were cached (and thus frozen), we need to clone the values\r\n\t\tif (me._cachedDataOpts === values) {\r\n\t\t\tvalues = helpers$1.extend({}, values);\r\n\t\t}\r\n\r\n\t\t// Custom radius resolution\r\n\t\tvalues.radius = resolve$1([\r\n\t\t\tcustom.radius,\r\n\t\t\tdata.r,\r\n\t\t\tme._config.radius,\r\n\t\t\tchart.options.elements.point.radius\r\n\t\t], context, index);\r\n\r\n\t\treturn values;\r\n\t}\r\n});\n\nvar valueOrDefault$5 = helpers$1.valueOrDefault;\r\n\r\nvar PI$1 = Math.PI;\r\nvar DOUBLE_PI$1 = PI$1 * 2;\r\nvar HALF_PI$1 = PI$1 / 2;\r\n\r\ncore_defaults._set('doughnut', {\r\n\tanimation: {\r\n\t\t// Boolean - Whether we animate the rotation of the Doughnut\r\n\t\tanimateRotate: true,\r\n\t\t// Boolean - Whether we animate scaling the Doughnut from the centre\r\n\t\tanimateScale: false\r\n\t},\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\tlegendCallback: function(chart) {\r\n\t\tvar list = document.createElement('ul');\r\n\t\tvar data = chart.data;\r\n\t\tvar datasets = data.datasets;\r\n\t\tvar labels = data.labels;\r\n\t\tvar i, ilen, listItem, listItemSpan;\r\n\r\n\t\tlist.setAttribute('class', chart.id + '-legend');\r\n\t\tif (datasets.length) {\r\n\t\t\tfor (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\r\n\t\t\t\tlistItem = list.appendChild(document.createElement('li'));\r\n\t\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\r\n\t\t\t\tlistItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\r\n\t\t\t\tif (labels[i]) {\r\n\t\t\t\t\tlistItem.appendChild(document.createTextNode(labels[i]));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn list.outerHTML;\r\n\t},\r\n\tlegend: {\r\n\t\tlabels: {\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar data = chart.data;\r\n\t\t\t\tif (data.labels.length && data.datasets.length) {\r\n\t\t\t\t\treturn data.labels.map(function(label, i) {\r\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\r\n\t\t\t\t\t\tvar style = meta.controller.getStyle(i);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\ttext: label,\r\n\t\t\t\t\t\t\tfillStyle: style.backgroundColor,\r\n\t\t\t\t\t\t\tstrokeStyle: style.borderColor,\r\n\t\t\t\t\t\t\tlineWidth: style.borderWidth,\r\n\t\t\t\t\t\t\thidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\r\n\r\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\r\n\t\t\t\t\t\t\tindex: i\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.index;\r\n\t\t\tvar chart = this.chart;\r\n\t\t\tvar i, ilen, meta;\r\n\r\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\t// toggle visibility of index if exists\r\n\t\t\t\tif (meta.data[index]) {\r\n\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tchart.update();\r\n\t\t}\r\n\t},\r\n\r\n\t// The percentage of the chart that we cut out of the middle.\r\n\tcutoutPercentage: 50,\r\n\r\n\t// The rotation of the chart, where the first data arc begins.\r\n\trotation: -HALF_PI$1,\r\n\r\n\t// The total circumference of the chart.\r\n\tcircumference: DOUBLE_PI$1,\r\n\r\n\t// Need to override these to give a nice default\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(tooltipItem, data) {\r\n\t\t\t\tvar dataLabel = data.labels[tooltipItem.index];\r\n\t\t\t\tvar value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\r\n\r\n\t\t\t\tif (helpers$1.isArray(dataLabel)) {\r\n\t\t\t\t\t// show value on first line of multiline label\r\n\t\t\t\t\t// need to clone because we are changing the value\r\n\t\t\t\t\tdataLabel = dataLabel.slice();\r\n\t\t\t\t\tdataLabel[0] += value;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdataLabel += value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn dataLabel;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_doughnut = core_datasetController.extend({\r\n\r\n\tdataElementType: elements.Arc,\r\n\r\n\tlinkScales: helpers$1.noop,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'borderAlign',\r\n\t\t'hoverBackgroundColor',\r\n\t\t'hoverBorderColor',\r\n\t\t'hoverBorderWidth',\r\n\t],\r\n\r\n\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\r\n\tgetRingIndex: function(datasetIndex) {\r\n\t\tvar ringIndex = 0;\r\n\r\n\t\tfor (var j = 0; j < datasetIndex; ++j) {\r\n\t\t\tif (this.chart.isDatasetVisible(j)) {\r\n\t\t\t\t++ringIndex;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn ringIndex;\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar chartArea = chart.chartArea;\r\n\t\tvar opts = chart.options;\r\n\t\tvar ratioX = 1;\r\n\t\tvar ratioY = 1;\r\n\t\tvar offsetX = 0;\r\n\t\tvar offsetY = 0;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar arcs = meta.data;\r\n\t\tvar cutout = opts.cutoutPercentage / 100 || 0;\r\n\t\tvar circumference = opts.circumference;\r\n\t\tvar chartWeight = me._getRingWeight(me.index);\r\n\t\tvar maxWidth, maxHeight, i, ilen;\r\n\r\n\t\t// If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc\r\n\t\tif (circumference < DOUBLE_PI$1) {\r\n\t\t\tvar startAngle = opts.rotation % DOUBLE_PI$1;\r\n\t\t\tstartAngle += startAngle >= PI$1 ? -DOUBLE_PI$1 : startAngle < -PI$1 ? DOUBLE_PI$1 : 0;\r\n\t\t\tvar endAngle = startAngle + circumference;\r\n\t\t\tvar startX = Math.cos(startAngle);\r\n\t\t\tvar startY = Math.sin(startAngle);\r\n\t\t\tvar endX = Math.cos(endAngle);\r\n\t\t\tvar endY = Math.sin(endAngle);\r\n\t\t\tvar contains0 = (startAngle <= 0 && endAngle >= 0) || endAngle >= DOUBLE_PI$1;\r\n\t\t\tvar contains90 = (startAngle <= HALF_PI$1 && endAngle >= HALF_PI$1) || endAngle >= DOUBLE_PI$1 + HALF_PI$1;\r\n\t\t\tvar contains180 = startAngle === -PI$1 || endAngle >= PI$1;\r\n\t\t\tvar contains270 = (startAngle <= -HALF_PI$1 && endAngle >= -HALF_PI$1) || endAngle >= PI$1 + HALF_PI$1;\r\n\t\t\tvar minX = contains180 ? -1 : Math.min(startX, startX * cutout, endX, endX * cutout);\r\n\t\t\tvar minY = contains270 ? -1 : Math.min(startY, startY * cutout, endY, endY * cutout);\r\n\t\t\tvar maxX = contains0 ? 1 : Math.max(startX, startX * cutout, endX, endX * cutout);\r\n\t\t\tvar maxY = contains90 ? 1 : Math.max(startY, startY * cutout, endY, endY * cutout);\r\n\t\t\tratioX = (maxX - minX) / 2;\r\n\t\t\tratioY = (maxY - minY) / 2;\r\n\t\t\toffsetX = -(maxX + minX) / 2;\r\n\t\t\toffsetY = -(maxY + minY) / 2;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tarcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\r\n\t\t}\r\n\r\n\t\tchart.borderWidth = me.getMaxBorderWidth();\r\n\t\tmaxWidth = (chartArea.right - chartArea.left - chart.borderWidth) / ratioX;\r\n\t\tmaxHeight = (chartArea.bottom - chartArea.top - chart.borderWidth) / ratioY;\r\n\t\tchart.outerRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\r\n\t\tchart.innerRadius = Math.max(chart.outerRadius * cutout, 0);\r\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / (me._getVisibleDatasetWeightTotal() || 1);\r\n\t\tchart.offsetX = offsetX * chart.outerRadius;\r\n\t\tchart.offsetY = offsetY * chart.outerRadius;\r\n\r\n\t\tmeta.total = me.calculateTotal();\r\n\r\n\t\tme.outerRadius = chart.outerRadius - chart.radiusLength * me._getRingWeightOffset(me.index);\r\n\t\tme.innerRadius = Math.max(me.outerRadius - chart.radiusLength * chartWeight, 0);\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(arcs[i], i, reset);\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(arc, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar chartArea = chart.chartArea;\r\n\t\tvar opts = chart.options;\r\n\t\tvar animationOpts = opts.animation;\r\n\t\tvar centerX = (chartArea.left + chartArea.right) / 2;\r\n\t\tvar centerY = (chartArea.top + chartArea.bottom) / 2;\r\n\t\tvar startAngle = opts.rotation; // non reset case handled later\r\n\t\tvar endAngle = opts.rotation; // non reset case handled later\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / DOUBLE_PI$1);\r\n\t\tvar innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\r\n\t\tvar outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\r\n\t\tvar options = arc._options || {};\r\n\r\n\t\thelpers$1.extend(arc, {\r\n\t\t\t// Utility\r\n\t\t\t_datasetIndex: me.index,\r\n\t\t\t_index: index,\r\n\r\n\t\t\t// Desired view properties\r\n\t\t\t_model: {\r\n\t\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\t\tborderColor: options.borderColor,\r\n\t\t\t\tborderWidth: options.borderWidth,\r\n\t\t\t\tborderAlign: options.borderAlign,\r\n\t\t\t\tx: centerX + chart.offsetX,\r\n\t\t\t\ty: centerY + chart.offsetY,\r\n\t\t\t\tstartAngle: startAngle,\r\n\t\t\t\tendAngle: endAngle,\r\n\t\t\t\tcircumference: circumference,\r\n\t\t\t\touterRadius: outerRadius,\r\n\t\t\t\tinnerRadius: innerRadius,\r\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvar model = arc._model;\r\n\r\n\t\t// Set correct angles if not resetting\r\n\t\tif (!reset || !animationOpts.animateRotate) {\r\n\t\t\tif (index === 0) {\r\n\t\t\t\tmodel.startAngle = opts.rotation;\r\n\t\t\t} else {\r\n\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\r\n\t\t\t}\r\n\r\n\t\t\tmodel.endAngle = model.startAngle + model.circumference;\r\n\t\t}\r\n\r\n\t\tarc.pivot();\r\n\t},\r\n\r\n\tcalculateTotal: function() {\r\n\t\tvar dataset = this.getDataset();\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar total = 0;\r\n\t\tvar value;\r\n\r\n\t\thelpers$1.each(meta.data, function(element, index) {\r\n\t\t\tvalue = dataset.data[index];\r\n\t\t\tif (!isNaN(value) && !element.hidden) {\r\n\t\t\t\ttotal += Math.abs(value);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t/* if (total === 0) {\r\n\t\t\ttotal = NaN;\r\n\t\t}*/\r\n\r\n\t\treturn total;\r\n\t},\r\n\r\n\tcalculateCircumference: function(value) {\r\n\t\tvar total = this.getMeta().total;\r\n\t\tif (total > 0 && !isNaN(value)) {\r\n\t\t\treturn DOUBLE_PI$1 * (Math.abs(value) / total);\r\n\t\t}\r\n\t\treturn 0;\r\n\t},\r\n\r\n\t// gets the max border or hover width to properly scale pie charts\r\n\tgetMaxBorderWidth: function(arcs) {\r\n\t\tvar me = this;\r\n\t\tvar max = 0;\r\n\t\tvar chart = me.chart;\r\n\t\tvar i, ilen, meta, arc, controller, options, borderWidth, hoverWidth;\r\n\r\n\t\tif (!arcs) {\r\n\t\t\t// Find the outmost visible dataset\r\n\t\t\tfor (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\r\n\t\t\t\tif (chart.isDatasetVisible(i)) {\r\n\t\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\t\tarcs = meta.data;\r\n\t\t\t\t\tif (i !== me.index) {\r\n\t\t\t\t\t\tcontroller = meta.controller;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!arcs) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tarc = arcs[i];\r\n\t\t\tif (controller) {\r\n\t\t\t\tcontroller._configure();\r\n\t\t\t\toptions = controller._resolveDataElementOptions(arc, i);\r\n\t\t\t} else {\r\n\t\t\t\toptions = arc._options;\r\n\t\t\t}\r\n\t\t\tif (options.borderAlign !== 'inner') {\r\n\t\t\t\tborderWidth = options.borderWidth;\r\n\t\t\t\thoverWidth = options.hoverBorderWidth;\r\n\r\n\t\t\t\tmax = borderWidth > max ? borderWidth : max;\r\n\t\t\t\tmax = hoverWidth > max ? hoverWidth : max;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn max;\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(arc) {\r\n\t\tvar model = arc._model;\r\n\t\tvar options = arc._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tarc.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$5(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$5(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$5(options.hoverBorderWidth, options.borderWidth);\r\n\t},\r\n\r\n\t/**\r\n\t * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly\r\n\t * @private\r\n\t */\r\n\t_getRingWeightOffset: function(datasetIndex) {\r\n\t\tvar ringWeightOffset = 0;\r\n\r\n\t\tfor (var i = 0; i < datasetIndex; ++i) {\r\n\t\t\tif (this.chart.isDatasetVisible(i)) {\r\n\t\t\t\tringWeightOffset += this._getRingWeight(i);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn ringWeightOffset;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getRingWeight: function(dataSetIndex) {\r\n\t\treturn Math.max(valueOrDefault$5(this.chart.data.datasets[dataSetIndex].weight, 1), 0);\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the sum of all visibile data set weights. This value can be 0.\r\n\t * @private\r\n\t */\r\n\t_getVisibleDatasetWeightTotal: function() {\r\n\t\treturn this._getRingWeightOffset(this.chart.data.datasets.length);\r\n\t}\r\n});\n\ncore_defaults._set('horizontalBar', {\r\n\thover: {\r\n\t\tmode: 'index',\r\n\t\taxis: 'y'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'bottom'\r\n\t\t}],\r\n\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'category',\r\n\t\t\tposition: 'left',\r\n\t\t\toffset: true,\r\n\t\t\tgridLines: {\r\n\t\t\t\toffsetGridLines: true\r\n\t\t\t}\r\n\t\t}]\r\n\t},\r\n\r\n\telements: {\r\n\t\trectangle: {\r\n\t\t\tborderSkipped: 'left'\r\n\t\t}\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tmode: 'index',\r\n\t\taxis: 'y'\r\n\t}\r\n});\r\n\r\ncore_defaults._set('global', {\r\n\tdatasets: {\r\n\t\thorizontalBar: {\r\n\t\t\tcategoryPercentage: 0.8,\r\n\t\t\tbarPercentage: 0.9\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_horizontalBar = controller_bar.extend({\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.getMeta().xAxisID;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.getMeta().yAxisID;\r\n\t}\r\n});\n\nvar valueOrDefault$6 = helpers$1.valueOrDefault;\r\nvar resolve$2 = helpers$1.options.resolve;\r\nvar isPointInArea = helpers$1.canvas._isPointInArea;\r\n\r\ncore_defaults._set('line', {\r\n\tshowLines: true,\r\n\tspanGaps: false,\r\n\r\n\thover: {\r\n\t\tmode: 'label'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'category',\r\n\t\t\tid: 'x-axis-0'\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tid: 'y-axis-0'\r\n\t\t}]\r\n\t}\r\n});\r\n\r\nfunction scaleClip(scale, halfBorderWidth) {\r\n\tvar tickOpts = scale && scale.options.ticks || {};\r\n\tvar reverse = tickOpts.reverse;\r\n\tvar min = tickOpts.min === undefined ? halfBorderWidth : 0;\r\n\tvar max = tickOpts.max === undefined ? halfBorderWidth : 0;\r\n\treturn {\r\n\t\tstart: reverse ? max : min,\r\n\t\tend: reverse ? min : max\r\n\t};\r\n}\r\n\r\nfunction defaultClip(xScale, yScale, borderWidth) {\r\n\tvar halfBorderWidth = borderWidth / 2;\r\n\tvar x = scaleClip(xScale, halfBorderWidth);\r\n\tvar y = scaleClip(yScale, halfBorderWidth);\r\n\r\n\treturn {\r\n\t\ttop: y.end,\r\n\t\tright: x.end,\r\n\t\tbottom: y.start,\r\n\t\tleft: x.start\r\n\t};\r\n}\r\n\r\nfunction toClip(value) {\r\n\tvar t, r, b, l;\r\n\r\n\tif (helpers$1.isObject(value)) {\r\n\t\tt = value.top;\r\n\t\tr = value.right;\r\n\t\tb = value.bottom;\r\n\t\tl = value.left;\r\n\t} else {\r\n\t\tt = r = b = l = value;\r\n\t}\r\n\r\n\treturn {\r\n\t\ttop: t,\r\n\t\tright: r,\r\n\t\tbottom: b,\r\n\t\tleft: l\r\n\t};\r\n}\r\n\r\n\r\nvar controller_line = core_datasetController.extend({\r\n\r\n\tdatasetElementType: elements.Line,\r\n\r\n\tdataElementType: elements.Point,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_datasetElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderCapStyle',\r\n\t\t'borderColor',\r\n\t\t'borderDash',\r\n\t\t'borderDashOffset',\r\n\t\t'borderJoinStyle',\r\n\t\t'borderWidth',\r\n\t\t'cubicInterpolationMode',\r\n\t\t'fill'\r\n\t],\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: {\r\n\t\tbackgroundColor: 'pointBackgroundColor',\r\n\t\tborderColor: 'pointBorderColor',\r\n\t\tborderWidth: 'pointBorderWidth',\r\n\t\thitRadius: 'pointHitRadius',\r\n\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\r\n\t\thoverBorderColor: 'pointHoverBorderColor',\r\n\t\thoverBorderWidth: 'pointHoverBorderWidth',\r\n\t\thoverRadius: 'pointHoverRadius',\r\n\t\tpointStyle: 'pointStyle',\r\n\t\tradius: 'pointRadius',\r\n\t\trotation: 'pointRotation'\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar line = meta.dataset;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar options = me.chart.options;\r\n\t\tvar config = me._config;\r\n\t\tvar showLine = me._showLine = valueOrDefault$6(config.showLine, options.showLines);\r\n\t\tvar i, ilen;\r\n\r\n\t\tme._xScale = me.getScaleForId(meta.xAxisID);\r\n\t\tme._yScale = me.getScaleForId(meta.yAxisID);\r\n\r\n\t\t// Update Line\r\n\t\tif (showLine) {\r\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\t\tif (config.tension !== undefined && config.lineTension === undefined) {\r\n\t\t\t\tconfig.lineTension = config.tension;\r\n\t\t\t}\r\n\r\n\t\t\t// Utility\r\n\t\t\tline._scale = me._yScale;\r\n\t\t\tline._datasetIndex = me.index;\r\n\t\t\t// Data\r\n\t\t\tline._children = points;\r\n\t\t\t// Model\r\n\t\t\tline._model = me._resolveDatasetElementOptions(line);\r\n\r\n\t\t\tline.pivot();\r\n\t\t}\r\n\r\n\t\t// Update Points\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(points[i], i, reset);\r\n\t\t}\r\n\r\n\t\tif (showLine && line._model.tension !== 0) {\r\n\t\t\tme.updateBezierControlPoints();\r\n\t\t}\r\n\r\n\t\t// Now pivot the point for animation\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tpoints[i].pivot();\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(point, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar datasetIndex = me.index;\r\n\t\tvar value = dataset.data[index];\r\n\t\tvar xScale = me._xScale;\r\n\t\tvar yScale = me._yScale;\r\n\t\tvar lineModel = meta.dataset._model;\r\n\t\tvar x, y;\r\n\r\n\t\tvar options = me._resolveDataElementOptions(point, index);\r\n\r\n\t\tx = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\r\n\t\ty = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\r\n\r\n\t\t// Utility\r\n\t\tpoint._xScale = xScale;\r\n\t\tpoint._yScale = yScale;\r\n\t\tpoint._options = options;\r\n\t\tpoint._datasetIndex = datasetIndex;\r\n\t\tpoint._index = index;\r\n\r\n\t\t// Desired view properties\r\n\t\tpoint._model = {\r\n\t\t\tx: x,\r\n\t\t\ty: y,\r\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\t// Appearance\r\n\t\t\tradius: options.radius,\r\n\t\t\tpointStyle: options.pointStyle,\r\n\t\t\trotation: options.rotation,\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\ttension: valueOrDefault$6(custom.tension, lineModel ? lineModel.tension : 0),\r\n\t\t\tsteppedLine: lineModel ? lineModel.steppedLine : false,\r\n\t\t\t// Tooltip\r\n\t\t\thitRadius: options.hitRadius\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDatasetElementOptions: function(element) {\r\n\t\tvar me = this;\r\n\t\tvar config = me._config;\r\n\t\tvar custom = element.custom || {};\r\n\t\tvar options = me.chart.options;\r\n\t\tvar lineOptions = options.elements.line;\r\n\t\tvar values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\r\n\r\n\t\t// The default behavior of lines is to break at null values, according\r\n\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\r\n\t\t// This option gives lines the ability to span gaps\r\n\t\tvalues.spanGaps = valueOrDefault$6(config.spanGaps, options.spanGaps);\r\n\t\tvalues.tension = valueOrDefault$6(config.lineTension, lineOptions.tension);\r\n\t\tvalues.steppedLine = resolve$2([custom.steppedLine, config.steppedLine, lineOptions.stepped]);\r\n\t\tvalues.clip = toClip(valueOrDefault$6(config.clip, defaultClip(me._xScale, me._yScale, values.borderWidth)));\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\tcalculatePointY: function(value, index, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar yScale = me._yScale;\r\n\t\tvar sumPos = 0;\r\n\t\tvar sumNeg = 0;\r\n\t\tvar i, ds, dsMeta, stackedRightValue, rightValue, metasets, ilen;\r\n\r\n\t\tif (yScale.options.stacked) {\r\n\t\t\trightValue = +yScale.getRightValue(value);\r\n\t\t\tmetasets = chart._getSortedVisibleDatasetMetas();\r\n\t\t\tilen = metasets.length;\r\n\r\n\t\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\t\tdsMeta = metasets[i];\r\n\t\t\t\tif (dsMeta.index === datasetIndex) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tds = chart.data.datasets[dsMeta.index];\r\n\t\t\t\tif (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id) {\r\n\t\t\t\t\tstackedRightValue = +yScale.getRightValue(ds.data[index]);\r\n\t\t\t\t\tif (stackedRightValue < 0) {\r\n\t\t\t\t\t\tsumNeg += stackedRightValue || 0;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsumPos += stackedRightValue || 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (rightValue < 0) {\r\n\t\t\t\treturn yScale.getPixelForValue(sumNeg + rightValue);\r\n\t\t\t}\r\n\t\t\treturn yScale.getPixelForValue(sumPos + rightValue);\r\n\t\t}\r\n\t\treturn yScale.getPixelForValue(value);\r\n\t},\r\n\r\n\tupdateBezierControlPoints: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar lineModel = meta.dataset._model;\r\n\t\tvar area = chart.chartArea;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar i, ilen, model, controlPoints;\r\n\r\n\t\t// Only consider points that are drawn in case the spanGaps option is used\r\n\t\tif (lineModel.spanGaps) {\r\n\t\t\tpoints = points.filter(function(pt) {\r\n\t\t\t\treturn !pt._model.skip;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction capControlPoint(pt, min, max) {\r\n\t\t\treturn Math.max(Math.min(pt, max), min);\r\n\t\t}\r\n\r\n\t\tif (lineModel.cubicInterpolationMode === 'monotone') {\r\n\t\t\thelpers$1.splineCurveMonotone(points);\r\n\t\t} else {\r\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\tmodel = points[i]._model;\r\n\t\t\t\tcontrolPoints = helpers$1.splineCurve(\r\n\t\t\t\t\thelpers$1.previousItem(points, i)._model,\r\n\t\t\t\t\tmodel,\r\n\t\t\t\t\thelpers$1.nextItem(points, i)._model,\r\n\t\t\t\t\tlineModel.tension\r\n\t\t\t\t);\r\n\t\t\t\tmodel.controlPointPreviousX = controlPoints.previous.x;\r\n\t\t\t\tmodel.controlPointPreviousY = controlPoints.previous.y;\r\n\t\t\t\tmodel.controlPointNextX = controlPoints.next.x;\r\n\t\t\t\tmodel.controlPointNextY = controlPoints.next.y;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (chart.options.elements.line.capBezierPoints) {\r\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\tmodel = points[i]._model;\r\n\t\t\t\tif (isPointInArea(model, area)) {\r\n\t\t\t\t\tif (i > 0 && isPointInArea(points[i - 1]._model, area)) {\r\n\t\t\t\t\t\tmodel.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\r\n\t\t\t\t\t\tmodel.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (i < points.length - 1 && isPointInArea(points[i + 1]._model, area)) {\r\n\t\t\t\t\t\tmodel.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\r\n\t\t\t\t\t\tmodel.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar points = meta.data || [];\r\n\t\tvar area = chart.chartArea;\r\n\t\tvar canvas = chart.canvas;\r\n\t\tvar i = 0;\r\n\t\tvar ilen = points.length;\r\n\t\tvar clip;\r\n\r\n\t\tif (me._showLine) {\r\n\t\t\tclip = meta.dataset._model.clip;\r\n\r\n\t\t\thelpers$1.canvas.clipArea(chart.ctx, {\r\n\t\t\t\tleft: clip.left === false ? 0 : area.left - clip.left,\r\n\t\t\t\tright: clip.right === false ? canvas.width : area.right + clip.right,\r\n\t\t\t\ttop: clip.top === false ? 0 : area.top - clip.top,\r\n\t\t\t\tbottom: clip.bottom === false ? canvas.height : area.bottom + clip.bottom\r\n\t\t\t});\r\n\r\n\t\t\tmeta.dataset.draw();\r\n\r\n\t\t\thelpers$1.canvas.unclipArea(chart.ctx);\r\n\t\t}\r\n\r\n\t\t// Draw the points\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tpoints[i].draw(area);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(point) {\r\n\t\tvar model = point._model;\r\n\t\tvar options = point._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tpoint.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t\tradius: model.radius\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$6(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$6(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$6(options.hoverBorderWidth, options.borderWidth);\r\n\t\tmodel.radius = valueOrDefault$6(options.hoverRadius, options.radius);\r\n\t},\r\n});\n\nvar resolve$3 = helpers$1.options.resolve;\r\n\r\ncore_defaults._set('polarArea', {\r\n\tscale: {\r\n\t\ttype: 'radialLinear',\r\n\t\tangleLines: {\r\n\t\t\tdisplay: false\r\n\t\t},\r\n\t\tgridLines: {\r\n\t\t\tcircular: true\r\n\t\t},\r\n\t\tpointLabels: {\r\n\t\t\tdisplay: false\r\n\t\t},\r\n\t\tticks: {\r\n\t\t\tbeginAtZero: true\r\n\t\t}\r\n\t},\r\n\r\n\t// Boolean - Whether to animate the rotation of the chart\r\n\tanimation: {\r\n\t\tanimateRotate: true,\r\n\t\tanimateScale: true\r\n\t},\r\n\r\n\tstartAngle: -0.5 * Math.PI,\r\n\tlegendCallback: function(chart) {\r\n\t\tvar list = document.createElement('ul');\r\n\t\tvar data = chart.data;\r\n\t\tvar datasets = data.datasets;\r\n\t\tvar labels = data.labels;\r\n\t\tvar i, ilen, listItem, listItemSpan;\r\n\r\n\t\tlist.setAttribute('class', chart.id + '-legend');\r\n\t\tif (datasets.length) {\r\n\t\t\tfor (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\r\n\t\t\t\tlistItem = list.appendChild(document.createElement('li'));\r\n\t\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\r\n\t\t\t\tlistItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\r\n\t\t\t\tif (labels[i]) {\r\n\t\t\t\t\tlistItem.appendChild(document.createTextNode(labels[i]));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn list.outerHTML;\r\n\t},\r\n\tlegend: {\r\n\t\tlabels: {\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar data = chart.data;\r\n\t\t\t\tif (data.labels.length && data.datasets.length) {\r\n\t\t\t\t\treturn data.labels.map(function(label, i) {\r\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\r\n\t\t\t\t\t\tvar style = meta.controller.getStyle(i);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\ttext: label,\r\n\t\t\t\t\t\t\tfillStyle: style.backgroundColor,\r\n\t\t\t\t\t\t\tstrokeStyle: style.borderColor,\r\n\t\t\t\t\t\t\tlineWidth: style.borderWidth,\r\n\t\t\t\t\t\t\thidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\r\n\r\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\r\n\t\t\t\t\t\t\tindex: i\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.index;\r\n\t\t\tvar chart = this.chart;\r\n\t\t\tvar i, ilen, meta;\r\n\r\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\r\n\t\t\t}\r\n\r\n\t\t\tchart.update();\r\n\t\t}\r\n\t},\r\n\r\n\t// Need to override these to give a nice default\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(item, data) {\r\n\t\t\t\treturn data.labels[item.index] + ': ' + item.yLabel;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_polarArea = core_datasetController.extend({\r\n\r\n\tdataElementType: elements.Arc,\r\n\r\n\tlinkScales: helpers$1.noop,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'borderAlign',\r\n\t\t'hoverBackgroundColor',\r\n\t\t'hoverBorderColor',\r\n\t\t'hoverBorderWidth',\r\n\t],\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar start = me.chart.options.startAngle || 0;\r\n\t\tvar starts = me._starts = [];\r\n\t\tvar angles = me._angles = [];\r\n\t\tvar arcs = meta.data;\r\n\t\tvar i, ilen, angle;\r\n\r\n\t\tme._updateRadius();\r\n\r\n\t\tmeta.count = me.countVisibleElements();\r\n\r\n\t\tfor (i = 0, ilen = dataset.data.length; i < ilen; i++) {\r\n\t\t\tstarts[i] = start;\r\n\t\t\tangle = me._computeAngle(i);\r\n\t\t\tangles[i] = angle;\r\n\t\t\tstart += angle;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tarcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\r\n\t\t\tme.updateElement(arcs[i], i, reset);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_updateRadius: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar chartArea = chart.chartArea;\r\n\t\tvar opts = chart.options;\r\n\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\r\n\r\n\t\tchart.outerRadius = Math.max(minSize / 2, 0);\r\n\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\r\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\r\n\r\n\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\r\n\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\r\n\t},\r\n\r\n\tupdateElement: function(arc, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar opts = chart.options;\r\n\t\tvar animationOpts = opts.animation;\r\n\t\tvar scale = chart.scale;\r\n\t\tvar labels = chart.data.labels;\r\n\r\n\t\tvar centerX = scale.xCenter;\r\n\t\tvar centerY = scale.yCenter;\r\n\r\n\t\t// var negHalfPI = -0.5 * Math.PI;\r\n\t\tvar datasetStartAngle = opts.startAngle;\r\n\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\r\n\t\tvar startAngle = me._starts[index];\r\n\t\tvar endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\r\n\r\n\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\r\n\t\tvar options = arc._options || {};\r\n\r\n\t\thelpers$1.extend(arc, {\r\n\t\t\t// Utility\r\n\t\t\t_datasetIndex: me.index,\r\n\t\t\t_index: index,\r\n\t\t\t_scale: scale,\r\n\r\n\t\t\t// Desired view properties\r\n\t\t\t_model: {\r\n\t\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\t\tborderColor: options.borderColor,\r\n\t\t\t\tborderWidth: options.borderWidth,\r\n\t\t\t\tborderAlign: options.borderAlign,\r\n\t\t\t\tx: centerX,\r\n\t\t\t\ty: centerY,\r\n\t\t\t\tinnerRadius: 0,\r\n\t\t\t\touterRadius: reset ? resetRadius : distance,\r\n\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\r\n\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\r\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(labels, index, labels[index])\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tarc.pivot();\r\n\t},\r\n\r\n\tcountVisibleElements: function() {\r\n\t\tvar dataset = this.getDataset();\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar count = 0;\r\n\r\n\t\thelpers$1.each(meta.data, function(element, index) {\r\n\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\r\n\t\t\t\tcount++;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn count;\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(arc) {\r\n\t\tvar model = arc._model;\r\n\t\tvar options = arc._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\t\tvar valueOrDefault = helpers$1.valueOrDefault;\r\n\r\n\t\tarc.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault(options.hoverBorderWidth, options.borderWidth);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_computeAngle: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar count = this.getMeta().count;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar meta = me.getMeta();\r\n\r\n\t\tif (isNaN(dataset.data[index]) || meta.data[index].hidden) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: me.chart,\r\n\t\t\tdataIndex: index,\r\n\t\t\tdataset: dataset,\r\n\t\t\tdatasetIndex: me.index\r\n\t\t};\r\n\r\n\t\treturn resolve$3([\r\n\t\t\tme.chart.options.elements.arc.angle,\r\n\t\t\t(2 * Math.PI) / count\r\n\t\t], context, index);\r\n\t}\r\n});\n\ncore_defaults._set('pie', helpers$1.clone(core_defaults.doughnut));\r\ncore_defaults._set('pie', {\r\n\tcutoutPercentage: 0\r\n});\r\n\r\n// Pie charts are Doughnut chart with different defaults\r\nvar controller_pie = controller_doughnut;\n\nvar valueOrDefault$7 = helpers$1.valueOrDefault;\r\n\r\ncore_defaults._set('radar', {\r\n\tspanGaps: false,\r\n\tscale: {\r\n\t\ttype: 'radialLinear'\r\n\t},\r\n\telements: {\r\n\t\tline: {\r\n\t\t\tfill: 'start',\r\n\t\t\ttension: 0 // no bezier in radar\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_radar = core_datasetController.extend({\r\n\tdatasetElementType: elements.Line,\r\n\r\n\tdataElementType: elements.Point,\r\n\r\n\tlinkScales: helpers$1.noop,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_datasetElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderWidth',\r\n\t\t'borderColor',\r\n\t\t'borderCapStyle',\r\n\t\t'borderDash',\r\n\t\t'borderDashOffset',\r\n\t\t'borderJoinStyle',\r\n\t\t'fill'\r\n\t],\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: {\r\n\t\tbackgroundColor: 'pointBackgroundColor',\r\n\t\tborderColor: 'pointBorderColor',\r\n\t\tborderWidth: 'pointBorderWidth',\r\n\t\thitRadius: 'pointHitRadius',\r\n\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\r\n\t\thoverBorderColor: 'pointHoverBorderColor',\r\n\t\thoverBorderWidth: 'pointHoverBorderWidth',\r\n\t\thoverRadius: 'pointHoverRadius',\r\n\t\tpointStyle: 'pointStyle',\r\n\t\tradius: 'pointRadius',\r\n\t\trotation: 'pointRotation'\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar line = meta.dataset;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar scale = me.chart.scale;\r\n\t\tvar config = me._config;\r\n\t\tvar i, ilen;\r\n\r\n\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\tif (config.tension !== undefined && config.lineTension === undefined) {\r\n\t\t\tconfig.lineTension = config.tension;\r\n\t\t}\r\n\r\n\t\t// Utility\r\n\t\tline._scale = scale;\r\n\t\tline._datasetIndex = me.index;\r\n\t\t// Data\r\n\t\tline._children = points;\r\n\t\tline._loop = true;\r\n\t\t// Model\r\n\t\tline._model = me._resolveDatasetElementOptions(line);\r\n\r\n\t\tline.pivot();\r\n\r\n\t\t// Update Points\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(points[i], i, reset);\r\n\t\t}\r\n\r\n\t\t// Update bezier control points\r\n\t\tme.updateBezierControlPoints();\r\n\r\n\t\t// Now pivot the point for animation\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tpoints[i].pivot();\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(point, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar scale = me.chart.scale;\r\n\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\r\n\t\tvar options = me._resolveDataElementOptions(point, index);\r\n\t\tvar lineModel = me.getMeta().dataset._model;\r\n\t\tvar x = reset ? scale.xCenter : pointPosition.x;\r\n\t\tvar y = reset ? scale.yCenter : pointPosition.y;\r\n\r\n\t\t// Utility\r\n\t\tpoint._scale = scale;\r\n\t\tpoint._options = options;\r\n\t\tpoint._datasetIndex = me.index;\r\n\t\tpoint._index = index;\r\n\r\n\t\t// Desired view properties\r\n\t\tpoint._model = {\r\n\t\t\tx: x, // value not used in dataset scale, but we want a consistent API between scales\r\n\t\t\ty: y,\r\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\t// Appearance\r\n\t\t\tradius: options.radius,\r\n\t\t\tpointStyle: options.pointStyle,\r\n\t\t\trotation: options.rotation,\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\ttension: valueOrDefault$7(custom.tension, lineModel ? lineModel.tension : 0),\r\n\r\n\t\t\t// Tooltip\r\n\t\t\thitRadius: options.hitRadius\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDatasetElementOptions: function() {\r\n\t\tvar me = this;\r\n\t\tvar config = me._config;\r\n\t\tvar options = me.chart.options;\r\n\t\tvar values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\r\n\r\n\t\tvalues.spanGaps = valueOrDefault$7(config.spanGaps, options.spanGaps);\r\n\t\tvalues.tension = valueOrDefault$7(config.lineTension, options.elements.line.tension);\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\tupdateBezierControlPoints: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar area = me.chart.chartArea;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar i, ilen, model, controlPoints;\r\n\r\n\t\t// Only consider points that are drawn in case the spanGaps option is used\r\n\t\tif (meta.dataset._model.spanGaps) {\r\n\t\t\tpoints = points.filter(function(pt) {\r\n\t\t\t\treturn !pt._model.skip;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction capControlPoint(pt, min, max) {\r\n\t\t\treturn Math.max(Math.min(pt, max), min);\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tmodel = points[i]._model;\r\n\t\t\tcontrolPoints = helpers$1.splineCurve(\r\n\t\t\t\thelpers$1.previousItem(points, i, true)._model,\r\n\t\t\t\tmodel,\r\n\t\t\t\thelpers$1.nextItem(points, i, true)._model,\r\n\t\t\t\tmodel.tension\r\n\t\t\t);\r\n\r\n\t\t\t// Prevent the bezier going outside of the bounds of the graph\r\n\t\t\tmodel.controlPointPreviousX = capControlPoint(controlPoints.previous.x, area.left, area.right);\r\n\t\t\tmodel.controlPointPreviousY = capControlPoint(controlPoints.previous.y, area.top, area.bottom);\r\n\t\t\tmodel.controlPointNextX = capControlPoint(controlPoints.next.x, area.left, area.right);\r\n\t\t\tmodel.controlPointNextY = capControlPoint(controlPoints.next.y, area.top, area.bottom);\r\n\t\t}\r\n\t},\r\n\r\n\tsetHoverStyle: function(point) {\r\n\t\tvar model = point._model;\r\n\t\tvar options = point._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tpoint.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t\tradius: model.radius\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$7(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$7(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$7(options.hoverBorderWidth, options.borderWidth);\r\n\t\tmodel.radius = valueOrDefault$7(options.hoverRadius, options.radius);\r\n\t}\r\n});\n\ncore_defaults._set('scatter', {\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\tid: 'x-axis-1', // need an ID so datasets can reference the scale\r\n\t\t\ttype: 'linear', // scatter should not use a category axis\r\n\t\t\tposition: 'bottom'\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\tid: 'y-axis-1',\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'left'\r\n\t\t}]\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn ''; // doesn't make sense for scatter since data are formatted as a point\r\n\t\t\t},\r\n\t\t\tlabel: function(item) {\r\n\t\t\t\treturn '(' + item.xLabel + ', ' + item.yLabel + ')';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\ncore_defaults._set('global', {\r\n\tdatasets: {\r\n\t\tscatter: {\r\n\t\t\tshowLine: false\r\n\t\t}\r\n\t}\r\n});\r\n\r\n// Scatter charts use line controllers\r\nvar controller_scatter = controller_line;\n\n// NOTE export a map in which the key represents the controller type, not\r\n// the class, and so must be CamelCase in order to be correctly retrieved\r\n// by the controller in core.controller.js (`controllers[meta.type]`).\r\n\r\nvar controllers = {\r\n\tbar: controller_bar,\r\n\tbubble: controller_bubble,\r\n\tdoughnut: controller_doughnut,\r\n\thorizontalBar: controller_horizontalBar,\r\n\tline: controller_line,\r\n\tpolarArea: controller_polarArea,\r\n\tpie: controller_pie,\r\n\tradar: controller_radar,\r\n\tscatter: controller_scatter\r\n};\n\n/**\r\n * Helper function to get relative position for an event\r\n * @param {Event|IEvent} event - The event to get the position for\r\n * @param {Chart} chart - The chart\r\n * @returns {object} the event position\r\n */\r\nfunction getRelativePosition(e, chart) {\r\n\tif (e.native) {\r\n\t\treturn {\r\n\t\t\tx: e.x,\r\n\t\t\ty: e.y\r\n\t\t};\r\n\t}\r\n\r\n\treturn helpers$1.getRelativePosition(e, chart);\r\n}\r\n\r\n/**\r\n * Helper function to traverse all of the visible elements in the chart\r\n * @param {Chart} chart - the chart\r\n * @param {function} handler - the callback to execute for each visible item\r\n */\r\nfunction parseVisibleItems(chart, handler) {\r\n\tvar metasets = chart._getSortedVisibleDatasetMetas();\r\n\tvar metadata, i, j, ilen, jlen, element;\r\n\r\n\tfor (i = 0, ilen = metasets.length; i < ilen; ++i) {\r\n\t\tmetadata = metasets[i].data;\r\n\t\tfor (j = 0, jlen = metadata.length; j < jlen; ++j) {\r\n\t\t\telement = metadata[j];\r\n\t\t\tif (!element._view.skip) {\r\n\t\t\t\thandler(element);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Helper function to get the items that intersect the event position\r\n * @param {ChartElement[]} items - elements to filter\r\n * @param {object} position - the point to be nearest to\r\n * @return {ChartElement[]} the nearest items\r\n */\r\nfunction getIntersectItems(chart, position) {\r\n\tvar elements = [];\r\n\r\n\tparseVisibleItems(chart, function(element) {\r\n\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\telements.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn elements;\r\n}\r\n\r\n/**\r\n * Helper function to get the items nearest to the event position considering all visible items in teh chart\r\n * @param {Chart} chart - the chart to look at elements from\r\n * @param {object} position - the point to be nearest to\r\n * @param {boolean} intersect - if true, only consider items that intersect the position\r\n * @param {function} distanceMetric - function to provide the distance between points\r\n * @return {ChartElement[]} the nearest items\r\n */\r\nfunction getNearestItems(chart, position, intersect, distanceMetric) {\r\n\tvar minDistance = Number.POSITIVE_INFINITY;\r\n\tvar nearestItems = [];\r\n\r\n\tparseVisibleItems(chart, function(element) {\r\n\t\tif (intersect && !element.inRange(position.x, position.y)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar center = element.getCenterPoint();\r\n\t\tvar distance = distanceMetric(position, center);\r\n\t\tif (distance < minDistance) {\r\n\t\t\tnearestItems = [element];\r\n\t\t\tminDistance = distance;\r\n\t\t} else if (distance === minDistance) {\r\n\t\t\t// Can have multiple items at the same distance in which case we sort by size\r\n\t\t\tnearestItems.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn nearestItems;\r\n}\r\n\r\n/**\r\n * Get a distance metric function for two points based on the\r\n * axis mode setting\r\n * @param {string} axis - the axis mode. x|y|xy\r\n */\r\nfunction getDistanceMetricForAxis(axis) {\r\n\tvar useX = axis.indexOf('x') !== -1;\r\n\tvar useY = axis.indexOf('y') !== -1;\r\n\r\n\treturn function(pt1, pt2) {\r\n\t\tvar deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\r\n\t\tvar deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\r\n\t\treturn Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\r\n\t};\r\n}\r\n\r\nfunction indexMode(chart, e, options) {\r\n\tvar position = getRelativePosition(e, chart);\r\n\t// Default axis for index mode is 'x' to match old behaviour\r\n\toptions.axis = options.axis || 'x';\r\n\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\r\n\tvar elements = [];\r\n\r\n\tif (!items.length) {\r\n\t\treturn [];\r\n\t}\r\n\r\n\tchart._getSortedVisibleDatasetMetas().forEach(function(meta) {\r\n\t\tvar element = meta.data[items[0]._index];\r\n\r\n\t\t// don't count items that are skipped (null data)\r\n\t\tif (element && !element._view.skip) {\r\n\t\t\telements.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn elements;\r\n}\r\n\r\n/**\r\n * @interface IInteractionOptions\r\n */\r\n/**\r\n * If true, only consider items that intersect the point\r\n * @name IInterfaceOptions#boolean\r\n * @type Boolean\r\n */\r\n\r\n/**\r\n * Contains interaction related functions\r\n * @namespace Chart.Interaction\r\n */\r\nvar core_interaction = {\r\n\t// Helper function for different modes\r\n\tmodes: {\r\n\t\tsingle: function(chart, e) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar elements = [];\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\telements.push(element);\r\n\t\t\t\t\treturn elements;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn elements.slice(0, 1);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @function Chart.Interaction.modes.label\r\n\t\t * @deprecated since version 2.4.0\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\tlabel: indexMode,\r\n\r\n\t\t/**\r\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\r\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\r\n\t\t * @function Chart.Interaction.modes.index\r\n\t\t * @since v2.4.0\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use during interaction\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tindex: indexMode,\r\n\r\n\t\t/**\r\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\r\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\r\n\t\t * @function Chart.Interaction.modes.dataset\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use during interaction\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tdataset: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\toptions.axis = options.axis || 'xy';\r\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\t\t\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\r\n\r\n\t\t\tif (items.length > 0) {\r\n\t\t\t\titems = chart.getDatasetMeta(items[0]._datasetIndex).data;\r\n\t\t\t}\r\n\r\n\t\t\treturn items;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @function Chart.Interaction.modes.x-axis\r\n\t\t * @deprecated since version 2.4.0. Use index mode and intersect == true\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\t'x-axis': function(chart, e) {\r\n\t\t\treturn indexMode(chart, e, {intersect: false});\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Point mode returns all elements that hit test based on the event position\r\n\t\t * of the event\r\n\t\t * @function Chart.Interaction.modes.intersect\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tpoint: function(chart, e) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\treturn getIntersectItems(chart, position);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * nearest mode returns the element closest to the point\r\n\t\t * @function Chart.Interaction.modes.intersect\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tnearest: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\toptions.axis = options.axis || 'xy';\r\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\t\t\treturn getNearestItems(chart, position, options.intersect, distanceMetric);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * x mode returns the elements that hit-test at the current x coordinate\r\n\t\t * @function Chart.Interaction.modes.x\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tx: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar items = [];\r\n\t\t\tvar intersectsItem = false;\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inXRange(position.x)) {\r\n\t\t\t\t\titems.push(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\tintersectsItem = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// If we want to trigger on an intersect and we don't have any items\r\n\t\t\t// that intersect the position, return nothing\r\n\t\t\tif (options.intersect && !intersectsItem) {\r\n\t\t\t\titems = [];\r\n\t\t\t}\r\n\t\t\treturn items;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * y mode returns the elements that hit-test at the current y coordinate\r\n\t\t * @function Chart.Interaction.modes.y\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\ty: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar items = [];\r\n\t\t\tvar intersectsItem = false;\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inYRange(position.y)) {\r\n\t\t\t\t\titems.push(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\tintersectsItem = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// If we want to trigger on an intersect and we don't have any items\r\n\t\t\t// that intersect the position, return nothing\r\n\t\t\tif (options.intersect && !intersectsItem) {\r\n\t\t\t\titems = [];\r\n\t\t\t}\r\n\t\t\treturn items;\r\n\t\t}\r\n\t}\r\n};\n\nvar extend = helpers$1.extend;\r\n\r\nfunction filterByPosition(array, position) {\r\n\treturn helpers$1.where(array, function(v) {\r\n\t\treturn v.pos === position;\r\n\t});\r\n}\r\n\r\nfunction sortByWeight(array, reverse) {\r\n\treturn array.sort(function(a, b) {\r\n\t\tvar v0 = reverse ? b : a;\r\n\t\tvar v1 = reverse ? a : b;\r\n\t\treturn v0.weight === v1.weight ?\r\n\t\t\tv0.index - v1.index :\r\n\t\t\tv0.weight - v1.weight;\r\n\t});\r\n}\r\n\r\nfunction wrapBoxes(boxes) {\r\n\tvar layoutBoxes = [];\r\n\tvar i, ilen, box;\r\n\r\n\tfor (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\r\n\t\tbox = boxes[i];\r\n\t\tlayoutBoxes.push({\r\n\t\t\tindex: i,\r\n\t\t\tbox: box,\r\n\t\t\tpos: box.position,\r\n\t\t\thorizontal: box.isHorizontal(),\r\n\t\t\tweight: box.weight\r\n\t\t});\r\n\t}\r\n\treturn layoutBoxes;\r\n}\r\n\r\nfunction setLayoutDims(layouts, params) {\r\n\tvar i, ilen, layout;\r\n\tfor (i = 0, ilen = layouts.length; i < ilen; ++i) {\r\n\t\tlayout = layouts[i];\r\n\t\t// store width used instead of chartArea.w in fitBoxes\r\n\t\tlayout.width = layout.horizontal\r\n\t\t\t? layout.box.fullWidth && params.availableWidth\r\n\t\t\t: params.vBoxMaxWidth;\r\n\t\t// store height used instead of chartArea.h in fitBoxes\r\n\t\tlayout.height = layout.horizontal && params.hBoxMaxHeight;\r\n\t}\r\n}\r\n\r\nfunction buildLayoutBoxes(boxes) {\r\n\tvar layoutBoxes = wrapBoxes(boxes);\r\n\tvar left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\r\n\tvar right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\r\n\tvar top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\r\n\tvar bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\r\n\r\n\treturn {\r\n\t\tleftAndTop: left.concat(top),\r\n\t\trightAndBottom: right.concat(bottom),\r\n\t\tchartArea: filterByPosition(layoutBoxes, 'chartArea'),\r\n\t\tvertical: left.concat(right),\r\n\t\thorizontal: top.concat(bottom)\r\n\t};\r\n}\r\n\r\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\r\n\treturn Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\r\n}\r\n\r\nfunction updateDims(chartArea, params, layout) {\r\n\tvar box = layout.box;\r\n\tvar maxPadding = chartArea.maxPadding;\r\n\tvar newWidth, newHeight;\r\n\r\n\tif (layout.size) {\r\n\t\t// this layout was already counted for, lets first reduce old size\r\n\t\tchartArea[layout.pos] -= layout.size;\r\n\t}\r\n\tlayout.size = layout.horizontal ? box.height : box.width;\r\n\tchartArea[layout.pos] += layout.size;\r\n\r\n\tif (box.getPadding) {\r\n\t\tvar boxPadding = box.getPadding();\r\n\t\tmaxPadding.top = Math.max(maxPadding.top, boxPadding.top);\r\n\t\tmaxPadding.left = Math.max(maxPadding.left, boxPadding.left);\r\n\t\tmaxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\r\n\t\tmaxPadding.right = Math.max(maxPadding.right, boxPadding.right);\r\n\t}\r\n\r\n\tnewWidth = params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right');\r\n\tnewHeight = params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom');\r\n\r\n\tif (newWidth !== chartArea.w || newHeight !== chartArea.h) {\r\n\t\tchartArea.w = newWidth;\r\n\t\tchartArea.h = newHeight;\r\n\r\n\t\t// return true if chart area changed in layout's direction\r\n\t\tvar sizes = layout.horizontal ? [newWidth, chartArea.w] : [newHeight, chartArea.h];\r\n\t\treturn sizes[0] !== sizes[1] && (!isNaN(sizes[0]) || !isNaN(sizes[1]));\r\n\t}\r\n}\r\n\r\nfunction handleMaxPadding(chartArea) {\r\n\tvar maxPadding = chartArea.maxPadding;\r\n\r\n\tfunction updatePos(pos) {\r\n\t\tvar change = Math.max(maxPadding[pos] - chartArea[pos], 0);\r\n\t\tchartArea[pos] += change;\r\n\t\treturn change;\r\n\t}\r\n\tchartArea.y += updatePos('top');\r\n\tchartArea.x += updatePos('left');\r\n\tupdatePos('right');\r\n\tupdatePos('bottom');\r\n}\r\n\r\nfunction getMargins(horizontal, chartArea) {\r\n\tvar maxPadding = chartArea.maxPadding;\r\n\r\n\tfunction marginForPositions(positions) {\r\n\t\tvar margin = {left: 0, top: 0, right: 0, bottom: 0};\r\n\t\tpositions.forEach(function(pos) {\r\n\t\t\tmargin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\r\n\t\t});\r\n\t\treturn margin;\r\n\t}\r\n\r\n\treturn horizontal\r\n\t\t? marginForPositions(['left', 'right'])\r\n\t\t: marginForPositions(['top', 'bottom']);\r\n}\r\n\r\nfunction fitBoxes(boxes, chartArea, params) {\r\n\tvar refitBoxes = [];\r\n\tvar i, ilen, layout, box, refit, changed;\r\n\r\n\tfor (i = 0, ilen = boxes.length; i < ilen; ++i) {\r\n\t\tlayout = boxes[i];\r\n\t\tbox = layout.box;\r\n\r\n\t\tbox.update(\r\n\t\t\tlayout.width || chartArea.w,\r\n\t\t\tlayout.height || chartArea.h,\r\n\t\t\tgetMargins(layout.horizontal, chartArea)\r\n\t\t);\r\n\t\tif (updateDims(chartArea, params, layout)) {\r\n\t\t\tchanged = true;\r\n\t\t\tif (refitBoxes.length) {\r\n\t\t\t\t// Dimensions changed and there were non full width boxes before this\r\n\t\t\t\t// -> we have to refit those\r\n\t\t\t\trefit = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (!box.fullWidth) { // fullWidth boxes don't need to be re-fitted in any case\r\n\t\t\trefitBoxes.push(layout);\r\n\t\t}\r\n\t}\r\n\r\n\treturn refit ? fitBoxes(refitBoxes, chartArea, params) || changed : changed;\r\n}\r\n\r\nfunction placeBoxes(boxes, chartArea, params) {\r\n\tvar userPadding = params.padding;\r\n\tvar x = chartArea.x;\r\n\tvar y = chartArea.y;\r\n\tvar i, ilen, layout, box;\r\n\r\n\tfor (i = 0, ilen = boxes.length; i < ilen; ++i) {\r\n\t\tlayout = boxes[i];\r\n\t\tbox = layout.box;\r\n\t\tif (layout.horizontal) {\r\n\t\t\tbox.left = box.fullWidth ? userPadding.left : chartArea.left;\r\n\t\t\tbox.right = box.fullWidth ? params.outerWidth - userPadding.right : chartArea.left + chartArea.w;\r\n\t\t\tbox.top = y;\r\n\t\t\tbox.bottom = y + box.height;\r\n\t\t\tbox.width = box.right - box.left;\r\n\t\t\ty = box.bottom;\r\n\t\t} else {\r\n\t\t\tbox.left = x;\r\n\t\t\tbox.right = x + box.width;\r\n\t\t\tbox.top = chartArea.top;\r\n\t\t\tbox.bottom = chartArea.top + chartArea.h;\r\n\t\t\tbox.height = box.bottom - box.top;\r\n\t\t\tx = box.right;\r\n\t\t}\r\n\t}\r\n\r\n\tchartArea.x = x;\r\n\tchartArea.y = y;\r\n}\r\n\r\ncore_defaults._set('global', {\r\n\tlayout: {\r\n\t\tpadding: {\r\n\t\t\ttop: 0,\r\n\t\t\tright: 0,\r\n\t\t\tbottom: 0,\r\n\t\t\tleft: 0\r\n\t\t}\r\n\t}\r\n});\r\n\r\n/**\r\n * @interface ILayoutItem\r\n * @prop {string} position - The position of the item in the chart layout. Possible values are\r\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\r\n * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area\r\n * @prop {boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\r\n * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\r\n * @prop {function} update - Takes two parameters: width and height. Returns size of item\r\n * @prop {function} getPadding - Returns an object with padding on the edges\r\n * @prop {number} width - Width of item. Must be valid after update()\r\n * @prop {number} height - Height of item. Must be valid after update()\r\n * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\r\n */\r\n\r\n// The layout service is very self explanatory. It's responsible for the layout within a chart.\r\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\r\n// It is this service's responsibility of carrying out that layout.\r\nvar core_layouts = {\r\n\tdefaults: {},\r\n\r\n\t/**\r\n\t * Register a box to a chart.\r\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\r\n\t * @param {Chart} chart - the chart to use\r\n\t * @param {ILayoutItem} item - the item to add to be layed out\r\n\t */\r\n\taddBox: function(chart, item) {\r\n\t\tif (!chart.boxes) {\r\n\t\t\tchart.boxes = [];\r\n\t\t}\r\n\r\n\t\t// initialize item with default values\r\n\t\titem.fullWidth = item.fullWidth || false;\r\n\t\titem.position = item.position || 'top';\r\n\t\titem.weight = item.weight || 0;\r\n\t\titem._layers = item._layers || function() {\r\n\t\t\treturn [{\r\n\t\t\t\tz: 0,\r\n\t\t\t\tdraw: function() {\r\n\t\t\t\t\titem.draw.apply(item, arguments);\r\n\t\t\t\t}\r\n\t\t\t}];\r\n\t\t};\r\n\r\n\t\tchart.boxes.push(item);\r\n\t},\r\n\r\n\t/**\r\n\t * Remove a layoutItem from a chart\r\n\t * @param {Chart} chart - the chart to remove the box from\r\n\t * @param {ILayoutItem} layoutItem - the item to remove from the layout\r\n\t */\r\n\tremoveBox: function(chart, layoutItem) {\r\n\t\tvar index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\r\n\t\tif (index !== -1) {\r\n\t\t\tchart.boxes.splice(index, 1);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Sets (or updates) options on the given `item`.\r\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\r\n\t * @param {ILayoutItem} item - the item to configure with the given options\r\n\t * @param {object} options - the new item options.\r\n\t */\r\n\tconfigure: function(chart, item, options) {\r\n\t\tvar props = ['fullWidth', 'position', 'weight'];\r\n\t\tvar ilen = props.length;\r\n\t\tvar i = 0;\r\n\t\tvar prop;\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tprop = props[i];\r\n\t\t\tif (options.hasOwnProperty(prop)) {\r\n\t\t\t\titem[prop] = options[prop];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Fits boxes of the given chart into the given size by having each box measure itself\r\n\t * then running a fitting algorithm\r\n\t * @param {Chart} chart - the chart\r\n\t * @param {number} width - the width to fit into\r\n\t * @param {number} height - the height to fit into\r\n\t */\r\n\tupdate: function(chart, width, height) {\r\n\t\tif (!chart) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar layoutOptions = chart.options.layout || {};\r\n\t\tvar padding = helpers$1.options.toPadding(layoutOptions.padding);\r\n\r\n\t\tvar availableWidth = width - padding.width;\r\n\t\tvar availableHeight = height - padding.height;\r\n\t\tvar boxes = buildLayoutBoxes(chart.boxes);\r\n\t\tvar verticalBoxes = boxes.vertical;\r\n\t\tvar horizontalBoxes = boxes.horizontal;\r\n\r\n\t\t// Essentially we now have any number of boxes on each of the 4 sides.\r\n\t\t// Our canvas looks like the following.\r\n\t\t// The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\r\n\t\t// B1 is the bottom axis\r\n\t\t// There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\r\n\t\t// These locations are single-box locations only, when trying to register a chartArea location that is already taken,\r\n\t\t// an error will be thrown.\r\n\t\t//\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | T1 (Full Width) |\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | | | T2 | |\r\n\t\t// | |----|-------------------------------------|----|\r\n\t\t// | | | C1 | | C2 | |\r\n\t\t// | | |----| |----| |\r\n\t\t// | | | | |\r\n\t\t// | L1 | L2 | ChartArea (C0) | R1 |\r\n\t\t// | | | | |\r\n\t\t// | | |----| |----| |\r\n\t\t// | | | C3 | | C4 | |\r\n\t\t// | |----|-------------------------------------|----|\r\n\t\t// | | | B1 | |\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | B2 (Full Width) |\r\n\t\t// |----------------------------------------------------|\r\n\t\t//\r\n\r\n\t\tvar params = Object.freeze({\r\n\t\t\touterWidth: width,\r\n\t\t\touterHeight: height,\r\n\t\t\tpadding: padding,\r\n\t\t\tavailableWidth: availableWidth,\r\n\t\t\tvBoxMaxWidth: availableWidth / 2 / verticalBoxes.length,\r\n\t\t\thBoxMaxHeight: availableHeight / 2\r\n\t\t});\r\n\t\tvar chartArea = extend({\r\n\t\t\tmaxPadding: extend({}, padding),\r\n\t\t\tw: availableWidth,\r\n\t\t\th: availableHeight,\r\n\t\t\tx: padding.left,\r\n\t\t\ty: padding.top\r\n\t\t}, padding);\r\n\r\n\t\tsetLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\r\n\r\n\t\t// First fit vertical boxes\r\n\t\tfitBoxes(verticalBoxes, chartArea, params);\r\n\r\n\t\t// Then fit horizontal boxes\r\n\t\tif (fitBoxes(horizontalBoxes, chartArea, params)) {\r\n\t\t\t// if the area changed, re-fit vertical boxes\r\n\t\t\tfitBoxes(verticalBoxes, chartArea, params);\r\n\t\t}\r\n\r\n\t\thandleMaxPadding(chartArea);\r\n\r\n\t\t// Finally place the boxes to correct coordinates\r\n\t\tplaceBoxes(boxes.leftAndTop, chartArea, params);\r\n\r\n\t\t// Move to opposite side of chart\r\n\t\tchartArea.x += chartArea.w;\r\n\t\tchartArea.y += chartArea.h;\r\n\r\n\t\tplaceBoxes(boxes.rightAndBottom, chartArea, params);\r\n\r\n\t\tchart.chartArea = {\r\n\t\t\tleft: chartArea.left,\r\n\t\t\ttop: chartArea.top,\r\n\t\t\tright: chartArea.left + chartArea.w,\r\n\t\t\tbottom: chartArea.top + chartArea.h\r\n\t\t};\r\n\r\n\t\t// Finally update boxes in chartArea (radial scale for example)\r\n\t\thelpers$1.each(boxes.chartArea, function(layout) {\r\n\t\t\tvar box = layout.box;\r\n\t\t\textend(box, chart.chartArea);\r\n\t\t\tbox.update(chartArea.w, chartArea.h);\r\n\t\t});\r\n\t}\r\n};\n\n/**\r\n * Platform fallback implementation (minimal).\r\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\r\n */\r\n\r\nvar platform_basic = {\r\n\tacquireContext: function(item) {\r\n\t\tif (item && item.canvas) {\r\n\t\t\t// Support for any object associated to a canvas (including a context2d)\r\n\t\t\titem = item.canvas;\r\n\t\t}\r\n\r\n\t\treturn item && item.getContext('2d') || null;\r\n\t}\r\n};\n\nvar platform_dom = \"/*\\r\\n * DOM element rendering detection\\r\\n * https://davidwalsh.name/detect-node-insertion\\r\\n */\\r\\n@keyframes chartjs-render-animation {\\r\\n\\tfrom { opacity: 0.99; }\\r\\n\\tto { opacity: 1; }\\r\\n}\\r\\n\\r\\n.chartjs-render-monitor {\\r\\n\\tanimation: chartjs-render-animation 0.001s;\\r\\n}\\r\\n\\r\\n/*\\r\\n * DOM element resizing detection\\r\\n * https://github.com/marcj/css-element-queries\\r\\n */\\r\\n.chartjs-size-monitor,\\r\\n.chartjs-size-monitor-expand,\\r\\n.chartjs-size-monitor-shrink {\\r\\n\\tposition: absolute;\\r\\n\\tdirection: ltr;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n\\tright: 0;\\r\\n\\tbottom: 0;\\r\\n\\toverflow: hidden;\\r\\n\\tpointer-events: none;\\r\\n\\tvisibility: hidden;\\r\\n\\tz-index: -1;\\r\\n}\\r\\n\\r\\n.chartjs-size-monitor-expand > div {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 1000000px;\\r\\n\\theight: 1000000px;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\\r\\n.chartjs-size-monitor-shrink > div {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 200%;\\r\\n\\theight: 200%;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\";\n\nvar platform_dom$1 = /*#__PURE__*/Object.freeze({\n__proto__: null,\n'default': platform_dom\n});\n\nvar stylesheet = getCjsExportFromNamespace(platform_dom$1);\n\nvar EXPANDO_KEY = '$chartjs';\r\nvar CSS_PREFIX = 'chartjs-';\r\nvar CSS_SIZE_MONITOR = CSS_PREFIX + 'size-monitor';\r\nvar CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';\r\nvar CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';\r\nvar ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart'];\r\n\r\n/**\r\n * DOM event types -> Chart.js event types.\r\n * Note: only events with different types are mapped.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\r\n */\r\nvar EVENT_TYPES = {\r\n\ttouchstart: 'mousedown',\r\n\ttouchmove: 'mousemove',\r\n\ttouchend: 'mouseup',\r\n\tpointerenter: 'mouseenter',\r\n\tpointerdown: 'mousedown',\r\n\tpointermove: 'mousemove',\r\n\tpointerup: 'mouseup',\r\n\tpointerleave: 'mouseout',\r\n\tpointerout: 'mouseout'\r\n};\r\n\r\n/**\r\n * The \"used\" size is the final value of a dimension property after all calculations have\r\n * been performed. This method uses the computed style of `element` but returns undefined\r\n * if the computed style is not expressed in pixels. That can happen in some cases where\r\n * `element` has a size relative to its parent and this last one is not yet displayed,\r\n * for example because of `display: none` on a parent node.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\r\n * @returns {number} Size in pixels or undefined if unknown.\r\n */\r\nfunction readUsedSize(element, property) {\r\n\tvar value = helpers$1.getStyle(element, property);\r\n\tvar matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\r\n\treturn matches ? Number(matches[1]) : undefined;\r\n}\r\n\r\n/**\r\n * Initializes the canvas style and render size without modifying the canvas display size,\r\n * since responsiveness is handled by the controller.resize() method. The config is used\r\n * to determine the aspect ratio to apply in case no explicit height has been specified.\r\n */\r\nfunction initCanvas(canvas, config) {\r\n\tvar style = canvas.style;\r\n\r\n\t// NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\r\n\t// returns null or '' if no explicit value has been set to the canvas attribute.\r\n\tvar renderHeight = canvas.getAttribute('height');\r\n\tvar renderWidth = canvas.getAttribute('width');\r\n\r\n\t// Chart.js modifies some canvas values that we want to restore on destroy\r\n\tcanvas[EXPANDO_KEY] = {\r\n\t\tinitial: {\r\n\t\t\theight: renderHeight,\r\n\t\t\twidth: renderWidth,\r\n\t\t\tstyle: {\r\n\t\t\t\tdisplay: style.display,\r\n\t\t\t\theight: style.height,\r\n\t\t\t\twidth: style.width\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Force canvas to display as block to avoid extra space caused by inline\r\n\t// elements, which would interfere with the responsive resize process.\r\n\t// https://github.com/chartjs/Chart.js/issues/2538\r\n\tstyle.display = style.display || 'block';\r\n\r\n\tif (renderWidth === null || renderWidth === '') {\r\n\t\tvar displayWidth = readUsedSize(canvas, 'width');\r\n\t\tif (displayWidth !== undefined) {\r\n\t\t\tcanvas.width = displayWidth;\r\n\t\t}\r\n\t}\r\n\r\n\tif (renderHeight === null || renderHeight === '') {\r\n\t\tif (canvas.style.height === '') {\r\n\t\t\t// If no explicit render height and style height, let's apply the aspect ratio,\r\n\t\t\t// which one can be specified by the user but also by charts as default option\r\n\t\t\t// (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\r\n\t\t\tcanvas.height = canvas.width / (config.options.aspectRatio || 2);\r\n\t\t} else {\r\n\t\t\tvar displayHeight = readUsedSize(canvas, 'height');\r\n\t\t\tif (displayWidth !== undefined) {\r\n\t\t\t\tcanvas.height = displayHeight;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn canvas;\r\n}\r\n\r\n/**\r\n * Detects support for options object argument in addEventListener.\r\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\r\n * @private\r\n */\r\nvar supportsEventListenerOptions = (function() {\r\n\tvar supports = false;\r\n\ttry {\r\n\t\tvar options = Object.defineProperty({}, 'passive', {\r\n\t\t\t// eslint-disable-next-line getter-return\r\n\t\t\tget: function() {\r\n\t\t\t\tsupports = true;\r\n\t\t\t}\r\n\t\t});\r\n\t\twindow.addEventListener('e', null, options);\r\n\t} catch (e) {\r\n\t\t// continue regardless of error\r\n\t}\r\n\treturn supports;\r\n}());\r\n\r\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\r\n// https://github.com/chartjs/Chart.js/issues/4287\r\nvar eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\r\n\r\nfunction addListener(node, type, listener) {\r\n\tnode.addEventListener(type, listener, eventListenerOptions);\r\n}\r\n\r\nfunction removeListener(node, type, listener) {\r\n\tnode.removeEventListener(type, listener, eventListenerOptions);\r\n}\r\n\r\nfunction createEvent(type, chart, x, y, nativeEvent) {\r\n\treturn {\r\n\t\ttype: type,\r\n\t\tchart: chart,\r\n\t\tnative: nativeEvent || null,\r\n\t\tx: x !== undefined ? x : null,\r\n\t\ty: y !== undefined ? y : null,\r\n\t};\r\n}\r\n\r\nfunction fromNativeEvent(event, chart) {\r\n\tvar type = EVENT_TYPES[event.type] || event.type;\r\n\tvar pos = helpers$1.getRelativePosition(event, chart);\r\n\treturn createEvent(type, chart, pos.x, pos.y, event);\r\n}\r\n\r\nfunction throttled(fn, thisArg) {\r\n\tvar ticking = false;\r\n\tvar args = [];\r\n\r\n\treturn function() {\r\n\t\targs = Array.prototype.slice.call(arguments);\r\n\t\tthisArg = thisArg || this;\r\n\r\n\t\tif (!ticking) {\r\n\t\t\tticking = true;\r\n\t\t\thelpers$1.requestAnimFrame.call(window, function() {\r\n\t\t\t\tticking = false;\r\n\t\t\t\tfn.apply(thisArg, args);\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction createDiv(cls) {\r\n\tvar el = document.createElement('div');\r\n\tel.className = cls || '';\r\n\treturn el;\r\n}\r\n\r\n// Implementation based on https://github.com/marcj/css-element-queries\r\nfunction createResizer(handler) {\r\n\tvar maxSize = 1000000;\r\n\r\n\t// NOTE(SB) Don't use innerHTML because it could be considered unsafe.\r\n\t// https://github.com/chartjs/Chart.js/issues/5902\r\n\tvar resizer = createDiv(CSS_SIZE_MONITOR);\r\n\tvar expand = createDiv(CSS_SIZE_MONITOR + '-expand');\r\n\tvar shrink = createDiv(CSS_SIZE_MONITOR + '-shrink');\r\n\r\n\texpand.appendChild(createDiv());\r\n\tshrink.appendChild(createDiv());\r\n\r\n\tresizer.appendChild(expand);\r\n\tresizer.appendChild(shrink);\r\n\tresizer._reset = function() {\r\n\t\texpand.scrollLeft = maxSize;\r\n\t\texpand.scrollTop = maxSize;\r\n\t\tshrink.scrollLeft = maxSize;\r\n\t\tshrink.scrollTop = maxSize;\r\n\t};\r\n\r\n\tvar onScroll = function() {\r\n\t\tresizer._reset();\r\n\t\thandler();\r\n\t};\r\n\r\n\taddListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\r\n\taddListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));\r\n\r\n\treturn resizer;\r\n}\r\n\r\n// https://davidwalsh.name/detect-node-insertion\r\nfunction watchForRender(node, handler) {\r\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\r\n\tvar proxy = expando.renderProxy = function(e) {\r\n\t\tif (e.animationName === CSS_RENDER_ANIMATION) {\r\n\t\t\thandler();\r\n\t\t}\r\n\t};\r\n\r\n\thelpers$1.each(ANIMATION_START_EVENTS, function(type) {\r\n\t\taddListener(node, type, proxy);\r\n\t});\r\n\r\n\t// #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class\r\n\t// is removed then added back immediately (same animation frame?). Accessing the\r\n\t// `offsetParent` property will force a reflow and re-evaluate the CSS animation.\r\n\t// https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics\r\n\t// https://github.com/chartjs/Chart.js/issues/4737\r\n\texpando.reflow = !!node.offsetParent;\r\n\r\n\tnode.classList.add(CSS_RENDER_MONITOR);\r\n}\r\n\r\nfunction unwatchForRender(node) {\r\n\tvar expando = node[EXPANDO_KEY] || {};\r\n\tvar proxy = expando.renderProxy;\r\n\r\n\tif (proxy) {\r\n\t\thelpers$1.each(ANIMATION_START_EVENTS, function(type) {\r\n\t\t\tremoveListener(node, type, proxy);\r\n\t\t});\r\n\r\n\t\tdelete expando.renderProxy;\r\n\t}\r\n\r\n\tnode.classList.remove(CSS_RENDER_MONITOR);\r\n}\r\n\r\nfunction addResizeListener(node, listener, chart) {\r\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\r\n\r\n\t// Let's keep track of this added resizer and thus avoid DOM query when removing it.\r\n\tvar resizer = expando.resizer = createResizer(throttled(function() {\r\n\t\tif (expando.resizer) {\r\n\t\t\tvar container = chart.options.maintainAspectRatio && node.parentNode;\r\n\t\t\tvar w = container ? container.clientWidth : 0;\r\n\t\t\tlistener(createEvent('resize', chart));\r\n\t\t\tif (container && container.clientWidth < w && chart.canvas) {\r\n\t\t\t\t// If the container size shrank during chart resize, let's assume\r\n\t\t\t\t// scrollbar appeared. So we resize again with the scrollbar visible -\r\n\t\t\t\t// effectively making chart smaller and the scrollbar hidden again.\r\n\t\t\t\t// Because we are inside `throttled`, and currently `ticking`, scroll\r\n\t\t\t\t// events are ignored during this whole 2 resize process.\r\n\t\t\t\t// If we assumed wrong and something else happened, we are resizing\r\n\t\t\t\t// twice in a frame (potential performance issue)\r\n\t\t\t\tlistener(createEvent('resize', chart));\r\n\t\t\t}\r\n\t\t}\r\n\t}));\r\n\r\n\t// The resizer needs to be attached to the node parent, so we first need to be\r\n\t// sure that `node` is attached to the DOM before injecting the resizer element.\r\n\twatchForRender(node, function() {\r\n\t\tif (expando.resizer) {\r\n\t\t\tvar container = node.parentNode;\r\n\t\t\tif (container && container !== resizer.parentNode) {\r\n\t\t\t\tcontainer.insertBefore(resizer, container.firstChild);\r\n\t\t\t}\r\n\r\n\t\t\t// The container size might have changed, let's reset the resizer state.\r\n\t\t\tresizer._reset();\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction removeResizeListener(node) {\r\n\tvar expando = node[EXPANDO_KEY] || {};\r\n\tvar resizer = expando.resizer;\r\n\r\n\tdelete expando.resizer;\r\n\tunwatchForRender(node);\r\n\r\n\tif (resizer && resizer.parentNode) {\r\n\t\tresizer.parentNode.removeChild(resizer);\r\n\t}\r\n}\r\n\r\n/**\r\n * Injects CSS styles inline if the styles are not already present.\r\n * @param {HTMLDocument|ShadowRoot} rootNode - the node to contain the <style>.\r\n * @param {string} css - the CSS to be injected.\r\n */\r\nfunction injectCSS(rootNode, css) {\r\n\t// https://stackoverflow.com/q/3922139\r\n\tvar expando = rootNode[EXPANDO_KEY] || (rootNode[EXPANDO_KEY] = {});\r\n\tif (!expando.containsStyles) {\r\n\t\texpando.containsStyles = true;\r\n\t\tcss = '/* Chart.js */\\n' + css;\r\n\t\tvar style = document.createElement('style');\r\n\t\tstyle.setAttribute('type', 'text/css');\r\n\t\tstyle.appendChild(document.createTextNode(css));\r\n\t\trootNode.appendChild(style);\r\n\t}\r\n}\r\n\r\nvar platform_dom$2 = {\r\n\t/**\r\n\t * When `true`, prevents the automatic injection of the stylesheet required to\r\n\t * correctly detect when the chart is added to the DOM and then resized. This\r\n\t * switch has been added to allow external stylesheet (`dist/Chart(.min)?.js`)\r\n\t * to be manually imported to make this library compatible with any CSP.\r\n\t * See https://github.com/chartjs/Chart.js/issues/5208\r\n\t */\r\n\tdisableCSSInjection: false,\r\n\r\n\t/**\r\n\t * This property holds whether this platform is enabled for the current environment.\r\n\t * Currently used by platform.js to select the proper implementation.\r\n\t * @private\r\n\t */\r\n\t_enabled: typeof window !== 'undefined' && typeof document !== 'undefined',\r\n\r\n\t/**\r\n\t * Initializes resources that depend on platform options.\r\n\t * @param {HTMLCanvasElement} canvas - The Canvas element.\r\n\t * @private\r\n\t */\r\n\t_ensureLoaded: function(canvas) {\r\n\t\tif (!this.disableCSSInjection) {\r\n\t\t\t// If the canvas is in a shadow DOM, then the styles must also be inserted\r\n\t\t\t// into the same shadow DOM.\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5763\r\n\t\t\tvar root = canvas.getRootNode ? canvas.getRootNode() : document;\r\n\t\t\tvar targetNode = root.host ? root : document.head;\r\n\t\t\tinjectCSS(targetNode, stylesheet);\r\n\t\t}\r\n\t},\r\n\r\n\tacquireContext: function(item, config) {\r\n\t\tif (typeof item === 'string') {\r\n\t\t\titem = document.getElementById(item);\r\n\t\t} else if (item.length) {\r\n\t\t\t// Support for array based queries (such as jQuery)\r\n\t\t\titem = item[0];\r\n\t\t}\r\n\r\n\t\tif (item && item.canvas) {\r\n\t\t\t// Support for any object associated to a canvas (including a context2d)\r\n\t\t\titem = item.canvas;\r\n\t\t}\r\n\r\n\t\t// To prevent canvas fingerprinting, some add-ons undefine the getContext\r\n\t\t// method, for example: https://github.com/kkapsner/CanvasBlocker\r\n\t\t// https://github.com/chartjs/Chart.js/issues/2807\r\n\t\tvar context = item && item.getContext && item.getContext('2d');\r\n\r\n\t\t// `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is\r\n\t\t// inside an iframe or when running in a protected environment. We could guess the\r\n\t\t// types from their toString() value but let's keep things flexible and assume it's\r\n\t\t// a sufficient condition if the item has a context2D which has item as `canvas`.\r\n\t\t// https://github.com/chartjs/Chart.js/issues/3887\r\n\t\t// https://github.com/chartjs/Chart.js/issues/4102\r\n\t\t// https://github.com/chartjs/Chart.js/issues/4152\r\n\t\tif (context && context.canvas === item) {\r\n\t\t\t// Load platform resources on first chart creation, to make it possible to\r\n\t\t\t// import the library before setting platform options.\r\n\t\t\tthis._ensureLoaded(item);\r\n\t\t\tinitCanvas(item, config);\r\n\t\t\treturn context;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\treleaseContext: function(context) {\r\n\t\tvar canvas = context.canvas;\r\n\t\tif (!canvas[EXPANDO_KEY]) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar initial = canvas[EXPANDO_KEY].initial;\r\n\t\t['height', 'width'].forEach(function(prop) {\r\n\t\t\tvar value = initial[prop];\r\n\t\t\tif (helpers$1.isNullOrUndef(value)) {\r\n\t\t\t\tcanvas.removeAttribute(prop);\r\n\t\t\t} else {\r\n\t\t\t\tcanvas.setAttribute(prop, value);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\thelpers$1.each(initial.style || {}, function(value, key) {\r\n\t\t\tcanvas.style[key] = value;\r\n\t\t});\r\n\r\n\t\t// The canvas render size might have been changed (and thus the state stack discarded),\r\n\t\t// we can't use save() and restore() to restore the initial state. So make sure that at\r\n\t\t// least the canvas context is reset to the default state by setting the canvas width.\r\n\t\t// https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\r\n\t\t// eslint-disable-next-line no-self-assign\r\n\t\tcanvas.width = canvas.width;\r\n\r\n\t\tdelete canvas[EXPANDO_KEY];\r\n\t},\r\n\r\n\taddEventListener: function(chart, type, listener) {\r\n\t\tvar canvas = chart.canvas;\r\n\t\tif (type === 'resize') {\r\n\t\t\t// Note: the resize event is not supported on all browsers.\r\n\t\t\taddResizeListener(canvas, listener, chart);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {});\r\n\t\tvar proxies = expando.proxies || (expando.proxies = {});\r\n\t\tvar proxy = proxies[chart.id + '_' + type] = function(event) {\r\n\t\t\tlistener(fromNativeEvent(event, chart));\r\n\t\t};\r\n\r\n\t\taddListener(canvas, type, proxy);\r\n\t},\r\n\r\n\tremoveEventListener: function(chart, type, listener) {\r\n\t\tvar canvas = chart.canvas;\r\n\t\tif (type === 'resize') {\r\n\t\t\t// Note: the resize event is not supported on all browsers.\r\n\t\t\tremoveResizeListener(canvas);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar expando = listener[EXPANDO_KEY] || {};\r\n\t\tvar proxies = expando.proxies || {};\r\n\t\tvar proxy = proxies[chart.id + '_' + type];\r\n\t\tif (!proxy) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tremoveListener(canvas, type, proxy);\r\n\t}\r\n};\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use EventTarget.addEventListener instead.\r\n * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\r\n * @function Chart.helpers.addEvent\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers$1.addEvent = addListener;\r\n\r\n/**\r\n * Provided for backward compatibility, use EventTarget.removeEventListener instead.\r\n * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener\r\n * @function Chart.helpers.removeEvent\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers$1.removeEvent = removeListener;\n\n// @TODO Make possible to select another platform at build time.\r\nvar implementation = platform_dom$2._enabled ? platform_dom$2 : platform_basic;\r\n\r\n/**\r\n * @namespace Chart.platform\r\n * @see https://chartjs.gitbooks.io/proposals/content/Platform.html\r\n * @since 2.4.0\r\n */\r\nvar platform = helpers$1.extend({\r\n\t/**\r\n\t * @since 2.7.0\r\n\t */\r\n\tinitialize: function() {},\r\n\r\n\t/**\r\n\t * Called at chart construction time, returns a context2d instance implementing\r\n\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\r\n\t * @param {*} item - The native item from which to acquire context (platform specific)\r\n\t * @param {object} options - The chart options\r\n\t * @returns {CanvasRenderingContext2D} context2d instance\r\n\t */\r\n\tacquireContext: function() {},\r\n\r\n\t/**\r\n\t * Called at chart destruction time, releases any resources associated to the context\r\n\t * previously returned by the acquireContext() method.\r\n\t * @param {CanvasRenderingContext2D} context - The context2d instance\r\n\t * @returns {boolean} true if the method succeeded, else false\r\n\t */\r\n\treleaseContext: function() {},\r\n\r\n\t/**\r\n\t * Registers the specified listener on the given chart.\r\n\t * @param {Chart} chart - Chart from which to listen for event\r\n\t * @param {string} type - The ({@link IEvent}) type to listen for\r\n\t * @param {function} listener - Receives a notification (an object that implements\r\n\t * the {@link IEvent} interface) when an event of the specified type occurs.\r\n\t */\r\n\taddEventListener: function() {},\r\n\r\n\t/**\r\n\t * Removes the specified listener previously registered with addEventListener.\r\n\t * @param {Chart} chart - Chart from which to remove the listener\r\n\t * @param {string} type - The ({@link IEvent}) type to remove\r\n\t * @param {function} listener - The listener function to remove from the event target.\r\n\t */\r\n\tremoveEventListener: function() {}\r\n\r\n}, implementation);\n\ncore_defaults._set('global', {\r\n\tplugins: {}\r\n});\r\n\r\n/**\r\n * The plugin service singleton\r\n * @namespace Chart.plugins\r\n * @since 2.1.0\r\n */\r\nvar core_plugins = {\r\n\t/**\r\n\t * Globally registered plugins.\r\n\t * @private\r\n\t */\r\n\t_plugins: [],\r\n\r\n\t/**\r\n\t * This identifier is used to invalidate the descriptors cache attached to each chart\r\n\t * when a global plugin is registered or unregistered. In this case, the cache ID is\r\n\t * incremented and descriptors are regenerated during following API calls.\r\n\t * @private\r\n\t */\r\n\t_cacheId: 0,\r\n\r\n\t/**\r\n\t * Registers the given plugin(s) if not already registered.\r\n\t * @param {IPlugin[]|IPlugin} plugins plugin instance(s).\r\n\t */\r\n\tregister: function(plugins) {\r\n\t\tvar p = this._plugins;\r\n\t\t([]).concat(plugins).forEach(function(plugin) {\r\n\t\t\tif (p.indexOf(plugin) === -1) {\r\n\t\t\t\tp.push(plugin);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._cacheId++;\r\n\t},\r\n\r\n\t/**\r\n\t * Unregisters the given plugin(s) only if registered.\r\n\t * @param {IPlugin[]|IPlugin} plugins plugin instance(s).\r\n\t */\r\n\tunregister: function(plugins) {\r\n\t\tvar p = this._plugins;\r\n\t\t([]).concat(plugins).forEach(function(plugin) {\r\n\t\t\tvar idx = p.indexOf(plugin);\r\n\t\t\tif (idx !== -1) {\r\n\t\t\t\tp.splice(idx, 1);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._cacheId++;\r\n\t},\r\n\r\n\t/**\r\n\t * Remove all registered plugins.\r\n\t * @since 2.1.5\r\n\t */\r\n\tclear: function() {\r\n\t\tthis._plugins = [];\r\n\t\tthis._cacheId++;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the number of registered plugins?\r\n\t * @returns {number}\r\n\t * @since 2.1.5\r\n\t */\r\n\tcount: function() {\r\n\t\treturn this._plugins.length;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns all registered plugin instances.\r\n\t * @returns {IPlugin[]} array of plugin objects.\r\n\t * @since 2.1.5\r\n\t */\r\n\tgetAll: function() {\r\n\t\treturn this._plugins;\r\n\t},\r\n\r\n\t/**\r\n\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\r\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\r\n\t * returned value can be used, for instance, to interrupt the current action.\r\n\t * @param {Chart} chart - The chart instance for which plugins should be called.\r\n\t * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\r\n\t * @param {Array} [args] - Extra arguments to apply to the hook call.\r\n\t * @returns {boolean} false if any of the plugins return false, else returns true.\r\n\t */\r\n\tnotify: function(chart, hook, args) {\r\n\t\tvar descriptors = this.descriptors(chart);\r\n\t\tvar ilen = descriptors.length;\r\n\t\tvar i, descriptor, plugin, params, method;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tdescriptor = descriptors[i];\r\n\t\t\tplugin = descriptor.plugin;\r\n\t\t\tmethod = plugin[hook];\r\n\t\t\tif (typeof method === 'function') {\r\n\t\t\t\tparams = [chart].concat(args || []);\r\n\t\t\t\tparams.push(descriptor.options);\r\n\t\t\t\tif (method.apply(plugin, params) === false) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns descriptors of enabled plugins for the given chart.\r\n\t * @returns {object[]} [{ plugin, options }]\r\n\t * @private\r\n\t */\r\n\tdescriptors: function(chart) {\r\n\t\tvar cache = chart.$plugins || (chart.$plugins = {});\r\n\t\tif (cache.id === this._cacheId) {\r\n\t\t\treturn cache.descriptors;\r\n\t\t}\r\n\r\n\t\tvar plugins = [];\r\n\t\tvar descriptors = [];\r\n\t\tvar config = (chart && chart.config) || {};\r\n\t\tvar options = (config.options && config.options.plugins) || {};\r\n\r\n\t\tthis._plugins.concat(config.plugins || []).forEach(function(plugin) {\r\n\t\t\tvar idx = plugins.indexOf(plugin);\r\n\t\t\tif (idx !== -1) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar id = plugin.id;\r\n\t\t\tvar opts = options[id];\r\n\t\t\tif (opts === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (opts === true) {\r\n\t\t\t\topts = helpers$1.clone(core_defaults.global.plugins[id]);\r\n\t\t\t}\r\n\r\n\t\t\tplugins.push(plugin);\r\n\t\t\tdescriptors.push({\r\n\t\t\t\tplugin: plugin,\r\n\t\t\t\toptions: opts || {}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tcache.descriptors = descriptors;\r\n\t\tcache.id = this._cacheId;\r\n\t\treturn descriptors;\r\n\t},\r\n\r\n\t/**\r\n\t * Invalidates cache for the given chart: descriptors hold a reference on plugin option,\r\n\t * but in some cases, this reference can be changed by the user when updating options.\r\n\t * https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\r\n\t * @private\r\n\t */\r\n\t_invalidate: function(chart) {\r\n\t\tdelete chart.$plugins;\r\n\t}\r\n};\n\nvar core_scaleService = {\r\n\t// Scale registration object. Extensions can register new scale types (such as log or DB scales) and then\r\n\t// use the new chart options to grab the correct scale\r\n\tconstructors: {},\r\n\t// Use a registration function so that we can move to an ES6 map when we no longer need to support\r\n\t// old browsers\r\n\r\n\t// Scale config defaults\r\n\tdefaults: {},\r\n\tregisterScaleType: function(type, scaleConstructor, scaleDefaults) {\r\n\t\tthis.constructors[type] = scaleConstructor;\r\n\t\tthis.defaults[type] = helpers$1.clone(scaleDefaults);\r\n\t},\r\n\tgetScaleConstructor: function(type) {\r\n\t\treturn this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined;\r\n\t},\r\n\tgetScaleDefaults: function(type) {\r\n\t\t// Return the scale defaults merged with the global settings so that we always use the latest ones\r\n\t\treturn this.defaults.hasOwnProperty(type) ? helpers$1.merge(Object.create(null), [core_defaults.scale, this.defaults[type]]) : {};\r\n\t},\r\n\tupdateScaleDefaults: function(type, additions) {\r\n\t\tvar me = this;\r\n\t\tif (me.defaults.hasOwnProperty(type)) {\r\n\t\t\tme.defaults[type] = helpers$1.extend(me.defaults[type], additions);\r\n\t\t}\r\n\t},\r\n\taddScalesToLayout: function(chart) {\r\n\t\t// Adds each scale to the chart.boxes array to be sized accordingly\r\n\t\thelpers$1.each(chart.scales, function(scale) {\r\n\t\t\t// Set ILayoutItem parameters for backwards compatibility\r\n\t\t\tscale.fullWidth = scale.options.fullWidth;\r\n\t\t\tscale.position = scale.options.position;\r\n\t\t\tscale.weight = scale.options.weight;\r\n\t\t\tcore_layouts.addBox(chart, scale);\r\n\t\t});\r\n\t}\r\n};\n\nvar valueOrDefault$8 = helpers$1.valueOrDefault;\r\nvar getRtlHelper = helpers$1.rtl.getRtlAdapter;\r\n\r\ncore_defaults._set('global', {\r\n\ttooltips: {\r\n\t\tenabled: true,\r\n\t\tcustom: null,\r\n\t\tmode: 'nearest',\r\n\t\tposition: 'average',\r\n\t\tintersect: true,\r\n\t\tbackgroundColor: 'rgba(0,0,0,0.8)',\r\n\t\ttitleFontStyle: 'bold',\r\n\t\ttitleSpacing: 2,\r\n\t\ttitleMarginBottom: 6,\r\n\t\ttitleFontColor: '#fff',\r\n\t\ttitleAlign: 'left',\r\n\t\tbodySpacing: 2,\r\n\t\tbodyFontColor: '#fff',\r\n\t\tbodyAlign: 'left',\r\n\t\tfooterFontStyle: 'bold',\r\n\t\tfooterSpacing: 2,\r\n\t\tfooterMarginTop: 6,\r\n\t\tfooterFontColor: '#fff',\r\n\t\tfooterAlign: 'left',\r\n\t\tyPadding: 6,\r\n\t\txPadding: 6,\r\n\t\tcaretPadding: 2,\r\n\t\tcaretSize: 5,\r\n\t\tcornerRadius: 6,\r\n\t\tmultiKeyBackground: '#fff',\r\n\t\tdisplayColors: true,\r\n\t\tborderColor: 'rgba(0,0,0,0)',\r\n\t\tborderWidth: 0,\r\n\t\tcallbacks: {\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tbeforeTitle: helpers$1.noop,\r\n\t\t\ttitle: function(tooltipItems, data) {\r\n\t\t\t\tvar title = '';\r\n\t\t\t\tvar labels = data.labels;\r\n\t\t\t\tvar labelCount = labels ? labels.length : 0;\r\n\r\n\t\t\t\tif (tooltipItems.length > 0) {\r\n\t\t\t\t\tvar item = tooltipItems[0];\r\n\t\t\t\t\tif (item.label) {\r\n\t\t\t\t\t\ttitle = item.label;\r\n\t\t\t\t\t} else if (item.xLabel) {\r\n\t\t\t\t\t\ttitle = item.xLabel;\r\n\t\t\t\t\t} else if (labelCount > 0 && item.index < labelCount) {\r\n\t\t\t\t\t\ttitle = labels[item.index];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn title;\r\n\t\t\t},\r\n\t\t\tafterTitle: helpers$1.noop,\r\n\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tbeforeBody: helpers$1.noop,\r\n\r\n\t\t\t// Args are: (tooltipItem, data)\r\n\t\t\tbeforeLabel: helpers$1.noop,\r\n\t\t\tlabel: function(tooltipItem, data) {\r\n\t\t\t\tvar label = data.datasets[tooltipItem.datasetIndex].label || '';\r\n\r\n\t\t\t\tif (label) {\r\n\t\t\t\t\tlabel += ': ';\r\n\t\t\t\t}\r\n\t\t\t\tif (!helpers$1.isNullOrUndef(tooltipItem.value)) {\r\n\t\t\t\t\tlabel += tooltipItem.value;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlabel += tooltipItem.yLabel;\r\n\t\t\t\t}\r\n\t\t\t\treturn label;\r\n\t\t\t},\r\n\t\t\tlabelColor: function(tooltipItem, chart) {\r\n\t\t\t\tvar meta = chart.getDatasetMeta(tooltipItem.datasetIndex);\r\n\t\t\t\tvar activeElement = meta.data[tooltipItem.index];\r\n\t\t\t\tvar view = activeElement._view;\r\n\t\t\t\treturn {\r\n\t\t\t\t\tborderColor: view.borderColor,\r\n\t\t\t\t\tbackgroundColor: view.backgroundColor\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t\tlabelTextColor: function() {\r\n\t\t\t\treturn this._options.bodyFontColor;\r\n\t\t\t},\r\n\t\t\tafterLabel: helpers$1.noop,\r\n\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tafterBody: helpers$1.noop,\r\n\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tbeforeFooter: helpers$1.noop,\r\n\t\t\tfooter: helpers$1.noop,\r\n\t\t\tafterFooter: helpers$1.noop\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar positioners = {\r\n\t/**\r\n\t * Average mode places the tooltip at the average position of the elements shown\r\n\t * @function Chart.Tooltip.positioners.average\r\n\t * @param elements {ChartElement[]} the elements being displayed in the tooltip\r\n\t * @returns {object} tooltip position\r\n\t */\r\n\taverage: function(elements) {\r\n\t\tif (!elements.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tvar i, len;\r\n\t\tvar x = 0;\r\n\t\tvar y = 0;\r\n\t\tvar count = 0;\r\n\r\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\r\n\t\t\tvar el = elements[i];\r\n\t\t\tif (el && el.hasValue()) {\r\n\t\t\t\tvar pos = el.tooltipPosition();\r\n\t\t\t\tx += pos.x;\r\n\t\t\t\ty += pos.y;\r\n\t\t\t\t++count;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tx: x / count,\r\n\t\t\ty: y / count\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Gets the tooltip position nearest of the item nearest to the event position\r\n\t * @function Chart.Tooltip.positioners.nearest\r\n\t * @param elements {Chart.Element[]} the tooltip elements\r\n\t * @param eventPosition {object} the position of the event in canvas coordinates\r\n\t * @returns {object} the tooltip position\r\n\t */\r\n\tnearest: function(elements, eventPosition) {\r\n\t\tvar x = eventPosition.x;\r\n\t\tvar y = eventPosition.y;\r\n\t\tvar minDistance = Number.POSITIVE_INFINITY;\r\n\t\tvar i, len, nearestElement;\r\n\r\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\r\n\t\t\tvar el = elements[i];\r\n\t\t\tif (el && el.hasValue()) {\r\n\t\t\t\tvar center = el.getCenterPoint();\r\n\t\t\t\tvar d = helpers$1.distanceBetweenPoints(eventPosition, center);\r\n\r\n\t\t\t\tif (d < minDistance) {\r\n\t\t\t\t\tminDistance = d;\r\n\t\t\t\t\tnearestElement = el;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (nearestElement) {\r\n\t\t\tvar tp = nearestElement.tooltipPosition();\r\n\t\t\tx = tp.x;\r\n\t\t\ty = tp.y;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tx: x,\r\n\t\t\ty: y\r\n\t\t};\r\n\t}\r\n};\r\n\r\n// Helper to push or concat based on if the 2nd parameter is an array or not\r\nfunction pushOrConcat(base, toPush) {\r\n\tif (toPush) {\r\n\t\tif (helpers$1.isArray(toPush)) {\r\n\t\t\t// base = base.concat(toPush);\r\n\t\t\tArray.prototype.push.apply(base, toPush);\r\n\t\t} else {\r\n\t\t\tbase.push(toPush);\r\n\t\t}\r\n\t}\r\n\r\n\treturn base;\r\n}\r\n\r\n/**\r\n * Returns array of strings split by newline\r\n * @param {string} value - The value to split by newline.\r\n * @returns {string[]} value if newline present - Returned from String split() method\r\n * @function\r\n */\r\nfunction splitNewlines(str) {\r\n\tif ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\r\n\t\treturn str.split('\\n');\r\n\t}\r\n\treturn str;\r\n}\r\n\r\n\r\n/**\r\n * Private helper to create a tooltip item model\r\n * @param element - the chart element (point, arc, bar) to create the tooltip item for\r\n * @return new tooltip item\r\n */\r\nfunction createTooltipItem(element) {\r\n\tvar xScale = element._xScale;\r\n\tvar yScale = element._yScale || element._scale; // handle radar || polarArea charts\r\n\tvar index = element._index;\r\n\tvar datasetIndex = element._datasetIndex;\r\n\tvar controller = element._chart.getDatasetMeta(datasetIndex).controller;\r\n\tvar indexScale = controller._getIndexScale();\r\n\tvar valueScale = controller._getValueScale();\r\n\r\n\treturn {\r\n\t\txLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '',\r\n\t\tyLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '',\r\n\t\tlabel: indexScale ? '' + indexScale.getLabelForIndex(index, datasetIndex) : '',\r\n\t\tvalue: valueScale ? '' + valueScale.getLabelForIndex(index, datasetIndex) : '',\r\n\t\tindex: index,\r\n\t\tdatasetIndex: datasetIndex,\r\n\t\tx: element._model.x,\r\n\t\ty: element._model.y\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper to get the reset model for the tooltip\r\n * @param tooltipOpts {object} the tooltip options\r\n */\r\nfunction getBaseModel(tooltipOpts) {\r\n\tvar globalDefaults = core_defaults.global;\r\n\r\n\treturn {\r\n\t\t// Positioning\r\n\t\txPadding: tooltipOpts.xPadding,\r\n\t\tyPadding: tooltipOpts.yPadding,\r\n\t\txAlign: tooltipOpts.xAlign,\r\n\t\tyAlign: tooltipOpts.yAlign,\r\n\r\n\t\t// Drawing direction and text direction\r\n\t\trtl: tooltipOpts.rtl,\r\n\t\ttextDirection: tooltipOpts.textDirection,\r\n\r\n\t\t// Body\r\n\t\tbodyFontColor: tooltipOpts.bodyFontColor,\r\n\t\t_bodyFontFamily: valueOrDefault$8(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily),\r\n\t\t_bodyFontStyle: valueOrDefault$8(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle),\r\n\t\t_bodyAlign: tooltipOpts.bodyAlign,\r\n\t\tbodyFontSize: valueOrDefault$8(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize),\r\n\t\tbodySpacing: tooltipOpts.bodySpacing,\r\n\r\n\t\t// Title\r\n\t\ttitleFontColor: tooltipOpts.titleFontColor,\r\n\t\t_titleFontFamily: valueOrDefault$8(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily),\r\n\t\t_titleFontStyle: valueOrDefault$8(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle),\r\n\t\ttitleFontSize: valueOrDefault$8(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize),\r\n\t\t_titleAlign: tooltipOpts.titleAlign,\r\n\t\ttitleSpacing: tooltipOpts.titleSpacing,\r\n\t\ttitleMarginBottom: tooltipOpts.titleMarginBottom,\r\n\r\n\t\t// Footer\r\n\t\tfooterFontColor: tooltipOpts.footerFontColor,\r\n\t\t_footerFontFamily: valueOrDefault$8(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily),\r\n\t\t_footerFontStyle: valueOrDefault$8(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle),\r\n\t\tfooterFontSize: valueOrDefault$8(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize),\r\n\t\t_footerAlign: tooltipOpts.footerAlign,\r\n\t\tfooterSpacing: tooltipOpts.footerSpacing,\r\n\t\tfooterMarginTop: tooltipOpts.footerMarginTop,\r\n\r\n\t\t// Appearance\r\n\t\tcaretSize: tooltipOpts.caretSize,\r\n\t\tcornerRadius: tooltipOpts.cornerRadius,\r\n\t\tbackgroundColor: tooltipOpts.backgroundColor,\r\n\t\topacity: 0,\r\n\t\tlegendColorBackground: tooltipOpts.multiKeyBackground,\r\n\t\tdisplayColors: tooltipOpts.displayColors,\r\n\t\tborderColor: tooltipOpts.borderColor,\r\n\t\tborderWidth: tooltipOpts.borderWidth\r\n\t};\r\n}\r\n\r\n/**\r\n * Get the size of the tooltip\r\n */\r\nfunction getTooltipSize(tooltip, model) {\r\n\tvar ctx = tooltip._chart.ctx;\r\n\r\n\tvar height = model.yPadding * 2; // Tooltip Padding\r\n\tvar width = 0;\r\n\r\n\t// Count of all lines in the body\r\n\tvar body = model.body;\r\n\tvar combinedBodyLength = body.reduce(function(count, bodyItem) {\r\n\t\treturn count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length;\r\n\t}, 0);\r\n\tcombinedBodyLength += model.beforeBody.length + model.afterBody.length;\r\n\r\n\tvar titleLineCount = model.title.length;\r\n\tvar footerLineCount = model.footer.length;\r\n\tvar titleFontSize = model.titleFontSize;\r\n\tvar bodyFontSize = model.bodyFontSize;\r\n\tvar footerFontSize = model.footerFontSize;\r\n\r\n\theight += titleLineCount * titleFontSize; // Title Lines\r\n\theight += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing\r\n\theight += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin\r\n\theight += combinedBodyLength * bodyFontSize; // Body Lines\r\n\theight += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing\r\n\theight += footerLineCount ? model.footerMarginTop : 0; // Footer Margin\r\n\theight += footerLineCount * (footerFontSize); // Footer Lines\r\n\theight += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing\r\n\r\n\t// Title width\r\n\tvar widthPadding = 0;\r\n\tvar maxLineWidth = function(line) {\r\n\t\twidth = Math.max(width, ctx.measureText(line).width + widthPadding);\r\n\t};\r\n\r\n\tctx.font = helpers$1.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily);\r\n\thelpers$1.each(model.title, maxLineWidth);\r\n\r\n\t// Body width\r\n\tctx.font = helpers$1.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily);\r\n\thelpers$1.each(model.beforeBody.concat(model.afterBody), maxLineWidth);\r\n\r\n\t// Body lines may include some extra width due to the color box\r\n\twidthPadding = model.displayColors ? (bodyFontSize + 2) : 0;\r\n\thelpers$1.each(body, function(bodyItem) {\r\n\t\thelpers$1.each(bodyItem.before, maxLineWidth);\r\n\t\thelpers$1.each(bodyItem.lines, maxLineWidth);\r\n\t\thelpers$1.each(bodyItem.after, maxLineWidth);\r\n\t});\r\n\r\n\t// Reset back to 0\r\n\twidthPadding = 0;\r\n\r\n\t// Footer width\r\n\tctx.font = helpers$1.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily);\r\n\thelpers$1.each(model.footer, maxLineWidth);\r\n\r\n\t// Add padding\r\n\twidth += 2 * model.xPadding;\r\n\r\n\treturn {\r\n\t\twidth: width,\r\n\t\theight: height\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper to get the alignment of a tooltip given the size\r\n */\r\nfunction determineAlignment(tooltip, size) {\r\n\tvar model = tooltip._model;\r\n\tvar chart = tooltip._chart;\r\n\tvar chartArea = tooltip._chart.chartArea;\r\n\tvar xAlign = 'center';\r\n\tvar yAlign = 'center';\r\n\r\n\tif (model.y < size.height) {\r\n\t\tyAlign = 'top';\r\n\t} else if (model.y > (chart.height - size.height)) {\r\n\t\tyAlign = 'bottom';\r\n\t}\r\n\r\n\tvar lf, rf; // functions to determine left, right alignment\r\n\tvar olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart\r\n\tvar yf; // function to get the y alignment if the tooltip goes outside of the left or right edges\r\n\tvar midX = (chartArea.left + chartArea.right) / 2;\r\n\tvar midY = (chartArea.top + chartArea.bottom) / 2;\r\n\r\n\tif (yAlign === 'center') {\r\n\t\tlf = function(x) {\r\n\t\t\treturn x <= midX;\r\n\t\t};\r\n\t\trf = function(x) {\r\n\t\t\treturn x > midX;\r\n\t\t};\r\n\t} else {\r\n\t\tlf = function(x) {\r\n\t\t\treturn x <= (size.width / 2);\r\n\t\t};\r\n\t\trf = function(x) {\r\n\t\t\treturn x >= (chart.width - (size.width / 2));\r\n\t\t};\r\n\t}\r\n\r\n\tolf = function(x) {\r\n\t\treturn x + size.width + model.caretSize + model.caretPadding > chart.width;\r\n\t};\r\n\torf = function(x) {\r\n\t\treturn x - size.width - model.caretSize - model.caretPadding < 0;\r\n\t};\r\n\tyf = function(y) {\r\n\t\treturn y <= midY ? 'top' : 'bottom';\r\n\t};\r\n\r\n\tif (lf(model.x)) {\r\n\t\txAlign = 'left';\r\n\r\n\t\t// Is tooltip too wide and goes over the right side of the chart.?\r\n\t\tif (olf(model.x)) {\r\n\t\t\txAlign = 'center';\r\n\t\t\tyAlign = yf(model.y);\r\n\t\t}\r\n\t} else if (rf(model.x)) {\r\n\t\txAlign = 'right';\r\n\r\n\t\t// Is tooltip too wide and goes outside left edge of canvas?\r\n\t\tif (orf(model.x)) {\r\n\t\t\txAlign = 'center';\r\n\t\t\tyAlign = yf(model.y);\r\n\t\t}\r\n\t}\r\n\r\n\tvar opts = tooltip._options;\r\n\treturn {\r\n\t\txAlign: opts.xAlign ? opts.xAlign : xAlign,\r\n\t\tyAlign: opts.yAlign ? opts.yAlign : yAlign\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment\r\n */\r\nfunction getBackgroundPoint(vm, size, alignment, chart) {\r\n\t// Background Position\r\n\tvar x = vm.x;\r\n\tvar y = vm.y;\r\n\r\n\tvar caretSize = vm.caretSize;\r\n\tvar caretPadding = vm.caretPadding;\r\n\tvar cornerRadius = vm.cornerRadius;\r\n\tvar xAlign = alignment.xAlign;\r\n\tvar yAlign = alignment.yAlign;\r\n\tvar paddingAndSize = caretSize + caretPadding;\r\n\tvar radiusAndPadding = cornerRadius + caretPadding;\r\n\r\n\tif (xAlign === 'right') {\r\n\t\tx -= size.width;\r\n\t} else if (xAlign === 'center') {\r\n\t\tx -= (size.width / 2);\r\n\t\tif (x + size.width > chart.width) {\r\n\t\t\tx = chart.width - size.width;\r\n\t\t}\r\n\t\tif (x < 0) {\r\n\t\t\tx = 0;\r\n\t\t}\r\n\t}\r\n\r\n\tif (yAlign === 'top') {\r\n\t\ty += paddingAndSize;\r\n\t} else if (yAlign === 'bottom') {\r\n\t\ty -= size.height + paddingAndSize;\r\n\t} else {\r\n\t\ty -= (size.height / 2);\r\n\t}\r\n\r\n\tif (yAlign === 'center') {\r\n\t\tif (xAlign === 'left') {\r\n\t\t\tx += paddingAndSize;\r\n\t\t} else if (xAlign === 'right') {\r\n\t\t\tx -= paddingAndSize;\r\n\t\t}\r\n\t} else if (xAlign === 'left') {\r\n\t\tx -= radiusAndPadding;\r\n\t} else if (xAlign === 'right') {\r\n\t\tx += radiusAndPadding;\r\n\t}\r\n\r\n\treturn {\r\n\t\tx: x,\r\n\t\ty: y\r\n\t};\r\n}\r\n\r\nfunction getAlignedX(vm, align) {\r\n\treturn align === 'center'\r\n\t\t? vm.x + vm.width / 2\r\n\t\t: align === 'right'\r\n\t\t\t? vm.x + vm.width - vm.xPadding\r\n\t\t\t: vm.x + vm.xPadding;\r\n}\r\n\r\n/**\r\n * Helper to build before and after body lines\r\n */\r\nfunction getBeforeAfterBodyLines(callback) {\r\n\treturn pushOrConcat([], splitNewlines(callback));\r\n}\r\n\r\nvar exports$4 = core_element.extend({\r\n\tinitialize: function() {\r\n\t\tthis._model = getBaseModel(this._options);\r\n\t\tthis._lastActive = [];\r\n\t},\r\n\r\n\t// Get the title\r\n\t// Args are: (tooltipItem, data)\r\n\tgetTitle: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me._options;\r\n\t\tvar callbacks = opts.callbacks;\r\n\r\n\t\tvar beforeTitle = callbacks.beforeTitle.apply(me, arguments);\r\n\t\tvar title = callbacks.title.apply(me, arguments);\r\n\t\tvar afterTitle = callbacks.afterTitle.apply(me, arguments);\r\n\r\n\t\tvar lines = [];\r\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeTitle));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(title));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(afterTitle));\r\n\r\n\t\treturn lines;\r\n\t},\r\n\r\n\t// Args are: (tooltipItem, data)\r\n\tgetBeforeBody: function() {\r\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this, arguments));\r\n\t},\r\n\r\n\t// Args are: (tooltipItem, data)\r\n\tgetBody: function(tooltipItems, data) {\r\n\t\tvar me = this;\r\n\t\tvar callbacks = me._options.callbacks;\r\n\t\tvar bodyItems = [];\r\n\r\n\t\thelpers$1.each(tooltipItems, function(tooltipItem) {\r\n\t\t\tvar bodyItem = {\r\n\t\t\t\tbefore: [],\r\n\t\t\t\tlines: [],\r\n\t\t\t\tafter: []\r\n\t\t\t};\r\n\t\t\tpushOrConcat(bodyItem.before, splitNewlines(callbacks.beforeLabel.call(me, tooltipItem, data)));\r\n\t\t\tpushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data));\r\n\t\t\tpushOrConcat(bodyItem.after, splitNewlines(callbacks.afterLabel.call(me, tooltipItem, data)));\r\n\r\n\t\t\tbodyItems.push(bodyItem);\r\n\t\t});\r\n\r\n\t\treturn bodyItems;\r\n\t},\r\n\r\n\t// Args are: (tooltipItem, data)\r\n\tgetAfterBody: function() {\r\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this, arguments));\r\n\t},\r\n\r\n\t// Get the footer and beforeFooter and afterFooter lines\r\n\t// Args are: (tooltipItem, data)\r\n\tgetFooter: function() {\r\n\t\tvar me = this;\r\n\t\tvar callbacks = me._options.callbacks;\r\n\r\n\t\tvar beforeFooter = callbacks.beforeFooter.apply(me, arguments);\r\n\t\tvar footer = callbacks.footer.apply(me, arguments);\r\n\t\tvar afterFooter = callbacks.afterFooter.apply(me, arguments);\r\n\r\n\t\tvar lines = [];\r\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeFooter));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(footer));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(afterFooter));\r\n\r\n\t\treturn lines;\r\n\t},\r\n\r\n\tupdate: function(changed) {\r\n\t\tvar me = this;\r\n\t\tvar opts = me._options;\r\n\r\n\t\t// Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition\r\n\t\t// that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time\r\n\t\t// which breaks any animations.\r\n\t\tvar existingModel = me._model;\r\n\t\tvar model = me._model = getBaseModel(opts);\r\n\t\tvar active = me._active;\r\n\r\n\t\tvar data = me._data;\r\n\r\n\t\t// In the case where active.length === 0 we need to keep these at existing values for good animations\r\n\t\tvar alignment = {\r\n\t\t\txAlign: existingModel.xAlign,\r\n\t\t\tyAlign: existingModel.yAlign\r\n\t\t};\r\n\t\tvar backgroundPoint = {\r\n\t\t\tx: existingModel.x,\r\n\t\t\ty: existingModel.y\r\n\t\t};\r\n\t\tvar tooltipSize = {\r\n\t\t\twidth: existingModel.width,\r\n\t\t\theight: existingModel.height\r\n\t\t};\r\n\t\tvar tooltipPosition = {\r\n\t\t\tx: existingModel.caretX,\r\n\t\t\ty: existingModel.caretY\r\n\t\t};\r\n\r\n\t\tvar i, len;\r\n\r\n\t\tif (active.length) {\r\n\t\t\tmodel.opacity = 1;\r\n\r\n\t\t\tvar labelColors = [];\r\n\t\t\tvar labelTextColors = [];\r\n\t\t\ttooltipPosition = positioners[opts.position].call(me, active, me._eventPosition);\r\n\r\n\t\t\tvar tooltipItems = [];\r\n\t\t\tfor (i = 0, len = active.length; i < len; ++i) {\r\n\t\t\t\ttooltipItems.push(createTooltipItem(active[i]));\r\n\t\t\t}\r\n\r\n\t\t\t// If the user provided a filter function, use it to modify the tooltip items\r\n\t\t\tif (opts.filter) {\r\n\t\t\t\ttooltipItems = tooltipItems.filter(function(a) {\r\n\t\t\t\t\treturn opts.filter(a, data);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// If the user provided a sorting function, use it to modify the tooltip items\r\n\t\t\tif (opts.itemSort) {\r\n\t\t\t\ttooltipItems = tooltipItems.sort(function(a, b) {\r\n\t\t\t\t\treturn opts.itemSort(a, b, data);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Determine colors for boxes\r\n\t\t\thelpers$1.each(tooltipItems, function(tooltipItem) {\r\n\t\t\t\tlabelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart));\r\n\t\t\t\tlabelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart));\r\n\t\t\t});\r\n\r\n\r\n\t\t\t// Build the Text Lines\r\n\t\t\tmodel.title = me.getTitle(tooltipItems, data);\r\n\t\t\tmodel.beforeBody = me.getBeforeBody(tooltipItems, data);\r\n\t\t\tmodel.body = me.getBody(tooltipItems, data);\r\n\t\t\tmodel.afterBody = me.getAfterBody(tooltipItems, data);\r\n\t\t\tmodel.footer = me.getFooter(tooltipItems, data);\r\n\r\n\t\t\t// Initial positioning and colors\r\n\t\t\tmodel.x = tooltipPosition.x;\r\n\t\t\tmodel.y = tooltipPosition.y;\r\n\t\t\tmodel.caretPadding = opts.caretPadding;\r\n\t\t\tmodel.labelColors = labelColors;\r\n\t\t\tmodel.labelTextColors = labelTextColors;\r\n\r\n\t\t\t// data points\r\n\t\t\tmodel.dataPoints = tooltipItems;\r\n\r\n\t\t\t// We need to determine alignment of the tooltip\r\n\t\t\ttooltipSize = getTooltipSize(this, model);\r\n\t\t\talignment = determineAlignment(this, tooltipSize);\r\n\t\t\t// Final Size and Position\r\n\t\t\tbackgroundPoint = getBackgroundPoint(model, tooltipSize, alignment, me._chart);\r\n\t\t} else {\r\n\t\t\tmodel.opacity = 0;\r\n\t\t}\r\n\r\n\t\tmodel.xAlign = alignment.xAlign;\r\n\t\tmodel.yAlign = alignment.yAlign;\r\n\t\tmodel.x = backgroundPoint.x;\r\n\t\tmodel.y = backgroundPoint.y;\r\n\t\tmodel.width = tooltipSize.width;\r\n\t\tmodel.height = tooltipSize.height;\r\n\r\n\t\t// Point where the caret on the tooltip points to\r\n\t\tmodel.caretX = tooltipPosition.x;\r\n\t\tmodel.caretY = tooltipPosition.y;\r\n\r\n\t\tme._model = model;\r\n\r\n\t\tif (changed && opts.custom) {\r\n\t\t\topts.custom.call(me, model);\r\n\t\t}\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\tdrawCaret: function(tooltipPoint, size) {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar caretPosition = this.getCaretPosition(tooltipPoint, size, vm);\r\n\r\n\t\tctx.lineTo(caretPosition.x1, caretPosition.y1);\r\n\t\tctx.lineTo(caretPosition.x2, caretPosition.y2);\r\n\t\tctx.lineTo(caretPosition.x3, caretPosition.y3);\r\n\t},\r\n\tgetCaretPosition: function(tooltipPoint, size, vm) {\r\n\t\tvar x1, x2, x3, y1, y2, y3;\r\n\t\tvar caretSize = vm.caretSize;\r\n\t\tvar cornerRadius = vm.cornerRadius;\r\n\t\tvar xAlign = vm.xAlign;\r\n\t\tvar yAlign = vm.yAlign;\r\n\t\tvar ptX = tooltipPoint.x;\r\n\t\tvar ptY = tooltipPoint.y;\r\n\t\tvar width = size.width;\r\n\t\tvar height = size.height;\r\n\r\n\t\tif (yAlign === 'center') {\r\n\t\t\ty2 = ptY + (height / 2);\r\n\r\n\t\t\tif (xAlign === 'left') {\r\n\t\t\t\tx1 = ptX;\r\n\t\t\t\tx2 = x1 - caretSize;\r\n\t\t\t\tx3 = x1;\r\n\r\n\t\t\t\ty1 = y2 + caretSize;\r\n\t\t\t\ty3 = y2 - caretSize;\r\n\t\t\t} else {\r\n\t\t\t\tx1 = ptX + width;\r\n\t\t\t\tx2 = x1 + caretSize;\r\n\t\t\t\tx3 = x1;\r\n\r\n\t\t\t\ty1 = y2 - caretSize;\r\n\t\t\t\ty3 = y2 + caretSize;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (xAlign === 'left') {\r\n\t\t\t\tx2 = ptX + cornerRadius + (caretSize);\r\n\t\t\t\tx1 = x2 - caretSize;\r\n\t\t\t\tx3 = x2 + caretSize;\r\n\t\t\t} else if (xAlign === 'right') {\r\n\t\t\t\tx2 = ptX + width - cornerRadius - caretSize;\r\n\t\t\t\tx1 = x2 - caretSize;\r\n\t\t\t\tx3 = x2 + caretSize;\r\n\t\t\t} else {\r\n\t\t\t\tx2 = vm.caretX;\r\n\t\t\t\tx1 = x2 - caretSize;\r\n\t\t\t\tx3 = x2 + caretSize;\r\n\t\t\t}\r\n\t\t\tif (yAlign === 'top') {\r\n\t\t\t\ty1 = ptY;\r\n\t\t\t\ty2 = y1 - caretSize;\r\n\t\t\t\ty3 = y1;\r\n\t\t\t} else {\r\n\t\t\t\ty1 = ptY + height;\r\n\t\t\t\ty2 = y1 + caretSize;\r\n\t\t\t\ty3 = y1;\r\n\t\t\t\t// invert drawing order\r\n\t\t\t\tvar tmp = x3;\r\n\t\t\t\tx3 = x1;\r\n\t\t\t\tx1 = tmp;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3};\r\n\t},\r\n\r\n\tdrawTitle: function(pt, vm, ctx) {\r\n\t\tvar title = vm.title;\r\n\t\tvar length = title.length;\r\n\t\tvar titleFontSize, titleSpacing, i;\r\n\r\n\t\tif (length) {\r\n\t\t\tvar rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width);\r\n\r\n\t\t\tpt.x = getAlignedX(vm, vm._titleAlign);\r\n\r\n\t\t\tctx.textAlign = rtlHelper.textAlign(vm._titleAlign);\r\n\t\t\tctx.textBaseline = 'middle';\r\n\r\n\t\t\ttitleFontSize = vm.titleFontSize;\r\n\t\t\ttitleSpacing = vm.titleSpacing;\r\n\r\n\t\t\tctx.fillStyle = vm.titleFontColor;\r\n\t\t\tctx.font = helpers$1.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily);\r\n\r\n\t\t\tfor (i = 0; i < length; ++i) {\r\n\t\t\t\tctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFontSize / 2);\r\n\t\t\t\tpt.y += titleFontSize + titleSpacing; // Line Height and spacing\r\n\r\n\t\t\t\tif (i + 1 === length) {\r\n\t\t\t\t\tpt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tdrawBody: function(pt, vm, ctx) {\r\n\t\tvar bodyFontSize = vm.bodyFontSize;\r\n\t\tvar bodySpacing = vm.bodySpacing;\r\n\t\tvar bodyAlign = vm._bodyAlign;\r\n\t\tvar body = vm.body;\r\n\t\tvar drawColorBoxes = vm.displayColors;\r\n\t\tvar xLinePadding = 0;\r\n\t\tvar colorX = drawColorBoxes ? getAlignedX(vm, 'left') : 0;\r\n\r\n\t\tvar rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width);\r\n\r\n\t\tvar fillLineOfText = function(line) {\r\n\t\t\tctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyFontSize / 2);\r\n\t\t\tpt.y += bodyFontSize + bodySpacing;\r\n\t\t};\r\n\r\n\t\tvar bodyItem, textColor, labelColors, lines, i, j, ilen, jlen;\r\n\t\tvar bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\r\n\r\n\t\tctx.textAlign = bodyAlign;\r\n\t\tctx.textBaseline = 'middle';\r\n\t\tctx.font = helpers$1.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily);\r\n\r\n\t\tpt.x = getAlignedX(vm, bodyAlignForCalculation);\r\n\r\n\t\t// Before body lines\r\n\t\tctx.fillStyle = vm.bodyFontColor;\r\n\t\thelpers$1.each(vm.beforeBody, fillLineOfText);\r\n\r\n\t\txLinePadding = drawColorBoxes && bodyAlignForCalculation !== 'right'\r\n\t\t\t? bodyAlign === 'center' ? (bodyFontSize / 2 + 1) : (bodyFontSize + 2)\r\n\t\t\t: 0;\r\n\r\n\t\t// Draw body lines now\r\n\t\tfor (i = 0, ilen = body.length; i < ilen; ++i) {\r\n\t\t\tbodyItem = body[i];\r\n\t\t\ttextColor = vm.labelTextColors[i];\r\n\t\t\tlabelColors = vm.labelColors[i];\r\n\r\n\t\t\tctx.fillStyle = textColor;\r\n\t\t\thelpers$1.each(bodyItem.before, fillLineOfText);\r\n\r\n\t\t\tlines = bodyItem.lines;\r\n\t\t\tfor (j = 0, jlen = lines.length; j < jlen; ++j) {\r\n\t\t\t\t// Draw Legend-like boxes if needed\r\n\t\t\t\tif (drawColorBoxes) {\r\n\t\t\t\t\tvar rtlColorX = rtlHelper.x(colorX);\r\n\r\n\t\t\t\t\t// Fill a white rect so that colours merge nicely if the opacity is < 1\r\n\t\t\t\t\tctx.fillStyle = vm.legendColorBackground;\r\n\t\t\t\t\tctx.fillRect(rtlHelper.leftForLtr(rtlColorX, bodyFontSize), pt.y, bodyFontSize, bodyFontSize);\r\n\r\n\t\t\t\t\t// Border\r\n\t\t\t\t\tctx.lineWidth = 1;\r\n\t\t\t\t\tctx.strokeStyle = labelColors.borderColor;\r\n\t\t\t\t\tctx.strokeRect(rtlHelper.leftForLtr(rtlColorX, bodyFontSize), pt.y, bodyFontSize, bodyFontSize);\r\n\r\n\t\t\t\t\t// Inner square\r\n\t\t\t\t\tctx.fillStyle = labelColors.backgroundColor;\r\n\t\t\t\t\tctx.fillRect(rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), bodyFontSize - 2), pt.y + 1, bodyFontSize - 2, bodyFontSize - 2);\r\n\t\t\t\t\tctx.fillStyle = textColor;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfillLineOfText(lines[j]);\r\n\t\t\t}\r\n\r\n\t\t\thelpers$1.each(bodyItem.after, fillLineOfText);\r\n\t\t}\r\n\r\n\t\t// Reset back to 0 for after body\r\n\t\txLinePadding = 0;\r\n\r\n\t\t// After body lines\r\n\t\thelpers$1.each(vm.afterBody, fillLineOfText);\r\n\t\tpt.y -= bodySpacing; // Remove last body spacing\r\n\t},\r\n\r\n\tdrawFooter: function(pt, vm, ctx) {\r\n\t\tvar footer = vm.footer;\r\n\t\tvar length = footer.length;\r\n\t\tvar footerFontSize, i;\r\n\r\n\t\tif (length) {\r\n\t\t\tvar rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width);\r\n\r\n\t\t\tpt.x = getAlignedX(vm, vm._footerAlign);\r\n\t\t\tpt.y += vm.footerMarginTop;\r\n\r\n\t\t\tctx.textAlign = rtlHelper.textAlign(vm._footerAlign);\r\n\t\t\tctx.textBaseline = 'middle';\r\n\r\n\t\t\tfooterFontSize = vm.footerFontSize;\r\n\r\n\t\t\tctx.fillStyle = vm.footerFontColor;\r\n\t\t\tctx.font = helpers$1.fontString(footerFontSize, vm._footerFontStyle, vm._footerFontFamily);\r\n\r\n\t\t\tfor (i = 0; i < length; ++i) {\r\n\t\t\t\tctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFontSize / 2);\r\n\t\t\t\tpt.y += footerFontSize + vm.footerSpacing;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tdrawBackground: function(pt, vm, ctx, tooltipSize) {\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\t\tctx.strokeStyle = vm.borderColor;\r\n\t\tctx.lineWidth = vm.borderWidth;\r\n\t\tvar xAlign = vm.xAlign;\r\n\t\tvar yAlign = vm.yAlign;\r\n\t\tvar x = pt.x;\r\n\t\tvar y = pt.y;\r\n\t\tvar width = tooltipSize.width;\r\n\t\tvar height = tooltipSize.height;\r\n\t\tvar radius = vm.cornerRadius;\r\n\r\n\t\tctx.beginPath();\r\n\t\tctx.moveTo(x + radius, y);\r\n\t\tif (yAlign === 'top') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x + width - radius, y);\r\n\t\tctx.quadraticCurveTo(x + width, y, x + width, y + radius);\r\n\t\tif (yAlign === 'center' && xAlign === 'right') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x + width, y + height - radius);\r\n\t\tctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\r\n\t\tif (yAlign === 'bottom') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x + radius, y + height);\r\n\t\tctx.quadraticCurveTo(x, y + height, x, y + height - radius);\r\n\t\tif (yAlign === 'center' && xAlign === 'left') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x, y + radius);\r\n\t\tctx.quadraticCurveTo(x, y, x + radius, y);\r\n\t\tctx.closePath();\r\n\r\n\t\tctx.fill();\r\n\r\n\t\tif (vm.borderWidth > 0) {\r\n\t\t\tctx.stroke();\r\n\t\t}\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm.opacity === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar tooltipSize = {\r\n\t\t\twidth: vm.width,\r\n\t\t\theight: vm.height\r\n\t\t};\r\n\t\tvar pt = {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\r\n\t\t// IE11/Edge does not like very small opacities, so snap to 0\r\n\t\tvar opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity;\r\n\r\n\t\t// Truthy/falsey value for empty tooltip\r\n\t\tvar hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length;\r\n\r\n\t\tif (this._options.enabled && hasTooltipContent) {\r\n\t\t\tctx.save();\r\n\t\t\tctx.globalAlpha = opacity;\r\n\r\n\t\t\t// Draw Background\r\n\t\t\tthis.drawBackground(pt, vm, ctx, tooltipSize);\r\n\r\n\t\t\t// Draw Title, Body, and Footer\r\n\t\t\tpt.y += vm.yPadding;\r\n\r\n\t\t\thelpers$1.rtl.overrideTextDirection(ctx, vm.textDirection);\r\n\r\n\t\t\t// Titles\r\n\t\t\tthis.drawTitle(pt, vm, ctx);\r\n\r\n\t\t\t// Body\r\n\t\t\tthis.drawBody(pt, vm, ctx);\r\n\r\n\t\t\t// Footer\r\n\t\t\tthis.drawFooter(pt, vm, ctx);\r\n\r\n\t\t\thelpers$1.rtl.restoreTextDirection(ctx, vm.textDirection);\r\n\r\n\t\t\tctx.restore();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Handle an event\r\n\t * @private\r\n\t * @param {IEvent} event - The event to handle\r\n\t * @returns {boolean} true if the tooltip changed\r\n\t */\r\n\thandleEvent: function(e) {\r\n\t\tvar me = this;\r\n\t\tvar options = me._options;\r\n\t\tvar changed = false;\r\n\r\n\t\tme._lastActive = me._lastActive || [];\r\n\r\n\t\t// Find Active Elements for tooltips\r\n\t\tif (e.type === 'mouseout') {\r\n\t\t\tme._active = [];\r\n\t\t} else {\r\n\t\t\tme._active = me._chart.getElementsAtEventForMode(e, options.mode, options);\r\n\t\t\tif (options.reverse) {\r\n\t\t\t\tme._active.reverse();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Remember Last Actives\r\n\t\tchanged = !helpers$1.arrayEquals(me._active, me._lastActive);\r\n\r\n\t\t// Only handle target event on tooltip change\r\n\t\tif (changed) {\r\n\t\t\tme._lastActive = me._active;\r\n\r\n\t\t\tif (options.enabled || options.custom) {\r\n\t\t\t\tme._eventPosition = {\r\n\t\t\t\t\tx: e.x,\r\n\t\t\t\t\ty: e.y\r\n\t\t\t\t};\r\n\r\n\t\t\t\tme.update(true);\r\n\t\t\t\tme.pivot();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn changed;\r\n\t}\r\n});\r\n\r\n/**\r\n * @namespace Chart.Tooltip.positioners\r\n */\r\nvar positioners_1 = positioners;\r\n\r\nvar core_tooltip = exports$4;\ncore_tooltip.positioners = positioners_1;\n\nvar valueOrDefault$9 = helpers$1.valueOrDefault;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {},\r\n\tevents: [\r\n\t\t'mousemove',\r\n\t\t'mouseout',\r\n\t\t'click',\r\n\t\t'touchstart',\r\n\t\t'touchmove'\r\n\t],\r\n\thover: {\r\n\t\tonHover: null,\r\n\t\tmode: 'nearest',\r\n\t\tintersect: true,\r\n\t\tanimationDuration: 400\r\n\t},\r\n\tonClick: null,\r\n\tmaintainAspectRatio: true,\r\n\tresponsive: true,\r\n\tresponsiveAnimationDuration: 0\r\n});\r\n\r\n/**\r\n * Recursively merge the given config objects representing the `scales` option\r\n * by incorporating scale defaults in `xAxes` and `yAxes` array items, then\r\n * returns a deep copy of the result, thus doesn't alter inputs.\r\n */\r\nfunction mergeScaleConfig(/* config objects ... */) {\r\n\treturn helpers$1.merge(Object.create(null), [].slice.call(arguments), {\r\n\t\tmerger: function(key, target, source, options) {\r\n\t\t\tif (key === 'xAxes' || key === 'yAxes') {\r\n\t\t\t\tvar slen = source[key].length;\r\n\t\t\t\tvar i, type, scale;\r\n\r\n\t\t\t\tif (!target[key]) {\r\n\t\t\t\t\ttarget[key] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (i = 0; i < slen; ++i) {\r\n\t\t\t\t\tscale = source[key][i];\r\n\t\t\t\t\ttype = valueOrDefault$9(scale.type, key === 'xAxes' ? 'category' : 'linear');\r\n\r\n\t\t\t\t\tif (i >= target[key].length) {\r\n\t\t\t\t\t\ttarget[key].push({});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) {\r\n\t\t\t\t\t\t// new/untyped scale or type changed: let's apply the new defaults\r\n\t\t\t\t\t\t// then merge source scale to correctly overwrite the defaults.\r\n\t\t\t\t\t\thelpers$1.merge(target[key][i], [core_scaleService.getScaleDefaults(type), scale]);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// scales type are the same\r\n\t\t\t\t\t\thelpers$1.merge(target[key][i], scale);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\thelpers$1._merger(key, target, source, options);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n\r\n/**\r\n * Recursively merge the given config objects as the root options by handling\r\n * default scale options for the `scales` and `scale` properties, then returns\r\n * a deep copy of the result, thus doesn't alter inputs.\r\n */\r\nfunction mergeConfig(/* config objects ... */) {\r\n\treturn helpers$1.merge(Object.create(null), [].slice.call(arguments), {\r\n\t\tmerger: function(key, target, source, options) {\r\n\t\t\tvar tval = target[key] || Object.create(null);\r\n\t\t\tvar sval = source[key];\r\n\r\n\t\t\tif (key === 'scales') {\r\n\t\t\t\t// scale config merging is complex. Add our own function here for that\r\n\t\t\t\ttarget[key] = mergeScaleConfig(tval, sval);\r\n\t\t\t} else if (key === 'scale') {\r\n\t\t\t\t// used in polar area & radar charts since there is only one scale\r\n\t\t\t\ttarget[key] = helpers$1.merge(tval, [core_scaleService.getScaleDefaults(sval.type), sval]);\r\n\t\t\t} else {\r\n\t\t\t\thelpers$1._merger(key, target, source, options);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction initConfig(config) {\r\n\tconfig = config || Object.create(null);\r\n\r\n\t// Do NOT use mergeConfig for the data object because this method merges arrays\r\n\t// and so would change references to labels and datasets, preventing data updates.\r\n\tvar data = config.data = config.data || {};\r\n\tdata.datasets = data.datasets || [];\r\n\tdata.labels = data.labels || [];\r\n\r\n\tconfig.options = mergeConfig(\r\n\t\tcore_defaults.global,\r\n\t\tcore_defaults[config.type],\r\n\t\tconfig.options || {});\r\n\r\n\treturn config;\r\n}\r\n\r\nfunction updateConfig(chart) {\r\n\tvar newOptions = chart.options;\r\n\r\n\thelpers$1.each(chart.scales, function(scale) {\r\n\t\tcore_layouts.removeBox(chart, scale);\r\n\t});\r\n\r\n\tnewOptions = mergeConfig(\r\n\t\tcore_defaults.global,\r\n\t\tcore_defaults[chart.config.type],\r\n\t\tnewOptions);\r\n\r\n\tchart.options = chart.config.options = newOptions;\r\n\tchart.ensureScalesHaveIDs();\r\n\tchart.buildOrUpdateScales();\r\n\r\n\t// Tooltip\r\n\tchart.tooltip._options = newOptions.tooltips;\r\n\tchart.tooltip.initialize();\r\n}\r\n\r\nfunction nextAvailableScaleId(axesOpts, prefix, index) {\r\n\tvar id;\r\n\tvar hasId = function(obj) {\r\n\t\treturn obj.id === id;\r\n\t};\r\n\r\n\tdo {\r\n\t\tid = prefix + index++;\r\n\t} while (helpers$1.findIndex(axesOpts, hasId) >= 0);\r\n\r\n\treturn id;\r\n}\r\n\r\nfunction positionIsHorizontal(position) {\r\n\treturn position === 'top' || position === 'bottom';\r\n}\r\n\r\nfunction compare2Level(l1, l2) {\r\n\treturn function(a, b) {\r\n\t\treturn a[l1] === b[l1]\r\n\t\t\t? a[l2] - b[l2]\r\n\t\t\t: a[l1] - b[l1];\r\n\t};\r\n}\r\n\r\nvar Chart = function(item, config) {\r\n\tthis.construct(item, config);\r\n\treturn this;\r\n};\r\n\r\nhelpers$1.extend(Chart.prototype, /** @lends Chart */ {\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tconstruct: function(item, config) {\r\n\t\tvar me = this;\r\n\r\n\t\tconfig = initConfig(config);\r\n\r\n\t\tvar context = platform.acquireContext(item, config);\r\n\t\tvar canvas = context && context.canvas;\r\n\t\tvar height = canvas && canvas.height;\r\n\t\tvar width = canvas && canvas.width;\r\n\r\n\t\tme.id = helpers$1.uid();\r\n\t\tme.ctx = context;\r\n\t\tme.canvas = canvas;\r\n\t\tme.config = config;\r\n\t\tme.width = width;\r\n\t\tme.height = height;\r\n\t\tme.aspectRatio = height ? width / height : null;\r\n\t\tme.options = config.options;\r\n\t\tme._bufferedRender = false;\r\n\t\tme._layers = [];\r\n\r\n\t\t/**\r\n\t\t * Provided for backward compatibility, Chart and Chart.Controller have been merged,\r\n\t\t * the \"instance\" still need to be defined since it might be called from plugins.\r\n\t\t * @prop Chart#chart\r\n\t\t * @deprecated since version 2.6.0\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\tme.chart = me;\r\n\t\tme.controller = me; // chart.chart.controller #inception\r\n\r\n\t\t// Add the chart instance to the global namespace\r\n\t\tChart.instances[me.id] = me;\r\n\r\n\t\t// Define alias to the config data: `chart.data === chart.config.data`\r\n\t\tObject.defineProperty(me, 'data', {\r\n\t\t\tget: function() {\r\n\t\t\t\treturn me.config.data;\r\n\t\t\t},\r\n\t\t\tset: function(value) {\r\n\t\t\t\tme.config.data = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (!context || !canvas) {\r\n\t\t\t// The given item is not a compatible context2d element, let's return before finalizing\r\n\t\t\t// the chart initialization but after setting basic chart / controller properties that\r\n\t\t\t// can help to figure out that the chart is not valid (e.g chart.canvas !== null);\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/2807\r\n\t\t\tconsole.error(\"Failed to create chart: can't acquire context from the given item\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tme.initialize();\r\n\t\tme.update();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tinitialize: function() {\r\n\t\tvar me = this;\r\n\r\n\t\t// Before init plugin notification\r\n\t\tcore_plugins.notify(me, 'beforeInit');\r\n\r\n\t\thelpers$1.retinaScale(me, me.options.devicePixelRatio);\r\n\r\n\t\tme.bindEvents();\r\n\r\n\t\tif (me.options.responsive) {\r\n\t\t\t// Initial resize before chart draws (must be silent to preserve initial animations).\r\n\t\t\tme.resize(true);\r\n\t\t}\r\n\r\n\t\tme.initToolTip();\r\n\r\n\t\t// After init plugin notification\r\n\t\tcore_plugins.notify(me, 'afterInit');\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\tclear: function() {\r\n\t\thelpers$1.canvas.clear(this);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tstop: function() {\r\n\t\t// Stops any current animation loop occurring\r\n\t\tcore_animations.cancelAnimation(this);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tresize: function(silent) {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options;\r\n\t\tvar canvas = me.canvas;\r\n\t\tvar aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null;\r\n\r\n\t\t// the canvas render width and height will be casted to integers so make sure that\r\n\t\t// the canvas display style uses the same integer values to avoid blurring effect.\r\n\r\n\t\t// Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collapsed\r\n\t\tvar newWidth = Math.max(0, Math.floor(helpers$1.getMaximumWidth(canvas)));\r\n\t\tvar newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers$1.getMaximumHeight(canvas)));\r\n\r\n\t\tif (me.width === newWidth && me.height === newHeight) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tcanvas.width = me.width = newWidth;\r\n\t\tcanvas.height = me.height = newHeight;\r\n\t\tcanvas.style.width = newWidth + 'px';\r\n\t\tcanvas.style.height = newHeight + 'px';\r\n\r\n\t\thelpers$1.retinaScale(me, options.devicePixelRatio);\r\n\r\n\t\tif (!silent) {\r\n\t\t\t// Notify any plugins about the resize\r\n\t\t\tvar newSize = {width: newWidth, height: newHeight};\r\n\t\t\tcore_plugins.notify(me, 'resize', [newSize]);\r\n\r\n\t\t\t// Notify of resize\r\n\t\t\tif (options.onResize) {\r\n\t\t\t\toptions.onResize(me, newSize);\r\n\t\t\t}\r\n\r\n\t\t\tme.stop();\r\n\t\t\tme.update({\r\n\t\t\t\tduration: options.responsiveAnimationDuration\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\tensureScalesHaveIDs: function() {\r\n\t\tvar options = this.options;\r\n\t\tvar scalesOptions = options.scales || {};\r\n\t\tvar scaleOptions = options.scale;\r\n\r\n\t\thelpers$1.each(scalesOptions.xAxes, function(xAxisOptions, index) {\r\n\t\t\tif (!xAxisOptions.id) {\r\n\t\t\t\txAxisOptions.id = nextAvailableScaleId(scalesOptions.xAxes, 'x-axis-', index);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\thelpers$1.each(scalesOptions.yAxes, function(yAxisOptions, index) {\r\n\t\t\tif (!yAxisOptions.id) {\r\n\t\t\t\tyAxisOptions.id = nextAvailableScaleId(scalesOptions.yAxes, 'y-axis-', index);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (scaleOptions) {\r\n\t\t\tscaleOptions.id = scaleOptions.id || 'scale';\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Builds a map of scale ID to scale object for future lookup.\r\n\t */\r\n\tbuildOrUpdateScales: function() {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options;\r\n\t\tvar scales = me.scales || {};\r\n\t\tvar items = [];\r\n\t\tvar updated = Object.keys(scales).reduce(function(obj, id) {\r\n\t\t\tobj[id] = false;\r\n\t\t\treturn obj;\r\n\t\t}, {});\r\n\r\n\t\tif (options.scales) {\r\n\t\t\titems = items.concat(\r\n\t\t\t\t(options.scales.xAxes || []).map(function(xAxisOptions) {\r\n\t\t\t\t\treturn {options: xAxisOptions, dtype: 'category', dposition: 'bottom'};\r\n\t\t\t\t}),\r\n\t\t\t\t(options.scales.yAxes || []).map(function(yAxisOptions) {\r\n\t\t\t\t\treturn {options: yAxisOptions, dtype: 'linear', dposition: 'left'};\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (options.scale) {\r\n\t\t\titems.push({\r\n\t\t\t\toptions: options.scale,\r\n\t\t\t\tdtype: 'radialLinear',\r\n\t\t\t\tisDefault: true,\r\n\t\t\t\tdposition: 'chartArea'\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\thelpers$1.each(items, function(item) {\r\n\t\t\tvar scaleOptions = item.options;\r\n\t\t\tvar id = scaleOptions.id;\r\n\t\t\tvar scaleType = valueOrDefault$9(scaleOptions.type, item.dtype);\r\n\r\n\t\t\tif (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) {\r\n\t\t\t\tscaleOptions.position = item.dposition;\r\n\t\t\t}\r\n\r\n\t\t\tupdated[id] = true;\r\n\t\t\tvar scale = null;\r\n\t\t\tif (id in scales && scales[id].type === scaleType) {\r\n\t\t\t\tscale = scales[id];\r\n\t\t\t\tscale.options = scaleOptions;\r\n\t\t\t\tscale.ctx = me.ctx;\r\n\t\t\t\tscale.chart = me;\r\n\t\t\t} else {\r\n\t\t\t\tvar scaleClass = core_scaleService.getScaleConstructor(scaleType);\r\n\t\t\t\tif (!scaleClass) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tscale = new scaleClass({\r\n\t\t\t\t\tid: id,\r\n\t\t\t\t\ttype: scaleType,\r\n\t\t\t\t\toptions: scaleOptions,\r\n\t\t\t\t\tctx: me.ctx,\r\n\t\t\t\t\tchart: me\r\n\t\t\t\t});\r\n\t\t\t\tscales[scale.id] = scale;\r\n\t\t\t}\r\n\r\n\t\t\tscale.mergeTicksOptions();\r\n\r\n\t\t\t// TODO(SB): I think we should be able to remove this custom case (options.scale)\r\n\t\t\t// and consider it as a regular scale part of the \"scales\"\" map only! This would\r\n\t\t\t// make the logic easier and remove some useless? custom code.\r\n\t\t\tif (item.isDefault) {\r\n\t\t\t\tme.scale = scale;\r\n\t\t\t}\r\n\t\t});\r\n\t\t// clear up discarded scales\r\n\t\thelpers$1.each(updated, function(hasUpdated, id) {\r\n\t\t\tif (!hasUpdated) {\r\n\t\t\t\tdelete scales[id];\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tme.scales = scales;\r\n\r\n\t\tcore_scaleService.addScalesToLayout(this);\r\n\t},\r\n\r\n\tbuildOrUpdateControllers: function() {\r\n\t\tvar me = this;\r\n\t\tvar newControllers = [];\r\n\t\tvar datasets = me.data.datasets;\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = datasets.length; i < ilen; i++) {\r\n\t\t\tvar dataset = datasets[i];\r\n\t\t\tvar meta = me.getDatasetMeta(i);\r\n\t\t\tvar type = dataset.type || me.config.type;\r\n\r\n\t\t\tif (meta.type && meta.type !== type) {\r\n\t\t\t\tme.destroyDatasetMeta(i);\r\n\t\t\t\tmeta = me.getDatasetMeta(i);\r\n\t\t\t}\r\n\t\t\tmeta.type = type;\r\n\t\t\tmeta.order = dataset.order || 0;\r\n\t\t\tmeta.index = i;\r\n\r\n\t\t\tif (meta.controller) {\r\n\t\t\t\tmeta.controller.updateIndex(i);\r\n\t\t\t\tmeta.controller.linkScales();\r\n\t\t\t} else {\r\n\t\t\t\tvar ControllerClass = controllers[meta.type];\r\n\t\t\t\tif (ControllerClass === undefined) {\r\n\t\t\t\t\tthrow new Error('\"' + meta.type + '\" is not a chart type.');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tmeta.controller = new ControllerClass(me, i);\r\n\t\t\t\tnewControllers.push(meta.controller);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn newControllers;\r\n\t},\r\n\r\n\t/**\r\n\t * Reset the elements of all datasets\r\n\t * @private\r\n\t */\r\n\tresetElements: function() {\r\n\t\tvar me = this;\r\n\t\thelpers$1.each(me.data.datasets, function(dataset, datasetIndex) {\r\n\t\t\tme.getDatasetMeta(datasetIndex).controller.reset();\r\n\t\t}, me);\r\n\t},\r\n\r\n\t/**\r\n\t* Resets the chart back to it's state before the initial animation\r\n\t*/\r\n\treset: function() {\r\n\t\tthis.resetElements();\r\n\t\tthis.tooltip.initialize();\r\n\t},\r\n\r\n\tupdate: function(config) {\r\n\t\tvar me = this;\r\n\t\tvar i, ilen;\r\n\r\n\t\tif (!config || typeof config !== 'object') {\r\n\t\t\t// backwards compatibility\r\n\t\t\tconfig = {\r\n\t\t\t\tduration: config,\r\n\t\t\t\tlazy: arguments[1]\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tupdateConfig(me);\r\n\r\n\t\t// plugins options references might have change, let's invalidate the cache\r\n\t\t// https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\r\n\t\tcore_plugins._invalidate(me);\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeUpdate') === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// In case the entire data object changed\r\n\t\tme.tooltip._data = me.data;\r\n\r\n\t\t// Make sure dataset controllers are updated and new controllers are reset\r\n\t\tvar newControllers = me.buildOrUpdateControllers();\r\n\r\n\t\t// Make sure all dataset controllers have correct meta data counts\r\n\t\tfor (i = 0, ilen = me.data.datasets.length; i < ilen; i++) {\r\n\t\t\tme.getDatasetMeta(i).controller.buildOrUpdateElements();\r\n\t\t}\r\n\r\n\t\tme.updateLayout();\r\n\r\n\t\t// Can only reset the new controllers after the scales have been updated\r\n\t\tif (me.options.animation && me.options.animation.duration) {\r\n\t\t\thelpers$1.each(newControllers, function(controller) {\r\n\t\t\t\tcontroller.reset();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tme.updateDatasets();\r\n\r\n\t\t// Need to reset tooltip in case it is displayed with elements that are removed\r\n\t\t// after update.\r\n\t\tme.tooltip.initialize();\r\n\r\n\t\t// Last active contains items that were previously in the tooltip.\r\n\t\t// When we reset the tooltip, we need to clear it\r\n\t\tme.lastActive = [];\r\n\r\n\t\t// Do this before render so that any plugins that need final scale updates can use it\r\n\t\tcore_plugins.notify(me, 'afterUpdate');\r\n\r\n\t\tme._layers.sort(compare2Level('z', '_idx'));\r\n\r\n\t\tif (me._bufferedRender) {\r\n\t\t\tme._bufferedRequest = {\r\n\t\t\t\tduration: config.duration,\r\n\t\t\t\teasing: config.easing,\r\n\t\t\t\tlazy: config.lazy\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tme.render(config);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\r\n\t * hook, in which case, plugins will not be called on `afterLayout`.\r\n\t * @private\r\n\t */\r\n\tupdateLayout: function() {\r\n\t\tvar me = this;\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeLayout') === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tcore_layouts.update(this, this.width, this.height);\r\n\r\n\t\tme._layers = [];\r\n\t\thelpers$1.each(me.boxes, function(box) {\r\n\t\t\t// _configure is called twice, once in core.scale.update and once here.\r\n\t\t\t// Here the boxes are fully updated and at their final positions.\r\n\t\t\tif (box._configure) {\r\n\t\t\t\tbox._configure();\r\n\t\t\t}\r\n\t\t\tme._layers.push.apply(me._layers, box._layers());\r\n\t\t}, me);\r\n\r\n\t\tme._layers.forEach(function(item, index) {\r\n\t\t\titem._idx = index;\r\n\t\t});\r\n\r\n\t\t/**\r\n\t\t * Provided for backward compatibility, use `afterLayout` instead.\r\n\t\t * @method IPlugin#afterScaleUpdate\r\n\t\t * @deprecated since version 2.5.0\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\tcore_plugins.notify(me, 'afterScaleUpdate');\r\n\t\tcore_plugins.notify(me, 'afterLayout');\r\n\t},\r\n\r\n\t/**\r\n\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\r\n\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\r\n\t * @private\r\n\t */\r\n\tupdateDatasets: function() {\r\n\t\tvar me = this;\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeDatasetsUpdate') === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfor (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\r\n\t\t\tme.updateDataset(i);\r\n\t\t}\r\n\r\n\t\tcore_plugins.notify(me, 'afterDatasetsUpdate');\r\n\t},\r\n\r\n\t/**\r\n\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\r\n\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\r\n\t * @private\r\n\t */\r\n\tupdateDataset: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getDatasetMeta(index);\r\n\t\tvar args = {\r\n\t\t\tmeta: meta,\r\n\t\t\tindex: index\r\n\t\t};\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmeta.controller._update();\r\n\r\n\t\tcore_plugins.notify(me, 'afterDatasetUpdate', [args]);\r\n\t},\r\n\r\n\trender: function(config) {\r\n\t\tvar me = this;\r\n\r\n\t\tif (!config || typeof config !== 'object') {\r\n\t\t\t// backwards compatibility\r\n\t\t\tconfig = {\r\n\t\t\t\tduration: config,\r\n\t\t\t\tlazy: arguments[1]\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tvar animationOptions = me.options.animation;\r\n\t\tvar duration = valueOrDefault$9(config.duration, animationOptions && animationOptions.duration);\r\n\t\tvar lazy = config.lazy;\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeRender') === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar onComplete = function(animation) {\r\n\t\t\tcore_plugins.notify(me, 'afterRender');\r\n\t\t\thelpers$1.callback(animationOptions && animationOptions.onComplete, [animation], me);\r\n\t\t};\r\n\r\n\t\tif (animationOptions && duration) {\r\n\t\t\tvar animation = new core_animation({\r\n\t\t\t\tnumSteps: duration / 16.66, // 60 fps\r\n\t\t\t\teasing: config.easing || animationOptions.easing,\r\n\r\n\t\t\t\trender: function(chart, animationObject) {\r\n\t\t\t\t\tvar easingFunction = helpers$1.easing.effects[animationObject.easing];\r\n\t\t\t\t\tvar currentStep = animationObject.currentStep;\r\n\t\t\t\t\tvar stepDecimal = currentStep / animationObject.numSteps;\r\n\r\n\t\t\t\t\tchart.draw(easingFunction(stepDecimal), stepDecimal, currentStep);\r\n\t\t\t\t},\r\n\r\n\t\t\t\tonAnimationProgress: animationOptions.onProgress,\r\n\t\t\t\tonAnimationComplete: onComplete\r\n\t\t\t});\r\n\r\n\t\t\tcore_animations.addAnimation(me, animation, duration, lazy);\r\n\t\t} else {\r\n\t\t\tme.draw();\r\n\r\n\t\t\t// See https://github.com/chartjs/Chart.js/issues/3781\r\n\t\t\tonComplete(new core_animation({numSteps: 0, chart: me}));\r\n\t\t}\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\tdraw: function(easingValue) {\r\n\t\tvar me = this;\r\n\t\tvar i, layers;\r\n\r\n\t\tme.clear();\r\n\r\n\t\tif (helpers$1.isNullOrUndef(easingValue)) {\r\n\t\t\teasingValue = 1;\r\n\t\t}\r\n\r\n\t\tme.transition(easingValue);\r\n\r\n\t\tif (me.width <= 0 || me.height <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeDraw', [easingValue]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Because of plugin hooks (before/afterDatasetsDraw), datasets can't\r\n\t\t// currently be part of layers. Instead, we draw\r\n\t\t// layers <= 0 before(default, backward compat), and the rest after\r\n\t\tlayers = me._layers;\r\n\t\tfor (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\r\n\t\t\tlayers[i].draw(me.chartArea);\r\n\t\t}\r\n\r\n\t\tme.drawDatasets(easingValue);\r\n\r\n\t\t// Rest of layers\r\n\t\tfor (; i < layers.length; ++i) {\r\n\t\t\tlayers[i].draw(me.chartArea);\r\n\t\t}\r\n\r\n\t\tme._drawTooltip(easingValue);\r\n\r\n\t\tcore_plugins.notify(me, 'afterDraw', [easingValue]);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\ttransition: function(easingValue) {\r\n\t\tvar me = this;\r\n\r\n\t\tfor (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\tif (me.isDatasetVisible(i)) {\r\n\t\t\t\tme.getDatasetMeta(i).controller.transition(easingValue);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.tooltip.transition(easingValue);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getSortedDatasetMetas: function(filterVisible) {\r\n\t\tvar me = this;\r\n\t\tvar datasets = me.data.datasets || [];\r\n\t\tvar result = [];\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = datasets.length; i < ilen; ++i) {\r\n\t\t\tif (!filterVisible || me.isDatasetVisible(i)) {\r\n\t\t\t\tresult.push(me.getDatasetMeta(i));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tresult.sort(compare2Level('order', 'index'));\r\n\r\n\t\treturn result;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getSortedVisibleDatasetMetas: function() {\r\n\t\treturn this._getSortedDatasetMetas(true);\r\n\t},\r\n\r\n\t/**\r\n\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\r\n\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\r\n\t * @private\r\n\t */\r\n\tdrawDatasets: function(easingValue) {\r\n\t\tvar me = this;\r\n\t\tvar metasets, i;\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmetasets = me._getSortedVisibleDatasetMetas();\r\n\t\tfor (i = metasets.length - 1; i >= 0; --i) {\r\n\t\t\tme.drawDataset(metasets[i], easingValue);\r\n\t\t}\r\n\r\n\t\tcore_plugins.notify(me, 'afterDatasetsDraw', [easingValue]);\r\n\t},\r\n\r\n\t/**\r\n\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\r\n\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\r\n\t * @private\r\n\t */\r\n\tdrawDataset: function(meta, easingValue) {\r\n\t\tvar me = this;\r\n\t\tvar args = {\r\n\t\t\tmeta: meta,\r\n\t\t\tindex: meta.index,\r\n\t\t\teasingValue: easingValue\r\n\t\t};\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeDatasetDraw', [args]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmeta.controller.draw(easingValue);\r\n\r\n\t\tcore_plugins.notify(me, 'afterDatasetDraw', [args]);\r\n\t},\r\n\r\n\t/**\r\n\t * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw`\r\n\t * hook, in which case, plugins will not be called on `afterTooltipDraw`.\r\n\t * @private\r\n\t */\r\n\t_drawTooltip: function(easingValue) {\r\n\t\tvar me = this;\r\n\t\tvar tooltip = me.tooltip;\r\n\t\tvar args = {\r\n\t\t\ttooltip: tooltip,\r\n\t\t\teasingValue: easingValue\r\n\t\t};\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeTooltipDraw', [args]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttooltip.draw();\r\n\r\n\t\tcore_plugins.notify(me, 'afterTooltipDraw', [args]);\r\n\t},\r\n\r\n\t/**\r\n\t * Get the single element that was clicked on\r\n\t * @return An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw\r\n\t */\r\n\tgetElementAtEvent: function(e) {\r\n\t\treturn core_interaction.modes.single(this, e);\r\n\t},\r\n\r\n\tgetElementsAtEvent: function(e) {\r\n\t\treturn core_interaction.modes.label(this, e, {intersect: true});\r\n\t},\r\n\r\n\tgetElementsAtXAxis: function(e) {\r\n\t\treturn core_interaction.modes['x-axis'](this, e, {intersect: true});\r\n\t},\r\n\r\n\tgetElementsAtEventForMode: function(e, mode, options) {\r\n\t\tvar method = core_interaction.modes[mode];\r\n\t\tif (typeof method === 'function') {\r\n\t\t\treturn method(this, e, options);\r\n\t\t}\r\n\r\n\t\treturn [];\r\n\t},\r\n\r\n\tgetDatasetAtEvent: function(e) {\r\n\t\treturn core_interaction.modes.dataset(this, e, {intersect: true});\r\n\t},\r\n\r\n\tgetDatasetMeta: function(datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar dataset = me.data.datasets[datasetIndex];\r\n\t\tif (!dataset._meta) {\r\n\t\t\tdataset._meta = {};\r\n\t\t}\r\n\r\n\t\tvar meta = dataset._meta[me.id];\r\n\t\tif (!meta) {\r\n\t\t\tmeta = dataset._meta[me.id] = {\r\n\t\t\t\ttype: null,\r\n\t\t\t\tdata: [],\r\n\t\t\t\tdataset: null,\r\n\t\t\t\tcontroller: null,\r\n\t\t\t\thidden: null,\t\t\t// See isDatasetVisible() comment\r\n\t\t\t\txAxisID: null,\r\n\t\t\t\tyAxisID: null,\r\n\t\t\t\torder: dataset.order || 0,\r\n\t\t\t\tindex: datasetIndex\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn meta;\r\n\t},\r\n\r\n\tgetVisibleDatasetCount: function() {\r\n\t\tvar count = 0;\r\n\t\tfor (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\r\n\t\t\tif (this.isDatasetVisible(i)) {\r\n\t\t\t\tcount++;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn count;\r\n\t},\r\n\r\n\tisDatasetVisible: function(datasetIndex) {\r\n\t\tvar meta = this.getDatasetMeta(datasetIndex);\r\n\r\n\t\t// meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\r\n\t\t// the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\r\n\t\treturn typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden;\r\n\t},\r\n\r\n\tgenerateLegend: function() {\r\n\t\treturn this.options.legendCallback(this);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tdestroyDatasetMeta: function(datasetIndex) {\r\n\t\tvar id = this.id;\r\n\t\tvar dataset = this.data.datasets[datasetIndex];\r\n\t\tvar meta = dataset._meta && dataset._meta[id];\r\n\r\n\t\tif (meta) {\r\n\t\t\tmeta.controller.destroy();\r\n\t\t\tdelete dataset._meta[id];\r\n\t\t}\r\n\t},\r\n\r\n\tdestroy: function() {\r\n\t\tvar me = this;\r\n\t\tvar canvas = me.canvas;\r\n\t\tvar i, ilen;\r\n\r\n\t\tme.stop();\r\n\r\n\t\t// dataset controllers need to cleanup associated data\r\n\t\tfor (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\r\n\t\t\tme.destroyDatasetMeta(i);\r\n\t\t}\r\n\r\n\t\tif (canvas) {\r\n\t\t\tme.unbindEvents();\r\n\t\t\thelpers$1.canvas.clear(me);\r\n\t\t\tplatform.releaseContext(me.ctx);\r\n\t\t\tme.canvas = null;\r\n\t\t\tme.ctx = null;\r\n\t\t}\r\n\r\n\t\tcore_plugins.notify(me, 'destroy');\r\n\r\n\t\tdelete Chart.instances[me.id];\r\n\t},\r\n\r\n\ttoBase64Image: function() {\r\n\t\treturn this.canvas.toDataURL.apply(this.canvas, arguments);\r\n\t},\r\n\r\n\tinitToolTip: function() {\r\n\t\tvar me = this;\r\n\t\tme.tooltip = new core_tooltip({\r\n\t\t\t_chart: me,\r\n\t\t\t_chartInstance: me, // deprecated, backward compatibility\r\n\t\t\t_data: me.data,\r\n\t\t\t_options: me.options.tooltips\r\n\t\t}, me);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tbindEvents: function() {\r\n\t\tvar me = this;\r\n\t\tvar listeners = me._listeners = {};\r\n\t\tvar listener = function() {\r\n\t\t\tme.eventHandler.apply(me, arguments);\r\n\t\t};\r\n\r\n\t\thelpers$1.each(me.options.events, function(type) {\r\n\t\t\tplatform.addEventListener(me, type, listener);\r\n\t\t\tlisteners[type] = listener;\r\n\t\t});\r\n\r\n\t\t// Elements used to detect size change should not be injected for non responsive charts.\r\n\t\t// See https://github.com/chartjs/Chart.js/issues/2210\r\n\t\tif (me.options.responsive) {\r\n\t\t\tlistener = function() {\r\n\t\t\t\tme.resize();\r\n\t\t\t};\r\n\r\n\t\t\tplatform.addEventListener(me, 'resize', listener);\r\n\t\t\tlisteners.resize = listener;\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tunbindEvents: function() {\r\n\t\tvar me = this;\r\n\t\tvar listeners = me._listeners;\r\n\t\tif (!listeners) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tdelete me._listeners;\r\n\t\thelpers$1.each(listeners, function(listener, type) {\r\n\t\t\tplatform.removeEventListener(me, type, listener);\r\n\t\t});\r\n\t},\r\n\r\n\tupdateHoverStyle: function(elements, mode, enabled) {\r\n\t\tvar prefix = enabled ? 'set' : 'remove';\r\n\t\tvar element, i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = elements.length; i < ilen; ++i) {\r\n\t\t\telement = elements[i];\r\n\t\t\tif (element) {\r\n\t\t\t\tthis.getDatasetMeta(element._datasetIndex).controller[prefix + 'HoverStyle'](element);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (mode === 'dataset') {\r\n\t\t\tthis.getDatasetMeta(elements[0]._datasetIndex).controller['_' + prefix + 'DatasetHoverStyle']();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\teventHandler: function(e) {\r\n\t\tvar me = this;\r\n\t\tvar tooltip = me.tooltip;\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeEvent', [e]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Buffer any update calls so that renders do not occur\r\n\t\tme._bufferedRender = true;\r\n\t\tme._bufferedRequest = null;\r\n\r\n\t\tvar changed = me.handleEvent(e);\r\n\t\t// for smooth tooltip animations issue #4989\r\n\t\t// the tooltip should be the source of change\r\n\t\t// Animation check workaround:\r\n\t\t// tooltip._start will be null when tooltip isn't animating\r\n\t\tif (tooltip) {\r\n\t\t\tchanged = tooltip._start\r\n\t\t\t\t? tooltip.handleEvent(e)\r\n\t\t\t\t: changed | tooltip.handleEvent(e);\r\n\t\t}\r\n\r\n\t\tcore_plugins.notify(me, 'afterEvent', [e]);\r\n\r\n\t\tvar bufferedRequest = me._bufferedRequest;\r\n\t\tif (bufferedRequest) {\r\n\t\t\t// If we have an update that was triggered, we need to do a normal render\r\n\t\t\tme.render(bufferedRequest);\r\n\t\t} else if (changed && !me.animating) {\r\n\t\t\t// If entering, leaving, or changing elements, animate the change via pivot\r\n\t\t\tme.stop();\r\n\r\n\t\t\t// We only need to render at this point. Updating will cause scales to be\r\n\t\t\t// recomputed generating flicker & using more memory than necessary.\r\n\t\t\tme.render({\r\n\t\t\t\tduration: me.options.hover.animationDuration,\r\n\t\t\t\tlazy: true\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tme._bufferedRender = false;\r\n\t\tme._bufferedRequest = null;\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\t/**\r\n\t * Handle an event\r\n\t * @private\r\n\t * @param {IEvent} event the event to handle\r\n\t * @return {boolean} true if the chart needs to re-render\r\n\t */\r\n\thandleEvent: function(e) {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options || {};\r\n\t\tvar hoverOptions = options.hover;\r\n\t\tvar changed = false;\r\n\r\n\t\tme.lastActive = me.lastActive || [];\r\n\r\n\t\t// Find Active Elements for hover and tooltips\r\n\t\tif (e.type === 'mouseout') {\r\n\t\t\tme.active = [];\r\n\t\t} else {\r\n\t\t\tme.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions);\r\n\t\t}\r\n\r\n\t\t// Invoke onHover hook\r\n\t\t// Need to call with native event here to not break backwards compatibility\r\n\t\thelpers$1.callback(options.onHover || options.hover.onHover, [e.native, me.active], me);\r\n\r\n\t\tif (e.type === 'mouseup' || e.type === 'click') {\r\n\t\t\tif (options.onClick) {\r\n\t\t\t\t// Use e.native here for backwards compatibility\r\n\t\t\t\toptions.onClick.call(me, e.native, me.active);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Remove styling for last active (even if it may still be active)\r\n\t\tif (me.lastActive.length) {\r\n\t\t\tme.updateHoverStyle(me.lastActive, hoverOptions.mode, false);\r\n\t\t}\r\n\r\n\t\t// Built in hover styling\r\n\t\tif (me.active.length && hoverOptions.mode) {\r\n\t\t\tme.updateHoverStyle(me.active, hoverOptions.mode, true);\r\n\t\t}\r\n\r\n\t\tchanged = !helpers$1.arrayEquals(me.active, me.lastActive);\r\n\r\n\t\t// Remember Last Actives\r\n\t\tme.lastActive = me.active;\r\n\r\n\t\treturn changed;\r\n\t}\r\n});\r\n\r\n/**\r\n * NOTE(SB) We actually don't use this container anymore but we need to keep it\r\n * for backward compatibility. Though, it can still be useful for plugins that\r\n * would need to work on multiple charts?!\r\n */\r\nChart.instances = {};\r\n\r\nvar core_controller = Chart;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart instead.\r\n * @class Chart.Controller\r\n * @deprecated since version 2.6\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.Controller = Chart;\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore.\r\n * @namespace Chart\r\n * @deprecated since version 2.8\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.types = {};\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore.\r\n * @namespace Chart.helpers.configMerge\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers$1.configMerge = mergeConfig;\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore.\r\n * @namespace Chart.helpers.scaleMerge\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers$1.scaleMerge = mergeScaleConfig;\n\nvar core_helpers = function() {\r\n\r\n\t// -- Basic js utility methods\r\n\r\n\thelpers$1.where = function(collection, filterCallback) {\r\n\t\tif (helpers$1.isArray(collection) && Array.prototype.filter) {\r\n\t\t\treturn collection.filter(filterCallback);\r\n\t\t}\r\n\t\tvar filtered = [];\r\n\r\n\t\thelpers$1.each(collection, function(item) {\r\n\t\t\tif (filterCallback(item)) {\r\n\t\t\t\tfiltered.push(item);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn filtered;\r\n\t};\r\n\thelpers$1.findIndex = Array.prototype.findIndex ?\r\n\t\tfunction(array, callback, scope) {\r\n\t\t\treturn array.findIndex(callback, scope);\r\n\t\t} :\r\n\t\tfunction(array, callback, scope) {\r\n\t\t\tscope = scope === undefined ? array : scope;\r\n\t\t\tfor (var i = 0, ilen = array.length; i < ilen; ++i) {\r\n\t\t\t\tif (callback.call(scope, array[i], i, array)) {\r\n\t\t\t\t\treturn i;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn -1;\r\n\t\t};\r\n\thelpers$1.findNextWhere = function(arrayToSearch, filterCallback, startIndex) {\r\n\t\t// Default to start of the array\r\n\t\tif (helpers$1.isNullOrUndef(startIndex)) {\r\n\t\t\tstartIndex = -1;\r\n\t\t}\r\n\t\tfor (var i = startIndex + 1; i < arrayToSearch.length; i++) {\r\n\t\t\tvar currentItem = arrayToSearch[i];\r\n\t\t\tif (filterCallback(currentItem)) {\r\n\t\t\t\treturn currentItem;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\thelpers$1.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) {\r\n\t\t// Default to end of the array\r\n\t\tif (helpers$1.isNullOrUndef(startIndex)) {\r\n\t\t\tstartIndex = arrayToSearch.length;\r\n\t\t}\r\n\t\tfor (var i = startIndex - 1; i >= 0; i--) {\r\n\t\t\tvar currentItem = arrayToSearch[i];\r\n\t\t\tif (filterCallback(currentItem)) {\r\n\t\t\t\treturn currentItem;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// -- Math methods\r\n\thelpers$1.isNumber = function(n) {\r\n\t\treturn !isNaN(parseFloat(n)) && isFinite(n);\r\n\t};\r\n\thelpers$1.almostEquals = function(x, y, epsilon) {\r\n\t\treturn Math.abs(x - y) < epsilon;\r\n\t};\r\n\thelpers$1.almostWhole = function(x, epsilon) {\r\n\t\tvar rounded = Math.round(x);\r\n\t\treturn ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\r\n\t};\r\n\thelpers$1.max = function(array) {\r\n\t\treturn array.reduce(function(max, value) {\r\n\t\t\tif (!isNaN(value)) {\r\n\t\t\t\treturn Math.max(max, value);\r\n\t\t\t}\r\n\t\t\treturn max;\r\n\t\t}, Number.NEGATIVE_INFINITY);\r\n\t};\r\n\thelpers$1.min = function(array) {\r\n\t\treturn array.reduce(function(min, value) {\r\n\t\t\tif (!isNaN(value)) {\r\n\t\t\t\treturn Math.min(min, value);\r\n\t\t\t}\r\n\t\t\treturn min;\r\n\t\t}, Number.POSITIVE_INFINITY);\r\n\t};\r\n\thelpers$1.sign = Math.sign ?\r\n\t\tfunction(x) {\r\n\t\t\treturn Math.sign(x);\r\n\t\t} :\r\n\t\tfunction(x) {\r\n\t\t\tx = +x; // convert to a number\r\n\t\t\tif (x === 0 || isNaN(x)) {\r\n\t\t\t\treturn x;\r\n\t\t\t}\r\n\t\t\treturn x > 0 ? 1 : -1;\r\n\t\t};\r\n\thelpers$1.toRadians = function(degrees) {\r\n\t\treturn degrees * (Math.PI / 180);\r\n\t};\r\n\thelpers$1.toDegrees = function(radians) {\r\n\t\treturn radians * (180 / Math.PI);\r\n\t};\r\n\r\n\t/**\r\n\t * Returns the number of decimal places\r\n\t * i.e. the number of digits after the decimal point, of the value of this Number.\r\n\t * @param {number} x - A number.\r\n\t * @returns {number} The number of decimal places.\r\n\t * @private\r\n\t */\r\n\thelpers$1._decimalPlaces = function(x) {\r\n\t\tif (!helpers$1.isFinite(x)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar e = 1;\r\n\t\tvar p = 0;\r\n\t\twhile (Math.round(x * e) / e !== x) {\r\n\t\t\te *= 10;\r\n\t\t\tp++;\r\n\t\t}\r\n\t\treturn p;\r\n\t};\r\n\r\n\t// Gets the angle from vertical upright to the point about a centre.\r\n\thelpers$1.getAngleFromPoint = function(centrePoint, anglePoint) {\r\n\t\tvar distanceFromXCenter = anglePoint.x - centrePoint.x;\r\n\t\tvar distanceFromYCenter = anglePoint.y - centrePoint.y;\r\n\t\tvar radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\r\n\r\n\t\tvar angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\r\n\r\n\t\tif (angle < (-0.5 * Math.PI)) {\r\n\t\t\tangle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tangle: angle,\r\n\t\t\tdistance: radialDistanceFromCenter\r\n\t\t};\r\n\t};\r\n\thelpers$1.distanceBetweenPoints = function(pt1, pt2) {\r\n\t\treturn Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\r\n\t};\r\n\r\n\t/**\r\n\t * Provided for backward compatibility, not available anymore\r\n\t * @function Chart.helpers.aliasPixel\r\n\t * @deprecated since version 2.8.0\r\n\t * @todo remove at version 3\r\n\t */\r\n\thelpers$1.aliasPixel = function(pixelWidth) {\r\n\t\treturn (pixelWidth % 2 === 0) ? 0 : 0.5;\r\n\t};\r\n\r\n\t/**\r\n\t * Returns the aligned pixel value to avoid anti-aliasing blur\r\n\t * @param {Chart} chart - The chart instance.\r\n\t * @param {number} pixel - A pixel value.\r\n\t * @param {number} width - The width of the element.\r\n\t * @returns {number} The aligned pixel value.\r\n\t * @private\r\n\t */\r\n\thelpers$1._alignPixel = function(chart, pixel, width) {\r\n\t\tvar devicePixelRatio = chart.currentDevicePixelRatio;\r\n\t\tvar halfWidth = width / 2;\r\n\t\treturn Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\r\n\t};\r\n\r\n\thelpers$1.splineCurve = function(firstPoint, middlePoint, afterPoint, t) {\r\n\t\t// Props to Rob Spencer at scaled innovation for his post on splining between points\r\n\t\t// http://scaledinnovation.com/analytics/splines/aboutSplines.html\r\n\r\n\t\t// This function must also respect \"skipped\" points\r\n\r\n\t\tvar previous = firstPoint.skip ? middlePoint : firstPoint;\r\n\t\tvar current = middlePoint;\r\n\t\tvar next = afterPoint.skip ? middlePoint : afterPoint;\r\n\r\n\t\tvar d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2));\r\n\t\tvar d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2));\r\n\r\n\t\tvar s01 = d01 / (d01 + d12);\r\n\t\tvar s12 = d12 / (d01 + d12);\r\n\r\n\t\t// If all points are the same, s01 & s02 will be inf\r\n\t\ts01 = isNaN(s01) ? 0 : s01;\r\n\t\ts12 = isNaN(s12) ? 0 : s12;\r\n\r\n\t\tvar fa = t * s01; // scaling factor for triangle Ta\r\n\t\tvar fb = t * s12;\r\n\r\n\t\treturn {\r\n\t\t\tprevious: {\r\n\t\t\t\tx: current.x - fa * (next.x - previous.x),\r\n\t\t\t\ty: current.y - fa * (next.y - previous.y)\r\n\t\t\t},\r\n\t\t\tnext: {\r\n\t\t\t\tx: current.x + fb * (next.x - previous.x),\r\n\t\t\t\ty: current.y + fb * (next.y - previous.y)\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\thelpers$1.EPSILON = Number.EPSILON || 1e-14;\r\n\thelpers$1.splineCurveMonotone = function(points) {\r\n\t\t// This function calculates Bézier control points in a similar way than |splineCurve|,\r\n\t\t// but preserves monotonicity of the provided data and ensures no local extremums are added\r\n\t\t// between the dataset discrete points due to the interpolation.\r\n\t\t// See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\r\n\r\n\t\tvar pointsWithTangents = (points || []).map(function(point) {\r\n\t\t\treturn {\r\n\t\t\t\tmodel: point._model,\r\n\t\t\t\tdeltaK: 0,\r\n\t\t\t\tmK: 0\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\t// Calculate slopes (deltaK) and initialize tangents (mK)\r\n\t\tvar pointsLen = pointsWithTangents.length;\r\n\t\tvar i, pointBefore, pointCurrent, pointAfter;\r\n\t\tfor (i = 0; i < pointsLen; ++i) {\r\n\t\t\tpointCurrent = pointsWithTangents[i];\r\n\t\t\tif (pointCurrent.model.skip) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\r\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\r\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\r\n\t\t\t\tvar slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x);\r\n\r\n\t\t\t\t// In the case of two points that appear at the same x pixel, slopeDeltaX is 0\r\n\t\t\t\tpointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0;\r\n\t\t\t}\r\n\r\n\t\t\tif (!pointBefore || pointBefore.model.skip) {\r\n\t\t\t\tpointCurrent.mK = pointCurrent.deltaK;\r\n\t\t\t} else if (!pointAfter || pointAfter.model.skip) {\r\n\t\t\t\tpointCurrent.mK = pointBefore.deltaK;\r\n\t\t\t} else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) {\r\n\t\t\t\tpointCurrent.mK = 0;\r\n\t\t\t} else {\r\n\t\t\t\tpointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Adjust tangents to ensure monotonic properties\r\n\t\tvar alphaK, betaK, tauK, squaredMagnitude;\r\n\t\tfor (i = 0; i < pointsLen - 1; ++i) {\r\n\t\t\tpointCurrent = pointsWithTangents[i];\r\n\t\t\tpointAfter = pointsWithTangents[i + 1];\r\n\t\t\tif (pointCurrent.model.skip || pointAfter.model.skip) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (helpers$1.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) {\r\n\t\t\t\tpointCurrent.mK = pointAfter.mK = 0;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\talphaK = pointCurrent.mK / pointCurrent.deltaK;\r\n\t\t\tbetaK = pointAfter.mK / pointCurrent.deltaK;\r\n\t\t\tsquaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\r\n\t\t\tif (squaredMagnitude <= 9) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\ttauK = 3 / Math.sqrt(squaredMagnitude);\r\n\t\t\tpointCurrent.mK = alphaK * tauK * pointCurrent.deltaK;\r\n\t\t\tpointAfter.mK = betaK * tauK * pointCurrent.deltaK;\r\n\t\t}\r\n\r\n\t\t// Compute control points\r\n\t\tvar deltaX;\r\n\t\tfor (i = 0; i < pointsLen; ++i) {\r\n\t\t\tpointCurrent = pointsWithTangents[i];\r\n\t\t\tif (pointCurrent.model.skip) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\r\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\r\n\t\t\tif (pointBefore && !pointBefore.model.skip) {\r\n\t\t\t\tdeltaX = (pointCurrent.model.x - pointBefore.model.x) / 3;\r\n\t\t\t\tpointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX;\r\n\t\t\t\tpointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK;\r\n\t\t\t}\r\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\r\n\t\t\t\tdeltaX = (pointAfter.model.x - pointCurrent.model.x) / 3;\r\n\t\t\t\tpointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX;\r\n\t\t\t\tpointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\thelpers$1.nextItem = function(collection, index, loop) {\r\n\t\tif (loop) {\r\n\t\t\treturn index >= collection.length - 1 ? collection[0] : collection[index + 1];\r\n\t\t}\r\n\t\treturn index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1];\r\n\t};\r\n\thelpers$1.previousItem = function(collection, index, loop) {\r\n\t\tif (loop) {\r\n\t\t\treturn index <= 0 ? collection[collection.length - 1] : collection[index - 1];\r\n\t\t}\r\n\t\treturn index <= 0 ? collection[0] : collection[index - 1];\r\n\t};\r\n\t// Implementation of the nice number algorithm used in determining where axis labels will go\r\n\thelpers$1.niceNum = function(range, round) {\r\n\t\tvar exponent = Math.floor(helpers$1.log10(range));\r\n\t\tvar fraction = range / Math.pow(10, exponent);\r\n\t\tvar niceFraction;\r\n\r\n\t\tif (round) {\r\n\t\t\tif (fraction < 1.5) {\r\n\t\t\t\tniceFraction = 1;\r\n\t\t\t} else if (fraction < 3) {\r\n\t\t\t\tniceFraction = 2;\r\n\t\t\t} else if (fraction < 7) {\r\n\t\t\t\tniceFraction = 5;\r\n\t\t\t} else {\r\n\t\t\t\tniceFraction = 10;\r\n\t\t\t}\r\n\t\t} else if (fraction <= 1.0) {\r\n\t\t\tniceFraction = 1;\r\n\t\t} else if (fraction <= 2) {\r\n\t\t\tniceFraction = 2;\r\n\t\t} else if (fraction <= 5) {\r\n\t\t\tniceFraction = 5;\r\n\t\t} else {\r\n\t\t\tniceFraction = 10;\r\n\t\t}\r\n\r\n\t\treturn niceFraction * Math.pow(10, exponent);\r\n\t};\r\n\t// Request animation polyfill - https://www.paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n\thelpers$1.requestAnimFrame = (function() {\r\n\t\tif (typeof window === 'undefined') {\r\n\t\t\treturn function(callback) {\r\n\t\t\t\tcallback();\r\n\t\t\t};\r\n\t\t}\r\n\t\treturn window.requestAnimationFrame ||\r\n\t\t\twindow.webkitRequestAnimationFrame ||\r\n\t\t\twindow.mozRequestAnimationFrame ||\r\n\t\t\twindow.oRequestAnimationFrame ||\r\n\t\t\twindow.msRequestAnimationFrame ||\r\n\t\t\tfunction(callback) {\r\n\t\t\t\treturn window.setTimeout(callback, 1000 / 60);\r\n\t\t\t};\r\n\t}());\r\n\t// -- DOM methods\r\n\thelpers$1.getRelativePosition = function(evt, chart) {\r\n\t\tvar mouseX, mouseY;\r\n\t\tvar e = evt.originalEvent || evt;\r\n\t\tvar canvas = evt.target || evt.srcElement;\r\n\t\tvar boundingRect = canvas.getBoundingClientRect();\r\n\r\n\t\tvar touches = e.touches;\r\n\t\tif (touches && touches.length > 0) {\r\n\t\t\tmouseX = touches[0].clientX;\r\n\t\t\tmouseY = touches[0].clientY;\r\n\r\n\t\t} else {\r\n\t\t\tmouseX = e.clientX;\r\n\t\t\tmouseY = e.clientY;\r\n\t\t}\r\n\r\n\t\t// Scale mouse coordinates into canvas coordinates\r\n\t\t// by following the pattern laid out by 'jerryj' in the comments of\r\n\t\t// https://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/\r\n\t\tvar paddingLeft = parseFloat(helpers$1.getStyle(canvas, 'padding-left'));\r\n\t\tvar paddingTop = parseFloat(helpers$1.getStyle(canvas, 'padding-top'));\r\n\t\tvar paddingRight = parseFloat(helpers$1.getStyle(canvas, 'padding-right'));\r\n\t\tvar paddingBottom = parseFloat(helpers$1.getStyle(canvas, 'padding-bottom'));\r\n\t\tvar width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight;\r\n\t\tvar height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom;\r\n\r\n\t\t// We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However\r\n\t\t// the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here\r\n\t\tmouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio);\r\n\t\tmouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio);\r\n\r\n\t\treturn {\r\n\t\t\tx: mouseX,\r\n\t\t\ty: mouseY\r\n\t\t};\r\n\r\n\t};\r\n\r\n\t// Private helper function to convert max-width/max-height values that may be percentages into a number\r\n\tfunction parseMaxStyle(styleValue, node, parentProperty) {\r\n\t\tvar valueInPixels;\r\n\t\tif (typeof styleValue === 'string') {\r\n\t\t\tvalueInPixels = parseInt(styleValue, 10);\r\n\r\n\t\t\tif (styleValue.indexOf('%') !== -1) {\r\n\t\t\t\t// percentage * size in dimension\r\n\t\t\t\tvalueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvalueInPixels = styleValue;\r\n\t\t}\r\n\r\n\t\treturn valueInPixels;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns if the given value contains an effective constraint.\r\n\t * @private\r\n\t */\r\n\tfunction isConstrainedValue(value) {\r\n\t\treturn value !== undefined && value !== null && value !== 'none';\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the max width or height of the given DOM node in a cross-browser compatible fashion\r\n\t * @param {HTMLElement} domNode - the node to check the constraint on\r\n\t * @param {string} maxStyle - the style that defines the maximum for the direction we are using ('max-width' / 'max-height')\r\n\t * @param {string} percentageProperty - property of parent to use when calculating width as a percentage\r\n\t * @see {@link https://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser}\r\n\t */\r\n\tfunction getConstraintDimension(domNode, maxStyle, percentageProperty) {\r\n\t\tvar view = document.defaultView;\r\n\t\tvar parentNode = helpers$1._getParentNode(domNode);\r\n\t\tvar constrainedNode = view.getComputedStyle(domNode)[maxStyle];\r\n\t\tvar constrainedContainer = view.getComputedStyle(parentNode)[maxStyle];\r\n\t\tvar hasCNode = isConstrainedValue(constrainedNode);\r\n\t\tvar hasCContainer = isConstrainedValue(constrainedContainer);\r\n\t\tvar infinity = Number.POSITIVE_INFINITY;\r\n\r\n\t\tif (hasCNode || hasCContainer) {\r\n\t\t\treturn Math.min(\r\n\t\t\t\thasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity,\r\n\t\t\t\thasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity);\r\n\t\t}\r\n\r\n\t\treturn 'none';\r\n\t}\r\n\t// returns Number or undefined if no constraint\r\n\thelpers$1.getConstraintWidth = function(domNode) {\r\n\t\treturn getConstraintDimension(domNode, 'max-width', 'clientWidth');\r\n\t};\r\n\t// returns Number or undefined if no constraint\r\n\thelpers$1.getConstraintHeight = function(domNode) {\r\n\t\treturn getConstraintDimension(domNode, 'max-height', 'clientHeight');\r\n\t};\r\n\t/**\r\n\t * @private\r\n \t */\r\n\thelpers$1._calculatePadding = function(container, padding, parentDimension) {\r\n\t\tpadding = helpers$1.getStyle(container, padding);\r\n\r\n\t\treturn padding.indexOf('%') > -1 ? parentDimension * parseInt(padding, 10) / 100 : parseInt(padding, 10);\r\n\t};\r\n\t/**\r\n\t * @private\r\n\t */\r\n\thelpers$1._getParentNode = function(domNode) {\r\n\t\tvar parent = domNode.parentNode;\r\n\t\tif (parent && parent.toString() === '[object ShadowRoot]') {\r\n\t\t\tparent = parent.host;\r\n\t\t}\r\n\t\treturn parent;\r\n\t};\r\n\thelpers$1.getMaximumWidth = function(domNode) {\r\n\t\tvar container = helpers$1._getParentNode(domNode);\r\n\t\tif (!container) {\r\n\t\t\treturn domNode.clientWidth;\r\n\t\t}\r\n\r\n\t\tvar clientWidth = container.clientWidth;\r\n\t\tvar paddingLeft = helpers$1._calculatePadding(container, 'padding-left', clientWidth);\r\n\t\tvar paddingRight = helpers$1._calculatePadding(container, 'padding-right', clientWidth);\r\n\r\n\t\tvar w = clientWidth - paddingLeft - paddingRight;\r\n\t\tvar cw = helpers$1.getConstraintWidth(domNode);\r\n\t\treturn isNaN(cw) ? w : Math.min(w, cw);\r\n\t};\r\n\thelpers$1.getMaximumHeight = function(domNode) {\r\n\t\tvar container = helpers$1._getParentNode(domNode);\r\n\t\tif (!container) {\r\n\t\t\treturn domNode.clientHeight;\r\n\t\t}\r\n\r\n\t\tvar clientHeight = container.clientHeight;\r\n\t\tvar paddingTop = helpers$1._calculatePadding(container, 'padding-top', clientHeight);\r\n\t\tvar paddingBottom = helpers$1._calculatePadding(container, 'padding-bottom', clientHeight);\r\n\r\n\t\tvar h = clientHeight - paddingTop - paddingBottom;\r\n\t\tvar ch = helpers$1.getConstraintHeight(domNode);\r\n\t\treturn isNaN(ch) ? h : Math.min(h, ch);\r\n\t};\r\n\thelpers$1.getStyle = function(el, property) {\r\n\t\treturn el.currentStyle ?\r\n\t\t\tel.currentStyle[property] :\r\n\t\t\tdocument.defaultView.getComputedStyle(el, null).getPropertyValue(property);\r\n\t};\r\n\thelpers$1.retinaScale = function(chart, forceRatio) {\r\n\t\tvar pixelRatio = chart.currentDevicePixelRatio = forceRatio || (typeof window !== 'undefined' && window.devicePixelRatio) || 1;\r\n\t\tif (pixelRatio === 1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar canvas = chart.canvas;\r\n\t\tvar height = chart.height;\r\n\t\tvar width = chart.width;\r\n\r\n\t\tcanvas.height = height * pixelRatio;\r\n\t\tcanvas.width = width * pixelRatio;\r\n\t\tchart.ctx.scale(pixelRatio, pixelRatio);\r\n\r\n\t\t// If no style has been set on the canvas, the render size is used as display size,\r\n\t\t// making the chart visually bigger, so let's enforce it to the \"correct\" values.\r\n\t\t// See https://github.com/chartjs/Chart.js/issues/3575\r\n\t\tif (!canvas.style.height && !canvas.style.width) {\r\n\t\t\tcanvas.style.height = height + 'px';\r\n\t\t\tcanvas.style.width = width + 'px';\r\n\t\t}\r\n\t};\r\n\t// -- Canvas methods\r\n\thelpers$1.fontString = function(pixelSize, fontStyle, fontFamily) {\r\n\t\treturn fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\r\n\t};\r\n\thelpers$1.longestText = function(ctx, font, arrayOfThings, cache) {\r\n\t\tcache = cache || {};\r\n\t\tvar data = cache.data = cache.data || {};\r\n\t\tvar gc = cache.garbageCollect = cache.garbageCollect || [];\r\n\r\n\t\tif (cache.font !== font) {\r\n\t\t\tdata = cache.data = {};\r\n\t\t\tgc = cache.garbageCollect = [];\r\n\t\t\tcache.font = font;\r\n\t\t}\r\n\r\n\t\tctx.font = font;\r\n\t\tvar longest = 0;\r\n\t\tvar ilen = arrayOfThings.length;\r\n\t\tvar i, j, jlen, thing, nestedThing;\r\n\t\tfor (i = 0; i < ilen; i++) {\r\n\t\t\tthing = arrayOfThings[i];\r\n\r\n\t\t\t// Undefined strings and arrays should not be measured\r\n\t\t\tif (thing !== undefined && thing !== null && helpers$1.isArray(thing) !== true) {\r\n\t\t\t\tlongest = helpers$1.measureText(ctx, data, gc, longest, thing);\r\n\t\t\t} else if (helpers$1.isArray(thing)) {\r\n\t\t\t\t// if it is an array lets measure each element\r\n\t\t\t\t// to do maybe simplify this function a bit so we can do this more recursively?\r\n\t\t\t\tfor (j = 0, jlen = thing.length; j < jlen; j++) {\r\n\t\t\t\t\tnestedThing = thing[j];\r\n\t\t\t\t\t// Undefined strings and arrays should not be measured\r\n\t\t\t\t\tif (nestedThing !== undefined && nestedThing !== null && !helpers$1.isArray(nestedThing)) {\r\n\t\t\t\t\t\tlongest = helpers$1.measureText(ctx, data, gc, longest, nestedThing);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar gcLen = gc.length / 2;\r\n\t\tif (gcLen > arrayOfThings.length) {\r\n\t\t\tfor (i = 0; i < gcLen; i++) {\r\n\t\t\t\tdelete data[gc[i]];\r\n\t\t\t}\r\n\t\t\tgc.splice(0, gcLen);\r\n\t\t}\r\n\t\treturn longest;\r\n\t};\r\n\thelpers$1.measureText = function(ctx, data, gc, longest, string) {\r\n\t\tvar textWidth = data[string];\r\n\t\tif (!textWidth) {\r\n\t\t\ttextWidth = data[string] = ctx.measureText(string).width;\r\n\t\t\tgc.push(string);\r\n\t\t}\r\n\t\tif (textWidth > longest) {\r\n\t\t\tlongest = textWidth;\r\n\t\t}\r\n\t\treturn longest;\r\n\t};\r\n\r\n\t/**\r\n\t * @deprecated\r\n\t */\r\n\thelpers$1.numberOfLabelLines = function(arrayOfThings) {\r\n\t\tvar numberOfLines = 1;\r\n\t\thelpers$1.each(arrayOfThings, function(thing) {\r\n\t\t\tif (helpers$1.isArray(thing)) {\r\n\t\t\t\tif (thing.length > numberOfLines) {\r\n\t\t\t\t\tnumberOfLines = thing.length;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn numberOfLines;\r\n\t};\r\n\r\n\thelpers$1.color = !chartjsColor ?\r\n\t\tfunction(value) {\r\n\t\t\tconsole.error('Color.js not found!');\r\n\t\t\treturn value;\r\n\t\t} :\r\n\t\tfunction(value) {\r\n\t\t\t/* global CanvasGradient */\r\n\t\t\tif (value instanceof CanvasGradient) {\r\n\t\t\t\tvalue = core_defaults.global.defaultColor;\r\n\t\t\t}\r\n\r\n\t\t\treturn chartjsColor(value);\r\n\t\t};\r\n\r\n\thelpers$1.getHoverColor = function(colorValue) {\r\n\t\t/* global CanvasPattern */\r\n\t\treturn (colorValue instanceof CanvasPattern || colorValue instanceof CanvasGradient) ?\r\n\t\t\tcolorValue :\r\n\t\t\thelpers$1.color(colorValue).saturate(0.5).darken(0.1).rgbString();\r\n\t};\r\n};\n\nfunction abstract() {\r\n\tthrow new Error(\r\n\t\t'This method is not implemented: either no adapter can ' +\r\n\t\t'be found or an incomplete integration was provided.'\r\n\t);\r\n}\r\n\r\n/**\r\n * Date adapter (current used by the time scale)\r\n * @namespace Chart._adapters._date\r\n * @memberof Chart._adapters\r\n * @private\r\n */\r\n\r\n/**\r\n * Currently supported unit string values.\r\n * @typedef {('millisecond'|'second'|'minute'|'hour'|'day'|'week'|'month'|'quarter'|'year')}\r\n * @memberof Chart._adapters._date\r\n * @name Unit\r\n */\r\n\r\n/**\r\n * @class\r\n */\r\nfunction DateAdapter(options) {\r\n\tthis.options = options || {};\r\n}\r\n\r\nhelpers$1.extend(DateAdapter.prototype, /** @lends DateAdapter */ {\r\n\t/**\r\n\t * Returns a map of time formats for the supported formatting units defined\r\n\t * in Unit as well as 'datetime' representing a detailed date/time string.\r\n\t * @returns {{string: string}}\r\n\t */\r\n\tformats: abstract,\r\n\r\n\t/**\r\n\t * Parses the given `value` and return the associated timestamp.\r\n\t * @param {any} value - the value to parse (usually comes from the data)\r\n\t * @param {string} [format] - the expected data format\r\n\t * @returns {(number|null)}\r\n\t * @function\r\n\t */\r\n\tparse: abstract,\r\n\r\n\t/**\r\n\t * Returns the formatted date in the specified `format` for a given `timestamp`.\r\n\t * @param {number} timestamp - the timestamp to format\r\n\t * @param {string} format - the date/time token\r\n\t * @return {string}\r\n\t * @function\r\n\t */\r\n\tformat: abstract,\r\n\r\n\t/**\r\n\t * Adds the specified `amount` of `unit` to the given `timestamp`.\r\n\t * @param {number} timestamp - the input timestamp\r\n\t * @param {number} amount - the amount to add\r\n\t * @param {Unit} unit - the unit as string\r\n\t * @return {number}\r\n\t * @function\r\n\t */\r\n\tadd: abstract,\r\n\r\n\t/**\r\n\t * Returns the number of `unit` between the given timestamps.\r\n\t * @param {number} max - the input timestamp (reference)\r\n\t * @param {number} min - the timestamp to substract\r\n\t * @param {Unit} unit - the unit as string\r\n\t * @return {number}\r\n\t * @function\r\n\t */\r\n\tdiff: abstract,\r\n\r\n\t/**\r\n\t * Returns start of `unit` for the given `timestamp`.\r\n\t * @param {number} timestamp - the input timestamp\r\n\t * @param {Unit} unit - the unit as string\r\n\t * @param {number} [weekday] - the ISO day of the week with 1 being Monday\r\n\t * and 7 being Sunday (only needed if param *unit* is `isoWeek`).\r\n\t * @function\r\n\t */\r\n\tstartOf: abstract,\r\n\r\n\t/**\r\n\t * Returns end of `unit` for the given `timestamp`.\r\n\t * @param {number} timestamp - the input timestamp\r\n\t * @param {Unit} unit - the unit as string\r\n\t * @function\r\n\t */\r\n\tendOf: abstract,\r\n\r\n\t// DEPRECATIONS\r\n\r\n\t/**\r\n\t * Provided for backward compatibility for scale.getValueForPixel(),\r\n\t * this method should be overridden only by the moment adapter.\r\n\t * @deprecated since version 2.8.0\r\n\t * @todo remove at version 3\r\n\t * @private\r\n\t */\r\n\t_create: function(value) {\r\n\t\treturn value;\r\n\t}\r\n});\r\n\r\nDateAdapter.override = function(members) {\r\n\thelpers$1.extend(DateAdapter.prototype, members);\r\n};\r\n\r\nvar _date = DateAdapter;\n\nvar core_adapters = {\n\t_date: _date\n};\n\n/**\r\n * Namespace to hold static tick generation functions\r\n * @namespace Chart.Ticks\r\n */\r\nvar core_ticks = {\r\n\t/**\r\n\t * Namespace to hold formatters for different types of ticks\r\n\t * @namespace Chart.Ticks.formatters\r\n\t */\r\n\tformatters: {\r\n\t\t/**\r\n\t\t * Formatter for value labels\r\n\t\t * @method Chart.Ticks.formatters.values\r\n\t\t * @param value the value to display\r\n\t\t * @return {string|string[]} the label to display\r\n\t\t */\r\n\t\tvalues: function(value) {\r\n\t\t\treturn helpers$1.isArray(value) ? value : '' + value;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Formatter for linear numeric ticks\r\n\t\t * @method Chart.Ticks.formatters.linear\r\n\t\t * @param tickValue {number} the value to be formatted\r\n\t\t * @param index {number} the position of the tickValue parameter in the ticks array\r\n\t\t * @param ticks {number[]} the list of ticks being converted\r\n\t\t * @return {string} string representation of the tickValue parameter\r\n\t\t */\r\n\t\tlinear: function(tickValue, index, ticks) {\r\n\t\t\t// If we have lots of ticks, don't use the ones\r\n\t\t\tvar delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0];\r\n\r\n\t\t\t// If we have a number like 2.5 as the delta, figure out how many decimal places we need\r\n\t\t\tif (Math.abs(delta) > 1) {\r\n\t\t\t\tif (tickValue !== Math.floor(tickValue)) {\r\n\t\t\t\t\t// not an integer\r\n\t\t\t\t\tdelta = tickValue - Math.floor(tickValue);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar logDelta = helpers$1.log10(Math.abs(delta));\r\n\t\t\tvar tickString = '';\r\n\r\n\t\t\tif (tickValue !== 0) {\r\n\t\t\t\tvar maxTick = Math.max(Math.abs(ticks[0]), Math.abs(ticks[ticks.length - 1]));\r\n\t\t\t\tif (maxTick < 1e-4) { // all ticks are small numbers; use scientific notation\r\n\t\t\t\t\tvar logTick = helpers$1.log10(Math.abs(tickValue));\r\n\t\t\t\t\tvar numExponential = Math.floor(logTick) - Math.floor(logDelta);\r\n\t\t\t\t\tnumExponential = Math.max(Math.min(numExponential, 20), 0);\r\n\t\t\t\t\ttickString = tickValue.toExponential(numExponential);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar numDecimal = -1 * Math.floor(logDelta);\r\n\t\t\t\t\tnumDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places\r\n\t\t\t\t\ttickString = tickValue.toFixed(numDecimal);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\ttickString = '0'; // never show decimal places for 0\r\n\t\t\t}\r\n\r\n\t\t\treturn tickString;\r\n\t\t},\r\n\r\n\t\tlogarithmic: function(tickValue, index, ticks) {\r\n\t\t\tvar remain = tickValue / (Math.pow(10, Math.floor(helpers$1.log10(tickValue))));\r\n\r\n\t\t\tif (tickValue === 0) {\r\n\t\t\t\treturn '0';\r\n\t\t\t} else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) {\r\n\t\t\t\treturn tickValue.toExponential();\r\n\t\t\t}\r\n\t\t\treturn '';\r\n\t\t}\r\n\t}\r\n};\n\nvar isArray = helpers$1.isArray;\r\nvar isNullOrUndef = helpers$1.isNullOrUndef;\r\nvar valueOrDefault$a = helpers$1.valueOrDefault;\r\nvar valueAtIndexOrDefault = helpers$1.valueAtIndexOrDefault;\r\n\r\ncore_defaults._set('scale', {\r\n\tdisplay: true,\r\n\tposition: 'left',\r\n\toffset: false,\r\n\r\n\t// grid line settings\r\n\tgridLines: {\r\n\t\tdisplay: true,\r\n\t\tcolor: 'rgba(0,0,0,0.1)',\r\n\t\tlineWidth: 1,\r\n\t\tdrawBorder: true,\r\n\t\tdrawOnChartArea: true,\r\n\t\tdrawTicks: true,\r\n\t\ttickMarkLength: 10,\r\n\t\tzeroLineWidth: 1,\r\n\t\tzeroLineColor: 'rgba(0,0,0,0.25)',\r\n\t\tzeroLineBorderDash: [],\r\n\t\tzeroLineBorderDashOffset: 0.0,\r\n\t\toffsetGridLines: false,\r\n\t\tborderDash: [],\r\n\t\tborderDashOffset: 0.0\r\n\t},\r\n\r\n\t// scale label\r\n\tscaleLabel: {\r\n\t\t// display property\r\n\t\tdisplay: false,\r\n\r\n\t\t// actual label\r\n\t\tlabelString: '',\r\n\r\n\t\t// top/bottom padding\r\n\t\tpadding: {\r\n\t\t\ttop: 4,\r\n\t\t\tbottom: 4\r\n\t\t}\r\n\t},\r\n\r\n\t// label settings\r\n\tticks: {\r\n\t\tbeginAtZero: false,\r\n\t\tminRotation: 0,\r\n\t\tmaxRotation: 50,\r\n\t\tmirror: false,\r\n\t\tpadding: 0,\r\n\t\treverse: false,\r\n\t\tdisplay: true,\r\n\t\tautoSkip: true,\r\n\t\tautoSkipPadding: 0,\r\n\t\tlabelOffset: 0,\r\n\t\t// We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\r\n\t\tcallback: core_ticks.formatters.values,\r\n\t\tminor: {},\r\n\t\tmajor: {}\r\n\t}\r\n});\r\n\r\n/** Returns a new array containing numItems from arr */\r\nfunction sample(arr, numItems) {\r\n\tvar result = [];\r\n\tvar increment = arr.length / numItems;\r\n\tvar i = 0;\r\n\tvar len = arr.length;\r\n\r\n\tfor (; i < len; i += increment) {\r\n\t\tresult.push(arr[Math.floor(i)]);\r\n\t}\r\n\treturn result;\r\n}\r\n\r\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\r\n\tvar length = scale.getTicks().length;\r\n\tvar validIndex = Math.min(index, length - 1);\r\n\tvar lineValue = scale.getPixelForTick(validIndex);\r\n\tvar start = scale._startPixel;\r\n\tvar end = scale._endPixel;\r\n\tvar epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\r\n\tvar offset;\r\n\r\n\tif (offsetGridLines) {\r\n\t\tif (length === 1) {\r\n\t\t\toffset = Math.max(lineValue - start, end - lineValue);\r\n\t\t} else if (index === 0) {\r\n\t\t\toffset = (scale.getPixelForTick(1) - lineValue) / 2;\r\n\t\t} else {\r\n\t\t\toffset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\r\n\t\t}\r\n\t\tlineValue += validIndex < index ? offset : -offset;\r\n\r\n\t\t// Return undefined if the pixel is out of the range\r\n\t\tif (lineValue < start - epsilon || lineValue > end + epsilon) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\treturn lineValue;\r\n}\r\n\r\nfunction garbageCollect(caches, length) {\r\n\thelpers$1.each(caches, function(cache) {\r\n\t\tvar gc = cache.gc;\r\n\t\tvar gcLen = gc.length / 2;\r\n\t\tvar i;\r\n\t\tif (gcLen > length) {\r\n\t\t\tfor (i = 0; i < gcLen; ++i) {\r\n\t\t\t\tdelete cache.data[gc[i]];\r\n\t\t\t}\r\n\t\t\tgc.splice(0, gcLen);\r\n\t\t}\r\n\t});\r\n}\r\n\r\n/**\r\n * Returns {width, height, offset} objects for the first, last, widest, highest tick\r\n * labels where offset indicates the anchor point offset from the top in pixels.\r\n */\r\nfunction computeLabelSizes(ctx, tickFonts, ticks, caches) {\r\n\tvar length = ticks.length;\r\n\tvar widths = [];\r\n\tvar heights = [];\r\n\tvar offsets = [];\r\n\tvar widestLabelSize = 0;\r\n\tvar highestLabelSize = 0;\r\n\tvar i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel, widest, highest;\r\n\r\n\tfor (i = 0; i < length; ++i) {\r\n\t\tlabel = ticks[i].label;\r\n\t\ttickFont = ticks[i].major ? tickFonts.major : tickFonts.minor;\r\n\t\tctx.font = fontString = tickFont.string;\r\n\t\tcache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\r\n\t\tlineHeight = tickFont.lineHeight;\r\n\t\twidth = height = 0;\r\n\t\t// Undefined labels and arrays should not be measured\r\n\t\tif (!isNullOrUndef(label) && !isArray(label)) {\r\n\t\t\twidth = helpers$1.measureText(ctx, cache.data, cache.gc, width, label);\r\n\t\t\theight = lineHeight;\r\n\t\t} else if (isArray(label)) {\r\n\t\t\t// if it is an array let's measure each element\r\n\t\t\tfor (j = 0, jlen = label.length; j < jlen; ++j) {\r\n\t\t\t\tnestedLabel = label[j];\r\n\t\t\t\t// Undefined labels and arrays should not be measured\r\n\t\t\t\tif (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\r\n\t\t\t\t\twidth = helpers$1.measureText(ctx, cache.data, cache.gc, width, nestedLabel);\r\n\t\t\t\t\theight += lineHeight;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\twidths.push(width);\r\n\t\theights.push(height);\r\n\t\toffsets.push(lineHeight / 2);\r\n\t\twidestLabelSize = Math.max(width, widestLabelSize);\r\n\t\thighestLabelSize = Math.max(height, highestLabelSize);\r\n\t}\r\n\tgarbageCollect(caches, length);\r\n\r\n\twidest = widths.indexOf(widestLabelSize);\r\n\thighest = heights.indexOf(highestLabelSize);\r\n\r\n\tfunction valueAt(idx) {\r\n\t\treturn {\r\n\t\t\twidth: widths[idx] || 0,\r\n\t\t\theight: heights[idx] || 0,\r\n\t\t\toffset: offsets[idx] || 0\r\n\t\t};\r\n\t}\r\n\r\n\treturn {\r\n\t\tfirst: valueAt(0),\r\n\t\tlast: valueAt(length - 1),\r\n\t\twidest: valueAt(widest),\r\n\t\thighest: valueAt(highest)\r\n\t};\r\n}\r\n\r\nfunction getTickMarkLength(options) {\r\n\treturn options.drawTicks ? options.tickMarkLength : 0;\r\n}\r\n\r\nfunction getScaleLabelHeight(options) {\r\n\tvar font, padding;\r\n\r\n\tif (!options.display) {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tfont = helpers$1.options._parseFont(options);\r\n\tpadding = helpers$1.options.toPadding(options.padding);\r\n\r\n\treturn font.lineHeight + padding.height;\r\n}\r\n\r\nfunction parseFontOptions(options, nestedOpts) {\r\n\treturn helpers$1.extend(helpers$1.options._parseFont({\r\n\t\tfontFamily: valueOrDefault$a(nestedOpts.fontFamily, options.fontFamily),\r\n\t\tfontSize: valueOrDefault$a(nestedOpts.fontSize, options.fontSize),\r\n\t\tfontStyle: valueOrDefault$a(nestedOpts.fontStyle, options.fontStyle),\r\n\t\tlineHeight: valueOrDefault$a(nestedOpts.lineHeight, options.lineHeight)\r\n\t}), {\r\n\t\tcolor: helpers$1.options.resolve([nestedOpts.fontColor, options.fontColor, core_defaults.global.defaultFontColor])\r\n\t});\r\n}\r\n\r\nfunction parseTickFontOptions(options) {\r\n\tvar minor = parseFontOptions(options, options.minor);\r\n\tvar major = options.major.enabled ? parseFontOptions(options, options.major) : minor;\r\n\r\n\treturn {minor: minor, major: major};\r\n}\r\n\r\nfunction nonSkipped(ticksToFilter) {\r\n\tvar filtered = [];\r\n\tvar item, index, len;\r\n\tfor (index = 0, len = ticksToFilter.length; index < len; ++index) {\r\n\t\titem = ticksToFilter[index];\r\n\t\tif (typeof item._index !== 'undefined') {\r\n\t\t\tfiltered.push(item);\r\n\t\t}\r\n\t}\r\n\treturn filtered;\r\n}\r\n\r\nfunction getEvenSpacing(arr) {\r\n\tvar len = arr.length;\r\n\tvar i, diff;\r\n\r\n\tif (len < 2) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfor (diff = arr[0], i = 1; i < len; ++i) {\r\n\t\tif (arr[i] - arr[i - 1] !== diff) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\treturn diff;\r\n}\r\n\r\nfunction calculateSpacing(majorIndices, ticks, axisLength, ticksLimit) {\r\n\tvar evenMajorSpacing = getEvenSpacing(majorIndices);\r\n\tvar spacing = (ticks.length - 1) / ticksLimit;\r\n\tvar factors, factor, i, ilen;\r\n\r\n\t// If the major ticks are evenly spaced apart, place the minor ticks\r\n\t// so that they divide the major ticks into even chunks\r\n\tif (!evenMajorSpacing) {\r\n\t\treturn Math.max(spacing, 1);\r\n\t}\r\n\r\n\tfactors = helpers$1.math._factorize(evenMajorSpacing);\r\n\tfor (i = 0, ilen = factors.length - 1; i < ilen; i++) {\r\n\t\tfactor = factors[i];\r\n\t\tif (factor > spacing) {\r\n\t\t\treturn factor;\r\n\t\t}\r\n\t}\r\n\treturn Math.max(spacing, 1);\r\n}\r\n\r\nfunction getMajorIndices(ticks) {\r\n\tvar result = [];\r\n\tvar i, ilen;\r\n\tfor (i = 0, ilen = ticks.length; i < ilen; i++) {\r\n\t\tif (ticks[i].major) {\r\n\t\t\tresult.push(i);\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n}\r\n\r\nfunction skipMajors(ticks, majorIndices, spacing) {\r\n\tvar count = 0;\r\n\tvar next = majorIndices[0];\r\n\tvar i, tick;\r\n\r\n\tspacing = Math.ceil(spacing);\r\n\tfor (i = 0; i < ticks.length; i++) {\r\n\t\ttick = ticks[i];\r\n\t\tif (i === next) {\r\n\t\t\ttick._index = i;\r\n\t\t\tcount++;\r\n\t\t\tnext = majorIndices[count * spacing];\r\n\t\t} else {\r\n\t\t\tdelete tick.label;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction skip(ticks, spacing, majorStart, majorEnd) {\r\n\tvar start = valueOrDefault$a(majorStart, 0);\r\n\tvar end = Math.min(valueOrDefault$a(majorEnd, ticks.length), ticks.length);\r\n\tvar count = 0;\r\n\tvar length, i, tick, next;\r\n\r\n\tspacing = Math.ceil(spacing);\r\n\tif (majorEnd) {\r\n\t\tlength = majorEnd - majorStart;\r\n\t\tspacing = length / Math.floor(length / spacing);\r\n\t}\r\n\r\n\tnext = start;\r\n\r\n\twhile (next < 0) {\r\n\t\tcount++;\r\n\t\tnext = Math.round(start + count * spacing);\r\n\t}\r\n\r\n\tfor (i = Math.max(start, 0); i < end; i++) {\r\n\t\ttick = ticks[i];\r\n\t\tif (i === next) {\r\n\t\t\ttick._index = i;\r\n\t\t\tcount++;\r\n\t\t\tnext = Math.round(start + count * spacing);\r\n\t\t} else {\r\n\t\t\tdelete tick.label;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nvar Scale = core_element.extend({\r\n\r\n\tzeroLineIndex: 0,\r\n\r\n\t/**\r\n\t * Get the padding needed for the scale\r\n\t * @method getPadding\r\n\t * @private\r\n\t * @returns {Padding} the necessary padding\r\n\t */\r\n\tgetPadding: function() {\r\n\t\tvar me = this;\r\n\t\treturn {\r\n\t\t\tleft: me.paddingLeft || 0,\r\n\t\t\ttop: me.paddingTop || 0,\r\n\t\t\tright: me.paddingRight || 0,\r\n\t\t\tbottom: me.paddingBottom || 0\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the scale tick objects ({label, major})\r\n\t * @since 2.7\r\n\t */\r\n\tgetTicks: function() {\r\n\t\treturn this._ticks;\r\n\t},\r\n\r\n\t/**\r\n\t* @private\r\n\t*/\r\n\t_getLabels: function() {\r\n\t\tvar data = this.chart.data;\r\n\t\treturn this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\r\n\t},\r\n\r\n\t// These methods are ordered by lifecyle. Utilities then follow.\r\n\t// Any function defined here is inherited by all scale types.\r\n\t// Any function can be extended by the scale type\r\n\r\n\t/**\r\n\t * Provided for backward compatibility, not available anymore\r\n\t * @function Chart.Scale.mergeTicksOptions\r\n\t * @deprecated since version 2.8.0\r\n\t * @todo remove at version 3\r\n\t */\r\n\tmergeTicksOptions: function() {\r\n\t\t// noop\r\n\t},\r\n\r\n\tbeforeUpdate: function() {\r\n\t\thelpers$1.callback(this.options.beforeUpdate, [this]);\r\n\t},\r\n\r\n\t/**\r\n\t * @param {number} maxWidth - the max width in pixels\r\n\t * @param {number} maxHeight - the max height in pixels\r\n\t * @param {object} margins - the space between the edge of the other scales and edge of the chart\r\n\t * This space comes from two sources:\r\n\t * - padding - space that's required to show the labels at the edges of the scale\r\n\t * - thickness of scales or legends in another orientation\r\n\t */\r\n\tupdate: function(maxWidth, maxHeight, margins) {\r\n\t\tvar me = this;\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tvar sampleSize = tickOpts.sampleSize;\r\n\t\tvar i, ilen, labels, ticks, samplingEnabled;\r\n\r\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\r\n\t\tme.beforeUpdate();\r\n\r\n\t\t// Absorb the master measurements\r\n\t\tme.maxWidth = maxWidth;\r\n\t\tme.maxHeight = maxHeight;\r\n\t\tme.margins = helpers$1.extend({\r\n\t\t\tleft: 0,\r\n\t\t\tright: 0,\r\n\t\t\ttop: 0,\r\n\t\t\tbottom: 0\r\n\t\t}, margins);\r\n\r\n\t\tme._ticks = null;\r\n\t\tme.ticks = null;\r\n\t\tme._labelSizes = null;\r\n\t\tme._maxLabelLines = 0;\r\n\t\tme.longestLabelWidth = 0;\r\n\t\tme.longestTextCache = me.longestTextCache || {};\r\n\t\tme._gridLineItems = null;\r\n\t\tme._labelItems = null;\r\n\r\n\t\t// Dimensions\r\n\t\tme.beforeSetDimensions();\r\n\t\tme.setDimensions();\r\n\t\tme.afterSetDimensions();\r\n\r\n\t\t// Data min/max\r\n\t\tme.beforeDataLimits();\r\n\t\tme.determineDataLimits();\r\n\t\tme.afterDataLimits();\r\n\r\n\t\t// Ticks - `this.ticks` is now DEPRECATED!\r\n\t\t// Internal ticks are now stored as objects in the PRIVATE `this._ticks` member\r\n\t\t// and must not be accessed directly from outside this class. `this.ticks` being\r\n\t\t// around for long time and not marked as private, we can't change its structure\r\n\t\t// without unexpected breaking changes. If you need to access the scale ticks,\r\n\t\t// use scale.getTicks() instead.\r\n\r\n\t\tme.beforeBuildTicks();\r\n\r\n\t\t// New implementations should return an array of objects but for BACKWARD COMPAT,\r\n\t\t// we still support no return (`this.ticks` internally set by calling this method).\r\n\t\tticks = me.buildTicks() || [];\r\n\r\n\t\t// Allow modification of ticks in callback.\r\n\t\tticks = me.afterBuildTicks(ticks) || ticks;\r\n\r\n\t\t// Ensure ticks contains ticks in new tick format\r\n\t\tif ((!ticks || !ticks.length) && me.ticks) {\r\n\t\t\tticks = [];\r\n\t\t\tfor (i = 0, ilen = me.ticks.length; i < ilen; ++i) {\r\n\t\t\t\tticks.push({\r\n\t\t\t\t\tvalue: me.ticks[i],\r\n\t\t\t\t\tmajor: false\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme._ticks = ticks;\r\n\r\n\t\t// Compute tick rotation and fit using a sampled subset of labels\r\n\t\t// We generally don't need to compute the size of every single label for determining scale size\r\n\t\tsamplingEnabled = sampleSize < ticks.length;\r\n\t\tlabels = me._convertTicksToLabels(samplingEnabled ? sample(ticks, sampleSize) : ticks);\r\n\r\n\t\t// _configure is called twice, once here, once from core.controller.updateLayout.\r\n\t\t// Here we haven't been positioned yet, but dimensions are correct.\r\n\t\t// Variables set in _configure are needed for calculateTickRotation, and\r\n\t\t// it's ok that coordinates are not correct there, only dimensions matter.\r\n\t\tme._configure();\r\n\r\n\t\t// Tick Rotation\r\n\t\tme.beforeCalculateTickRotation();\r\n\t\tme.calculateTickRotation();\r\n\t\tme.afterCalculateTickRotation();\r\n\r\n\t\tme.beforeFit();\r\n\t\tme.fit();\r\n\t\tme.afterFit();\r\n\r\n\t\t// Auto-skip\r\n\t\tme._ticksToDraw = tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto') ? me._autoSkip(ticks) : ticks;\r\n\r\n\t\tif (samplingEnabled) {\r\n\t\t\t// Generate labels using all non-skipped ticks\r\n\t\t\tlabels = me._convertTicksToLabels(me._ticksToDraw);\r\n\t\t}\r\n\r\n\t\tme.ticks = labels; // BACKWARD COMPATIBILITY\r\n\r\n\t\t// IMPORTANT: after this point, we consider that `this.ticks` will NEVER change!\r\n\r\n\t\tme.afterUpdate();\r\n\r\n\t\t// TODO(v3): remove minSize as a public property and return value from all layout boxes. It is unused\r\n\t\t// make maxWidth and maxHeight private\r\n\t\treturn me.minSize;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tvar reversePixels = me.options.ticks.reverse;\r\n\t\tvar startPixel, endPixel;\r\n\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\tstartPixel = me.left;\r\n\t\t\tendPixel = me.right;\r\n\t\t} else {\r\n\t\t\tstartPixel = me.top;\r\n\t\t\tendPixel = me.bottom;\r\n\t\t\t// by default vertical scales are from bottom to top, so pixels are reversed\r\n\t\t\treversePixels = !reversePixels;\r\n\t\t}\r\n\t\tme._startPixel = startPixel;\r\n\t\tme._endPixel = endPixel;\r\n\t\tme._reversePixels = reversePixels;\r\n\t\tme._length = endPixel - startPixel;\r\n\t},\r\n\r\n\tafterUpdate: function() {\r\n\t\thelpers$1.callback(this.options.afterUpdate, [this]);\r\n\t},\r\n\r\n\t//\r\n\r\n\tbeforeSetDimensions: function() {\r\n\t\thelpers$1.callback(this.options.beforeSetDimensions, [this]);\r\n\t},\r\n\tsetDimensions: function() {\r\n\t\tvar me = this;\r\n\t\t// Set the unconstrained dimension before label rotation\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.width = me.maxWidth;\r\n\t\t\tme.left = 0;\r\n\t\t\tme.right = me.width;\r\n\t\t} else {\r\n\t\t\tme.height = me.maxHeight;\r\n\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.top = 0;\r\n\t\t\tme.bottom = me.height;\r\n\t\t}\r\n\r\n\t\t// Reset padding\r\n\t\tme.paddingLeft = 0;\r\n\t\tme.paddingTop = 0;\r\n\t\tme.paddingRight = 0;\r\n\t\tme.paddingBottom = 0;\r\n\t},\r\n\tafterSetDimensions: function() {\r\n\t\thelpers$1.callback(this.options.afterSetDimensions, [this]);\r\n\t},\r\n\r\n\t// Data limits\r\n\tbeforeDataLimits: function() {\r\n\t\thelpers$1.callback(this.options.beforeDataLimits, [this]);\r\n\t},\r\n\tdetermineDataLimits: helpers$1.noop,\r\n\tafterDataLimits: function() {\r\n\t\thelpers$1.callback(this.options.afterDataLimits, [this]);\r\n\t},\r\n\r\n\t//\r\n\tbeforeBuildTicks: function() {\r\n\t\thelpers$1.callback(this.options.beforeBuildTicks, [this]);\r\n\t},\r\n\tbuildTicks: helpers$1.noop,\r\n\tafterBuildTicks: function(ticks) {\r\n\t\tvar me = this;\r\n\t\t// ticks is empty for old axis implementations here\r\n\t\tif (isArray(ticks) && ticks.length) {\r\n\t\t\treturn helpers$1.callback(me.options.afterBuildTicks, [me, ticks]);\r\n\t\t}\r\n\t\t// Support old implementations (that modified `this.ticks` directly in buildTicks)\r\n\t\tme.ticks = helpers$1.callback(me.options.afterBuildTicks, [me, me.ticks]) || me.ticks;\r\n\t\treturn ticks;\r\n\t},\r\n\r\n\tbeforeTickToLabelConversion: function() {\r\n\t\thelpers$1.callback(this.options.beforeTickToLabelConversion, [this]);\r\n\t},\r\n\tconvertTicksToLabels: function() {\r\n\t\tvar me = this;\r\n\t\t// Convert ticks to strings\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tme.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this);\r\n\t},\r\n\tafterTickToLabelConversion: function() {\r\n\t\thelpers$1.callback(this.options.afterTickToLabelConversion, [this]);\r\n\t},\r\n\r\n\t//\r\n\r\n\tbeforeCalculateTickRotation: function() {\r\n\t\thelpers$1.callback(this.options.beforeCalculateTickRotation, [this]);\r\n\t},\r\n\tcalculateTickRotation: function() {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options;\r\n\t\tvar tickOpts = options.ticks;\r\n\t\tvar numTicks = me.getTicks().length;\r\n\t\tvar minRotation = tickOpts.minRotation || 0;\r\n\t\tvar maxRotation = tickOpts.maxRotation;\r\n\t\tvar labelRotation = minRotation;\r\n\t\tvar labelSizes, maxLabelWidth, maxLabelHeight, maxWidth, tickWidth, maxHeight, maxLabelDiagonal;\r\n\r\n\t\tif (!me._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !me.isHorizontal()) {\r\n\t\t\tme.labelRotation = minRotation;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlabelSizes = me._getLabelSizes();\r\n\t\tmaxLabelWidth = labelSizes.widest.width;\r\n\t\tmaxLabelHeight = labelSizes.highest.height - labelSizes.highest.offset;\r\n\r\n\t\t// Estimate the width of each grid based on the canvas width, the maximum\r\n\t\t// label width and the number of tick intervals\r\n\t\tmaxWidth = Math.min(me.maxWidth, me.chart.width - maxLabelWidth);\r\n\t\ttickWidth = options.offset ? me.maxWidth / numTicks : maxWidth / (numTicks - 1);\r\n\r\n\t\t// Allow 3 pixels x2 padding either side for label readability\r\n\t\tif (maxLabelWidth + 6 > tickWidth) {\r\n\t\t\ttickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\r\n\t\t\tmaxHeight = me.maxHeight - getTickMarkLength(options.gridLines)\r\n\t\t\t\t- tickOpts.padding - getScaleLabelHeight(options.scaleLabel);\r\n\t\t\tmaxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\r\n\t\t\tlabelRotation = helpers$1.toDegrees(Math.min(\r\n\t\t\t\tMath.asin(Math.min((labelSizes.highest.height + 6) / tickWidth, 1)),\r\n\t\t\t\tMath.asin(Math.min(maxHeight / maxLabelDiagonal, 1)) - Math.asin(maxLabelHeight / maxLabelDiagonal)\r\n\t\t\t));\r\n\t\t\tlabelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\r\n\t\t}\r\n\r\n\t\tme.labelRotation = labelRotation;\r\n\t},\r\n\tafterCalculateTickRotation: function() {\r\n\t\thelpers$1.callback(this.options.afterCalculateTickRotation, [this]);\r\n\t},\r\n\r\n\t//\r\n\r\n\tbeforeFit: function() {\r\n\t\thelpers$1.callback(this.options.beforeFit, [this]);\r\n\t},\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\t// Reset\r\n\t\tvar minSize = me.minSize = {\r\n\t\t\twidth: 0,\r\n\t\t\theight: 0\r\n\t\t};\r\n\r\n\t\tvar chart = me.chart;\r\n\t\tvar opts = me.options;\r\n\t\tvar tickOpts = opts.ticks;\r\n\t\tvar scaleLabelOpts = opts.scaleLabel;\r\n\t\tvar gridLineOpts = opts.gridLines;\r\n\t\tvar display = me._isVisible();\r\n\t\tvar isBottom = opts.position === 'bottom';\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\r\n\t\t// Width\r\n\t\tif (isHorizontal) {\r\n\t\t\tminSize.width = me.maxWidth;\r\n\t\t} else if (display) {\r\n\t\t\tminSize.width = getTickMarkLength(gridLineOpts) + getScaleLabelHeight(scaleLabelOpts);\r\n\t\t}\r\n\r\n\t\t// height\r\n\t\tif (!isHorizontal) {\r\n\t\t\tminSize.height = me.maxHeight; // fill all the height\r\n\t\t} else if (display) {\r\n\t\t\tminSize.height = getTickMarkLength(gridLineOpts) + getScaleLabelHeight(scaleLabelOpts);\r\n\t\t}\r\n\r\n\t\t// Don't bother fitting the ticks if we are not showing the labels\r\n\t\tif (tickOpts.display && display) {\r\n\t\t\tvar tickFonts = parseTickFontOptions(tickOpts);\r\n\t\t\tvar labelSizes = me._getLabelSizes();\r\n\t\t\tvar firstLabelSize = labelSizes.first;\r\n\t\t\tvar lastLabelSize = labelSizes.last;\r\n\t\t\tvar widestLabelSize = labelSizes.widest;\r\n\t\t\tvar highestLabelSize = labelSizes.highest;\r\n\t\t\tvar lineSpace = tickFonts.minor.lineHeight * 0.4;\r\n\t\t\tvar tickPadding = tickOpts.padding;\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\t// A horizontal axis is more constrained by the height.\r\n\t\t\t\tvar isRotated = me.labelRotation !== 0;\r\n\t\t\t\tvar angleRadians = helpers$1.toRadians(me.labelRotation);\r\n\t\t\t\tvar cosRotation = Math.cos(angleRadians);\r\n\t\t\t\tvar sinRotation = Math.sin(angleRadians);\r\n\r\n\t\t\t\tvar labelHeight = sinRotation * widestLabelSize.width\r\n\t\t\t\t\t+ cosRotation * (highestLabelSize.height - (isRotated ? highestLabelSize.offset : 0))\r\n\t\t\t\t\t+ (isRotated ? 0 : lineSpace); // padding\r\n\r\n\t\t\t\tminSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding);\r\n\r\n\t\t\t\tvar offsetLeft = me.getPixelForTick(0) - me.left;\r\n\t\t\t\tvar offsetRight = me.right - me.getPixelForTick(me.getTicks().length - 1);\r\n\t\t\t\tvar paddingLeft, paddingRight;\r\n\r\n\t\t\t\t// Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\r\n\t\t\t\t// which means that the right padding is dominated by the font height\r\n\t\t\t\tif (isRotated) {\r\n\t\t\t\t\tpaddingLeft = isBottom ?\r\n\t\t\t\t\t\tcosRotation * firstLabelSize.width + sinRotation * firstLabelSize.offset :\r\n\t\t\t\t\t\tsinRotation * (firstLabelSize.height - firstLabelSize.offset);\r\n\t\t\t\t\tpaddingRight = isBottom ?\r\n\t\t\t\t\t\tsinRotation * (lastLabelSize.height - lastLabelSize.offset) :\r\n\t\t\t\t\t\tcosRotation * lastLabelSize.width + sinRotation * lastLabelSize.offset;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tpaddingLeft = firstLabelSize.width / 2;\r\n\t\t\t\t\tpaddingRight = lastLabelSize.width / 2;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Adjust padding taking into account changes in offsets\r\n\t\t\t\t// and add 3 px to move away from canvas edges\r\n\t\t\t\tme.paddingLeft = Math.max((paddingLeft - offsetLeft) * me.width / (me.width - offsetLeft), 0) + 3;\r\n\t\t\t\tme.paddingRight = Math.max((paddingRight - offsetRight) * me.width / (me.width - offsetRight), 0) + 3;\r\n\t\t\t} else {\r\n\t\t\t\t// A vertical axis is more constrained by the width. Labels are the\r\n\t\t\t\t// dominant factor here, so get that length first and account for padding\r\n\t\t\t\tvar labelWidth = tickOpts.mirror ? 0 :\r\n\t\t\t\t\t// use lineSpace for consistency with horizontal axis\r\n\t\t\t\t\t// tickPadding is not implemented for horizontal\r\n\t\t\t\t\twidestLabelSize.width + tickPadding + lineSpace;\r\n\r\n\t\t\t\tminSize.width = Math.min(me.maxWidth, minSize.width + labelWidth);\r\n\r\n\t\t\t\tme.paddingTop = firstLabelSize.height / 2;\r\n\t\t\t\tme.paddingBottom = lastLabelSize.height / 2;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.handleMargins();\r\n\r\n\t\tif (isHorizontal) {\r\n\t\t\tme.width = me._length = chart.width - me.margins.left - me.margins.right;\r\n\t\t\tme.height = minSize.height;\r\n\t\t} else {\r\n\t\t\tme.width = minSize.width;\r\n\t\t\tme.height = me._length = chart.height - me.margins.top - me.margins.bottom;\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Handle margins and padding interactions\r\n\t * @private\r\n\t */\r\n\thandleMargins: function() {\r\n\t\tvar me = this;\r\n\t\tif (me.margins) {\r\n\t\t\tme.margins.left = Math.max(me.paddingLeft, me.margins.left);\r\n\t\t\tme.margins.top = Math.max(me.paddingTop, me.margins.top);\r\n\t\t\tme.margins.right = Math.max(me.paddingRight, me.margins.right);\r\n\t\t\tme.margins.bottom = Math.max(me.paddingBottom, me.margins.bottom);\r\n\t\t}\r\n\t},\r\n\r\n\tafterFit: function() {\r\n\t\thelpers$1.callback(this.options.afterFit, [this]);\r\n\t},\r\n\r\n\t// Shared Methods\r\n\tisHorizontal: function() {\r\n\t\tvar pos = this.options.position;\r\n\t\treturn pos === 'top' || pos === 'bottom';\r\n\t},\r\n\tisFullWidth: function() {\r\n\t\treturn this.options.fullWidth;\r\n\t},\r\n\r\n\t// Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not\r\n\tgetRightValue: function(rawValue) {\r\n\t\t// Null and undefined values first\r\n\t\tif (isNullOrUndef(rawValue)) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\t// isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values\r\n\t\tif ((typeof rawValue === 'number' || rawValue instanceof Number) && !isFinite(rawValue)) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\t// If it is in fact an object, dive in one more level\r\n\t\tif (rawValue) {\r\n\t\t\tif (this.isHorizontal()) {\r\n\t\t\t\tif (rawValue.x !== undefined) {\r\n\t\t\t\t\treturn this.getRightValue(rawValue.x);\r\n\t\t\t\t}\r\n\t\t\t} else if (rawValue.y !== undefined) {\r\n\t\t\t\treturn this.getRightValue(rawValue.y);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Value is good, return it\r\n\t\treturn rawValue;\r\n\t},\r\n\r\n\t_convertTicksToLabels: function(ticks) {\r\n\t\tvar me = this;\r\n\t\tvar labels, i, ilen;\r\n\r\n\t\tme.ticks = ticks.map(function(tick) {\r\n\t\t\treturn tick.value;\r\n\t\t});\r\n\r\n\t\tme.beforeTickToLabelConversion();\r\n\r\n\t\t// New implementations should return the formatted tick labels but for BACKWARD\r\n\t\t// COMPAT, we still support no return (`this.ticks` internally changed by calling\r\n\t\t// this method and supposed to contain only string values).\r\n\t\tlabels = me.convertTicksToLabels(ticks) || me.ticks;\r\n\r\n\t\tme.afterTickToLabelConversion();\r\n\r\n\t\t// BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`)\r\n\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\r\n\t\t\tticks[i].label = labels[i];\r\n\t\t}\r\n\r\n\t\treturn labels;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getLabelSizes: function() {\r\n\t\tvar me = this;\r\n\t\tvar labelSizes = me._labelSizes;\r\n\r\n\t\tif (!labelSizes) {\r\n\t\t\tme._labelSizes = labelSizes = computeLabelSizes(me.ctx, parseTickFontOptions(me.options.ticks), me.getTicks(), me.longestTextCache);\r\n\t\t\tme.longestLabelWidth = labelSizes.widest.width;\r\n\t\t}\r\n\r\n\t\treturn labelSizes;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_parseValue: function(value) {\r\n\t\tvar start, end, min, max;\r\n\r\n\t\tif (isArray(value)) {\r\n\t\t\tstart = +this.getRightValue(value[0]);\r\n\t\t\tend = +this.getRightValue(value[1]);\r\n\t\t\tmin = Math.min(start, end);\r\n\t\t\tmax = Math.max(start, end);\r\n\t\t} else {\r\n\t\t\tvalue = +this.getRightValue(value);\r\n\t\t\tstart = undefined;\r\n\t\t\tend = value;\r\n\t\t\tmin = value;\r\n\t\t\tmax = value;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tmin: min,\r\n\t\t\tmax: max,\r\n\t\t\tstart: start,\r\n\t\t\tend: end\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t* @private\r\n\t*/\r\n\t_getScaleLabel: function(rawValue) {\r\n\t\tvar v = this._parseValue(rawValue);\r\n\t\tif (v.start !== undefined) {\r\n\t\t\treturn '[' + v.start + ', ' + v.end + ']';\r\n\t\t}\r\n\r\n\t\treturn +this.getRightValue(rawValue);\r\n\t},\r\n\r\n\t/**\r\n\t * Used to get the value to display in the tooltip for the data at the given index\r\n\t * @param index\r\n\t * @param datasetIndex\r\n\t */\r\n\tgetLabelForIndex: helpers$1.noop,\r\n\r\n\t/**\r\n\t * Returns the location of the given data point. Value can either be an index or a numerical value\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t * @param value\r\n\t * @param index\r\n\t * @param datasetIndex\r\n\t */\r\n\tgetPixelForValue: helpers$1.noop,\r\n\r\n\t/**\r\n\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t * @param pixel\r\n\t */\r\n\tgetValueForPixel: helpers$1.noop,\r\n\r\n\t/**\r\n\t * Returns the location of the tick at the given index\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t */\r\n\tgetPixelForTick: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar offset = me.options.offset;\r\n\t\tvar numTicks = me._ticks.length;\r\n\t\tvar tickWidth = 1 / Math.max(numTicks - (offset ? 0 : 1), 1);\r\n\r\n\t\treturn index < 0 || index > numTicks - 1\r\n\t\t\t? null\r\n\t\t\t: me.getPixelForDecimal(index * tickWidth + (offset ? tickWidth / 2 : 0));\r\n\t},\r\n\r\n\t/**\r\n\t * Utility for getting the pixel location of a percentage of scale\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t */\r\n\tgetPixelForDecimal: function(decimal) {\r\n\t\tvar me = this;\r\n\r\n\t\tif (me._reversePixels) {\r\n\t\t\tdecimal = 1 - decimal;\r\n\t\t}\r\n\r\n\t\treturn me._startPixel + decimal * me._length;\r\n\t},\r\n\r\n\tgetDecimalForPixel: function(pixel) {\r\n\t\tvar decimal = (pixel - this._startPixel) / this._length;\r\n\t\treturn this._reversePixels ? 1 - decimal : decimal;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the pixel for the minimum chart value\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t */\r\n\tgetBasePixel: function() {\r\n\t\treturn this.getPixelForValue(this.getBaseValue());\r\n\t},\r\n\r\n\tgetBaseValue: function() {\r\n\t\tvar me = this;\r\n\t\tvar min = me.min;\r\n\t\tvar max = me.max;\r\n\r\n\t\treturn me.beginAtZero ? 0 :\r\n\t\t\tmin < 0 && max < 0 ? max :\r\n\t\t\tmin > 0 && max > 0 ? min :\r\n\t\t\t0;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a subset of ticks to be plotted to avoid overlapping labels.\r\n\t * @private\r\n\t */\r\n\t_autoSkip: function(ticks) {\r\n\t\tvar me = this;\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tvar axisLength = me._length;\r\n\t\tvar ticksLimit = tickOpts.maxTicksLimit || axisLength / me._tickSize() + 1;\r\n\t\tvar majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\r\n\t\tvar numMajorIndices = majorIndices.length;\r\n\t\tvar first = majorIndices[0];\r\n\t\tvar last = majorIndices[numMajorIndices - 1];\r\n\t\tvar i, ilen, spacing, avgMajorSpacing;\r\n\r\n\t\t// If there are too many major ticks to display them all\r\n\t\tif (numMajorIndices > ticksLimit) {\r\n\t\t\tskipMajors(ticks, majorIndices, numMajorIndices / ticksLimit);\r\n\t\t\treturn nonSkipped(ticks);\r\n\t\t}\r\n\r\n\t\tspacing = calculateSpacing(majorIndices, ticks, axisLength, ticksLimit);\r\n\r\n\t\tif (numMajorIndices > 0) {\r\n\t\t\tfor (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\r\n\t\t\t\tskip(ticks, spacing, majorIndices[i], majorIndices[i + 1]);\r\n\t\t\t}\r\n\t\t\tavgMajorSpacing = numMajorIndices > 1 ? (last - first) / (numMajorIndices - 1) : null;\r\n\t\t\tskip(ticks, spacing, helpers$1.isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\r\n\t\t\tskip(ticks, spacing, last, helpers$1.isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\r\n\t\t\treturn nonSkipped(ticks);\r\n\t\t}\r\n\t\tskip(ticks, spacing);\r\n\t\treturn nonSkipped(ticks);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_tickSize: function() {\r\n\t\tvar me = this;\r\n\t\tvar optionTicks = me.options.ticks;\r\n\r\n\t\t// Calculate space needed by label in axis direction.\r\n\t\tvar rot = helpers$1.toRadians(me.labelRotation);\r\n\t\tvar cos = Math.abs(Math.cos(rot));\r\n\t\tvar sin = Math.abs(Math.sin(rot));\r\n\r\n\t\tvar labelSizes = me._getLabelSizes();\r\n\t\tvar padding = optionTicks.autoSkipPadding || 0;\r\n\t\tvar w = labelSizes ? labelSizes.widest.width + padding : 0;\r\n\t\tvar h = labelSizes ? labelSizes.highest.height + padding : 0;\r\n\r\n\t\t// Calculate space needed for 1 tick in axis direction.\r\n\t\treturn me.isHorizontal()\r\n\t\t\t? h * cos > w * sin ? w / cos : h / sin\r\n\t\t\t: h * sin < w * cos ? h / cos : w / sin;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_isVisible: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar display = me.options.display;\r\n\t\tvar i, ilen, meta;\r\n\r\n\t\tif (display !== 'auto') {\r\n\t\t\treturn !!display;\r\n\t\t}\r\n\r\n\t\t// When 'auto', the scale is visible if at least one associated dataset is visible.\r\n\t\tfor (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\r\n\t\t\tif (chart.isDatasetVisible(i)) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\tif (meta.xAxisID === me.id || meta.yAxisID === me.id) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_computeGridLineItems: function(chartArea) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar options = me.options;\r\n\t\tvar gridLines = options.gridLines;\r\n\t\tvar position = options.position;\r\n\t\tvar offsetGridLines = gridLines.offsetGridLines;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\tvar ticks = me._ticksToDraw;\r\n\t\tvar ticksLength = ticks.length + (offsetGridLines ? 1 : 0);\r\n\r\n\t\tvar tl = getTickMarkLength(gridLines);\r\n\t\tvar items = [];\r\n\t\tvar axisWidth = gridLines.drawBorder ? valueAtIndexOrDefault(gridLines.lineWidth, 0, 0) : 0;\r\n\t\tvar axisHalfWidth = axisWidth / 2;\r\n\t\tvar alignPixel = helpers$1._alignPixel;\r\n\t\tvar alignBorderValue = function(pixel) {\r\n\t\t\treturn alignPixel(chart, pixel, axisWidth);\r\n\t\t};\r\n\t\tvar borderValue, i, tick, lineValue, alignedLineValue;\r\n\t\tvar tx1, ty1, tx2, ty2, x1, y1, x2, y2, lineWidth, lineColor, borderDash, borderDashOffset;\r\n\r\n\t\tif (position === 'top') {\r\n\t\t\tborderValue = alignBorderValue(me.bottom);\r\n\t\t\tty1 = me.bottom - tl;\r\n\t\t\tty2 = borderValue - axisHalfWidth;\r\n\t\t\ty1 = alignBorderValue(chartArea.top) + axisHalfWidth;\r\n\t\t\ty2 = chartArea.bottom;\r\n\t\t} else if (position === 'bottom') {\r\n\t\t\tborderValue = alignBorderValue(me.top);\r\n\t\t\ty1 = chartArea.top;\r\n\t\t\ty2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\r\n\t\t\tty1 = borderValue + axisHalfWidth;\r\n\t\t\tty2 = me.top + tl;\r\n\t\t} else if (position === 'left') {\r\n\t\t\tborderValue = alignBorderValue(me.right);\r\n\t\t\ttx1 = me.right - tl;\r\n\t\t\ttx2 = borderValue - axisHalfWidth;\r\n\t\t\tx1 = alignBorderValue(chartArea.left) + axisHalfWidth;\r\n\t\t\tx2 = chartArea.right;\r\n\t\t} else {\r\n\t\t\tborderValue = alignBorderValue(me.left);\r\n\t\t\tx1 = chartArea.left;\r\n\t\t\tx2 = alignBorderValue(chartArea.right) - axisHalfWidth;\r\n\t\t\ttx1 = borderValue + axisHalfWidth;\r\n\t\t\ttx2 = me.left + tl;\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < ticksLength; ++i) {\r\n\t\t\ttick = ticks[i] || {};\r\n\r\n\t\t\t// autoskipper skipped this tick (#4635)\r\n\t\t\tif (isNullOrUndef(tick.label) && i < ticks.length) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (i === me.zeroLineIndex && options.offset === offsetGridLines) {\r\n\t\t\t\t// Draw the first index specially\r\n\t\t\t\tlineWidth = gridLines.zeroLineWidth;\r\n\t\t\t\tlineColor = gridLines.zeroLineColor;\r\n\t\t\t\tborderDash = gridLines.zeroLineBorderDash || [];\r\n\t\t\t\tborderDashOffset = gridLines.zeroLineBorderDashOffset || 0.0;\r\n\t\t\t} else {\r\n\t\t\t\tlineWidth = valueAtIndexOrDefault(gridLines.lineWidth, i, 1);\r\n\t\t\t\tlineColor = valueAtIndexOrDefault(gridLines.color, i, 'rgba(0,0,0,0.1)');\r\n\t\t\t\tborderDash = gridLines.borderDash || [];\r\n\t\t\t\tborderDashOffset = gridLines.borderDashOffset || 0.0;\r\n\t\t\t}\r\n\r\n\t\t\tlineValue = getPixelForGridLine(me, tick._index || i, offsetGridLines);\r\n\r\n\t\t\t// Skip if the pixel is out of the range\r\n\t\t\tif (lineValue === undefined) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\talignedLineValue = alignPixel(chart, lineValue, lineWidth);\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\ttx1 = tx2 = x1 = x2 = alignedLineValue;\r\n\t\t\t} else {\r\n\t\t\t\tty1 = ty2 = y1 = y2 = alignedLineValue;\r\n\t\t\t}\r\n\r\n\t\t\titems.push({\r\n\t\t\t\ttx1: tx1,\r\n\t\t\t\tty1: ty1,\r\n\t\t\t\ttx2: tx2,\r\n\t\t\t\tty2: ty2,\r\n\t\t\t\tx1: x1,\r\n\t\t\t\ty1: y1,\r\n\t\t\t\tx2: x2,\r\n\t\t\t\ty2: y2,\r\n\t\t\t\twidth: lineWidth,\r\n\t\t\t\tcolor: lineColor,\r\n\t\t\t\tborderDash: borderDash,\r\n\t\t\t\tborderDashOffset: borderDashOffset,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\titems.ticksLength = ticksLength;\r\n\t\titems.borderValue = borderValue;\r\n\r\n\t\treturn items;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_computeLabelItems: function() {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options;\r\n\t\tvar optionTicks = options.ticks;\r\n\t\tvar position = options.position;\r\n\t\tvar isMirrored = optionTicks.mirror;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\tvar ticks = me._ticksToDraw;\r\n\t\tvar fonts = parseTickFontOptions(optionTicks);\r\n\t\tvar tickPadding = optionTicks.padding;\r\n\t\tvar tl = getTickMarkLength(options.gridLines);\r\n\t\tvar rotation = -helpers$1.toRadians(me.labelRotation);\r\n\t\tvar items = [];\r\n\t\tvar i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\r\n\r\n\t\tif (position === 'top') {\r\n\t\t\ty = me.bottom - tl - tickPadding;\r\n\t\t\ttextAlign = !rotation ? 'center' : 'left';\r\n\t\t} else if (position === 'bottom') {\r\n\t\t\ty = me.top + tl + tickPadding;\r\n\t\t\ttextAlign = !rotation ? 'center' : 'right';\r\n\t\t} else if (position === 'left') {\r\n\t\t\tx = me.right - (isMirrored ? 0 : tl) - tickPadding;\r\n\t\t\ttextAlign = isMirrored ? 'left' : 'right';\r\n\t\t} else {\r\n\t\t\tx = me.left + (isMirrored ? 0 : tl) + tickPadding;\r\n\t\t\ttextAlign = isMirrored ? 'right' : 'left';\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\r\n\t\t\ttick = ticks[i];\r\n\t\t\tlabel = tick.label;\r\n\r\n\t\t\t// autoskipper skipped this tick (#4635)\r\n\t\t\tif (isNullOrUndef(label)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tpixel = me.getPixelForTick(tick._index || i) + optionTicks.labelOffset;\r\n\t\t\tfont = tick.major ? fonts.major : fonts.minor;\r\n\t\t\tlineHeight = font.lineHeight;\r\n\t\t\tlineCount = isArray(label) ? label.length : 1;\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tx = pixel;\r\n\t\t\t\ttextOffset = position === 'top'\r\n\t\t\t\t\t? ((!rotation ? 0.5 : 1) - lineCount) * lineHeight\r\n\t\t\t\t\t: (!rotation ? 0.5 : 0) * lineHeight;\r\n\t\t\t} else {\r\n\t\t\t\ty = pixel;\r\n\t\t\t\ttextOffset = (1 - lineCount) * lineHeight / 2;\r\n\t\t\t}\r\n\r\n\t\t\titems.push({\r\n\t\t\t\tx: x,\r\n\t\t\t\ty: y,\r\n\t\t\t\trotation: rotation,\r\n\t\t\t\tlabel: label,\r\n\t\t\t\tfont: font,\r\n\t\t\t\ttextOffset: textOffset,\r\n\t\t\t\ttextAlign: textAlign\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn items;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_drawGrid: function(chartArea) {\r\n\t\tvar me = this;\r\n\t\tvar gridLines = me.options.gridLines;\r\n\r\n\t\tif (!gridLines.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar chart = me.chart;\r\n\t\tvar alignPixel = helpers$1._alignPixel;\r\n\t\tvar axisWidth = gridLines.drawBorder ? valueAtIndexOrDefault(gridLines.lineWidth, 0, 0) : 0;\r\n\t\tvar items = me._gridLineItems || (me._gridLineItems = me._computeGridLineItems(chartArea));\r\n\t\tvar width, color, i, ilen, item;\r\n\r\n\t\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\r\n\t\t\titem = items[i];\r\n\t\t\twidth = item.width;\r\n\t\t\tcolor = item.color;\r\n\r\n\t\t\tif (width && color) {\r\n\t\t\t\tctx.save();\r\n\t\t\t\tctx.lineWidth = width;\r\n\t\t\t\tctx.strokeStyle = color;\r\n\t\t\t\tif (ctx.setLineDash) {\r\n\t\t\t\t\tctx.setLineDash(item.borderDash);\r\n\t\t\t\t\tctx.lineDashOffset = item.borderDashOffset;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tctx.beginPath();\r\n\r\n\t\t\t\tif (gridLines.drawTicks) {\r\n\t\t\t\t\tctx.moveTo(item.tx1, item.ty1);\r\n\t\t\t\t\tctx.lineTo(item.tx2, item.ty2);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (gridLines.drawOnChartArea) {\r\n\t\t\t\t\tctx.moveTo(item.x1, item.y1);\r\n\t\t\t\t\tctx.lineTo(item.x2, item.y2);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tctx.stroke();\r\n\t\t\t\tctx.restore();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (axisWidth) {\r\n\t\t\t// Draw the line at the edge of the axis\r\n\t\t\tvar firstLineWidth = axisWidth;\r\n\t\t\tvar lastLineWidth = valueAtIndexOrDefault(gridLines.lineWidth, items.ticksLength - 1, 1);\r\n\t\t\tvar borderValue = items.borderValue;\r\n\t\t\tvar x1, x2, y1, y2;\r\n\r\n\t\t\tif (me.isHorizontal()) {\r\n\t\t\t\tx1 = alignPixel(chart, me.left, firstLineWidth) - firstLineWidth / 2;\r\n\t\t\t\tx2 = alignPixel(chart, me.right, lastLineWidth) + lastLineWidth / 2;\r\n\t\t\t\ty1 = y2 = borderValue;\r\n\t\t\t} else {\r\n\t\t\t\ty1 = alignPixel(chart, me.top, firstLineWidth) - firstLineWidth / 2;\r\n\t\t\t\ty2 = alignPixel(chart, me.bottom, lastLineWidth) + lastLineWidth / 2;\r\n\t\t\t\tx1 = x2 = borderValue;\r\n\t\t\t}\r\n\r\n\t\t\tctx.lineWidth = axisWidth;\r\n\t\t\tctx.strokeStyle = valueAtIndexOrDefault(gridLines.color, 0);\r\n\t\t\tctx.beginPath();\r\n\t\t\tctx.moveTo(x1, y1);\r\n\t\t\tctx.lineTo(x2, y2);\r\n\t\t\tctx.stroke();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_drawLabels: function() {\r\n\t\tvar me = this;\r\n\t\tvar optionTicks = me.options.ticks;\r\n\r\n\t\tif (!optionTicks.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar items = me._labelItems || (me._labelItems = me._computeLabelItems());\r\n\t\tvar i, j, ilen, jlen, item, tickFont, label, y;\r\n\r\n\t\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\r\n\t\t\titem = items[i];\r\n\t\t\ttickFont = item.font;\r\n\r\n\t\t\t// Make sure we draw text in the correct color and font\r\n\t\t\tctx.save();\r\n\t\t\tctx.translate(item.x, item.y);\r\n\t\t\tctx.rotate(item.rotation);\r\n\t\t\tctx.font = tickFont.string;\r\n\t\t\tctx.fillStyle = tickFont.color;\r\n\t\t\tctx.textBaseline = 'middle';\r\n\t\t\tctx.textAlign = item.textAlign;\r\n\r\n\t\t\tlabel = item.label;\r\n\t\t\ty = item.textOffset;\r\n\t\t\tif (isArray(label)) {\r\n\t\t\t\tfor (j = 0, jlen = label.length; j < jlen; ++j) {\r\n\t\t\t\t\t// We just make sure the multiline element is a string here..\r\n\t\t\t\t\tctx.fillText('' + label[j], 0, y);\r\n\t\t\t\t\ty += tickFont.lineHeight;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tctx.fillText(label, 0, y);\r\n\t\t\t}\r\n\t\t\tctx.restore();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_drawTitle: function() {\r\n\t\tvar me = this;\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar options = me.options;\r\n\t\tvar scaleLabel = options.scaleLabel;\r\n\r\n\t\tif (!scaleLabel.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar scaleLabelFontColor = valueOrDefault$a(scaleLabel.fontColor, core_defaults.global.defaultFontColor);\r\n\t\tvar scaleLabelFont = helpers$1.options._parseFont(scaleLabel);\r\n\t\tvar scaleLabelPadding = helpers$1.options.toPadding(scaleLabel.padding);\r\n\t\tvar halfLineHeight = scaleLabelFont.lineHeight / 2;\r\n\t\tvar position = options.position;\r\n\t\tvar rotation = 0;\r\n\t\tvar scaleLabelX, scaleLabelY;\r\n\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\tscaleLabelX = me.left + me.width / 2; // midpoint of the width\r\n\t\t\tscaleLabelY = position === 'bottom'\r\n\t\t\t\t? me.bottom - halfLineHeight - scaleLabelPadding.bottom\r\n\t\t\t\t: me.top + halfLineHeight + scaleLabelPadding.top;\r\n\t\t} else {\r\n\t\t\tvar isLeft = position === 'left';\r\n\t\t\tscaleLabelX = isLeft\r\n\t\t\t\t? me.left + halfLineHeight + scaleLabelPadding.top\r\n\t\t\t\t: me.right - halfLineHeight - scaleLabelPadding.top;\r\n\t\t\tscaleLabelY = me.top + me.height / 2;\r\n\t\t\trotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI;\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\t\tctx.translate(scaleLabelX, scaleLabelY);\r\n\t\tctx.rotate(rotation);\r\n\t\tctx.textAlign = 'center';\r\n\t\tctx.textBaseline = 'middle';\r\n\t\tctx.fillStyle = scaleLabelFontColor; // render in correct colour\r\n\t\tctx.font = scaleLabelFont.string;\r\n\t\tctx.fillText(scaleLabel.labelString, 0, 0);\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\tdraw: function(chartArea) {\r\n\t\tvar me = this;\r\n\r\n\t\tif (!me._isVisible()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tme._drawGrid(chartArea);\r\n\t\tme._drawTitle();\r\n\t\tme._drawLabels();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_layers: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar tz = opts.ticks && opts.ticks.z || 0;\r\n\t\tvar gz = opts.gridLines && opts.gridLines.z || 0;\r\n\r\n\t\tif (!me._isVisible() || tz === gz || me.draw !== me._draw) {\r\n\t\t\t// backward compatibility: draw has been overridden by custom scale\r\n\t\t\treturn [{\r\n\t\t\t\tz: tz,\r\n\t\t\t\tdraw: function() {\r\n\t\t\t\t\tme.draw.apply(me, arguments);\r\n\t\t\t\t}\r\n\t\t\t}];\r\n\t\t}\r\n\r\n\t\treturn [{\r\n\t\t\tz: gz,\r\n\t\t\tdraw: function() {\r\n\t\t\t\tme._drawGrid.apply(me, arguments);\r\n\t\t\t\tme._drawTitle.apply(me, arguments);\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tz: tz,\r\n\t\t\tdraw: function() {\r\n\t\t\t\tme._drawLabels.apply(me, arguments);\r\n\t\t\t}\r\n\t\t}];\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getMatchingVisibleMetas: function(type) {\r\n\t\tvar me = this;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\treturn me.chart._getSortedVisibleDatasetMetas()\r\n\t\t\t.filter(function(meta) {\r\n\t\t\t\treturn (!type || meta.type === type)\r\n\t\t\t\t\t&& (isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id);\r\n\t\t\t});\r\n\t}\r\n});\r\n\r\nScale.prototype._draw = Scale.prototype.draw;\r\n\r\nvar core_scale = Scale;\n\nvar isNullOrUndef$1 = helpers$1.isNullOrUndef;\r\n\r\nvar defaultConfig = {\r\n\tposition: 'bottom'\r\n};\r\n\r\nvar scale_category = core_scale.extend({\r\n\tdetermineDataLimits: function() {\r\n\t\tvar me = this;\r\n\t\tvar labels = me._getLabels();\r\n\t\tvar ticksOpts = me.options.ticks;\r\n\t\tvar min = ticksOpts.min;\r\n\t\tvar max = ticksOpts.max;\r\n\t\tvar minIndex = 0;\r\n\t\tvar maxIndex = labels.length - 1;\r\n\t\tvar findIndex;\r\n\r\n\t\tif (min !== undefined) {\r\n\t\t\t// user specified min value\r\n\t\t\tfindIndex = labels.indexOf(min);\r\n\t\t\tif (findIndex >= 0) {\r\n\t\t\t\tminIndex = findIndex;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (max !== undefined) {\r\n\t\t\t// user specified max value\r\n\t\t\tfindIndex = labels.indexOf(max);\r\n\t\t\tif (findIndex >= 0) {\r\n\t\t\t\tmaxIndex = findIndex;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.minIndex = minIndex;\r\n\t\tme.maxIndex = maxIndex;\r\n\t\tme.min = labels[minIndex];\r\n\t\tme.max = labels[maxIndex];\r\n\t},\r\n\r\n\tbuildTicks: function() {\r\n\t\tvar me = this;\r\n\t\tvar labels = me._getLabels();\r\n\t\tvar minIndex = me.minIndex;\r\n\t\tvar maxIndex = me.maxIndex;\r\n\r\n\t\t// If we are viewing some subset of labels, slice the original array\r\n\t\tme.ticks = (minIndex === 0 && maxIndex === labels.length - 1) ? labels : labels.slice(minIndex, maxIndex + 1);\r\n\t},\r\n\r\n\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\r\n\t\tif (chart.getDatasetMeta(datasetIndex).controller._getValueScaleId() === me.id) {\r\n\t\t\treturn me.getRightValue(chart.data.datasets[datasetIndex].data[index]);\r\n\t\t}\r\n\r\n\t\treturn me._getLabels()[index];\r\n\t},\r\n\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tvar offset = me.options.offset;\r\n\t\tvar ticks = me.ticks;\r\n\r\n\t\tcore_scale.prototype._configure.call(me);\r\n\r\n\t\tif (!me.isHorizontal()) {\r\n\t\t\t// For backward compatibility, vertical category scale reverse is inverted.\r\n\t\t\tme._reversePixels = !me._reversePixels;\r\n\t\t}\r\n\r\n\t\tif (!ticks) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tme._startValue = me.minIndex - (offset ? 0.5 : 0);\r\n\t\tme._valueRange = Math.max(ticks.length - (offset ? 0 : 1), 1);\r\n\t},\r\n\r\n\t// Used to get data value locations. Value can either be an index or a numerical value\r\n\tgetPixelForValue: function(value, index, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar valueCategory, labels, idx;\r\n\r\n\t\tif (!isNullOrUndef$1(index) && !isNullOrUndef$1(datasetIndex)) {\r\n\t\t\tvalue = me.chart.data.datasets[datasetIndex].data[index];\r\n\t\t}\r\n\r\n\t\t// If value is a data object, then index is the index in the data array,\r\n\t\t// not the index of the scale. We need to change that.\r\n\t\tif (!isNullOrUndef$1(value)) {\r\n\t\t\tvalueCategory = me.isHorizontal() ? value.x : value.y;\r\n\t\t}\r\n\t\tif (valueCategory !== undefined || (value !== undefined && isNaN(index))) {\r\n\t\t\tlabels = me._getLabels();\r\n\t\t\tvalue = helpers$1.valueOrDefault(valueCategory, value);\r\n\t\t\tidx = labels.indexOf(value);\r\n\t\t\tindex = idx !== -1 ? idx : index;\r\n\t\t\tif (isNaN(index)) {\r\n\t\t\t\tindex = value;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn me.getPixelForDecimal((index - me._startValue) / me._valueRange);\r\n\t},\r\n\r\n\tgetPixelForTick: function(index) {\r\n\t\tvar ticks = this.ticks;\r\n\t\treturn index < 0 || index > ticks.length - 1\r\n\t\t\t? null\r\n\t\t\t: this.getPixelForValue(ticks[index], index + this.minIndex);\r\n\t},\r\n\r\n\tgetValueForPixel: function(pixel) {\r\n\t\tvar me = this;\r\n\t\tvar value = Math.round(me._startValue + me.getDecimalForPixel(pixel) * me._valueRange);\r\n\t\treturn Math.min(Math.max(value, 0), me.ticks.length - 1);\r\n\t},\r\n\r\n\tgetBasePixel: function() {\r\n\t\treturn this.bottom;\r\n\t}\r\n});\r\n\r\n// INTERNAL: static default options, registered in src/index.js\r\nvar _defaults = defaultConfig;\nscale_category._defaults = _defaults;\n\nvar noop = helpers$1.noop;\r\nvar isNullOrUndef$2 = helpers$1.isNullOrUndef;\r\n\r\n/**\r\n * Generate a set of linear ticks\r\n * @param generationOptions the options used to generate the ticks\r\n * @param dataRange the range of the data\r\n * @returns {number[]} array of tick values\r\n */\r\nfunction generateTicks(generationOptions, dataRange) {\r\n\tvar ticks = [];\r\n\t// To get a \"nice\" value for the tick spacing, we will use the appropriately named\r\n\t// \"nice number\" algorithm. See https://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\r\n\t// for details.\r\n\r\n\tvar MIN_SPACING = 1e-14;\r\n\tvar stepSize = generationOptions.stepSize;\r\n\tvar unit = stepSize || 1;\r\n\tvar maxNumSpaces = generationOptions.maxTicks - 1;\r\n\tvar min = generationOptions.min;\r\n\tvar max = generationOptions.max;\r\n\tvar precision = generationOptions.precision;\r\n\tvar rmin = dataRange.min;\r\n\tvar rmax = dataRange.max;\r\n\tvar spacing = helpers$1.niceNum((rmax - rmin) / maxNumSpaces / unit) * unit;\r\n\tvar factor, niceMin, niceMax, numSpaces;\r\n\r\n\t// Beyond MIN_SPACING floating point numbers being to lose precision\r\n\t// such that we can't do the math necessary to generate ticks\r\n\tif (spacing < MIN_SPACING && isNullOrUndef$2(min) && isNullOrUndef$2(max)) {\r\n\t\treturn [rmin, rmax];\r\n\t}\r\n\r\n\tnumSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\r\n\tif (numSpaces > maxNumSpaces) {\r\n\t\t// If the calculated num of spaces exceeds maxNumSpaces, recalculate it\r\n\t\tspacing = helpers$1.niceNum(numSpaces * spacing / maxNumSpaces / unit) * unit;\r\n\t}\r\n\r\n\tif (stepSize || isNullOrUndef$2(precision)) {\r\n\t\t// If a precision is not specified, calculate factor based on spacing\r\n\t\tfactor = Math.pow(10, helpers$1._decimalPlaces(spacing));\r\n\t} else {\r\n\t\t// If the user specified a precision, round to that number of decimal places\r\n\t\tfactor = Math.pow(10, precision);\r\n\t\tspacing = Math.ceil(spacing * factor) / factor;\r\n\t}\r\n\r\n\tniceMin = Math.floor(rmin / spacing) * spacing;\r\n\tniceMax = Math.ceil(rmax / spacing) * spacing;\r\n\r\n\t// If min, max and stepSize is set and they make an evenly spaced scale use it.\r\n\tif (stepSize) {\r\n\t\t// If very close to our whole number, use it.\r\n\t\tif (!isNullOrUndef$2(min) && helpers$1.almostWhole(min / spacing, spacing / 1000)) {\r\n\t\t\tniceMin = min;\r\n\t\t}\r\n\t\tif (!isNullOrUndef$2(max) && helpers$1.almostWhole(max / spacing, spacing / 1000)) {\r\n\t\t\tniceMax = max;\r\n\t\t}\r\n\t}\r\n\r\n\tnumSpaces = (niceMax - niceMin) / spacing;\r\n\t// If very close to our rounded value, use it.\r\n\tif (helpers$1.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\r\n\t\tnumSpaces = Math.round(numSpaces);\r\n\t} else {\r\n\t\tnumSpaces = Math.ceil(numSpaces);\r\n\t}\r\n\r\n\tniceMin = Math.round(niceMin * factor) / factor;\r\n\tniceMax = Math.round(niceMax * factor) / factor;\r\n\tticks.push(isNullOrUndef$2(min) ? niceMin : min);\r\n\tfor (var j = 1; j < numSpaces; ++j) {\r\n\t\tticks.push(Math.round((niceMin + j * spacing) * factor) / factor);\r\n\t}\r\n\tticks.push(isNullOrUndef$2(max) ? niceMax : max);\r\n\r\n\treturn ticks;\r\n}\r\n\r\nvar scale_linearbase = core_scale.extend({\r\n\tgetRightValue: function(value) {\r\n\t\tif (typeof value === 'string') {\r\n\t\t\treturn +value;\r\n\t\t}\r\n\t\treturn core_scale.prototype.getRightValue.call(this, value);\r\n\t},\r\n\r\n\thandleTickRangeOptions: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar tickOpts = opts.ticks;\r\n\r\n\t\t// If we are forcing it to begin at 0, but 0 will already be rendered on the chart,\r\n\t\t// do nothing since that would make the chart weird. If the user really wants a weird chart\r\n\t\t// axis, they can manually override it\r\n\t\tif (tickOpts.beginAtZero) {\r\n\t\t\tvar minSign = helpers$1.sign(me.min);\r\n\t\t\tvar maxSign = helpers$1.sign(me.max);\r\n\r\n\t\t\tif (minSign < 0 && maxSign < 0) {\r\n\t\t\t\t// move the top up to 0\r\n\t\t\t\tme.max = 0;\r\n\t\t\t} else if (minSign > 0 && maxSign > 0) {\r\n\t\t\t\t// move the bottom down to 0\r\n\t\t\t\tme.min = 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined;\r\n\t\tvar setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined;\r\n\r\n\t\tif (tickOpts.min !== undefined) {\r\n\t\t\tme.min = tickOpts.min;\r\n\t\t} else if (tickOpts.suggestedMin !== undefined) {\r\n\t\t\tif (me.min === null) {\r\n\t\t\t\tme.min = tickOpts.suggestedMin;\r\n\t\t\t} else {\r\n\t\t\t\tme.min = Math.min(me.min, tickOpts.suggestedMin);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (tickOpts.max !== undefined) {\r\n\t\t\tme.max = tickOpts.max;\r\n\t\t} else if (tickOpts.suggestedMax !== undefined) {\r\n\t\t\tif (me.max === null) {\r\n\t\t\t\tme.max = tickOpts.suggestedMax;\r\n\t\t\t} else {\r\n\t\t\t\tme.max = Math.max(me.max, tickOpts.suggestedMax);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (setMin !== setMax) {\r\n\t\t\t// We set the min or the max but not both.\r\n\t\t\t// So ensure that our range is good\r\n\t\t\t// Inverted or 0 length range can happen when\r\n\t\t\t// ticks.min is set, and no datasets are visible\r\n\t\t\tif (me.min >= me.max) {\r\n\t\t\t\tif (setMin) {\r\n\t\t\t\t\tme.max = me.min + 1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tme.min = me.max - 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (me.min === me.max) {\r\n\t\t\tme.max++;\r\n\r\n\t\t\tif (!tickOpts.beginAtZero) {\r\n\t\t\t\tme.min--;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tgetTickLimit: function() {\r\n\t\tvar me = this;\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tvar stepSize = tickOpts.stepSize;\r\n\t\tvar maxTicksLimit = tickOpts.maxTicksLimit;\r\n\t\tvar maxTicks;\r\n\r\n\t\tif (stepSize) {\r\n\t\t\tmaxTicks = Math.ceil(me.max / stepSize) - Math.floor(me.min / stepSize) + 1;\r\n\t\t} else {\r\n\t\t\tmaxTicks = me._computeTickLimit();\r\n\t\t\tmaxTicksLimit = maxTicksLimit || 11;\r\n\t\t}\r\n\r\n\t\tif (maxTicksLimit) {\r\n\t\t\tmaxTicks = Math.min(maxTicksLimit, maxTicks);\r\n\t\t}\r\n\r\n\t\treturn maxTicks;\r\n\t},\r\n\r\n\t_computeTickLimit: function() {\r\n\t\treturn Number.POSITIVE_INFINITY;\r\n\t},\r\n\r\n\thandleDirectionalChanges: noop,\r\n\r\n\tbuildTicks: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar tickOpts = opts.ticks;\r\n\r\n\t\t// Figure out what the max number of ticks we can support it is based on the size of\r\n\t\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 40\r\n\t\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\r\n\t\t// the graph. Make sure we always have at least 2 ticks\r\n\t\tvar maxTicks = me.getTickLimit();\r\n\t\tmaxTicks = Math.max(2, maxTicks);\r\n\r\n\t\tvar numericGeneratorOptions = {\r\n\t\t\tmaxTicks: maxTicks,\r\n\t\t\tmin: tickOpts.min,\r\n\t\t\tmax: tickOpts.max,\r\n\t\t\tprecision: tickOpts.precision,\r\n\t\t\tstepSize: helpers$1.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize)\r\n\t\t};\r\n\t\tvar ticks = me.ticks = generateTicks(numericGeneratorOptions, me);\r\n\r\n\t\tme.handleDirectionalChanges();\r\n\r\n\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\r\n\t\t// range of the scale\r\n\t\tme.max = helpers$1.max(ticks);\r\n\t\tme.min = helpers$1.min(ticks);\r\n\r\n\t\tif (tickOpts.reverse) {\r\n\t\t\tticks.reverse();\r\n\r\n\t\t\tme.start = me.max;\r\n\t\t\tme.end = me.min;\r\n\t\t} else {\r\n\t\t\tme.start = me.min;\r\n\t\t\tme.end = me.max;\r\n\t\t}\r\n\t},\r\n\r\n\tconvertTicksToLabels: function() {\r\n\t\tvar me = this;\r\n\t\tme.ticksAsNumbers = me.ticks.slice();\r\n\t\tme.zeroLineIndex = me.ticks.indexOf(0);\r\n\r\n\t\tcore_scale.prototype.convertTicksToLabels.call(me);\r\n\t},\r\n\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tvar ticks = me.getTicks();\r\n\t\tvar start = me.min;\r\n\t\tvar end = me.max;\r\n\t\tvar offset;\r\n\r\n\t\tcore_scale.prototype._configure.call(me);\r\n\r\n\t\tif (me.options.offset && ticks.length) {\r\n\t\t\toffset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\r\n\t\t\tstart -= offset;\r\n\t\t\tend += offset;\r\n\t\t}\r\n\t\tme._startValue = start;\r\n\t\tme._endValue = end;\r\n\t\tme._valueRange = end - start;\r\n\t}\r\n});\n\nvar defaultConfig$1 = {\r\n\tposition: 'left',\r\n\tticks: {\r\n\t\tcallback: core_ticks.formatters.linear\r\n\t}\r\n};\r\n\r\nvar DEFAULT_MIN = 0;\r\nvar DEFAULT_MAX = 1;\r\n\r\nfunction getOrCreateStack(stacks, stacked, meta) {\r\n\tvar key = [\r\n\t\tmeta.type,\r\n\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\r\n\t\tstacked === undefined && meta.stack === undefined ? meta.index : '',\r\n\t\tmeta.stack\r\n\t].join('.');\r\n\r\n\tif (stacks[key] === undefined) {\r\n\t\tstacks[key] = {\r\n\t\t\tpos: [],\r\n\t\t\tneg: []\r\n\t\t};\r\n\t}\r\n\r\n\treturn stacks[key];\r\n}\r\n\r\nfunction stackData(scale, stacks, meta, data) {\r\n\tvar opts = scale.options;\r\n\tvar stacked = opts.stacked;\r\n\tvar stack = getOrCreateStack(stacks, stacked, meta);\r\n\tvar pos = stack.pos;\r\n\tvar neg = stack.neg;\r\n\tvar ilen = data.length;\r\n\tvar i, value;\r\n\r\n\tfor (i = 0; i < ilen; ++i) {\r\n\t\tvalue = scale._parseValue(data[i]);\r\n\t\tif (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tpos[i] = pos[i] || 0;\r\n\t\tneg[i] = neg[i] || 0;\r\n\r\n\t\tif (opts.relativePoints) {\r\n\t\t\tpos[i] = 100;\r\n\t\t} else if (value.min < 0 || value.max < 0) {\r\n\t\t\tneg[i] += value.min;\r\n\t\t} else {\r\n\t\t\tpos[i] += value.max;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction updateMinMax(scale, meta, data) {\r\n\tvar ilen = data.length;\r\n\tvar i, value;\r\n\r\n\tfor (i = 0; i < ilen; ++i) {\r\n\t\tvalue = scale._parseValue(data[i]);\r\n\t\tif (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tscale.min = Math.min(scale.min, value.min);\r\n\t\tscale.max = Math.max(scale.max, value.max);\r\n\t}\r\n}\r\n\r\nvar scale_linear = scale_linearbase.extend({\r\n\tdetermineDataLimits: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasets = chart.data.datasets;\r\n\t\tvar metasets = me._getMatchingVisibleMetas();\r\n\t\tvar hasStacks = opts.stacked;\r\n\t\tvar stacks = {};\r\n\t\tvar ilen = metasets.length;\r\n\t\tvar i, meta, data, values;\r\n\r\n\t\tme.min = Number.POSITIVE_INFINITY;\r\n\t\tme.max = Number.NEGATIVE_INFINITY;\r\n\r\n\t\tif (hasStacks === undefined) {\r\n\t\t\tfor (i = 0; !hasStacks && i < ilen; ++i) {\r\n\t\t\t\tmeta = metasets[i];\r\n\t\t\t\thasStacks = meta.stack !== undefined;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tmeta = metasets[i];\r\n\t\t\tdata = datasets[meta.index].data;\r\n\t\t\tif (hasStacks) {\r\n\t\t\t\tstackData(me, stacks, meta, data);\r\n\t\t\t} else {\r\n\t\t\t\tupdateMinMax(me, meta, data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\thelpers$1.each(stacks, function(stackValues) {\r\n\t\t\tvalues = stackValues.pos.concat(stackValues.neg);\r\n\t\t\tme.min = Math.min(me.min, helpers$1.min(values));\r\n\t\t\tme.max = Math.max(me.max, helpers$1.max(values));\r\n\t\t});\r\n\r\n\t\tme.min = helpers$1.isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN;\r\n\t\tme.max = helpers$1.isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX;\r\n\r\n\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\r\n\t\tme.handleTickRangeOptions();\r\n\t},\r\n\r\n\t// Returns the maximum number of ticks based on the scale dimension\r\n\t_computeTickLimit: function() {\r\n\t\tvar me = this;\r\n\t\tvar tickFont;\r\n\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\treturn Math.ceil(me.width / 40);\r\n\t\t}\r\n\t\ttickFont = helpers$1.options._parseFont(me.options.ticks);\r\n\t\treturn Math.ceil(me.height / tickFont.lineHeight);\r\n\t},\r\n\r\n\t// Called after the ticks are built. We need\r\n\thandleDirectionalChanges: function() {\r\n\t\tif (!this.isHorizontal()) {\r\n\t\t\t// We are in a vertical orientation. The top value is the highest. So reverse the array\r\n\t\t\tthis.ticks.reverse();\r\n\t\t}\r\n\t},\r\n\r\n\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\treturn this._getScaleLabel(this.chart.data.datasets[datasetIndex].data[index]);\r\n\t},\r\n\r\n\t// Utils\r\n\tgetPixelForValue: function(value) {\r\n\t\tvar me = this;\r\n\t\treturn me.getPixelForDecimal((+me.getRightValue(value) - me._startValue) / me._valueRange);\r\n\t},\r\n\r\n\tgetValueForPixel: function(pixel) {\r\n\t\treturn this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\r\n\t},\r\n\r\n\tgetPixelForTick: function(index) {\r\n\t\tvar ticks = this.ticksAsNumbers;\r\n\t\tif (index < 0 || index > ticks.length - 1) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn this.getPixelForValue(ticks[index]);\r\n\t}\r\n});\r\n\r\n// INTERNAL: static default options, registered in src/index.js\r\nvar _defaults$1 = defaultConfig$1;\nscale_linear._defaults = _defaults$1;\n\nvar valueOrDefault$b = helpers$1.valueOrDefault;\r\nvar log10 = helpers$1.math.log10;\r\n\r\n/**\r\n * Generate a set of logarithmic ticks\r\n * @param generationOptions the options used to generate the ticks\r\n * @param dataRange the range of the data\r\n * @returns {number[]} array of tick values\r\n */\r\nfunction generateTicks$1(generationOptions, dataRange) {\r\n\tvar ticks = [];\r\n\r\n\tvar tickVal = valueOrDefault$b(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\r\n\r\n\tvar endExp = Math.floor(log10(dataRange.max));\r\n\tvar endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\r\n\tvar exp, significand;\r\n\r\n\tif (tickVal === 0) {\r\n\t\texp = Math.floor(log10(dataRange.minNotZero));\r\n\t\tsignificand = Math.floor(dataRange.minNotZero / Math.pow(10, exp));\r\n\r\n\t\tticks.push(tickVal);\r\n\t\ttickVal = significand * Math.pow(10, exp);\r\n\t} else {\r\n\t\texp = Math.floor(log10(tickVal));\r\n\t\tsignificand = Math.floor(tickVal / Math.pow(10, exp));\r\n\t}\r\n\tvar precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\r\n\r\n\tdo {\r\n\t\tticks.push(tickVal);\r\n\r\n\t\t++significand;\r\n\t\tif (significand === 10) {\r\n\t\t\tsignificand = 1;\r\n\t\t\t++exp;\r\n\t\t\tprecision = exp >= 0 ? 1 : precision;\r\n\t\t}\r\n\r\n\t\ttickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\r\n\t} while (exp < endExp || (exp === endExp && significand < endSignificand));\r\n\r\n\tvar lastTick = valueOrDefault$b(generationOptions.max, tickVal);\r\n\tticks.push(lastTick);\r\n\r\n\treturn ticks;\r\n}\r\n\r\nvar defaultConfig$2 = {\r\n\tposition: 'left',\r\n\r\n\t// label settings\r\n\tticks: {\r\n\t\tcallback: core_ticks.formatters.logarithmic\r\n\t}\r\n};\r\n\r\n// TODO(v3): change this to positiveOrDefault\r\nfunction nonNegativeOrDefault(value, defaultValue) {\r\n\treturn helpers$1.isFinite(value) && value >= 0 ? value : defaultValue;\r\n}\r\n\r\nvar scale_logarithmic = core_scale.extend({\r\n\tdetermineDataLimits: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasets = chart.data.datasets;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\tfunction IDMatches(meta) {\r\n\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\r\n\t\t}\r\n\t\tvar datasetIndex, meta, value, data, i, ilen;\r\n\r\n\t\t// Calculate Range\r\n\t\tme.min = Number.POSITIVE_INFINITY;\r\n\t\tme.max = Number.NEGATIVE_INFINITY;\r\n\t\tme.minNotZero = Number.POSITIVE_INFINITY;\r\n\r\n\t\tvar hasStacks = opts.stacked;\r\n\t\tif (hasStacks === undefined) {\r\n\t\t\tfor (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\r\n\t\t\t\t\tmeta.stack !== undefined) {\r\n\t\t\t\t\thasStacks = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (opts.stacked || hasStacks) {\r\n\t\t\tvar valuesPerStack = {};\r\n\r\n\t\t\tfor (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\tvar key = [\r\n\t\t\t\t\tmeta.type,\r\n\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\r\n\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\r\n\t\t\t\t\tmeta.stack\r\n\t\t\t\t].join('.');\r\n\r\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\r\n\t\t\t\t\tif (valuesPerStack[key] === undefined) {\r\n\t\t\t\t\t\tvaluesPerStack[key] = [];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdata = datasets[datasetIndex].data;\r\n\t\t\t\t\tfor (i = 0, ilen = data.length; i < ilen; i++) {\r\n\t\t\t\t\t\tvar values = valuesPerStack[key];\r\n\t\t\t\t\t\tvalue = me._parseValue(data[i]);\r\n\t\t\t\t\t\t// invalid, hidden and negative values are ignored\r\n\t\t\t\t\t\tif (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden || value.min < 0 || value.max < 0) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvalues[i] = values[i] || 0;\r\n\t\t\t\t\t\tvalues[i] += value.max;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\thelpers$1.each(valuesPerStack, function(valuesForType) {\r\n\t\t\t\tif (valuesForType.length > 0) {\r\n\t\t\t\t\tvar minVal = helpers$1.min(valuesForType);\r\n\t\t\t\t\tvar maxVal = helpers$1.max(valuesForType);\r\n\t\t\t\t\tme.min = Math.min(me.min, minVal);\r\n\t\t\t\t\tme.max = Math.max(me.max, maxVal);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t} else {\r\n\t\t\tfor (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\r\n\t\t\t\t\tdata = datasets[datasetIndex].data;\r\n\t\t\t\t\tfor (i = 0, ilen = data.length; i < ilen; i++) {\r\n\t\t\t\t\t\tvalue = me._parseValue(data[i]);\r\n\t\t\t\t\t\t// invalid, hidden and negative values are ignored\r\n\t\t\t\t\t\tif (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden || value.min < 0 || value.max < 0) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tme.min = Math.min(value.min, me.min);\r\n\t\t\t\t\t\tme.max = Math.max(value.max, me.max);\r\n\r\n\t\t\t\t\t\tif (value.min !== 0) {\r\n\t\t\t\t\t\t\tme.minNotZero = Math.min(value.min, me.minNotZero);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.min = helpers$1.isFinite(me.min) ? me.min : null;\r\n\t\tme.max = helpers$1.isFinite(me.max) ? me.max : null;\r\n\t\tme.minNotZero = helpers$1.isFinite(me.minNotZero) ? me.minNotZero : null;\r\n\r\n\t\t// Common base implementation to handle ticks.min, ticks.max\r\n\t\tthis.handleTickRangeOptions();\r\n\t},\r\n\r\n\thandleTickRangeOptions: function() {\r\n\t\tvar me = this;\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tvar DEFAULT_MIN = 1;\r\n\t\tvar DEFAULT_MAX = 10;\r\n\r\n\t\tme.min = nonNegativeOrDefault(tickOpts.min, me.min);\r\n\t\tme.max = nonNegativeOrDefault(tickOpts.max, me.max);\r\n\r\n\t\tif (me.min === me.max) {\r\n\t\t\tif (me.min !== 0 && me.min !== null) {\r\n\t\t\t\tme.min = Math.pow(10, Math.floor(log10(me.min)) - 1);\r\n\t\t\t\tme.max = Math.pow(10, Math.floor(log10(me.max)) + 1);\r\n\t\t\t} else {\r\n\t\t\t\tme.min = DEFAULT_MIN;\r\n\t\t\t\tme.max = DEFAULT_MAX;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (me.min === null) {\r\n\t\t\tme.min = Math.pow(10, Math.floor(log10(me.max)) - 1);\r\n\t\t}\r\n\t\tif (me.max === null) {\r\n\t\t\tme.max = me.min !== 0\r\n\t\t\t\t? Math.pow(10, Math.floor(log10(me.min)) + 1)\r\n\t\t\t\t: DEFAULT_MAX;\r\n\t\t}\r\n\t\tif (me.minNotZero === null) {\r\n\t\t\tif (me.min > 0) {\r\n\t\t\t\tme.minNotZero = me.min;\r\n\t\t\t} else if (me.max < 1) {\r\n\t\t\t\tme.minNotZero = Math.pow(10, Math.floor(log10(me.max)));\r\n\t\t\t} else {\r\n\t\t\t\tme.minNotZero = DEFAULT_MIN;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tbuildTicks: function() {\r\n\t\tvar me = this;\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tvar reverse = !me.isHorizontal();\r\n\r\n\t\tvar generationOptions = {\r\n\t\t\tmin: nonNegativeOrDefault(tickOpts.min),\r\n\t\t\tmax: nonNegativeOrDefault(tickOpts.max)\r\n\t\t};\r\n\t\tvar ticks = me.ticks = generateTicks$1(generationOptions, me);\r\n\r\n\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\r\n\t\t// range of the scale\r\n\t\tme.max = helpers$1.max(ticks);\r\n\t\tme.min = helpers$1.min(ticks);\r\n\r\n\t\tif (tickOpts.reverse) {\r\n\t\t\treverse = !reverse;\r\n\t\t\tme.start = me.max;\r\n\t\t\tme.end = me.min;\r\n\t\t} else {\r\n\t\t\tme.start = me.min;\r\n\t\t\tme.end = me.max;\r\n\t\t}\r\n\t\tif (reverse) {\r\n\t\t\tticks.reverse();\r\n\t\t}\r\n\t},\r\n\r\n\tconvertTicksToLabels: function() {\r\n\t\tthis.tickValues = this.ticks.slice();\r\n\r\n\t\tcore_scale.prototype.convertTicksToLabels.call(this);\r\n\t},\r\n\r\n\t// Get the correct tooltip label\r\n\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\treturn this._getScaleLabel(this.chart.data.datasets[datasetIndex].data[index]);\r\n\t},\r\n\r\n\tgetPixelForTick: function(index) {\r\n\t\tvar ticks = this.tickValues;\r\n\t\tif (index < 0 || index > ticks.length - 1) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn this.getPixelForValue(ticks[index]);\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the value of the first tick.\r\n\t * @param {number} value - The minimum not zero value.\r\n\t * @return {number} The first tick value.\r\n\t * @private\r\n\t */\r\n\t_getFirstTickValue: function(value) {\r\n\t\tvar exp = Math.floor(log10(value));\r\n\t\tvar significand = Math.floor(value / Math.pow(10, exp));\r\n\r\n\t\treturn significand * Math.pow(10, exp);\r\n\t},\r\n\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tvar start = me.min;\r\n\t\tvar offset = 0;\r\n\r\n\t\tcore_scale.prototype._configure.call(me);\r\n\r\n\t\tif (start === 0) {\r\n\t\t\tstart = me._getFirstTickValue(me.minNotZero);\r\n\t\t\toffset = valueOrDefault$b(me.options.ticks.fontSize, core_defaults.global.defaultFontSize) / me._length;\r\n\t\t}\r\n\r\n\t\tme._startValue = log10(start);\r\n\t\tme._valueOffset = offset;\r\n\t\tme._valueRange = (log10(me.max) - log10(start)) / (1 - offset);\r\n\t},\r\n\r\n\tgetPixelForValue: function(value) {\r\n\t\tvar me = this;\r\n\t\tvar decimal = 0;\r\n\r\n\t\tvalue = +me.getRightValue(value);\r\n\r\n\t\tif (value > me.min && value > 0) {\r\n\t\t\tdecimal = (log10(value) - me._startValue) / me._valueRange + me._valueOffset;\r\n\t\t}\r\n\t\treturn me.getPixelForDecimal(decimal);\r\n\t},\r\n\r\n\tgetValueForPixel: function(pixel) {\r\n\t\tvar me = this;\r\n\t\tvar decimal = me.getDecimalForPixel(pixel);\r\n\t\treturn decimal === 0 && me.min === 0\r\n\t\t\t? 0\r\n\t\t\t: Math.pow(10, me._startValue + (decimal - me._valueOffset) * me._valueRange);\r\n\t}\r\n});\r\n\r\n// INTERNAL: static default options, registered in src/index.js\r\nvar _defaults$2 = defaultConfig$2;\nscale_logarithmic._defaults = _defaults$2;\n\nvar valueOrDefault$c = helpers$1.valueOrDefault;\r\nvar valueAtIndexOrDefault$1 = helpers$1.valueAtIndexOrDefault;\r\nvar resolve$4 = helpers$1.options.resolve;\r\n\r\nvar defaultConfig$3 = {\r\n\tdisplay: true,\r\n\r\n\t// Boolean - Whether to animate scaling the chart from the centre\r\n\tanimate: true,\r\n\tposition: 'chartArea',\r\n\r\n\tangleLines: {\r\n\t\tdisplay: true,\r\n\t\tcolor: 'rgba(0,0,0,0.1)',\r\n\t\tlineWidth: 1,\r\n\t\tborderDash: [],\r\n\t\tborderDashOffset: 0.0\r\n\t},\r\n\r\n\tgridLines: {\r\n\t\tcircular: false\r\n\t},\r\n\r\n\t// label settings\r\n\tticks: {\r\n\t\t// Boolean - Show a backdrop to the scale label\r\n\t\tshowLabelBackdrop: true,\r\n\r\n\t\t// String - The colour of the label backdrop\r\n\t\tbackdropColor: 'rgba(255,255,255,0.75)',\r\n\r\n\t\t// Number - The backdrop padding above & below the label in pixels\r\n\t\tbackdropPaddingY: 2,\r\n\r\n\t\t// Number - The backdrop padding to the side of the label in pixels\r\n\t\tbackdropPaddingX: 2,\r\n\r\n\t\tcallback: core_ticks.formatters.linear\r\n\t},\r\n\r\n\tpointLabels: {\r\n\t\t// Boolean - if true, show point labels\r\n\t\tdisplay: true,\r\n\r\n\t\t// Number - Point label font size in pixels\r\n\t\tfontSize: 10,\r\n\r\n\t\t// Function - Used to convert point labels\r\n\t\tcallback: function(label) {\r\n\t\t\treturn label;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nfunction getTickBackdropHeight(opts) {\r\n\tvar tickOpts = opts.ticks;\r\n\r\n\tif (tickOpts.display && opts.display) {\r\n\t\treturn valueOrDefault$c(tickOpts.fontSize, core_defaults.global.defaultFontSize) + tickOpts.backdropPaddingY * 2;\r\n\t}\r\n\treturn 0;\r\n}\r\n\r\nfunction measureLabelSize(ctx, lineHeight, label) {\r\n\tif (helpers$1.isArray(label)) {\r\n\t\treturn {\r\n\t\t\tw: helpers$1.longestText(ctx, ctx.font, label),\r\n\t\t\th: label.length * lineHeight\r\n\t\t};\r\n\t}\r\n\r\n\treturn {\r\n\t\tw: ctx.measureText(label).width,\r\n\t\th: lineHeight\r\n\t};\r\n}\r\n\r\nfunction determineLimits(angle, pos, size, min, max) {\r\n\tif (angle === min || angle === max) {\r\n\t\treturn {\r\n\t\t\tstart: pos - (size / 2),\r\n\t\t\tend: pos + (size / 2)\r\n\t\t};\r\n\t} else if (angle < min || angle > max) {\r\n\t\treturn {\r\n\t\t\tstart: pos - size,\r\n\t\t\tend: pos\r\n\t\t};\r\n\t}\r\n\r\n\treturn {\r\n\t\tstart: pos,\r\n\t\tend: pos + size\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper function to fit a radial linear scale with point labels\r\n */\r\nfunction fitWithPointLabels(scale) {\r\n\r\n\t// Right, this is really confusing and there is a lot of maths going on here\r\n\t// The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\r\n\t//\r\n\t// Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\r\n\t//\r\n\t// Solution:\r\n\t//\r\n\t// We assume the radius of the polygon is half the size of the canvas at first\r\n\t// at each index we check if the text overlaps.\r\n\t//\r\n\t// Where it does, we store that angle and that index.\r\n\t//\r\n\t// After finding the largest index and angle we calculate how much we need to remove\r\n\t// from the shape radius to move the point inwards by that x.\r\n\t//\r\n\t// We average the left and right distances to get the maximum shape radius that can fit in the box\r\n\t// along with labels.\r\n\t//\r\n\t// Once we have that, we can find the centre point for the chart, by taking the x text protrusion\r\n\t// on each side, removing that from the size, halving it and adding the left x protrusion width.\r\n\t//\r\n\t// This will mean we have a shape fitted to the canvas, as large as it can be with the labels\r\n\t// and position it in the most space efficient manner\r\n\t//\r\n\t// https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\r\n\r\n\tvar plFont = helpers$1.options._parseFont(scale.options.pointLabels);\r\n\r\n\t// Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\r\n\t// Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\r\n\tvar furthestLimits = {\r\n\t\tl: 0,\r\n\t\tr: scale.width,\r\n\t\tt: 0,\r\n\t\tb: scale.height - scale.paddingTop\r\n\t};\r\n\tvar furthestAngles = {};\r\n\tvar i, textSize, pointPosition;\r\n\r\n\tscale.ctx.font = plFont.string;\r\n\tscale._pointLabelSizes = [];\r\n\r\n\tvar valueCount = scale.chart.data.labels.length;\r\n\tfor (i = 0; i < valueCount; i++) {\r\n\t\tpointPosition = scale.getPointPosition(i, scale.drawingArea + 5);\r\n\t\ttextSize = measureLabelSize(scale.ctx, plFont.lineHeight, scale.pointLabels[i]);\r\n\t\tscale._pointLabelSizes[i] = textSize;\r\n\r\n\t\t// Add quarter circle to make degree 0 mean top of circle\r\n\t\tvar angleRadians = scale.getIndexAngle(i);\r\n\t\tvar angle = helpers$1.toDegrees(angleRadians) % 360;\r\n\t\tvar hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\r\n\t\tvar vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\r\n\r\n\t\tif (hLimits.start < furthestLimits.l) {\r\n\t\t\tfurthestLimits.l = hLimits.start;\r\n\t\t\tfurthestAngles.l = angleRadians;\r\n\t\t}\r\n\r\n\t\tif (hLimits.end > furthestLimits.r) {\r\n\t\t\tfurthestLimits.r = hLimits.end;\r\n\t\t\tfurthestAngles.r = angleRadians;\r\n\t\t}\r\n\r\n\t\tif (vLimits.start < furthestLimits.t) {\r\n\t\t\tfurthestLimits.t = vLimits.start;\r\n\t\t\tfurthestAngles.t = angleRadians;\r\n\t\t}\r\n\r\n\t\tif (vLimits.end > furthestLimits.b) {\r\n\t\t\tfurthestLimits.b = vLimits.end;\r\n\t\t\tfurthestAngles.b = angleRadians;\r\n\t\t}\r\n\t}\r\n\r\n\tscale.setReductions(scale.drawingArea, furthestLimits, furthestAngles);\r\n}\r\n\r\nfunction getTextAlignForAngle(angle) {\r\n\tif (angle === 0 || angle === 180) {\r\n\t\treturn 'center';\r\n\t} else if (angle < 180) {\r\n\t\treturn 'left';\r\n\t}\r\n\r\n\treturn 'right';\r\n}\r\n\r\nfunction fillText(ctx, text, position, lineHeight) {\r\n\tvar y = position.y + lineHeight / 2;\r\n\tvar i, ilen;\r\n\r\n\tif (helpers$1.isArray(text)) {\r\n\t\tfor (i = 0, ilen = text.length; i < ilen; ++i) {\r\n\t\t\tctx.fillText(text[i], position.x, y);\r\n\t\t\ty += lineHeight;\r\n\t\t}\r\n\t} else {\r\n\t\tctx.fillText(text, position.x, y);\r\n\t}\r\n}\r\n\r\nfunction adjustPointPositionForLabelHeight(angle, textSize, position) {\r\n\tif (angle === 90 || angle === 270) {\r\n\t\tposition.y -= (textSize.h / 2);\r\n\t} else if (angle > 270 || angle < 90) {\r\n\t\tposition.y -= textSize.h;\r\n\t}\r\n}\r\n\r\nfunction drawPointLabels(scale) {\r\n\tvar ctx = scale.ctx;\r\n\tvar opts = scale.options;\r\n\tvar pointLabelOpts = opts.pointLabels;\r\n\tvar tickBackdropHeight = getTickBackdropHeight(opts);\r\n\tvar outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);\r\n\tvar plFont = helpers$1.options._parseFont(pointLabelOpts);\r\n\r\n\tctx.save();\r\n\r\n\tctx.font = plFont.string;\r\n\tctx.textBaseline = 'middle';\r\n\r\n\tfor (var i = scale.chart.data.labels.length - 1; i >= 0; i--) {\r\n\t\t// Extra pixels out for some label spacing\r\n\t\tvar extra = (i === 0 ? tickBackdropHeight / 2 : 0);\r\n\t\tvar pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + 5);\r\n\r\n\t\t// Keep this in loop since we may support array properties here\r\n\t\tvar pointLabelFontColor = valueAtIndexOrDefault$1(pointLabelOpts.fontColor, i, core_defaults.global.defaultFontColor);\r\n\t\tctx.fillStyle = pointLabelFontColor;\r\n\r\n\t\tvar angleRadians = scale.getIndexAngle(i);\r\n\t\tvar angle = helpers$1.toDegrees(angleRadians);\r\n\t\tctx.textAlign = getTextAlignForAngle(angle);\r\n\t\tadjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition);\r\n\t\tfillText(ctx, scale.pointLabels[i], pointLabelPosition, plFont.lineHeight);\r\n\t}\r\n\tctx.restore();\r\n}\r\n\r\nfunction drawRadiusLine(scale, gridLineOpts, radius, index) {\r\n\tvar ctx = scale.ctx;\r\n\tvar circular = gridLineOpts.circular;\r\n\tvar valueCount = scale.chart.data.labels.length;\r\n\tvar lineColor = valueAtIndexOrDefault$1(gridLineOpts.color, index - 1);\r\n\tvar lineWidth = valueAtIndexOrDefault$1(gridLineOpts.lineWidth, index - 1);\r\n\tvar pointPosition;\r\n\r\n\tif ((!circular && !valueCount) || !lineColor || !lineWidth) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tctx.save();\r\n\tctx.strokeStyle = lineColor;\r\n\tctx.lineWidth = lineWidth;\r\n\tif (ctx.setLineDash) {\r\n\t\tctx.setLineDash(gridLineOpts.borderDash || []);\r\n\t\tctx.lineDashOffset = gridLineOpts.borderDashOffset || 0.0;\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tif (circular) {\r\n\t\t// Draw circular arcs between the points\r\n\t\tctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2);\r\n\t} else {\r\n\t\t// Draw straight lines connecting each index\r\n\t\tpointPosition = scale.getPointPosition(0, radius);\r\n\t\tctx.moveTo(pointPosition.x, pointPosition.y);\r\n\r\n\t\tfor (var i = 1; i < valueCount; i++) {\r\n\t\t\tpointPosition = scale.getPointPosition(i, radius);\r\n\t\t\tctx.lineTo(pointPosition.x, pointPosition.y);\r\n\t\t}\r\n\t}\r\n\tctx.closePath();\r\n\tctx.stroke();\r\n\tctx.restore();\r\n}\r\n\r\nfunction numberOrZero(param) {\r\n\treturn helpers$1.isNumber(param) ? param : 0;\r\n}\r\n\r\nvar scale_radialLinear = scale_linearbase.extend({\r\n\tsetDimensions: function() {\r\n\t\tvar me = this;\r\n\r\n\t\t// Set the unconstrained dimension before label rotation\r\n\t\tme.width = me.maxWidth;\r\n\t\tme.height = me.maxHeight;\r\n\t\tme.paddingTop = getTickBackdropHeight(me.options) / 2;\r\n\t\tme.xCenter = Math.floor(me.width / 2);\r\n\t\tme.yCenter = Math.floor((me.height - me.paddingTop) / 2);\r\n\t\tme.drawingArea = Math.min(me.height - me.paddingTop, me.width) / 2;\r\n\t},\r\n\r\n\tdetermineDataLimits: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar min = Number.POSITIVE_INFINITY;\r\n\t\tvar max = Number.NEGATIVE_INFINITY;\r\n\r\n\t\thelpers$1.each(chart.data.datasets, function(dataset, datasetIndex) {\r\n\t\t\tif (chart.isDatasetVisible(datasetIndex)) {\r\n\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\r\n\t\t\t\thelpers$1.each(dataset.data, function(rawValue, index) {\r\n\t\t\t\t\tvar value = +me.getRightValue(rawValue);\r\n\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tmin = Math.min(value, min);\r\n\t\t\t\t\tmax = Math.max(value, max);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tme.min = (min === Number.POSITIVE_INFINITY ? 0 : min);\r\n\t\tme.max = (max === Number.NEGATIVE_INFINITY ? 0 : max);\r\n\r\n\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\r\n\t\tme.handleTickRangeOptions();\r\n\t},\r\n\r\n\t// Returns the maximum number of ticks based on the scale dimension\r\n\t_computeTickLimit: function() {\r\n\t\treturn Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\r\n\t},\r\n\r\n\tconvertTicksToLabels: function() {\r\n\t\tvar me = this;\r\n\r\n\t\tscale_linearbase.prototype.convertTicksToLabels.call(me);\r\n\r\n\t\t// Point labels\r\n\t\tme.pointLabels = me.chart.data.labels.map(function() {\r\n\t\t\tvar label = helpers$1.callback(me.options.pointLabels.callback, arguments, me);\r\n\t\t\treturn label || label === 0 ? label : '';\r\n\t\t});\r\n\t},\r\n\r\n\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\r\n\t},\r\n\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\r\n\t\tif (opts.display && opts.pointLabels.display) {\r\n\t\t\tfitWithPointLabels(me);\r\n\t\t} else {\r\n\t\t\tme.setCenterPoint(0, 0, 0, 0);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Set radius reductions and determine new radius and center point\r\n\t * @private\r\n\t */\r\n\tsetReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) {\r\n\t\tvar me = this;\r\n\t\tvar radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);\r\n\t\tvar radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);\r\n\t\tvar radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);\r\n\t\tvar radiusReductionBottom = -Math.max(furthestLimits.b - (me.height - me.paddingTop), 0) / Math.cos(furthestAngles.b);\r\n\r\n\t\tradiusReductionLeft = numberOrZero(radiusReductionLeft);\r\n\t\tradiusReductionRight = numberOrZero(radiusReductionRight);\r\n\t\tradiusReductionTop = numberOrZero(radiusReductionTop);\r\n\t\tradiusReductionBottom = numberOrZero(radiusReductionBottom);\r\n\r\n\t\tme.drawingArea = Math.min(\r\n\t\t\tMath.floor(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2),\r\n\t\t\tMath.floor(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2));\r\n\t\tme.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);\r\n\t},\r\n\r\n\tsetCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) {\r\n\t\tvar me = this;\r\n\t\tvar maxRight = me.width - rightMovement - me.drawingArea;\r\n\t\tvar maxLeft = leftMovement + me.drawingArea;\r\n\t\tvar maxTop = topMovement + me.drawingArea;\r\n\t\tvar maxBottom = (me.height - me.paddingTop) - bottomMovement - me.drawingArea;\r\n\r\n\t\tme.xCenter = Math.floor(((maxLeft + maxRight) / 2) + me.left);\r\n\t\tme.yCenter = Math.floor(((maxTop + maxBottom) / 2) + me.top + me.paddingTop);\r\n\t},\r\n\r\n\tgetIndexAngle: function(index) {\r\n\t\tvar chart = this.chart;\r\n\t\tvar angleMultiplier = 360 / chart.data.labels.length;\r\n\t\tvar options = chart.options || {};\r\n\t\tvar startAngle = options.startAngle || 0;\r\n\r\n\t\t// Start from the top instead of right, so remove a quarter of the circle\r\n\t\tvar angle = (index * angleMultiplier + startAngle) % 360;\r\n\r\n\t\treturn (angle < 0 ? angle + 360 : angle) * Math.PI * 2 / 360;\r\n\t},\r\n\r\n\tgetDistanceFromCenterForValue: function(value) {\r\n\t\tvar me = this;\r\n\r\n\t\tif (helpers$1.isNullOrUndef(value)) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\t// Take into account half font size + the yPadding of the top value\r\n\t\tvar scalingFactor = me.drawingArea / (me.max - me.min);\r\n\t\tif (me.options.ticks.reverse) {\r\n\t\t\treturn (me.max - value) * scalingFactor;\r\n\t\t}\r\n\t\treturn (value - me.min) * scalingFactor;\r\n\t},\r\n\r\n\tgetPointPosition: function(index, distanceFromCenter) {\r\n\t\tvar me = this;\r\n\t\tvar thisAngle = me.getIndexAngle(index) - (Math.PI / 2);\r\n\t\treturn {\r\n\t\t\tx: Math.cos(thisAngle) * distanceFromCenter + me.xCenter,\r\n\t\t\ty: Math.sin(thisAngle) * distanceFromCenter + me.yCenter\r\n\t\t};\r\n\t},\r\n\r\n\tgetPointPositionForValue: function(index, value) {\r\n\t\treturn this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\r\n\t},\r\n\r\n\tgetBasePosition: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar min = me.min;\r\n\t\tvar max = me.max;\r\n\r\n\t\treturn me.getPointPositionForValue(index || 0,\r\n\t\t\tme.beginAtZero ? 0 :\r\n\t\t\tmin < 0 && max < 0 ? max :\r\n\t\t\tmin > 0 && max > 0 ? min :\r\n\t\t\t0);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_drawGrid: function() {\r\n\t\tvar me = this;\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar opts = me.options;\r\n\t\tvar gridLineOpts = opts.gridLines;\r\n\t\tvar angleLineOpts = opts.angleLines;\r\n\t\tvar lineWidth = valueOrDefault$c(angleLineOpts.lineWidth, gridLineOpts.lineWidth);\r\n\t\tvar lineColor = valueOrDefault$c(angleLineOpts.color, gridLineOpts.color);\r\n\t\tvar i, offset, position;\r\n\r\n\t\tif (opts.pointLabels.display) {\r\n\t\t\tdrawPointLabels(me);\r\n\t\t}\r\n\r\n\t\tif (gridLineOpts.display) {\r\n\t\t\thelpers$1.each(me.ticks, function(label, index) {\r\n\t\t\t\tif (index !== 0) {\r\n\t\t\t\t\toffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\r\n\t\t\t\t\tdrawRadiusLine(me, gridLineOpts, offset, index);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (angleLineOpts.display && lineWidth && lineColor) {\r\n\t\t\tctx.save();\r\n\t\t\tctx.lineWidth = lineWidth;\r\n\t\t\tctx.strokeStyle = lineColor;\r\n\t\t\tif (ctx.setLineDash) {\r\n\t\t\t\tctx.setLineDash(resolve$4([angleLineOpts.borderDash, gridLineOpts.borderDash, []]));\r\n\t\t\t\tctx.lineDashOffset = resolve$4([angleLineOpts.borderDashOffset, gridLineOpts.borderDashOffset, 0.0]);\r\n\t\t\t}\r\n\r\n\t\t\tfor (i = me.chart.data.labels.length - 1; i >= 0; i--) {\r\n\t\t\t\toffset = me.getDistanceFromCenterForValue(opts.ticks.reverse ? me.min : me.max);\r\n\t\t\t\tposition = me.getPointPosition(i, offset);\r\n\t\t\t\tctx.beginPath();\r\n\t\t\t\tctx.moveTo(me.xCenter, me.yCenter);\r\n\t\t\t\tctx.lineTo(position.x, position.y);\r\n\t\t\t\tctx.stroke();\r\n\t\t\t}\r\n\r\n\t\t\tctx.restore();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_drawLabels: function() {\r\n\t\tvar me = this;\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar opts = me.options;\r\n\t\tvar tickOpts = opts.ticks;\r\n\r\n\t\tif (!tickOpts.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar startAngle = me.getIndexAngle(0);\r\n\t\tvar tickFont = helpers$1.options._parseFont(tickOpts);\r\n\t\tvar tickFontColor = valueOrDefault$c(tickOpts.fontColor, core_defaults.global.defaultFontColor);\r\n\t\tvar offset, width;\r\n\r\n\t\tctx.save();\r\n\t\tctx.font = tickFont.string;\r\n\t\tctx.translate(me.xCenter, me.yCenter);\r\n\t\tctx.rotate(startAngle);\r\n\t\tctx.textAlign = 'center';\r\n\t\tctx.textBaseline = 'middle';\r\n\r\n\t\thelpers$1.each(me.ticks, function(label, index) {\r\n\t\t\tif (index === 0 && !tickOpts.reverse) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\toffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\r\n\r\n\t\t\tif (tickOpts.showLabelBackdrop) {\r\n\t\t\t\twidth = ctx.measureText(label).width;\r\n\t\t\t\tctx.fillStyle = tickOpts.backdropColor;\r\n\r\n\t\t\t\tctx.fillRect(\r\n\t\t\t\t\t-width / 2 - tickOpts.backdropPaddingX,\r\n\t\t\t\t\t-offset - tickFont.size / 2 - tickOpts.backdropPaddingY,\r\n\t\t\t\t\twidth + tickOpts.backdropPaddingX * 2,\r\n\t\t\t\t\ttickFont.size + tickOpts.backdropPaddingY * 2\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tctx.fillStyle = tickFontColor;\r\n\t\t\tctx.fillText(label, 0, -offset);\r\n\t\t});\r\n\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_drawTitle: helpers$1.noop\r\n});\r\n\r\n// INTERNAL: static default options, registered in src/index.js\r\nvar _defaults$3 = defaultConfig$3;\nscale_radialLinear._defaults = _defaults$3;\n\nvar deprecated$1 = helpers$1._deprecated;\r\nvar resolve$5 = helpers$1.options.resolve;\r\nvar valueOrDefault$d = helpers$1.valueOrDefault;\r\n\r\n// Integer constants are from the ES6 spec.\r\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;\r\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\r\n\r\nvar INTERVALS = {\r\n\tmillisecond: {\r\n\t\tcommon: true,\r\n\t\tsize: 1,\r\n\t\tsteps: 1000\r\n\t},\r\n\tsecond: {\r\n\t\tcommon: true,\r\n\t\tsize: 1000,\r\n\t\tsteps: 60\r\n\t},\r\n\tminute: {\r\n\t\tcommon: true,\r\n\t\tsize: 60000,\r\n\t\tsteps: 60\r\n\t},\r\n\thour: {\r\n\t\tcommon: true,\r\n\t\tsize: 3600000,\r\n\t\tsteps: 24\r\n\t},\r\n\tday: {\r\n\t\tcommon: true,\r\n\t\tsize: 86400000,\r\n\t\tsteps: 30\r\n\t},\r\n\tweek: {\r\n\t\tcommon: false,\r\n\t\tsize: 604800000,\r\n\t\tsteps: 4\r\n\t},\r\n\tmonth: {\r\n\t\tcommon: true,\r\n\t\tsize: 2.628e9,\r\n\t\tsteps: 12\r\n\t},\r\n\tquarter: {\r\n\t\tcommon: false,\r\n\t\tsize: 7.884e9,\r\n\t\tsteps: 4\r\n\t},\r\n\tyear: {\r\n\t\tcommon: true,\r\n\t\tsize: 3.154e10\r\n\t}\r\n};\r\n\r\nvar UNITS = Object.keys(INTERVALS);\r\n\r\nfunction sorter(a, b) {\r\n\treturn a - b;\r\n}\r\n\r\nfunction arrayUnique(items) {\r\n\tvar hash = {};\r\n\tvar out = [];\r\n\tvar i, ilen, item;\r\n\r\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\r\n\t\titem = items[i];\r\n\t\tif (!hash[item]) {\r\n\t\t\thash[item] = true;\r\n\t\t\tout.push(item);\r\n\t\t}\r\n\t}\r\n\r\n\treturn out;\r\n}\r\n\r\nfunction getMin(options) {\r\n\treturn helpers$1.valueOrDefault(options.time.min, options.ticks.min);\r\n}\r\n\r\nfunction getMax(options) {\r\n\treturn helpers$1.valueOrDefault(options.time.max, options.ticks.max);\r\n}\r\n\r\n/**\r\n * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\r\n * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\r\n * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\r\n * extremity (left + width or top + height). Note that it would be more optimized to directly\r\n * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\r\n * to create the lookup table. The table ALWAYS contains at least two items: min and max.\r\n *\r\n * @param {number[]} timestamps - timestamps sorted from lowest to highest.\r\n * @param {string} distribution - If 'linear', timestamps will be spread linearly along the min\r\n * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}.\r\n * If 'series', timestamps will be positioned at the same distance from each other. In this\r\n * case, only timestamps that break the time linearity are registered, meaning that in the\r\n * best case, all timestamps are linear, the table contains only min and max.\r\n */\r\nfunction buildLookupTable(timestamps, min, max, distribution) {\r\n\tif (distribution === 'linear' || !timestamps.length) {\r\n\t\treturn [\r\n\t\t\t{time: min, pos: 0},\r\n\t\t\t{time: max, pos: 1}\r\n\t\t];\r\n\t}\r\n\r\n\tvar table = [];\r\n\tvar items = [min];\r\n\tvar i, ilen, prev, curr, next;\r\n\r\n\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\r\n\t\tcurr = timestamps[i];\r\n\t\tif (curr > min && curr < max) {\r\n\t\t\titems.push(curr);\r\n\t\t}\r\n\t}\r\n\r\n\titems.push(max);\r\n\r\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\r\n\t\tnext = items[i + 1];\r\n\t\tprev = items[i - 1];\r\n\t\tcurr = items[i];\r\n\r\n\t\t// only add points that breaks the scale linearity\r\n\t\tif (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) {\r\n\t\t\ttable.push({time: curr, pos: i / (ilen - 1)});\r\n\t\t}\r\n\t}\r\n\r\n\treturn table;\r\n}\r\n\r\n// @see adapted from https://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/\r\nfunction lookup(table, key, value) {\r\n\tvar lo = 0;\r\n\tvar hi = table.length - 1;\r\n\tvar mid, i0, i1;\r\n\r\n\twhile (lo >= 0 && lo <= hi) {\r\n\t\tmid = (lo + hi) >> 1;\r\n\t\ti0 = table[mid - 1] || null;\r\n\t\ti1 = table[mid];\r\n\r\n\t\tif (!i0) {\r\n\t\t\t// given value is outside table (before first item)\r\n\t\t\treturn {lo: null, hi: i1};\r\n\t\t} else if (i1[key] < value) {\r\n\t\t\tlo = mid + 1;\r\n\t\t} else if (i0[key] > value) {\r\n\t\t\thi = mid - 1;\r\n\t\t} else {\r\n\t\t\treturn {lo: i0, hi: i1};\r\n\t\t}\r\n\t}\r\n\r\n\t// given value is outside table (after last item)\r\n\treturn {lo: i1, hi: null};\r\n}\r\n\r\n/**\r\n * Linearly interpolates the given source `value` using the table items `skey` values and\r\n * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos')\r\n * returns the position for a timestamp equal to 42. If value is out of bounds, values at\r\n * index [0, 1] or [n - 1, n] are used for the interpolation.\r\n */\r\nfunction interpolate$1(table, skey, sval, tkey) {\r\n\tvar range = lookup(table, skey, sval);\r\n\r\n\t// Note: the lookup table ALWAYS contains at least 2 items (min and max)\r\n\tvar prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo;\r\n\tvar next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi;\r\n\r\n\tvar span = next[skey] - prev[skey];\r\n\tvar ratio = span ? (sval - prev[skey]) / span : 0;\r\n\tvar offset = (next[tkey] - prev[tkey]) * ratio;\r\n\r\n\treturn prev[tkey] + offset;\r\n}\r\n\r\nfunction toTimestamp(scale, input) {\r\n\tvar adapter = scale._adapter;\r\n\tvar options = scale.options.time;\r\n\tvar parser = options.parser;\r\n\tvar format = parser || options.format;\r\n\tvar value = input;\r\n\r\n\tif (typeof parser === 'function') {\r\n\t\tvalue = parser(value);\r\n\t}\r\n\r\n\t// Only parse if its not a timestamp already\r\n\tif (!helpers$1.isFinite(value)) {\r\n\t\tvalue = typeof format === 'string'\r\n\t\t\t? adapter.parse(value, format)\r\n\t\t\t: adapter.parse(value);\r\n\t}\r\n\r\n\tif (value !== null) {\r\n\t\treturn +value;\r\n\t}\r\n\r\n\t// Labels are in an incompatible format and no `parser` has been provided.\r\n\t// The user might still use the deprecated `format` option for parsing.\r\n\tif (!parser && typeof format === 'function') {\r\n\t\tvalue = format(input);\r\n\r\n\t\t// `format` could return something else than a timestamp, if so, parse it\r\n\t\tif (!helpers$1.isFinite(value)) {\r\n\t\t\tvalue = adapter.parse(value);\r\n\t\t}\r\n\t}\r\n\r\n\treturn value;\r\n}\r\n\r\nfunction parse(scale, input) {\r\n\tif (helpers$1.isNullOrUndef(input)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tvar options = scale.options.time;\r\n\tvar value = toTimestamp(scale, scale.getRightValue(input));\r\n\tif (value === null) {\r\n\t\treturn value;\r\n\t}\r\n\r\n\tif (options.round) {\r\n\t\tvalue = +scale._adapter.startOf(value, options.round);\r\n\t}\r\n\r\n\treturn value;\r\n}\r\n\r\n/**\r\n * Figures out what unit results in an appropriate number of auto-generated ticks\r\n */\r\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\r\n\tvar ilen = UNITS.length;\r\n\tvar i, interval, factor;\r\n\r\n\tfor (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\r\n\t\tinterval = INTERVALS[UNITS[i]];\r\n\t\tfactor = interval.steps ? interval.steps : MAX_INTEGER;\r\n\r\n\t\tif (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\r\n\t\t\treturn UNITS[i];\r\n\t\t}\r\n\t}\r\n\r\n\treturn UNITS[ilen - 1];\r\n}\r\n\r\n/**\r\n * Figures out what unit to format a set of ticks with\r\n */\r\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\r\n\tvar i, unit;\r\n\r\n\tfor (i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\r\n\t\tunit = UNITS[i];\r\n\t\tif (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\r\n\t\t\treturn unit;\r\n\t\t}\r\n\t}\r\n\r\n\treturn UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\r\n}\r\n\r\nfunction determineMajorUnit(unit) {\r\n\tfor (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\r\n\t\tif (INTERVALS[UNITS[i]].common) {\r\n\t\t\treturn UNITS[i];\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Generates a maximum of `capacity` timestamps between min and max, rounded to the\r\n * `minor` unit using the given scale time `options`.\r\n * Important: this method can return ticks outside the min and max range, it's the\r\n * responsibility of the calling code to clamp values if needed.\r\n */\r\nfunction generate(scale, min, max, capacity) {\r\n\tvar adapter = scale._adapter;\r\n\tvar options = scale.options;\r\n\tvar timeOpts = options.time;\r\n\tvar minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity);\r\n\tvar stepSize = resolve$5([timeOpts.stepSize, timeOpts.unitStepSize, 1]);\r\n\tvar weekday = minor === 'week' ? timeOpts.isoWeekday : false;\r\n\tvar first = min;\r\n\tvar ticks = [];\r\n\tvar time;\r\n\r\n\t// For 'week' unit, handle the first day of week option\r\n\tif (weekday) {\r\n\t\tfirst = +adapter.startOf(first, 'isoWeek', weekday);\r\n\t}\r\n\r\n\t// Align first ticks on unit\r\n\tfirst = +adapter.startOf(first, weekday ? 'day' : minor);\r\n\r\n\t// Prevent browser from freezing in case user options request millions of milliseconds\r\n\tif (adapter.diff(max, min, minor) > 100000 * stepSize) {\r\n\t\tthrow min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor;\r\n\t}\r\n\r\n\tfor (time = first; time < max; time = +adapter.add(time, stepSize, minor)) {\r\n\t\tticks.push(time);\r\n\t}\r\n\r\n\tif (time === max || options.bounds === 'ticks') {\r\n\t\tticks.push(time);\r\n\t}\r\n\r\n\treturn ticks;\r\n}\r\n\r\n/**\r\n * Returns the start and end offsets from edges in the form of {start, end}\r\n * where each value is a relative width to the scale and ranges between 0 and 1.\r\n * They add extra margins on the both sides by scaling down the original scale.\r\n * Offsets are added when the `offset` option is true.\r\n */\r\nfunction computeOffsets(table, ticks, min, max, options) {\r\n\tvar start = 0;\r\n\tvar end = 0;\r\n\tvar first, last;\r\n\r\n\tif (options.offset && ticks.length) {\r\n\t\tfirst = interpolate$1(table, 'time', ticks[0], 'pos');\r\n\t\tif (ticks.length === 1) {\r\n\t\t\tstart = 1 - first;\r\n\t\t} else {\r\n\t\t\tstart = (interpolate$1(table, 'time', ticks[1], 'pos') - first) / 2;\r\n\t\t}\r\n\t\tlast = interpolate$1(table, 'time', ticks[ticks.length - 1], 'pos');\r\n\t\tif (ticks.length === 1) {\r\n\t\t\tend = last;\r\n\t\t} else {\r\n\t\t\tend = (last - interpolate$1(table, 'time', ticks[ticks.length - 2], 'pos')) / 2;\r\n\t\t}\r\n\t}\r\n\r\n\treturn {start: start, end: end, factor: 1 / (start + 1 + end)};\r\n}\r\n\r\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\r\n\tvar adapter = scale._adapter;\r\n\tvar first = +adapter.startOf(ticks[0].value, majorUnit);\r\n\tvar last = ticks[ticks.length - 1].value;\r\n\tvar major, index;\r\n\r\n\tfor (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\r\n\t\tindex = map[major];\r\n\t\tif (index >= 0) {\r\n\t\t\tticks[index].major = true;\r\n\t\t}\r\n\t}\r\n\treturn ticks;\r\n}\r\n\r\nfunction ticksFromTimestamps(scale, values, majorUnit) {\r\n\tvar ticks = [];\r\n\tvar map = {};\r\n\tvar ilen = values.length;\r\n\tvar i, value;\r\n\r\n\tfor (i = 0; i < ilen; ++i) {\r\n\t\tvalue = values[i];\r\n\t\tmap[value] = i;\r\n\r\n\t\tticks.push({\r\n\t\t\tvalue: value,\r\n\t\t\tmajor: false\r\n\t\t});\r\n\t}\r\n\r\n\t// We set the major ticks separately from the above loop because calling startOf for every tick\r\n\t// is expensive when there is a large number of ticks\r\n\treturn (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\r\n}\r\n\r\nvar defaultConfig$4 = {\r\n\tposition: 'bottom',\r\n\r\n\t/**\r\n\t * Data distribution along the scale:\r\n\t * - 'linear': data are spread according to their time (distances can vary),\r\n\t * - 'series': data are spread at the same distance from each other.\r\n\t * @see https://github.com/chartjs/Chart.js/pull/4507\r\n\t * @since 2.7.0\r\n\t */\r\n\tdistribution: 'linear',\r\n\r\n\t/**\r\n\t * Scale boundary strategy (bypassed by min/max time options)\r\n\t * - `data`: make sure data are fully visible, ticks outside are removed\r\n\t * - `ticks`: make sure ticks are fully visible, data outside are truncated\r\n\t * @see https://github.com/chartjs/Chart.js/pull/4556\r\n\t * @since 2.7.0\r\n\t */\r\n\tbounds: 'data',\r\n\r\n\tadapters: {},\r\n\ttime: {\r\n\t\tparser: false, // false == a pattern string from https://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment\r\n\t\tunit: false, // false == automatic or override with week, month, year, etc.\r\n\t\tround: false, // none, or override with week, month, year, etc.\r\n\t\tdisplayFormat: false, // DEPRECATED\r\n\t\tisoWeekday: false, // override week start day - see https://momentjs.com/docs/#/get-set/iso-weekday/\r\n\t\tminUnit: 'millisecond',\r\n\t\tdisplayFormats: {}\r\n\t},\r\n\tticks: {\r\n\t\tautoSkip: false,\r\n\r\n\t\t/**\r\n\t\t * Ticks generation input values:\r\n\t\t * - 'auto': generates \"optimal\" ticks based on scale size and time options.\r\n\t\t * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\r\n\t\t * - 'labels': generates ticks from user given `data.labels` values ONLY.\r\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\r\n\t\t * @since 2.7.0\r\n\t\t */\r\n\t\tsource: 'auto',\r\n\r\n\t\tmajor: {\r\n\t\t\tenabled: false\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar scale_time = core_scale.extend({\r\n\tinitialize: function() {\r\n\t\tthis.mergeTicksOptions();\r\n\t\tcore_scale.prototype.initialize.call(this);\r\n\t},\r\n\r\n\tupdate: function() {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options;\r\n\t\tvar time = options.time || (options.time = {});\r\n\t\tvar adapter = me._adapter = new core_adapters._date(options.adapters.date);\r\n\r\n\t\t// DEPRECATIONS: output a message only one time per update\r\n\t\tdeprecated$1('time scale', time.format, 'time.format', 'time.parser');\r\n\t\tdeprecated$1('time scale', time.min, 'time.min', 'ticks.min');\r\n\t\tdeprecated$1('time scale', time.max, 'time.max', 'ticks.max');\r\n\r\n\t\t// Backward compatibility: before introducing adapter, `displayFormats` was\r\n\t\t// supposed to contain *all* unit/string pairs but this can't be resolved\r\n\t\t// when loading the scale (adapters are loaded afterward), so let's populate\r\n\t\t// missing formats on update\r\n\t\thelpers$1.mergeIf(time.displayFormats, adapter.formats());\r\n\r\n\t\treturn core_scale.prototype.update.apply(me, arguments);\r\n\t},\r\n\r\n\t/**\r\n\t * Allows data to be referenced via 't' attribute\r\n\t */\r\n\tgetRightValue: function(rawValue) {\r\n\t\tif (rawValue && rawValue.t !== undefined) {\r\n\t\t\trawValue = rawValue.t;\r\n\t\t}\r\n\t\treturn core_scale.prototype.getRightValue.call(this, rawValue);\r\n\t},\r\n\r\n\tdetermineDataLimits: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar adapter = me._adapter;\r\n\t\tvar options = me.options;\r\n\t\tvar unit = options.time.unit || 'day';\r\n\t\tvar min = MAX_INTEGER;\r\n\t\tvar max = MIN_INTEGER;\r\n\t\tvar timestamps = [];\r\n\t\tvar datasets = [];\r\n\t\tvar labels = [];\r\n\t\tvar i, j, ilen, jlen, data, timestamp, labelsAdded;\r\n\t\tvar dataLabels = me._getLabels();\r\n\r\n\t\tfor (i = 0, ilen = dataLabels.length; i < ilen; ++i) {\r\n\t\t\tlabels.push(parse(me, dataLabels[i]));\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\tif (chart.isDatasetVisible(i)) {\r\n\t\t\t\tdata = chart.data.datasets[i].data;\r\n\r\n\t\t\t\t// Let's consider that all data have the same format.\r\n\t\t\t\tif (helpers$1.isObject(data[0])) {\r\n\t\t\t\t\tdatasets[i] = [];\r\n\r\n\t\t\t\t\tfor (j = 0, jlen = data.length; j < jlen; ++j) {\r\n\t\t\t\t\t\ttimestamp = parse(me, data[j]);\r\n\t\t\t\t\t\ttimestamps.push(timestamp);\r\n\t\t\t\t\t\tdatasets[i][j] = timestamp;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdatasets[i] = labels.slice(0);\r\n\t\t\t\t\tif (!labelsAdded) {\r\n\t\t\t\t\t\ttimestamps = timestamps.concat(labels);\r\n\t\t\t\t\t\tlabelsAdded = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tdatasets[i] = [];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (labels.length) {\r\n\t\t\tmin = Math.min(min, labels[0]);\r\n\t\t\tmax = Math.max(max, labels[labels.length - 1]);\r\n\t\t}\r\n\r\n\t\tif (timestamps.length) {\r\n\t\t\ttimestamps = ilen > 1 ? arrayUnique(timestamps).sort(sorter) : timestamps.sort(sorter);\r\n\t\t\tmin = Math.min(min, timestamps[0]);\r\n\t\t\tmax = Math.max(max, timestamps[timestamps.length - 1]);\r\n\t\t}\r\n\r\n\t\tmin = parse(me, getMin(options)) || min;\r\n\t\tmax = parse(me, getMax(options)) || max;\r\n\r\n\t\t// In case there is no valid min/max, set limits based on unit time option\r\n\t\tmin = min === MAX_INTEGER ? +adapter.startOf(Date.now(), unit) : min;\r\n\t\tmax = max === MIN_INTEGER ? +adapter.endOf(Date.now(), unit) + 1 : max;\r\n\r\n\t\t// Make sure that max is strictly higher than min (required by the lookup table)\r\n\t\tme.min = Math.min(min, max);\r\n\t\tme.max = Math.max(min + 1, max);\r\n\r\n\t\t// PRIVATE\r\n\t\tme._table = [];\r\n\t\tme._timestamps = {\r\n\t\t\tdata: timestamps,\r\n\t\t\tdatasets: datasets,\r\n\t\t\tlabels: labels\r\n\t\t};\r\n\t},\r\n\r\n\tbuildTicks: function() {\r\n\t\tvar me = this;\r\n\t\tvar min = me.min;\r\n\t\tvar max = me.max;\r\n\t\tvar options = me.options;\r\n\t\tvar tickOpts = options.ticks;\r\n\t\tvar timeOpts = options.time;\r\n\t\tvar timestamps = me._timestamps;\r\n\t\tvar ticks = [];\r\n\t\tvar capacity = me.getLabelCapacity(min);\r\n\t\tvar source = tickOpts.source;\r\n\t\tvar distribution = options.distribution;\r\n\t\tvar i, ilen, timestamp;\r\n\r\n\t\tif (source === 'data' || (source === 'auto' && distribution === 'series')) {\r\n\t\t\ttimestamps = timestamps.data;\r\n\t\t} else if (source === 'labels') {\r\n\t\t\ttimestamps = timestamps.labels;\r\n\t\t} else {\r\n\t\t\ttimestamps = generate(me, min, max, capacity);\r\n\t\t}\r\n\r\n\t\tif (options.bounds === 'ticks' && timestamps.length) {\r\n\t\t\tmin = timestamps[0];\r\n\t\t\tmax = timestamps[timestamps.length - 1];\r\n\t\t}\r\n\r\n\t\t// Enforce limits with user min/max options\r\n\t\tmin = parse(me, getMin(options)) || min;\r\n\t\tmax = parse(me, getMax(options)) || max;\r\n\r\n\t\t// Remove ticks outside the min/max range\r\n\t\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\r\n\t\t\ttimestamp = timestamps[i];\r\n\t\t\tif (timestamp >= min && timestamp <= max) {\r\n\t\t\t\tticks.push(timestamp);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.min = min;\r\n\t\tme.max = max;\r\n\r\n\t\t// PRIVATE\r\n\t\t// determineUnitForFormatting relies on the number of ticks so we don't use it when\r\n\t\t// autoSkip is enabled because we don't yet know what the final number of ticks will be\r\n\t\tme._unit = timeOpts.unit || (tickOpts.autoSkip\r\n\t\t\t? determineUnitForAutoTicks(timeOpts.minUnit, me.min, me.max, capacity)\r\n\t\t\t: determineUnitForFormatting(me, ticks.length, timeOpts.minUnit, me.min, me.max));\r\n\t\tme._majorUnit = !tickOpts.major.enabled || me._unit === 'year' ? undefined\r\n\t\t\t: determineMajorUnit(me._unit);\r\n\t\tme._table = buildLookupTable(me._timestamps.data, min, max, distribution);\r\n\t\tme._offsets = computeOffsets(me._table, ticks, min, max, options);\r\n\r\n\t\tif (tickOpts.reverse) {\r\n\t\t\tticks.reverse();\r\n\t\t}\r\n\r\n\t\treturn ticksFromTimestamps(me, ticks, me._majorUnit);\r\n\t},\r\n\r\n\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar adapter = me._adapter;\r\n\t\tvar data = me.chart.data;\r\n\t\tvar timeOpts = me.options.time;\r\n\t\tvar label = data.labels && index < data.labels.length ? data.labels[index] : '';\r\n\t\tvar value = data.datasets[datasetIndex].data[index];\r\n\r\n\t\tif (helpers$1.isObject(value)) {\r\n\t\t\tlabel = me.getRightValue(value);\r\n\t\t}\r\n\t\tif (timeOpts.tooltipFormat) {\r\n\t\t\treturn adapter.format(toTimestamp(me, label), timeOpts.tooltipFormat);\r\n\t\t}\r\n\t\tif (typeof label === 'string') {\r\n\t\t\treturn label;\r\n\t\t}\r\n\t\treturn adapter.format(toTimestamp(me, label), timeOpts.displayFormats.datetime);\r\n\t},\r\n\r\n\t/**\r\n\t * Function to format an individual tick mark\r\n\t * @private\r\n\t */\r\n\ttickFormatFunction: function(time, index, ticks, format) {\r\n\t\tvar me = this;\r\n\t\tvar adapter = me._adapter;\r\n\t\tvar options = me.options;\r\n\t\tvar formats = options.time.displayFormats;\r\n\t\tvar minorFormat = formats[me._unit];\r\n\t\tvar majorUnit = me._majorUnit;\r\n\t\tvar majorFormat = formats[majorUnit];\r\n\t\tvar tick = ticks[index];\r\n\t\tvar tickOpts = options.ticks;\r\n\t\tvar major = majorUnit && majorFormat && tick && tick.major;\r\n\t\tvar label = adapter.format(time, format ? format : major ? majorFormat : minorFormat);\r\n\t\tvar nestedTickOpts = major ? tickOpts.major : tickOpts.minor;\r\n\t\tvar formatter = resolve$5([\r\n\t\t\tnestedTickOpts.callback,\r\n\t\t\tnestedTickOpts.userCallback,\r\n\t\t\ttickOpts.callback,\r\n\t\t\ttickOpts.userCallback\r\n\t\t]);\r\n\r\n\t\treturn formatter ? formatter(label, index, ticks) : label;\r\n\t},\r\n\r\n\tconvertTicksToLabels: function(ticks) {\r\n\t\tvar labels = [];\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\r\n\t\t\tlabels.push(this.tickFormatFunction(ticks[i].value, i, ticks));\r\n\t\t}\r\n\r\n\t\treturn labels;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tgetPixelForOffset: function(time) {\r\n\t\tvar me = this;\r\n\t\tvar offsets = me._offsets;\r\n\t\tvar pos = interpolate$1(me._table, 'time', time, 'pos');\r\n\t\treturn me.getPixelForDecimal((offsets.start + pos) * offsets.factor);\r\n\t},\r\n\r\n\tgetPixelForValue: function(value, index, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar time = null;\r\n\r\n\t\tif (index !== undefined && datasetIndex !== undefined) {\r\n\t\t\ttime = me._timestamps.datasets[datasetIndex][index];\r\n\t\t}\r\n\r\n\t\tif (time === null) {\r\n\t\t\ttime = parse(me, value);\r\n\t\t}\r\n\r\n\t\tif (time !== null) {\r\n\t\t\treturn me.getPixelForOffset(time);\r\n\t\t}\r\n\t},\r\n\r\n\tgetPixelForTick: function(index) {\r\n\t\tvar ticks = this.getTicks();\r\n\t\treturn index >= 0 && index < ticks.length ?\r\n\t\t\tthis.getPixelForOffset(ticks[index].value) :\r\n\t\t\tnull;\r\n\t},\r\n\r\n\tgetValueForPixel: function(pixel) {\r\n\t\tvar me = this;\r\n\t\tvar offsets = me._offsets;\r\n\t\tvar pos = me.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\r\n\t\tvar time = interpolate$1(me._table, 'pos', pos, 'time');\r\n\r\n\t\t// DEPRECATION, we should return time directly\r\n\t\treturn me._adapter._create(time);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getLabelSize: function(label) {\r\n\t\tvar me = this;\r\n\t\tvar ticksOpts = me.options.ticks;\r\n\t\tvar tickLabelWidth = me.ctx.measureText(label).width;\r\n\t\tvar angle = helpers$1.toRadians(me.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\r\n\t\tvar cosRotation = Math.cos(angle);\r\n\t\tvar sinRotation = Math.sin(angle);\r\n\t\tvar tickFontSize = valueOrDefault$d(ticksOpts.fontSize, core_defaults.global.defaultFontSize);\r\n\r\n\t\treturn {\r\n\t\t\tw: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\r\n\t\t\th: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Crude approximation of what the label width might be\r\n\t * @private\r\n\t */\r\n\tgetLabelWidth: function(label) {\r\n\t\treturn this._getLabelSize(label).w;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tgetLabelCapacity: function(exampleTime) {\r\n\t\tvar me = this;\r\n\t\tvar timeOpts = me.options.time;\r\n\t\tvar displayFormats = timeOpts.displayFormats;\r\n\r\n\t\t// pick the longest format (milliseconds) for guestimation\r\n\t\tvar format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\r\n\t\tvar exampleLabel = me.tickFormatFunction(exampleTime, 0, ticksFromTimestamps(me, [exampleTime], me._majorUnit), format);\r\n\t\tvar size = me._getLabelSize(exampleLabel);\r\n\t\tvar capacity = Math.floor(me.isHorizontal() ? me.width / size.w : me.height / size.h);\r\n\r\n\t\tif (me.options.offset) {\r\n\t\t\tcapacity--;\r\n\t\t}\r\n\r\n\t\treturn capacity > 0 ? capacity : 1;\r\n\t}\r\n});\r\n\r\n// INTERNAL: static default options, registered in src/index.js\r\nvar _defaults$4 = defaultConfig$4;\nscale_time._defaults = _defaults$4;\n\nvar scales = {\r\n\tcategory: scale_category,\r\n\tlinear: scale_linear,\r\n\tlogarithmic: scale_logarithmic,\r\n\tradialLinear: scale_radialLinear,\r\n\ttime: scale_time\r\n};\n\nvar FORMATS = {\r\n\tdatetime: 'MMM D, YYYY, h:mm:ss a',\r\n\tmillisecond: 'h:mm:ss.SSS a',\r\n\tsecond: 'h:mm:ss a',\r\n\tminute: 'h:mm a',\r\n\thour: 'hA',\r\n\tday: 'MMM D',\r\n\tweek: 'll',\r\n\tmonth: 'MMM YYYY',\r\n\tquarter: '[Q]Q - YYYY',\r\n\tyear: 'YYYY'\r\n};\r\n\r\ncore_adapters._date.override(typeof moment === 'function' ? {\r\n\t_id: 'moment', // DEBUG ONLY\r\n\r\n\tformats: function() {\r\n\t\treturn FORMATS;\r\n\t},\r\n\r\n\tparse: function(value, format) {\r\n\t\tif (typeof value === 'string' && typeof format === 'string') {\r\n\t\t\tvalue = moment(value, format);\r\n\t\t} else if (!(value instanceof moment)) {\r\n\t\t\tvalue = moment(value);\r\n\t\t}\r\n\t\treturn value.isValid() ? value.valueOf() : null;\r\n\t},\r\n\r\n\tformat: function(time, format) {\r\n\t\treturn moment(time).format(format);\r\n\t},\r\n\r\n\tadd: function(time, amount, unit) {\r\n\t\treturn moment(time).add(amount, unit).valueOf();\r\n\t},\r\n\r\n\tdiff: function(max, min, unit) {\r\n\t\treturn moment(max).diff(moment(min), unit);\r\n\t},\r\n\r\n\tstartOf: function(time, unit, weekday) {\r\n\t\ttime = moment(time);\r\n\t\tif (unit === 'isoWeek') {\r\n\t\t\treturn time.isoWeekday(weekday).valueOf();\r\n\t\t}\r\n\t\treturn time.startOf(unit).valueOf();\r\n\t},\r\n\r\n\tendOf: function(time, unit) {\r\n\t\treturn moment(time).endOf(unit).valueOf();\r\n\t},\r\n\r\n\t// DEPRECATIONS\r\n\r\n\t/**\r\n\t * Provided for backward compatibility with scale.getValueForPixel().\r\n\t * @deprecated since version 2.8.0\r\n\t * @todo remove at version 3\r\n\t * @private\r\n\t */\r\n\t_create: function(time) {\r\n\t\treturn moment(time);\r\n\t},\r\n} : {});\n\ncore_defaults._set('global', {\r\n\tplugins: {\r\n\t\tfiller: {\r\n\t\t\tpropagate: true\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar mappers = {\r\n\tdataset: function(source) {\r\n\t\tvar index = source.fill;\r\n\t\tvar chart = source.chart;\r\n\t\tvar meta = chart.getDatasetMeta(index);\r\n\t\tvar visible = meta && chart.isDatasetVisible(index);\r\n\t\tvar points = (visible && meta.dataset._children) || [];\r\n\t\tvar length = points.length || 0;\r\n\r\n\t\treturn !length ? null : function(point, i) {\r\n\t\t\treturn (i < length && points[i]._view) || null;\r\n\t\t};\r\n\t},\r\n\r\n\tboundary: function(source) {\r\n\t\tvar boundary = source.boundary;\r\n\t\tvar x = boundary ? boundary.x : null;\r\n\t\tvar y = boundary ? boundary.y : null;\r\n\r\n\t\tif (helpers$1.isArray(boundary)) {\r\n\t\t\treturn function(point, i) {\r\n\t\t\t\treturn boundary[i];\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn function(point) {\r\n\t\t\treturn {\r\n\t\t\t\tx: x === null ? point.x : x,\r\n\t\t\t\ty: y === null ? point.y : y,\r\n\t\t\t};\r\n\t\t};\r\n\t}\r\n};\r\n\r\n// @todo if (fill[0] === '#')\r\nfunction decodeFill(el, index, count) {\r\n\tvar model = el._model || {};\r\n\tvar fill = model.fill;\r\n\tvar target;\r\n\r\n\tif (fill === undefined) {\r\n\t\tfill = !!model.backgroundColor;\r\n\t}\r\n\r\n\tif (fill === false || fill === null) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tif (fill === true) {\r\n\t\treturn 'origin';\r\n\t}\r\n\r\n\ttarget = parseFloat(fill, 10);\r\n\tif (isFinite(target) && Math.floor(target) === target) {\r\n\t\tif (fill[0] === '-' || fill[0] === '+') {\r\n\t\t\ttarget = index + target;\r\n\t\t}\r\n\r\n\t\tif (target === index || target < 0 || target >= count) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn target;\r\n\t}\r\n\r\n\tswitch (fill) {\r\n\t// compatibility\r\n\tcase 'bottom':\r\n\t\treturn 'start';\r\n\tcase 'top':\r\n\t\treturn 'end';\r\n\tcase 'zero':\r\n\t\treturn 'origin';\r\n\t// supported boundaries\r\n\tcase 'origin':\r\n\tcase 'start':\r\n\tcase 'end':\r\n\t\treturn fill;\r\n\t// invalid fill values\r\n\tdefault:\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nfunction computeLinearBoundary(source) {\r\n\tvar model = source.el._model || {};\r\n\tvar scale = source.el._scale || {};\r\n\tvar fill = source.fill;\r\n\tvar target = null;\r\n\tvar horizontal;\r\n\r\n\tif (isFinite(fill)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\t// Backward compatibility: until v3, we still need to support boundary values set on\r\n\t// the model (scaleTop, scaleBottom and scaleZero) because some external plugins and\r\n\t// controllers might still use it (e.g. the Smith chart).\r\n\r\n\tif (fill === 'start') {\r\n\t\ttarget = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom;\r\n\t} else if (fill === 'end') {\r\n\t\ttarget = model.scaleTop === undefined ? scale.top : model.scaleTop;\r\n\t} else if (model.scaleZero !== undefined) {\r\n\t\ttarget = model.scaleZero;\r\n\t} else if (scale.getBasePixel) {\r\n\t\ttarget = scale.getBasePixel();\r\n\t}\r\n\r\n\tif (target !== undefined && target !== null) {\r\n\t\tif (target.x !== undefined && target.y !== undefined) {\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\tif (helpers$1.isFinite(target)) {\r\n\t\t\thorizontal = scale.isHorizontal();\r\n\t\t\treturn {\r\n\t\t\t\tx: horizontal ? target : null,\r\n\t\t\t\ty: horizontal ? null : target\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\treturn null;\r\n}\r\n\r\nfunction computeCircularBoundary(source) {\r\n\tvar scale = source.el._scale;\r\n\tvar options = scale.options;\r\n\tvar length = scale.chart.data.labels.length;\r\n\tvar fill = source.fill;\r\n\tvar target = [];\r\n\tvar start, end, center, i, point;\r\n\r\n\tif (!length) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tstart = options.ticks.reverse ? scale.max : scale.min;\r\n\tend = options.ticks.reverse ? scale.min : scale.max;\r\n\tcenter = scale.getPointPositionForValue(0, start);\r\n\tfor (i = 0; i < length; ++i) {\r\n\t\tpoint = fill === 'start' || fill === 'end'\r\n\t\t\t? scale.getPointPositionForValue(i, fill === 'start' ? start : end)\r\n\t\t\t: scale.getBasePosition(i);\r\n\t\tif (options.gridLines.circular) {\r\n\t\t\tpoint.cx = center.x;\r\n\t\t\tpoint.cy = center.y;\r\n\t\t\tpoint.angle = scale.getIndexAngle(i) - Math.PI / 2;\r\n\t\t}\r\n\t\ttarget.push(point);\r\n\t}\r\n\treturn target;\r\n}\r\n\r\nfunction computeBoundary(source) {\r\n\tvar scale = source.el._scale || {};\r\n\r\n\tif (scale.getPointPositionForValue) {\r\n\t\treturn computeCircularBoundary(source);\r\n\t}\r\n\treturn computeLinearBoundary(source);\r\n}\r\n\r\nfunction resolveTarget(sources, index, propagate) {\r\n\tvar source = sources[index];\r\n\tvar fill = source.fill;\r\n\tvar visited = [index];\r\n\tvar target;\r\n\r\n\tif (!propagate) {\r\n\t\treturn fill;\r\n\t}\r\n\r\n\twhile (fill !== false && visited.indexOf(fill) === -1) {\r\n\t\tif (!isFinite(fill)) {\r\n\t\t\treturn fill;\r\n\t\t}\r\n\r\n\t\ttarget = sources[fill];\r\n\t\tif (!target) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (target.visible) {\r\n\t\t\treturn fill;\r\n\t\t}\r\n\r\n\t\tvisited.push(fill);\r\n\t\tfill = target.fill;\r\n\t}\r\n\r\n\treturn false;\r\n}\r\n\r\nfunction createMapper(source) {\r\n\tvar fill = source.fill;\r\n\tvar type = 'dataset';\r\n\r\n\tif (fill === false) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tif (!isFinite(fill)) {\r\n\t\ttype = 'boundary';\r\n\t}\r\n\r\n\treturn mappers[type](source);\r\n}\r\n\r\nfunction isDrawable(point) {\r\n\treturn point && !point.skip;\r\n}\r\n\r\nfunction drawArea(ctx, curve0, curve1, len0, len1) {\r\n\tvar i, cx, cy, r;\r\n\r\n\tif (!len0 || !len1) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// building first area curve (normal)\r\n\tctx.moveTo(curve0[0].x, curve0[0].y);\r\n\tfor (i = 1; i < len0; ++i) {\r\n\t\thelpers$1.canvas.lineTo(ctx, curve0[i - 1], curve0[i]);\r\n\t}\r\n\r\n\tif (curve1[0].angle !== undefined) {\r\n\t\tcx = curve1[0].cx;\r\n\t\tcy = curve1[0].cy;\r\n\t\tr = Math.sqrt(Math.pow(curve1[0].x - cx, 2) + Math.pow(curve1[0].y - cy, 2));\r\n\t\tfor (i = len1 - 1; i > 0; --i) {\r\n\t\t\tctx.arc(cx, cy, r, curve1[i].angle, curve1[i - 1].angle, true);\r\n\t\t}\r\n\t\treturn;\r\n\t}\r\n\r\n\t// joining the two area curves\r\n\tctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y);\r\n\r\n\t// building opposite area curve (reverse)\r\n\tfor (i = len1 - 1; i > 0; --i) {\r\n\t\thelpers$1.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true);\r\n\t}\r\n}\r\n\r\nfunction doFill(ctx, points, mapper, view, color, loop) {\r\n\tvar count = points.length;\r\n\tvar span = view.spanGaps;\r\n\tvar curve0 = [];\r\n\tvar curve1 = [];\r\n\tvar len0 = 0;\r\n\tvar len1 = 0;\r\n\tvar i, ilen, index, p0, p1, d0, d1, loopOffset;\r\n\r\n\tctx.beginPath();\r\n\r\n\tfor (i = 0, ilen = count; i < ilen; ++i) {\r\n\t\tindex = i % count;\r\n\t\tp0 = points[index]._view;\r\n\t\tp1 = mapper(p0, index, view);\r\n\t\td0 = isDrawable(p0);\r\n\t\td1 = isDrawable(p1);\r\n\r\n\t\tif (loop && loopOffset === undefined && d0) {\r\n\t\t\tloopOffset = i + 1;\r\n\t\t\tilen = count + loopOffset;\r\n\t\t}\r\n\r\n\t\tif (d0 && d1) {\r\n\t\t\tlen0 = curve0.push(p0);\r\n\t\t\tlen1 = curve1.push(p1);\r\n\t\t} else if (len0 && len1) {\r\n\t\t\tif (!span) {\r\n\t\t\t\tdrawArea(ctx, curve0, curve1, len0, len1);\r\n\t\t\t\tlen0 = len1 = 0;\r\n\t\t\t\tcurve0 = [];\r\n\t\t\t\tcurve1 = [];\r\n\t\t\t} else {\r\n\t\t\t\tif (d0) {\r\n\t\t\t\t\tcurve0.push(p0);\r\n\t\t\t\t}\r\n\t\t\t\tif (d1) {\r\n\t\t\t\t\tcurve1.push(p1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tdrawArea(ctx, curve0, curve1, len0, len1);\r\n\r\n\tctx.closePath();\r\n\tctx.fillStyle = color;\r\n\tctx.fill();\r\n}\r\n\r\nvar plugin_filler = {\r\n\tid: 'filler',\r\n\r\n\tafterDatasetsUpdate: function(chart, options) {\r\n\t\tvar count = (chart.data.datasets || []).length;\r\n\t\tvar propagate = options.propagate;\r\n\t\tvar sources = [];\r\n\t\tvar meta, i, el, source;\r\n\r\n\t\tfor (i = 0; i < count; ++i) {\r\n\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\tel = meta.dataset;\r\n\t\t\tsource = null;\r\n\r\n\t\t\tif (el && el._model && el instanceof elements.Line) {\r\n\t\t\t\tsource = {\r\n\t\t\t\t\tvisible: chart.isDatasetVisible(i),\r\n\t\t\t\t\tfill: decodeFill(el, i, count),\r\n\t\t\t\t\tchart: chart,\r\n\t\t\t\t\tel: el\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tmeta.$filler = source;\r\n\t\t\tsources.push(source);\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < count; ++i) {\r\n\t\t\tsource = sources[i];\r\n\t\t\tif (!source) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tsource.fill = resolveTarget(sources, i, propagate);\r\n\t\t\tsource.boundary = computeBoundary(source);\r\n\t\t\tsource.mapper = createMapper(source);\r\n\t\t}\r\n\t},\r\n\r\n\tbeforeDatasetsDraw: function(chart) {\r\n\t\tvar metasets = chart._getSortedVisibleDatasetMetas();\r\n\t\tvar ctx = chart.ctx;\r\n\t\tvar meta, i, el, view, points, mapper, color;\r\n\r\n\t\tfor (i = metasets.length - 1; i >= 0; --i) {\r\n\t\t\tmeta = metasets[i].$filler;\r\n\r\n\t\t\tif (!meta || !meta.visible) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tel = meta.el;\r\n\t\t\tview = el._view;\r\n\t\t\tpoints = el._children || [];\r\n\t\t\tmapper = meta.mapper;\r\n\t\t\tcolor = view.backgroundColor || core_defaults.global.defaultColor;\r\n\r\n\t\t\tif (mapper && color && points.length) {\r\n\t\t\t\thelpers$1.canvas.clipArea(ctx, chart.chartArea);\r\n\t\t\t\tdoFill(ctx, points, mapper, view, color, el._loop);\r\n\t\t\t\thelpers$1.canvas.unclipArea(ctx);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\n\nvar getRtlHelper$1 = helpers$1.rtl.getRtlAdapter;\r\nvar noop$1 = helpers$1.noop;\r\nvar valueOrDefault$e = helpers$1.valueOrDefault;\r\n\r\ncore_defaults._set('global', {\r\n\tlegend: {\r\n\t\tdisplay: true,\r\n\t\tposition: 'top',\r\n\t\talign: 'center',\r\n\t\tfullWidth: true,\r\n\t\treverse: false,\r\n\t\tweight: 1000,\r\n\r\n\t\t// a callback that will handle\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.datasetIndex;\r\n\t\t\tvar ci = this.chart;\r\n\t\t\tvar meta = ci.getDatasetMeta(index);\r\n\r\n\t\t\t// See controller.isDatasetVisible comment\r\n\t\t\tmeta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;\r\n\r\n\t\t\t// We hid a dataset ... rerender the chart\r\n\t\t\tci.update();\r\n\t\t},\r\n\r\n\t\tonHover: null,\r\n\t\tonLeave: null,\r\n\r\n\t\tlabels: {\r\n\t\t\tboxWidth: 40,\r\n\t\t\tpadding: 10,\r\n\t\t\t// Generates labels shown in the legend\r\n\t\t\t// Valid properties to return:\r\n\t\t\t// text : text to display\r\n\t\t\t// fillStyle : fill of coloured box\r\n\t\t\t// strokeStyle: stroke of coloured box\r\n\t\t\t// hidden : if this legend item refers to a hidden item\r\n\t\t\t// lineCap : cap style for line\r\n\t\t\t// lineDash\r\n\t\t\t// lineDashOffset :\r\n\t\t\t// lineJoin :\r\n\t\t\t// lineWidth :\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar datasets = chart.data.datasets;\r\n\t\t\t\tvar options = chart.options.legend || {};\r\n\t\t\t\tvar usePointStyle = options.labels && options.labels.usePointStyle;\r\n\r\n\t\t\t\treturn chart._getSortedDatasetMetas().map(function(meta) {\r\n\t\t\t\t\tvar style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\r\n\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttext: datasets[meta.index].label,\r\n\t\t\t\t\t\tfillStyle: style.backgroundColor,\r\n\t\t\t\t\t\thidden: !chart.isDatasetVisible(meta.index),\r\n\t\t\t\t\t\tlineCap: style.borderCapStyle,\r\n\t\t\t\t\t\tlineDash: style.borderDash,\r\n\t\t\t\t\t\tlineDashOffset: style.borderDashOffset,\r\n\t\t\t\t\t\tlineJoin: style.borderJoinStyle,\r\n\t\t\t\t\t\tlineWidth: style.borderWidth,\r\n\t\t\t\t\t\tstrokeStyle: style.borderColor,\r\n\t\t\t\t\t\tpointStyle: style.pointStyle,\r\n\t\t\t\t\t\trotation: style.rotation,\r\n\r\n\t\t\t\t\t\t// Below is extra data used for toggling the datasets\r\n\t\t\t\t\t\tdatasetIndex: meta.index\r\n\t\t\t\t\t};\r\n\t\t\t\t}, this);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tlegendCallback: function(chart) {\r\n\t\tvar list = document.createElement('ul');\r\n\t\tvar datasets = chart.data.datasets;\r\n\t\tvar i, ilen, listItem, listItemSpan;\r\n\r\n\t\tlist.setAttribute('class', chart.id + '-legend');\r\n\r\n\t\tfor (i = 0, ilen = datasets.length; i < ilen; i++) {\r\n\t\t\tlistItem = list.appendChild(document.createElement('li'));\r\n\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\r\n\t\t\tlistItemSpan.style.backgroundColor = datasets[i].backgroundColor;\r\n\t\t\tif (datasets[i].label) {\r\n\t\t\t\tlistItem.appendChild(document.createTextNode(datasets[i].label));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn list.outerHTML;\r\n\t}\r\n});\r\n\r\n/**\r\n * Helper function to get the box width based on the usePointStyle option\r\n * @param {object} labelopts - the label options on the legend\r\n * @param {number} fontSize - the label font size\r\n * @return {number} width of the color box area\r\n */\r\nfunction getBoxWidth(labelOpts, fontSize) {\r\n\treturn labelOpts.usePointStyle && labelOpts.boxWidth > fontSize ?\r\n\t\tfontSize :\r\n\t\tlabelOpts.boxWidth;\r\n}\r\n\r\n/**\r\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\r\n */\r\nvar Legend = core_element.extend({\r\n\r\n\tinitialize: function(config) {\r\n\t\tvar me = this;\r\n\t\thelpers$1.extend(me, config);\r\n\r\n\t\t// Contains hit boxes for each dataset (in dataset order)\r\n\t\tme.legendHitBoxes = [];\r\n\r\n\t\t/**\r\n \t\t * @private\r\n \t\t */\r\n\t\tme._hoveredItem = null;\r\n\r\n\t\t// Are we in doughnut mode which has a different data type\r\n\t\tme.doughnutMode = false;\r\n\t},\r\n\r\n\t// These methods are ordered by lifecycle. Utilities then follow.\r\n\t// Any function defined here is inherited by all legend types.\r\n\t// Any function can be extended by the legend type\r\n\r\n\tbeforeUpdate: noop$1,\r\n\tupdate: function(maxWidth, maxHeight, margins) {\r\n\t\tvar me = this;\r\n\r\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\r\n\t\tme.beforeUpdate();\r\n\r\n\t\t// Absorb the master measurements\r\n\t\tme.maxWidth = maxWidth;\r\n\t\tme.maxHeight = maxHeight;\r\n\t\tme.margins = margins;\r\n\r\n\t\t// Dimensions\r\n\t\tme.beforeSetDimensions();\r\n\t\tme.setDimensions();\r\n\t\tme.afterSetDimensions();\r\n\t\t// Labels\r\n\t\tme.beforeBuildLabels();\r\n\t\tme.buildLabels();\r\n\t\tme.afterBuildLabels();\r\n\r\n\t\t// Fit\r\n\t\tme.beforeFit();\r\n\t\tme.fit();\r\n\t\tme.afterFit();\r\n\t\t//\r\n\t\tme.afterUpdate();\r\n\r\n\t\treturn me.minSize;\r\n\t},\r\n\tafterUpdate: noop$1,\r\n\r\n\t//\r\n\r\n\tbeforeSetDimensions: noop$1,\r\n\tsetDimensions: function() {\r\n\t\tvar me = this;\r\n\t\t// Set the unconstrained dimension before label rotation\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.width = me.maxWidth;\r\n\t\t\tme.left = 0;\r\n\t\t\tme.right = me.width;\r\n\t\t} else {\r\n\t\t\tme.height = me.maxHeight;\r\n\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.top = 0;\r\n\t\t\tme.bottom = me.height;\r\n\t\t}\r\n\r\n\t\t// Reset padding\r\n\t\tme.paddingLeft = 0;\r\n\t\tme.paddingTop = 0;\r\n\t\tme.paddingRight = 0;\r\n\t\tme.paddingBottom = 0;\r\n\r\n\t\t// Reset minSize\r\n\t\tme.minSize = {\r\n\t\t\twidth: 0,\r\n\t\t\theight: 0\r\n\t\t};\r\n\t},\r\n\tafterSetDimensions: noop$1,\r\n\r\n\t//\r\n\r\n\tbeforeBuildLabels: noop$1,\r\n\tbuildLabels: function() {\r\n\t\tvar me = this;\r\n\t\tvar labelOpts = me.options.labels || {};\r\n\t\tvar legendItems = helpers$1.callback(labelOpts.generateLabels, [me.chart], me) || [];\r\n\r\n\t\tif (labelOpts.filter) {\r\n\t\t\tlegendItems = legendItems.filter(function(item) {\r\n\t\t\t\treturn labelOpts.filter(item, me.chart.data);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (me.options.reverse) {\r\n\t\t\tlegendItems.reverse();\r\n\t\t}\r\n\r\n\t\tme.legendItems = legendItems;\r\n\t},\r\n\tafterBuildLabels: noop$1,\r\n\r\n\t//\r\n\r\n\tbeforeFit: noop$1,\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar labelOpts = opts.labels;\r\n\t\tvar display = opts.display;\r\n\r\n\t\tvar ctx = me.ctx;\r\n\r\n\t\tvar labelFont = helpers$1.options._parseFont(labelOpts);\r\n\t\tvar fontSize = labelFont.size;\r\n\r\n\t\t// Reset hit boxes\r\n\t\tvar hitboxes = me.legendHitBoxes = [];\r\n\r\n\t\tvar minSize = me.minSize;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\r\n\t\tif (isHorizontal) {\r\n\t\t\tminSize.width = me.maxWidth; // fill all the width\r\n\t\t\tminSize.height = display ? 10 : 0;\r\n\t\t} else {\r\n\t\t\tminSize.width = display ? 10 : 0;\r\n\t\t\tminSize.height = me.maxHeight; // fill all the height\r\n\t\t}\r\n\r\n\t\t// Increase sizes here\r\n\t\tif (!display) {\r\n\t\t\tme.width = minSize.width = me.height = minSize.height = 0;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tctx.font = labelFont.string;\r\n\r\n\t\tif (isHorizontal) {\r\n\t\t\t// Labels\r\n\r\n\t\t\t// Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\r\n\t\t\tvar lineWidths = me.lineWidths = [0];\r\n\t\t\tvar totalHeight = 0;\r\n\r\n\t\t\tctx.textAlign = 'left';\r\n\t\t\tctx.textBaseline = 'middle';\r\n\r\n\t\t\thelpers$1.each(me.legendItems, function(legendItem, i) {\r\n\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\r\n\t\t\t\tvar width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\r\n\r\n\t\t\t\tif (i === 0 || lineWidths[lineWidths.length - 1] + width + 2 * labelOpts.padding > minSize.width) {\r\n\t\t\t\t\ttotalHeight += fontSize + labelOpts.padding;\r\n\t\t\t\t\tlineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\r\n\t\t\t\thitboxes[i] = {\r\n\t\t\t\t\tleft: 0,\r\n\t\t\t\t\ttop: 0,\r\n\t\t\t\t\twidth: width,\r\n\t\t\t\t\theight: fontSize\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlineWidths[lineWidths.length - 1] += width + labelOpts.padding;\r\n\t\t\t});\r\n\r\n\t\t\tminSize.height += totalHeight;\r\n\r\n\t\t} else {\r\n\t\t\tvar vPadding = labelOpts.padding;\r\n\t\t\tvar columnWidths = me.columnWidths = [];\r\n\t\t\tvar columnHeights = me.columnHeights = [];\r\n\t\t\tvar totalWidth = labelOpts.padding;\r\n\t\t\tvar currentColWidth = 0;\r\n\t\t\tvar currentColHeight = 0;\r\n\r\n\t\t\thelpers$1.each(me.legendItems, function(legendItem, i) {\r\n\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\r\n\t\t\t\tvar itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\r\n\r\n\t\t\t\t// If too tall, go to new column\r\n\t\t\t\tif (i > 0 && currentColHeight + fontSize + 2 * vPadding > minSize.height) {\r\n\t\t\t\t\ttotalWidth += currentColWidth + labelOpts.padding;\r\n\t\t\t\t\tcolumnWidths.push(currentColWidth); // previous column width\r\n\t\t\t\t\tcolumnHeights.push(currentColHeight);\r\n\t\t\t\t\tcurrentColWidth = 0;\r\n\t\t\t\t\tcurrentColHeight = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Get max width\r\n\t\t\t\tcurrentColWidth = Math.max(currentColWidth, itemWidth);\r\n\t\t\t\tcurrentColHeight += fontSize + vPadding;\r\n\r\n\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\r\n\t\t\t\thitboxes[i] = {\r\n\t\t\t\t\tleft: 0,\r\n\t\t\t\t\ttop: 0,\r\n\t\t\t\t\twidth: itemWidth,\r\n\t\t\t\t\theight: fontSize\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\ttotalWidth += currentColWidth;\r\n\t\t\tcolumnWidths.push(currentColWidth);\r\n\t\t\tcolumnHeights.push(currentColHeight);\r\n\t\t\tminSize.width += totalWidth;\r\n\t\t}\r\n\r\n\t\tme.width = minSize.width;\r\n\t\tme.height = minSize.height;\r\n\t},\r\n\tafterFit: noop$1,\r\n\r\n\t// Shared Methods\r\n\tisHorizontal: function() {\r\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\r\n\t},\r\n\r\n\t// Actually draw the legend on the canvas\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar labelOpts = opts.labels;\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar defaultColor = globalDefaults.defaultColor;\r\n\t\tvar lineDefault = globalDefaults.elements.line;\r\n\t\tvar legendHeight = me.height;\r\n\t\tvar columnHeights = me.columnHeights;\r\n\t\tvar legendWidth = me.width;\r\n\t\tvar lineWidths = me.lineWidths;\r\n\r\n\t\tif (!opts.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar rtlHelper = getRtlHelper$1(opts.rtl, me.left, me.minSize.width);\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar fontColor = valueOrDefault$e(labelOpts.fontColor, globalDefaults.defaultFontColor);\r\n\t\tvar labelFont = helpers$1.options._parseFont(labelOpts);\r\n\t\tvar fontSize = labelFont.size;\r\n\t\tvar cursor;\r\n\r\n\t\t// Canvas setup\r\n\t\tctx.textAlign = rtlHelper.textAlign('left');\r\n\t\tctx.textBaseline = 'middle';\r\n\t\tctx.lineWidth = 0.5;\r\n\t\tctx.strokeStyle = fontColor; // for strikethrough effect\r\n\t\tctx.fillStyle = fontColor; // render in correct colour\r\n\t\tctx.font = labelFont.string;\r\n\r\n\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\r\n\t\tvar hitboxes = me.legendHitBoxes;\r\n\r\n\t\t// current position\r\n\t\tvar drawLegendBox = function(x, y, legendItem) {\r\n\t\t\tif (isNaN(boxWidth) || boxWidth <= 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Set the ctx for the box\r\n\t\t\tctx.save();\r\n\r\n\t\t\tvar lineWidth = valueOrDefault$e(legendItem.lineWidth, lineDefault.borderWidth);\r\n\t\t\tctx.fillStyle = valueOrDefault$e(legendItem.fillStyle, defaultColor);\r\n\t\t\tctx.lineCap = valueOrDefault$e(legendItem.lineCap, lineDefault.borderCapStyle);\r\n\t\t\tctx.lineDashOffset = valueOrDefault$e(legendItem.lineDashOffset, lineDefault.borderDashOffset);\r\n\t\t\tctx.lineJoin = valueOrDefault$e(legendItem.lineJoin, lineDefault.borderJoinStyle);\r\n\t\t\tctx.lineWidth = lineWidth;\r\n\t\t\tctx.strokeStyle = valueOrDefault$e(legendItem.strokeStyle, defaultColor);\r\n\r\n\t\t\tif (ctx.setLineDash) {\r\n\t\t\t\t// IE 9 and 10 do not support line dash\r\n\t\t\t\tctx.setLineDash(valueOrDefault$e(legendItem.lineDash, lineDefault.borderDash));\r\n\t\t\t}\r\n\r\n\t\t\tif (labelOpts && labelOpts.usePointStyle) {\r\n\t\t\t\t// Recalculate x and y for drawPoint() because its expecting\r\n\t\t\t\t// x and y to be center of figure (instead of top left)\r\n\t\t\t\tvar radius = boxWidth * Math.SQRT2 / 2;\r\n\t\t\t\tvar centerX = rtlHelper.xPlus(x, boxWidth / 2);\r\n\t\t\t\tvar centerY = y + fontSize / 2;\r\n\r\n\t\t\t\t// Draw pointStyle as legend symbol\r\n\t\t\t\thelpers$1.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY, legendItem.rotation);\r\n\t\t\t} else {\r\n\t\t\t\t// Draw box as legend symbol\r\n\t\t\t\tctx.fillRect(rtlHelper.leftForLtr(x, boxWidth), y, boxWidth, fontSize);\r\n\t\t\t\tif (lineWidth !== 0) {\r\n\t\t\t\t\tctx.strokeRect(rtlHelper.leftForLtr(x, boxWidth), y, boxWidth, fontSize);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tctx.restore();\r\n\t\t};\r\n\r\n\t\tvar fillText = function(x, y, legendItem, textWidth) {\r\n\t\t\tvar halfFontSize = fontSize / 2;\r\n\t\t\tvar xLeft = rtlHelper.xPlus(x, boxWidth + halfFontSize);\r\n\t\t\tvar yMiddle = y + halfFontSize;\r\n\r\n\t\t\tctx.fillText(legendItem.text, xLeft, yMiddle);\r\n\r\n\t\t\tif (legendItem.hidden) {\r\n\t\t\t\t// Strikethrough the text if hidden\r\n\t\t\t\tctx.beginPath();\r\n\t\t\t\tctx.lineWidth = 2;\r\n\t\t\t\tctx.moveTo(xLeft, yMiddle);\r\n\t\t\t\tctx.lineTo(rtlHelper.xPlus(xLeft, textWidth), yMiddle);\r\n\t\t\t\tctx.stroke();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar alignmentOffset = function(dimension, blockSize) {\r\n\t\t\tswitch (opts.align) {\r\n\t\t\tcase 'start':\r\n\t\t\t\treturn labelOpts.padding;\r\n\t\t\tcase 'end':\r\n\t\t\t\treturn dimension - blockSize;\r\n\t\t\tdefault: // center\r\n\t\t\t\treturn (dimension - blockSize + labelOpts.padding) / 2;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Horizontal\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\tif (isHorizontal) {\r\n\t\t\tcursor = {\r\n\t\t\t\tx: me.left + alignmentOffset(legendWidth, lineWidths[0]),\r\n\t\t\t\ty: me.top + labelOpts.padding,\r\n\t\t\t\tline: 0\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tcursor = {\r\n\t\t\t\tx: me.left + labelOpts.padding,\r\n\t\t\t\ty: me.top + alignmentOffset(legendHeight, columnHeights[0]),\r\n\t\t\t\tline: 0\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\thelpers$1.rtl.overrideTextDirection(me.ctx, opts.textDirection);\r\n\r\n\t\tvar itemHeight = fontSize + labelOpts.padding;\r\n\t\thelpers$1.each(me.legendItems, function(legendItem, i) {\r\n\t\t\tvar textWidth = ctx.measureText(legendItem.text).width;\r\n\t\t\tvar width = boxWidth + (fontSize / 2) + textWidth;\r\n\t\t\tvar x = cursor.x;\r\n\t\t\tvar y = cursor.y;\r\n\r\n\t\t\trtlHelper.setWidth(me.minSize.width);\r\n\r\n\t\t\t// Use (me.left + me.minSize.width) and (me.top + me.minSize.height)\r\n\t\t\t// instead of me.right and me.bottom because me.width and me.height\r\n\t\t\t// may have been changed since me.minSize was calculated\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tif (i > 0 && x + width + labelOpts.padding > me.left + me.minSize.width) {\r\n\t\t\t\t\ty = cursor.y += itemHeight;\r\n\t\t\t\t\tcursor.line++;\r\n\t\t\t\t\tx = cursor.x = me.left + alignmentOffset(legendWidth, lineWidths[cursor.line]);\r\n\t\t\t\t}\r\n\t\t\t} else if (i > 0 && y + itemHeight > me.top + me.minSize.height) {\r\n\t\t\t\tx = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding;\r\n\t\t\t\tcursor.line++;\r\n\t\t\t\ty = cursor.y = me.top + alignmentOffset(legendHeight, columnHeights[cursor.line]);\r\n\t\t\t}\r\n\r\n\t\t\tvar realX = rtlHelper.x(x);\r\n\r\n\t\t\tdrawLegendBox(realX, y, legendItem);\r\n\r\n\t\t\thitboxes[i].left = rtlHelper.leftForLtr(realX, hitboxes[i].width);\r\n\t\t\thitboxes[i].top = y;\r\n\r\n\t\t\t// Fill the actual label\r\n\t\t\tfillText(realX, y, legendItem, textWidth);\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tcursor.x += width + labelOpts.padding;\r\n\t\t\t} else {\r\n\t\t\t\tcursor.y += itemHeight;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\thelpers$1.rtl.restoreTextDirection(me.ctx, opts.textDirection);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getLegendItemAt: function(x, y) {\r\n\t\tvar me = this;\r\n\t\tvar i, hitBox, lh;\r\n\r\n\t\tif (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) {\r\n\t\t\t// See if we are touching one of the dataset boxes\r\n\t\t\tlh = me.legendHitBoxes;\r\n\t\t\tfor (i = 0; i < lh.length; ++i) {\r\n\t\t\t\thitBox = lh[i];\r\n\r\n\t\t\t\tif (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) {\r\n\t\t\t\t\t// Touching an element\r\n\t\t\t\t\treturn me.legendItems[i];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\t/**\r\n\t * Handle an event\r\n\t * @private\r\n\t * @param {IEvent} event - The event to handle\r\n\t */\r\n\thandleEvent: function(e) {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar type = e.type === 'mouseup' ? 'click' : e.type;\r\n\t\tvar hoveredItem;\r\n\r\n\t\tif (type === 'mousemove') {\r\n\t\t\tif (!opts.onHover && !opts.onLeave) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t} else if (type === 'click') {\r\n\t\t\tif (!opts.onClick) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Chart event already has relative position in it\r\n\t\thoveredItem = me._getLegendItemAt(e.x, e.y);\r\n\r\n\t\tif (type === 'click') {\r\n\t\t\tif (hoveredItem && opts.onClick) {\r\n\t\t\t\t// use e.native for backwards compatibility\r\n\t\t\t\topts.onClick.call(me, e.native, hoveredItem);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (opts.onLeave && hoveredItem !== me._hoveredItem) {\r\n\t\t\t\tif (me._hoveredItem) {\r\n\t\t\t\t\topts.onLeave.call(me, e.native, me._hoveredItem);\r\n\t\t\t\t}\r\n\t\t\t\tme._hoveredItem = hoveredItem;\r\n\t\t\t}\r\n\r\n\t\t\tif (opts.onHover && hoveredItem) {\r\n\t\t\t\t// use e.native for backwards compatibility\r\n\t\t\t\topts.onHover.call(me, e.native, hoveredItem);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction createNewLegendAndAttach(chart, legendOpts) {\r\n\tvar legend = new Legend({\r\n\t\tctx: chart.ctx,\r\n\t\toptions: legendOpts,\r\n\t\tchart: chart\r\n\t});\r\n\r\n\tcore_layouts.configure(chart, legend, legendOpts);\r\n\tcore_layouts.addBox(chart, legend);\r\n\tchart.legend = legend;\r\n}\r\n\r\nvar plugin_legend = {\r\n\tid: 'legend',\r\n\r\n\t/**\r\n\t * Backward compatibility: since 2.1.5, the legend is registered as a plugin, making\r\n\t * Chart.Legend obsolete. To avoid a breaking change, we export the Legend as part of\r\n\t * the plugin, which one will be re-exposed in the chart.js file.\r\n\t * https://github.com/chartjs/Chart.js/pull/2640\r\n\t * @private\r\n\t */\r\n\t_element: Legend,\r\n\r\n\tbeforeInit: function(chart) {\r\n\t\tvar legendOpts = chart.options.legend;\r\n\r\n\t\tif (legendOpts) {\r\n\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\r\n\t\t}\r\n\t},\r\n\r\n\tbeforeUpdate: function(chart) {\r\n\t\tvar legendOpts = chart.options.legend;\r\n\t\tvar legend = chart.legend;\r\n\r\n\t\tif (legendOpts) {\r\n\t\t\thelpers$1.mergeIf(legendOpts, core_defaults.global.legend);\r\n\r\n\t\t\tif (legend) {\r\n\t\t\t\tcore_layouts.configure(chart, legend, legendOpts);\r\n\t\t\t\tlegend.options = legendOpts;\r\n\t\t\t} else {\r\n\t\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\r\n\t\t\t}\r\n\t\t} else if (legend) {\r\n\t\t\tcore_layouts.removeBox(chart, legend);\r\n\t\t\tdelete chart.legend;\r\n\t\t}\r\n\t},\r\n\r\n\tafterEvent: function(chart, e) {\r\n\t\tvar legend = chart.legend;\r\n\t\tif (legend) {\r\n\t\t\tlegend.handleEvent(e);\r\n\t\t}\r\n\t}\r\n};\n\nvar noop$2 = helpers$1.noop;\r\n\r\ncore_defaults._set('global', {\r\n\ttitle: {\r\n\t\tdisplay: false,\r\n\t\tfontStyle: 'bold',\r\n\t\tfullWidth: true,\r\n\t\tpadding: 10,\r\n\t\tposition: 'top',\r\n\t\ttext: '',\r\n\t\tweight: 2000 // by default greater than legend (1000) to be above\r\n\t}\r\n});\r\n\r\n/**\r\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\r\n */\r\nvar Title = core_element.extend({\r\n\tinitialize: function(config) {\r\n\t\tvar me = this;\r\n\t\thelpers$1.extend(me, config);\r\n\r\n\t\t// Contains hit boxes for each dataset (in dataset order)\r\n\t\tme.legendHitBoxes = [];\r\n\t},\r\n\r\n\t// These methods are ordered by lifecycle. Utilities then follow.\r\n\r\n\tbeforeUpdate: noop$2,\r\n\tupdate: function(maxWidth, maxHeight, margins) {\r\n\t\tvar me = this;\r\n\r\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\r\n\t\tme.beforeUpdate();\r\n\r\n\t\t// Absorb the master measurements\r\n\t\tme.maxWidth = maxWidth;\r\n\t\tme.maxHeight = maxHeight;\r\n\t\tme.margins = margins;\r\n\r\n\t\t// Dimensions\r\n\t\tme.beforeSetDimensions();\r\n\t\tme.setDimensions();\r\n\t\tme.afterSetDimensions();\r\n\t\t// Labels\r\n\t\tme.beforeBuildLabels();\r\n\t\tme.buildLabels();\r\n\t\tme.afterBuildLabels();\r\n\r\n\t\t// Fit\r\n\t\tme.beforeFit();\r\n\t\tme.fit();\r\n\t\tme.afterFit();\r\n\t\t//\r\n\t\tme.afterUpdate();\r\n\r\n\t\treturn me.minSize;\r\n\r\n\t},\r\n\tafterUpdate: noop$2,\r\n\r\n\t//\r\n\r\n\tbeforeSetDimensions: noop$2,\r\n\tsetDimensions: function() {\r\n\t\tvar me = this;\r\n\t\t// Set the unconstrained dimension before label rotation\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.width = me.maxWidth;\r\n\t\t\tme.left = 0;\r\n\t\t\tme.right = me.width;\r\n\t\t} else {\r\n\t\t\tme.height = me.maxHeight;\r\n\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.top = 0;\r\n\t\t\tme.bottom = me.height;\r\n\t\t}\r\n\r\n\t\t// Reset padding\r\n\t\tme.paddingLeft = 0;\r\n\t\tme.paddingTop = 0;\r\n\t\tme.paddingRight = 0;\r\n\t\tme.paddingBottom = 0;\r\n\r\n\t\t// Reset minSize\r\n\t\tme.minSize = {\r\n\t\t\twidth: 0,\r\n\t\t\theight: 0\r\n\t\t};\r\n\t},\r\n\tafterSetDimensions: noop$2,\r\n\r\n\t//\r\n\r\n\tbeforeBuildLabels: noop$2,\r\n\tbuildLabels: noop$2,\r\n\tafterBuildLabels: noop$2,\r\n\r\n\t//\r\n\r\n\tbeforeFit: noop$2,\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar minSize = me.minSize = {};\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\tvar lineCount, textSize;\r\n\r\n\t\tif (!opts.display) {\r\n\t\t\tme.width = minSize.width = me.height = minSize.height = 0;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlineCount = helpers$1.isArray(opts.text) ? opts.text.length : 1;\r\n\t\ttextSize = lineCount * helpers$1.options._parseFont(opts).lineHeight + opts.padding * 2;\r\n\r\n\t\tme.width = minSize.width = isHorizontal ? me.maxWidth : textSize;\r\n\t\tme.height = minSize.height = isHorizontal ? textSize : me.maxHeight;\r\n\t},\r\n\tafterFit: noop$2,\r\n\r\n\t// Shared Methods\r\n\tisHorizontal: function() {\r\n\t\tvar pos = this.options.position;\r\n\t\treturn pos === 'top' || pos === 'bottom';\r\n\t},\r\n\r\n\t// Actually draw the title block on the canvas\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar opts = me.options;\r\n\r\n\t\tif (!opts.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar fontOpts = helpers$1.options._parseFont(opts);\r\n\t\tvar lineHeight = fontOpts.lineHeight;\r\n\t\tvar offset = lineHeight / 2 + opts.padding;\r\n\t\tvar rotation = 0;\r\n\t\tvar top = me.top;\r\n\t\tvar left = me.left;\r\n\t\tvar bottom = me.bottom;\r\n\t\tvar right = me.right;\r\n\t\tvar maxWidth, titleX, titleY;\r\n\r\n\t\tctx.fillStyle = helpers$1.valueOrDefault(opts.fontColor, core_defaults.global.defaultFontColor); // render in correct colour\r\n\t\tctx.font = fontOpts.string;\r\n\r\n\t\t// Horizontal\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\ttitleX = left + ((right - left) / 2); // midpoint of the width\r\n\t\t\ttitleY = top + offset;\r\n\t\t\tmaxWidth = right - left;\r\n\t\t} else {\r\n\t\t\ttitleX = opts.position === 'left' ? left + offset : right - offset;\r\n\t\t\ttitleY = top + ((bottom - top) / 2);\r\n\t\t\tmaxWidth = bottom - top;\r\n\t\t\trotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5);\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\t\tctx.translate(titleX, titleY);\r\n\t\tctx.rotate(rotation);\r\n\t\tctx.textAlign = 'center';\r\n\t\tctx.textBaseline = 'middle';\r\n\r\n\t\tvar text = opts.text;\r\n\t\tif (helpers$1.isArray(text)) {\r\n\t\t\tvar y = 0;\r\n\t\t\tfor (var i = 0; i < text.length; ++i) {\r\n\t\t\t\tctx.fillText(text[i], 0, y, maxWidth);\r\n\t\t\t\ty += lineHeight;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tctx.fillText(text, 0, 0, maxWidth);\r\n\t\t}\r\n\r\n\t\tctx.restore();\r\n\t}\r\n});\r\n\r\nfunction createNewTitleBlockAndAttach(chart, titleOpts) {\r\n\tvar title = new Title({\r\n\t\tctx: chart.ctx,\r\n\t\toptions: titleOpts,\r\n\t\tchart: chart\r\n\t});\r\n\r\n\tcore_layouts.configure(chart, title, titleOpts);\r\n\tcore_layouts.addBox(chart, title);\r\n\tchart.titleBlock = title;\r\n}\r\n\r\nvar plugin_title = {\r\n\tid: 'title',\r\n\r\n\t/**\r\n\t * Backward compatibility: since 2.1.5, the title is registered as a plugin, making\r\n\t * Chart.Title obsolete. To avoid a breaking change, we export the Title as part of\r\n\t * the plugin, which one will be re-exposed in the chart.js file.\r\n\t * https://github.com/chartjs/Chart.js/pull/2640\r\n\t * @private\r\n\t */\r\n\t_element: Title,\r\n\r\n\tbeforeInit: function(chart) {\r\n\t\tvar titleOpts = chart.options.title;\r\n\r\n\t\tif (titleOpts) {\r\n\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\r\n\t\t}\r\n\t},\r\n\r\n\tbeforeUpdate: function(chart) {\r\n\t\tvar titleOpts = chart.options.title;\r\n\t\tvar titleBlock = chart.titleBlock;\r\n\r\n\t\tif (titleOpts) {\r\n\t\t\thelpers$1.mergeIf(titleOpts, core_defaults.global.title);\r\n\r\n\t\t\tif (titleBlock) {\r\n\t\t\t\tcore_layouts.configure(chart, titleBlock, titleOpts);\r\n\t\t\t\ttitleBlock.options = titleOpts;\r\n\t\t\t} else {\r\n\t\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\r\n\t\t\t}\r\n\t\t} else if (titleBlock) {\r\n\t\t\tcore_layouts.removeBox(chart, titleBlock);\r\n\t\t\tdelete chart.titleBlock;\r\n\t\t}\r\n\t}\r\n};\n\nvar plugins = {};\r\nvar filler = plugin_filler;\r\nvar legend = plugin_legend;\r\nvar title = plugin_title;\nplugins.filler = filler;\nplugins.legend = legend;\nplugins.title = title;\n\n/**\r\n * @namespace Chart\r\n */\r\n\r\n\r\ncore_controller.helpers = helpers$1;\r\n\r\n// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests!\r\ncore_helpers();\r\n\r\ncore_controller._adapters = core_adapters;\r\ncore_controller.Animation = core_animation;\r\ncore_controller.animationService = core_animations;\r\ncore_controller.controllers = controllers;\r\ncore_controller.DatasetController = core_datasetController;\r\ncore_controller.defaults = core_defaults;\r\ncore_controller.Element = core_element;\r\ncore_controller.elements = elements;\r\ncore_controller.Interaction = core_interaction;\r\ncore_controller.layouts = core_layouts;\r\ncore_controller.platform = platform;\r\ncore_controller.plugins = core_plugins;\r\ncore_controller.Scale = core_scale;\r\ncore_controller.scaleService = core_scaleService;\r\ncore_controller.Ticks = core_ticks;\r\ncore_controller.Tooltip = core_tooltip;\r\n\r\n// Register built-in scales\r\n\r\ncore_controller.helpers.each(scales, function(scale, type) {\r\n\tcore_controller.scaleService.registerScaleType(type, scale, scale._defaults);\r\n});\r\n\r\n// Load to register built-in adapters (as side effects)\r\n\r\n\r\n// Loading built-in plugins\r\n\r\nfor (var k in plugins) {\r\n\tif (plugins.hasOwnProperty(k)) {\r\n\t\tcore_controller.plugins.register(plugins[k]);\r\n\t}\r\n}\r\n\r\ncore_controller.platform.initialize();\r\n\r\nvar src = core_controller;\r\nif (typeof window !== 'undefined') {\r\n\twindow.Chart = core_controller;\r\n}\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore\r\n * @namespace Chart.Chart\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.Chart = core_controller;\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore\r\n * @namespace Chart.Legend\r\n * @deprecated since version 2.1.5\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.Legend = plugins.legend._element;\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore\r\n * @namespace Chart.Title\r\n * @deprecated since version 2.1.5\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.Title = plugins.title._element;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.plugins instead\r\n * @namespace Chart.pluginService\r\n * @deprecated since version 2.1.5\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.pluginService = core_controller.plugins;\r\n\r\n/**\r\n * Provided for backward compatibility, inheriting from Chart.PlugingBase has no\r\n * effect, instead simply create/register plugins via plain JavaScript objects.\r\n * @interface Chart.PluginBase\r\n * @deprecated since version 2.5.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.PluginBase = core_controller.Element.extend({});\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas instead.\r\n * @namespace Chart.canvasHelpers\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.canvasHelpers = core_controller.helpers.canvas;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.layouts instead.\r\n * @namespace Chart.layoutService\r\n * @deprecated since version 2.7.3\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.layoutService = core_controller.layouts;\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore.\r\n * @namespace Chart.LinearScaleBase\r\n * @deprecated since version 2.8\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.LinearScaleBase = scale_linearbase;\r\n\r\n/**\r\n * Provided for backward compatibility, instead we should create a new Chart\r\n * by setting the type in the config (`new Chart(id, {type: '{chart-type}'}`).\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n */\r\ncore_controller.helpers.each(\r\n\t[\r\n\t\t'Bar',\r\n\t\t'Bubble',\r\n\t\t'Doughnut',\r\n\t\t'Line',\r\n\t\t'PolarArea',\r\n\t\t'Radar',\r\n\t\t'Scatter'\r\n\t],\r\n\tfunction(klass) {\r\n\t\tcore_controller[klass] = function(ctx, cfg) {\r\n\t\t\treturn new core_controller(ctx, core_controller.helpers.merge(cfg || {}, {\r\n\t\t\t\ttype: klass.charAt(0).toLowerCase() + klass.slice(1)\r\n\t\t\t}));\r\n\t\t};\r\n\t}\r\n);\n\nreturn src;\n\n})));\n","import Chart from 'chart.js';\n\n// Modify horizontalBar so that each dataset (fragments, timeRanges) draws on the same row (level, track or buffer)\nChart.controllers.horizontalBar.prototype.calculateBarValuePixels = function (\n datasetIndex,\n index,\n options\n) {\n const chart = this.chart;\n const scale = this._getValueScale();\n const datasets = chart.data.datasets;\n if (!datasets) {\n throw new Error(`Chart datasets are ${datasets}`);\n }\n scale._parseValue = scaleParseValue;\n const obj = datasets[datasetIndex].data[index];\n const value = scale._parseValue(obj);\n const start =\n value.start === undefined\n ? 0\n : value.max >= 0 && value.min >= 0\n ? value.min\n : value.max;\n const length =\n value.start === undefined\n ? value.end\n : value.max >= 0 && value.min >= 0\n ? value.max - value.min\n : value.min - value.max;\n const base = scale.getPixelForValue(start);\n const head = scale.getPixelForValue(start + length);\n const size = head - base;\n\n return {\n size: size,\n base: base,\n head: head,\n center: head + size / 2,\n };\n};\n\nChart.controllers.horizontalBar.prototype.calculateBarIndexPixels = function (\n datasetIndex,\n index,\n ruler,\n options\n) {\n const rowHeight = options.barThickness;\n const size = rowHeight * options.categoryPercentage;\n const center = ruler.start + (datasetIndex * rowHeight + rowHeight / 2);\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size,\n };\n};\n\nChart.controllers.horizontalBar.prototype.draw = function () {\n const rects = this.getMeta().data;\n const len = rects.length;\n const dataset = this.getDataset();\n if (len !== dataset.data.length) {\n // View does not match dataset (wait for redraw)\n return;\n }\n const chart = this.chart;\n const scale = this._getValueScale();\n scale._parseValue = scaleParseValue;\n const ctx: CanvasRenderingContext2D = chart.ctx;\n const chartArea: { left; top; right; bottom } = chart.chartArea;\n Chart.helpers.canvas.clipArea(ctx, chartArea);\n if (!this.lineHeight) {\n this.lineHeight =\n Math.ceil(ctx.measureText('0').actualBoundingBoxAscent) + 2;\n }\n const lineHeight = this.lineHeight;\n let range = 0;\n for (let i = 0; i < len; ++i) {\n const rect = rects[i];\n const view = rect._view;\n if (!intersects(view.base, view.x, chartArea.left, chartArea.right)) {\n // Do not draw elements outside of the chart's viewport\n continue;\n }\n const obj = dataset.data[i];\n const val = scale._parseValue(obj);\n if (!isNaN(val.min) && !isNaN(val.max)) {\n const { dataType } = obj;\n let { stats } = obj;\n const isPart = dataType === 'part';\n const isFragmentHint = dataType === 'fragmentHint';\n const isFragment = dataType === 'fragment' || isPart || isFragmentHint;\n const isCue = dataType === 'cue';\n if (isCue) {\n view.y += view.height * 0.5 * (i % 2) - view.height * 0.25;\n } else if (isPart) {\n view.height -= 22;\n }\n const bounds = boundingRects(view);\n const drawText = bounds.w > lineHeight * 1.5 && !isFragmentHint;\n if (isFragment || isCue) {\n if (drawText) {\n view.borderWidth = 1;\n if (i === 0) {\n view.borderSkipped = false;\n }\n } else {\n range =\n range ||\n scale.getValueForPixel(chartArea.right) -\n scale.getValueForPixel(chartArea.left);\n if (range > 300 || isCue) {\n view.borderWidth = 0;\n }\n }\n if (isFragmentHint) {\n view.borderWidth = 0;\n view.backgroundColor = 'rgba(0, 0, 0, 0.1)';\n } else {\n view.backgroundColor = `rgba(0, 0, 0, ${0.05 + (i % 2) / 12})`;\n }\n }\n rect.draw();\n if (isFragment) {\n if (!stats) {\n stats = {};\n }\n if (isPart) {\n ctx.fillStyle = 'rgba(255, 255, 255, 0.5)';\n ctx.fillRect(bounds.x, bounds.y, bounds.w, bounds.h);\n }\n if (stats.aborted) {\n ctx.fillStyle = 'rgba(100, 0, 0, 0.3)';\n ctx.fillRect(bounds.x, bounds.y, bounds.w, bounds.h);\n }\n if (stats.loaded && stats.total) {\n ctx.fillStyle = 'rgba(50, 20, 100, 0.3)';\n ctx.fillRect(\n bounds.x,\n bounds.y,\n (bounds.w * stats.loaded) / stats.total,\n bounds.h\n );\n }\n } else if (isCue) {\n if (obj.active) {\n ctx.fillStyle = 'rgba(100, 100, 10, 0.4)';\n ctx.fillRect(bounds.x, bounds.y, bounds.w, bounds.h);\n }\n }\n if (drawText) {\n const start = val.start; // obj.start;\n ctx.fillStyle = 'rgb(0, 0, 0)';\n if (stats) {\n const snBounds = Object.assign({}, bounds);\n if (obj.cc) {\n const ccLabel = `cc:${obj.cc}`;\n const ccWidth = Math.min(\n ctx.measureText(ccLabel).width + 2,\n snBounds.w / 2 - 2\n );\n if (ccWidth) {\n ctx.fillText(\n ccLabel,\n snBounds.x + 2,\n snBounds.y + lineHeight,\n snBounds.w / 2 - 4\n );\n snBounds.x += ccWidth;\n snBounds.w -= ccWidth;\n }\n }\n const snLabel = isPart ? `part: ${obj.index}` : `sn: ${obj.sn}`;\n const textWidth = Math.min(\n ctx.measureText(snLabel).width + 2,\n snBounds.w - 2\n );\n ctx.fillText(\n snLabel,\n snBounds.x + snBounds.w - textWidth,\n snBounds.y + lineHeight,\n snBounds.w - 4\n );\n }\n if (isCue) {\n const strLength = Math.min(\n 30,\n Math.ceil(bounds.w / (lineHeight / 3))\n );\n ctx.fillText(\n ('' + obj.content).slice(0, strLength),\n bounds.x + 2,\n bounds.y + bounds.h - 3,\n bounds.w - 5\n );\n } else if (!isPart) {\n const float = start !== (start | 0);\n const fixedDigits = float\n ? Math.min(5, Math.max(1, Math.floor(bounds.w / 10 - 1)))\n : 0;\n const startString = hhmmss(start, fixedDigits);\n ctx.fillText(\n startString,\n bounds.x + 2,\n bounds.y + bounds.h - 3,\n bounds.w - 5\n );\n }\n }\n }\n }\n\n Chart.helpers.canvas.unclipArea(chart.ctx);\n};\n\nexport function applyChartInstanceOverrides(chart) {\n Object.keys(chart.scales).forEach((axis) => {\n const scale = chart.scales![axis];\n scale._parseValue = scaleParseValue;\n });\n}\n\nfunction scaleParseValue(value: number[] | any) {\n if (value === undefined) {\n console.warn('Chart values undefined (update chart)');\n return {};\n }\n\n let start;\n let end;\n let min;\n let max;\n\n if (Array.isArray(value)) {\n start = +this.getRightValue(value[0]);\n end = +this.getRightValue(value[1]);\n min = Math.min(start, end);\n max = Math.max(start, end);\n } else {\n start = +this.getRightValue(value.start);\n if ('end' in value) {\n end = +this.getRightValue(value.end);\n } else {\n end = +this.getRightValue(value.start + value.duration);\n }\n min = Math.min(start, end);\n max = Math.max(start, end);\n }\n\n return {\n min,\n max,\n start,\n end,\n };\n}\n\nfunction intersects(x1, x2, x3, x4) {\n return x2 > x3 && x1 < x4;\n}\n\nfunction boundingRects(vm) {\n const half = vm.height / 2;\n const left = Math.min(vm.x, vm.base);\n const right = Math.max(vm.x, vm.base);\n const top = vm.y - half;\n const bottom = vm.y + half;\n return {\n x: left,\n y: top,\n w: right - left,\n h: bottom - top,\n };\n}\n\nexport function hhmmss(value, fixedDigits) {\n const h = (value / 3600) | 0;\n const m = ((value / 60) | 0) % 60;\n const s = value % 60;\n return `${h}:${pad(m, 2)}:${pad(\n s.toFixed(fixedDigits),\n fixedDigits ? fixedDigits + 3 : 2\n )}`.replace(/^(?:0+:?)*(\\d.*?)(?:\\.0*)?$/, '$1');\n}\n\nfunction pad(str, length) {\n str = '' + str;\n while (str.length < length) {\n str = '0' + str;\n }\n return str;\n}\n","import Chart from 'chart.js';\nimport { applyChartInstanceOverrides, hhmmss } from './chartjs-horizontal-bar';\nimport { Fragment } from '../../src/loader/fragment';\nimport type { Level } from '../../src/types/level';\nimport type { TrackSet } from '../../src/types/track';\nimport type { MediaPlaylist } from '../../src/types/media-playlist';\nimport type { LevelDetails } from '../../src/loader/level-details';\nimport {\n FragChangedData,\n FragLoadedData,\n FragParsedData,\n} from '../../src/types/events';\n\ndeclare global {\n interface Window {\n Hls: any;\n hls: any;\n chart: any;\n }\n}\n\nconst X_AXIS_SECONDS = 'x-axis-seconds';\n\ninterface ChartScale {\n width: number;\n height: number;\n min: number;\n max: number;\n options: any;\n determineDataLimits: () => void;\n buildTicks: () => void;\n getLabelForIndex: (index: number, datasetIndex: number) => string;\n getPixelForTick: (index: number) => number;\n getPixelForValue: (\n value: number,\n index?: number,\n datasetIndex?: number\n ) => number;\n getValueForPixel: (pixel: number) => number;\n}\n\nexport class TimelineChart {\n private readonly chart: Chart;\n private rafDebounceRequestId: number = -1;\n private imageDataBuffer: ImageData | null = null;\n private media: HTMLMediaElement | null = null;\n private tracksChangeHandler?: (e) => void;\n private cuesChangeHandler?: (e) => void;\n private hidden: boolean = true;\n private zoom100: number = 60;\n\n constructor(canvas: HTMLCanvasElement, chartJsOptions?: any) {\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n throw new Error(\n `Could not get CanvasRenderingContext2D from canvas: ${canvas}`\n );\n }\n const chart =\n (this.chart =\n self.chart =\n new Chart(ctx, {\n type: 'horizontalBar',\n data: {\n labels: [],\n datasets: [],\n },\n options: Object.assign(getChartOptions(), chartJsOptions),\n plugins: [\n {\n afterRender: (chart) => {\n this.imageDataBuffer = null;\n this.drawCurrentTime();\n },\n },\n ],\n }));\n\n applyChartInstanceOverrides(chart);\n\n canvas.ondblclick = (event: MouseEvent) => {\n const chart = this.chart;\n const chartArea: { left; top; right; bottom } = chart.chartArea;\n const element = chart.getElementAtEvent(event);\n const pos = Chart.helpers.getRelativePosition(event, chart);\n const scale = this.chartScales[X_AXIS_SECONDS];\n // zoom in when double clicking near elements in chart area\n if (element.length || pos.x > chartArea.left) {\n const amount = event.getModifierState('Shift') ? -1.0 : 0.5;\n this.zoom(scale, pos, amount);\n } else {\n scale.options.ticks.min = 0;\n scale.options.ticks.max = this.zoom100;\n }\n this.update();\n };\n\n canvas.onwheel = (event: WheelEvent) => {\n if (event.deltaMode) {\n // exit if wheel is in page or line scrolling mode\n return;\n }\n const chart = this.chart;\n const chartArea: { left; top; right; bottom } = chart.chartArea;\n const pos = Chart.helpers.getRelativePosition(event, chart);\n // zoom when scrolling over chart elements\n if (pos.x > chartArea.left - 11) {\n const scale = this.chartScales[X_AXIS_SECONDS];\n if (event.deltaY) {\n const direction = -event.deltaY / Math.abs(event.deltaY);\n const normal = Math.min(333, Math.abs(event.deltaY)) / 1000;\n const ease = 1 - (1 - normal) * (1 - normal);\n this.zoom(scale, pos, ease * direction);\n } else if (event.deltaX) {\n this.pan(scale, event.deltaX / 10, scale.min, scale.max);\n }\n event.preventDefault();\n }\n };\n\n let moved = false;\n let gestureScale = 1;\n canvas.onpointerdown = (downEvent: PointerEvent) => {\n if (!downEvent.isPrimary || gestureScale !== 1) {\n return;\n }\n const chart = this.chart;\n const chartArea: { left; top; right; bottom } = chart.chartArea;\n const pos = Chart.helpers.getRelativePosition(downEvent, chart);\n // pan when dragging over chart elements\n if (pos.x > chartArea.left) {\n const scale = this.chartScales[X_AXIS_SECONDS];\n const startX = downEvent.clientX;\n const { min, max } = scale;\n const xToVal = (max - min) / scale.width;\n moved = false;\n canvas.setPointerCapture(downEvent.pointerId);\n canvas.onpointermove = (moveEvent: PointerEvent) => {\n if (!downEvent.isPrimary || gestureScale !== 1) {\n return;\n }\n const movedX = startX - moveEvent.clientX;\n const movedValue = movedX * xToVal;\n moved = moved || Math.abs(movedX) > 8;\n this.pan(scale, movedValue, min, max);\n };\n }\n };\n\n canvas.onpointerup = canvas.onpointercancel = (upEvent: PointerEvent) => {\n if (canvas.onpointermove) {\n canvas.onpointermove = null;\n canvas.releasePointerCapture(upEvent.pointerId);\n }\n if (!moved && upEvent.isPrimary) {\n this.click(upEvent);\n }\n };\n\n // Gesture events are for iOS and easier to implement than pinch-zoom with multiple pointers for all browsers\n // @ts-ignore\n canvas.ongesturestart = (event) => {\n gestureScale = 1;\n event.preventDefault();\n };\n\n // @ts-ignore\n canvas.ongestureend = (event) => {\n gestureScale = 1;\n };\n\n // @ts-ignore\n canvas.ongesturechange = (event) => {\n const chart = this.chart;\n const chartArea: { left; top; right; bottom } = chart.chartArea;\n const pos = Chart.helpers.getRelativePosition(event, chart);\n // zoom when scrolling over chart elements\n if (pos.x > chartArea.left) {\n const scale = this.chartScales[X_AXIS_SECONDS];\n const amount = event.scale - gestureScale;\n this.zoom(scale, pos, amount);\n gestureScale = event.scale;\n }\n };\n }\n\n private click(event: MouseEvent) {\n // Log object on click and seek to position\n const chart = this.chart;\n const element = chart.getElementAtEvent(event);\n if (element.length && chart.data.datasets) {\n const dataset = chart.data.datasets[(element[0] as any)._datasetIndex];\n const obj = dataset.data![(element[0] as any)._index];\n // eslint-disable-next-line no-console\n console.log(obj);\n if (self.hls?.media) {\n const scale = this.chartScales[X_AXIS_SECONDS];\n const pos = Chart.helpers.getRelativePosition(event, chart);\n self.hls.media.currentTime = scale.getValueForPixel(pos.x);\n }\n }\n }\n\n private pan(scale: ChartScale, amount: number, min: number, max: number) {\n if (amount === 0) {\n return;\n }\n let pan = amount;\n if (amount > 0) {\n pan = Math.min(this.zoom100 + 10 - max, amount);\n } else {\n pan = Math.max(-10 - min, amount);\n }\n scale.options.ticks.min = min + pan;\n scale.options.ticks.max = max + pan;\n this.updateOnRepaint();\n }\n\n private zoom(scale: ChartScale, pos: any, amount: number) {\n const range = scale.max - scale.min;\n const diff = range * amount;\n const minPercent = (scale.getValueForPixel(pos.x) - scale.min) / range;\n const maxPercent = 1 - minPercent;\n const minDelta = diff * minPercent;\n const maxDelta = diff * maxPercent;\n scale.options.ticks.min = Math.max(-10, scale.min + minDelta);\n scale.options.ticks.max = Math.min(this.zoom100 + 10, scale.max - maxDelta);\n this.updateOnRepaint();\n }\n\n get chartScales(): { 'x-axis-seconds': ChartScale } {\n return (this.chart as any).scales;\n }\n\n reset() {\n const scale = this.chartScales[X_AXIS_SECONDS];\n scale.options.ticks.min = 0;\n scale.options.ticks.max = 60;\n const { labels, datasets } = this.chart.data;\n if (labels && datasets) {\n labels.length = 0;\n datasets.length = 0;\n this.resize(datasets);\n }\n }\n\n update() {\n if (this.hidden || !this.chart.ctx?.canvas.width) {\n return;\n }\n self.cancelAnimationFrame(this.rafDebounceRequestId);\n this.chart.update({\n duration: 0,\n lazy: true,\n });\n }\n\n updateOnRepaint() {\n if (this.hidden) {\n return;\n }\n self.cancelAnimationFrame(this.rafDebounceRequestId);\n this.rafDebounceRequestId = self.requestAnimationFrame(() => this.update());\n }\n\n resize(datasets?) {\n if (this.hidden) {\n return;\n }\n if (datasets?.length) {\n const scale = this.chartScales[X_AXIS_SECONDS];\n const { top } = this.chart.chartArea;\n const height =\n top +\n datasets.reduce((val, dataset) => val + dataset.barThickness, 0) +\n scale.height +\n 5;\n const container = this.chart.canvas?.parentElement;\n if (container) {\n container.style.height = `${height}px`;\n }\n }\n self.cancelAnimationFrame(this.rafDebounceRequestId);\n this.rafDebounceRequestId = self.requestAnimationFrame(() => {\n this.chart.resize();\n });\n }\n\n show() {\n this.hidden = false;\n }\n\n hide() {\n this.hidden = true;\n }\n\n updateLevels(levels: Level[], levelSwitched) {\n const { labels, datasets } = this.chart.data;\n if (!labels || !datasets) {\n return;\n }\n const { loadLevel, nextLoadLevel, nextAutoLevel } = self.hls;\n // eslint-disable-next-line no-undefined\n const currentLevel =\n levelSwitched !== undefined ? levelSwitched : self.hls.currentLevel;\n levels.forEach((level, i) => {\n const index = level.id || i;\n labels.push(getLevelName(level, index));\n let borderColor: string | null = null;\n if (currentLevel === i) {\n borderColor = 'rgba(32, 32, 240, 1.0)';\n } else if (loadLevel === i) {\n borderColor = 'rgba(255, 128, 0, 1.0)';\n } else if (nextLoadLevel === i) {\n borderColor = 'rgba(200, 200, 64, 1.0)';\n } else if (nextAutoLevel === i) {\n borderColor = 'rgba(160, 0, 160, 1.0)';\n }\n datasets.push(\n datasetWithDefaults({\n url: Array.isArray(level.url)\n ? level.url[level.urlId || 0]\n : level.url,\n trackType: 'level',\n borderColor,\n level: index,\n })\n );\n if (level.details) {\n this.updateLevelOrTrack(level.details);\n }\n });\n this.resize(datasets);\n }\n\n updateAudioTracks(audioTracks: MediaPlaylist[]) {\n const { labels, datasets } = this.chart.data;\n if (!labels || !datasets) {\n return;\n }\n const { audioTrack } = self.hls;\n audioTracks.forEach((track: MediaPlaylist, i) => {\n labels.push(getAudioTrackName(track, i));\n datasets.push(\n datasetWithDefaults({\n url: track.url,\n trackType: 'audioTrack',\n borderColor: audioTrack === i ? 'rgba(32, 32, 240, 1.0)' : null,\n audioTrack: i,\n })\n );\n if (track.details) {\n this.updateLevelOrTrack(track.details);\n }\n });\n this.resize(datasets);\n }\n\n updateSubtitleTracks(subtitles: MediaPlaylist[]) {\n const { labels, datasets } = this.chart.data;\n if (!labels || !datasets) {\n return;\n }\n const { subtitleTrack } = self.hls;\n subtitles.forEach((track, i) => {\n labels.push(getSubtitlesName(track, i));\n datasets.push(\n datasetWithDefaults({\n url: track.url,\n trackType: 'subtitleTrack',\n borderColor: subtitleTrack === i ? 'rgba(32, 32, 240, 1.0)' : null,\n subtitleTrack: i,\n })\n );\n if (track.details) {\n this.updateLevelOrTrack(track.details);\n }\n });\n this.resize(datasets);\n }\n\n removeType(\n trackType: 'level' | 'audioTrack' | 'subtitleTrack' | 'textTrack'\n ) {\n const { labels, datasets } = this.chart.data;\n if (!labels || !datasets) {\n return;\n }\n let i = datasets.length;\n while (i--) {\n if ((datasets[i] as any).trackType === trackType) {\n datasets.splice(i, 1);\n labels.splice(i, 1);\n }\n }\n }\n\n updateLevelOrTrack(details: LevelDetails) {\n const { targetduration, totalduration, url } = details;\n const { datasets } = this.chart.data;\n let levelDataSet = arrayFind(\n datasets,\n (dataset) =>\n stripDeliveryDirectives(url) ===\n stripDeliveryDirectives(dataset.url || '')\n );\n if (!levelDataSet) {\n levelDataSet = arrayFind(\n datasets,\n (dataset) => details.fragments[0]?.level === dataset.level\n );\n }\n if (!levelDataSet) {\n return;\n }\n const data = levelDataSet.data;\n data.length = 0;\n if (details.fragments) {\n details.fragments.forEach((fragment) => {\n // TODO: keep track of initial playlist start and duration so that we can show drift and pts offset\n // (Make that a feature of hls.js v1.0.0 fragments)\n const chartFragment = Object.assign(\n {\n dataType: 'fragment',\n },\n fragment,\n // Remove loader references for GC\n { loader: null }\n );\n data.push(chartFragment);\n });\n }\n if (details.partList) {\n details.partList.forEach((part) => {\n const chartPart = Object.assign(\n {\n dataType: 'part',\n start: part.fragment.start + part.fragOffset,\n },\n part,\n {\n fragment: Object.assign({}, part.fragment, { loader: null }),\n }\n );\n data.push(chartPart);\n });\n if (details.fragmentHint) {\n const chartFragment = Object.assign(\n {\n dataType: 'fragmentHint',\n },\n details.fragmentHint,\n // Remove loader references for GC\n { loader: null }\n );\n data.push(chartFragment);\n }\n }\n const start = getPlaylistStart(details);\n this.maxZoom = this.zoom100 = Math.max(\n start + totalduration + targetduration * 3,\n this.zoom100\n );\n this.updateOnRepaint();\n }\n\n // @ts-ignore\n get minZoom(): number {\n const scale = this.chartScales[X_AXIS_SECONDS];\n if (scale) {\n return scale.options.ticks.min;\n }\n return 1;\n }\n\n // @ts-ignore\n get maxZoom(): number {\n const scale = this.chartScales[X_AXIS_SECONDS];\n if (scale) {\n return scale.options.ticks.max;\n }\n return this.zoom100;\n }\n\n // @ts-ignore\n set maxZoom(x: number) {\n const currentZoom = this.maxZoom;\n const newZoom = Math.max(x, currentZoom);\n if (currentZoom === 60 && newZoom !== currentZoom) {\n const scale = this.chartScales[X_AXIS_SECONDS];\n scale.options.ticks.max = newZoom;\n }\n }\n\n updateFragment(data: FragLoadedData | FragParsedData | FragChangedData) {\n const { datasets } = this.chart.data;\n const frag: Fragment = data.frag;\n let levelDataSet = arrayFind(\n datasets,\n (dataset) => frag.baseurl === dataset.url\n );\n if (!levelDataSet) {\n levelDataSet = arrayFind(\n datasets,\n (dataset) => frag.level === dataset.level\n );\n }\n if (!levelDataSet) {\n return;\n }\n // eslint-disable-next-line no-restricted-properties\n const fragData = arrayFind(\n levelDataSet.data,\n (fragData) => fragData.relurl === frag.relurl && fragData.sn === frag.sn\n );\n if (fragData && fragData !== frag) {\n Object.assign(fragData, frag);\n }\n this.updateOnRepaint();\n }\n\n updateSourceBuffers(tracks: TrackSet, media: HTMLMediaElement) {\n const { labels, datasets } = this.chart.data;\n if (!labels || !datasets) {\n return;\n }\n const trackTypes = Object.keys(tracks).sort((type) =>\n type === 'video' ? 1 : -1\n );\n const mediaBufferData = [];\n\n this.removeSourceBuffers();\n\n this.media = media;\n\n trackTypes.forEach((type) => {\n const track = tracks[type];\n const data = [];\n const sourceBuffer = track.buffer;\n const backgroundColor = {\n video: 'rgba(0, 0, 255, 0.2)',\n audio: 'rgba(128, 128, 0, 0.2)',\n audiovideo: 'rgba(128, 128, 255, 0.2)',\n }[type];\n labels.unshift(`${type} buffer (${track.id})`);\n datasets.unshift(\n datasetWithDefaults({\n data,\n categoryPercentage: 0.5,\n backgroundColor,\n sourceBuffer,\n })\n );\n sourceBuffer.addEventListener('update', () => {\n try {\n replaceTimeRangeTuples(sourceBuffer.buffered, data);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn(error);\n return;\n }\n replaceTimeRangeTuples(media.buffered, mediaBufferData);\n this.update();\n });\n });\n\n if (trackTypes.length === 0) {\n media.onprogress = () => {\n replaceTimeRangeTuples(media.buffered, mediaBufferData);\n this.update();\n };\n }\n\n labels.unshift('media buffer');\n datasets.unshift(\n datasetWithDefaults({\n data: mediaBufferData,\n categoryPercentage: 0.5,\n backgroundColor: 'rgba(0, 255, 0, 0.2)',\n media,\n })\n );\n\n media.ontimeupdate = () => this.drawCurrentTime();\n\n // TextTrackList\n const { textTracks } = media;\n this.tracksChangeHandler =\n this.tracksChangeHandler || ((e) => this.setTextTracks(e.currentTarget));\n textTracks.removeEventListener('addtrack', this.tracksChangeHandler);\n textTracks.removeEventListener('removetrack', this.tracksChangeHandler);\n textTracks.removeEventListener('change', this.tracksChangeHandler);\n textTracks.addEventListener('addtrack', this.tracksChangeHandler);\n textTracks.addEventListener('removetrack', this.tracksChangeHandler);\n textTracks.addEventListener('change', this.tracksChangeHandler);\n this.setTextTracks(textTracks);\n this.resize(datasets);\n }\n\n removeSourceBuffers() {\n const { labels, datasets } = this.chart.data;\n if (!labels || !datasets) {\n return;\n }\n let i = datasets.length;\n while (i--) {\n if ((labels[0] || '').toString().indexOf('buffer') > -1) {\n datasets.splice(i, 1);\n labels.splice(i, 1);\n }\n }\n }\n\n setTextTracks(textTracks) {\n const { labels, datasets } = this.chart.data;\n if (!labels || !datasets) {\n return;\n }\n this.removeType('textTrack');\n [].forEach.call(textTracks, (textTrack, i) => {\n // Uncomment to disable rending of subtitle/caption cues in the timeline\n // if (textTrack.kind === 'subtitles' || textTrack.kind === 'captions') {\n // return;\n // }\n const data = [];\n labels.push(\n `${textTrack.name || textTrack.label} ${textTrack.kind} (${\n textTrack.mode\n })`\n );\n datasets.push(\n datasetWithDefaults({\n data,\n categoryPercentage: 0.5,\n url: '',\n trackType: 'textTrack',\n borderColor:\n (textTrack.mode !== 'hidden') === i\n ? 'rgba(32, 32, 240, 1.0)'\n : null,\n textTrack: i,\n })\n );\n this.cuesChangeHandler =\n this.cuesChangeHandler ||\n ((e) => this.updateTextTrackCues(e.currentTarget));\n textTrack._data = data;\n textTrack.removeEventListener('cuechange', this.cuesChangeHandler);\n textTrack.addEventListener('cuechange', this.cuesChangeHandler);\n this.updateTextTrackCues(textTrack);\n });\n this.resize(datasets);\n }\n\n updateTextTrackCues(textTrack) {\n const data = textTrack._data;\n if (!data) {\n return;\n }\n const { activeCues, cues } = textTrack;\n data.length = 0;\n if (!cues) {\n return;\n }\n const length = cues.length;\n\n let activeLength = 0;\n let activeMin = Infinity;\n let activeMax = 0;\n if (activeCues) {\n activeLength = activeCues.length;\n for (let i = 0; i < activeLength; i++) {\n let cue = activeCues[i];\n if (!cue && activeCues.item) {\n cue = activeCues.item(i);\n }\n if (cue) {\n activeMin = Math.min(activeMin, cue.startTime);\n activeMax = cue.endTime\n ? Math.max(activeMax, cue.endTime)\n : activeMax;\n } else {\n activeLength--;\n }\n }\n }\n for (let i = 0; i < length; i++) {\n let cue = cues[i];\n if (!cue && cues.item) {\n cue = cues.item(i);\n }\n if (!cue) {\n continue;\n }\n const start = cue.startTime;\n const end = cue.endTime;\n const content = getCueLabel(cue);\n let active = false;\n if (activeLength && end >= activeMin && start <= activeMax) {\n active = [].some.call(activeCues, (activeCue) =>\n cuesMatch(activeCue, cue)\n );\n }\n data.push({\n start,\n end,\n content,\n active,\n dataType: 'cue',\n });\n }\n this.updateOnRepaint();\n }\n\n drawCurrentTime() {\n const chart = this.chart;\n if (self.hls?.media && chart.data.datasets!.length) {\n const currentTime = self.hls.media.currentTime;\n const scale = this.chartScales[X_AXIS_SECONDS];\n const ctx = chart.ctx;\n if (this.hidden || !ctx || !ctx.canvas.width) {\n return;\n }\n const chartArea: { left; top; right; bottom } = chart.chartArea;\n const x = scale.getPixelForValue(currentTime);\n ctx.restore();\n ctx.save();\n this.drawLineX(ctx, x, chartArea);\n if (x > chartArea.left && x < chartArea.right) {\n ctx.fillStyle = this.getCurrentTimeColor(self.hls.media);\n const y = chartArea.top + chart.data.datasets![0].barThickness + 1;\n ctx.fillText(hhmmss(currentTime, 5), x + 2, y, 100);\n }\n ctx.restore();\n }\n }\n\n getCurrentTimeColor(video: HTMLMediaElement): string {\n if (!video.readyState || video.ended) {\n return 'rgba(0, 0, 0, 0.9)';\n }\n if (video.seeking || video.readyState < 3) {\n return 'rgba(255, 128, 0, 0.9)';\n }\n if (video.paused) {\n return 'rgba(128, 0, 255, 0.9)';\n }\n return 'rgba(0, 0, 255, 0.9)';\n }\n\n drawLineX(ctx, x: number, chartArea) {\n if (!this.imageDataBuffer) {\n const devicePixelRatio = self.devicePixelRatio || 1;\n this.imageDataBuffer = ctx.getImageData(\n 0,\n 0,\n chartArea.right * devicePixelRatio,\n chartArea.bottom * devicePixelRatio\n );\n } else {\n ctx.fillStyle = '#ffffff';\n ctx.fillRect(0, 0, chartArea.right, chartArea.bottom);\n ctx.putImageData(this.imageDataBuffer, 0, 0);\n }\n if (x > chartArea.left && x < chartArea.right) {\n ctx.lineWidth = 1;\n ctx.strokeStyle = this.getCurrentTimeColor(self.hls.media); // alpha '0.5'\n ctx.beginPath();\n ctx.moveTo(x, chartArea.top);\n ctx.lineTo(x, chartArea.bottom);\n ctx.stroke();\n }\n }\n}\n\nfunction stripDeliveryDirectives(url: string): string {\n if (url === '') {\n return url;\n }\n try {\n const webUrl: URL = new self.URL(url);\n webUrl.searchParams.delete('_HLS_msn');\n webUrl.searchParams.delete('_HLS_part');\n webUrl.searchParams.delete('_HLS_skip');\n webUrl.searchParams.sort();\n return webUrl.href;\n } catch (e) {\n return url.replace(/[?&]_HLS_(?:msn|part|skip)=[^?&]+/g, '');\n }\n}\n\nfunction datasetWithDefaults(options) {\n return Object.assign(\n {\n data: [],\n xAxisID: X_AXIS_SECONDS,\n barThickness: 35,\n categoryPercentage: 1,\n },\n options\n );\n}\n\nfunction getPlaylistStart(details: LevelDetails): number {\n return details.fragments?.length ? details.fragments[0].start : 0;\n}\n\nfunction getLevelName(level: Level, index: number) {\n let label = '(main playlist)';\n if (level.attrs?.BANDWIDTH) {\n label = `${getMainLevelAttribute(level)}@${level.attrs.BANDWIDTH}`;\n if (level.name) {\n label = `${label} (${level.name})`;\n }\n } else if (level.name) {\n label = level.name;\n }\n return `${label} L-${index}`;\n}\n\nfunction getMainLevelAttribute(level: Level) {\n return level.attrs.RESOLUTION || level.attrs.CODECS || level.attrs.AUDIO;\n}\n\nfunction getAudioTrackName(track: MediaPlaylist, index: number) {\n const label = track.lang ? `${track.name}/${track.lang}` : track.name;\n return `${label} (${track.groupId || track.attrs['GROUP-ID']}) A-${index}`;\n}\n\nfunction getSubtitlesName(track: MediaPlaylist, index: number) {\n const label = track.lang ? `${track.name}/${track.lang}` : track.name;\n return `${label} (${track.groupId || track.attrs['GROUP-ID']}) S-${index}`;\n}\n\nfunction replaceTimeRangeTuples(timeRanges, data) {\n data.length = 0;\n const { length } = timeRanges;\n for (let i = 0; i < length; i++) {\n data.push([timeRanges.start(i), timeRanges.end(i)]);\n }\n}\n\nfunction cuesMatch(cue1, cue2) {\n return (\n cue1.startTime === cue2.startTime &&\n cue1.endTime === cue2.endTime &&\n cue1.text === cue2.text &&\n cue1.data === cue2.data &&\n JSON.stringify(cue1.value) === JSON.stringify(cue2.value)\n );\n}\n\nfunction getCueLabel(cue) {\n if (cue.text) {\n return cue.text;\n }\n const result = parseDataCue(cue);\n return JSON.stringify(result);\n}\n\nfunction parseDataCue(cue) {\n const data = {};\n const { value } = cue;\n if (value) {\n if (value.info) {\n let collection = data[value.key];\n if (collection !== Object(collection)) {\n collection = {};\n data[value.key] = collection;\n }\n collection[value.info] = value.data;\n } else {\n data[value.key] = value.data;\n }\n }\n return data;\n}\n\nfunction getChartOptions() {\n return {\n animation: {\n duration: 0,\n },\n elements: {\n rectangle: {\n borderWidth: 1,\n borderColor: 'rgba(20, 20, 20, 1)',\n },\n },\n events: ['click', 'touchstart'],\n hover: {\n mode: null,\n animationDuration: 0,\n },\n legend: {\n display: false,\n },\n maintainAspectRatio: false,\n\n responsiveAnimationDuration: 0,\n scales: {\n // TODO: additional xAxes for PTS and PDT\n xAxes: [\n {\n id: X_AXIS_SECONDS,\n ticks: {\n beginAtZero: true,\n sampleSize: 0,\n maxRotation: 0,\n callback: (tickValue, i, ticks) => {\n if (i === 0 || i === ticks.length - 1) {\n return tickValue ? '' : '0';\n } else {\n return hhmmss(tickValue, 2);\n }\n },\n },\n },\n ],\n yAxes: [\n {\n gridLines: {\n display: false,\n },\n },\n ],\n },\n tooltips: {\n enabled: false,\n },\n };\n}\n\nfunction arrayFind(array, predicate) {\n const len = array.length >>> 0;\n if (typeof predicate !== 'function') {\n throw TypeError('predicate must be a function');\n }\n const thisArg = arguments[2];\n let k = 0;\n while (k < len) {\n const kValue = array[k];\n if (predicate.call(thisArg, kValue, k, array)) {\n return kValue;\n }\n k++;\n }\n // eslint-disable-next-line no-undefined\n return undefined;\n}\n","/* global $, Hls, __CLOUDFLARE_PAGES__ */\n/* eslint camelcase: 0 */\n\nimport { pack } from 'jsonpack';\nimport 'promise-polyfill/src/polyfill';\nimport { sortObject, copyTextToClipboard } from './demo-utils';\nimport { TimelineChart } from './chart/timeline-chart';\n\nconst CLOUDFLARE_PAGES = __CLOUDFLARE_PAGES__; // replaced in build\n\nconst STORAGE_KEYS = {\n Editor_Persistence: 'hlsjs:config-editor-persist',\n Hls_Config: 'hlsjs:config',\n volume: 'hlsjs:volume',\n demo_tabs: 'hlsjs:demo-tabs',\n};\n\nconst testStreams = require('../tests/test-streams');\nconst defaultTestStreamUrl = testStreams[Object.keys(testStreams)[0]].url;\nconst sourceURL = decodeURIComponent(getURLParam('src', defaultTestStreamUrl));\n\nlet demoConfig = getURLParam('demoConfig', null);\nif (demoConfig) {\n demoConfig = JSON.parse(atob(demoConfig));\n} else {\n demoConfig = {};\n}\n\nconst hlsjsDefaults = {\n debug: true,\n enableWorker: true,\n lowLatencyMode: true,\n backBufferLength: 60 * 1.5,\n};\n\nlet enableStreaming = getDemoConfigPropOrDefault('enableStreaming', true);\nlet autoRecoverError = getDemoConfigPropOrDefault('autoRecoverError', true);\nlet levelCapping = getDemoConfigPropOrDefault('levelCapping', -1);\nlet limitMetrics = getDemoConfigPropOrDefault('limitMetrics', -1);\nlet dumpfMP4 = getDemoConfigPropOrDefault('dumpfMP4', false);\nlet stopOnStall = getDemoConfigPropOrDefault('stopOnStall', false);\n\nlet bufferingIdx = -1;\nlet selectedTestStream = null;\n\nlet video = document.querySelector('#video');\nconst startTime = Date.now();\n\nlet lastSeekingIdx;\nlet lastStartPosition;\nlet lastDuration;\nlet lastAudioTrackSwitchingIdx;\nlet hls;\nlet url;\nlet events;\nlet stats;\nlet tracks;\nlet fmp4Data;\nlet configPersistenceEnabled = false;\nlet configEditor = null;\nlet chart;\nlet resizeAsyncCallbackId = -1;\n\nconst requestAnimationFrame = self.requestAnimationFrame || self.setTimeout;\nconst cancelAnimationFrame = self.cancelAnimationFrame || self.clearTimeout;\nconst resizeHandlers = [];\nconst resize = () => {\n cancelAnimationFrame(resizeAsyncCallbackId);\n resizeAsyncCallbackId = requestAnimationFrame(() => {\n resizeHandlers.forEach((handler) => {\n handler();\n });\n });\n};\n\nself.onresize = resize;\nif (self.screen && self.screen.orientation) {\n self.screen.orientation.onchange = resize;\n}\n\nconst playerResize = () => {\n const bounds = video.getBoundingClientRect();\n $('#currentSize').html(\n `${Math.round(bounds.width * 10) / 10} x ${\n Math.round(bounds.height * 10) / 10\n }`\n );\n if (video.videoWidth && video.videoHeight) {\n $('#currentResolution').html(`${video.videoWidth} x ${video.videoHeight}`);\n }\n};\nresizeHandlers.push(playerResize);\n\n$(document).ready(function () {\n setupConfigEditor();\n\n chart = setupTimelineChart();\n\n Object.keys(testStreams).forEach((key, index) => {\n const stream = testStreams[key];\n const option = new Option(stream.description, key);\n $('#streamSelect').append(option);\n if (stream.url === sourceURL) {\n document.querySelector('#streamSelect').selectedIndex = index + 1;\n }\n });\n\n const videoWidth = video.style.width;\n if (videoWidth) {\n $('#videoSize option').each(function (i, option) {\n if (option.value === videoWidth) {\n document.querySelector('#videoSize').selectedIndex = i;\n $('#bufferedCanvas').width(videoWidth);\n resize();\n return false;\n }\n });\n }\n\n $('#streamSelect').change(function () {\n const key = $('#streamSelect').val() || Object.keys(testStreams)[0];\n selectedTestStream = testStreams[key];\n const streamUrl = selectedTestStream.url;\n $('#streamURL').val(streamUrl);\n loadSelectedStream();\n });\n\n $('#streamURL').change(function () {\n selectedTestStream = null;\n loadSelectedStream();\n });\n\n $('#videoSize').change(function () {\n $('#video').width($('#videoSize').val());\n $('#bufferedCanvas').width($('#videoSize').val());\n checkBuffer();\n resize();\n });\n\n $('#enableStreaming').click(function () {\n enableStreaming = this.checked;\n loadSelectedStream();\n });\n\n $('#autoRecoverError').click(function () {\n autoRecoverError = this.checked;\n onDemoConfigChanged();\n });\n\n $('#stopOnStall').click(function () {\n stopOnStall = this.checked;\n onDemoConfigChanged();\n });\n\n $('#dumpfMP4').click(function () {\n dumpfMP4 = this.checked;\n $('.btn-dump').toggle(dumpfMP4);\n onDemoConfigChanged();\n });\n\n $('#limitMetrics').change(function () {\n limitMetrics = this.value;\n onDemoConfigChanged();\n });\n\n $('#levelCapping').change(function () {\n levelCapping = this.value;\n onDemoConfigChanged();\n });\n\n $('#limitMetrics').val(limitMetrics);\n $('#enableStreaming').prop('checked', enableStreaming);\n $('#autoRecoverError').prop('checked', autoRecoverError);\n $('#stopOnStall').prop('checked', stopOnStall);\n $('#dumpfMP4').prop('checked', dumpfMP4);\n $('#levelCapping').val(levelCapping);\n\n // If cloudflare pages build link to branch\n // If not a stable tag link to npm\n // otherwise link to github tag\n function getVersionLink(version) {\n const noneStable = version.includes('-');\n if (CLOUDFLARE_PAGES) {\n return `https://github.com/video-dev/hls.js/tree/${encodeURIComponent(\n CLOUDFLARE_PAGES.branch\n )}`;\n } else if (noneStable) {\n return `https://www.npmjs.com/package/hls.js/v/${encodeURIComponent(\n version\n )}`;\n } else {\n return `https://github.com/video-dev/hls.js/releases/tag/v${encodeURIComponent(\n version\n )}`;\n }\n }\n\n const version = Hls.version;\n if (version) {\n const $a = $('<a />')\n .attr('target', '_blank')\n .attr('rel', 'noopener noreferrer')\n .attr('href', getVersionLink(version))\n .text('v' + version);\n $('.title').append(' ').append($a);\n }\n\n $('#streamURL').val(sourceURL);\n\n const volumeSettings = JSON.parse(\n localStorage.getItem(STORAGE_KEYS.volume)\n ) || {\n volume: 0.05,\n muted: false,\n };\n video.volume = volumeSettings.volume;\n video.muted = volumeSettings.muted;\n\n $('.btn-dump').toggle(dumpfMP4);\n $('#toggleButtons').show();\n\n $('#metricsButtonWindow').toggle(self.windowSliding);\n $('#metricsButtonFixed').toggle(!self.windowSliding);\n\n loadSelectedStream();\n\n let tabIndexesCSV = localStorage.getItem(STORAGE_KEYS.demo_tabs);\n if (tabIndexesCSV === null) {\n tabIndexesCSV = '0,1,2';\n }\n if (tabIndexesCSV) {\n tabIndexesCSV.split(',').forEach((indexString) => {\n toggleTab($('.demo-tab-btn')[parseInt(indexString) || 0], true);\n });\n }\n $(self).on('popstate', function () {\n self.location.reload();\n });\n});\n\nfunction setupGlobals() {\n self.events = events = {\n url: url,\n t0: self.performance.now(),\n load: [],\n buffer: [],\n video: [],\n level: [],\n bitrate: [],\n };\n lastAudioTrackSwitchingIdx = undefined;\n lastSeekingIdx = undefined;\n bufferingIdx = -1;\n\n // actual values, only on window\n self.recoverDecodingErrorDate = null;\n self.recoverSwapAudioCodecDate = null;\n self.fmp4Data = fmp4Data = {\n audio: [],\n video: [],\n };\n self.onClickBufferedRange = onClickBufferedRange;\n self.updateLevelInfo = updateLevelInfo;\n self.onDemoConfigChanged = onDemoConfigChanged;\n self.createfMP4 = createfMP4;\n self.goToMetricsPermaLink = goToMetricsPermaLink;\n self.toggleTab = toggleTab;\n self.toggleTabClick = toggleTabClick;\n self.applyConfigEditorValue = applyConfigEditorValue;\n}\n\nfunction trimArray(target, limit) {\n if (limit < 0) {\n return;\n }\n\n while (target.length > limit) {\n target.shift();\n }\n}\n\nfunction trimEventHistory() {\n const x = limitMetrics;\n\n if (x < 0) {\n return;\n }\n\n trimArray(events.load, x);\n trimArray(events.buffer, x);\n trimArray(events.video, x);\n trimArray(events.level, x);\n trimArray(events.bitrate, x);\n}\n\nfunction loadSelectedStream() {\n $('#statusOut,#errorOut').empty();\n\n if (!Hls.isSupported()) {\n handleUnsupported();\n return;\n }\n\n url = $('#streamURL').val();\n\n // Check if the URL is valid to avoid XSS issue.\n if (url) {\n try {\n new URL(url);\n } catch (error) {\n $('#streamURL').val('');\n alert('Invalid URL');\n return false;\n }\n }\n\n setupGlobals();\n hideCanvas();\n\n if (hls) {\n hls.destroy();\n clearInterval(hls.bufferTimer);\n hls = null;\n }\n\n if (!enableStreaming) {\n logStatus('Streaming disabled');\n return;\n }\n\n logStatus('Loading ' + url);\n\n // Extending both a demo-specific config and the user config which can override all\n const hlsConfig = $.extend(\n {},\n hlsjsDefaults,\n getEditorValue({ parse: true })\n );\n\n if (selectedTestStream && selectedTestStream.config) {\n console.info(\n '[loadSelectedStream] extending hls config with stream-specific config: ',\n selectedTestStream.config\n );\n $.extend(hlsConfig, selectedTestStream.config);\n updateConfigEditorValue(hlsConfig);\n }\n\n onDemoConfigChanged(true);\n console.log('Using Hls.js config:', hlsConfig);\n\n self.hls = hls = new Hls(hlsConfig);\n\n logStatus('Loading manifest and attaching video element...');\n\n const expiredTracks = [].filter.call(\n video.textTracks,\n (track) => track.kind !== 'metadata'\n );\n if (expiredTracks.length) {\n const kinds = expiredTracks\n .map((track) => track.kind)\n .filter((kind, index, self) => self.indexOf(kind) === index);\n logStatus(\n `Replacing video element to remove ${kinds.join(' and ')} text tracks`\n );\n const videoWithExpiredTextTracks = video;\n video = videoWithExpiredTextTracks.cloneNode(false);\n video.removeAttribute('src');\n video.volume = videoWithExpiredTextTracks.volume;\n video.muted = videoWithExpiredTextTracks.muted;\n videoWithExpiredTextTracks.parentNode.insertBefore(\n video,\n videoWithExpiredTextTracks\n );\n videoWithExpiredTextTracks.parentNode.removeChild(\n videoWithExpiredTextTracks\n );\n }\n addChartEventListeners(hls);\n addVideoEventListeners(video);\n\n hls.loadSource(url);\n hls.autoLevelCapping = levelCapping;\n hls.attachMedia(video);\n\n hls.on(Hls.Events.MEDIA_ATTACHED, function () {\n logStatus('Media element attached');\n bufferingIdx = -1;\n events.video.push({\n time: self.performance.now() - events.t0,\n type: 'Media attached',\n });\n trimEventHistory();\n });\n\n hls.on(Hls.Events.MEDIA_DETACHED, function () {\n logStatus('Media element detached');\n clearInterval(hls.bufferTimer);\n bufferingIdx = -1;\n tracks = [];\n events.video.push({\n time: self.performance.now() - events.t0,\n type: 'Media detached',\n });\n trimEventHistory();\n });\n\n hls.on(Hls.Events.DESTROYING, function () {\n clearInterval(hls.bufferTimer);\n });\n hls.on(Hls.Events.BUFFER_RESET, function () {\n clearInterval(hls.bufferTimer);\n });\n\n hls.on(Hls.Events.FRAG_PARSING_INIT_SEGMENT, function (eventName, data) {\n showCanvas();\n events.video.push({\n time: self.performance.now() - events.t0,\n type: data.id + ' init segment',\n });\n trimEventHistory();\n });\n\n hls.on(Hls.Events.FRAG_PARSING_METADATA, function (eventName, data) {\n // console.log(\"Id3 samples \", data.samples);\n });\n\n hls.on(Hls.Events.LEVEL_SWITCHING, function (eventName, data) {\n events.level.push({\n time: self.performance.now() - events.t0,\n id: data.level,\n bitrate: Math.round(hls.levels[data.level].bitrate / 1000),\n });\n trimEventHistory();\n updateLevelInfo();\n });\n\n hls.on(Hls.Events.MANIFEST_PARSED, function (eventName, data) {\n events.load.push({\n type: 'manifest',\n name: '',\n start: 0,\n end: data.levels.length,\n time: data.stats.loading.start - events.t0,\n latency: data.stats.loading.first - data.stats.loading.start,\n load: data.stats.loading.end - data.stats.loading.first,\n duration: data.stats.loading.end - data.stats.loading.first,\n });\n trimEventHistory();\n self.refreshCanvas();\n });\n\n hls.on(Hls.Events.MANIFEST_PARSED, function (eventName, data) {\n logStatus(`${hls.levels.length} quality levels found`);\n logStatus('Manifest successfully loaded');\n stats = {\n levelNb: data.levels.length,\n levelParsed: 0,\n };\n trimEventHistory();\n updateLevelInfo();\n });\n\n hls.on(Hls.Events.AUDIO_TRACKS_UPDATED, function (eventName, data) {\n logStatus('No of audio tracks found: ' + data.audioTracks.length);\n updateAudioTrackInfo();\n });\n\n hls.on(Hls.Events.AUDIO_TRACK_SWITCHING, function (eventName, data) {\n logStatus('Audio track switching...');\n updateAudioTrackInfo();\n events.video.push({\n time: self.performance.now() - events.t0,\n type: 'audio switching',\n name: '@' + data.id,\n });\n trimEventHistory();\n lastAudioTrackSwitchingIdx = events.video.length - 1;\n });\n\n hls.on(Hls.Events.AUDIO_TRACK_SWITCHED, function (eventName, data) {\n logStatus('Audio track switched');\n updateAudioTrackInfo();\n const event = {\n time: self.performance.now() - events.t0,\n type: 'audio switched',\n name: '@' + data.id,\n };\n if (lastAudioTrackSwitchingIdx !== undefined) {\n events.video[lastAudioTrackSwitchingIdx].duration =\n event.time - events.video[lastAudioTrackSwitchingIdx].time;\n lastAudioTrackSwitchingIdx = undefined;\n }\n events.video.push(event);\n trimEventHistory();\n });\n\n hls.on(Hls.Events.LEVEL_LOADED, function (eventName, data) {\n events.isLive = data.details.live;\n const event = {\n type: 'level',\n id: data.level,\n start: data.details.startSN,\n end: data.details.endSN,\n time: data.stats.loading.start - events.t0,\n latency: data.stats.loading.first - data.stats.loading.start,\n load: data.stats.loading.end - data.stats.loading.first,\n parsing: data.stats.parsing.end - data.stats.loading.end,\n duration: data.stats.loading.end - data.stats.loading.first,\n };\n\n const parsingDuration = data.stats.parsing.end - data.stats.loading.end;\n if (stats.levelParsed) {\n this.sumLevelParsingMs += parsingDuration;\n } else {\n this.sumLevelParsingMs = parsingDuration;\n }\n\n stats.levelParsed++;\n stats.levelParsingUs = Math.round(\n (1000 * this.sumLevelParsingMs) / stats.levelParsed\n );\n\n // console.log('parsing level duration :' + stats.levelParsingUs + 'us,count:' + stats.levelParsed);\n\n events.load.push(event);\n trimEventHistory();\n self.refreshCanvas();\n });\n\n hls.on(Hls.Events.AUDIO_TRACK_LOADED, function (eventName, data) {\n events.isLive = data.details.live;\n const event = {\n type: 'audio track',\n id: data.id,\n start: data.details.startSN,\n end: data.details.endSN,\n time: data.stats.loading.start - events.t0,\n latency: data.stats.loading.first - data.stats.loading.start,\n load: data.stats.loading.end - data.stats.loading.first,\n parsing: data.stats.parsing.end - data.stats.loading.end,\n duration: data.stats.loading.end - data.stats.loading.first,\n };\n events.load.push(event);\n trimEventHistory();\n self.refreshCanvas();\n });\n\n hls.on(Hls.Events.FRAG_BUFFERED, function (eventName, data) {\n const stats =\n data.part && data.part.stats && data.part.stats.loaded\n ? data.part.stats\n : data.frag.stats;\n if (data.stats.aborted) {\n console.assert('Aborted request being buffered.', data);\n return;\n }\n\n const event = {\n type: data.frag.type + (data.part ? ' part' : ' fragment'),\n id: data.frag.level,\n id2: data.frag.sn,\n id3: data.part ? data.part.index : undefined,\n time: data.stats.loading.start - events.t0,\n latency: data.stats.loading.first - data.stats.loading.start,\n load: data.stats.loading.end - data.stats.loading.first,\n parsing: data.stats.parsing.end - data.stats.loading.end,\n buffer: data.stats.buffering.end - data.stats.parsing.end,\n duration: data.stats.buffering.end - data.stats.loading.first,\n bw: Math.round(\n (8 * data.stats.total) /\n (data.stats.buffering.end - data.stats.loading.start)\n ), // bandwidth of this fragment\n ewma: Math.round(hls.bandwidthEstimate / 1000), // estimated bandwidth\n size: data.stats.total,\n };\n events.load.push(event);\n events.bitrate.push({\n time: self.performance.now() - events.t0,\n bitrate: event.bw,\n ewma: event.ewma,\n duration: data.frag.duration,\n level: event.id,\n });\n if (events.buffer.length === 0) {\n events.buffer.push({\n time: 0,\n buffer: 0,\n pos: 0,\n });\n }\n clearInterval(hls.bufferTimer);\n hls.bufferTimer = self.setInterval(checkBuffer, 100);\n trimEventHistory();\n self.refreshCanvas();\n updateLevelInfo();\n\n const latency = data.stats.loading.first - data.stats.loading.start;\n const parsing = data.stats.parsing.end - data.stats.loading.end;\n const process = data.stats.buffering.end - data.stats.loading.start;\n const bitrate = Math.round(\n (8 * data.stats.total) /\n (data.stats.buffering.end - data.stats.loading.first)\n );\n\n if (stats.fragBuffered) {\n stats.fragMinLatency = Math.min(stats.fragMinLatency, latency);\n stats.fragMaxLatency = Math.max(stats.fragMaxLatency, latency);\n stats.fragMinProcess = Math.min(stats.fragMinProcess, process);\n stats.fragMaxProcess = Math.max(stats.fragMaxProcess, process);\n stats.fragMinKbps = Math.min(stats.fragMinKbps, bitrate);\n stats.fragMaxKbps = Math.max(stats.fragMaxKbps, bitrate);\n stats.autoLevelCappingMin = Math.min(\n stats.autoLevelCappingMin,\n hls.autoLevelCapping\n );\n stats.autoLevelCappingMax = Math.max(\n stats.autoLevelCappingMax,\n hls.autoLevelCapping\n );\n stats.fragBuffered++;\n } else {\n stats.fragMinLatency = stats.fragMaxLatency = latency;\n stats.fragMinProcess = stats.fragMaxProcess = process;\n stats.fragMinKbps = stats.fragMaxKbps = bitrate;\n stats.fragBuffered = 1;\n stats.fragBufferedBytes = 0;\n stats.autoLevelCappingMin = stats.autoLevelCappingMax =\n hls.autoLevelCapping;\n this.sumLatency = 0;\n this.sumKbps = 0;\n this.sumProcess = 0;\n this.sumParsing = 0;\n }\n stats.fraglastLatency = latency;\n this.sumLatency += latency;\n stats.fragAvgLatency = Math.round(this.sumLatency / stats.fragBuffered);\n stats.fragLastProcess = process;\n this.sumProcess += process;\n this.sumParsing += parsing;\n stats.fragAvgProcess = Math.round(this.sumProcess / stats.fragBuffered);\n stats.fragLastKbps = bitrate;\n this.sumKbps += bitrate;\n stats.fragAvgKbps = Math.round(this.sumKbps / stats.fragBuffered);\n stats.fragBufferedBytes += data.stats.total;\n stats.fragparsingKbps = Math.round(\n (8 * stats.fragBufferedBytes) / this.sumParsing\n );\n stats.fragparsingMs = Math.round(this.sumParsing);\n stats.autoLevelCappingLast = hls.autoLevelCapping;\n });\n\n hls.on(Hls.Events.LEVEL_SWITCHED, function (eventName, data) {\n const event = {\n time: self.performance.now() - events.t0,\n type: 'level switched',\n name: data.level,\n };\n events.video.push(event);\n trimEventHistory();\n self.refreshCanvas();\n updateLevelInfo();\n });\n\n hls.on(Hls.Events.FRAG_CHANGED, function (eventName, data) {\n const event = {\n time: self.performance.now() - events.t0,\n type: 'frag changed',\n name: data.frag.sn + ' @ ' + data.frag.level,\n };\n events.video.push(event);\n trimEventHistory();\n self.refreshCanvas();\n updateLevelInfo();\n stats.tagList = data.frag.tagList;\n\n const level = data.frag.level;\n const autoLevel = hls.autoLevelEnabled;\n if (stats.levelStart === undefined) {\n stats.levelStart = level;\n }\n\n stats.fragProgramDateTime = data.frag.programDateTime;\n stats.fragStart = data.frag.start;\n\n if (autoLevel) {\n if (stats.fragChangedAuto) {\n stats.autoLevelMin = Math.min(stats.autoLevelMin, level);\n stats.autoLevelMax = Math.max(stats.autoLevelMax, level);\n stats.fragChangedAuto++;\n if (this.levelLastAuto && level !== stats.autoLevelLast) {\n stats.autoLevelSwitch++;\n }\n } else {\n stats.autoLevelMin = stats.autoLevelMax = level;\n stats.autoLevelSwitch = 0;\n stats.fragChangedAuto = 1;\n this.sumAutoLevel = 0;\n }\n this.sumAutoLevel += level;\n stats.autoLevelAvg =\n Math.round((1000 * this.sumAutoLevel) / stats.fragChangedAuto) / 1000;\n stats.autoLevelLast = level;\n } else {\n if (stats.fragChangedManual) {\n stats.manualLevelMin = Math.min(stats.manualLevelMin, level);\n stats.manualLevelMax = Math.max(stats.manualLevelMax, level);\n stats.fragChangedManual++;\n if (!this.levelLastAuto && level !== stats.manualLevelLast) {\n stats.manualLevelSwitch++;\n }\n } else {\n stats.manualLevelMin = stats.manualLevelMax = level;\n stats.manualLevelSwitch = 0;\n stats.fragChangedManual = 1;\n }\n stats.manualLevelLast = level;\n }\n this.levelLastAuto = autoLevel;\n });\n\n hls.on(Hls.Events.FRAG_LOAD_EMERGENCY_ABORTED, function (eventName, data) {\n if (stats) {\n if (stats.fragLoadEmergencyAborted === undefined) {\n stats.fragLoadEmergencyAborted = 1;\n } else {\n stats.fragLoadEmergencyAborted++;\n }\n }\n });\n\n hls.on(Hls.Events.FRAG_DECRYPTED, function (eventName, data) {\n if (!stats.fragDecrypted) {\n stats.fragDecrypted = 0;\n this.totalDecryptTime = 0;\n stats.fragAvgDecryptTime = 0;\n }\n stats.fragDecrypted++;\n this.totalDecryptTime += data.stats.tdecrypt - data.stats.tstart;\n stats.fragAvgDecryptTime = this.totalDecryptTime / stats.fragDecrypted;\n });\n\n hls.on(Hls.Events.ERROR, function (eventName, data) {\n console.warn('Error event:', data);\n switch (data.details) {\n case Hls.ErrorDetails.MANIFEST_LOAD_ERROR:\n try {\n $('#errorOut').html(\n 'Cannot load <a href=\"' +\n data.context.url +\n '\">' +\n url +\n '</a><br>HTTP response code:' +\n data.response.code +\n ' <br>' +\n data.response.text\n );\n if (data.response.code === 0) {\n $('#errorOut').append(\n 'This might be a CORS issue, consider installing <a href=\"https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi\">Allow-Control-Allow-Origin</a> Chrome Extension'\n );\n }\n } catch (err) {\n $('#errorOut').html(\n 'Cannot load <a href=\"' +\n data.context.url +\n '\">' +\n url +\n '</a><br>Response body: ' +\n data.response.text\n );\n }\n break;\n case Hls.ErrorDetails.MANIFEST_LOAD_TIMEOUT:\n logError('Timeout while loading manifest');\n break;\n case Hls.ErrorDetails.MANIFEST_PARSING_ERROR:\n logError('Error while parsing manifest:' + data.reason);\n break;\n case Hls.ErrorDetails.LEVEL_EMPTY_ERROR:\n logError(\n 'Loaded level contains no fragments ' + data.level + ' ' + data.url\n );\n // handleLevelError demonstrates how to remove a level that errors followed by a downswitch\n // handleLevelError(data);\n break;\n case Hls.ErrorDetails.LEVEL_LOAD_ERROR:\n logError(\n 'Error while loading level playlist ' +\n data.context.level +\n ' ' +\n data.url\n );\n // handleLevelError demonstrates how to remove a level that errors followed by a downswitch\n // handleLevelError(data);\n break;\n case Hls.ErrorDetails.LEVEL_LOAD_TIMEOUT:\n logError(\n 'Timeout while loading level playlist ' +\n data.context.level +\n ' ' +\n data.url\n );\n // handleLevelError demonstrates how to remove a level that errors followed by a downswitch\n // handleLevelError(data);\n break;\n case Hls.ErrorDetails.LEVEL_SWITCH_ERROR:\n logError('Error while trying to switch to level ' + data.level);\n break;\n case Hls.ErrorDetails.FRAG_LOAD_ERROR:\n logError('Error while loading fragment ' + data.frag.url);\n break;\n case Hls.ErrorDetails.FRAG_LOAD_TIMEOUT:\n logError('Timeout while loading fragment ' + data.frag.url);\n break;\n case Hls.ErrorDetails.FRAG_LOOP_LOADING_ERROR:\n logError('Fragment-loop loading error');\n break;\n case Hls.ErrorDetails.FRAG_DECRYPT_ERROR:\n logError('Decrypting error:' + data.reason);\n break;\n case Hls.ErrorDetails.FRAG_PARSING_ERROR:\n logError('Parsing error:' + data.reason);\n break;\n case Hls.ErrorDetails.KEY_LOAD_ERROR:\n logError('Error while loading key ' + data.frag.decryptdata.uri);\n break;\n case Hls.ErrorDetails.KEY_LOAD_TIMEOUT:\n logError('Timeout while loading key ' + data.frag.decryptdata.uri);\n break;\n case Hls.ErrorDetails.BUFFER_APPEND_ERROR:\n logError('Buffer append error');\n break;\n case Hls.ErrorDetails.BUFFER_ADD_CODEC_ERROR:\n logError(\n 'Buffer add codec error for ' +\n data.mimeType +\n ':' +\n data.error.message\n );\n break;\n case Hls.ErrorDetails.BUFFER_APPENDING_ERROR:\n logError('Buffer appending error');\n break;\n case Hls.ErrorDetails.BUFFER_STALLED_ERROR:\n logError('Buffer stalled error');\n if (stopOnStall) {\n hls.stopLoad();\n video.pause();\n }\n break;\n default:\n break;\n }\n\n if (data.fatal) {\n console.error(`Fatal error : ${data.details}`);\n switch (data.type) {\n case Hls.ErrorTypes.MEDIA_ERROR:\n logError(`A media error occurred: ${data.details}`);\n handleMediaError();\n break;\n case Hls.ErrorTypes.NETWORK_ERROR:\n logError(`A network error occurred: ${data.details}`);\n break;\n default:\n logError(`An unrecoverable error occurred: ${data.details}`);\n hls.destroy();\n break;\n }\n }\n if (!stats) {\n stats = {};\n }\n\n // track all errors independently\n if (stats[data.details] === undefined) {\n stats[data.details] = 1;\n } else {\n stats[data.details] += 1;\n }\n\n // track fatal error\n if (data.fatal) {\n if (stats.fatalError === undefined) {\n stats.fatalError = 1;\n } else {\n stats.fatalError += 1;\n }\n }\n $('#statisticsOut').text(JSON.stringify(sortObject(stats), null, '\\t'));\n });\n\n hls.on(Hls.Events.BUFFER_CREATED, function (eventName, data) {\n tracks = data.tracks;\n });\n\n hls.on(Hls.Events.BUFFER_APPENDING, function (eventName, data) {\n if (dumpfMP4) {\n fmp4Data[data.type].push(data.data);\n }\n });\n\n hls.on(Hls.Events.FPS_DROP, function (eventName, data) {\n const event = {\n time: self.performance.now() - events.t0,\n type: 'frame drop',\n name: data.currentDropped + '/' + data.currentDecoded,\n };\n events.video.push(event);\n trimEventHistory();\n if (stats) {\n if (stats.fpsDropEvent === undefined) {\n stats.fpsDropEvent = 1;\n } else {\n stats.fpsDropEvent++;\n }\n\n stats.fpsTotalDroppedFrames = data.totalDroppedFrames;\n }\n });\n}\n\nfunction addVideoEventListeners(video) {\n video.removeEventListener('resize', handleVideoEvent);\n video.removeEventListener('seeking', handleVideoEvent);\n video.removeEventListener('seeked', handleVideoEvent);\n video.removeEventListener('pause', handleVideoEvent);\n video.removeEventListener('play', handleVideoEvent);\n video.removeEventListener('canplay', handleVideoEvent);\n video.removeEventListener('canplaythrough', handleVideoEvent);\n video.removeEventListener('ended', handleVideoEvent);\n video.removeEventListener('playing', handleVideoEvent);\n video.removeEventListener('error', handleVideoEvent);\n video.removeEventListener('loadedmetadata', handleVideoEvent);\n video.removeEventListener('loadeddata', handleVideoEvent);\n video.removeEventListener('durationchange', handleVideoEvent);\n video.removeEventListener('volumechange', handleVolumeEvent);\n video.addEventListener('resize', handleVideoEvent);\n video.addEventListener('seeking', handleVideoEvent);\n video.addEventListener('seeked', handleVideoEvent);\n video.addEventListener('pause', handleVideoEvent);\n video.addEventListener('play', handleVideoEvent);\n video.addEventListener('canplay', handleVideoEvent);\n video.addEventListener('canplaythrough', handleVideoEvent);\n video.addEventListener('ended', handleVideoEvent);\n video.addEventListener('playing', handleVideoEvent);\n video.addEventListener('error', handleVideoEvent);\n video.addEventListener('loadedmetadata', handleVideoEvent);\n video.addEventListener('loadeddata', handleVideoEvent);\n video.addEventListener('durationchange', handleVideoEvent);\n video.addEventListener('volumechange', handleVolumeEvent);\n}\n\nfunction handleUnsupported() {\n if (navigator.userAgent.toLowerCase().indexOf('firefox') !== -1) {\n logStatus(\n 'You are using Firefox, it looks like MediaSource is not enabled,<br>please ensure the following keys are set appropriately in <b>about:config</b><br>media.mediasource.enabled=true<br>media.mediasource.mp4.enabled=true<br><b>media.mediasource.whitelist=false</b>'\n );\n } else {\n logStatus(\n 'Your Browser does not support MediaSourceExtension / MP4 mediasource'\n );\n }\n}\n\nfunction handleVideoEvent(evt) {\n let data = '';\n switch (evt.type) {\n case 'durationchange':\n if (evt.target.duration - lastDuration <= 0.5) {\n // some browsers report several duration change events with almost the same value ... avoid spamming video events\n return;\n }\n lastDuration = evt.target.duration;\n data = Math.round(evt.target.duration * 1000);\n break;\n case 'resize':\n data = evt.target.videoWidth + '/' + evt.target.videoHeight;\n playerResize();\n break;\n case 'loadedmetadata':\n case 'loadeddata':\n case 'canplay':\n case 'canplaythrough':\n case 'ended':\n case 'seeking':\n case 'seeked':\n case 'play':\n case 'playing':\n lastStartPosition = evt.target.currentTime;\n case 'pause':\n case 'waiting':\n case 'stalled':\n case 'error':\n data = Math.round(evt.target.currentTime * 1000);\n if (evt.type === 'error') {\n let errorTxt;\n const mediaError = evt.currentTarget.error;\n switch (mediaError.code) {\n case mediaError.MEDIA_ERR_ABORTED:\n errorTxt = 'You aborted the video playback';\n break;\n case mediaError.MEDIA_ERR_DECODE:\n errorTxt =\n 'The video playback was aborted due to a corruption problem or because the video used features your browser did not support';\n handleMediaError();\n break;\n case mediaError.MEDIA_ERR_NETWORK:\n errorTxt =\n 'A network error caused the video download to fail part-way';\n break;\n case mediaError.MEDIA_ERR_SRC_NOT_SUPPORTED:\n errorTxt =\n 'The video could not be loaded, either because the server or network failed or because the format is not supported';\n break;\n }\n\n if (mediaError.message) {\n errorTxt += ' - ' + mediaError.message;\n }\n\n logStatus(errorTxt);\n console.error(errorTxt);\n }\n break;\n default:\n break;\n }\n\n const event = {\n time: self.performance.now() - events.t0,\n type: evt.type,\n name: data,\n };\n\n events.video.push(event);\n if (evt.type === 'seeking') {\n lastSeekingIdx = events.video.length - 1;\n }\n\n if (evt.type === 'seeked') {\n events.video[lastSeekingIdx].duration =\n event.time - events.video[lastSeekingIdx].time;\n }\n\n trimEventHistory();\n}\n\nfunction handleVolumeEvent() {\n localStorage.setItem(\n STORAGE_KEYS.volume,\n JSON.stringify({\n muted: video.muted,\n volume: video.volume,\n })\n );\n}\n\nfunction handleLevelError(data) {\n const levelObj = data.context || data;\n hls.removeLevel(levelObj.level, levelObj.urlId || 0);\n if (!hls.levels.length) {\n logError('All levels have been removed');\n hls.destroy();\n return;\n }\n // Trigger an immediate downswitch to the first level\n // This is to handle the case where we start at an empty level, where switching to auto causes hlsjs to stall\n hls.currentLevel = 0;\n // Set the quality back to auto so that we return to optimal quality\n hls.currentLevel = -1;\n}\n\nfunction handleMediaError() {\n if (autoRecoverError) {\n const now = self.performance.now();\n if (\n !self.recoverDecodingErrorDate ||\n now - self.recoverDecodingErrorDate > 3000\n ) {\n self.recoverDecodingErrorDate = self.performance.now();\n $('#statusOut').append(', trying to recover media error.');\n hls.recoverMediaError();\n } else {\n if (\n !self.recoverSwapAudioCodecDate ||\n now - self.recoverSwapAudioCodecDate > 3000\n ) {\n self.recoverSwapAudioCodecDate = self.performance.now();\n $('#statusOut').append(\n ', trying to swap audio codec and recover media error.'\n );\n hls.swapAudioCodec();\n hls.recoverMediaError();\n } else {\n $('#statusOut').append(\n ', cannot recover. Last media error recovery failed.'\n );\n }\n }\n }\n}\n\nfunction timeRangesToString(r) {\n let log = '';\n for (let i = 0; i < r.length; i++) {\n log += '[' + r.start(i) + ', ' + r.end(i) + ']';\n log += ' ';\n }\n return log;\n}\n\nfunction checkBuffer() {\n const canvas = document.querySelector('#bufferedCanvas');\n const ctx = canvas.getContext('2d');\n const r = video.buffered;\n const seekableEnd = getSeekableEnd();\n let bufferingDuration;\n if (r) {\n ctx.fillStyle = 'black';\n if (!canvas.width || canvas.width !== video.clientWidth) {\n canvas.width = video.clientWidth;\n }\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n const pos = video.currentTime;\n let bufferLen = 0;\n ctx.fillStyle = 'gray';\n for (let i = 0; i < r.length; i++) {\n const start = (r.start(i) / seekableEnd) * canvas.width;\n const end = (r.end(i) / seekableEnd) * canvas.width;\n ctx.fillRect(start, 2, Math.max(2, end - start), 11);\n if (pos >= r.start(i) && pos < r.end(i)) {\n // play position is inside this buffer TimeRange, retrieve end of buffer position and buffer length\n bufferLen = r.end(i) - pos;\n }\n }\n // check if we are in buffering / or playback ended state\n if (\n bufferLen <= 0.1 &&\n video.paused === false &&\n pos - lastStartPosition > 0.5\n ) {\n if (lastDuration - pos <= 0.5 && events.isLive === false) {\n // don't create buffering event if we are at the end of the playlist, don't report ended for live playlist\n } else {\n // we are not at the end of the playlist ... real buffering\n if (bufferingIdx !== -1) {\n bufferingDuration =\n self.performance.now() -\n events.t0 -\n events.video[bufferingIdx].time;\n events.video[bufferingIdx].duration = bufferingDuration;\n events.video[bufferingIdx].name = bufferingDuration;\n } else {\n events.video.push({\n type: 'buffering',\n time: self.performance.now() - events.t0,\n });\n trimEventHistory();\n // we are in buffering state\n bufferingIdx = events.video.length - 1;\n }\n }\n }\n\n if (bufferLen > 0.1 && bufferingIdx !== -1) {\n bufferingDuration =\n self.performance.now() - events.t0 - events.video[bufferingIdx].time;\n events.video[bufferingIdx].duration = bufferingDuration;\n events.video[bufferingIdx].name = bufferingDuration;\n // we are out of buffering state\n bufferingIdx = -1;\n }\n\n // update buffer/position for current Time\n const event = {\n time: self.performance.now() - events.t0,\n buffer: Math.round(bufferLen * 1000),\n pos: Math.round(pos * 1000),\n };\n const bufEvents = events.buffer;\n const bufEventLen = bufEvents.length;\n if (bufEventLen > 1) {\n const event0 = bufEvents[bufEventLen - 2];\n const event1 = bufEvents[bufEventLen - 1];\n const slopeBuf0 =\n (event0.buffer - event1.buffer) / (event0.time - event1.time);\n const slopeBuf1 =\n (event1.buffer - event.buffer) / (event1.time - event.time);\n\n const slopePos0 = (event0.pos - event1.pos) / (event0.time - event1.time);\n const slopePos1 = (event1.pos - event.pos) / (event1.time - event.time);\n // compute slopes. if less than 30% difference, remove event1\n if (\n (slopeBuf0 === slopeBuf1 ||\n Math.abs(slopeBuf0 / slopeBuf1 - 1) <= 0.3) &&\n (slopePos0 === slopePos1 || Math.abs(slopePos0 / slopePos1 - 1) <= 0.3)\n ) {\n bufEvents.pop();\n }\n }\n events.buffer.push(event);\n trimEventHistory();\n self.refreshCanvas();\n\n if ($('#statsDisplayTab').is(':visible')) {\n let log = `Duration: ${video.duration}\\nBuffered: ${timeRangesToString(\n video.buffered\n )}\\nSeekable: ${timeRangesToString(\n video.seekable\n )}\\nPlayed: ${timeRangesToString(video.played)}\\n`;\n if (hls.media) {\n for (const type in tracks) {\n log += `Buffer for ${type} contains:${timeRangesToString(\n tracks[type].buffer.buffered\n )}\\n`;\n }\n const videoPlaybackQuality = video.getVideoPlaybackQuality;\n if (\n videoPlaybackQuality &&\n typeof videoPlaybackQuality === typeof Function\n ) {\n log += `Dropped frames: ${\n video.getVideoPlaybackQuality().droppedVideoFrames\n }\\n`;\n log += `Corrupted frames: ${\n video.getVideoPlaybackQuality().corruptedVideoFrames\n }\\n`;\n } else if (video.webkitDroppedFrameCount) {\n log += `Dropped frames: ${video.webkitDroppedFrameCount}\\n`;\n }\n }\n log += `TTFB Estimate: ${hls.ttfbEstimate.toFixed(3)}\\n`;\n log += `Bandwidth Estimate: ${hls.bandwidthEstimate.toFixed(3)}\\n`;\n if (events.isLive) {\n log +=\n 'Live Stats:\\n' +\n ` Max Latency: ${hls.maxLatency}\\n` +\n ` Target Latency: ${hls.targetLatency.toFixed(3)}\\n` +\n ` Latency: ${hls.latency.toFixed(3)}\\n` +\n ` Drift: ${hls.drift.toFixed(3)} (edge advance rate)\\n` +\n ` Edge Stall: ${hls.latencyController.edgeStalled.toFixed(\n 3\n )} (playlist refresh over target duration/part)\\n` +\n ` Playback rate: ${video.playbackRate.toFixed(2)}\\n`;\n if (stats.fragProgramDateTime) {\n const currentPDT =\n stats.fragProgramDateTime +\n (video.currentTime - stats.fragStart) * 1000;\n log += ` Program Date Time: ${new Date(currentPDT).toISOString()}`;\n const pdtLatency = (Date.now() - currentPDT) / 1000;\n if (pdtLatency > 0) {\n log += ` (${pdtLatency.toFixed(3)} seconds ago)`;\n }\n }\n }\n\n $('#bufferedOut').text(log);\n $('#statisticsOut').text(JSON.stringify(sortObject(stats), null, '\\t'));\n }\n\n ctx.fillStyle = 'blue';\n const x = (video.currentTime / seekableEnd) * canvas.width;\n ctx.fillRect(x, 0, 2, 15);\n } else if (ctx.fillStyle !== 'black') {\n ctx.fillStyle = 'black';\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n }\n}\n\nfunction showCanvas() {\n self.showMetrics();\n $('#bufferedOut').show();\n $('#bufferedCanvas').show();\n}\n\nfunction hideCanvas() {\n self.hideMetrics();\n $('#bufferedOut').hide();\n $('#bufferedCanvas').hide();\n}\n\nfunction getMetrics() {\n const json = JSON.stringify(events);\n const jsonpacked = pack(json);\n // console.log('packing JSON from ' + json.length + ' to ' + jsonpacked.length + ' bytes');\n return btoa(jsonpacked);\n}\n\nself.copyMetricsToClipBoard = function () {\n copyTextToClipboard(getMetrics());\n};\n\nself.goToMetrics = function () {\n let url = document.URL;\n url = url.slice(0, url.lastIndexOf('/') + 1) + 'metrics.html';\n self.open(url, '_blank');\n};\n\nfunction goToMetricsPermaLink() {\n let url = document.URL;\n const b64 = getMetrics();\n url = url.slice(0, url.lastIndexOf('/') + 1) + 'metrics.html#data=' + b64;\n self.open(url, '_blank');\n}\n\nfunction onClickBufferedRange(event) {\n const canvas = document.querySelector('#bufferedCanvas');\n const target =\n ((event.clientX - canvas.offsetLeft) / canvas.width) * getSeekableEnd();\n video.currentTime = target;\n}\n\nfunction getSeekableEnd() {\n if (isFinite(video.duration)) {\n return video.duration;\n }\n if (video.seekable.length) {\n return video.seekable.end(video.seekable.length - 1);\n }\n return 0;\n}\n\nfunction getLevelButtonHtml(key, levels, onclickReplace, autoEnabled) {\n const onclickAuto = `${key}=-1`.replace(/^(\\w+)=([^=]+)$/, onclickReplace);\n const codecs = levels.reduce((uniqueCodecs, level) => {\n const levelCodecs = codecs2label(level.attrs.CODECS);\n if (levelCodecs && uniqueCodecs.indexOf(levelCodecs) === -1) {\n uniqueCodecs.push(levelCodecs);\n }\n return uniqueCodecs;\n }, []);\n return (\n `<button type=\"button\" class=\"btn btn-sm ${\n autoEnabled ? 'btn-primary' : 'btn-success'\n }\" onclick=\"${onclickAuto}\">auto</button>` +\n levels\n .map((level, i) => {\n const enabled = hls[key] === i;\n const onclick = `${key}=${i}`.replace(/^(\\w+)=(\\w+)$/, onclickReplace);\n const label = level2label(levels[i], i, codecs);\n return `<button type=\"button\" class=\"btn btn-sm ${\n enabled ? 'btn-primary' : 'btn-success'\n }\" onclick=\"${onclick}\">${label}</button>`;\n })\n .join('')\n );\n}\n\nfunction updateLevelInfo() {\n const levels = hls.levels;\n if (!levels) {\n return;\n }\n\n const htmlCurrentLevel = getLevelButtonHtml(\n 'currentLevel',\n levels,\n 'hls.$1=$2',\n hls.autoLevelEnabled\n );\n const htmlNextLevel = getLevelButtonHtml(\n 'nextLevel',\n levels,\n 'hls.$1=$2',\n hls.autoLevelEnabled\n );\n const htmlLoadLevel = getLevelButtonHtml(\n 'loadLevel',\n levels,\n 'hls.$1=$2',\n hls.autoLevelEnabled\n );\n const htmlCapLevel = getLevelButtonHtml(\n 'autoLevelCapping',\n levels,\n 'levelCapping=hls.$1=$2;updateLevelInfo();onDemoConfigChanged();',\n hls.autoLevelCapping === -1\n );\n\n if ($('#currentLevelControl').html() !== htmlCurrentLevel) {\n $('#currentLevelControl').html(htmlCurrentLevel);\n }\n\n if ($('#nextLevelControl').html() !== htmlNextLevel) {\n $('#nextLevelControl').html(htmlNextLevel);\n }\n\n if ($('#loadLevelControl').html() !== htmlLoadLevel) {\n $('#loadLevelControl').html(htmlLoadLevel);\n }\n\n if ($('#levelCappingControl').html() !== htmlCapLevel) {\n $('#levelCappingControl').html(htmlCapLevel);\n }\n}\n\nfunction updateAudioTrackInfo() {\n const buttonTemplate = '<button type=\"button\" class=\"btn btn-sm ';\n const buttonEnabled = 'btn-primary\" ';\n const buttonDisabled = 'btn-success\" ';\n let html1 = '';\n const audioTrackId = hls.audioTrack;\n const len = hls.audioTracks.length;\n const track = hls.audioTracks[audioTrackId];\n\n for (let i = 0; i < len; i++) {\n html1 += buttonTemplate;\n if (audioTrackId === i) {\n html1 += buttonEnabled;\n } else {\n html1 += buttonDisabled;\n }\n\n html1 +=\n 'onclick=\"hls.audioTrack=' +\n i +\n '\">' +\n hls.audioTracks[i].name +\n '</button>';\n }\n\n $('#audioTrackLabel').text(\n track ? track.lang || track.name : 'None selected'\n );\n $('#audioTrackControl').html(html1);\n}\n\nfunction codecs2label(levelCodecs) {\n if (levelCodecs) {\n return levelCodecs\n .replace(/([ah]vc.)[^,;]+/, '$1')\n .replace('mp4a.40.2', 'mp4a');\n }\n return '';\n}\n\nfunction level2label(level, i, manifestCodecs) {\n const levelCodecs = codecs2label(level.attrs.CODECS);\n const levelNameInfo = level.name ? `\"${level.name}\": ` : '';\n const codecInfo =\n levelCodecs && manifestCodecs.length > 1 ? ` / ${levelCodecs}` : '';\n if (level.height) {\n return `${i} (${levelNameInfo}${level.height}p / ${Math.round(\n level.bitrate / 1024\n )}kb${codecInfo})`;\n }\n if (level.bitrate) {\n return `${i} (${levelNameInfo}${Math.round(\n level.bitrate / 1024\n )}kb${codecInfo})`;\n }\n if (codecInfo) {\n return `${i} (${levelNameInfo}${levelCodecs})`;\n }\n if (level.name) {\n return `${i} (${level.name})`;\n }\n return `${i}`;\n}\n\nfunction getDemoConfigPropOrDefault(propName, defaultVal) {\n return typeof demoConfig[propName] !== 'undefined'\n ? demoConfig[propName]\n : defaultVal;\n}\n\nfunction getURLParam(sParam, defaultValue) {\n const sPageURL = self.location.search.substring(1);\n const sURLVariables = sPageURL.split('&');\n for (let i = 0; i < sURLVariables.length; i++) {\n const sParameterName = sURLVariables[i].split('=');\n if (sParameterName[0] === sParam) {\n return sParameterName[1] === 'undefined'\n ? undefined\n : sParameterName[1] === 'false'\n ? false\n : sParameterName[1];\n }\n }\n return defaultValue;\n}\n\nfunction onDemoConfigChanged(firstLoad) {\n demoConfig = {\n enableStreaming,\n autoRecoverError,\n stopOnStall,\n dumpfMP4,\n levelCapping,\n limitMetrics,\n };\n\n if (configPersistenceEnabled) {\n persistEditorValue();\n }\n\n const serializedDemoConfig = btoa(JSON.stringify(demoConfig));\n const baseURL = document.URL.split('?')[0];\n const streamURL = $('#streamURL').val();\n const permalinkURL = `${baseURL}?src=${encodeURIComponent(\n streamURL\n )}&demoConfig=${serializedDemoConfig}`;\n\n $('#StreamPermalink').html(`<a href=\"${permalinkURL}\">${permalinkURL}</a>`);\n if (!firstLoad && self.location.href !== permalinkURL) {\n self.history.pushState(null, null, permalinkURL);\n }\n}\n\nfunction onConfigPersistenceChanged(event) {\n configPersistenceEnabled = event.target.checked;\n localStorage.setItem(\n STORAGE_KEYS.Editor_Persistence,\n JSON.stringify(configPersistenceEnabled)\n );\n\n if (configPersistenceEnabled) {\n persistEditorValue();\n } else {\n localStorage.removeItem(STORAGE_KEYS.Hls_Config);\n }\n}\n\nfunction getEditorValue(options) {\n options = $.extend({ parse: false }, options || {});\n let value = configEditor.session.getValue();\n\n if (options.parse) {\n try {\n value = JSON.parse(value);\n } catch (e) {\n console.warn('[getEditorValue] could not parse editor value', e);\n value = {};\n }\n }\n\n return value;\n}\n\nfunction getPersistedHlsConfig() {\n let value = localStorage.getItem(STORAGE_KEYS.Hls_Config);\n if (value === null) {\n return value;\n }\n\n try {\n value = JSON.parse(value);\n } catch (e) {\n console.warn('[getPersistedHlsConfig] could not hls config json', e);\n value = {};\n }\n\n return value;\n}\n\nfunction persistEditorValue() {\n localStorage.setItem(STORAGE_KEYS.Hls_Config, getEditorValue());\n}\n\nfunction setupConfigEditor() {\n configEditor = self.ace.edit('config-editor');\n configEditor.setTheme('ace/theme/github');\n configEditor.session.setMode('ace/mode/json');\n\n const contents = hlsjsDefaults;\n const shouldRestorePersisted =\n JSON.parse(localStorage.getItem(STORAGE_KEYS.Editor_Persistence)) === true;\n\n if (shouldRestorePersisted) {\n $.extend(contents, getPersistedHlsConfig());\n }\n\n const elPersistence = document.querySelector('#config-persistence');\n elPersistence.addEventListener('change', onConfigPersistenceChanged);\n elPersistence.checked = shouldRestorePersisted;\n configPersistenceEnabled = shouldRestorePersisted;\n\n updateConfigEditorValue(contents);\n}\n\nfunction setupTimelineChart() {\n const canvas = document.querySelector('#timeline-chart');\n const chart = new TimelineChart(canvas, {\n responsive: false,\n });\n\n resizeHandlers.push(() => {\n chart.resize();\n });\n\n chart.resize();\n\n return chart;\n}\n\nfunction addChartEventListeners(hls) {\n const updateLevelOrTrack = (eventName, data) => {\n chart.updateLevelOrTrack(data.details);\n };\n const updateFragment = (eventName, data) => {\n if (data.stats) {\n // Convert 0.x stats to partial v1 stats\n const { retry, loaded, total, trequest, tfirst, tload } = data.stats;\n if (trequest && tload) {\n data.frag.stats = {\n loaded,\n retry,\n total,\n loading: {\n start: trequest,\n first: tfirst,\n end: tload,\n },\n };\n }\n }\n chart.updateFragment(data);\n };\n const updateChart = () => {\n chart.update();\n };\n hls.on(\n Hls.Events.MANIFEST_LOADING,\n () => {\n chart.reset();\n },\n chart\n );\n hls.on(\n Hls.Events.MANIFEST_PARSED,\n (eventName, data) => {\n const { levels } = data;\n chart.removeType('level');\n chart.removeType('audioTrack');\n chart.removeType('subtitleTrack');\n chart.updateLevels(levels);\n },\n chart\n );\n hls.on(\n Hls.Events.BUFFER_CREATED,\n (eventName, { tracks }) => {\n chart.updateSourceBuffers(tracks, hls.media);\n },\n chart\n );\n hls.on(\n Hls.Events.BUFFER_RESET,\n () => {\n chart.removeSourceBuffers();\n },\n chart\n );\n hls.on(Hls.Events.LEVELS_UPDATED, (eventName, { levels }) => {\n chart.removeType('level');\n chart.updateLevels(levels);\n });\n hls.on(\n Hls.Events.LEVEL_SWITCHED,\n (eventName, { level }) => {\n chart.removeType('level');\n chart.updateLevels(hls.levels, level);\n },\n chart\n );\n hls.on(\n Hls.Events.LEVEL_LOADING,\n () => {\n // TODO: mutate level datasets\n // Update loadLevel\n chart.removeType('level');\n chart.updateLevels(hls.levels);\n },\n chart\n );\n hls.on(\n Hls.Events.LEVEL_UPDATED,\n (eventName, { details }) => {\n chart.updateLevelOrTrack(details);\n },\n chart\n );\n\n hls.on(\n Hls.Events.AUDIO_TRACKS_UPDATED,\n (eventName, { audioTracks }) => {\n chart.removeType('audioTrack');\n chart.updateAudioTracks(audioTracks);\n },\n chart\n );\n hls.on(\n Hls.Events.SUBTITLE_TRACKS_UPDATED,\n (eventName, { subtitleTracks }) => {\n chart.removeType('subtitleTrack');\n chart.updateSubtitleTracks(subtitleTracks);\n },\n chart\n );\n\n hls.on(\n Hls.Events.AUDIO_TRACK_SWITCHED,\n (eventName) => {\n // TODO: mutate level datasets\n chart.removeType('audioTrack');\n chart.updateAudioTracks(hls.audioTracks);\n },\n chart\n );\n hls.on(\n Hls.Events.SUBTITLE_TRACK_SWITCH,\n (eventName) => {\n // TODO: mutate level datasets\n chart.removeType('subtitleTrack');\n chart.updateSubtitleTracks(hls.subtitleTracks);\n },\n chart\n );\n hls.on(Hls.Events.AUDIO_TRACK_LOADED, updateLevelOrTrack, chart);\n hls.on(Hls.Events.SUBTITLE_TRACK_LOADED, updateLevelOrTrack, chart);\n hls.on(Hls.Events.LEVEL_PTS_UPDATED, updateLevelOrTrack, chart);\n hls.on(Hls.Events.FRAG_LOADED, updateFragment, chart);\n hls.on(Hls.Events.FRAG_PARSED, updateFragment, chart);\n hls.on(Hls.Events.FRAG_CHANGED, updateFragment, chart);\n hls.on(Hls.Events.BUFFER_APPENDING, updateChart, chart);\n hls.on(Hls.Events.BUFFER_APPENDED, updateChart, chart);\n hls.on(Hls.Events.BUFFER_FLUSHED, updateChart, chart);\n}\n\nfunction updateConfigEditorValue(obj) {\n const json = JSON.stringify(obj, null, 2);\n configEditor.session.setValue(json);\n}\n\nfunction applyConfigEditorValue() {\n onDemoConfigChanged();\n loadSelectedStream();\n}\n\nfunction createfMP4(type) {\n if (fmp4Data[type].length) {\n const blob = new Blob([arrayConcat(fmp4Data[type])], {\n type: 'application/octet-stream',\n });\n const filename = type + '-' + new Date().toISOString() + '.mp4';\n self.saveAs(blob, filename);\n // $('body').append('<a download=\"hlsjs-' + filename + '\" href=\"' + self.URL.createObjectURL(blob) + '\">Download ' + filename + ' track</a><br>');\n } else if (!dumpfMP4) {\n console.error(\n 'Check \"Dump transmuxed fMP4 data\" first to make appended media available for saving.'\n );\n }\n}\n\nfunction arrayConcat(inputArray) {\n const totalLength = inputArray.reduce(function (prev, cur) {\n return prev + cur.length;\n }, 0);\n const result = new Uint8Array(totalLength);\n let offset = 0;\n inputArray.forEach(function (element) {\n result.set(element, offset);\n offset += element.length;\n });\n return result;\n}\n\nfunction hideAllTabs() {\n $('.demo-tab-btn').css('background-color', '');\n $('.demo-tab').hide();\n}\n\nfunction toggleTabClick(btn) {\n toggleTab(btn);\n const tabIndexes = $('.demo-tab-btn')\n .toArray()\n .map((el, i) => ($('#' + $(el).data('tab')).is(':visible') ? i : null))\n .filter((i) => i !== null);\n localStorage.setItem(STORAGE_KEYS.demo_tabs, tabIndexes.join(','));\n}\n\nfunction toggleTab(btn, dontHideOpenTabs) {\n const tabElId = $(btn).data('tab');\n // eslint-disable-next-line no-restricted-globals\n const modifierPressed =\n dontHideOpenTabs ||\n (self.event && (self.event.metaKey || self.event.shiftKey));\n if (!modifierPressed) {\n hideAllTabs();\n }\n if (modifierPressed) {\n $(`#${tabElId}`).toggle();\n } else {\n $(`#${tabElId}`).show();\n }\n $(btn).css(\n 'background-color',\n $(`#${tabElId}`).is(':visible') ? 'orange' : ''\n );\n if (!$('#statsDisplayTab').is(':visible')) {\n self.hideMetrics();\n }\n if (hls) {\n if ($('#timelineTab').is(':visible')) {\n chart.show();\n chart.resize(chart.chart.data ? chart.chart.data.datasets : null);\n } else {\n chart.hide();\n }\n }\n}\n\nfunction appendLog(textElId, message) {\n const el = $('#' + textElId);\n let logText = el.text();\n if (logText.length) {\n logText += '\\n';\n }\n const timestamp = (Date.now() - startTime) / 1000;\n const newMessage = timestamp + ' | ' + message;\n logText += newMessage;\n // update\n el.text(logText);\n const element = el[0];\n element.scrollTop = element.scrollHeight - element.clientHeight;\n}\n\nfunction logStatus(message) {\n appendLog('statusOut', message);\n}\n\nfunction logError(message) {\n appendLog('errorOut', message);\n}\n"],"names":["createTestStream","url","description","live","abr","skip_ua","createTestStreamWithConfig","target","config","Error","testStream","testStreams","bbb","fdr","bigBuckBunny480p","arte","deltatreDAI","issue666","closedCaptions","customIvBadDts","oceansAES","tracksWithAES","mp3Audio","mpegAudioOnly","fmp4","fmp4Bitmovin","fmp4BitmovinHevc","skipFunctionalTests","offset_pts","angelOneShakaWidevine","name","version","widevineLicenseUrl","emeEnabled","audioOnlyMultipleLevels","pdtDuplicate","pdtLargeGap","pdtBadValues","pdtOneValue","noTrackIntersection","avBufferOffset","altAudioAndTracks","vendor","altAudioAudioOnly","allowedBufferedRangesInSeekTest","altAudioMultiAudioOnly","muxedFmp4","altAudioWithPdtAndStartGap","startSeek","AppleAdvancedHevcAvcHls","MuxLowLatencyHls","groupIds","redundantLevelsWithTrackGroups","startDelimiterOverlappingBetweenPESPackets","Promise","promiseFinally","sortObject","obj","temp","keys","key","push","sort","index","copyTextToClipboard","text","textArea","document","createElement","value","body","appendChild","select","successful","execCommand","msg","console","log","err","removeChild","this","require","require$$0","Chart","controllers","horizontalBar","prototype","calculateBarValuePixels","datasetIndex","options","chart","scale","_getValueScale","datasets","data","_parseValue","scaleParseValue","start","undefined","max","min","length","end","base","getPixelForValue","head","size","center","calculateBarIndexPixels","ruler","rowHeight","barThickness","categoryPercentage","draw","rects","getMeta","len","dataset","getDataset","ctx","chartArea","helpers","canvas","clipArea","lineHeight","Math","ceil","measureText","actualBoundingBoxAscent","range","i","rect","view","_view","intersects","x","left","right","val","isNaN","dataType","stats","isPart","isFragmentHint","isFragment","isCue","y","height","bounds","boundingRects","drawText","w","borderWidth","borderSkipped","getValueForPixel","backgroundColor","fillStyle","fillRect","h","aborted","loaded","total","active","snBounds","_extends","cc","ccLabel","ccWidth","width","fillText","snLabel","sn","textWidth","strLength","content","slice","float","fixedDigits","floor","startString","hhmmss","unclipArea","applyChartInstanceOverrides","Object","scales","forEach","axis","warn","Array","isArray","getRightValue","duration","x1","x2","x3","x4","vm","half","top","bottom","m","s","pad","toFixed","replace","str","X_AXIS_SECONDS","TimelineChart","chartJsOptions","_this","rafDebounceRequestId","imageDataBuffer","media","tracksChangeHandler","cuesChangeHandler","hidden","zoom100","getContext","self","type","labels","getChartOptions","plugins","afterRender","drawCurrentTime","ondblclick","event","element","getElementAtEvent","pos","getRelativePosition","chartScales","amount","getModifierState","zoom","ticks","update","onwheel","deltaMode","deltaY","direction","abs","normal","ease","deltaX","pan","preventDefault","moved","gestureScale","onpointerdown","downEvent","isPrimary","startX","clientX","xToVal","setPointerCapture","pointerId","onpointermove","moveEvent","movedX","movedValue","onpointerup","onpointercancel","upEvent","releasePointerCapture","click","ongesturestart","ongestureend","ongesturechange","_proto","_self$hls","_datasetIndex","_index","hls","currentTime","updateOnRepaint","diff","minPercent","maxPercent","minDelta","maxDelta","reset","_this$chart$data","resize","_this$chart$ctx","cancelAnimationFrame","lazy","_this2","requestAnimationFrame","_this3","_this$chart$canvas","reduce","container","parentElement","style","show","hide","updateLevels","levels","levelSwitched","_this4","_this$chart$data2","_self$hls2","loadLevel","nextLoadLevel","nextAutoLevel","currentLevel","level","id","getLevelName","borderColor","datasetWithDefaults","urlId","trackType","details","updateLevelOrTrack","updateAudioTracks","audioTracks","_this5","_this$chart$data3","audioTrack","track","getAudioTrackName","updateSubtitleTracks","subtitles","_this6","_this$chart$data4","subtitleTrack","getSubtitlesName","removeType","_this$chart$data5","splice","targetduration","totalduration","levelDataSet","arrayFind","stripDeliveryDirectives","_details$fragments$","fragments","fragment","chartFragment","loader","partList","part","chartPart","fragOffset","fragmentHint","getPlaylistStart","maxZoom","updateFragment","frag","baseurl","fragData","relurl","updateSourceBuffers","tracks","_this7","_this$chart$data6","trackTypes","mediaBufferData","removeSourceBuffers","sourceBuffer","buffer","video","audio","audiovideo","unshift","addEventListener","replaceTimeRangeTuples","buffered","error","onprogress","ontimeupdate","textTracks","e","setTextTracks","currentTarget","removeEventListener","_this$chart$data7","toString","indexOf","_this8","_this$chart$data8","call","textTrack","label","kind","mode","updateTextTrackCues","_data","activeCues","cues","activeLength","activeMin","Infinity","activeMax","cue","item","startTime","endTime","_loop","getCueLabel","some","activeCue","cuesMatch","_self$hls3","restore","save","drawLineX","getCurrentTimeColor","readyState","ended","seeking","paused","devicePixelRatio","getImageData","putImageData","lineWidth","strokeStyle","beginPath","moveTo","lineTo","stroke","_createClass","get","set","currentZoom","newZoom","webUrl","URL","searchParams","delete","href","xAxisID","_details$fragments","_level$attrs","attrs","BANDWIDTH","getMainLevelAttribute","RESOLUTION","CODECS","AUDIO","lang","groupId","timeRanges","cue1","cue2","JSON","stringify","result","parseDataCue","info","collection","animation","elements","rectangle","events","hover","animationDuration","legend","display","maintainAspectRatio","responsiveAnimationDuration","xAxes","beginAtZero","sampleSize","maxRotation","callback","tickValue","yAxes","gridLines","tooltips","enabled","array","predicate","TypeError","thisArg","arguments","k","kValue","STORAGE_KEYS","Editor_Persistence","Hls_Config","volume","demo_tabs","defaultTestStreamUrl","sourceURL","decodeURIComponent","getURLParam","demoConfig","parse","atob","hlsjsDefaults","debug","enableWorker","lowLatencyMode","backBufferLength","enableStreaming","getDemoConfigPropOrDefault","autoRecoverError","levelCapping","limitMetrics","dumpfMP4","stopOnStall","bufferingIdx","selectedTestStream","querySelector","Date","now","lastSeekingIdx","lastStartPosition","lastDuration","lastAudioTrackSwitchingIdx","fmp4Data","configPersistenceEnabled","configEditor","resizeAsyncCallbackId","setTimeout","clearTimeout","resizeHandlers","handler","onresize","screen","orientation","onchange","playerResize","getBoundingClientRect","$","html","round","videoWidth","videoHeight","ready","setupConfigEditor","setupTimelineChart","stream","option","Option","append","selectedIndex","each","change","streamUrl","loadSelectedStream","checkBuffer","checked","onDemoConfigChanged","toggle","prop","getVersionLink","noneStable","includes","encodeURIComponent","Hls","$a","attr","volumeSettings","localStorage","getItem","muted","windowSliding","tabIndexesCSV","split","indexString","toggleTab","parseInt","on","location","reload","setupGlobals","t0","performance","load","bitrate","recoverDecodingErrorDate","recoverSwapAudioCodecDate","onClickBufferedRange","updateLevelInfo","createfMP4","goToMetricsPermaLink","toggleTabClick","applyConfigEditorValue","trimArray","limit","shift","trimEventHistory","empty","isSupported","handleUnsupported","alert","hideCanvas","destroy","clearInterval","bufferTimer","logStatus","hlsConfig","extend","getEditorValue","updateConfigEditorValue","expiredTracks","filter","kinds","map","join","videoWithExpiredTextTracks","cloneNode","removeAttribute","parentNode","insertBefore","addChartEventListeners","addVideoEventListeners","loadSource","autoLevelCapping","attachMedia","Events","MEDIA_ATTACHED","time","MEDIA_DETACHED","DESTROYING","BUFFER_RESET","FRAG_PARSING_INIT_SEGMENT","eventName","showCanvas","FRAG_PARSING_METADATA","LEVEL_SWITCHING","MANIFEST_PARSED","loading","latency","first","refreshCanvas","levelNb","levelParsed","AUDIO_TRACKS_UPDATED","updateAudioTrackInfo","AUDIO_TRACK_SWITCHING","AUDIO_TRACK_SWITCHED","LEVEL_LOADED","isLive","startSN","endSN","parsing","parsingDuration","sumLevelParsingMs","levelParsingUs","AUDIO_TRACK_LOADED","FRAG_BUFFERED","assert","id2","id3","buffering","bw","ewma","bandwidthEstimate","setInterval","process","fragBuffered","fragMinLatency","fragMaxLatency","fragMinProcess","fragMaxProcess","fragMinKbps","fragMaxKbps","autoLevelCappingMin","autoLevelCappingMax","fragBufferedBytes","sumLatency","sumKbps","sumProcess","sumParsing","fraglastLatency","fragAvgLatency","fragLastProcess","fragAvgProcess","fragLastKbps","fragAvgKbps","fragparsingKbps","fragparsingMs","autoLevelCappingLast","LEVEL_SWITCHED","FRAG_CHANGED","tagList","autoLevel","autoLevelEnabled","levelStart","fragProgramDateTime","programDateTime","fragStart","fragChangedAuto","autoLevelMin","autoLevelMax","levelLastAuto","autoLevelLast","autoLevelSwitch","sumAutoLevel","autoLevelAvg","fragChangedManual","manualLevelMin","manualLevelMax","manualLevelLast","manualLevelSwitch","FRAG_LOAD_EMERGENCY_ABORTED","fragLoadEmergencyAborted","FRAG_DECRYPTED","fragDecrypted","totalDecryptTime","fragAvgDecryptTime","tdecrypt","tstart","ERROR","ErrorDetails","MANIFEST_LOAD_ERROR","context","response","code","MANIFEST_LOAD_TIMEOUT","logError","MANIFEST_PARSING_ERROR","reason","LEVEL_EMPTY_ERROR","LEVEL_LOAD_ERROR","LEVEL_LOAD_TIMEOUT","LEVEL_SWITCH_ERROR","FRAG_LOAD_ERROR","FRAG_LOAD_TIMEOUT","FRAG_LOOP_LOADING_ERROR","FRAG_DECRYPT_ERROR","FRAG_PARSING_ERROR","KEY_LOAD_ERROR","decryptdata","uri","KEY_LOAD_TIMEOUT","BUFFER_APPEND_ERROR","BUFFER_ADD_CODEC_ERROR","mimeType","message","BUFFER_APPENDING_ERROR","BUFFER_STALLED_ERROR","stopLoad","pause","fatal","ErrorTypes","MEDIA_ERROR","handleMediaError","NETWORK_ERROR","fatalError","BUFFER_CREATED","BUFFER_APPENDING","FPS_DROP","currentDropped","currentDecoded","fpsDropEvent","fpsTotalDroppedFrames","totalDroppedFrames","handleVideoEvent","handleVolumeEvent","navigator","userAgent","toLowerCase","evt","errorTxt","mediaError","MEDIA_ERR_ABORTED","MEDIA_ERR_DECODE","MEDIA_ERR_NETWORK","MEDIA_ERR_SRC_NOT_SUPPORTED","setItem","recoverMediaError","swapAudioCodec","timeRangesToString","r","seekableEnd","getSeekableEnd","bufferingDuration","clientWidth","bufferLen","bufEvents","bufEventLen","event0","event1","slopeBuf0","slopeBuf1","slopePos0","slopePos1","pop","is","seekable","played","videoPlaybackQuality","getVideoPlaybackQuality","Function","droppedVideoFrames","corruptedVideoFrames","webkitDroppedFrameCount","ttfbEstimate","maxLatency","targetLatency","drift","latencyController","edgeStalled","playbackRate","currentPDT","toISOString","pdtLatency","showMetrics","hideMetrics","getMetrics","json","jsonpacked","pack","btoa","copyMetricsToClipBoard","goToMetrics","lastIndexOf","open","b64","offsetLeft","isFinite","getLevelButtonHtml","onclickReplace","autoEnabled","onclickAuto","codecs","uniqueCodecs","levelCodecs","codecs2label","onclick","level2label","htmlCurrentLevel","htmlNextLevel","htmlLoadLevel","htmlCapLevel","buttonTemplate","buttonEnabled","buttonDisabled","html1","audioTrackId","manifestCodecs","levelNameInfo","codecInfo","propName","defaultVal","sParam","defaultValue","sPageURL","search","substring","sURLVariables","sParameterName","firstLoad","persistEditorValue","serializedDemoConfig","baseURL","streamURL","permalinkURL","history","pushState","onConfigPersistenceChanged","removeItem","session","getValue","getPersistedHlsConfig","ace","edit","setTheme","setMode","contents","shouldRestorePersisted","elPersistence","responsive","_data$stats","retry","trequest","tfirst","tload","updateChart","MANIFEST_LOADING","_ref","LEVELS_UPDATED","_ref2","_ref3","LEVEL_LOADING","LEVEL_UPDATED","_ref4","_ref5","SUBTITLE_TRACKS_UPDATED","_ref6","subtitleTracks","SUBTITLE_TRACK_SWITCH","SUBTITLE_TRACK_LOADED","LEVEL_PTS_UPDATED","FRAG_LOADED","FRAG_PARSED","BUFFER_APPENDED","BUFFER_FLUSHED","setValue","blob","Blob","arrayConcat","filename","saveAs","inputArray","totalLength","prev","cur","Uint8Array","offset","hideAllTabs","css","btn","tabIndexes","toArray","el","dontHideOpenTabs","tabElId","modifierPressed","metaKey","shiftKey","appendLog","textElId","logText","timestamp","newMessage","scrollTop","scrollHeight","clientHeight"],"mappings":";;;;;;;;;;;;;;;;;;;;CASA,SAASA,gBAAgBA,CACvBC,GAAG,EACHC,WAAW,EACXC,IAAI,EACJC,GAAG,EACHC,OAAO,EACP;CAAA,EAAA,IAHAF,IAAI,KAAA,KAAA,CAAA,EAAA;CAAJA,IAAAA,IAAI,GAAG,KAAK,CAAA;CAAA,GAAA;CAAA,EAAA,IACZC,GAAG,KAAA,KAAA,CAAA,EAAA;CAAHA,IAAAA,GAAG,GAAG,IAAI,CAAA;CAAA,GAAA;CAAA,EAAA,IACVC,OAAO,KAAA,KAAA,CAAA,EAAA;CAAPA,IAAAA,OAAO,GAAG,EAAE,CAAA;CAAA,GAAA;GAEZ,OAAO;CACLJ,IAAAA,GAAG,EAAEA,GAAG;CACRC,IAAAA,WAAW,EAAEA,WAAW;CACxBC,IAAAA,IAAI,EAAEA,IAAI;CACVC,IAAAA,GAAG,EAAEA,GAAG;CACRC,IAAAA,OAAO,EAAEA,OAAAA;IACV,CAAA;CACH,CAAA;;CAEA;CACA;CACA;CACA;CACA;CACA,SAASC,0BAA0BA,CAACC,MAAM,EAAEC,MAAM,EAAE;CAClD,EAAA,IAAI,OAAOD,MAAM,KAAK,QAAQ,EAAE;CAC9B,IAAA,MAAM,IAAIE,KAAK,CAAC,yBAAyB,CAAC,CAAA;CAC3C,GAAA;GAED,IAAMC,UAAU,GAAGV,gBAAgB,CACjCO,MAAM,CAACN,GAAG,EACVM,MAAM,CAACL,WAAW,EAClBK,MAAM,CAACJ,IAAI,EACXI,MAAM,CAACH,GAAG,EACVG,MAAM,CAACF,OACX,CAAG,CAAA;GAEDK,UAAU,CAACF,MAAM,GAAGA,MAAM,CAAA;CAE1B,EAAA,OAAOE,UAAU,CAAA;CACnB,CAAA;CAEA,IAAAC,aAAc,GAAG;CACfC,EAAAA,GAAG,EAAE;CACHX,IAAAA,GAAG,EAAE,mDAAmD;CACxDC,IAAAA,WAAW,EAAE,qCAAqC;CAClDE,IAAAA,GAAG,EAAE,IAAA;IACN;CACDS,EAAAA,GAAG,EAAE;CACHZ,IAAAA,GAAG,EAAE,kDAAkD;CACvDC,IAAAA,WAAW,EAAE,+CAA+C;CAC5DE,IAAAA,GAAG,EAAE,IAAA;IACN;CACDU,EAAAA,gBAAgB,EAAE;CAChBb,IAAAA,GAAG,EAAE,6EAA6E;CAClFC,IAAAA,WAAW,EAAE,4BAA4B;CACzCE,IAAAA,GAAG,EAAE,KAAA;IACN;CACDW,EAAAA,IAAI,EAAE;CACJd,IAAAA,GAAG,EAAE,mDAAmD;CACxDC,IAAAA,WAAW,EAAE,gBAAgB;CAC7BE,IAAAA,GAAG,EAAE,IAAA;IACN;CACDY,EAAAA,WAAW,EAAE;CACXf,IAAAA,GAAG,EAAE,uEAAuE;CAC5EC,IAAAA,WAAW,EAAE,8BAA8B;CAC3CE,IAAAA,GAAG,EAAE,KAAA;IACN;CACDa,EAAAA,QAAQ,EAAE;CACRhB,IAAAA,GAAG,EAAE,iGAAiG;CACtGC,IAAAA,WAAW,EACT,uEAAuE;CACzEE,IAAAA,GAAG,EAAE,KAAA;IACN;CACDc,EAAAA,cAAc,EAAE;CACdjB,IAAAA,GAAG,EAAE,sEAAsE;CAC3EC,IAAAA,WAAW,EAAE,6BAA6B;CAC1CE,IAAAA,GAAG,EAAE,KAAA;IACN;CACDe,EAAAA,cAAc,EAAE;CACdlB,IAAAA,GAAG,EAAE,wEAAwE;CAC7EC,IAAAA,WAAW,EAAE,4BAA4B;CACzCE,IAAAA,GAAG,EAAE,KAAA;IACN;CACDgB,EAAAA,SAAS,EAAE;CACTnB,IAAAA,GAAG,EAAE,0EAA0E;CAC/EC,IAAAA,WAAW,EAAE,wBAAwB;CACrCE,IAAAA,GAAG,EAAE,IAAA;IACN;CACDiB,EAAAA,aAAa,EAAE;CACbpB,IAAAA,GAAG,EAAE,2EAA2E;CAChFC,IAAAA,WAAW,EAAE,iDAAiD;CAC9DE,IAAAA,GAAG,EAAE,KAAA;IACN;CACDkB,EAAAA,QAAQ,EAAE;CACRrB,IAAAA,GAAG,EAAE,0EAA0E;CAC/EC,IAAAA,WAAW,EAAE,cAAc;CAC3BE,IAAAA,GAAG,EAAE,KAAA;IACN;CACDmB,EAAAA,aAAa,EAAE;CACbtB,IAAAA,GAAG,EAAE,kEAAkE;CACvEC,IAAAA,WAAW,EAAE,sBAAsB;CACnCE,IAAAA,GAAG,EAAE,KAAK;CACVC,IAAAA,OAAO,EAAE,CAAC,eAAe,EAAE,SAAS,CAAA;IACrC;CACDmB,EAAAA,IAAI,EAAE;CACJvB,IAAAA,GAAG,EAAE,yEAAyE;CAC9EC,IAAAA,WAAW,EAAE,0CAA0C;CACvDE,IAAAA,GAAG,EAAE,IAAA;IACN;CACDqB,EAAAA,YAAY,EAAE;CACZxB,IAAAA,GAAG,EAAE,8GAA8G;CACnHC,IAAAA,WAAW,EAAE,sBAAsB;CACnCE,IAAAA,GAAG,EAAE,IAAA;IACN;CACDsB,EAAAA,gBAAgB,EAAE;CAChBzB,IAAAA,GAAG,EAAE,mFAAmF;CACxFC,IAAAA,WAAW,EACT,iEAAiE;CACnEE,IAAAA,GAAG,EAAE,IAAI;CACTuB,IAAAA,mBAAmB,EAAE,IAAA;IACtB;CACDC,EAAAA,UAAU,EAAE;CACV3B,IAAAA,GAAG,EAAE,oDAAoD;CACzDC,IAAAA,WAAW,EAAE,mCAAmC;CAChDE,IAAAA,GAAG,EAAE,IAAA;IACN;GACDyB,qBAAqB,EAAEvB,0BAA0B,CAC/C;CACEL,IAAAA,GAAG,EAAE,kFAAkF;CACvFC,IAAAA,WAAW,EACT,6DAA6D;CAC/DE,IAAAA,GAAG,EAAE,IAAI;CACTC,IAAAA,OAAO,EAAE,CACP,SAAS,EACT,QAAQ,EACR;CAAEyB,MAAAA,IAAI,EAAE,QAAQ;CAAEC,MAAAA,OAAO,EAAE,MAAA;CAAQ,KAAA,EACnC;CAAED,MAAAA,IAAI,EAAE,QAAQ;CAAEC,MAAAA,OAAO,EAAE,MAAA;MAAQ,CAAA;CAEtC,GAAA,EACD;CACEC,IAAAA,kBAAkB,EAAE,8CAA8C;CAClEC,IAAAA,UAAU,EAAE,IAAA;CACb,GACF,CAAA;CACDC,EAAAA,uBAAuB,EAAE;CACvBjC,IAAAA,GAAG,EAAE,uEAAuE;CAC5EC,IAAAA,WAAW,EAAE,qCAAqC;CAClDE,IAAAA,GAAG,EAAE,IAAA;IACN;CACD+B,EAAAA,YAAY,EAAE;CACZlC,IAAAA,GAAG,EAAE,sEAAsE;CAC3EC,IAAAA,WAAW,EAAE,iCAAiC;CAC9CE,IAAAA,GAAG,EAAE,KAAA;IACN;CACDgC,EAAAA,WAAW,EAAE;CACXnC,IAAAA,GAAG,EAAE,mEAAmE;CACxEC,IAAAA,WAAW,EAAE,gDAAgD;CAC7DE,IAAAA,GAAG,EAAE,KAAA;IACN;CACDiC,EAAAA,YAAY,EAAE;CACZpC,IAAAA,GAAG,EAAE,yEAAyE;CAC9EC,IAAAA,WAAW,EAAE,sBAAsB;CACnCE,IAAAA,GAAG,EAAE,KAAA;IACN;CACDkC,EAAAA,WAAW,EAAE;CACXrC,IAAAA,GAAG,EAAE,oEAAoE;CACzEC,IAAAA,WAAW,EAAE,6BAA6B;CAC1CE,IAAAA,GAAG,EAAE,KAAA;IACN;GACDmC,mBAAmB,EAAEjC,0BAA0B,CAC7C;CACEL,IAAAA,GAAG,EAAE,uEAAuE;CAC5EC,IAAAA,WAAW,EACT,oEAAoE;CACtEE,IAAAA,GAAG,EAAE,KAAA;CACN,GAAA,EACD;CACEoC,IAAAA,cAAc,EAAE,IAAA;CACjB,GACF,CAAA;CACDC,EAAAA,iBAAiB,EAAE;CACrB;CACIxC,IAAAA,GAAG,EAAE,6EAA6E;CAClFC,IAAAA,WAAW,EAAE,iDAAiD;CAC9DwC,IAAAA,MAAM,EAAE,OAAO;CACftC,IAAAA,GAAG,EAAE,IAAA;IACN;GACDuC,iBAAiB,EAAErC,0BAA0B,CAC3C;CACEL,IAAAA,GAAG,EAAE,uFAAuF;CAC5FC,IAAAA,WAAW,EAAE,gDAAgD;CAC7DE,IAAAA,GAAG,EAAE,KAAA;CACN,GAAA,EACD;CACJ;CACA;CACA;CACMwC,IAAAA,+BAA+B,EAAE,CAAA;CAClC,GACF,CAAA;CACDC,EAAAA,sBAAsB,EAAE;CACtB5C,IAAAA,GAAG,EAAE,iFAAiF;CACtFC,IAAAA,WAAW,EAAE,6DAA6D;CAC1EE,IAAAA,GAAG,EAAE,KAAA;IACN;CACD0C,EAAAA,SAAS,EAAE;CACT7C,IAAAA,GAAG,EAAE,oEAAoE;CACzEC,IAAAA,WAAW,EAAE,uDAAuD;CACpEE,IAAAA,GAAG,EAAE,KAAA;IACN;CACD2C,EAAAA,0BAA0B,EAAE;CAC1B9C,IAAAA,GAAG,EAAE,6FAA6F;CAClGC,IAAAA,WAAW,EAAE,0CAA0C;CAC3D;CACA;CACI8C,IAAAA,SAAS,EAAE,IAAA;IACZ;CACDC,EAAAA,uBAAuB,EAAE;CACvBhD,IAAAA,GAAG,EAAE,kGAAkG;CACvGC,IAAAA,WAAW,EACT,gEAAA;IACH;CACDgD,EAAAA,gBAAgB,EAAE;CAChBjD,IAAAA,GAAG,EAAE,2EAA2E;CAChFC,IAAAA,WAAW,EACT,qGAAqG;CACvGC,IAAAA,IAAI,EAAE,IAAA;IACP;CACH;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACEgD,EAAAA,QAAQ,EAAE;CACRlD,IAAAA,GAAG,EAAE,qEAAqE;CAC1EC,IAAAA,WAAW,EAAE,8BAA8B;CAC3CE,IAAAA,GAAG,EAAE,IAAI;CACTuB,IAAAA,mBAAmB,EAAE,IAAA;IACtB;CACDyB,EAAAA,8BAA8B,EAAE;CAC9BnD,IAAAA,GAAG,EAAE,iFAAiF;CACtFC,IAAAA,WAAW,EAAE,uDAAuD;CACpEE,IAAAA,GAAG,EAAE,IAAI;CACTuB,IAAAA,mBAAmB,EAAE,IAAA;IACtB;CACD0B,EAAAA,0CAA0C,EAAE;CAC1CpD,IAAAA,GAAG,EAAE,yEAAyE;CAC9EC,IAAAA,WAAW,EAEsG,iTAAA;CACjHE,IAAAA,GAAG,EAAE,KAAK;CACVuB,IAAAA,mBAAmB,EAAE,IAAA;CACtB,GAAA;CACH,CAAC;;;;;;;;;;ECrQD,CAAC,SAAS,MAAM,EAAE;AAClB;CACA,EAAC,MAAM,CAAC,EAAE,EAAE,WAAW;AACvB;CACA,GAAE,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;CACtB,GAAE,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;CACvB,GAAE,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;CACtB,GAAE,IAAI,kBAAkB,GAAG,CAAC,CAAC,CAAC;CAC9B,GAAE,IAAI,eAAe,GAAG,CAAC,CAAC,CAAC;AAC3B;CACA,GAAE,IAAI,IAAI,GAAG,SAAS,IAAI,EAAE,OAAO,EAAE;AACrC;CACA;CACA,IAAG,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;AAC3B;CACA;KACG,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;AAC1C;KACG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AACvD;CACA;CACA,IAAG,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAClE;KACG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;AACzD;CACA;KACG,IAAI,UAAU,GAAG;MAChB,OAAO,GAAG,EAAE;MACZ,QAAQ,GAAG,EAAE;MACb,MAAM,GAAG,EAAE;CACf,KAAI,CAAC;AACL;KACG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAC9C;CACA;KACG,IAAI,GAAG,GAAG,CAAC,SAAS,mBAAmB,CAAC,IAAI,EAAE;AACjD;CACA,KAAI,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,mCAAmC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5F;CACA;CACA,KAAI,IAAI,IAAI,GAAG,OAAO,IAAI,CAAC;AAC3B;CACA;CACA,KAAI,IAAI,IAAI,KAAK,IAAI,EAAE;CACvB,MAAK,OAAO;QACN,IAAI,GAAG,MAAM;QACb,KAAK,GAAG,UAAU;CACxB,OAAM,CAAC;OACF;CACL;CACA;CACA,KAAI,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;CACrC,MAAK,OAAO;QACN,IAAI,GAAG,WAAW;QAClB,KAAK,GAAG,eAAe;CAC7B,OAAM,CAAC;OACF;AACL;CACA;CACA,KAAI,KAAK,IAAI,YAAY,KAAK,EAAE;AAChC;CACA;CACA,MAAK,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACrB;CACA;CACA,MAAK,KAAK,IAAI,CAAC,IAAI,IAAI,EAAE;CACzB;QACM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,SAAS;AAC5C;CACA,OAAM,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC;AACN;CACA;OACK,OAAO,GAAG,CAAC;AAChB;OACK;AACL;CACA;CACA,KAAI,IAAI,IAAI,KAAK,QAAQ,EAAE;AAC3B;CACA;CACA,MAAK,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACrB;CACA;CACA,MAAK,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;AAC3B;CACA,OAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;CACnC,QAAO,SAAS;AAChB;QACM,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;CACzC,OAAM,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACzC;AACN;CACA;OACK,OAAO,GAAG,CAAC;AAChB;OACK;AACL;CACA;CACA,KAAI,IAAI,IAAI,KAAK,EAAE,EAAE;CACrB,MAAK,OAAO;QACN,IAAI,GAAG,OAAO;QACd,KAAK,GAAG,kBAAkB;CAChC,OAAM,CAAC;OACF;AACL;CACA;CACA,KAAI,IAAI,IAAI,KAAK,QAAQ,EAAE;AAC3B;CACA;CACA,MAAK,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACzD;CACA;CACA,MAAK,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE;QAChB,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACvC,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACtC;AACN;CACA;CACA,MAAK,OAAO;QACN,IAAI,GAAG,SAAS;QAChB,KAAK,GAAG,KAAK;CACnB,OAAM,CAAC;OACF;AACL;CACA;MACI,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE;AAC7C;CACA;CACA,MAAK,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC1D;CACA;CACA,MAAK,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE;QAChB,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACvC;AACN;CACA;CACA,MAAK,OAAO;QACN,IAAI,GAAG,UAAU;QACjB,KAAK,GAAG,KAAK;CACnB,OAAM,CAAC;OACF;AACL;CACA;CACA,KAAI,IAAI,IAAI,KAAK,QAAQ,EAAE;CAC3B;CACA,MAAK,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACxD;CACA;CACA,MAAK,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE;CACtB;QACM,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACrC;AACN;CACA;CACA,MAAK,OAAO;QACN,IAAI,GAAG,QAAQ;QACf,KAAK,GAAG,KAAK;CACnB,OAAM,CAAC;OACF;AACL;CACA;CACA,KAAI,IAAI,IAAI,KAAK,SAAS,EAAE;CAC5B,MAAK,OAAO;QACN,IAAI,GAAG,SAAS;CACtB,OAAM,KAAK,GAAG,IAAI,GAAG,UAAU,GAAG,WAAW;CAC7C,OAAM,CAAC;OACF;AACL;CACA;MACI,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAC;AACpE;MACI,EAAE,IAAI,CAAC,CAAC;AACZ;CACA;KACG,IAAI,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;KAC7C,IAAI,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;KAC7B,UAAU,CAAC,MAAM,CAAC,OAAO;AAC9C;KACG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AACpD;CACA;KACG,IAAI,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CAC7C,IAAG,MAAM,IAAI,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACjD,IAAG,MAAM,IAAI,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C;KACG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AACnD;CACA;KACG,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,eAAe,CAAC,IAAI,EAAE;AACnD;CACA,KAAI,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,iCAAiC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1F;CACA;CACA;CACA,KAAI,KAAK,IAAI,YAAY,KAAK,EAAE;AAChC;CACA;CACA,MAAK,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAC/B;CACA,MAAK,KAAK,IAAI,CAAC,IAAI,IAAI,EAAE;CACzB;CACA,OAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;CACjC,QAAO,SAAS;CAChB;QACM,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACzC;AACN;OACK,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC;AACrF;OACK;AACL;CACA;CACA,KAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AAC7C;CACA,KAAI,IAAI,IAAI,KAAK,SAAS,EAAE;CAC5B;CACA,MAAK,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;OAC1B;AACL;CACA,KAAI,IAAI,IAAI,KAAK,UAAU,EAAE;CAC7B;CACA,MAAK,OAAO,WAAW,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC;OACzC;AACL;CACA,KAAI,IAAI,IAAI,KAAK,QAAQ,EAAE;CAC3B;OACK,OAAO,WAAW,CAAC,YAAY,GAAG,aAAa,GAAG,KAAK,CAAC,CAAC;OACzD;AACL;CACA,KAAI,IAAI,IAAI,KAAK,SAAS,EAAE;CAC5B,MAAK,OAAO,IAAI,CAAC,KAAK,CAAC;OAClB;AACL;CACA,KAAI,IAAI,IAAI,KAAK,MAAM,EAAE;OACpB,OAAO,UAAU,CAAC;OAClB;AACL;CACA,KAAI,IAAI,IAAI,KAAK,WAAW,EAAE;OACzB,OAAO,eAAe,CAAC;OACvB;AACL;CACA,KAAI,IAAI,IAAI,KAAK,OAAO,EAAE;OACrB,OAAO,kBAAkB,CAAC;OAC1B;AACL;CACA,KAAI,MAAM,IAAI,SAAS,CAAC,oBAAoB,CAAC,CAAC;AAC9C;MACI,EAAE,GAAG,CAAC,CAAC;AACX;KACG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAC3C;CACA;KACG,IAAI,OAAO,CAAC,KAAK;CACpB,KAAI,OAAO;OACN,UAAU,GAAG,UAAU;OACvB,GAAG,GAAG,GAAG;OACT,MAAM,GAAG,MAAM;CACpB,MAAK,CAAC;AACN;KACG,OAAO,MAAM,CAAC;AACjB;CACA,IAAG,CAAC;AACJ;CACA,GAAE,IAAI,MAAM,GAAG,SAAS,MAAM,EAAE,OAAO,EAAE;AACzC;CACA;CACA,IAAG,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;AAC3B;CACA;KACG,IAAI,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACtC;CACA;KACG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;CACzD,IAAG,IAAI,UAAU,GAAG,EAAE,CAAC;AACvB;CACA;CACA,IAAG,IAAI,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;CAC9B,IAAG,IAAI,MAAM,KAAK,EAAE,EAAE;MAClB,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;MAC3B,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;CACnE,KAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;CAC5C,MAAK,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;OACpC;MACD;AACJ;CACA;CACA,IAAG,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;CAC1B,IAAG,IAAI,MAAM,KAAK,EAAE,EAAE;MAClB,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;MAC3B,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;CACpE,KAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;CAC5C,MAAK,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;OACxC;MACD;AACJ;CACA;CACA,IAAG,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;CAC1B,IAAG,IAAI,MAAM,KAAK,EAAE,EAAE;CACtB,KAAI,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAC;MAC1B,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;CAClE,KAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;CAC5C,MAAK,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;OACvC;MACD;CACJ;KACG,MAAM,GAAG,IAAI,CAAC;AACjB;KACG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;AAC9D;CACA;CACA,IAAG,IAAI,QAAQ,GAAG,EAAE,CAAC;CACrB,IAAG,IAAI,MAAM,GAAG,EAAE,CAAC;KAChB,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;CAChC,IAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;CACjC,KAAI,IAAI,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACzC,KAAI,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,EAAE;OACzE,IAAI,QAAQ,EAAE;QACb,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;QACnC,QAAQ,GAAG,EAAE,CAAC;QACd;OACD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CAC3C,MAAK,MAAM;OACN,QAAQ,IAAI,MAAM,CAAC;OACnB;MACD;AACJ;CACA;CACA,IAAG,IAAI,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;AACpC;CACA;CACA,IAAG,IAAI,WAAW,GAAG,CAAC,CAAC;AACvB;KACG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AAC/D;CACA,IAAG,OAAO,CAAC,SAAS,uBAAuB,GAAG;AAC9C;CACA;MACI,IAAI,IAAI,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AACrC;CACA,KAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,IAAI,KAAK,GAAG,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC;AACrG;CACA;CACA,KAAI,IAAI,IAAI,KAAK,GAAG,EAAE;AACtB;CACA,MAAK,IAAI,IAAI,GAAG,EAAE,CAAC;AACnB;CACA,MAAK,OAAO,WAAW,GAAG,YAAY,EAAE,WAAW,EAAE,EAAE;CACvD,OAAM,IAAI,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;CACtC,OAAM,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC,CAAC;QAC5D,IAAI,KAAK,KAAK,GAAG;SAChB,OAAO,IAAI,CAAC;QACb,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE;CAC1C,QAAO,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;CAC5C,QAAO,MAAM;CACb,QAAO,OAAO,KAAK;CACnB,SAAQ,KAAK,UAAU;CACvB,UAAS,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACzB,UAAS,MAAM;CACf,SAAQ,KAAK,WAAW;CACxB,UAAS,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CAC1B,UAAS,MAAM;CACf,SAAQ,KAAK,UAAU;CACvB,UAAS,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACzB,UAAS,MAAM;CACf,SAAQ,KAAK,eAAe;CAC5B,UAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;CAC9B,UAAS,MAAM;CACf,SAAQ,KAAK,kBAAkB;CAC/B,UAAS,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;CACvB,UAAS,MAAM;UACP;WACC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;UAC9B;AACR;SACO;QACD;AACN;CACA,MAAK,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3E;OACK,OAAO,IAAI,CAAC;AACjB;OACK;AACL;CACA;CACA,KAAI,IAAI,IAAI,KAAK,GAAG,EAAE;CACtB,MAAK,IAAI,IAAI,GAAG,EAAE,CAAC;AACnB;CACA,MAAK,OAAO,WAAW,GAAG,YAAY,EAAE,WAAW,EAAE,EAAE;AACvD;CACA,OAAM,IAAI,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AACpC;QACM,IAAI,GAAG,KAAK,GAAG;SACd,OAAO,IAAI,CAAC;AACnB;QACM,IAAI,GAAG,KAAK,kBAAkB;SAC7B,GAAG,GAAG,EAAE,CAAC;CAChB;CACA,QAAO,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7B;QACM,IAAI,KAAK,GAAG,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC;AACxC;QACM,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE;CAC1C,QAAO,IAAI,CAAC,GAAG,CAAC,GAAG,uBAAuB,EAAE,CAAC;CAC7C,QAAO,MAAM;CACb,QAAO,OAAO,KAAK;CACnB,SAAQ,KAAK,UAAU;CACvB,UAAS,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;CAC1B,UAAS,MAAM;CACf,SAAQ,KAAK,WAAW;CACxB,UAAS,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;CAC3B,UAAS,MAAM;CACf,SAAQ,KAAK,UAAU;CACvB,UAAS,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;CAC1B,UAAS,MAAM;CACf,SAAQ,KAAK,eAAe;CAC5B,UAAS,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;CAC/B,UAAS,MAAM;CACf,SAAQ,KAAK,kBAAkB;CAC/B,UAAS,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;CACxB,UAAS,MAAM;UACP;WACC,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;UAC/B;AACR;SACO;QACD;AACN;CACA,MAAK,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3E;OACK,OAAO,IAAI,CAAC;OACZ;AACL;MACI,MAAM,IAAI,SAAS,CAAC,YAAY,GAAG,IAAI,GAAG,gBAAgB,CAAC,CAAC;AAChE;CACA,KAAI,GAAG,CAAC;AACR;MACG;AAsEH;CACA,GAAE,IAAI,OAAO,GAAG,SAAS,GAAG,EAAE;CAC9B,IAAG,KAAK,OAAO,GAAG,KAAK,QAAQ;MAC3B,OAAO,GAAG,CAAC;AACf;KACG,OAAO,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,EAAE;CAClD,KAAI,OAAO,CAAC;MACR,GAAG,GAAG,GAAG;MACT,GAAG,GAAG,KAAK;MACX,GAAG,GAAG,KAAK;MACX,GAAG,GAAG,KAAK;MACX,GAAG,GAAG,KAAK;OACV,EAAE,CAAC,CAAC;CACT,KAAI,CAAC,CAAC;CACN,IAAG,CAAC;AACJ;CACA,GAAE,IAAI,OAAO,GAAG,SAAS,GAAG,EAAE;CAC9B,IAAG,KAAK,OAAO,GAAG,KAAK,QAAQ;MAC3B,OAAO,GAAG,CAAC;AACf;KACG,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,SAAS,CAAC,EAAE;CACzD,KAAI,OAAO,CAAC;MACR,GAAG,GAAG,GAAG;MACT,KAAK,GAAG,GAAG;MACX,KAAK,GAAG,GAAG;MACX,KAAK,GAAG,GAAG;MACX,KAAK,GAAG,GAAG;OACV,EAAE,CAAC,CAAC;CACT,KAAI,CAAC;CACL,IAAG,CAAC;AACJ;CACA,GAAE,IAAI,WAAW,GAAG,SAAS,MAAM,EAAE;CACrC,IAAG,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;CACnE,IAAG,CAAC;AACJ;CACA,GAAE,IAAI,WAAW,GAAG,SAAS,MAAM,EAAE;CACrC,IAAG,OAAO,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;CAC/B,IAAG,CAAC;AACJ;CACA,GAAE,IAAI,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO;CACxC,GAAE,SAAS,GAAG,EAAE,KAAK,EAAE;KACpB,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CAC3D,KAAI,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;OACpB,OAAO,CAAC,CAAC;OACT;MACD;KACD,OAAO,CAAC,CAAC,CAAC;CACb,IAAG,CAAC;AACJ;CACA,GAAE,OAAO;KACN,IAAI,GAAG,IAAI;KACX,IAAI,GAAG,IAAI;KACX,MAAM,GAAG,MAAM;CAClB,IAAG,CAAC;AACJ;CACA,GAAE,CAAC,CAAC;AACJ;CACA,EAAC,GAAiD,SAAS,IAAI,EAAE,OAAO,EAAE;CAC1E,EAAC,IAAI,QAAQ,GAAG,OAAO,EAAE,CAAC;GAExB,KAAK,IAAI,GAAG,IAAI,QAAQ;IACxB,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAED;GAC5B,CAAS,CAAC,CAAA;;;CCjkBX;CACA;CACA;CACA,SAAS,kBAAkB,CAAC,QAAQ,EAAE;CACtC,EAAE,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;CACrC,EAAE,OAAO,IAAI,CAAC,IAAI;CAClB,IAAI,SAAS,KAAK,EAAE;CACpB;CACA,MAAM,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW;CAC7D,QAAQ,OAAO,KAAK,CAAC;CACrB,OAAO,CAAC,CAAC;CACT,KAAK;CACL,IAAI,SAAS,MAAM,EAAE;CACrB;CACA,MAAM,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW;CAC7D;CACA,QAAQ,OAAO,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;CAC1C,OAAO,CAAC,CAAC;CACT,KAAK;CACL,GAAG,CAAC;CACJ;;CCpBA,SAAS,UAAU,CAAC,GAAG,EAAE;CACzB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;CACf,EAAE,OAAO,IAAI,CAAC,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE;CACzC,IAAI,IAAI,EAAE,GAAG,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,WAAW,CAAC,EAAE;CACrD,MAAM,OAAO,MAAM;CACnB,QAAQ,IAAI,SAAS;CACrB,UAAU,OAAO,GAAG;CACpB,YAAY,GAAG;CACf,YAAY,GAAG;CACf,YAAY,gEAAgE;CAC5E,SAAS;CACT,OAAO,CAAC;CACR,KAAK;CACL,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CAC/C,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC;CAC9C,IAAI,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;AAChC;CACA,IAAI,SAAS,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE;CACzB,MAAM,IAAI,GAAG,KAAK,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,UAAU,CAAC,EAAE;CACzE,QAAQ,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;CAC5B,QAAQ,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;CACxC,UAAU,IAAI,CAAC,IAAI;CACnB,YAAY,GAAG;CACf,YAAY,SAAS,GAAG,EAAE;CAC1B,cAAc,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;CAC1B,aAAa;CACb,YAAY,SAAS,CAAC,EAAE;CACxB,cAAc,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;CAC1D,cAAc,IAAI,EAAE,SAAS,KAAK,CAAC,EAAE;CACrC,gBAAgB,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B,eAAe;CACf,aAAa;CACb,WAAW,CAAC;CACZ,UAAU,OAAO;CACjB,SAAS;CACT,OAAO;CACP,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;CACpD,MAAM,IAAI,EAAE,SAAS,KAAK,CAAC,EAAE;CAC7B,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB,OAAO;CACP,KAAK;AACL;CACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CAC1C,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;CACtB,KAAK;CACL,GAAG,CAAC,CAAC;CACL;;CC9CA;CACA;CACA;CACA,SAAS,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE;CACzC,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,gBAAgB,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;CACzD,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;CAC/B,CAAC;CACD,cAAc,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;AAC3C;CACA,SAAS,GAAG,CAAC,GAAG,EAAE;CAClB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;CACf,EAAE,OAAO,IAAI,CAAC,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE;CACzC,IAAI,IAAI,EAAE,GAAG,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,WAAW,CAAC,EAAE;CACrD,MAAM,OAAO,MAAM,CAAC,IAAI,SAAS,CAAC,8BAA8B,CAAC,CAAC,CAAC;CACnE,KAAK;AACL;CACA,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CAC/C,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,MAAM,EAAE,CAAC;AAC3C;CACA,IAAI,IAAI,gBAAgB,GAAG,EAAE,CAAC;CAC9B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CAC1C,MAAM,IAAI;CACV,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAC1B,WAAW,IAAI,CAAC,OAAO,CAAC;CACxB,WAAW,KAAK,CAAC,SAAS,KAAK,EAAE;CACjC,YAAY,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CACzC,YAAY,IAAI,gBAAgB,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;CACzD,cAAc,MAAM;CACpB,gBAAgB,IAAI,cAAc;CAClC,kBAAkB,gBAAgB;CAClC,kBAAkB,4BAA4B;CAC9C,iBAAiB;CACjB,eAAe,CAAC;CAChB,aAAa;CACb,WAAW,CAAC,CAAC;CACb,OAAO,CAAC,OAAO,EAAE,EAAE;CACnB,QAAQ,MAAM,CAAC,EAAE,CAAC,CAAC;CACnB,OAAO;CACP,KAAK;CACL,GAAG,CAAC,CAAC;CACL;;CCpCA;CACA;CACA,IAAI,cAAc,GAAG,UAAU,CAAC;AAChC;CACA,SAAS,OAAO,CAAC,CAAC,EAAE;CACpB,EAAE,OAAO,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;CACvD,CAAC;AACD;CACA,SAAS,IAAI,GAAG,EAAE;AAClB;CACA;CACA,SAAS,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE;CAC3B,EAAE,OAAO,WAAW;CACpB,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;CACjC,GAAG,CAAC;CACJ,CAAC;AACD;CACA;CACA;CACA;CACA;CACA,SAAS2B,SAAO,CAAC,EAAE,EAAE;CACrB,EAAE,IAAI,EAAE,IAAI,YAAYA,SAAO,CAAC;CAChC,IAAI,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;CAChE,EAAE,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,IAAI,SAAS,CAAC,gBAAgB,CAAC,CAAC;CACtE;CACA,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;CAClB;CACA,EAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;CACxB;CACA,EAAE,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;CAC1B;CACA,EAAE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACvB;CACA,EAAE,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;CACtB,CAAC;AACD;CACA,SAAS,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE;CAChC,EAAE,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;CAC5B,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;CACvB,GAAG;CACH,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;CACzB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;CACnC,IAAI,OAAO;CACX,GAAG;CACH,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;CACvB,EAAEA,SAAO,CAAC,YAAY,CAAC,WAAW;CAClC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC;CAC5E,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE;CACrB,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,OAAO,GAAG,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;CAC5E,MAAM,OAAO;CACb,KAAK;CACL,IAAI,IAAI,GAAG,CAAC;CACZ,IAAI,IAAI;CACR,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CAC5B,KAAK,CAAC,OAAO,CAAC,EAAE;CAChB,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;CAClC,MAAM,OAAO;CACb,KAAK;CACL,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;CACnC,GAAG,CAAC,CAAC;CACL,CAAC;AACD;CACA,SAAS,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE;CACjC,EAAE,IAAI;CACN;CACA,IAAI,IAAI,QAAQ,KAAK,IAAI;CACzB,MAAM,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC;CACvE,IAAI;CACJ,MAAM,QAAQ;CACd,OAAO,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,UAAU,CAAC;CACtE,MAAM;CACN,MAAM,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;CAC/B,MAAM,IAAI,QAAQ,YAAYA,SAAO,EAAE;CACvC,QAAQ,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;CACxB,QAAQ,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;CAC/B,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC;CACrB,QAAQ,OAAO;CACf,OAAO,MAAM,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;CAC7C,QAAQ,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;CAC9C,QAAQ,OAAO;CACf,OAAO;CACP,KAAK;CACL,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;CACpB,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;CAC3B,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;CACjB,GAAG,CAAC,OAAO,CAAC,EAAE;CACd,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;CACpB,GAAG;CACH,CAAC;AACD;CACA,SAAS,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE;CAChC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;CAClB,EAAE,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;CACzB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;CACf,CAAC;AACD;CACA,SAAS,MAAM,CAAC,IAAI,EAAE;CACtB,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;CACzD,IAAIA,SAAO,CAAC,YAAY,CAAC,WAAW;CACpC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;CAC1B,QAAQA,SAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CACnD,OAAO;CACP,KAAK,CAAC,CAAC;CACP,GAAG;AACH;CACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;CAC9D,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;CACrC,GAAG;CACH,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;CACzB,CAAC;AACD;CACA;CACA;CACA;CACA,SAAS,OAAO,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE;CACnD,EAAE,IAAI,CAAC,WAAW,GAAG,OAAO,WAAW,KAAK,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC;CAC5E,EAAE,IAAI,CAAC,UAAU,GAAG,OAAO,UAAU,KAAK,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC;CACzE,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;CACzB,CAAC;AACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA,SAAS,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE;CAC7B,EAAE,IAAI,IAAI,GAAG,KAAK,CAAC;CACnB,EAAE,IAAI;CACN,IAAI,EAAE;CACN,MAAM,SAAS,KAAK,EAAE;CACtB,QAAQ,IAAI,IAAI,EAAE,OAAO;CACzB,QAAQ,IAAI,GAAG,IAAI,CAAC;CACpB,QAAQ,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;CAC7B,OAAO;CACP,MAAM,SAAS,MAAM,EAAE;CACvB,QAAQ,IAAI,IAAI,EAAE,OAAO;CACzB,QAAQ,IAAI,GAAG,IAAI,CAAC;CACpB,QAAQ,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;CAC7B,OAAO;CACP,KAAK,CAAC;CACN,GAAG,CAAC,OAAO,EAAE,EAAE;CACf,IAAI,IAAI,IAAI,EAAE,OAAO;CACrB,IAAI,IAAI,GAAG,IAAI,CAAC;CAChB,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;CACrB,GAAG;CACH,CAAC;AACD;AACAA,UAAO,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,SAAS,UAAU,EAAE;CAClD,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;CACrC,CAAC,CAAC;AACF;AACAA,UAAO,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,WAAW,EAAE,UAAU,EAAE;CAC3D;CACA,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACxC;CACA,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,OAAO,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;CAC3D,EAAE,OAAO,IAAI,CAAC;CACd,CAAC,CAAC;AACF;AACAA,UAAO,CAAC,SAAS,CAAC,SAAS,CAAC,GAAGC,kBAAc,CAAC;AAC9C;AACAD,UAAO,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE;CAC5B,EAAE,OAAO,IAAIA,SAAO,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE;CAC/C,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;CACvB,MAAM,OAAO,MAAM,CAAC,IAAI,SAAS,CAAC,8BAA8B,CAAC,CAAC,CAAC;CACnE,KAAK;AACL;CACA,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CAC/C,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC;CAC9C,IAAI,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;AAChC;CACA,IAAI,SAAS,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE;CACzB,MAAM,IAAI;CACV,QAAQ,IAAI,GAAG,KAAK,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,UAAU,CAAC,EAAE;CAC3E,UAAU,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;CAC9B,UAAU,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;CAC1C,YAAY,IAAI,CAAC,IAAI;CACrB,cAAc,GAAG;CACjB,cAAc,SAAS,GAAG,EAAE;CAC5B,gBAAgB,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;CAC5B,eAAe;CACf,cAAc,MAAM;CACpB,aAAa,CAAC;CACd,YAAY,OAAO;CACnB,WAAW;CACX,SAAS;CACT,QAAQ,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;CACtB,QAAQ,IAAI,EAAE,SAAS,KAAK,CAAC,EAAE;CAC/B,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,SAAS;CACT,OAAO,CAAC,OAAO,EAAE,EAAE;CACnB,QAAQ,MAAM,CAAC,EAAE,CAAC,CAAC;CACnB,OAAO;CACP,KAAK;AACL;CACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CAC1C,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;CACtB,KAAK;CACL,GAAG,CAAC,CAAC;CACL,CAAC,CAAC;AACF;AACAA,UAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AAClB;AACAA,UAAO,CAAC,UAAU,GAAG,UAAU,CAAC;AAChC;AACAA,UAAO,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE;CAClC,EAAE,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,WAAW,KAAKA,SAAO,EAAE;CAC3E,IAAI,OAAO,KAAK,CAAC;CACjB,GAAG;AACH;CACA,EAAE,OAAO,IAAIA,SAAO,CAAC,SAAS,OAAO,EAAE;CACvC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;CACnB,GAAG,CAAC,CAAC;CACL,CAAC,CAAC;AACF;AACAA,UAAO,CAAC,MAAM,GAAG,SAAS,KAAK,EAAE;CACjC,EAAE,OAAO,IAAIA,SAAO,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE;CAC/C,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;CAClB,GAAG,CAAC,CAAC;CACL,CAAC,CAAC;AACF;AACAA,UAAO,CAAC,IAAI,GAAG,SAAS,GAAG,EAAE;CAC7B,EAAE,OAAO,IAAIA,SAAO,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE;CAC/C,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;CACvB,MAAM,OAAO,MAAM,CAAC,IAAI,SAAS,CAAC,+BAA+B,CAAC,CAAC,CAAC;CACpE,KAAK;AACL;CACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;CACpD,MAAMA,SAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;CACpD,KAAK;CACL,GAAG,CAAC,CAAC;CACL,CAAC,CAAC;AACF;CACA;AACAA,UAAO,CAAC,YAAY;CACpB;CACA,EAAE,CAAC,OAAO,YAAY,KAAK,UAAU;CACrC,IAAI,SAAS,EAAE,EAAE;CACjB;CACA,MAAM,YAAY,CAAC,EAAE,CAAC,CAAC;CACvB,KAAK;CACL,EAAE,SAAS,EAAE,EAAE;CACf,IAAI,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;CAC1B,GAAG,CAAC;AACJ;AACAA,UAAO,CAAC,qBAAqB,GAAG,SAAS,qBAAqB,CAAC,GAAG,EAAE;CACpE,EAAE,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,EAAE;CACjD,IAAI,OAAO,CAAC,IAAI,CAAC,uCAAuC,EAAE,GAAG,CAAC,CAAC;CAC/D,GAAG;CACH,CAAC;;CC1PD;CACA,IAAI,QAAQ,GAAG,CAAC,WAAW;CAC3B;CACA;CACA;CACA,EAAE,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;CACnC,IAAI,OAAO,IAAI,CAAC;CAChB,GAAG;CACH,EAAE,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;CACrC,IAAI,OAAO,MAAM,CAAC;CAClB,GAAG;CACH,EAAE,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;CACrC,IAAI,OAAO,MAAM,CAAC;CAClB,GAAG;CACH,EAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;CACpD,CAAC,GAAG,CAAC;AACL;CACA;CACA;CACA;CACA;CACA,IAAI,OAAO,QAAQ,CAAC,SAAS,CAAC,KAAK,UAAU,EAAE;CAC/C,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAGA,SAAO,CAAC;CAChC,CAAC,MAAM;CACP,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;CAC9C,IAAI,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,GAAGC,kBAAc,CAAC;CAC3D,GAAG;CACH,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE;CACpC,IAAI,QAAQ,CAAC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;CAC7C,GAAG;CACH,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE;CAC7B,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;CAC/B,GAAG;CACH;;CCtCO,SAASC,UAAUA,CAACC,GAAG,EAAE;CAC9B,EAAA,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;CAC3B,IAAA,OAAOA,GAAG,CAAA;CACZ,GAAA;GACA,IAAIC,IAAI,GAAG,EAAE,CAAA;GACb,IAAIC,IAAI,GAAG,EAAE,CAAA;CACb,EAAA,KAAK,IAAIC,GAAG,IAAIH,GAAG,EAAE;CACnBE,IAAAA,IAAI,CAACE,IAAI,CAACD,GAAG,CAAC,CAAA;CAChB,GAAA;GACAD,IAAI,CAACG,IAAI,EAAE,CAAA;CACX,EAAA,KAAK,IAAIC,KAAK,IAAIJ,IAAI,EAAE;CACtBD,IAAAA,IAAI,CAACC,IAAI,CAACI,KAAK,CAAC,CAAC,GAAGP,UAAU,CAACC,GAAG,CAACE,IAAI,CAACI,KAAK,CAAC,CAAC,CAAC,CAAA;CAClD,GAAA;CACA,EAAA,OAAOL,IAAI,CAAA;CACb,CAAA;CAEO,SAASM,mBAAmBA,CAACC,IAAI,EAAE;CACxC,EAAA,IAAIC,QAAQ,GAAGC,QAAQ,CAACC,aAAa,CAAC,UAAU,CAAC,CAAA;GACjDF,QAAQ,CAACG,KAAK,GAAGJ,IAAI,CAAA;CACrBE,EAAAA,QAAQ,CAACG,IAAI,CAACC,WAAW,CAACL,QAAQ,CAAC,CAAA;GACnCA,QAAQ,CAACM,MAAM,EAAE,CAAA;GACjB,IAAI;CACF,IAAA,IAAIC,UAAU,GAAGN,QAAQ,CAACO,WAAW,CAAC,MAAM,CAAC,CAAA;CAC7C,IAAA,IAAIC,GAAG,GAAGF,UAAU,GAAG,YAAY,GAAG,cAAc,CAAA;CACpDG,IAAAA,OAAO,CAACC,GAAG,CAAC,2BAA2B,GAAGF,GAAG,CAAC,CAAA;IAC/C,CAAC,OAAOG,GAAG,EAAE;CACZF,IAAAA,OAAO,CAACC,GAAG,CAAC,sBAAsB,CAAC,CAAA;CACrC,GAAA;CACAV,EAAAA,QAAQ,CAACG,IAAI,CAACS,WAAW,CAACb,QAAQ,CAAC,CAAA;CACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CCvBC,CAAC,UAAU,MAAM,EAAE,OAAO,EAAE;OACsC,MAAiB,CAAA,OAAA,GAAA,OAAO,EAAE,EAEhE;CAC7B,GAAC,CAACc,cAAI,GAAG,YAAY,CACrB;OACI,IAAI,YAAY,CAAC;AACrB;OACI,SAAS,KAAK,GAAG;WACb,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC9C;AACL;CACA;CACA;CACA,MAAI,SAAS,eAAe,CAAC,QAAQ,EAAE;WAC/B,YAAY,GAAG,QAAQ,CAAC;QAC3B;AACL;CACA,MAAI,SAAS,OAAO,CAAC,KAAK,EAAE;WACpB;eACI,KAAK,YAAY,KAAK;eACtB,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,gBAAgB;aAC5D;QACL;AACL;CACA,MAAI,SAAS,QAAQ,CAAC,KAAK,EAAE;CAC7B;CACA;WACQ;eACI,KAAK,IAAI,IAAI;eACb,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,iBAAiB;aAC7D;QACL;AACL;CACA,MAAI,SAAS,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE;CAC9B,UAAQ,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACrD;AACL;CACA,MAAI,SAAS,aAAa,CAAC,GAAG,EAAE;CAChC,UAAQ,IAAI,MAAM,CAAC,mBAAmB,EAAE;eAC5B,OAAO,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;CAChE,WAAS,MAAM;eACH,IAAI,CAAC,CAAC;CAClB,cAAY,KAAK,CAAC,IAAI,GAAG,EAAE;CAC3B,kBAAgB,IAAI,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;uBACpB,OAAO,KAAK,CAAC;oBAChB;gBACJ;eACD,OAAO,IAAI,CAAC;YACf;QACJ;AACL;CACA,MAAI,SAAS,WAAW,CAAC,KAAK,EAAE;CAChC,UAAQ,OAAO,KAAK,KAAK,KAAK,CAAC,CAAC;QAC3B;AACL;CACA,MAAI,SAAS,QAAQ,CAAC,KAAK,EAAE;WACrB;eACI,OAAO,KAAK,KAAK,QAAQ;eACzB,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,iBAAiB;aAC7D;QACL;AACL;CACA,MAAI,SAAS,MAAM,CAAC,KAAK,EAAE;WACnB;eACI,KAAK,YAAY,IAAI;eACrB,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,eAAe;aAC3D;QACL;AACL;CACA,MAAI,SAAS,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE;WAClB,IAAI,GAAG,GAAG,EAAE;CACpB,cAAY,CAAC;CACb,cAAY,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;WACxB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;CACrC,cAAY,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3B;WACD,OAAO,GAAG,CAAC;QACd;AACL;CACA,MAAI,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;CAC1B,UAAQ,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE;CACzB,cAAY,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;mBAClB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACf;YACJ;AACT;CACA,UAAQ,IAAI,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE;CACvC,cAAY,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;YAC3B;AACT;CACA,UAAQ,IAAI,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE;CACtC,cAAY,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;YACzB;AACT;WACQ,OAAO,CAAC,CAAC;QACZ;AACL;OACI,SAAS,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;CACtD,UAAQ,OAAO,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;QACtE;AACL;OACI,SAAS,mBAAmB,GAAG;CACnC;CACA,UAAQ,OAAO;eACH,KAAK,EAAE,KAAK;eACZ,YAAY,EAAE,EAAE;eAChB,WAAW,EAAE,EAAE;eACf,QAAQ,EAAE,CAAC,CAAC;eACZ,aAAa,EAAE,CAAC;eAChB,SAAS,EAAE,KAAK;eAChB,UAAU,EAAE,IAAI;eAChB,YAAY,EAAE,IAAI;eAClB,aAAa,EAAE,KAAK;eACpB,eAAe,EAAE,KAAK;eACtB,GAAG,EAAE,KAAK;eACV,eAAe,EAAE,EAAE;eACnB,GAAG,EAAE,IAAI;eACT,QAAQ,EAAE,IAAI;eACd,OAAO,EAAE,KAAK;eACd,eAAe,EAAE,KAAK;CAClC,WAAS,CAAC;QACL;AACL;CACA,MAAI,SAAS,eAAe,CAAC,CAAC,EAAE;CAChC,UAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,EAAE;CAC3B,cAAY,CAAC,CAAC,GAAG,GAAG,mBAAmB,EAAE,CAAC;YACjC;CACT,UAAQ,OAAO,CAAC,CAAC,GAAG,CAAC;QAChB;AACL;OACI,IAAI,IAAI,CAAC;CACb,MAAI,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE;CAC9B,UAAQ,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;CACpC,OAAK,MAAM;CACX,UAAQ,IAAI,GAAG,UAAU,GAAG,EAAE;CAC9B,cAAY,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;CAChC,kBAAgB,GAAG,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC;CACpC,kBAAgB,CAAC,CAAC;AAClB;eACY,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;mBACtB,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;uBACtC,OAAO,IAAI,CAAC;oBACf;gBACJ;AACb;eACY,OAAO,KAAK,CAAC;CACzB,WAAS,CAAC;QACL;AACL;CACA,MAAI,SAAS,OAAO,CAAC,CAAC,EAAE;CACxB,UAAQ,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI,EAAE;CAChC,cAAY,IAAI,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC;CAC1C,kBAAgB,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE;CAC5E,sBAAoB,OAAO,CAAC,IAAI,IAAI,CAAC;CACrC,mBAAiB,CAAC;CAClB,kBAAgB,UAAU;uBACN,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;CAC1C,sBAAoB,KAAK,CAAC,QAAQ,GAAG,CAAC;uBAClB,CAAC,KAAK,CAAC,KAAK;uBACZ,CAAC,KAAK,CAAC,UAAU;uBACjB,CAAC,KAAK,CAAC,YAAY;uBACnB,CAAC,KAAK,CAAC,cAAc;uBACrB,CAAC,KAAK,CAAC,eAAe;uBACtB,CAAC,KAAK,CAAC,SAAS;uBAChB,CAAC,KAAK,CAAC,aAAa;uBACpB,CAAC,KAAK,CAAC,eAAe;CAC1C,uBAAqB,CAAC,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC;AACzE;CACA,cAAY,IAAI,CAAC,CAAC,OAAO,EAAE;CAC3B,kBAAgB,UAAU;CAC1B,sBAAoB,UAAU;CAC9B,sBAAoB,KAAK,CAAC,aAAa,KAAK,CAAC;CAC7C,sBAAoB,KAAK,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;CACnD,sBAAoB,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC;gBACnC;AACb;CACA,cAAY,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;CAChE,kBAAgB,CAAC,CAAC,QAAQ,GAAG,UAAU,CAAC;CACxC,eAAa,MAAM;mBACH,OAAO,UAAU,CAAC;gBACrB;YACJ;CACT,UAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC;QACrB;AACL;CACA,MAAI,SAAS,aAAa,CAAC,KAAK,EAAE;CAClC,UAAQ,IAAI,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;CAC/B,UAAQ,IAAI,KAAK,IAAI,IAAI,EAAE;eACf,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;CAC9C,WAAS,MAAM;eACH,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,IAAI,CAAC;YAC7C;AACT;WACQ,OAAO,CAAC,CAAC;QACZ;AACL;CACA;CACA;OACI,IAAI,gBAAgB,IAAI,KAAK,CAAC,gBAAgB,GAAG,EAAE,CAAC;WAChD,gBAAgB,GAAG,KAAK,CAAC;AACjC;CACA,MAAI,SAAS,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE;CAClC,UAAQ,IAAI,CAAC;CACb,cAAY,IAAI;CAChB,cAAY,GAAG;CACf,cAAY,mBAAmB,GAAG,gBAAgB,CAAC,MAAM,CAAC;AAC1D;WACQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;CACjD,cAAY,EAAE,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAC/C;WACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;CACnC,cAAY,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YACnB;WACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;CACnC,cAAY,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YACnB;WACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;CACnC,cAAY,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YACnB;WACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;CACxC,cAAY,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC7B;WACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;CACrC,cAAY,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACvB;WACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;CACvC,cAAY,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC3B;WACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;CACxC,cAAY,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC7B;WACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;eACxB,EAAE,CAAC,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;YAClC;WACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;CACxC,cAAY,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC7B;AACT;CACA,UAAQ,IAAI,mBAAmB,GAAG,CAAC,EAAE;eACzB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,EAAE,CAAC,EAAE,EAAE;CACtD,kBAAgB,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;CAC3C,kBAAgB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;CACjC,kBAAgB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;CACvC,sBAAoB,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;oBAClB;gBACJ;YACJ;AACT;WACQ,OAAO,EAAE,CAAC;QACb;AACL;CACA;CACA,MAAI,SAAS,MAAM,CAAC,MAAM,EAAE;CAC5B,UAAQ,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;WACzB,IAAI,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,CAAC;CAC1E,UAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;eACjB,IAAI,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3B;CACT;CACA;CACA,UAAQ,IAAI,gBAAgB,KAAK,KAAK,EAAE;eAC5B,gBAAgB,GAAG,IAAI,CAAC;CACpC,cAAY,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;eACzB,gBAAgB,GAAG,KAAK,CAAC;YAC5B;QACJ;AACL;CACA,MAAI,SAAS,QAAQ,CAAC,GAAG,EAAE;WACnB;CACR,cAAY,GAAG,YAAY,MAAM,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,gBAAgB,IAAI,IAAI,CAAC;aACxE;QACL;AACL;CACA,MAAI,SAAS,IAAI,CAAC,GAAG,EAAE;WACf;CACR,cAAY,KAAK,CAAC,2BAA2B,KAAK,KAAK;eAC3C,OAAO,OAAO,KAAK,WAAW;eAC9B,OAAO,CAAC,IAAI;aACd;eACE,OAAO,CAAC,IAAI,CAAC,uBAAuB,GAAG,GAAG,CAAC,CAAC;YAC/C;QACJ;AACL;CACA,MAAI,SAAS,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE;CAChC,UAAQ,IAAI,SAAS,GAAG,IAAI,CAAC;AAC7B;WACQ,OAAO,MAAM,CAAC,YAAY;CAClC,cAAY,IAAI,KAAK,CAAC,kBAAkB,IAAI,IAAI,EAAE;mBAClC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACvC;eACD,IAAI,SAAS,EAAE;mBACX,IAAI,IAAI,GAAG,EAAE;CAC7B,sBAAoB,GAAG;CACvB,sBAAoB,CAAC;CACrB,sBAAoB,GAAG;CACvB,sBAAoB,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;mBAC9B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;uBACzB,GAAG,GAAG,EAAE,CAAC;uBACT,IAAI,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;CAC1D,0BAAwB,GAAG,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC;CAChD,0BAAwB,KAAK,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE;+BACtB,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;CAC/D,kCAAgC,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;gCAChD;4BACJ;2BACD,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CAC/C,uBAAqB,MAAM;CAC3B,0BAAwB,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;wBACtB;CACrB,sBAAoB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClB;CACjB,kBAAgB,IAAI;CACpB,sBAAoB,GAAG;CACvB,0BAAwB,eAAe;CACvC,0BAAwB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;CACjE,0BAAwB,IAAI;CAC5B,0BAAwB,IAAI,KAAK,EAAE,CAAC,KAAK;CACzC,mBAAiB,CAAC;mBACF,SAAS,GAAG,KAAK,CAAC;gBACrB;eACD,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACpC,EAAE,EAAE,CAAC,CAAC;QACV;AACL;CACA,MAAI,IAAI,YAAY,GAAG,EAAE,CAAC;AAC1B;CACA,MAAI,SAAS,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE;CACxC,UAAQ,IAAI,KAAK,CAAC,kBAAkB,IAAI,IAAI,EAAE;eAClC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACvC;CACT,UAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;CACjC,cAAY,IAAI,CAAC,GAAG,CAAC,CAAC;CACtB,cAAY,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YAC7B;QACJ;AACL;CACA,MAAI,KAAK,CAAC,2BAA2B,GAAG,KAAK,CAAC;CAC9C,MAAI,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC;AACpC;CACA,MAAI,SAAS,UAAU,CAAC,KAAK,EAAE;WACvB;eACI,CAAC,OAAO,QAAQ,KAAK,WAAW,IAAI,KAAK,YAAY,QAAQ;eAC7D,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,mBAAmB;aAC/D;QACL;AACL;CACA,MAAI,SAAS,GAAG,CAAC,MAAM,EAAE;CACzB,UAAQ,IAAI,IAAI,EAAE,CAAC,CAAC;CACpB,UAAQ,KAAK,CAAC,IAAI,MAAM,EAAE;CAC1B,cAAY,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE;CACvC,kBAAgB,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;CACjC,kBAAgB,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;CACtC,sBAAoB,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CACnC,mBAAiB,MAAM;uBACH,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;oBACxB;gBACJ;YACJ;CACT,UAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;CAC9B;CACA;CACA;CACA,UAAQ,IAAI,CAAC,8BAA8B,GAAG,IAAI,MAAM;eAC5C,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM;CAC7E,kBAAgB,GAAG;mBACH,SAAS,CAAC,MAAM;CAChC,WAAS,CAAC;QACL;AACL;CACA,MAAI,SAAS,YAAY,CAAC,YAAY,EAAE,WAAW,EAAE;WAC7C,IAAI,GAAG,GAAG,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC;CAC1C,cAAY,IAAI,CAAC;CACjB,UAAQ,KAAK,IAAI,IAAI,WAAW,EAAE;CAClC,cAAY,IAAI,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE;CAC/C,kBAAgB,IAAI,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE;CACjF,sBAAoB,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;CACnC,sBAAoB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;CAC1D,sBAAoB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;oBACxC,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;uBAClC,GAAG,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;CAClD,mBAAiB,MAAM;CACvB,sBAAoB,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;oBACpB;gBACJ;YACJ;CACT,UAAQ,KAAK,IAAI,IAAI,YAAY,EAAE;eACvB;CACZ,kBAAgB,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC;CAC9C,kBAAgB,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC;CAC9C,kBAAgB,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;iBAC9B;CACd;CACA,kBAAgB,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;gBACrC;YACJ;WACD,OAAO,GAAG,CAAC;QACd;AACL;CACA,MAAI,SAAS,MAAM,CAAC,MAAM,EAAE;CAC5B,UAAQ,IAAI,MAAM,IAAI,IAAI,EAAE;CAC5B,cAAY,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpB;QACJ;AACL;OACI,IAAI,IAAI,CAAC;AACb;CACA,MAAI,IAAI,MAAM,CAAC,IAAI,EAAE;CACrB,UAAQ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;CAC3B,OAAK,MAAM;CACX,UAAQ,IAAI,GAAG,UAAU,GAAG,EAAE;CAC9B,cAAY,IAAI,CAAC;mBACD,GAAG,GAAG,EAAE,CAAC;CACzB,cAAY,KAAK,CAAC,IAAI,GAAG,EAAE;CAC3B,kBAAgB,IAAI,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;CACxC,sBAAoB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACf;gBACJ;eACD,OAAO,GAAG,CAAC;CACvB,WAAS,CAAC;QACL;AACL;OACI,IAAI,eAAe,GAAG;WAClB,OAAO,EAAE,eAAe;WACxB,OAAO,EAAE,kBAAkB;WAC3B,QAAQ,EAAE,cAAc;WACxB,OAAO,EAAE,mBAAmB;WAC5B,QAAQ,EAAE,qBAAqB;WAC/B,QAAQ,EAAE,GAAG;CACrB,OAAK,CAAC;AACN;OACI,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;CACrC,UAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;CACvE,UAAQ,OAAO,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;QAC9D;AACL;OACI,SAAS,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE;WAC/C,IAAI,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;CAC7C,cAAY,WAAW,GAAG,YAAY,GAAG,SAAS,CAAC,MAAM;CACzD,cAAY,IAAI,GAAG,MAAM,IAAI,CAAC,CAAC;WACvB;eACI,CAAC,IAAI,IAAI,SAAS,GAAG,GAAG,GAAG,EAAE,IAAI,GAAG;eACpC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;CACvE,cAAY,SAAS;aACX;QACL;AACL;CACA,MAAI,IAAI,gBAAgB;CACxB,cAAY,wMAAwM;WAC5M,qBAAqB,GAAG,4CAA4C;WACpE,eAAe,GAAG,EAAE;WACpB,oBAAoB,GAAG,EAAE,CAAC;AAClC;CACA;CACA;CACA;CACA;OACI,SAAS,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;CAC9D,UAAQ,IAAI,IAAI,GAAG,QAAQ,CAAC;CAC5B,UAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;eAC9B,IAAI,GAAG,YAAY;CAC/B,kBAAgB,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;CACxC,eAAa,CAAC;YACL;WACD,IAAI,KAAK,EAAE;CACnB,cAAY,oBAAoB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;YACtC;WACD,IAAI,MAAM,EAAE;eACR,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY;mBAC1C,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;CACnF,eAAa,CAAC;YACL;WACD,IAAI,OAAO,EAAE;CACrB,cAAY,oBAAoB,CAAC,OAAO,CAAC,GAAG,YAAY;CACxD,kBAAgB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO;CAChD,sBAAoB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC;CAC/C,sBAAoB,KAAK;CACzB,mBAAiB,CAAC;CAClB,eAAa,CAAC;YACL;QACJ;AACL;CACA,MAAI,SAAS,sBAAsB,CAAC,KAAK,EAAE;CAC3C,UAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;eACzB,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YACxC;WACD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACnC;AACL;CACA,MAAI,SAAS,kBAAkB,CAAC,MAAM,EAAE;WAChC,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC;CAClD,cAAY,CAAC;CACb,cAAY,MAAM,CAAC;AACnB;CACA,UAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;eAChD,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;CAChD,kBAAgB,KAAK,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;CAC1D,eAAa,MAAM;CACnB,kBAAgB,KAAK,CAAC,CAAC,CAAC,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/C;YACJ;AACT;WACQ,OAAO,UAAU,GAAG,EAAE;eAClB,IAAI,MAAM,GAAG,EAAE;CAC3B,kBAAgB,CAAC,CAAC;eACN,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;mBACzB,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;yBACxB,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;CAChD,wBAAsB,KAAK,CAAC,CAAC,CAAC,CAAC;gBAClB;eACD,OAAO,MAAM,CAAC;CAC1B,WAAS,CAAC;QACL;AACL;CACA;CACA,MAAI,SAAS,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE;CACrC,UAAQ,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE;eACd,OAAO,CAAC,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,CAAC;YACvC;AACT;WACQ,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;WAC9C,eAAe,CAAC,MAAM,CAAC;eACnB,eAAe,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAClE;WACQ,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC;AACL;CACA,MAAI,SAAS,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE;CAC1C,UAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;AAClB;CACA,UAAQ,SAAS,2BAA2B,CAAC,KAAK,EAAE;eACxC,OAAO,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;YAChD;AACT;CACA,UAAQ,qBAAqB,CAAC,SAAS,GAAG,CAAC,CAAC;WACpC,OAAO,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;CAC7D,cAAY,MAAM,GAAG,MAAM,CAAC,OAAO;CACnC,kBAAgB,qBAAqB;CACrC,kBAAgB,2BAA2B;CAC3C,eAAa,CAAC;CACd,cAAY,qBAAqB,CAAC,SAAS,GAAG,CAAC,CAAC;eACpC,CAAC,IAAI,CAAC,CAAC;YACV;AACT;WACQ,OAAO,MAAM,CAAC;QACjB;AACL;OACI,IAAI,qBAAqB,GAAG;WACxB,GAAG,EAAE,WAAW;WAChB,EAAE,EAAE,QAAQ;WACZ,CAAC,EAAE,YAAY;WACf,EAAE,EAAE,cAAc;WAClB,GAAG,EAAE,qBAAqB;WAC1B,IAAI,EAAE,2BAA2B;CACzC,OAAK,CAAC;AACN;CACA,MAAI,SAAS,cAAc,CAAC,GAAG,EAAE;WACzB,IAAI,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;eAClC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;AAClE;CACA,UAAQ,IAAI,MAAM,IAAI,CAAC,WAAW,EAAE;eACxB,OAAO,MAAM,CAAC;YACjB;AACT;CACA,UAAQ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,WAAW;gBAClC,KAAK,CAAC,gBAAgB,CAAC;CACpC,eAAa,GAAG,CAAC,UAAU,GAAG,EAAE;mBAChB;uBACI,GAAG,KAAK,MAAM;uBACd,GAAG,KAAK,IAAI;uBACZ,GAAG,KAAK,IAAI;uBACZ,GAAG,KAAK,MAAM;qBAChB;CAClB,sBAAoB,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACvB;mBACD,OAAO,GAAG,CAAC;CAC3B,eAAa,CAAC;CACd,eAAa,IAAI,CAAC,EAAE,CAAC,CAAC;AACtB;CACA,UAAQ,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC;AACL;CACA,MAAI,IAAI,kBAAkB,GAAG,cAAc,CAAC;AAC5C;OACI,SAAS,WAAW,GAAG;CAC3B,UAAQ,OAAO,IAAI,CAAC,YAAY,CAAC;QAC5B;AACL;OACI,IAAI,cAAc,GAAG,IAAI;WACrB,6BAA6B,GAAG,SAAS,CAAC;AAClD;CACA,MAAI,SAAS,OAAO,CAAC,MAAM,EAAE;WACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC9C;AACL;OACI,IAAI,mBAAmB,GAAG;WACtB,MAAM,EAAE,OAAO;WACf,IAAI,EAAE,QAAQ;WACd,CAAC,EAAE,eAAe;WAClB,EAAE,EAAE,YAAY;WAChB,CAAC,EAAE,UAAU;WACb,EAAE,EAAE,YAAY;WAChB,CAAC,EAAE,SAAS;WACZ,EAAE,EAAE,UAAU;WACd,CAAC,EAAE,OAAO;WACV,EAAE,EAAE,SAAS;WACb,CAAC,EAAE,QAAQ;WACX,EAAE,EAAE,UAAU;WACd,CAAC,EAAE,SAAS;WACZ,EAAE,EAAE,WAAW;WACf,CAAC,EAAE,QAAQ;WACX,EAAE,EAAE,UAAU;CACtB,OAAK,CAAC;AACN;OACI,SAAS,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE;WAC3D,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;CAChD,UAAQ,OAAO,UAAU,CAAC,MAAM,CAAC;iBACnB,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC;iBAC/C,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACvC;AACL;CACA,MAAI,SAAS,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE;CACtC,UAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,QAAQ,GAAG,MAAM,CAAC,CAAC;CACtE,UAAQ,OAAO,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC9E;AACL;CACA,MAAI,IAAI,OAAO,GAAG,EAAE,CAAC;AACrB;CACA,MAAI,SAAS,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE;CAC3C,UAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;CAC3C,UAAQ,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;QAC7E;AACL;CACA,MAAI,SAAS,cAAc,CAAC,KAAK,EAAE;CACnC,UAAQ,OAAO,OAAO,KAAK,KAAK,QAAQ;iBAC1B,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;CAC5D,gBAAc,SAAS,CAAC;QACnB;AACL;CACA,MAAI,SAAS,oBAAoB,CAAC,WAAW,EAAE;WACvC,IAAI,eAAe,GAAG,EAAE;CAChC,cAAY,cAAc;CAC1B,cAAY,IAAI,CAAC;AACjB;CACA,UAAQ,KAAK,IAAI,IAAI,WAAW,EAAE;CAClC,cAAY,IAAI,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE;CAC/C,kBAAgB,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;mBACtC,IAAI,cAAc,EAAE;uBAChB,eAAe,CAAC,cAAc,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;oBACvD;gBACJ;YACJ;AACT;WACQ,OAAO,eAAe,CAAC;QAC1B;AACL;CACA,MAAI,IAAI,UAAU,GAAG,EAAE,CAAC;AACxB;CACA,MAAI,SAAS,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE;CAC7C,UAAQ,UAAU,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;QAC/B;AACL;CACA,MAAI,SAAS,mBAAmB,CAAC,QAAQ,EAAE;WACnC,IAAI,KAAK,GAAG,EAAE;CACtB,cAAY,CAAC,CAAC;CACd,UAAQ,KAAK,CAAC,IAAI,QAAQ,EAAE;CAC5B,cAAY,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE;CACzC,kBAAgB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpD;YACJ;WACD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;eACvB,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;CAC3C,WAAS,CAAC,CAAC;WACH,OAAO,KAAK,CAAC;QAChB;AACL;CACA,MAAI,SAAS,UAAU,CAAC,IAAI,EAAE;CAC9B,UAAQ,OAAO,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC;QACnE;AACL;CACA,MAAI,SAAS,QAAQ,CAAC,MAAM,EAAE;CAC9B,UAAQ,IAAI,MAAM,GAAG,CAAC,EAAE;CACxB;eACY,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CAC1C,WAAS,MAAM;CACf,cAAY,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC7B;QACJ;AACL;CACA,MAAI,SAAS,KAAK,CAAC,mBAAmB,EAAE;CACxC,UAAQ,IAAI,aAAa,GAAG,CAAC,mBAAmB;eACpC,KAAK,GAAG,CAAC,CAAC;AACtB;WACQ,IAAI,aAAa,KAAK,CAAC,IAAI,QAAQ,CAAC,aAAa,CAAC,EAAE;CAC5D,cAAY,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;YACnC;AACT;WACQ,OAAO,KAAK,CAAC;QAChB;AACL;CACA,MAAI,SAAS,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE;WAChC,OAAO,UAAU,KAAK,EAAE;CAChC,cAAY,IAAI,KAAK,IAAI,IAAI,EAAE;mBACf,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;mBACzB,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;mBACnC,OAAO,IAAI,CAAC;CAC5B,eAAa,MAAM;CACnB,kBAAgB,OAAO,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC1B;CACb,WAAS,CAAC;QACL;AACL;CACA,MAAI,SAAS,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE;CAC5B,UAAQ,OAAO,GAAG,CAAC,OAAO,EAAE;CAC5B,gBAAc,GAAG,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,GAAG,KAAK,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE;CAChE,gBAAc,GAAG,CAAC;QACb;AACL;OACI,SAAS,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;WAC7B,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;eAChC;mBACI,IAAI,KAAK,UAAU;CACnC,kBAAgB,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;CACtC,kBAAgB,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC;CACjC,kBAAgB,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE;iBACnB;CACd,kBAAgB,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;CACrC,kBAAgB,GAAG,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,GAAG,KAAK,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;CAChE,sBAAoB,KAAK;uBACL,GAAG,CAAC,KAAK,EAAE;uBACX,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;CACnD,mBAAiB,CAAC;CAClB,eAAa,MAAM;mBACH,GAAG,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,GAAG,KAAK,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC3D;YACJ;QACJ;AACL;CACA;AACA;CACA,MAAI,SAAS,SAAS,CAAC,KAAK,EAAE;CAC9B,UAAQ,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;WAC9B,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;CACrC,cAAY,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB;WACD,OAAO,IAAI,CAAC;QACf;AACL;CACA,MAAI,SAAS,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE;CACrC,UAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;CACvC,cAAY,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;CAChD,cAAY,IAAI,WAAW,GAAG,mBAAmB,CAAC,KAAK,CAAC;CACxD,kBAAgB,CAAC;CACjB,kBAAgB,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC;eACxC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;mBACjC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACzD;CACb,WAAS,MAAM;CACf,cAAY,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;eAC9B,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;mBACzB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC7B;YACJ;WACD,OAAO,IAAI,CAAC;QACf;AACL;OACI,IAAI,MAAM,GAAG,IAAI;WACb,MAAM,GAAG,MAAM;WACf,MAAM,GAAG,OAAO;WAChB,MAAM,GAAG,OAAO;WAChB,MAAM,GAAG,YAAY;WACrB,SAAS,GAAG,OAAO;WACnB,SAAS,GAAG,WAAW;WACvB,SAAS,GAAG,eAAe;WAC3B,SAAS,GAAG,SAAS;WACrB,SAAS,GAAG,SAAS;WACrB,SAAS,GAAG,cAAc;WAC1B,aAAa,GAAG,KAAK;WACrB,WAAW,GAAG,UAAU;WACxB,WAAW,GAAG,oBAAoB;WAClC,gBAAgB,GAAG,yBAAyB;WAC5C,cAAc,GAAG,sBAAsB;CAC/C;CACA;CACA,UAAQ,SAAS;CACjB,cAAY,uJAAuJ;CACnK,UAAQ,OAAO,CAAC;AAChB;OACI,OAAO,GAAG,EAAE,CAAC;AACjB;OACI,SAAS,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE;WAC9C,OAAO,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC;CAC1C,gBAAc,KAAK;CACnB,gBAAc,UAAU,QAAQ,EAAE,UAAU,EAAE;qBAC5B,OAAO,QAAQ,IAAI,WAAW,GAAG,WAAW,GAAG,KAAK,CAAC;CACvE,iBAAe,CAAC;QACX;AACL;CACA,MAAI,SAAS,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE;WAC1C,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;eAC7B,OAAO,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5C;AACT;CACA,UAAQ,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACzD;AACL;CACA;CACA,MAAI,SAAS,cAAc,CAAC,CAAC,EAAE;CAC/B,UAAQ,OAAO,WAAW;CAC1B,cAAY,CAAC;CACb,mBAAiB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;CAClC,mBAAiB,OAAO;CACxB,sBAAoB,qCAAqC;uBACrC,UAAU,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;2BAC/B,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;wBAC/B;oBACJ;CACjB,WAAS,CAAC;QACL;AACL;CACA,MAAI,SAAS,WAAW,CAAC,CAAC,EAAE;WACpB,OAAO,CAAC,CAAC,OAAO,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;QACtD;AACL;CACA,MAAI,IAAI,MAAM,GAAG,EAAE,CAAC;AACpB;CACA,MAAI,SAAS,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE;CAC5C,UAAQ,IAAI,CAAC;eACD,IAAI,GAAG,QAAQ;CAC3B,cAAY,QAAQ,CAAC;CACrB,UAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;CACvC,cAAY,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB;CACT,UAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;CAChC,cAAY,IAAI,GAAG,UAAU,KAAK,EAAE,KAAK,EAAE;mBAC3B,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;CAC/C,eAAa,CAAC;YACL;CACT,UAAQ,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;WACxB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;eAC3B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC3B;QACJ;AACL;CACA,MAAI,SAAS,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE;CAChD,UAAQ,aAAa,CAAC,KAAK,EAAE,UAAU,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;eACxD,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;CACxC,cAAY,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;CACtD,WAAS,CAAC,CAAC;QACN;AACL;OACI,SAAS,uBAAuB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;WACnD,IAAI,KAAK,IAAI,IAAI,IAAI,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;CACxD,cAAY,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YAClD;QACJ;AACL;OACI,IAAI,IAAI,GAAG,CAAC;WACR,KAAK,GAAG,CAAC;WACT,IAAI,GAAG,CAAC;WACR,IAAI,GAAG,CAAC;WACR,MAAM,GAAG,CAAC;WACV,MAAM,GAAG,CAAC;WACV,WAAW,GAAG,CAAC;WACf,IAAI,GAAG,CAAC;WACR,OAAO,GAAG,CAAC,CAAC;AACpB;CACA,MAAI,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE;WACf,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B;AACL;OACI,IAAI,OAAO,CAAC;AAChB;CACA,MAAI,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE;CACjC,UAAQ,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC;CAC1C,OAAK,MAAM;CACX,UAAQ,OAAO,GAAG,UAAU,CAAC,EAAE;CAC/B;eACY,IAAI,CAAC,CAAC;CAClB,cAAY,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;CAC9C,kBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;uBACf,OAAO,CAAC,CAAC;oBACZ;gBACJ;eACD,OAAO,CAAC,CAAC,CAAC;CACtB,WAAS,CAAC;QACL;AACL;CACA,MAAI,SAAS,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;WAC9B,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;eAC7B,OAAO,GAAG,CAAC;YACd;WACD,IAAI,QAAQ,GAAG,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;WAC9B,IAAI,IAAI,CAAC,KAAK,GAAG,QAAQ,IAAI,EAAE,CAAC;WAChC,OAAO,QAAQ,KAAK,CAAC;iBACf,UAAU,CAAC,IAAI,CAAC;CAC9B,oBAAkB,EAAE;CACpB,oBAAkB,EAAE;iBACN,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC;AACL;CACA;AACA;CACA,MAAI,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY;CACrD,UAAQ,OAAO,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;CAChC,OAAK,CAAC,CAAC;AACP;OACI,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,MAAM,EAAE;CAClD,UAAQ,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;CAC3D,OAAK,CAAC,CAAC;AACP;OACI,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,MAAM,EAAE;CACnD,UAAQ,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;CACtD,OAAK,CAAC,CAAC;AACP;CACA;AACA;CACA,MAAI,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC/B;CACA;AACA;CACA,MAAI,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAChC;CACA;AACA;CACA,MAAI,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;OAC9B,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;OACvC,aAAa,CAAC,KAAK,EAAE,UAAU,QAAQ,EAAE,MAAM,EAAE;CACrD,UAAQ,OAAO,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;CACjD,OAAK,CAAC,CAAC;OACH,aAAa,CAAC,MAAM,EAAE,UAAU,QAAQ,EAAE,MAAM,EAAE;CACtD,UAAQ,OAAO,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;CAC5C,OAAK,CAAC,CAAC;AACP;CACA,MAAI,aAAa,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,UAAU,KAAK,EAAE,KAAK,EAAE;WAC/C,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CACxC,OAAK,CAAC,CAAC;AACP;CACA,MAAI,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,UAAU,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;CAC1E,UAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;CAC7E;CACA,UAAQ,IAAI,KAAK,IAAI,IAAI,EAAE;CAC3B,cAAY,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;CACjC,WAAS,MAAM;eACH,eAAe,CAAC,MAAM,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC;YAChD;CACT,OAAK,CAAC,CAAC;AACP;CACA;AACA;CACA,MAAI,IAAI,mBAAmB;eACf,uFAAuF,CAAC,KAAK;CACzG,kBAAgB,GAAG;gBACN;CACb,UAAQ,wBAAwB;CAChC,cAAY,iDAAiD,CAAC,KAAK,CAAC,GAAG,CAAC;WAChE,gBAAgB,GAAG,+BAA+B;WAClD,uBAAuB,GAAG,SAAS;WACnC,kBAAkB,GAAG,SAAS,CAAC;AACvC;CACA,MAAI,SAAS,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE;WAC7B,IAAI,CAAC,CAAC,EAAE;CAChB,cAAY,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;qBACtB,IAAI,CAAC,OAAO;CAC9B,oBAAkB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACpC;CACT,UAAQ,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;iBACtB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;iBACvB,IAAI,CAAC,OAAO;CAC1B,oBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC;CAC1E,0BAAwB,QAAQ;CAChC,0BAAwB,YAAY;CACpC,iBAAe,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACtB;AACL;CACA,MAAI,SAAS,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE;WAClC,IAAI,CAAC,CAAC,EAAE;CAChB,cAAY,OAAO,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;qBAC3B,IAAI,CAAC,YAAY;CACnC,oBAAkB,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YACzC;CACT,UAAQ,OAAO,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;iBAC3B,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;iBAC5B,IAAI,CAAC,YAAY;qBACb,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,QAAQ,GAAG,YAAY;CACzE,iBAAe,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACtB;AACL;OACI,SAAS,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE;CAC1D,UAAQ,IAAI,CAAC;CACb,cAAY,EAAE;CACd,cAAY,GAAG;CACf,cAAY,GAAG,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC;CAChD,UAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;CAChC;CACA,cAAY,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;CACnC,cAAY,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;CACvC,cAAY,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;eAC5B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;mBACrB,GAAG,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;mBAC3B,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW;CAC5D,sBAAoB,GAAG;CACvB,sBAAoB,EAAE;oBACL,CAAC,iBAAiB,EAAE,CAAC;CACtC,kBAAgB,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC;gBACvE;YACJ;AACT;WACQ,IAAI,MAAM,EAAE;CACpB,cAAY,IAAI,MAAM,KAAK,KAAK,EAAE;CAClC,kBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;mBAC/C,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;CAC7C,eAAa,MAAM;CACnB,kBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;mBAC9C,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;gBAChC;CACb,WAAS,MAAM;CACf,cAAY,IAAI,MAAM,KAAK,KAAK,EAAE;CAClC,kBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;CAC/D,kBAAgB,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE;uBACX,OAAO,EAAE,CAAC;oBACb;CACjB,kBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;mBAC9C,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;CAC7C,eAAa,MAAM;CACnB,kBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;CAC9D,kBAAgB,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE;uBACX,OAAO,EAAE,CAAC;oBACb;CACjB,kBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;mBAC/C,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;gBAChC;YACJ;QACJ;AACL;OACI,SAAS,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE;CAC1D,UAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC;AAC1B;CACA,UAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE;CACpC,cAAY,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAClE;AACT;CACA,UAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;CAChC,cAAY,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;CACnC,cAAY,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;CACvC,cAAY,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;YAC/B;AACT;CACA;CACA;CACA;WACQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;CACjC;eACY,GAAG,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;eAC3B,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;mBACrC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM;CACrD,sBAAoB,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;CACrE,sBAAoB,GAAG;CACvB,mBAAiB,CAAC;mBACF,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM;CACtD,sBAAoB,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;CAC1E,sBAAoB,GAAG;CACvB,mBAAiB,CAAC;gBACL;eACD,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;CAClD,kBAAgB,KAAK;uBACD,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;mBAClE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;gBAClE;CACb;eACY;CACZ,kBAAgB,MAAM;mBACN,MAAM,KAAK,MAAM;mBACjB,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;iBAC1C;mBACE,OAAO,CAAC,CAAC;CACzB,eAAa,MAAM;CACnB,kBAAgB,MAAM;mBACN,MAAM,KAAK,KAAK;mBAChB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;iBAC3C;mBACE,OAAO,CAAC,CAAC;CACzB,eAAa,MAAM,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;mBACxD,OAAO,CAAC,CAAC;gBACZ;YACJ;QACJ;AACL;CACA;AACA;CACA,MAAI,SAAS,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE;WAC1B,IAAI,UAAU,CAAC;AACvB;CACA,UAAQ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE;CAC5B;eACY,OAAO,GAAG,CAAC;YACd;AACT;CACA,UAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;CACvC,cAAY,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;CACrC,kBAAgB,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;CACrC,eAAa,MAAM;mBACH,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;CAC5D;CACA,kBAAgB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;uBAClB,OAAO,GAAG,CAAC;oBACd;gBACJ;YACJ;AACT;WACQ,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;WAClE,GAAG,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,GAAG,KAAK,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;WACvE,OAAO,GAAG,CAAC;QACd;AACL;CACA,MAAI,SAAS,WAAW,CAAC,KAAK,EAAE;CAChC,UAAQ,IAAI,KAAK,IAAI,IAAI,EAAE;CAC3B,cAAY,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;eACtB,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;eAC/B,OAAO,IAAI,CAAC;CACxB,WAAS,MAAM;CACf,cAAY,OAAO,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC7B;QACJ;AACL;OACI,SAAS,cAAc,GAAG;CAC9B,UAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACjD;AACL;CACA,MAAI,SAAS,gBAAgB,CAAC,QAAQ,EAAE;CACxC,UAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE;eACxB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE;CACnD,kBAAgB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjC;eACD,IAAI,QAAQ,EAAE;CAC1B,kBAAgB,OAAO,IAAI,CAAC,uBAAuB,CAAC;CACpD,eAAa,MAAM;CACnB,kBAAgB,OAAO,IAAI,CAAC,iBAAiB,CAAC;gBACjC;CACb,WAAS,MAAM;eACH,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC,EAAE;CACxD,kBAAgB,IAAI,CAAC,iBAAiB,GAAG,uBAAuB,CAAC;gBACpD;CACb,cAAY,OAAO,IAAI,CAAC,uBAAuB,IAAI,QAAQ;qBACzC,IAAI,CAAC,uBAAuB;qBAC5B,IAAI,CAAC,iBAAiB,CAAC;YAChC;QACJ;AACL;CACA,MAAI,SAAS,WAAW,CAAC,QAAQ,EAAE;CACnC,UAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE;eACxB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE;CACnD,kBAAgB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjC;eACD,IAAI,QAAQ,EAAE;CAC1B,kBAAgB,OAAO,IAAI,CAAC,kBAAkB,CAAC;CAC/C,eAAa,MAAM;CACnB,kBAAgB,OAAO,IAAI,CAAC,YAAY,CAAC;gBAC5B;CACb,WAAS,MAAM;eACH,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE;CACnD,kBAAgB,IAAI,CAAC,YAAY,GAAG,kBAAkB,CAAC;gBAC1C;CACb,cAAY,OAAO,IAAI,CAAC,kBAAkB,IAAI,QAAQ;qBACpC,IAAI,CAAC,kBAAkB;qBACvB,IAAI,CAAC,YAAY,CAAC;YAC3B;QACJ;AACL;OACI,SAAS,kBAAkB,GAAG;CAClC,UAAQ,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;eACrB,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;YAC9B;AACT;WACQ,IAAI,WAAW,GAAG,EAAE;eAChB,UAAU,GAAG,EAAE;eACf,WAAW,GAAG,EAAE;CAC5B,cAAY,CAAC;CACb,cAAY,GAAG,CAAC;WACR,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;CACjC;eACY,GAAG,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;CACvC,cAAY,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;CACxD,cAAY,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;CAClD,cAAY,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;CACnD,cAAY,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;YAC/C;CACT;CACA;CACA,UAAQ,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;CACpC,UAAQ,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;CACnC,UAAQ,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;WAC5B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;CACjC,cAAY,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;CACzD,cAAY,UAAU,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C;WACD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;CACjC,cAAY,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD;AACT;WACQ,IAAI,CAAC,YAAY,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;CAChF,UAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC;CACnD,UAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI,MAAM;eAChC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG;CAC7C,cAAY,GAAG;CACf,WAAS,CAAC;CACV,UAAQ,IAAI,CAAC,uBAAuB,GAAG,IAAI,MAAM;eACrC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG;CAC9C,cAAY,GAAG;CACf,WAAS,CAAC;QACL;AACL;CACA;AACA;OACI,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY;CAC1C,UAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;CAC5B,UAAQ,OAAO,CAAC,IAAI,IAAI,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACpD,OAAK,CAAC,CAAC;AACP;CACA,MAAI,cAAc,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY;CAChD,UAAQ,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC;CACjC,OAAK,CAAC,CAAC;AACP;CACA,MAAI,cAAc,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;CAC9C,MAAI,cAAc,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;CAC/C,MAAI,cAAc,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AACtD;CACA;AACA;CACA,MAAI,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC9B;CACA;AACA;CACA,MAAI,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC/B;CACA;AACA;CACA,MAAI,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;OAChC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;OACvC,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;OACzC,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;OAC1C,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAC/C;OACI,aAAa,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;OACzC,aAAa,CAAC,MAAM,EAAE,UAAU,KAAK,EAAE,KAAK,EAAE;WAC1C,KAAK,CAAC,IAAI,CAAC;CACnB,cAAY,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;CAC/E,OAAK,CAAC,CAAC;OACH,aAAa,CAAC,IAAI,EAAE,UAAU,KAAK,EAAE,KAAK,EAAE;WACxC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;CACrD,OAAK,CAAC,CAAC;OACH,aAAa,CAAC,GAAG,EAAE,UAAU,KAAK,EAAE,KAAK,EAAE;WACvC,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;CAC1C,OAAK,CAAC,CAAC;AACP;CACA;AACA;CACA,MAAI,SAAS,UAAU,CAAC,IAAI,EAAE;WACtB,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QACvC;AACL;CACA;AACA;CACA,MAAI,KAAK,CAAC,iBAAiB,GAAG,UAAU,KAAK,EAAE;CAC/C,UAAQ,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;CAChE,OAAK,CAAC;AACN;CACA;AACA;OACI,IAAI,UAAU,GAAG,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAClD;OACI,SAAS,aAAa,GAAG;WACrB,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAClC;AACL;CACA,MAAI,SAAS,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;CAC9C;CACA;WACQ,IAAI,IAAI,CAAC;CACjB;WACQ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE;CAC/B;eACY,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;eAC5C,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE;CAC9C,kBAAgB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACvB;CACb,WAAS,MAAM;CACf,cAAY,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACzC;AACT;WACQ,OAAO,IAAI,CAAC;QACf;AACL;CACA,MAAI,SAAS,aAAa,CAAC,CAAC,EAAE;CAC9B,UAAQ,IAAI,IAAI,EAAE,IAAI,CAAC;CACvB;WACQ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE;CAC/B,cAAY,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;CACzD;eACY,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;CAC9B,cAAY,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;eAC5C,IAAI,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE;CACjD,kBAAgB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;gBAC1B;CACb,WAAS,MAAM;CACf,cAAY,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;YACpD;AACT;WACQ,OAAO,IAAI,CAAC;QACf;AACL;CACA;OACI,SAAS,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;WACrC;CACR,cAAY,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG;CAC/B;eACY,KAAK,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC;AAC5E;CACA,UAAQ,OAAO,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;QAC3B;AACL;CACA;CACA,MAAI,SAAS,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE;WACvD,IAAI,YAAY,GAAG,CAAC,CAAC,GAAG,OAAO,GAAG,GAAG,IAAI,CAAC;eACtC,UAAU,GAAG,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;CACxD,cAAY,SAAS,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,GAAG,YAAY,GAAG,UAAU;CACtE,cAAY,OAAO;CACnB,cAAY,YAAY,CAAC;AACzB;CACA,UAAQ,IAAI,SAAS,IAAI,CAAC,EAAE;CAC5B,cAAY,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC;eACnB,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;YAClD,MAAM,IAAI,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE;CACjD,cAAY,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC;eACnB,YAAY,GAAG,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;CACxD,WAAS,MAAM;eACH,OAAO,GAAG,IAAI,CAAC;eACf,YAAY,GAAG,SAAS,CAAC;YAC5B;AACT;CACA,UAAQ,OAAO;eACH,IAAI,EAAE,OAAO;eACb,SAAS,EAAE,YAAY;CACnC,WAAS,CAAC;QACL;AACL;OACI,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;CACvC,UAAQ,IAAI,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;CAC9D,cAAY,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,UAAU,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;CACzE,cAAY,OAAO;CACnB,cAAY,OAAO,CAAC;AACpB;CACA,UAAQ,IAAI,IAAI,GAAG,CAAC,EAAE;eACV,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;CACrC,cAAY,OAAO,GAAG,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;CAC5D,WAAS,MAAM,IAAI,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;CAC7D,cAAY,OAAO,GAAG,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;eACnD,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;CACrC,WAAS,MAAM;CACf,cAAY,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;eACrB,OAAO,GAAG,IAAI,CAAC;YAClB;AACT;CACA,UAAQ,OAAO;eACH,IAAI,EAAE,OAAO;eACb,IAAI,EAAE,OAAO;CACzB,WAAS,CAAC;QACL;AACL;OACI,SAAS,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;WACjC,IAAI,UAAU,GAAG,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;CACxD,cAAY,cAAc,GAAG,eAAe,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;CACjE,UAAQ,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,GAAG,cAAc,IAAI,CAAC,CAAC;QAC/D;AACL;CACA;AACA;CACA,MAAI,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;CACjD,MAAI,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AACpD;CACA;AACA;CACA,MAAI,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B,MAAI,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACjC;CACA;AACA;CACA,MAAI,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;CAC/B,MAAI,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAClC;CACA;AACA;CACA,MAAI,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;OAC9B,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;CAC3C,MAAI,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;OAC9B,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAC3C;CACA,MAAI,iBAAiB;WACb,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;WACtB,UAAU,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;CAC9C,cAAY,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC3C;CACT,OAAK,CAAC;AACN;CACA;AACA;CACA;AACA;CACA,MAAI,SAAS,UAAU,CAAC,GAAG,EAAE;CAC7B,UAAQ,OAAO,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QAC/D;AACL;OACI,IAAI,iBAAiB,GAAG;WACpB,GAAG,EAAE,CAAC;WACN,GAAG,EAAE,CAAC;CACd,OAAK,CAAC;AACN;OACI,SAAS,oBAAoB,GAAG;CACpC,UAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QACzB;AACL;OACI,SAAS,oBAAoB,GAAG;CACpC,UAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QACzB;AACL;CACA;AACA;CACA,MAAI,SAAS,UAAU,CAAC,KAAK,EAAE;CAC/B,UAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;WACxC,OAAO,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACnE;AACL;CACA,MAAI,SAAS,aAAa,CAAC,KAAK,EAAE;CAClC,UAAQ,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;WACvC,OAAO,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACnE;AACL;CACA;AACA;OACI,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACxC;OACI,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,MAAM,EAAE;CACjD,UAAQ,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;CAC3D,OAAK,CAAC,CAAC;AACP;OACI,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,MAAM,EAAE;CAClD,UAAQ,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;CAC7D,OAAK,CAAC,CAAC;AACP;OACI,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,MAAM,EAAE;CACnD,UAAQ,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;CACxD,OAAK,CAAC,CAAC;AACP;OACI,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;OACrC,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;AAC5C;CACA;AACA;CACA,MAAI,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;CAC7B,MAAI,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;CACjC,MAAI,YAAY,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;AACpC;CACA;CACA,MAAI,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;CAC/B,MAAI,eAAe,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;CACnC,MAAI,eAAe,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACtC;CACA;AACA;CACA,MAAI,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;CAClC,MAAI,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;CAClC,MAAI,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;OAC9B,aAAa,CAAC,IAAI,EAAE,UAAU,QAAQ,EAAE,MAAM,EAAE;CACpD,UAAQ,OAAO,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;CACjD,OAAK,CAAC,CAAC;OACH,aAAa,CAAC,KAAK,EAAE,UAAU,QAAQ,EAAE,MAAM,EAAE;CACrD,UAAQ,OAAO,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;CACnD,OAAK,CAAC,CAAC;OACH,aAAa,CAAC,MAAM,EAAE,UAAU,QAAQ,EAAE,MAAM,EAAE;CACtD,UAAQ,OAAO,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;CAC9C,OAAK,CAAC,CAAC;AACP;CACA,MAAI,iBAAiB,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,UAAU,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;CACnF,UAAQ,IAAI,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;CACjF;CACA,UAAQ,IAAI,OAAO,IAAI,IAAI,EAAE;CAC7B,cAAY,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC;CAC7B,WAAS,MAAM;eACH,eAAe,CAAC,MAAM,CAAC,CAAC,cAAc,GAAG,KAAK,CAAC;YAClD;CACT,OAAK,CAAC,CAAC;AACP;CACA,MAAI,iBAAiB,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,UAAU,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;WACrE,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;CACnC,OAAK,CAAC,CAAC;AACP;CACA;AACA;CACA,MAAI,SAAS,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE;CACzC,UAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;eAC3B,OAAO,KAAK,CAAC;YAChB;AACT;CACA,UAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;CAC3B,cAAY,OAAO,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC9B;AACT;WACQ,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;CAC5C,UAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;eAC3B,OAAO,KAAK,CAAC;YAChB;AACT;WACQ,OAAO,IAAI,CAAC;QACf;AACL;CACA,MAAI,SAAS,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE;CAC5C,UAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;eAC3B,OAAO,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/C;WACD,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;QACtC;AACL;CACA;CACA,MAAI,SAAS,aAAa,CAAC,EAAE,EAAE,CAAC,EAAE;WAC1B,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAChD;AACL;CACA,MAAI,IAAI,qBAAqB;CAC7B,cAAY,0DAA0D,CAAC,KAAK,CAAC,GAAG,CAAC;CACjF,UAAQ,0BAA0B,GAAG,6BAA6B,CAAC,KAAK,CAAC,GAAG,CAAC;CAC7E,UAAQ,wBAAwB,GAAG,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;WAC5D,oBAAoB,GAAG,SAAS;WAChC,yBAAyB,GAAG,SAAS;WACrC,uBAAuB,GAAG,SAAS,CAAC;AAC5C;CACA,MAAI,SAAS,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE;WAC/B,IAAI,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;iBAChC,IAAI,CAAC,SAAS;iBACd,IAAI,CAAC,SAAS;CAC5B,oBAAkB,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;CACzE,0BAAwB,QAAQ;CAChC,0BAAwB,YAAY;CACpC,iBAAe,CAAC;WACR,OAAO,CAAC,KAAK,IAAI;iBACX,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;CACrD,gBAAc,CAAC;CACf,gBAAc,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;CAC/B,gBAAc,QAAQ,CAAC;QAClB;AACL;CACA,MAAI,SAAS,mBAAmB,CAAC,CAAC,EAAE;WAC5B,OAAO,CAAC,KAAK,IAAI;iBACX,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;CAChE,gBAAc,CAAC;iBACD,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;iBAC5B,IAAI,CAAC,cAAc,CAAC;QAC7B;AACL;CACA,MAAI,SAAS,iBAAiB,CAAC,CAAC,EAAE;WAC1B,OAAO,CAAC,KAAK,IAAI;iBACX,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;CAC9D,gBAAc,CAAC;iBACD,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;iBAC1B,IAAI,CAAC,YAAY,CAAC;QAC3B;AACL;OACI,SAAS,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE;CAC9D,UAAQ,IAAI,CAAC;CACb,cAAY,EAAE;CACd,cAAY,GAAG;CACf,cAAY,GAAG,GAAG,WAAW,CAAC,iBAAiB,EAAE,CAAC;CAClD,UAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;CAClC,cAAY,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;CACrC,cAAY,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;CAC1C,cAAY,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;AACxC;eACY,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;CACpC,kBAAgB,GAAG,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;mBAClC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW;CAC5D,sBAAoB,GAAG;CACvB,sBAAoB,EAAE;oBACL,CAAC,iBAAiB,EAAE,CAAC;mBACtB,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa;CAChE,sBAAoB,GAAG;CACvB,sBAAoB,EAAE;oBACL,CAAC,iBAAiB,EAAE,CAAC;CACtC,kBAAgB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC;gBACvE;YACJ;AACT;WACQ,IAAI,MAAM,EAAE;CACpB,cAAY,IAAI,MAAM,KAAK,MAAM,EAAE;CACnC,kBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;mBAC5C,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;CAC7C,eAAa,MAAM,IAAI,MAAM,KAAK,KAAK,EAAE;CACzC,kBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;mBACjD,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;CAC7C,eAAa,MAAM;CACnB,kBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;mBAC/C,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;gBAChC;CACb,WAAS,MAAM;CACf,cAAY,IAAI,MAAM,KAAK,MAAM,EAAE;CACnC,kBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;CAC5D,kBAAgB,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE;uBACX,OAAO,EAAE,CAAC;oBACb;CACjB,kBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;CACjE,kBAAgB,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE;uBACX,OAAO,EAAE,CAAC;oBACb;CACjB,kBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;mBAC/C,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;CAC7C,eAAa,MAAM,IAAI,MAAM,KAAK,KAAK,EAAE;CACzC,kBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;CACjE,kBAAgB,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE;uBACX,OAAO,EAAE,CAAC;oBACb;CACjB,kBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;CAC5D,kBAAgB,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE;uBACX,OAAO,EAAE,CAAC;oBACb;CACjB,kBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;mBAC/C,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;CAC7C,eAAa,MAAM;CACnB,kBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;CAC/D,kBAAgB,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE;uBACX,OAAO,EAAE,CAAC;oBACb;CACjB,kBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;CAC5D,kBAAgB,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE;uBACX,OAAO,EAAE,CAAC;oBACb;CACjB,kBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;mBACjD,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;gBAChC;YACJ;QACJ;AACL;OACI,SAAS,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE;CAC9D,UAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC;AAC1B;CACA,UAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE;CACtC,cAAY,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YACtE;AACT;CACA,UAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;CAClC,cAAY,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;CACrC,cAAY,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;CACxC,cAAY,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;CAC1C,cAAY,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;YAChC;AACT;WACQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CAChC;AACA;CACA,cAAY,GAAG,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;eAClC,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE;mBACvC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM;CACvD,sBAAoB,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,GAAG;CAC3E,sBAAoB,GAAG;CACvB,mBAAiB,CAAC;mBACF,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM;CACxD,sBAAoB,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,GAAG;CAChF,sBAAoB,GAAG;CACvB,mBAAiB,CAAC;mBACF,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM;CACtD,sBAAoB,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,GAAG;CAC9E,sBAAoB,GAAG;CACvB,mBAAiB,CAAC;gBACL;eACD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;CACzC,kBAAgB,KAAK;CACrB,sBAAoB,GAAG;CACvB,sBAAoB,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC;CAC1C,sBAAoB,IAAI;CACxB,sBAAoB,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,CAAC;CAC/C,sBAAoB,IAAI;uBACJ,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;mBAC9B,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;gBACpE;CACb;eACY;CACZ,kBAAgB,MAAM;mBACN,MAAM,KAAK,MAAM;mBACjB,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;iBAC9C;mBACE,OAAO,CAAC,CAAC;CACzB,eAAa,MAAM;CACnB,kBAAgB,MAAM;mBACN,MAAM,KAAK,KAAK;mBAChB,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;iBAC/C;mBACE,OAAO,CAAC,CAAC;CACzB,eAAa,MAAM;CACnB,kBAAgB,MAAM;mBACN,MAAM,KAAK,IAAI;mBACf,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;iBAC7C;mBACE,OAAO,CAAC,CAAC;CACzB,eAAa,MAAM,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;mBAC5D,OAAO,CAAC,CAAC;gBACZ;YACJ;QACJ;AACL;CACA;AACA;CACA,MAAI,SAAS,eAAe,CAAC,KAAK,EAAE;CACpC,UAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;eACjB,OAAO,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;YACrC;WACD,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;CACvE,UAAQ,IAAI,KAAK,IAAI,IAAI,EAAE;eACf,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;eAC/C,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9C,WAAS,MAAM;eACH,OAAO,GAAG,CAAC;YACd;QACJ;AACL;CACA,MAAI,SAAS,qBAAqB,CAAC,KAAK,EAAE;CAC1C,UAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;eACjB,OAAO,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;YACrC;WACD,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;CACzE,UAAQ,OAAO,KAAK,IAAI,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,OAAO,EAAE,GAAG,CAAC,CAAC;QACnE;AACL;CACA,MAAI,SAAS,kBAAkB,CAAC,KAAK,EAAE;CACvC,UAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;eACjB,OAAO,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;YACrC;AACT;CACA;CACA;CACA;AACA;CACA,UAAQ,IAAI,KAAK,IAAI,IAAI,EAAE;CAC3B,cAAY,IAAI,OAAO,GAAG,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;CACpE,cAAY,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,OAAO,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC;CACpE,WAAS,MAAM;CACf,cAAY,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC1B;QACJ;AACL;CACA,MAAI,SAAS,aAAa,CAAC,QAAQ,EAAE;CACrC,UAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE;eAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAAE;CACrD,kBAAgB,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnC;eACD,IAAI,QAAQ,EAAE;CAC1B,kBAAgB,OAAO,IAAI,CAAC,oBAAoB,CAAC;CACjD,eAAa,MAAM;CACnB,kBAAgB,OAAO,IAAI,CAAC,cAAc,CAAC;gBAC9B;CACb,WAAS,MAAM;eACH,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAAE;CACrD,kBAAgB,IAAI,CAAC,cAAc,GAAG,oBAAoB,CAAC;gBAC9C;CACb,cAAY,OAAO,IAAI,CAAC,oBAAoB,IAAI,QAAQ;qBACtC,IAAI,CAAC,oBAAoB;qBACzB,IAAI,CAAC,cAAc,CAAC;YAC7B;QACJ;AACL;CACA,MAAI,SAAS,kBAAkB,CAAC,QAAQ,EAAE;CAC1C,UAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE;eAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAAE;CACrD,kBAAgB,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnC;eACD,IAAI,QAAQ,EAAE;CAC1B,kBAAgB,OAAO,IAAI,CAAC,yBAAyB,CAAC;CACtD,eAAa,MAAM;CACnB,kBAAgB,OAAO,IAAI,CAAC,mBAAmB,CAAC;gBACnC;CACb,WAAS,MAAM;eACH,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,qBAAqB,CAAC,EAAE;CAC1D,kBAAgB,IAAI,CAAC,mBAAmB,GAAG,yBAAyB,CAAC;gBACxD;CACb,cAAY,OAAO,IAAI,CAAC,yBAAyB,IAAI,QAAQ;qBAC3C,IAAI,CAAC,yBAAyB;qBAC9B,IAAI,CAAC,mBAAmB,CAAC;YAClC;QACJ;AACL;CACA,MAAI,SAAS,gBAAgB,CAAC,QAAQ,EAAE;CACxC,UAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE;eAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAAE;CACrD,kBAAgB,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnC;eACD,IAAI,QAAQ,EAAE;CAC1B,kBAAgB,OAAO,IAAI,CAAC,uBAAuB,CAAC;CACpD,eAAa,MAAM;CACnB,kBAAgB,OAAO,IAAI,CAAC,iBAAiB,CAAC;gBACjC;CACb,WAAS,MAAM;eACH,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC,EAAE;CACxD,kBAAgB,IAAI,CAAC,iBAAiB,GAAG,uBAAuB,CAAC;gBACpD;CACb,cAAY,OAAO,IAAI,CAAC,uBAAuB,IAAI,QAAQ;qBACzC,IAAI,CAAC,uBAAuB;qBAC5B,IAAI,CAAC,iBAAiB,CAAC;YAChC;QACJ;AACL;OACI,SAAS,oBAAoB,GAAG;CACpC,UAAQ,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;eACrB,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;YAC9B;AACT;WACQ,IAAI,SAAS,GAAG,EAAE;eACd,WAAW,GAAG,EAAE;eAChB,UAAU,GAAG,EAAE;eACf,WAAW,GAAG,EAAE;CAC5B,cAAY,CAAC;CACb,cAAY,GAAG;CACf,cAAY,IAAI;CAChB,cAAY,MAAM;CAClB,cAAY,KAAK,CAAC;WACV,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CAChC;CACA,cAAY,GAAG,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC9C,cAAY,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;CAC1D,cAAY,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;CAC9D,cAAY,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;CACxD,cAAY,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACjC,cAAY,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CACrC,cAAY,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CACnC,cAAY,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACnC,cAAY,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CACrC,cAAY,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B;CACT;CACA;CACA,UAAQ,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;CAClC,UAAQ,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;CACpC,UAAQ,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;CACnC,UAAQ,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACpC;WACQ,IAAI,CAAC,cAAc,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;CAClF,UAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC;CACvD,UAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC;AACrD;CACA,UAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,MAAM;eAClC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG;CAC7C,cAAY,GAAG;CACf,WAAS,CAAC;CACV,UAAQ,IAAI,CAAC,yBAAyB,GAAG,IAAI,MAAM;eACvC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG;CAC9C,cAAY,GAAG;CACf,WAAS,CAAC;CACV,UAAQ,IAAI,CAAC,uBAAuB,GAAG,IAAI,MAAM;eACrC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG;CAC5C,cAAY,GAAG;CACf,WAAS,CAAC;QACL;AACL;CACA;AACA;OACI,SAAS,OAAO,GAAG;WACf,OAAO,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QAClC;AACL;OACI,SAAS,OAAO,GAAG;CACvB,UAAQ,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QAC7B;AACL;CACA,MAAI,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;CAC9C,MAAI,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;CAC/C,MAAI,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;AAC/C;OACI,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY;CAC5C,UAAQ,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;CACtE,OAAK,CAAC,CAAC;AACP;OACI,cAAc,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY;WACtC;CACR,cAAY,EAAE;CACd,cAAY,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;eACnB,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;eAC3B,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;aAC7B;CACV,OAAK,CAAC,CAAC;AACP;OACI,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY;CAC5C,UAAQ,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;CAC/D,OAAK,CAAC,CAAC;AACP;OACI,cAAc,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY;WACtC;CACR,cAAY,EAAE;eACF,IAAI,CAAC,KAAK,EAAE;eACZ,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;eAC3B,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;aAC7B;CACV,OAAK,CAAC,CAAC;AACP;CACA,MAAI,SAAS,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE;WAChC,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY;CAChD,cAAY,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ;mBAC7B,IAAI,CAAC,KAAK,EAAE;mBACZ,IAAI,CAAC,OAAO,EAAE;CAC9B,kBAAgB,SAAS;CACzB,eAAa,CAAC;CACd,WAAS,CAAC,CAAC;QACN;AACL;CACA,MAAI,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;CACxB,MAAI,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACzB;CACA;AACA;CACA,MAAI,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC9B;CACA;CACA,MAAI,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAChC;CACA;AACA;CACA,MAAI,SAAS,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE;CAC7C,UAAQ,OAAO,MAAM,CAAC,cAAc,CAAC;QAChC;AACL;CACA,MAAI,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;CACtC,MAAI,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;CACtC,MAAI,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;CAClC,MAAI,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;CAClC,MAAI,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;OAC9B,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;OACvC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;OACvC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAC3C;CACA,MAAI,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;CACpC,MAAI,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;CACtC,MAAI,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;CACpC,MAAI,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACtC;OACI,aAAa,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;CACrC,MAAI,aAAa,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,UAAU,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;CAC/D,UAAQ,IAAI,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;CAClC,UAAQ,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,KAAK,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;CACjD,OAAK,CAAC,CAAC;CACP,MAAI,aAAa,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,UAAU,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;CAC9D,UAAQ,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CAClD,UAAQ,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;CACjC,OAAK,CAAC,CAAC;CACP,MAAI,aAAa,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,UAAU,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;WACvD,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;WAC3B,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;CAC/C,OAAK,CAAC,CAAC;OACH,aAAa,CAAC,KAAK,EAAE,UAAU,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;WACjD,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;CACnC,UAAQ,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;CAClD,UAAQ,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;WACzC,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;CAC/C,OAAK,CAAC,CAAC;OACH,aAAa,CAAC,OAAO,EAAE,UAAU,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;CAC3D,UAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;CACnC,cAAY,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;CACpC,UAAQ,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;CACnD,UAAQ,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;CACrD,UAAQ,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;WAC1C,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;CAC/C,OAAK,CAAC,CAAC;OACH,aAAa,CAAC,KAAK,EAAE,UAAU,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;WACjD,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;CACnC,UAAQ,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;CAClD,UAAQ,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CACjD,OAAK,CAAC,CAAC;OACH,aAAa,CAAC,OAAO,EAAE,UAAU,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;CAC3D,UAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;CACnC,cAAY,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;CACpC,UAAQ,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;CACnD,UAAQ,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;CACrD,UAAQ,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;CAClD,OAAK,CAAC,CAAC;AACP;CACA;AACA;CACA,MAAI,SAAS,UAAU,CAAC,KAAK,EAAE;CAC/B;CACA;CACA,UAAQ,OAAO,CAAC,KAAK,GAAG,EAAE,EAAE,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;QACvD;AACL;OACI,IAAI,0BAA0B,GAAG,eAAe;CACpD;CACA;CACA;CACA;WACQ,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC/C;OACI,SAAS,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;CACrD,UAAQ,IAAI,KAAK,GAAG,EAAE,EAAE;CACxB,cAAY,OAAO,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;CACzC,WAAS,MAAM;CACf,cAAY,OAAO,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;YAChC;QACJ;AACL;OACI,IAAI,UAAU,GAAG;WACb,QAAQ,EAAE,eAAe;WACzB,cAAc,EAAE,qBAAqB;WACrC,WAAW,EAAE,kBAAkB;WAC/B,OAAO,EAAE,cAAc;WACvB,sBAAsB,EAAE,6BAA6B;WACrD,YAAY,EAAE,mBAAmB;AACzC;WACQ,MAAM,EAAE,mBAAmB;WAC3B,WAAW,EAAE,wBAAwB;AAC7C;WACQ,IAAI,EAAE,iBAAiB;AAC/B;WACQ,QAAQ,EAAE,qBAAqB;WAC/B,WAAW,EAAE,wBAAwB;WACrC,aAAa,EAAE,0BAA0B;AACjD;WACQ,aAAa,EAAE,0BAA0B;CACjD,OAAK,CAAC;AACN;CACA;OACI,IAAI,OAAO,GAAG,EAAE;WACZ,cAAc,GAAG,EAAE;CAC3B,UAAQ,YAAY,CAAC;AACrB;CACA,MAAI,SAAS,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE;CACtC,UAAQ,IAAI,CAAC;CACb,cAAY,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;CACtD,UAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE;eAC1B,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE;mBACrB,OAAO,CAAC,CAAC;gBACZ;YACJ;WACD,OAAO,IAAI,CAAC;QACf;AACL;CACA,MAAI,SAAS,eAAe,CAAC,GAAG,EAAE;CAClC,UAAQ,OAAO,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;QAC1D;AACL;CACA;CACA;CACA;CACA,MAAI,SAAS,YAAY,CAAC,KAAK,EAAE;WACzB,IAAI,CAAC,GAAG,CAAC;CACjB,cAAY,CAAC;CACb,cAAY,IAAI;CAChB,cAAY,MAAM;CAClB,cAAY,KAAK,CAAC;AAClB;CACA,UAAQ,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE;CACjC,cAAY,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CACzD,cAAY,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;eACjB,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACjD,cAAY,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;CACjD,cAAY,OAAO,CAAC,GAAG,CAAC,EAAE;CAC1B,kBAAgB,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;mBACjD,IAAI,MAAM,EAAE;uBACR,OAAO,MAAM,CAAC;oBACjB;mBACD;CAChB,sBAAoB,IAAI;CACxB,sBAAoB,IAAI,CAAC,MAAM,IAAI,CAAC;uBAChB,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;qBACpC;CAClB;CACA,sBAAoB,MAAM;oBACT;mBACD,CAAC,EAAE,CAAC;gBACP;eACD,CAAC,EAAE,CAAC;YACP;WACD,OAAO,YAAY,CAAC;QACvB;AACL;CACA,MAAI,SAAS,gBAAgB,CAAC,IAAI,EAAE;CACpC;WACQ,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC;QAC5C;AACL;CACA,MAAI,SAAS,UAAU,CAAC,IAAI,EAAE;WACtB,IAAI,SAAS,GAAG,IAAI;CAC5B,cAAY,cAAc,CAAC;CAC3B;WACQ;CACR,cAAY,OAAO,CAAC,IAAI,CAAC,KAAK,SAAS;eAC3B,QAAa,KAAK,WAAW;CACzC,cAAY,MAAM;eACN,MAAM,CAAC,OAAO;eACd,gBAAgB,CAAC,IAAI,CAAC;aACxB;CACV,cAAY,IAAI;CAChB,kBAAgB,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;mBAC/B,cAAc,GAAGC,eAAO,CAAC;CACzC,kBAAgB,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CACnD,kBAAgB,kBAAkB,CAAC,SAAS,CAAC,CAAC;gBACjC,CAAC,OAAO,CAAC,EAAE;CACxB;CACA;CACA,kBAAgB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;gBACxB;YACJ;CACT,UAAQ,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;QACxB;AACL;CACA;CACA;CACA;CACA,MAAI,SAAS,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE;WACrC,IAAI,IAAI,CAAC;WACT,IAAI,GAAG,EAAE;CACjB,cAAY,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;CACrC,kBAAgB,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;CACtC,eAAa,MAAM;mBACH,IAAI,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBACpC;AACb;eACY,IAAI,IAAI,EAAE;CACtB;mBACgB,YAAY,GAAG,IAAI,CAAC;CACpC,eAAa,MAAM;mBACH,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,IAAI,EAAE;CACpE;uBACoB,OAAO,CAAC,IAAI;CAChC,0BAAwB,SAAS,GAAG,GAAG,GAAG,wCAAwC;CAClF,uBAAqB,CAAC;oBACL;gBACJ;YACJ;AACT;CACA,UAAQ,OAAO,YAAY,CAAC,KAAK,CAAC;QAC7B;AACL;CACA,MAAI,SAAS,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE;CACxC,UAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;CAC7B,cAAY,IAAI,MAAM;mBACN,YAAY,GAAG,UAAU,CAAC;CAC1C,cAAY,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;CAC/B,cAAY,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;CACvC,kBAAgB,eAAe;CAC/B,sBAAoB,sBAAsB;CAC1C,sBAAoB,wDAAwD;CAC5E,0BAAwB,sDAAsD;CAC9E,0BAAwB,wDAAwD;CAChF,0BAAwB,yEAAyE;CACjG,mBAAiB,CAAC;mBACF,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;CACrD,eAAa,MAAM,IAAI,MAAM,CAAC,YAAY,IAAI,IAAI,EAAE;mBACpC,IAAI,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,IAAI,EAAE;uBACtC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC;CACxE,mBAAiB,MAAM;uBACH,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;CAC7D,sBAAoB,IAAI,MAAM,IAAI,IAAI,EAAE;CACxC,0BAAwB,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC;CACtD,uBAAqB,MAAM;2BACH,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;+BACtC,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;4BAC5C;2BACD,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC;+BACrC,IAAI,EAAE,IAAI;+BACV,MAAM,EAAE,MAAM;CAC1C,2BAAyB,CAAC,CAAC;2BACH,OAAO,IAAI,CAAC;wBACf;oBACJ;gBACJ;CACb,cAAY,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;AAC3E;CACA,cAAY,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE;mBACtB,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;uBACtC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;CACnD,mBAAiB,CAAC,CAAC;gBACN;AACb;CACA;CACA;CACA;CACA,cAAY,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACrC;CACA,cAAY,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC,WAAS,MAAM;CACf;CACA,cAAY,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;eACrB,OAAO,IAAI,CAAC;YACf;QACJ;AACL;CACA,MAAI,SAAS,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE;CACxC,UAAQ,IAAI,MAAM,IAAI,IAAI,EAAE;CAC5B,cAAY,IAAI,MAAM;CACtB,kBAAgB,SAAS;mBACT,YAAY,GAAG,UAAU,CAAC;AAC1C;CACA,cAAY,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,IAAI,IAAI,EAAE;CAC7E;CACA,kBAAgB,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;CAC/E,eAAa,MAAM;CACnB;CACA,kBAAgB,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;CAC7C,kBAAgB,IAAI,SAAS,IAAI,IAAI,EAAE;CACvC,sBAAoB,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC;oBACpC;mBACD,MAAM,GAAG,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;CAC5D,kBAAgB,IAAI,SAAS,IAAI,IAAI,EAAE;CACvC;CACA;CACA;CACA,sBAAoB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;oBACtB;CACjB,kBAAgB,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;mBAC5B,MAAM,CAAC,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD,kBAAgB,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;gBAC1B;AACb;CACA;CACA,cAAY,kBAAkB,CAAC,IAAI,CAAC,CAAC;CACrC,WAAS,MAAM;CACf;CACA,cAAY,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;mBACvB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,IAAI,IAAI,EAAE;uBACpC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC;CAC/D,sBAAoB,IAAI,IAAI,KAAK,kBAAkB,EAAE,EAAE;CACvD,0BAAwB,kBAAkB,CAAC,IAAI,CAAC,CAAC;wBAC5B;oBACJ,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;CAClD,sBAAoB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;oBACxB;gBACJ;YACJ;CACT,UAAQ,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;QACxB;AACL;CACA;CACA,MAAI,SAAS,SAAS,CAAC,GAAG,EAAE;WACpB,IAAI,MAAM,CAAC;AACnB;CACA,UAAQ,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE;CACrD,cAAY,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;YAC3B;AACT;WACQ,IAAI,CAAC,GAAG,EAAE;eACN,OAAO,YAAY,CAAC;YACvB;AACT;CACA,UAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;CAC3B;CACA,cAAY,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;eACzB,IAAI,MAAM,EAAE;mBACR,OAAO,MAAM,CAAC;gBACjB;CACb,cAAY,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACf;AACT;CACA,UAAQ,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;QAC5B;AACL;OACI,SAAS,WAAW,GAAG;CAC3B,UAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACxB;AACL;CACA,MAAI,SAAS,aAAa,CAAC,CAAC,EAAE;CAC9B,UAAQ,IAAI,QAAQ;CACpB,cAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AACrB;CACA,UAAQ,IAAI,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,EAAE;CACrD,cAAY,QAAQ;CACpB,kBAAgB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;CAC7C,wBAAsB,KAAK;yBACL,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;CAC7E,wBAAsB,IAAI;CAC1B,wBAAsB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;CACjC,wBAAsB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;CAClC,yBAAuB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE;CACrC,6BAA2B,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;CAC1C,gCAA8B,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;CAC7C,gCAA8B,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;CACpD,wBAAsB,IAAI;CAC1B,wBAAsB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE;CACrD,wBAAsB,MAAM;CAC5B,wBAAsB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE;CACrD,wBAAsB,MAAM;CAC5B,wBAAsB,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,GAAG,GAAG;CAChE,wBAAsB,WAAW;yBACX,CAAC,CAAC,CAAC;AACzB;eACY;CACZ,kBAAgB,eAAe,CAAC,CAAC,CAAC,CAAC,kBAAkB;CACrD,mBAAiB,QAAQ,GAAG,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC;iBACtC;mBACE,QAAQ,GAAG,IAAI,CAAC;gBACnB;CACb,cAAY,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE;mBACtD,QAAQ,GAAG,IAAI,CAAC;gBACnB;CACb,cAAY,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,gBAAgB,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE;mBACxD,QAAQ,GAAG,OAAO,CAAC;gBACtB;AACb;eACY,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC1C;AACT;WACQ,OAAO,CAAC,CAAC;QACZ;AACL;CACA;CACA;CACA,MAAI,IAAI,gBAAgB;CACxB,cAAY,gJAAgJ;CAC5J,UAAQ,aAAa;CACrB,cAAY,4IAA4I;WAChJ,OAAO,GAAG,uBAAuB;CACzC,UAAQ,QAAQ,GAAG;CACnB,cAAY,CAAC,cAAc,EAAE,qBAAqB,CAAC;CACnD,cAAY,CAAC,YAAY,EAAE,iBAAiB,CAAC;CAC7C,cAAY,CAAC,cAAc,EAAE,gBAAgB,CAAC;CAC9C,cAAY,CAAC,YAAY,EAAE,aAAa,EAAE,KAAK,CAAC;CAChD,cAAY,CAAC,UAAU,EAAE,aAAa,CAAC;CACvC,cAAY,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC;CAC5C,cAAY,CAAC,YAAY,EAAE,YAAY,CAAC;CACxC,cAAY,CAAC,UAAU,EAAE,OAAO,CAAC;CACjC,cAAY,CAAC,YAAY,EAAE,aAAa,CAAC;CACzC,cAAY,CAAC,WAAW,EAAE,aAAa,EAAE,KAAK,CAAC;CAC/C,cAAY,CAAC,SAAS,EAAE,OAAO,CAAC;CAChC,cAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC;CACtC,cAAY,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;YAC3B;CACT;CACA,UAAQ,QAAQ,GAAG;CACnB,cAAY,CAAC,eAAe,EAAE,qBAAqB,CAAC;CACpD,cAAY,CAAC,eAAe,EAAE,oBAAoB,CAAC;CACnD,cAAY,CAAC,UAAU,EAAE,gBAAgB,CAAC;CAC1C,cAAY,CAAC,OAAO,EAAE,WAAW,CAAC;CAClC,cAAY,CAAC,aAAa,EAAE,mBAAmB,CAAC;CAChD,cAAY,CAAC,aAAa,EAAE,kBAAkB,CAAC;CAC/C,cAAY,CAAC,QAAQ,EAAE,cAAc,CAAC;CACtC,cAAY,CAAC,MAAM,EAAE,UAAU,CAAC;CAChC,cAAY,CAAC,IAAI,EAAE,MAAM,CAAC;YACjB;WACD,eAAe,GAAG,oBAAoB;CAC9C;CACA,UAAQ,OAAO;CACf,cAAY,yLAAyL;CACrM,UAAQ,UAAU,GAAG;eACT,EAAE,EAAE,CAAC;eACL,GAAG,EAAE,CAAC;CAClB,cAAY,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;CACxB,cAAY,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;CACxB,cAAY,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;CACxB,cAAY,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;CACxB,cAAY,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;CACxB,cAAY,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;CACxB,cAAY,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;CACxB,cAAY,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;CACxB,WAAS,CAAC;AACV;CACA;CACA,MAAI,SAAS,aAAa,CAAC,MAAM,EAAE;CACnC,UAAQ,IAAI,CAAC;CACb,cAAY,CAAC;CACb,cAAY,MAAM,GAAG,MAAM,CAAC,EAAE;CAC9B,cAAY,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;CAC/E,cAAY,SAAS;CACrB,cAAY,UAAU;CACtB,cAAY,UAAU;CACtB,cAAY,QAAQ;CACpB,cAAY,WAAW,GAAG,QAAQ,CAAC,MAAM;CACzC,cAAY,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC1C;WACQ,IAAI,KAAK,EAAE;eACP,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;CAC/C,cAAY,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CACrD,kBAAgB,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;uBAC/B,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;uBAC5B,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC;CACzD,sBAAoB,MAAM;oBACT;gBACJ;CACb,cAAY,IAAI,UAAU,IAAI,IAAI,EAAE;CACpC,kBAAgB,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;CACxC,kBAAgB,OAAO;gBACV;CACb,cAAY,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;CAC1B,kBAAgB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CACzD,sBAAoB,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;CACvD;CACA,0BAAwB,UAAU,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACxE,0BAAwB,MAAM;wBACT;oBACJ;CACjB,kBAAgB,IAAI,UAAU,IAAI,IAAI,EAAE;CACxC,sBAAoB,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;CAC5C,sBAAoB,OAAO;oBACV;gBACJ;CACb,cAAY,IAAI,CAAC,SAAS,IAAI,UAAU,IAAI,IAAI,EAAE;CAClD,kBAAgB,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;CACxC,kBAAgB,OAAO;gBACV;CACb,cAAY,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;mBACV,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;uBACxB,QAAQ,GAAG,GAAG,CAAC;CACnC,mBAAiB,MAAM;CACvB,sBAAoB,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;CAC5C,sBAAoB,OAAO;oBACV;gBACJ;CACb,cAAY,MAAM,CAAC,EAAE,GAAG,UAAU,IAAI,UAAU,IAAI,EAAE,CAAC,IAAI,QAAQ,IAAI,EAAE,CAAC,CAAC;CAC3E,cAAY,yBAAyB,CAAC,MAAM,CAAC,CAAC;CAC9C,WAAS,MAAM;CACf,cAAY,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;YAC3B;QACJ;AACL;CACA,MAAI,SAAS,yBAAyB;CACtC,UAAQ,OAAO;CACf,UAAQ,QAAQ;CAChB,UAAQ,MAAM;CACd,UAAQ,OAAO;CACf,UAAQ,SAAS;CACjB,UAAQ,SAAS;SACX;WACE,IAAI,MAAM,GAAG;eACT,cAAc,CAAC,OAAO,CAAC;CACnC,cAAY,wBAAwB,CAAC,OAAO,CAAC,QAAQ,CAAC;CACtD,cAAY,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;CAChC,cAAY,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;CACjC,cAAY,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;CACnC,WAAS,CAAC;AACV;WACQ,IAAI,SAAS,EAAE;eACX,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;YACxC;AACT;WACQ,OAAO,MAAM,CAAC;QACjB;AACL;CACA,MAAI,SAAS,cAAc,CAAC,OAAO,EAAE;WAC7B,IAAI,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;CACzC,UAAQ,IAAI,IAAI,IAAI,EAAE,EAAE;CACxB,cAAY,OAAO,IAAI,GAAG,IAAI,CAAC;CAC/B,WAAS,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE;CAChC,cAAY,OAAO,IAAI,GAAG,IAAI,CAAC;YACtB;WACD,OAAO,IAAI,CAAC;QACf;AACL;CACA,MAAI,SAAS,iBAAiB,CAAC,CAAC,EAAE;CAClC;CACA,UAAQ,OAAO,CAAC;CAChB,eAAa,OAAO,CAAC,oBAAoB,EAAE,GAAG,CAAC;CAC/C,eAAa,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;CACrC,eAAa,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;CAClC,eAAa,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC9B;AACL;OACI,SAAS,YAAY,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE;WACnD,IAAI,UAAU,EAAE;CACxB;eACY,IAAI,eAAe,GAAG,0BAA0B,CAAC,OAAO,CAAC,UAAU,CAAC;mBAChE,aAAa,GAAG,IAAI,IAAI;uBACpB,WAAW,CAAC,CAAC,CAAC;uBACd,WAAW,CAAC,CAAC,CAAC;uBACd,WAAW,CAAC,CAAC,CAAC;oBACjB,CAAC,MAAM,EAAE,CAAC;CAC3B,cAAY,IAAI,eAAe,KAAK,aAAa,EAAE;mBACnC,eAAe,CAAC,MAAM,CAAC,CAAC,eAAe,GAAG,IAAI,CAAC;CAC/D,kBAAgB,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;mBACxB,OAAO,KAAK,CAAC;gBAChB;YACJ;WACD,OAAO,IAAI,CAAC;QACf;AACL;OACI,SAAS,eAAe,CAAC,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE;WAC3D,IAAI,SAAS,EAAE;CACvB,cAAY,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC;YAChC,MAAM,IAAI,cAAc,EAAE;CACnC;eACY,OAAO,CAAC,CAAC;CACrB,WAAS,MAAM;eACH,IAAI,EAAE,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;CAC5C,kBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG;mBACZ,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC;CACnC,cAAY,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACrB;QACJ;AACL;CACA;CACA,MAAI,SAAS,iBAAiB,CAAC,MAAM,EAAE;CACvC,UAAQ,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;CAC9D,cAAY,WAAW,CAAC;WAChB,IAAI,KAAK,EAAE;eACP,WAAW,GAAG,yBAAyB;mBACnC,KAAK,CAAC,CAAC,CAAC;mBACR,KAAK,CAAC,CAAC,CAAC;mBACR,KAAK,CAAC,CAAC,CAAC;mBACR,KAAK,CAAC,CAAC,CAAC;mBACR,KAAK,CAAC,CAAC,CAAC;mBACR,KAAK,CAAC,CAAC,CAAC;CACxB,eAAa,CAAC;CACd,cAAY,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE;CAC9D,kBAAgB,OAAO;gBACV;AACb;CACA,cAAY,MAAM,CAAC,EAAE,GAAG,WAAW,CAAC;eACxB,MAAM,CAAC,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AACzE;CACA,cAAY,MAAM,CAAC,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;CAC7D,cAAY,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7E;eACY,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;CACnD,WAAS,MAAM;CACf,cAAY,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;YAC3B;QACJ;AACL;CACA;CACA,MAAI,SAAS,gBAAgB,CAAC,MAAM,EAAE;WAC9B,IAAI,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;CACtD,UAAQ,IAAI,OAAO,KAAK,IAAI,EAAE;CAC9B,cAAY,MAAM,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;CAC9C,cAAY,OAAO;YACV;AACT;CACA,UAAQ,aAAa,CAAC,MAAM,CAAC,CAAC;CAC9B,UAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,EAAE;CACvC,cAAY,OAAO,MAAM,CAAC,QAAQ,CAAC;CACnC,WAAS,MAAM;CACf,cAAY,OAAO;YACV;AACT;CACA,UAAQ,iBAAiB,CAAC,MAAM,CAAC,CAAC;CAClC,UAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,EAAE;CACvC,cAAY,OAAO,MAAM,CAAC,QAAQ,CAAC;CACnC,WAAS,MAAM;CACf,cAAY,OAAO;YACV;AACT;CACA,UAAQ,IAAI,MAAM,CAAC,OAAO,EAAE;CAC5B,cAAY,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;CACpC,WAAS,MAAM;CACf;CACA,cAAY,KAAK,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;YACzC;QACJ;AACL;CACA,MAAI,KAAK,CAAC,uBAAuB,GAAG,SAAS;CAC7C,UAAQ,4GAA4G;CACpH,cAAY,2FAA2F;CACvG,cAAY,4FAA4F;WAChG,UAAU,MAAM,EAAE;eACd,MAAM,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,OAAO,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;YACpE;CACT,OAAK,CAAC;AACN;CACA;OACI,SAAS,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;CAC/B,UAAQ,IAAI,CAAC,IAAI,IAAI,EAAE;eACX,OAAO,CAAC,CAAC;YACZ;CACT,UAAQ,IAAI,CAAC,IAAI,IAAI,EAAE;eACX,OAAO,CAAC,CAAC;YACZ;WACD,OAAO,CAAC,CAAC;QACZ;AACL;CACA,MAAI,SAAS,gBAAgB,CAAC,MAAM,EAAE;CACtC;WACQ,IAAI,QAAQ,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;CAC7C,UAAQ,IAAI,MAAM,CAAC,OAAO,EAAE;CAC5B,cAAY,OAAO;mBACH,QAAQ,CAAC,cAAc,EAAE;mBACzB,QAAQ,CAAC,WAAW,EAAE;mBACtB,QAAQ,CAAC,UAAU,EAAE;CACrC,eAAa,CAAC;YACL;CACT,UAAQ,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5E;AACL;CACA;CACA;CACA;CACA;CACA,MAAI,SAAS,eAAe,CAAC,MAAM,EAAE;CACrC,UAAQ,IAAI,CAAC;CACb,cAAY,IAAI;eACJ,KAAK,GAAG,EAAE;CACtB,cAAY,WAAW;CACvB,cAAY,eAAe;CAC3B,cAAY,SAAS,CAAC;AACtB;CACA,UAAQ,IAAI,MAAM,CAAC,EAAE,EAAE;CACvB,cAAY,OAAO;YACV;AACT;CACA,UAAQ,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAC/C;CACA;WACQ,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE;CAC9E,cAAY,qBAAqB,CAAC,MAAM,CAAC,CAAC;YACjC;AACT;CACA;CACA,UAAQ,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,EAAE;CACvC,cAAY,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE;eACY;CACZ,kBAAgB,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC;CACzD,kBAAgB,MAAM,CAAC,UAAU,KAAK,CAAC;iBACzB;mBACE,eAAe,CAAC,MAAM,CAAC,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBACrD;AACb;CACA,cAAY,IAAI,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;eACtD,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;eACtC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACvC;AACT;CACA;CACA;CACA;CACA;CACA;WACQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,EAAE;CACxD,cAAY,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC5C;AACT;CACA;CACA,UAAQ,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;eACf,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;mBACnB,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/D;AACT;CACA;WACQ;CACR,cAAY,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE;CAClC,cAAY,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;CACnC,cAAY,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;CACnC,cAAY,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;aAC9B;CACV,cAAY,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;eACvB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvB;AACT;CACA,UAAQ,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,aAAa,GAAG,UAAU,EAAE,KAAK;CACvE,cAAY,IAAI;CAChB,cAAY,KAAK;CACjB,WAAS,CAAC;CACV,UAAQ,eAAe,GAAG,MAAM,CAAC,OAAO;CACxC,gBAAc,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE;CACnC,gBAAc,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;AACjC;CACA;CACA;CACA,UAAQ,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE;CACjC,cAAY,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACpE;AACT;CACA,UAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE;eACjB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACxB;AACT;CACA;WACQ;eACI,MAAM,CAAC,EAAE;CACrB,cAAY,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,WAAW;CAC9C,cAAY,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,eAAe;aACjC;eACE,eAAe,CAAC,MAAM,CAAC,CAAC,eAAe,GAAG,IAAI,CAAC;YAClD;QACJ;AACL;CACA,MAAI,SAAS,qBAAqB,CAAC,MAAM,EAAE;CAC3C,UAAQ,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC;AACjF;CACA,UAAQ,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;CACtB,UAAQ,IAAI,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;eAC5C,GAAG,GAAG,CAAC,CAAC;eACR,GAAG,GAAG,CAAC,CAAC;AACpB;CACA;CACA;CACA;CACA;eACY,QAAQ,GAAG,QAAQ;mBACf,CAAC,CAAC,EAAE;CACpB,kBAAgB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;mBACf,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;CACpD,eAAa,CAAC;eACF,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;eACxB,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;eAC3B,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE;mBAC5B,eAAe,GAAG,IAAI,CAAC;gBAC1B;CACb,WAAS,MAAM;eACH,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;eAC/B,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AAC3C;eACY,OAAO,GAAG,UAAU,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC1D;CACA,cAAY,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AACrE;CACA;CACA,cAAY,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AAC/C;CACA,cAAY,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;CAC7B;CACA,kBAAgB,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;mBACd,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE;uBAC5B,eAAe,GAAG,IAAI,CAAC;oBAC1B;CACjB,eAAa,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;CACpC;CACA,kBAAgB,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;CACpC,kBAAgB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;uBACpB,eAAe,GAAG,IAAI,CAAC;oBAC1B;CACjB,eAAa,MAAM;CACnB;mBACgB,OAAO,GAAG,GAAG,CAAC;gBACjB;YACJ;CACT,UAAQ,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;eACpD,eAAe,CAAC,MAAM,CAAC,CAAC,cAAc,GAAG,IAAI,CAAC;CAC1D,WAAS,MAAM,IAAI,eAAe,IAAI,IAAI,EAAE;eAChC,eAAe,CAAC,MAAM,CAAC,CAAC,gBAAgB,GAAG,IAAI,CAAC;CAC5D,WAAS,MAAM;CACf,cAAY,IAAI,GAAG,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;eAC7D,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;CACxC,cAAY,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;YACtC;QACJ;AACL;CACA;CACA,MAAI,KAAK,CAAC,QAAQ,GAAG,YAAY,EAAE,CAAC;AACpC;CACA;CACA,MAAI,KAAK,CAAC,QAAQ,GAAG,YAAY,EAAE,CAAC;AACpC;CACA;CACA,MAAI,SAAS,yBAAyB,CAAC,MAAM,EAAE;CAC/C;WACQ,IAAI,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC,QAAQ,EAAE;CAC1C,cAAY,aAAa,CAAC,MAAM,CAAC,CAAC;CAClC,cAAY,OAAO;YACV;WACD,IAAI,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC,QAAQ,EAAE;CAC1C,cAAY,iBAAiB,CAAC,MAAM,CAAC,CAAC;CACtC,cAAY,OAAO;YACV;CACT,UAAQ,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;WACf,eAAe,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;AAC7C;CACA;CACA,UAAQ,IAAI,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE;CACnC,cAAY,CAAC;CACb,cAAY,WAAW;CACvB,cAAY,MAAM;CAClB,cAAY,KAAK;CACjB,cAAY,OAAO;CACnB,cAAY,YAAY,GAAG,MAAM,CAAC,MAAM;eAC5B,sBAAsB,GAAG,CAAC;CACtC,cAAY,GAAG;CACf,cAAY,QAAQ,CAAC;AACrB;CACA,UAAQ,MAAM;CACd,cAAY,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;CAClF,UAAQ,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;WACzB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;CACvC,cAAY,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;CAC9B,cAAY,WAAW,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CAC7E,kBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC;eACX,IAAI,WAAW,EAAE;CAC7B,kBAAgB,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;CACxE,kBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;uBACpB,eAAe,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACrD;CACjB,kBAAgB,MAAM,GAAG,MAAM,CAAC,KAAK;uBACjB,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,MAAM;CACpE,mBAAiB,CAAC;CAClB,kBAAgB,sBAAsB,IAAI,WAAW,CAAC,MAAM,CAAC;gBAChD;CACb;CACA,cAAY,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE;mBAC7B,IAAI,WAAW,EAAE;uBACb,eAAe,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;CAC1D,mBAAiB,MAAM;uBACH,eAAe,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACpD;mBACD,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;gBACvD,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE;mBACvC,eAAe,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACpD;YACJ;AACT;CACA;CACA,UAAQ,eAAe,CAAC,MAAM,CAAC,CAAC,aAAa;eACjC,YAAY,GAAG,sBAAsB,CAAC;CAClD,UAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;eACnB,eAAe,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpD;AACT;CACA;WACQ;CACR,cAAY,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE;CACjC,cAAY,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,IAAI;CACpD,cAAY,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;aACrB;eACE,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC;YAC/C;AACT;CACA,UAAQ,eAAe,CAAC,MAAM,CAAC,CAAC,eAAe,GAAG,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;WAC7D,eAAe,CAAC,MAAM,CAAC,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;CAC5D;CACA,UAAQ,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,eAAe;eAC7B,MAAM,CAAC,OAAO;CAC1B,cAAY,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;eACf,MAAM,CAAC,SAAS;CAC5B,WAAS,CAAC;AACV;CACA;WACQ,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC;CAC1C,UAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;eACd,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1E;AACT;CACA,UAAQ,eAAe,CAAC,MAAM,CAAC,CAAC;CAChC,UAAQ,aAAa,CAAC,MAAM,CAAC,CAAC;QACzB;AACL;OACI,SAAS,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;WAC7C,IAAI,IAAI,CAAC;AACjB;CACA,UAAQ,IAAI,QAAQ,IAAI,IAAI,EAAE;CAC9B;eACY,OAAO,IAAI,CAAC;YACf;CACT,UAAQ,IAAI,MAAM,CAAC,YAAY,IAAI,IAAI,EAAE;eAC7B,OAAO,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;CACvD,WAAS,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE;CACxC;eACY,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;CACzC,cAAY,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,EAAE;mBACnB,IAAI,IAAI,EAAE,CAAC;gBACd;CACb,cAAY,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE;mBACtB,IAAI,GAAG,CAAC,CAAC;gBACZ;eACD,OAAO,IAAI,CAAC;CACxB,WAAS,MAAM;CACf;eACY,OAAO,IAAI,CAAC;YACf;QACJ;AACL;CACA;CACA,MAAI,SAAS,wBAAwB,CAAC,MAAM,EAAE;CAC9C,UAAQ,IAAI,UAAU;CACtB,cAAY,UAAU;CACtB,cAAY,WAAW;CACvB,cAAY,CAAC;CACb,cAAY,YAAY;CACxB,cAAY,gBAAgB;eAChB,iBAAiB,GAAG,KAAK;CACrC,cAAY,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC;AAC1C;CACA,UAAQ,IAAI,UAAU,KAAK,CAAC,EAAE;eAClB,eAAe,CAAC,MAAM,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC;eAC7C,MAAM,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;CACtC,cAAY,OAAO;YACV;AACT;WACQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;eAC7B,YAAY,GAAG,CAAC,CAAC;eACjB,gBAAgB,GAAG,KAAK,CAAC;eACzB,UAAU,GAAG,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;CAChD,cAAY,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,EAAE;CACxC,kBAAgB,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;gBACvC;eACD,UAAU,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CACzC,cAAY,yBAAyB,CAAC,UAAU,CAAC,CAAC;AAClD;CACA,cAAY,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;mBACrB,gBAAgB,GAAG,IAAI,CAAC;gBAC3B;AACb;CACA;eACY,YAAY,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC;AACtE;CACA;CACA,cAAY,YAAY,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC;AACjF;eACY,eAAe,CAAC,UAAU,CAAC,CAAC,KAAK,GAAG,YAAY,CAAC;AAC7D;eACY,IAAI,CAAC,iBAAiB,EAAE;mBACpB;uBACI,WAAW,IAAI,IAAI;uBACnB,YAAY,GAAG,WAAW;CAC9C,sBAAoB,gBAAgB;qBAClB;uBACE,WAAW,GAAG,YAAY,CAAC;uBAC3B,UAAU,GAAG,UAAU,CAAC;uBACxB,IAAI,gBAAgB,EAAE;2BAClB,iBAAiB,GAAG,IAAI,CAAC;wBAC5B;oBACJ;CACjB,eAAa,MAAM;CACnB,kBAAgB,IAAI,YAAY,GAAG,WAAW,EAAE;uBAC5B,WAAW,GAAG,YAAY,CAAC;uBAC3B,UAAU,GAAG,UAAU,CAAC;oBAC3B;gBACJ;YACJ;AACT;WACQ,MAAM,CAAC,MAAM,EAAE,UAAU,IAAI,UAAU,CAAC,CAAC;QAC5C;AACL;CACA,MAAI,SAAS,gBAAgB,CAAC,MAAM,EAAE;CACtC,UAAQ,IAAI,MAAM,CAAC,EAAE,EAAE;CACvB,cAAY,OAAO;YACV;AACT;WACQ,IAAI,CAAC,GAAG,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;CAC/C,cAAY,SAAS,GAAG,CAAC,CAAC,GAAG,KAAK,SAAS,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC;CAC7D,UAAQ,MAAM,CAAC,EAAE,GAAG,GAAG;eACX,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,WAAW,CAAC;eACvE,UAAU,GAAG,EAAE;mBACX,OAAO,GAAG,IAAI,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACnC;CACb,WAAS,CAAC;AACV;CACA,UAAQ,eAAe,CAAC,MAAM,CAAC,CAAC;QAC3B;AACL;CACA,MAAI,SAAS,gBAAgB,CAAC,MAAM,EAAE;CACtC,UAAQ,IAAI,GAAG,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACnE,UAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE;CAC1B;eACY,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;CAC5B,cAAY,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAC;YAC5B;AACT;WACQ,OAAO,GAAG,CAAC;QACd;AACL;CACA,MAAI,SAAS,aAAa,CAAC,MAAM,EAAE;CACnC,UAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,EAAE;CAC7B,cAAY,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;AAC/B;CACA,UAAQ,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAChE;CACA,UAAQ,IAAI,KAAK,KAAK,IAAI,KAAK,MAAM,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC,EAAE;eAC1D,OAAO,aAAa,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7C;AACT;CACA,UAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;CACvC,cAAY,MAAM,CAAC,EAAE,GAAG,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACtD;AACT;CACA,UAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;eACjB,OAAO,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;CACpD,WAAS,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE;CAClC,cAAY,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC;CAC9B,WAAS,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;CACpC,cAAY,wBAAwB,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,IAAI,MAAM,EAAE;CAC3B,cAAY,yBAAyB,CAAC,MAAM,CAAC,CAAC;CAC9C,WAAS,MAAM;CACf,cAAY,eAAe,CAAC,MAAM,CAAC,CAAC;YAC3B;AACT;CACA,UAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;CAC9B,cAAY,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC;YACpB;AACT;WACQ,OAAO,MAAM,CAAC;QACjB;AACL;CACA,MAAI,SAAS,eAAe,CAAC,MAAM,EAAE;CACrC,UAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC;CAC9B,UAAQ,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;CAChC,cAAY,MAAM,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;CAC9C,WAAS,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE;CAClC,cAAY,MAAM,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;CAClD,WAAS,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;CAC9C,cAAY,gBAAgB,CAAC,MAAM,CAAC,CAAC;CACrC,WAAS,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;CACnC,cAAY,MAAM,CAAC,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,GAAG,EAAE;CAC3D,kBAAgB,OAAO,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;CACzC,eAAa,CAAC,CAAC;CACf,cAAY,eAAe,CAAC,MAAM,CAAC,CAAC;CACpC,WAAS,MAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;CACpC,cAAY,gBAAgB,CAAC,MAAM,CAAC,CAAC;CACrC,WAAS,MAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;CACpC;eACY,MAAM,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;CACxC,WAAS,MAAM;CACf,cAAY,KAAK,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;YACzC;QACJ;AACL;CACA,MAAI,SAAS,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE;CACpE,UAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;AACnB;WACQ,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,EAAE;eACrC,MAAM,GAAG,MAAM,CAAC;eAChB,MAAM,GAAG,SAAS,CAAC;YACtB;AACT;WACQ,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,EAAE;eACrC,MAAM,GAAG,MAAM,CAAC;eAChB,MAAM,GAAG,SAAS,CAAC;YACtB;AACT;WACQ;eACI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC;gBACvC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;aACxC;eACE,KAAK,GAAG,SAAS,CAAC;YACrB;CACT;CACA;CACA,UAAQ,CAAC,CAAC,gBAAgB,GAAG,IAAI,CAAC;WAC1B,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;CACrC,UAAQ,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC;CACtB,UAAQ,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC;CACrB,UAAQ,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC;CACtB,UAAQ,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC;AAC3B;CACA,UAAQ,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC9B;AACL;OACI,SAAS,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;CACxD,UAAQ,OAAO,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACjE;AACL;OACI,IAAI,YAAY,GAAG,SAAS;CAChC,cAAY,oGAAoG;CAChH,cAAY,YAAY;mBACR,IAAI,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;mBAC/C,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE;uBACnC,OAAO,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;CACvD,mBAAiB,MAAM;uBACH,OAAO,aAAa,EAAE,CAAC;oBAC1B;gBACJ;YACJ;WACD,YAAY,GAAG,SAAS;CAChC,cAAY,oGAAoG;CAChH,cAAY,YAAY;mBACR,IAAI,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;mBAC/C,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE;uBACnC,OAAO,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;CACvD,mBAAiB,MAAM;uBACH,OAAO,aAAa,EAAE,CAAC;oBAC1B;gBACJ;CACb,WAAS,CAAC;AACV;CACA;CACA;CACA;CACA;CACA;CACA,MAAI,SAAS,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE;CACjC,UAAQ,IAAI,GAAG,EAAE,CAAC,CAAC;CACnB,UAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;CACzD,cAAY,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACxB;CACT,UAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;eACjB,OAAO,WAAW,EAAE,CAAC;YACxB;CACT,UAAQ,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACzB,UAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;eACjC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE;CAC9D,kBAAgB,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBACpB;YACJ;WACD,OAAO,GAAG,CAAC;QACd;AACL;CACA;OACI,SAAS,GAAG,GAAG;CACnB,UAAQ,IAAI,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC/C;CACA,UAAQ,OAAO,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACnC;AACL;OACI,SAAS,GAAG,GAAG;CACnB,UAAQ,IAAI,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC/C;CACA,UAAQ,OAAO,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAClC;AACL;OACI,IAAI,GAAG,GAAG,YAAY;CAC1B,UAAQ,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;CACnD,OAAK,CAAC;AACN;OACI,IAAI,QAAQ,GAAG;CACnB,UAAQ,MAAM;CACd,UAAQ,SAAS;CACjB,UAAQ,OAAO;CACf,UAAQ,MAAM;CACd,UAAQ,KAAK;CACb,UAAQ,MAAM;CACd,UAAQ,QAAQ;CAChB,UAAQ,QAAQ;CAChB,UAAQ,aAAa;CACrB,OAAK,CAAC;AACN;CACA,MAAI,SAAS,eAAe,CAAC,CAAC,EAAE;CAChC,UAAQ,IAAI,GAAG;eACH,cAAc,GAAG,KAAK;CAClC,cAAY,CAAC;CACb,cAAY,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;CACvC,UAAQ,KAAK,GAAG,IAAI,CAAC,EAAE;eACX;CACZ,kBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC;mBAClB;uBACI,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;CACtD,uBAAqB,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACrC;iBACH;mBACE,OAAO,KAAK,CAAC;gBAChB;YACJ;AACT;WACQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,EAAE,CAAC,EAAE;eAC3B,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;mBAChB,IAAI,cAAc,EAAE;uBAChB,OAAO,KAAK,CAAC;oBAChB;mBACD,IAAI,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;uBACtD,cAAc,GAAG,IAAI,CAAC;oBACzB;gBACJ;YACJ;AACT;WACQ,OAAO,IAAI,CAAC;QACf;AACL;OACI,SAAS,SAAS,GAAG;CACzB,UAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC;QACxB;AACL;OACI,SAAS,eAAe,GAAG;CAC/B,UAAQ,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC9B;AACL;CACA,MAAI,SAAS,QAAQ,CAAC,QAAQ,EAAE;CAChC,UAAQ,IAAI,eAAe,GAAG,oBAAoB,CAAC,QAAQ,CAAC;CAC5D,cAAY,KAAK,GAAG,eAAe,CAAC,IAAI,IAAI,CAAC;CAC7C,cAAY,QAAQ,GAAG,eAAe,CAAC,OAAO,IAAI,CAAC;CACnD,cAAY,MAAM,GAAG,eAAe,CAAC,KAAK,IAAI,CAAC;eACnC,KAAK,GAAG,eAAe,CAAC,IAAI,IAAI,eAAe,CAAC,OAAO,IAAI,CAAC;CACxE,cAAY,IAAI,GAAG,eAAe,CAAC,GAAG,IAAI,CAAC;CAC3C,cAAY,KAAK,GAAG,eAAe,CAAC,IAAI,IAAI,CAAC;CAC7C,cAAY,OAAO,GAAG,eAAe,CAAC,MAAM,IAAI,CAAC;CACjD,cAAY,OAAO,GAAG,eAAe,CAAC,MAAM,IAAI,CAAC;CACjD,cAAY,YAAY,GAAG,eAAe,CAAC,WAAW,IAAI,CAAC,CAAC;AAC5D;WACQ,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC;AACzD;CACA;WACQ,IAAI,CAAC,aAAa;CAC1B,cAAY,CAAC,YAAY;eACb,OAAO,GAAG,GAAG;eACb,OAAO,GAAG,GAAG;CACzB,cAAY,KAAK,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC;CACnC;CACA;WACQ,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;CACvC;CACA;CACA;CACA,UAAQ,IAAI,CAAC,OAAO,GAAG,CAAC,MAAM,GAAG,QAAQ,GAAG,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;AAC3D;CACA,UAAQ,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AACxB;CACA,UAAQ,IAAI,CAAC,OAAO,GAAG,SAAS,EAAE,CAAC;AACnC;CACA,UAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB;AACL;CACA,MAAI,SAAS,UAAU,CAAC,GAAG,EAAE;CAC7B,UAAQ,OAAO,GAAG,YAAY,QAAQ,CAAC;QAClC;AACL;CACA,MAAI,SAAS,QAAQ,CAAC,MAAM,EAAE;CAC9B,UAAQ,IAAI,MAAM,GAAG,CAAC,EAAE;CACxB,cAAY,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD,WAAS,MAAM;CACf,cAAY,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC7B;QACJ;AACL;CACA;OACI,SAAS,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE;CACxD,UAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;CACxD,cAAY,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;eACpD,KAAK,GAAG,CAAC;CACrB,cAAY,CAAC,CAAC;WACN,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;eACtB;mBACI,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC;CACvD,mBAAiB,CAAC,WAAW,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;iBACzD;mBACE,KAAK,EAAE,CAAC;gBACX;YACJ;CACT,UAAQ,OAAO,KAAK,GAAG,UAAU,CAAC;QAC7B;AACL;CACA;AACA;CACA,MAAI,SAAS,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE;WAC9B,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY;CAChD,cAAY,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;mBACzB,IAAI,GAAG,GAAG,CAAC;CAC3B,cAAY,IAAI,MAAM,GAAG,CAAC,EAAE;CAC5B,kBAAgB,MAAM,GAAG,CAAC,MAAM,CAAC;mBACjB,IAAI,GAAG,GAAG,CAAC;gBACd;eACD;CACZ,kBAAgB,IAAI;mBACJ,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;CAC5C,kBAAgB,SAAS;mBACT,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC,CAAC;iBAC5B;CACd,WAAS,CAAC,CAAC;QACN;AACL;CACA,MAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CACrB,MAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACrB;CACA;AACA;CACA,MAAI,aAAa,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CACzC,MAAI,aAAa,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;CAC1C,MAAI,aAAa,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,UAAU,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;CAC/D,UAAQ,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;WACtB,MAAM,CAAC,IAAI,GAAG,gBAAgB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;CAChE,OAAK,CAAC,CAAC;AACP;CACA;AACA;CACA;CACA;CACA;CACA,MAAI,IAAI,WAAW,GAAG,iBAAiB,CAAC;AACxC;CACA,MAAI,SAAS,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE;WACvC,IAAI,OAAO,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC;CACnD,cAAY,KAAK;CACjB,cAAY,KAAK;CACjB,cAAY,OAAO,CAAC;AACpB;CACA,UAAQ,IAAI,OAAO,KAAK,IAAI,EAAE;eAClB,OAAO,IAAI,CAAC;YACf;AACT;CACA,UAAQ,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;CAClD,UAAQ,KAAK,GAAG,CAAC,KAAK,GAAG,EAAE,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC/D,UAAQ,OAAO,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD;CACA,UAAQ,OAAO,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,OAAO,GAAG,CAAC,OAAO,CAAC;QACpE;AACL;CACA;CACA,MAAI,SAAS,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE;CAC3C,UAAQ,IAAI,GAAG,EAAE,IAAI,CAAC;CACtB,UAAQ,IAAI,KAAK,CAAC,MAAM,EAAE;CAC1B,cAAY,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;CAChC,cAAY,IAAI;mBACA,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC;yBAC3B,KAAK,CAAC,OAAO,EAAE;CACrC,wBAAsB,WAAW,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;CACpE;CACA,cAAY,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;eACxC,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;eAC/B,OAAO,GAAG,CAAC;CACvB,WAAS,MAAM;eACH,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;YACrC;QACJ;AACL;CACA,MAAI,SAAS,aAAa,CAAC,CAAC,EAAE;CAC9B;CACA;CACA,UAAQ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChD;AACL;CACA;AACA;CACA;CACA;CACA,MAAI,KAAK,CAAC,YAAY,GAAG,YAAY,EAAE,CAAC;AACxC;CACA;AACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;OACI,SAAS,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE;CAC7D,UAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC;CACtC,cAAY,WAAW,CAAC;CACxB,UAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;eACjB,OAAO,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;YACrC;CACT,UAAQ,IAAI,KAAK,IAAI,IAAI,EAAE;CAC3B,cAAY,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;mBAC3B,KAAK,GAAG,gBAAgB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;CAClE,kBAAgB,IAAI,KAAK,KAAK,IAAI,EAAE;uBAChB,OAAO,IAAI,CAAC;oBACf;CACjB,eAAa,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE;CAC7D,kBAAgB,KAAK,GAAG,KAAK,GAAG,EAAE,CAAC;gBACtB;CACb,cAAY,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,aAAa,EAAE;CAC/C,kBAAgB,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;gBACrC;CACb,cAAY,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;CACjC,cAAY,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;CAC/B,cAAY,IAAI,WAAW,IAAI,IAAI,EAAE;mBACrB,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;gBAC9B;CACb,cAAY,IAAI,MAAM,KAAK,KAAK,EAAE;CAClC,kBAAgB,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,iBAAiB,EAAE;CAC9D,sBAAoB,WAAW;CAC/B,0BAAwB,IAAI;CAC5B,0BAAwB,cAAc,CAAC,KAAK,GAAG,MAAM,EAAE,GAAG,CAAC;CAC3D,0BAAwB,CAAC;CACzB,0BAAwB,KAAK;CAC7B,uBAAqB,CAAC;CACtB,mBAAiB,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;CACpD,sBAAoB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;uBAC9B,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;CACnD,sBAAoB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;oBACjC;gBACJ;eACD,OAAO,IAAI,CAAC;CACxB,WAAS,MAAM;eACH,OAAO,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;YACrD;QACJ;AACL;CACA,MAAI,SAAS,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE;CAC9C,UAAQ,IAAI,KAAK,IAAI,IAAI,EAAE;CAC3B,cAAY,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;CAC3C,kBAAgB,KAAK,GAAG,CAAC,KAAK,CAAC;gBAClB;AACb;eACY,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AACjD;eACY,OAAO,IAAI,CAAC;CACxB,WAAS,MAAM;CACf,cAAY,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAC5B;QACJ;AACL;CACA,MAAI,SAAS,cAAc,CAAC,aAAa,EAAE;WACnC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;QAC3C;AACL;CACA,MAAI,SAAS,gBAAgB,CAAC,aAAa,EAAE;CAC7C,UAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;eACb,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;CAC7C,cAAY,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AAChC;eACY,IAAI,aAAa,EAAE;mBACf,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC3C;YACJ;WACD,OAAO,IAAI,CAAC;QACf;AACL;OACI,SAAS,uBAAuB,GAAG;CACvC,UAAQ,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;CAC/B,cAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAC1C,MAAM,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,EAAE;eACpC,IAAI,KAAK,GAAG,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;CAC/D,cAAY,IAAI,KAAK,IAAI,IAAI,EAAE;CAC/B,kBAAgB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;CACtC,eAAa,MAAM;mBACH,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;gBAC3B;YACJ;WACD,OAAO,IAAI,CAAC;QACf;AACL;CACA,MAAI,SAAS,oBAAoB,CAAC,KAAK,EAAE;CACzC,UAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;eACjB,OAAO,KAAK,CAAC;YAChB;CACT,UAAQ,KAAK,GAAG,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAC3D;CACA,UAAQ,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,KAAK,IAAI,EAAE,KAAK,CAAC,CAAC;QAChD;AACL;OACI,SAAS,oBAAoB,GAAG;WAC5B;CACR,cAAY,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;CAChE,cAAY,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;aACtD;QACL;AACL;OACI,SAAS,2BAA2B,GAAG;WACnC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;CAC9C,cAAY,OAAO,IAAI,CAAC,aAAa,CAAC;YAC7B;AACT;WACQ,IAAI,CAAC,GAAG,EAAE;CAClB,cAAY,KAAK,CAAC;AAClB;CACA,UAAQ,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;CAC5B,UAAQ,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;AAC7B;CACA,UAAQ,IAAI,CAAC,CAAC,EAAE,EAAE;CAClB,cAAY,KAAK,GAAG,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;eACvD,IAAI,CAAC,aAAa;CAC9B,kBAAgB,IAAI,CAAC,OAAO,EAAE,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;CAC3E,WAAS,MAAM;CACf,cAAY,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC9B;AACT;CACA,UAAQ,OAAO,IAAI,CAAC,aAAa,CAAC;QAC7B;AACL;OACI,SAAS,OAAO,GAAG;CACvB,UAAQ,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAChD;AACL;OACI,SAAS,WAAW,GAAG;WACnB,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAC/C;AACL;OACI,SAAS,KAAK,GAAG;CACrB,UAAQ,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,GAAG,KAAK,CAAC;QACrE;AACL;CACA;OACI,IAAI,WAAW,GAAG,uDAAuD;CAC7E;CACA;CACA;CACA,UAAQ,QAAQ;CAChB,cAAY,qKAAqK,CAAC;AAClL;CACA,MAAI,SAAS,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE;WAChC,IAAI,QAAQ,GAAG,KAAK;CAC5B;eACY,KAAK,GAAG,IAAI;CACxB,cAAY,IAAI;CAChB,cAAY,GAAG;CACf,cAAY,OAAO,CAAC;AACpB;CACA,UAAQ,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;CAC/B,cAAY,QAAQ,GAAG;CACvB,kBAAgB,EAAE,EAAE,KAAK,CAAC,aAAa;CACvC,kBAAgB,CAAC,EAAE,KAAK,CAAC,KAAK;CAC9B,kBAAgB,CAAC,EAAE,KAAK,CAAC,OAAO;CAChC,eAAa,CAAC;CACd,WAAS,MAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE;eAC1C,QAAQ,GAAG,EAAE,CAAC;eACd,IAAI,GAAG,EAAE;CACrB,kBAAgB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;CACvC,eAAa,MAAM;CACnB,kBAAgB,QAAQ,CAAC,YAAY,GAAG,CAAC,KAAK,CAAC;gBAClC;YACJ,MAAM,KAAK,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG;CACtD,cAAY,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;CAC7C,cAAY,QAAQ,GAAG;mBACP,CAAC,EAAE,CAAC;mBACJ,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI;mBAC5B,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI;mBAC5B,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI;mBAC9B,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI;CAC9C,kBAAgB,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI;CACrE,eAAa,CAAC;YACL,MAAM,KAAK,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG;CACnD,cAAY,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;CAC7C,cAAY,QAAQ,GAAG;mBACP,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;mBAC3B,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;mBAC3B,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;mBAC3B,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;mBAC3B,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;mBAC3B,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;mBAC3B,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;CAC3C,eAAa,CAAC;CACd,WAAS,MAAM,IAAI,QAAQ,IAAI,IAAI,EAAE;CACrC;eACY,QAAQ,GAAG,EAAE,CAAC;CAC1B,WAAS,MAAM;eACH,OAAO,QAAQ,KAAK,QAAQ;CACxC,eAAa,MAAM,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC;aAC1C;eACE,OAAO,GAAG,iBAAiB;CACvC,kBAAgB,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;CAC1C,kBAAgB,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;CACxC,eAAa,CAAC;AACd;eACY,QAAQ,GAAG,EAAE,CAAC;CAC1B,cAAY,QAAQ,CAAC,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC;CAC/C,cAAY,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;YAC/B;AACT;CACA,UAAQ,GAAG,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACrC;CACA,UAAQ,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE;CAC/D,cAAY,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAC/B;AACT;CACA,UAAQ,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE;CAChE,cAAY,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YACjC;AACT;WACQ,OAAO,GAAG,CAAC;QACd;AACL;CACA,MAAI,cAAc,CAAC,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC;CAC3C,MAAI,cAAc,CAAC,OAAO,GAAG,eAAe,CAAC;AAC7C;CACA,MAAI,SAAS,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE;CACjC;CACA;CACA;CACA,UAAQ,IAAI,GAAG,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;CAC3D;CACA,UAAQ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC;QACxC;AACL;CACA,MAAI,SAAS,yBAAyB,CAAC,IAAI,EAAE,KAAK,EAAE;CACpD,UAAQ,IAAI,GAAG,GAAG,EAAE,CAAC;AACrB;WACQ,GAAG,CAAC,MAAM;eACN,KAAK,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;CAC7E,UAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;CAC9D,cAAY,EAAE,GAAG,CAAC,MAAM,CAAC;YAChB;AACT;WACQ,GAAG,CAAC,YAAY,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACvE;WACQ,OAAO,GAAG,CAAC;QACd;AACL;CACA,MAAI,SAAS,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE;WACpC,IAAI,GAAG,CAAC;CAChB,UAAQ,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE;eACtC,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YACzC;AACT;WACQ,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;CAC7C,UAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;eACtB,GAAG,GAAG,yBAAyB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;CACzD,WAAS,MAAM;eACH,GAAG,GAAG,yBAAyB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;eAC7C,GAAG,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC;eACrC,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;YAC5B;AACT;WACQ,OAAO,GAAG,CAAC;QACd;AACL;CACA;CACA,MAAI,SAAS,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE;CAC1C,UAAQ,OAAO,UAAU,GAAG,EAAE,MAAM,EAAE;CACtC,cAAY,IAAI,GAAG,EAAE,GAAG,CAAC;CACzB;eACY,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE;CACpD,kBAAgB,eAAe;CAC/B,sBAAoB,IAAI;CACxB,sBAAoB,WAAW;CAC/B,0BAAwB,IAAI;CAC5B,0BAAwB,sDAAsD;CAC9E,0BAAwB,IAAI;CAC5B,0BAAwB,oBAAoB;CAC5C,0BAAwB,8EAA8E;CACtG,mBAAiB,CAAC;mBACF,GAAG,GAAG,GAAG,CAAC;mBACV,GAAG,GAAG,MAAM,CAAC;mBACb,MAAM,GAAG,GAAG,CAAC;gBAChB;AACb;eACY,GAAG,GAAG,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;eAClC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;eAClC,OAAO,IAAI,CAAC;CACxB,WAAS,CAAC;QACL;AACL;OACI,SAAS,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE;CAChE,UAAQ,IAAI,YAAY,GAAG,QAAQ,CAAC,aAAa;CACjD,cAAY,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;eAC/B,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAChD;CACA,UAAQ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE;CAC5B;CACA,cAAY,OAAO;YACV;AACT;WACQ,YAAY,GAAG,YAAY,IAAI,IAAI,GAAG,IAAI,GAAG,YAAY,CAAC;AAClE;WACQ,IAAI,MAAM,EAAE;CACpB,cAAY,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC;YACxD;WACD,IAAI,IAAI,EAAE;CAClB,cAAY,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,QAAQ,CAAC,CAAC;YAC1D;WACD,IAAI,YAAY,EAAE;CAC1B,cAAY,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,YAAY,GAAG,QAAQ,CAAC,CAAC;YAC9D;WACD,IAAI,YAAY,EAAE;eACd,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,IAAI,MAAM,CAAC,CAAC;YAC3C;QACJ;AACL;OACI,IAAI,GAAG,GAAG,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC;WAC3B,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AAC/C;CACA,MAAI,SAAS,QAAQ,CAAC,KAAK,EAAE;WACrB,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,CAAC;QAC/D;AACL;CACA;CACA,MAAI,SAAS,aAAa,CAAC,KAAK,EAAE;WAC1B;eACI,QAAQ,CAAC,KAAK,CAAC;eACf,MAAM,CAAC,KAAK,CAAC;eACb,QAAQ,CAAC,KAAK,CAAC;eACf,QAAQ,CAAC,KAAK,CAAC;eACf,qBAAqB,CAAC,KAAK,CAAC;eAC5B,mBAAmB,CAAC,KAAK,CAAC;eAC1B,KAAK,KAAK,IAAI;eACd,KAAK,KAAK,SAAS;aACrB;QACL;AACL;CACA,MAAI,SAAS,mBAAmB,CAAC,KAAK,EAAE;CACxC,UAAQ,IAAI,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;eACrD,YAAY,GAAG,KAAK;CAChC,cAAY,UAAU,GAAG;CACzB,kBAAgB,OAAO;CACvB,kBAAgB,MAAM;CACtB,kBAAgB,GAAG;CACnB,kBAAgB,QAAQ;CACxB,kBAAgB,OAAO;CACvB,kBAAgB,GAAG;CACnB,kBAAgB,MAAM;CACtB,kBAAgB,KAAK;CACrB,kBAAgB,GAAG;CACnB,kBAAgB,OAAO;CACvB,kBAAgB,MAAM;CACtB,kBAAgB,GAAG;CACnB,kBAAgB,OAAO;CACvB,kBAAgB,MAAM;CACtB,kBAAgB,GAAG;CACnB,kBAAgB,SAAS;CACzB,kBAAgB,QAAQ;CACxB,kBAAgB,GAAG;CACnB,kBAAgB,SAAS;CACzB,kBAAgB,QAAQ;CACxB,kBAAgB,GAAG;CACnB,kBAAgB,cAAc;CAC9B,kBAAgB,aAAa;CAC7B,kBAAgB,IAAI;gBACP;CACb,cAAY,CAAC;CACb,cAAY,QAAQ;CACpB,cAAY,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC;AAC5C;CACA,UAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE;CAC7C,cAAY,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;eACzB,YAAY,GAAG,YAAY,IAAI,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC9D;AACT;CACA,UAAQ,OAAO,UAAU,IAAI,YAAY,CAAC;QACrC;AACL;CACA,MAAI,SAAS,qBAAqB,CAAC,KAAK,EAAE;CAC1C,UAAQ,IAAI,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;eAC1B,YAAY,GAAG,KAAK,CAAC;WACzB,IAAI,SAAS,EAAE;CACvB,cAAY,YAAY;CACxB,kBAAgB,KAAK,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE;uBACzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;CAC9D,mBAAiB,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;YACvB;CACT,UAAQ,OAAO,SAAS,IAAI,YAAY,CAAC;QACpC;AACL;CACA,MAAI,SAAS,cAAc,CAAC,KAAK,EAAE;CACnC,UAAQ,IAAI,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;eACrD,YAAY,GAAG,KAAK;CAChC,cAAY,UAAU,GAAG;CACzB,kBAAgB,SAAS;CACzB,kBAAgB,SAAS;CACzB,kBAAgB,SAAS;CACzB,kBAAgB,UAAU;CAC1B,kBAAgB,UAAU;CAC1B,kBAAgB,UAAU;gBACb;CACb,cAAY,CAAC;CACb,cAAY,QAAQ,CAAC;AACrB;CACA,UAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;CACnD,cAAY,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;eACzB,YAAY,GAAG,YAAY,IAAI,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC9D;AACT;CACA,UAAQ,OAAO,UAAU,IAAI,YAAY,CAAC;QACrC;AACL;CACA,MAAI,SAAS,iBAAiB,CAAC,QAAQ,EAAE,GAAG,EAAE;CAC9C,UAAQ,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;CACpD,UAAQ,OAAO,IAAI,GAAG,CAAC,CAAC;CACxB,gBAAc,UAAU;iBACV,IAAI,GAAG,CAAC,CAAC;CACvB,gBAAc,UAAU;iBACV,IAAI,GAAG,CAAC;CACtB,gBAAc,SAAS;iBACT,IAAI,GAAG,CAAC;CACtB,gBAAc,SAAS;iBACT,IAAI,GAAG,CAAC;CACtB,gBAAc,SAAS;iBACT,IAAI,GAAG,CAAC;CACtB,gBAAc,UAAU;CACxB,gBAAc,UAAU,CAAC;QACpB;AACL;CACA,MAAI,SAAS,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE;CACvC;CACA,UAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;CACpC,cAAY,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;mBACf,IAAI,GAAG,SAAS,CAAC;mBACjB,OAAO,GAAG,SAAS,CAAC;gBACvB,MAAM,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;CACpD,kBAAgB,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;mBACpB,OAAO,GAAG,SAAS,CAAC;gBACvB,MAAM,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;CACrD,kBAAgB,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;mBACvB,IAAI,GAAG,SAAS,CAAC;gBACpB;YACJ;CACT;CACA;CACA,UAAQ,IAAI,GAAG,GAAG,IAAI,IAAI,WAAW,EAAE;CACvC,cAAY,GAAG,GAAG,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;eAC/C,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,UAAU;CAClE,cAAY,MAAM;CAClB,kBAAgB,OAAO;CACvB,mBAAiB,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;yBACtB,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;CACrD,wBAAsB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACvC;WACQ,OAAO,IAAI,CAAC,MAAM;CAC1B,cAAY,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;CAChF,WAAS,CAAC;QACL;AACL;OACI,SAAS,KAAK,GAAG;CACrB,UAAQ,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B;AACL;CACA,MAAI,SAAS,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE;CACnC,UAAQ,IAAI,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;CACtE,UAAQ,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE;eAC3C,OAAO,KAAK,CAAC;YAChB;WACD,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC;CACvD,UAAQ,IAAI,KAAK,KAAK,aAAa,EAAE;eACzB,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;CACzD,WAAS,MAAM;CACf,cAAY,OAAO,UAAU,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;YACvE;QACJ;AACL;CACA,MAAI,SAAS,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE;CACpC,UAAQ,IAAI,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;CACtE,UAAQ,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE;eAC3C,OAAO,KAAK,CAAC;YAChB;WACD,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC;CACvD,UAAQ,IAAI,KAAK,KAAK,aAAa,EAAE;eACzB,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;CACzD,WAAS,MAAM;CACf,cAAY,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;YACrE;QACJ;AACL;OACI,SAAS,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;CACrD,UAAQ,IAAI,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;CACjE,cAAY,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;CAC1D,UAAQ,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE;eAC/D,OAAO,KAAK,CAAC;YAChB;CACT,UAAQ,WAAW,GAAG,WAAW,IAAI,IAAI,CAAC;WAClC;CACR,cAAY,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG;CACnC,oBAAkB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC;qBAC9B,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;CAClD,eAAa,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG;CACnC,oBAAkB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;qBAC7B,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;aACtC;QACL;AACL;CACA,MAAI,SAAS,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE;CAClC,UAAQ,IAAI,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;CACrE,cAAY,OAAO,CAAC;CACpB,UAAQ,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE;eAC3C,OAAO,KAAK,CAAC;YAChB;WACD,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC;CACvD,UAAQ,IAAI,KAAK,KAAK,aAAa,EAAE;eACzB,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC;CAC3D,WAAS,MAAM;CACf,cAAY,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;eAC/B;CACZ,kBAAgB,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,IAAI,OAAO;CAChE,kBAAgB,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;iBAChD;YACL;QACJ;AACL;CACA,MAAI,SAAS,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE;CACzC,UAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAClE;AACL;CACA,MAAI,SAAS,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE;CAC1C,UAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACnE;AACL;OACI,SAAS,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;CACzC,UAAQ,IAAI,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC;AACpC;CACA,UAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;eACjB,OAAO,GAAG,CAAC;YACd;AACT;WACQ,IAAI,GAAG,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC5C;CACA,UAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;eACjB,OAAO,GAAG,CAAC;YACd;AACT;CACA,UAAQ,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC;AAChE;CACA,UAAQ,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AACtC;CACA,UAAQ,QAAQ,KAAK;CACrB,cAAY,KAAK,MAAM;mBACP,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;CACpD,kBAAgB,MAAM;CACtB,cAAY,KAAK,OAAO;mBACR,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;CAC/C,kBAAgB,MAAM;CACtB,cAAY,KAAK,SAAS;mBACV,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;CACnD,kBAAgB,MAAM;CACtB,cAAY,KAAK,QAAQ;mBACT,MAAM,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,GAAG,CAAC;CAC7C,kBAAgB,MAAM;CACtB,cAAY,KAAK,QAAQ;mBACT,MAAM,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,GAAG,CAAC;CAC7C,kBAAgB,MAAM;CACtB,cAAY,KAAK,MAAM;mBACP,MAAM,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC;CAC9C,kBAAgB,MAAM;CACtB,cAAY,KAAK,KAAK;mBACN,MAAM,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,SAAS,IAAI,KAAK,CAAC;CAC3D,kBAAgB,MAAM;CACtB,cAAY,KAAK,MAAM;mBACP,MAAM,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,SAAS,IAAI,MAAM,CAAC;CAC5D,kBAAgB,MAAM;eACV;CACZ,kBAAgB,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;YAC5B;AACT;WACQ,OAAO,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9C;AACL;CACA,MAAI,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;WACrB,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;CACjC;CACA;eACY,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3B;CACT;WACQ,IAAI,cAAc,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;CACjF;CACA,cAAY,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC;CAC5D,cAAY,OAAO;CACnB,cAAY,MAAM,CAAC;AACnB;CACA,UAAQ,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE;CAC5B,cAAY,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;CAClE;eACY,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,MAAM,GAAG,OAAO,CAAC,CAAC;CACvD,WAAS,MAAM;CACf,cAAY,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;CAClE;eACY,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,OAAO,GAAG,MAAM,CAAC,CAAC;YAC9C;AACT;CACA;WACQ,OAAO,EAAE,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1C;AACL;CACA,MAAI,KAAK,CAAC,aAAa,GAAG,sBAAsB,CAAC;CACjD,MAAI,KAAK,CAAC,gBAAgB,GAAG,wBAAwB,CAAC;AACtD;OACI,SAAS,QAAQ,GAAG;CACxB,UAAQ,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC;QAC/E;AACL;CACA,MAAI,SAAS,WAAW,CAAC,UAAU,EAAE;CACrC,UAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;eACjB,OAAO,IAAI,CAAC;YACf;CACT,UAAQ,IAAI,GAAG,GAAG,UAAU,KAAK,IAAI;CACrC,cAAY,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;CAChD,UAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE;CAC7C,cAAY,OAAO,YAAY;CAC/B,kBAAgB,CAAC;CACjB,kBAAgB,GAAG;CACnB,wBAAsB,gCAAgC;CACtD,wBAAsB,8BAA8B;CACpD,eAAa,CAAC;YACL;WACD,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE;CACpD;eACY,IAAI,GAAG,EAAE;mBACL,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC;CACnD,eAAa,MAAM;CACnB,kBAAgB,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;CAC9E,uBAAqB,WAAW,EAAE;wBACb,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC3C;YACJ;CACT,UAAQ,OAAO,YAAY;CAC3B,cAAY,CAAC;CACb,cAAY,GAAG,GAAG,8BAA8B,GAAG,4BAA4B;CAC/E,WAAS,CAAC;QACL;AACL;CACA;CACA;CACA;CACA;CACA;CACA;OACI,SAAS,OAAO,GAAG;CACvB,UAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;eACjB,OAAO,oBAAoB,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC;YAClD;WACD,IAAI,IAAI,GAAG,QAAQ;eACf,IAAI,GAAG,EAAE;CACrB,cAAY,MAAM;CAClB,cAAY,IAAI;CAChB,cAAY,QAAQ;CACpB,cAAY,MAAM,CAAC;CACnB,UAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;CAC7B,cAAY,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,YAAY,GAAG,kBAAkB,CAAC;eAClE,IAAI,GAAG,GAAG,CAAC;YACd;CACT,UAAQ,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC;CACpC,UAAQ,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC;WACnE,QAAQ,GAAG,uBAAuB,CAAC;CAC3C,UAAQ,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;AAC/B;CACA,UAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,GAAG,QAAQ,GAAG,MAAM,CAAC,CAAC;QACzD;AACL;CACA,MAAI,SAAS,MAAM,CAAC,WAAW,EAAE;WACzB,IAAI,CAAC,WAAW,EAAE;CAC1B,cAAY,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE;qBACpB,KAAK,CAAC,gBAAgB;qBACtB,KAAK,CAAC,aAAa,CAAC;YAC7B;WACD,IAAI,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;WAC7C,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC/C;AACL;CACA,MAAI,SAAS,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE;WAC/B;eACI,IAAI,CAAC,OAAO,EAAE;CAC1B,eAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;aACrE;CACV,cAAY,OAAO,cAAc,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;CAC3D,mBAAiB,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;CACtC,mBAAiB,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC;CAC1C,WAAS,MAAM;eACH,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,CAAC;YAC1C;QACJ;AACL;CACA,MAAI,SAAS,OAAO,CAAC,aAAa,EAAE;WAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,CAAC;QAClD;AACL;CACA,MAAI,SAAS,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE;WAC7B;eACI,IAAI,CAAC,OAAO,EAAE;CAC1B,eAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;aACrE;CACV,cAAY,OAAO,cAAc,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;CAC3D,mBAAiB,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;CACtC,mBAAiB,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC;CAC1C,WAAS,MAAM;eACH,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,CAAC;YAC1C;QACJ;AACL;CACA,MAAI,SAAS,KAAK,CAAC,aAAa,EAAE;WAC1B,OAAO,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,CAAC;QAChD;AACL;CACA;CACA;CACA;CACA,MAAI,SAAS,MAAM,CAAC,GAAG,EAAE;WACjB,IAAI,aAAa,CAAC;AAC1B;CACA,UAAQ,IAAI,GAAG,KAAK,SAAS,EAAE;CAC/B,cAAY,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;CACtC,WAAS,MAAM;CACf,cAAY,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;CAC3C,cAAY,IAAI,aAAa,IAAI,IAAI,EAAE;CACvC,kBAAgB,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC;gBAChC;eACD,OAAO,IAAI,CAAC;YACf;QACJ;AACL;OACI,IAAI,IAAI,GAAG,SAAS;CACxB,UAAQ,iJAAiJ;WACjJ,UAAU,GAAG,EAAE;CACvB,cAAY,IAAI,GAAG,KAAK,SAAS,EAAE;CACnC,kBAAgB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;CACzC,eAAa,MAAM;CACnB,kBAAgB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC3B;YACJ;CACT,OAAK,CAAC;AACN;OACI,SAAS,UAAU,GAAG;CAC1B,UAAQ,OAAO,IAAI,CAAC,OAAO,CAAC;QACvB;AACL;OACI,IAAI,aAAa,GAAG,IAAI;CAC5B,UAAQ,aAAa,GAAG,EAAE,GAAG,aAAa;CAC1C,UAAQ,WAAW,GAAG,EAAE,GAAG,aAAa;CACxC,UAAQ,gBAAgB,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC;AAC/D;CACA;CACA,MAAI,SAAS,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE;WAC9B,OAAO,CAAC,CAAC,QAAQ,GAAG,OAAO,IAAI,OAAO,IAAI,OAAO,CAAC;QACrD;AACL;OACI,SAAS,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;CACvC;WACQ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE;CAC/B;CACA,cAAY,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,gBAAgB,CAAC;CAC9D,WAAS,MAAM;CACf,cAAY,OAAO,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YACtC;QACJ;AACL;OACI,SAAS,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;CACrC;WACQ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE;CAC/B;CACA,cAAY,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,gBAAgB,CAAC;CAC9D,WAAS,MAAM;eACH,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5B;QACJ;AACL;CACA,MAAI,SAAS,OAAO,CAAC,KAAK,EAAE;CAC5B,UAAQ,IAAI,IAAI,EAAE,WAAW,CAAC;CAC9B,UAAQ,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;CACtC,UAAQ,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,aAAa,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;eACnE,OAAO,IAAI,CAAC;YACf;AACT;WACQ,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,cAAc,GAAG,gBAAgB,CAAC;AACtE;CACA,UAAQ,QAAQ,KAAK;CACrB,cAAY,KAAK,MAAM;CACvB,kBAAgB,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACtD,kBAAgB,MAAM;CACtB,cAAY,KAAK,SAAS;mBACV,IAAI,GAAG,WAAW;uBACd,IAAI,CAAC,IAAI,EAAE;uBACX,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;CACrD,sBAAoB,CAAC;CACrB,mBAAiB,CAAC;CAClB,kBAAgB,MAAM;CACtB,cAAY,KAAK,OAAO;CACxB,kBAAgB,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;CACjE,kBAAgB,MAAM;CACtB,cAAY,KAAK,MAAM;mBACP,IAAI,GAAG,WAAW;uBACd,IAAI,CAAC,IAAI,EAAE;uBACX,IAAI,CAAC,KAAK,EAAE;uBACZ,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;CAChD,mBAAiB,CAAC;CAClB,kBAAgB,MAAM;CACtB,cAAY,KAAK,SAAS;mBACV,IAAI,GAAG,WAAW;uBACd,IAAI,CAAC,IAAI,EAAE;uBACX,IAAI,CAAC,KAAK,EAAE;uBACZ,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;CACzD,mBAAiB,CAAC;CAClB,kBAAgB,MAAM;eACV,KAAK,KAAK,CAAC;CACvB,cAAY,KAAK,MAAM;CACvB,kBAAgB,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;CAC3E,kBAAgB,MAAM;CACtB,cAAY,KAAK,MAAM;mBACP,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;mBACzB,IAAI,IAAI,KAAK;CAC7B,sBAAoB,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,aAAa,CAAC;CAC/E,sBAAoB,WAAW;CAC/B,mBAAiB,CAAC;CAClB,kBAAgB,MAAM;CACtB,cAAY,KAAK,QAAQ;mBACT,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;mBACzB,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;CACnD,kBAAgB,MAAM;CACtB,cAAY,KAAK,QAAQ;mBACT,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;mBACzB,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;CACnD,kBAAgB,MAAM;YACb;AACT;WACQ,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;WACtB,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;WAC/B,OAAO,IAAI,CAAC;QACf;AACL;CACA,MAAI,SAAS,KAAK,CAAC,KAAK,EAAE;CAC1B,UAAQ,IAAI,IAAI,EAAE,WAAW,CAAC;CAC9B,UAAQ,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;CACtC,UAAQ,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,aAAa,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;eACnE,OAAO,IAAI,CAAC;YACf;AACT;WACQ,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,cAAc,GAAG,gBAAgB,CAAC;AACtE;CACA,UAAQ,QAAQ,KAAK;CACrB,cAAY,KAAK,MAAM;CACvB,kBAAgB,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;CAC9D,kBAAgB,MAAM;CACtB,cAAY,KAAK,SAAS;CAC1B,kBAAgB,IAAI;CACpB,sBAAoB,WAAW;2BACP,IAAI,CAAC,IAAI,EAAE;CACnC,0BAAwB,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC;CAC7D,0BAAwB,CAAC;wBACJ,GAAG,CAAC,CAAC;CAC1B,kBAAgB,MAAM;CACtB,cAAY,KAAK,OAAO;mBACR,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;CACzE,kBAAgB,MAAM;CACtB,cAAY,KAAK,MAAM;CACvB,kBAAgB,IAAI;CACpB,sBAAoB,WAAW;2BACP,IAAI,CAAC,IAAI,EAAE;2BACX,IAAI,CAAC,KAAK,EAAE;2BACZ,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC;wBACnC,GAAG,CAAC,CAAC;CAC1B,kBAAgB,MAAM;CACtB,cAAY,KAAK,SAAS;CAC1B,kBAAgB,IAAI;CACpB,sBAAoB,WAAW;2BACP,IAAI,CAAC,IAAI,EAAE;2BACX,IAAI,CAAC,KAAK,EAAE;CACpC,0BAAwB,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC;wBAC5C,GAAG,CAAC,CAAC;CAC1B,kBAAgB,MAAM;eACV,KAAK,KAAK,CAAC;CACvB,cAAY,KAAK,MAAM;mBACP,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;CACnF,kBAAgB,MAAM;CACtB,cAAY,KAAK,MAAM;mBACP,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;CACzC,kBAAgB,IAAI;CACpB,sBAAoB,WAAW;CAC/B,sBAAoB,KAAK;CACzB,0BAAwB,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,aAAa,CAAC;CACnF,0BAAwB,WAAW;wBACd;CACrB,sBAAoB,CAAC,CAAC;CACtB,kBAAgB,MAAM;CACtB,cAAY,KAAK,QAAQ;mBACT,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;CACzC,kBAAgB,IAAI,IAAI,aAAa,GAAG,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;CACvE,kBAAgB,MAAM;CACtB,cAAY,KAAK,QAAQ;mBACT,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;CACzC,kBAAgB,IAAI,IAAI,aAAa,GAAG,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;CACvE,kBAAgB,MAAM;YACb;AACT;WACQ,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;WACtB,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;WAC/B,OAAO,IAAI,CAAC;QACf;AACL;OACI,SAAS,OAAO,GAAG;CACvB,UAAQ,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,KAAK,CAAC;QAC1D;AACL;OACI,SAAS,IAAI,GAAG;CACpB,UAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QAC5C;AACL;OACI,SAAS,MAAM,GAAG;WACd,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACnC;AACL;OACI,SAAS,OAAO,GAAG;CACvB,UAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;CACrB,UAAQ,OAAO;eACH,CAAC,CAAC,IAAI,EAAE;eACR,CAAC,CAAC,KAAK,EAAE;eACT,CAAC,CAAC,IAAI,EAAE;eACR,CAAC,CAAC,IAAI,EAAE;eACR,CAAC,CAAC,MAAM,EAAE;eACV,CAAC,CAAC,MAAM,EAAE;eACV,CAAC,CAAC,WAAW,EAAE;CAC3B,WAAS,CAAC;QACL;AACL;OACI,SAAS,QAAQ,GAAG;CACxB,UAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;CACrB,UAAQ,OAAO;CACf,cAAY,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE;CAC3B,cAAY,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE;CAC7B,cAAY,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;CAC1B,cAAY,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE;CAC5B,cAAY,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;CAChC,cAAY,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;CAChC,cAAY,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE;CAC1C,WAAS,CAAC;QACL;AACL;OACI,SAAS,MAAM,GAAG;CACtB;CACA,UAAQ,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;QACrD;AACL;OACI,SAAS,SAAS,GAAG;CACzB,UAAQ,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;QACxB;AACL;OACI,SAAS,YAAY,GAAG;WACpB,OAAO,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C;AACL;OACI,SAAS,SAAS,GAAG;CACzB,UAAQ,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;QACzC;AACL;OACI,SAAS,YAAY,GAAG;CAC5B,UAAQ,OAAO;CACf,cAAY,KAAK,EAAE,IAAI,CAAC,EAAE;CAC1B,cAAY,MAAM,EAAE,IAAI,CAAC,EAAE;CAC3B,cAAY,MAAM,EAAE,IAAI,CAAC,OAAO;CAChC,cAAY,KAAK,EAAE,IAAI,CAAC,MAAM;CAC9B,cAAY,MAAM,EAAE,IAAI,CAAC,OAAO;CAChC,WAAS,CAAC;QACL;AACL;OACI,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;OACrC,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;OACtC,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;OACvC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;OACxC,cAAc,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;AAC/C;CACA,MAAI,cAAc,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;CACnD,MAAI,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;CACjD,MAAI,cAAc,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;CAClD,MAAI,cAAc,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;AACnD;CACA,MAAI,aAAa,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;CACrC,MAAI,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;CACtC,MAAI,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;CACvC,MAAI,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACxC,MAAI,aAAa,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AAC3C;CACA,MAAI,aAAa;WACT,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC;WACnC,UAAU,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;CAC/C,cAAY,IAAI,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;eACjE,IAAI,GAAG,EAAE;mBACL,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;CAClD,eAAa,MAAM;mBACH,eAAe,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC;gBAC9C;YACJ;CACT,OAAK,CAAC;AACN;CACA,MAAI,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;CACtC,MAAI,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;CACvC,MAAI,aAAa,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;CACxC,MAAI,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACzC,MAAI,aAAa,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;AAC7C;CACA,MAAI,aAAa,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;CACpD,MAAI,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;WACzD,IAAI,KAAK,CAAC;CAClB,UAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,oBAAoB,EAAE;CACjD,cAAY,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;YAC5D;AACT;CACA,UAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE;CAChD,cAAY,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;CAC3E,WAAS,MAAM;eACH,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACrC;CACT,OAAK,CAAC,CAAC;AACP;CACA,MAAI,SAAS,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE;CACnC,UAAQ,IAAI,CAAC;CACb,cAAY,CAAC;CACb,cAAY,IAAI;CAChB,cAAY,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;CACvD,UAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;CACjD,cAAY,QAAQ,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK;CACxC,kBAAgB,KAAK,QAAQ;CAC7B;CACA,sBAAoB,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;uBAC3C,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;CACnD,sBAAoB,MAAM;gBACb;AACb;CACA,cAAY,QAAQ,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK;CACxC,kBAAgB,KAAK,WAAW;uBACZ,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC;CAC9C,sBAAoB,MAAM;CAC1B,kBAAgB,KAAK,QAAQ;CAC7B;CACA,sBAAoB,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;uBACrD,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;CACnD,sBAAoB,MAAM;gBACb;YACJ;WACD,OAAO,IAAI,CAAC;QACf;AACL;OACI,SAAS,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;CACtD,UAAQ,IAAI,CAAC;CACb,cAAY,CAAC;CACb,cAAY,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;CAC9B,cAAY,IAAI;CAChB,cAAY,IAAI;CAChB,cAAY,MAAM,CAAC;CACnB,UAAQ,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;AACxC;CACA,UAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;eACrC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;eAClC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;eAClC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;AAClD;eACY,IAAI,MAAM,EAAE;CACxB,kBAAgB,QAAQ,MAAM;uBACV,KAAK,GAAG,CAAC;uBACT,KAAK,IAAI,CAAC;CAC9B,sBAAoB,KAAK,KAAK;CAC9B,0BAAwB,IAAI,IAAI,KAAK,OAAO,EAAE;CAC9C,8BAA4B,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;4BAClB;CACzB,0BAAwB,MAAM;AAC9B;CACA,sBAAoB,KAAK,MAAM;CAC/B,0BAAwB,IAAI,IAAI,KAAK,OAAO,EAAE;CAC9C,8BAA4B,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;4BAClB;CACzB,0BAAwB,MAAM;AAC9B;CACA,sBAAoB,KAAK,OAAO;CAChC,0BAAwB,IAAI,MAAM,KAAK,OAAO,EAAE;CAChD,8BAA4B,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;4BAClB;CACzB,0BAAwB,MAAM;oBACb;CACjB,eAAa,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;CACnE,kBAAgB,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB;YACJ;QACJ;AACL;CACA,MAAI,SAAS,qBAAqB,CAAC,GAAG,EAAE,IAAI,EAAE;CAC9C,UAAQ,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACnD,UAAQ,IAAI,IAAI,KAAK,SAAS,EAAE;eACpB,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;CAC3C,WAAS,MAAM;CACf,cAAY,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC;YAC9D;QACJ;AACL;OACI,SAAS,UAAU,GAAG;CAC1B,UAAQ,IAAI,CAAC;CACb,cAAY,CAAC;CACb,cAAY,GAAG;eACH,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC;CAC5C,UAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;CACjD;CACA,cAAY,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AACxD;CACA,cAAY,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;CAC9D,kBAAgB,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACvB;CACb,cAAY,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;CAC9D,kBAAgB,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACvB;YACJ;AACT;WACQ,OAAO,EAAE,CAAC;QACb;AACL;OACI,SAAS,YAAY,GAAG;CAC5B,UAAQ,IAAI,CAAC;CACb,cAAY,CAAC;CACb,cAAY,GAAG;eACH,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC;CAC5C,UAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;CACjD;CACA,cAAY,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AACxD;CACA,cAAY,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;CAC9D,kBAAgB,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACzB;CACb,cAAY,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;CAC9D,kBAAgB,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACzB;YACJ;AACT;WACQ,OAAO,EAAE,CAAC;QACb;AACL;OACI,SAAS,UAAU,GAAG;CAC1B,UAAQ,IAAI,CAAC;CACb,cAAY,CAAC;CACb,cAAY,GAAG;eACH,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC;CAC5C,UAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;CACjD;CACA,cAAY,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AACxD;CACA,cAAY,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;CAC9D,kBAAgB,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACvB;CACb,cAAY,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;CAC9D,kBAAgB,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACvB;YACJ;AACT;WACQ,OAAO,EAAE,CAAC;QACb;AACL;OACI,SAAS,UAAU,GAAG;CAC1B,UAAQ,IAAI,CAAC;CACb,cAAY,CAAC;CACb,cAAY,GAAG;CACf,cAAY,GAAG;eACH,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC;CAC5C,UAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;eACrC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D;CACA;CACA,cAAY,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AACxD;eACY;CACZ,kBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK;CAC7D,mBAAiB,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;iBAChD;mBACE;CAChB,sBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG;CACrE,sBAAoB,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM;qBAChB;gBACL;YACJ;AACT;CACA,UAAQ,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB;AACL;CACA,MAAI,SAAS,aAAa,CAAC,QAAQ,EAAE;WAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAAE;CACjD,cAAY,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B;WACD,OAAO,QAAQ,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC;QAC3D;AACL;CACA,MAAI,SAAS,aAAa,CAAC,QAAQ,EAAE;WAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAAE;CACjD,cAAY,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B;WACD,OAAO,QAAQ,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC;QAC3D;AACL;CACA,MAAI,SAAS,eAAe,CAAC,QAAQ,EAAE;WAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,kBAAkB,CAAC,EAAE;CACnD,cAAY,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B;WACD,OAAO,QAAQ,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7D;AACL;CACA,MAAI,SAAS,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE;CAC5C,UAAQ,OAAO,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACzC;AACL;CACA,MAAI,SAAS,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE;CAC5C,UAAQ,OAAO,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACzC;AACL;CACA,MAAI,SAAS,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE;CAC9C,UAAQ,OAAO,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC3C;AACL;CACA,MAAI,SAAS,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE;CACnD,UAAQ,OAAO,MAAM,CAAC,oBAAoB,IAAI,aAAa,CAAC;QACvD;AACL;OACI,SAAS,gBAAgB,GAAG;WACxB,IAAI,UAAU,GAAG,EAAE;eACf,UAAU,GAAG,EAAE;eACf,YAAY,GAAG,EAAE;eACjB,WAAW,GAAG,EAAE;CAC5B,cAAY,CAAC;CACb,cAAY,CAAC;CACb,cAAY,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AAC/B;CACA,UAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;CACjD,cAAY,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;CACvD,cAAY,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;CACvD,cAAY,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3D;CACA,cAAY,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;CACxD,cAAY,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;CACxD,cAAY,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACjD;AACT;WACQ,IAAI,CAAC,UAAU,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;WACtE,IAAI,CAAC,cAAc,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;WACzE,IAAI,CAAC,cAAc,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;CACjF,UAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,MAAM;eAC9B,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG;CAC/C,cAAY,GAAG;CACf,WAAS,CAAC;QACL;AACL;CACA;AACA;CACA,MAAI,cAAc,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY;CAChD,UAAQ,OAAO,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAC;CACrC,OAAK,CAAC,CAAC;AACP;CACA,MAAI,cAAc,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY;CAChD,UAAQ,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC;CACxC,OAAK,CAAC,CAAC;AACP;CACA,MAAI,SAAS,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE;CACnD,UAAQ,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QACvD;AACL;CACA,MAAI,sBAAsB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CAC/C,MAAI,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;CAChD,MAAI,sBAAsB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAClD,MAAI,sBAAsB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AACnD;CACA;AACA;CACA,MAAI,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;CACnC,MAAI,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AACtC;CACA;AACA;CACA,MAAI,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;CACnC,MAAI,eAAe,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;AACtC;CACA;AACA;CACA,MAAI,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;CACpC,MAAI,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;OAChC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;OACvC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;OACvC,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;OACzC,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;OACzC,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;OAC1C,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAC9C;CACA,MAAI,iBAAiB;WACb,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC;WAClC,UAAU,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;CAC9C,cAAY,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC3C;CACT,OAAK,CAAC;AACN;CACA,MAAI,iBAAiB,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,UAAU,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;WAClE,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;CACrD,OAAK,CAAC,CAAC;AACP;CACA;AACA;CACA,MAAI,SAAS,cAAc,CAAC,KAAK,EAAE;WAC3B,OAAO,oBAAoB,CAAC,IAAI;CACxC,cAAY,IAAI;CAChB,cAAY,KAAK;eACL,IAAI,CAAC,IAAI,EAAE;eACX,IAAI,CAAC,OAAO,EAAE;CAC1B,cAAY,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG;CACvC,cAAY,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG;CACvC,WAAS,CAAC;QACL;AACL;CACA,MAAI,SAAS,iBAAiB,CAAC,KAAK,EAAE;WAC9B,OAAO,oBAAoB,CAAC,IAAI;CACxC,cAAY,IAAI;CAChB,cAAY,KAAK;eACL,IAAI,CAAC,OAAO,EAAE;eACd,IAAI,CAAC,UAAU,EAAE;CAC7B,cAAY,CAAC;CACb,cAAY,CAAC;CACb,WAAS,CAAC;QACL;AACL;OACI,SAAS,iBAAiB,GAAG;CACjC,UAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC;AACL;OACI,SAAS,wBAAwB,GAAG;CACxC,UAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAChD;AACL;OACI,SAAS,cAAc,GAAG;WACtB,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC;CAC/C,UAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC/D;AACL;OACI,SAAS,kBAAkB,GAAG;WAC1B,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC;CAC/C,UAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnE;AACL;CACA,MAAI,SAAS,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE;WAC1D,IAAI,WAAW,CAAC;CACxB,UAAQ,IAAI,KAAK,IAAI,IAAI,EAAE;eACf,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC;CACnD,WAAS,MAAM;eACH,WAAW,GAAG,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;CACvD,cAAY,IAAI,IAAI,GAAG,WAAW,EAAE;mBACpB,IAAI,GAAG,WAAW,CAAC;gBACtB;CACb,cAAY,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YAChE;QACJ;AACL;CACA,MAAI,SAAS,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE;CAC3D,UAAQ,IAAI,aAAa,GAAG,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC;CACjF,cAAY,IAAI,GAAG,aAAa,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;AACjF;WACQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;WACjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;WAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;WAC7B,OAAO,IAAI,CAAC;QACf;AACL;CACA;AACA;OACI,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AAC5C;CACA;AACA;CACA,MAAI,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACjC;CACA;AACA;CACA,MAAI,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAClC;CACA;AACA;CACA,MAAI,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;OAC3B,aAAa,CAAC,GAAG,EAAE,UAAU,KAAK,EAAE,KAAK,EAAE;CAC/C,UAAQ,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;CAC9C,OAAK,CAAC,CAAC;AACP;CACA;AACA;CACA,MAAI,SAAS,aAAa,CAAC,KAAK,EAAE;WAC1B,OAAO,KAAK,IAAI,IAAI;CAC5B,gBAAc,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC/C,gBAAc,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1D;AACL;CACA;AACA;CACA,MAAI,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACjD;CACA;AACA;CACA,MAAI,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC9B;CACA;CACA,MAAI,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC/B;CACA;AACA;CACA,MAAI,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;OAC9B,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;OACvC,aAAa,CAAC,IAAI,EAAE,UAAU,QAAQ,EAAE,MAAM,EAAE;CACpD;CACA,UAAQ,OAAO,QAAQ;CACvB,gBAAc,MAAM,CAAC,uBAAuB,IAAI,MAAM,CAAC,aAAa;iBACtD,MAAM,CAAC,8BAA8B,CAAC;CACpD,OAAK,CAAC,CAAC;AACP;OACI,aAAa,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;OACjC,aAAa,CAAC,IAAI,EAAE,UAAU,KAAK,EAAE,KAAK,EAAE;CAChD,UAAQ,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACvD,OAAK,CAAC,CAAC;AACP;CACA;AACA;OACI,IAAI,gBAAgB,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACpD;CACA;AACA;CACA,MAAI,cAAc,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AAC5D;CACA;AACA;CACA,MAAI,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AACrC;CACA;CACA,MAAI,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AACpC;CACA;AACA;CACA,MAAI,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;CACpC,MAAI,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,MAAI,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,UAAU,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;WAC3D,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;CACzC,OAAK,CAAC,CAAC;AACP;CACA;AACA;CACA;AACA;CACA,MAAI,SAAS,eAAe,CAAC,KAAK,EAAE;CACpC,UAAQ,IAAI,SAAS;eACT,IAAI,CAAC,KAAK;mBACN,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK;gBACvE,GAAG,CAAC,CAAC;CAClB,UAAQ,OAAO,KAAK,IAAI,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,SAAS,EAAE,GAAG,CAAC,CAAC;QACvE;AACL;CACA;AACA;CACA,MAAI,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;AAChD;CACA;AACA;CACA,MAAI,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAChC;CACA;AACA;CACA,MAAI,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAClC;CACA;AACA;CACA,MAAI,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;OAC9B,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;OACvC,aAAa,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;AACvC;CACA;AACA;OACI,IAAI,YAAY,GAAG,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACpD;CACA;AACA;CACA,MAAI,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;AAChD;CACA;AACA;CACA,MAAI,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAChC;CACA;AACA;CACA,MAAI,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAClC;CACA;AACA;CACA,MAAI,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;OAC9B,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;OACvC,aAAa,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;AACvC;CACA;AACA;OACI,IAAI,YAAY,GAAG,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACpD;CACA;AACA;OACI,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY;WAClC,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,CAAC;CAC5C,OAAK,CAAC,CAAC;AACP;CACA,MAAI,cAAc,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY;WACxC,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;CAC3C,OAAK,CAAC,CAAC;AACP;CACA,MAAI,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;CACpD,MAAI,cAAc,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY;CAClD,UAAQ,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC;CACvC,OAAK,CAAC,CAAC;CACP,MAAI,cAAc,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY;CACnD,UAAQ,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC;CACxC,OAAK,CAAC,CAAC;CACP,MAAI,cAAc,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY;CACpD,UAAQ,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;CACzC,OAAK,CAAC,CAAC;CACP,MAAI,cAAc,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY;CACrD,UAAQ,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC;CAC1C,OAAK,CAAC,CAAC;CACP,MAAI,cAAc,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY;CACtD,UAAQ,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC;CAC3C,OAAK,CAAC,CAAC;CACP,MAAI,cAAc,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY;CACvD,UAAQ,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC;CAC5C,OAAK,CAAC,CAAC;AACP;CACA;AACA;CACA,MAAI,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AACtC;CACA;AACA;CACA,MAAI,eAAe,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AACvC;CACA;AACA;OACI,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;OACtC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;OACvC,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAC5C;CACA,MAAI,IAAI,KAAK,EAAE,iBAAiB,CAAC;CACjC,MAAI,KAAK,KAAK,GAAG,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,KAAK,IAAI,GAAG,EAAE;CAC1D,UAAQ,aAAa,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QACvC;AACL;CACA,MAAI,SAAS,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE;CACnC,UAAQ,KAAK,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC;QACrD;AACL;CACA,MAAI,KAAK,KAAK,GAAG,GAAG,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,KAAK,IAAI,GAAG,EAAE;CACvD,UAAQ,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACjC;AACL;OACI,iBAAiB,GAAG,UAAU,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AAC1D;CACA;AACA;OACI,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;OACtC,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;AAC3C;CACA;AACA;OACI,SAAS,WAAW,GAAG;WACnB,OAAO,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,EAAE,CAAC;QACnC;AACL;OACI,SAAS,WAAW,GAAG;WACnB,OAAO,IAAI,CAAC,MAAM,GAAG,4BAA4B,GAAG,EAAE,CAAC;QAC1D;AACL;CACA,MAAI,IAAI,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC;AACjC;CACA,MAAI,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;CACpB,MAAI,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;CAChC,MAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;CACxB,MAAI,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;CACtB,MAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;CACxB,MAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;CAC1B,MAAI,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;CACtB,MAAI,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;CAC5B,MAAI,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;CAClB,MAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;CACxB,MAAI,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC;CAC1B,MAAI,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;CAChC,MAAI,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;CAC5B,MAAI,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;CAC9B,MAAI,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;CAChC,MAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;CAC1B,MAAI,KAAK,CAAC,aAAa,GAAG,aAAa,CAAC;CACxC,MAAI,KAAK,CAAC,cAAc,GAAG,cAAc,CAAC;CAC1C,MAAI,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;CAC9B,MAAI,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;CACtB,MAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;CAC1B,MAAI,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;CAClC,MAAI,KAAK,CAAC,GAAG,GAAG,YAAY,CAAC;CAC7B,MAAI,KAAK,CAAC,GAAG,GAAG,YAAY,CAAC;CAC7B,MAAI,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;CACtC,MAAI,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC;CAC1B,MAAI,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;CAC5B,MAAI,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;CAC9B,MAAI,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;CAC5B,MAAI,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;CAC9B,MAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;CAC1B,MAAI,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;CACpC,MAAI,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;OACxB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE;WACrD,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,GAAG,YAAY;eAC1D,OAAO,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC;CACnD,WAAS,CAAC;QACL;CACL,MAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;CAC1B,MAAI,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;CAC9B,MAAI,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;CACtB,MAAI,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;CAC5B,MAAI,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;CACtC,MAAI,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC;CAC/B,MAAI,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC;CACnC,MAAI,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC;CAC/B,MAAI,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC;CAC/B,MAAI,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;CAC5B,MAAI,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC;CACrC,MAAI,KAAK,CAAC,QAAQ,GAAG,cAAc,CAAC;CACpC,MAAI,KAAK,CAAC,WAAW,GAAG,iBAAiB,CAAC;OACtC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,QAAQ,GAAG,aAAa,CAAC;CACnD,MAAI,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC;CAC9B,MAAI,KAAK,CAAC,WAAW,GAAG,cAAc,CAAC;OACnC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC;OACtC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,QAAQ,GAAG,aAAa,CAAC;CACnD,MAAI,KAAK,CAAC,WAAW,GAAG,cAAc,CAAC;CACvC,MAAI,KAAK,CAAC,eAAe,GAAG,kBAAkB,CAAC;CAC/C,MAAI,KAAK,CAAC,cAAc,GAAG,iBAAiB,CAAC;CAC7C,MAAI,KAAK,CAAC,qBAAqB,GAAG,wBAAwB,CAAC;CAC3D,MAAI,KAAK,CAAC,IAAI,GAAG,gBAAgB,CAAC;OAC9B,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,eAAe,CAAC;CAC7C,MAAI,KAAK,CAAC,OAAO,GAAG,qBAAqB,CAAC;CAC1C,MAAI,KAAK,CAAC,UAAU,GAAG,kBAAkB,CAAC;CAC1C,MAAI,KAAK,CAAC,SAAS,GAAG,eAAe,CAAC;OAClC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC;OACtC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC;OAC5C,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC;OAC5C,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,YAAY,GAAG,iBAAiB,CAAC;CAC/D,MAAI,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC;CACnC,MAAI,KAAK,CAAC,GAAG,GAAG,cAAc,CAAC;CAC/B,MAAI,KAAK,CAAC,KAAK,GAAG,gBAAgB,CAAC;CACnC,MAAI,KAAK,CAAC,SAAS,GAAG,uBAAuB,CAAC;CAC9C,MAAI,KAAK,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;CACtD,MAAI,KAAK,CAAC,KAAK,GAAG,oBAAoB,CAAC;CACvC,MAAI,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;CAC5B,MAAI,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;CACpC,MAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;CACxB,MAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;CACxB,MAAI,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC;CACjC,MAAI,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC;CACjC,MAAI,KAAK,CAAC,KAAK,GAAG,SAAS;CAC3B,UAAQ,iDAAiD;CACzD,UAAQ,gBAAgB;CACxB,OAAK,CAAC;CACN,MAAI,KAAK,CAAC,MAAM,GAAG,SAAS;CAC5B,UAAQ,kDAAkD;CAC1D,UAAQ,WAAW;CACnB,OAAK,CAAC;CACN,MAAI,KAAK,CAAC,KAAK,GAAG,SAAS;CAC3B,UAAQ,gDAAgD;CACxD,UAAQ,UAAU;CAClB,OAAK,CAAC;CACN,MAAI,KAAK,CAAC,IAAI,GAAG,SAAS;CAC1B,UAAQ,0GAA0G;CAClH,UAAQ,UAAU;CAClB,OAAK,CAAC;CACN,MAAI,KAAK,CAAC,YAAY,GAAG,SAAS;CAClC,UAAQ,yGAAyG;CACjH,UAAQ,2BAA2B;CACnC,OAAK,CAAC;AACN;CACA,MAAI,SAAS,UAAU,CAAC,KAAK,EAAE;CAC/B,UAAQ,OAAO,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QACpC;AACL;OACI,SAAS,YAAY,GAAG;CAC5B,UAAQ,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,SAAS,EAAE,CAAC;QACzD;AACL;CACA,MAAI,SAAS,kBAAkB,CAAC,MAAM,EAAE;WAChC,OAAO,MAAM,CAAC;QACjB;AACL;CACA,MAAI,IAAI,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;AACnC;CACA,MAAI,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;CAChC,MAAI,OAAO,CAAC,cAAc,GAAG,cAAc,CAAC;CAC5C,MAAI,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;CACtC,MAAI,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;CAC9B,MAAI,OAAO,CAAC,QAAQ,GAAG,kBAAkB,CAAC;CAC1C,MAAI,OAAO,CAAC,UAAU,GAAG,kBAAkB,CAAC;CAC5C,MAAI,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;CACxC,MAAI,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;CACpC,MAAI,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;CACtB,MAAI,OAAO,CAAC,IAAI,GAAG,UAAU,CAAC;CAC9B,MAAI,OAAO,CAAC,SAAS,GAAG,eAAe,CAAC;CACxC,MAAI,OAAO,CAAC,eAAe,GAAG,qBAAqB,CAAC;CACpD,MAAI,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC;CAC1C,MAAI,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC;CAC1C,MAAI,OAAO,CAAC,eAAe,GAAG,eAAe,CAAC;AAC9C;CACA,MAAI,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC;CAClC,MAAI,OAAO,CAAC,WAAW,GAAG,iBAAiB,CAAC;CAC5C,MAAI,OAAO,CAAC,WAAW,GAAG,iBAAiB,CAAC;CAC5C,MAAI,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;CACtC,MAAI,OAAO,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;CAChD,MAAI,OAAO,CAAC,IAAI,GAAG,UAAU,CAAC;CAC9B,MAAI,OAAO,CAAC,cAAc,GAAG,oBAAoB,CAAC;CAClD,MAAI,OAAO,CAAC,cAAc,GAAG,oBAAoB,CAAC;AAClD;CACA,MAAI,OAAO,CAAC,QAAQ,GAAG,cAAc,CAAC;CACtC,MAAI,OAAO,CAAC,WAAW,GAAG,iBAAiB,CAAC;CAC5C,MAAI,OAAO,CAAC,aAAa,GAAG,mBAAmB,CAAC;CAChD,MAAI,OAAO,CAAC,aAAa,GAAG,mBAAmB,CAAC;AAChD;CACA,MAAI,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC;CAC1C,MAAI,OAAO,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;CACpD,MAAI,OAAO,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;AAChD;CACA,MAAI,OAAO,CAAC,IAAI,GAAG,UAAU,CAAC;CAC9B,MAAI,OAAO,CAAC,QAAQ,GAAG,cAAc,CAAC;AACtC;OACI,SAAS,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;CACjD,UAAQ,IAAI,MAAM,GAAG,SAAS,EAAE;eACpB,GAAG,GAAG,SAAS,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;WACzC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACrC;AACL;OACI,SAAS,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;CAClD,UAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;eAClB,KAAK,GAAG,MAAM,CAAC;eACf,MAAM,GAAG,SAAS,CAAC;YACtB;AACT;CACA,UAAQ,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;AAC9B;CACA,UAAQ,IAAI,KAAK,IAAI,IAAI,EAAE;eACf,OAAO,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAC/C;AACT;CACA,UAAQ,IAAI,CAAC;eACD,GAAG,GAAG,EAAE,CAAC;WACb,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;CACjC,cAAY,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAC7C;WACD,OAAO,GAAG,CAAC;QACd;AACL;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;OACI,SAAS,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;CAClE,UAAQ,IAAI,OAAO,YAAY,KAAK,SAAS,EAAE;CAC/C,cAAY,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;mBAClB,KAAK,GAAG,MAAM,CAAC;mBACf,MAAM,GAAG,SAAS,CAAC;gBACtB;AACb;CACA,cAAY,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;CAClC,WAAS,MAAM;eACH,MAAM,GAAG,YAAY,CAAC;eACtB,KAAK,GAAG,MAAM,CAAC;eACf,YAAY,GAAG,KAAK,CAAC;AACjC;CACA,cAAY,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;mBAClB,KAAK,GAAG,MAAM,CAAC;mBACf,MAAM,GAAG,SAAS,CAAC;gBACtB;AACb;CACA,cAAY,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;YACzB;AACT;CACA,UAAQ,IAAI,MAAM,GAAG,SAAS,EAAE;eACpB,KAAK,GAAG,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;CACvD,cAAY,CAAC;eACD,GAAG,GAAG,EAAE,CAAC;AACrB;CACA,UAAQ,IAAI,KAAK,IAAI,IAAI,EAAE;CAC3B,cAAY,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,GAAG,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YAC3D;AACT;WACQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;eACpB,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YACzD;WACD,OAAO,GAAG,CAAC;QACd;AACL;CACA,MAAI,SAAS,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE;WAC/B,OAAO,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAClD;AACL;CACA,MAAI,SAAS,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE;WACpC,OAAO,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;QACvD;AACL;OACI,SAAS,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE;WAC/C,OAAO,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QACpE;AACL;OACI,SAAS,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE;WACpD,OAAO,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;QACzE;AACL;OACI,SAAS,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE;WAClD,OAAO,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;QACvE;AACL;OACI,kBAAkB,CAAC,IAAI,EAAE;CAC7B,UAAQ,IAAI,EAAE;eACF;mBACI,KAAK,EAAE,YAAY;mBACnB,KAAK,EAAE,CAAC,QAAQ;mBAChB,MAAM,EAAE,CAAC;mBACT,IAAI,EAAE,aAAa;mBACnB,MAAM,EAAE,IAAI;mBACZ,IAAI,EAAE,IAAI;gBACb;eACD;mBACI,KAAK,EAAE,YAAY;mBACnB,KAAK,EAAE,CAAC,QAAQ;mBAChB,MAAM,EAAE,CAAC;mBACT,IAAI,EAAE,eAAe;mBACrB,MAAM,EAAE,IAAI;mBACZ,IAAI,EAAE,IAAI;gBACb;YACJ;WACD,sBAAsB,EAAE,sBAAsB;CACtD,UAAQ,OAAO,EAAE,UAAU,MAAM,EAAE;CACnC,cAAY,IAAI,CAAC,GAAG,MAAM,GAAG,EAAE;CAC/B,kBAAgB,MAAM;uBACF,KAAK,CAAC,CAAC,MAAM,GAAG,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC;CACpD,4BAA0B,IAAI;6BACJ,CAAC,KAAK,CAAC;CACjC,4BAA0B,IAAI;6BACJ,CAAC,KAAK,CAAC;CACjC,4BAA0B,IAAI;6BACJ,CAAC,KAAK,CAAC;CACjC,4BAA0B,IAAI;CAC9B,4BAA0B,IAAI,CAAC;CAC/B,cAAY,OAAO,MAAM,GAAG,MAAM,CAAC;YAC1B;CACT,OAAK,CAAC,CAAC;AACP;CACA;AACA;CACA,MAAI,KAAK,CAAC,IAAI,GAAG,SAAS;CAC1B,UAAQ,uDAAuD;CAC/D,UAAQ,kBAAkB;CAC1B,OAAK,CAAC;CACN,MAAI,KAAK,CAAC,QAAQ,GAAG,SAAS;CAC9B,UAAQ,+DAA+D;CACvE,UAAQ,SAAS;CACjB,OAAK,CAAC;AACN;CACA,MAAI,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;AAC3B;OACI,SAAS,GAAG,GAAG;CACnB,UAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;AAC9B;WACQ,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;WACjD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;WACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7C;WACQ,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;WAC/C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;WACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;WACrC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;WACjC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;WACnC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzC;WACQ,OAAO,IAAI,CAAC;QACf;AACL;OACI,SAAS,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;WACtD,IAAI,KAAK,GAAG,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACjD;WACQ,QAAQ,CAAC,aAAa,IAAI,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC;WAC1D,QAAQ,CAAC,KAAK,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;WAC1C,QAAQ,CAAC,OAAO,IAAI,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;AACtD;CACA,UAAQ,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC7B;AACL;CACA;CACA,MAAI,SAAS,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE;WACzB,OAAO,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAC/C;AACL;CACA;CACA,MAAI,SAAS,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE;CACtC,UAAQ,OAAO,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAChD;AACL;CACA,MAAI,SAAS,OAAO,CAAC,MAAM,EAAE;CAC7B,UAAQ,IAAI,MAAM,GAAG,CAAC,EAAE;CACxB,cAAY,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;CACtC,WAAS,MAAM;CACf,cAAY,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5B;QACJ;AACL;OACI,SAAS,MAAM,GAAG;CACtB,UAAQ,IAAI,YAAY,GAAG,IAAI,CAAC,aAAa;CAC7C,cAAY,IAAI,GAAG,IAAI,CAAC,KAAK;CAC7B,cAAY,MAAM,GAAG,IAAI,CAAC,OAAO;CACjC,cAAY,IAAI,GAAG,IAAI,CAAC,KAAK;CAC7B,cAAY,OAAO;CACnB,cAAY,OAAO;CACnB,cAAY,KAAK;CACjB,cAAY,KAAK;CACjB,cAAY,cAAc,CAAC;AAC3B;CACA;CACA;WACQ;eACI;mBACI,CAAC,YAAY,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC;oBAC7C,YAAY,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC;gBAClD;aACH;CACV,cAAY,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;eAC7D,IAAI,GAAG,CAAC,CAAC;eACT,MAAM,GAAG,CAAC,CAAC;YACd;AACT;CACA;CACA;CACA,UAAQ,IAAI,CAAC,YAAY,GAAG,YAAY,GAAG,IAAI,CAAC;AAChD;WACQ,OAAO,GAAG,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;CAChD,UAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,GAAG,EAAE,CAAC;AACpC;WACQ,OAAO,GAAG,QAAQ,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;CACzC,UAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,GAAG,EAAE,CAAC;AACpC;WACQ,KAAK,GAAG,QAAQ,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;CACvC,UAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,EAAE,CAAC;AAChC;WACQ,IAAI,IAAI,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;AACrC;CACA;WACQ,cAAc,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;WAC9C,MAAM,IAAI,cAAc,CAAC;WACzB,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC;AACtD;CACA;WACQ,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;WAC9B,MAAM,IAAI,EAAE,CAAC;AACrB;CACA,UAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;CACzB,UAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;CAC7B,UAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B;WACQ,OAAO,IAAI,CAAC;QACf;AACL;CACA,MAAI,SAAS,YAAY,CAAC,IAAI,EAAE;CAChC;CACA;CACA,UAAQ,OAAO,CAAC,IAAI,GAAG,IAAI,IAAI,MAAM,CAAC;QACjC;AACL;CACA,MAAI,SAAS,YAAY,CAAC,MAAM,EAAE;CAClC;CACA,UAAQ,OAAO,CAAC,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC;QACnC;AACL;CACA,MAAI,SAAS,EAAE,CAAC,KAAK,EAAE;CACvB,UAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;eACjB,OAAO,GAAG,CAAC;YACd;CACT,UAAQ,IAAI,IAAI;CAChB,cAAY,MAAM;CAClB,cAAY,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;AAC9C;CACA,UAAQ,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AACtC;CACA,UAAQ,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,MAAM,EAAE;eAC9D,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,YAAY,GAAG,KAAK,CAAC;eACzC,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;CACvD,cAAY,QAAQ,KAAK;CACzB,kBAAgB,KAAK,OAAO;uBACR,OAAO,MAAM,CAAC;CAClC,kBAAgB,KAAK,SAAS;CAC9B,sBAAoB,OAAO,MAAM,GAAG,CAAC,CAAC;CACtC,kBAAgB,KAAK,MAAM;CAC3B,sBAAoB,OAAO,MAAM,GAAG,EAAE,CAAC;gBAC1B;CACb,WAAS,MAAM;CACf;CACA,cAAY,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;CACvE,cAAY,QAAQ,KAAK;CACzB,kBAAgB,KAAK,MAAM;uBACP,OAAO,IAAI,GAAG,CAAC,GAAG,YAAY,GAAG,MAAM,CAAC;CAC5D,kBAAgB,KAAK,KAAK;CAC1B,sBAAoB,OAAO,IAAI,GAAG,YAAY,GAAG,KAAK,CAAC;CACvD,kBAAgB,KAAK,MAAM;uBACP,OAAO,IAAI,GAAG,EAAE,GAAG,YAAY,GAAG,IAAI,CAAC;CAC3D,kBAAgB,KAAK,QAAQ;uBACT,OAAO,IAAI,GAAG,IAAI,GAAG,YAAY,GAAG,GAAG,CAAC;CAC5D,kBAAgB,KAAK,QAAQ;uBACT,OAAO,IAAI,GAAG,KAAK,GAAG,YAAY,GAAG,IAAI,CAAC;CAC9D;CACA,kBAAgB,KAAK,aAAa;uBACd,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,YAAY,CAAC;mBACnD;uBACI,MAAM,IAAI,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,CAAC;gBAChD;YACJ;QACJ;AACL;CACA;OACI,SAAS,SAAS,GAAG;CACzB,UAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;eACjB,OAAO,GAAG,CAAC;YACd;WACD;eACI,IAAI,CAAC,aAAa;CAC9B,cAAY,IAAI,CAAC,KAAK,GAAG,KAAK;CAC9B,cAAY,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,IAAI,MAAM;eAC5B,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,GAAG,OAAO;aACpC;QACL;AACL;CACA,MAAI,SAAS,MAAM,CAAC,KAAK,EAAE;CAC3B,UAAQ,OAAO,YAAY;CAC3B,cAAY,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;CAClC,WAAS,CAAC;QACL;AACL;CACA,MAAI,IAAI,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC;CACrC,UAAQ,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC;CAC/B,UAAQ,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC;CAC/B,UAAQ,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC;CAC7B,UAAQ,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC;CAC5B,UAAQ,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC;CAC7B,UAAQ,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC;CAC9B,UAAQ,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC;CAChC,UAAQ,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9B;OACI,SAAS,OAAO,GAAG;CACvB,UAAQ,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;QAC/B;AACL;CACA,MAAI,SAAS,KAAK,CAAC,KAAK,EAAE;CAC1B,UAAQ,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;CACtC,UAAQ,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC;QACrD;AACL;CACA,MAAI,SAAS,UAAU,CAAC,IAAI,EAAE;CAC9B,UAAQ,OAAO,YAAY;CAC3B,cAAY,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;CAC3D,WAAS,CAAC;QACL;AACL;CACA,MAAI,IAAI,YAAY,GAAG,UAAU,CAAC,cAAc,CAAC;CACjD,UAAQ,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC;CACvC,UAAQ,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC;CACvC,UAAQ,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC;CACnC,UAAQ,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC;CACjC,UAAQ,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC;CACrC,UAAQ,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;AACpC;OACI,SAAS,KAAK,GAAG;WACb,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QACpC;AACL;CACA,MAAI,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK;CAC1B,UAAQ,UAAU,GAAG;eACT,EAAE,EAAE,EAAE;eACN,CAAC,EAAE,EAAE;eACL,CAAC,EAAE,EAAE;eACL,CAAC,EAAE,EAAE;eACL,CAAC,EAAE,EAAE;eACL,CAAC,EAAE,IAAI;eACP,CAAC,EAAE,EAAE;CACjB,WAAS,CAAC;AACV;CACA;CACA,MAAI,SAAS,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE;CAChF,UAAQ,OAAO,MAAM,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC9E;AACL;OACI,SAAS,cAAc,CAAC,cAAc,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE;WACvE,IAAI,QAAQ,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC,GAAG,EAAE;eAC/C,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;eACjC,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;eACjC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;eAC/B,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;eAC9B,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;eAChC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;eAC/B,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CAC3C,cAAY,CAAC;mBACG,CAAC,OAAO,IAAI,UAAU,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC;oBAC1C,OAAO,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;CAC3D,mBAAiB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtB,OAAO,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;CAC3D,mBAAiB,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACpB,KAAK,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;CACvD,mBAAiB,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACpC,mBAAiB,IAAI,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACtD;CACA,UAAQ,IAAI,UAAU,CAAC,CAAC,IAAI,IAAI,EAAE;CAClC,cAAY,CAAC;CACb,kBAAgB,CAAC;CACjB,mBAAiB,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACrC,mBAAiB,KAAK,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YAC/C;WACD,CAAC,GAAG,CAAC;CACb,eAAa,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACrB,MAAM,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;CACrD,eAAa,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACnD;CACA,UAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC;WACrB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC;CACnC,UAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;WACd,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3C;AACL;CACA;CACA,MAAI,SAAS,0BAA0B,CAAC,gBAAgB,EAAE;CAC1D,UAAQ,IAAI,gBAAgB,KAAK,SAAS,EAAE;eAChC,OAAO,KAAK,CAAC;YAChB;CACT,UAAQ,IAAI,OAAO,gBAAgB,KAAK,UAAU,EAAE;eACxC,KAAK,GAAG,gBAAgB,CAAC;eACzB,OAAO,IAAI,CAAC;YACf;WACD,OAAO,KAAK,CAAC;QAChB;AACL;CACA;CACA,MAAI,SAAS,2BAA2B,CAAC,SAAS,EAAE,KAAK,EAAE;CAC3D,UAAQ,IAAI,UAAU,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE;eACrC,OAAO,KAAK,CAAC;YAChB;CACT,UAAQ,IAAI,KAAK,KAAK,SAAS,EAAE;CACjC,cAAY,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC;YAChC;CACT,UAAQ,UAAU,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;CACtC,UAAQ,IAAI,SAAS,KAAK,GAAG,EAAE;CAC/B,cAAY,UAAU,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;YAC7B;WACD,OAAO,IAAI,CAAC;QACf;AACL;CACA,MAAI,SAAS,QAAQ,CAAC,aAAa,EAAE,aAAa,EAAE;CACpD,UAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;eACjB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,CAAC;YAC1C;AACT;WACQ,IAAI,UAAU,GAAG,KAAK;eAClB,EAAE,GAAG,UAAU;CAC3B,cAAY,MAAM;CAClB,cAAY,MAAM,CAAC;AACnB;CACA,UAAQ,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;eACnC,aAAa,GAAG,aAAa,CAAC;eAC9B,aAAa,GAAG,KAAK,CAAC;YACzB;CACT,UAAQ,IAAI,OAAO,aAAa,KAAK,SAAS,EAAE;eACpC,UAAU,GAAG,aAAa,CAAC;YAC9B;CACT,UAAQ,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;CAC/C,cAAY,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;CAC9D,cAAY,IAAI,aAAa,CAAC,CAAC,IAAI,IAAI,IAAI,aAAa,CAAC,EAAE,IAAI,IAAI,EAAE;mBACrD,EAAE,CAAC,EAAE,GAAG,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC/B;YACJ;AACT;CACA,UAAQ,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;CACnC,UAAQ,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;AAC/D;WACQ,IAAI,UAAU,EAAE;eACZ,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC7C;AACT;CACA,UAAQ,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACpC;AACL;CACA,MAAI,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;AACzB;CACA,MAAI,SAAS,IAAI,CAAC,CAAC,EAAE;CACrB,UAAQ,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAClC;AACL;OACI,SAAS,aAAa,GAAG;CAC7B;CACA;CACA;CACA;CACA;CACA;CACA;CACA,UAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;eACjB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,CAAC;YAC1C;AACT;WACQ,IAAI,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI;CACtD,cAAY,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;CACpC,cAAY,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;CACxC,cAAY,OAAO;CACnB,cAAY,KAAK;CACjB,cAAY,KAAK;CACjB,cAAY,CAAC;CACb,cAAY,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;CACpC,cAAY,SAAS;CACrB,cAAY,MAAM;CAClB,cAAY,QAAQ;CACpB,cAAY,OAAO,CAAC;AACpB;WACQ,IAAI,CAAC,KAAK,EAAE;CACpB;CACA;eACY,OAAO,KAAK,CAAC;YAChB;AACT;CACA;WACQ,OAAO,GAAG,QAAQ,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;WACjC,KAAK,GAAG,QAAQ,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;WAC/B,OAAO,IAAI,EAAE,CAAC;WACd,OAAO,IAAI,EAAE,CAAC;AACtB;CACA;WACQ,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;WAC9B,MAAM,IAAI,EAAE,CAAC;AACrB;CACA;CACA,UAAQ,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;AACpE;WACQ,SAAS,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;CACzC,UAAQ,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;CAC/D,UAAQ,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;CAC/D,UAAQ,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;AACtE;WACQ;CACR,cAAY,SAAS;CACrB,cAAY,GAAG;gBACF,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,GAAG,GAAG,EAAE,CAAC;gBAClC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC;gBACpC,IAAI,GAAG,QAAQ,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;gBAClC,KAAK,IAAI,OAAO,IAAI,OAAO,GAAG,GAAG,GAAG,EAAE,CAAC;gBACvC,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,GAAG,GAAG,EAAE,CAAC;gBACnC,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,GAAG,GAAG,EAAE,CAAC;gBACvC,OAAO,GAAG,OAAO,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;aACpC;QACL;AACL;CACA,MAAI,IAAI,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC;AACrC;CACA,MAAI,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;CAChC,MAAI,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;CACtB,MAAI,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC;CACxB,MAAI,OAAO,CAAC,QAAQ,GAAG,UAAU,CAAC;CAClC,MAAI,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;CACpB,MAAI,OAAO,CAAC,cAAc,GAAG,cAAc,CAAC;CAC5C,MAAI,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;CAClC,MAAI,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;CAClC,MAAI,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;CAC9B,MAAI,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;CAC5B,MAAI,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;CAC9B,MAAI,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;CAChC,MAAI,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;CACpC,MAAI,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;CAC9B,MAAI,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;CAChC,MAAI,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;CAC7B,MAAI,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC;CAC5B,MAAI,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC;CACxB,MAAI,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;CACxC,MAAI,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;CAC9B,MAAI,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;CAC9B,MAAI,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;CAC1B,MAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;CACxB,MAAI,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;CAC1B,MAAI,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;CAC5B,MAAI,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;CAC1B,MAAI,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;CAChC,MAAI,OAAO,CAAC,WAAW,GAAG,aAAa,CAAC;CACxC,MAAI,OAAO,CAAC,QAAQ,GAAG,aAAa,CAAC;CACrC,MAAI,OAAO,CAAC,MAAM,GAAG,aAAa,CAAC;CACnC,MAAI,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;CAC5B,MAAI,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;AACpC;CACA,MAAI,OAAO,CAAC,WAAW,GAAG,SAAS;CACnC,UAAQ,qFAAqF;CAC7F,UAAQ,aAAa;CACrB,OAAK,CAAC;CACN,MAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AACxB;CACA;AACA;OACI,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;OAClC,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;AACzC;CACA;AACA;CACA,MAAI,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;CACpC,MAAI,aAAa,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;OACnC,aAAa,CAAC,GAAG,EAAE,UAAU,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;CACvD,UAAQ,MAAM,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;CACvD,OAAK,CAAC,CAAC;OACH,aAAa,CAAC,GAAG,EAAE,UAAU,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;CACvD,UAAQ,MAAM,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;CAC3C,OAAK,CAAC,CAAC;AACP;CACA;AACA;CACA,MAAI,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;AAC7B;CACA,MAAI,eAAe,CAAC,WAAW,CAAC,CAAC;AACjC;CACA,MAAI,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC;CACrB,MAAI,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;CACpB,MAAI,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;CACpB,MAAI,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;CACpB,MAAI,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC;CAC1B,MAAI,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;CAC5B,MAAI,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;CAC9B,MAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;CAC1B,MAAI,KAAK,CAAC,MAAM,GAAG,kBAAkB,CAAC;CACtC,MAAI,KAAK,CAAC,OAAO,GAAG,aAAa,CAAC;CAClC,MAAI,KAAK,CAAC,QAAQ,GAAG,cAAc,CAAC;CACpC,MAAI,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;CAC9B,MAAI,KAAK,CAAC,QAAQ,GAAG,YAAY,CAAC;CAClC,MAAI,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC;CACnC,MAAI,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;CACjC,MAAI,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;CAClC,MAAI,KAAK,CAAC,WAAW,GAAG,eAAe,CAAC;CACxC,MAAI,KAAK,CAAC,WAAW,GAAG,eAAe,CAAC;CACxC,MAAI,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;CACtC,MAAI,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;CACtC,MAAI,KAAK,CAAC,OAAO,GAAG,WAAW,CAAC;CAChC,MAAI,KAAK,CAAC,aAAa,GAAG,iBAAiB,CAAC;CAC5C,MAAI,KAAK,CAAC,cAAc,GAAG,cAAc,CAAC;CAC1C,MAAI,KAAK,CAAC,oBAAoB,GAAG,0BAA0B,CAAC;CAC5D,MAAI,KAAK,CAAC,qBAAqB,GAAG,2BAA2B,CAAC;CAC9D,MAAI,KAAK,CAAC,cAAc,GAAG,iBAAiB,CAAC;CAC7C,MAAI,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;AAC5B;CACA;OACI,KAAK,CAAC,SAAS,GAAG;WACd,cAAc,EAAE,kBAAkB;WAClC,sBAAsB,EAAE,qBAAqB;WAC7C,iBAAiB,EAAE,yBAAyB;WAC5C,IAAI,EAAE,YAAY;WAClB,IAAI,EAAE,OAAO;WACb,YAAY,EAAE,UAAU;WACxB,OAAO,EAAE,cAAc;WACvB,IAAI,EAAE,YAAY;WAClB,KAAK,EAAE,SAAS;CACxB,OAAK,CAAC;AACN;OACI,OAAO,KAAK,CAAC;AACjB;CACA,GAAC,EAAE,EAAA;;;;;;;;;;;;;CC9iLH,CAAA,CAAC,UAAU,MAAM,EAAE,OAAO,EAAE;CAC5B,CAA+D,MAAA,CAAA,OAAA,GAAiB,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,OAAOC,aAAiB,EAAA,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAExF,CAAC;GAChE,CAACF,cAAI,GAAG,UAAU,MAAM,EAAE,CAC3B;CACA,CAAA,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;AACjF;CACA,CAAA,SAAS,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE;GACzC,OAAO,MAAM,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;GAC5E;AACD;EACA,SAAS,yBAAyB,EAAE,CAAC,EAAE;GACtC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;GAC9B;AACD;CACA,CAAA,IAAI,SAAS,GAAG;GACf,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC/B,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;GACrB,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC7B,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACxB,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACxB,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACzB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;GAClB,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACjC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;GACnB,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;GAC5B,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;GACtB,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,WAAW,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;GAC3B,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;GAC3B,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;GAC3B,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;GACvB,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACjC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC3B,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;GACxB,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;GACrB,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;GACvB,UAAU,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;GACzB,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;GAC/B,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC3B,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;GACxB,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC3B,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,aAAa,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;GAC5B,gBAAgB,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;GAC/B,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;GAC3B,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;GAC5B,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;GACtB,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC7B,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC/B,eAAe,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;GAC9B,eAAe,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;GAC7B,eAAe,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;GAC7B,eAAe,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;GAC9B,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;GAC3B,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;GAC1B,aAAa,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC1B,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC1B,YAAY,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;GAC1B,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC9B,aAAa,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;GAC5B,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;GACxB,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC7B,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;GACrB,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;GAC3B,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACvB,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;GACpB,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;GAC7B,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACvB,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC3B,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC1B,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;GAC1B,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;GACtB,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACxB,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACxB,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC3B,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAChC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;GAC1B,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC/B,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC7B,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,sBAAsB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACvC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC7B,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC9B,eAAe,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;GAC/B,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC/B,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACjC,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACjC,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACjC,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC9B,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;GACnB,WAAW,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;GAC1B,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACxB,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;GACxB,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;GACrB,kBAAkB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACnC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;GACzB,cAAc,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;GAC9B,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC/B,gBAAgB,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;GAChC,iBAAiB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAClC,mBAAmB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;GAClC,iBAAiB,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;GACjC,iBAAiB,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;GACjC,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;GAC7B,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC3B,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC9B,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;GACnB,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC1B,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;GACtB,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;GAC3B,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;GACvB,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;GACzB,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACzB,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAChC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAChC,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAChC,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC7B,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;GACtB,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACvB,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACvB,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC7B,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;GACvB,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;GAC/B,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;GAClB,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,WAAW,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;GAC3B,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;GAC5B,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACzB,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;GAC5B,UAAU,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;GACzB,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC3B,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;GACvB,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACzB,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC1B,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;GAC3B,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACvB,aAAa,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,WAAW,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;GAC3B,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACtB,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;GACrB,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC1B,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;GACvB,WAAW,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;GAC3B,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACzB,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACxB,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACxB,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC7B,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;GACvB,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;CAC9B,EAAC,CAAC;AACF;CACA,CAAA,IAAI,WAAW,GAAG,oBAAoB,CAAC,UAAU,MAAM,EAAE;CACzD;AACA;AACA;CACA;CACA;CACA;AACA;EACA,IAAI,eAAe,GAAG,EAAE,CAAC;CACzB,CAAA,KAAK,IAAI,GAAG,IAAI,SAAS,EAAE;CAC3B,EAAC,IAAI,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;IAClC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IACtC;GACD;AACD;CACA,CAAA,IAAI,OAAO,GAAG,MAAM,CAAC,OAAO,GAAG;GAC9B,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC;GACjC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC;GACjC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC;GACjC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC;GACjC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC;GACnC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC;GACjC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC;GACjC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC;CAClC,EAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;CACpC,EAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC;CAC5C,EAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC;CAC1C,EAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC;CAC5C,EAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;CAC5C,EAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CACpD,EAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;CACtC,EAAC,CAAC;AACF;CACA;CACA,CAAA,KAAK,IAAI,KAAK,IAAI,OAAO,EAAE;CAC3B,EAAC,IAAI,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;IAClC,IAAI,EAAE,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;KACpC,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,KAAK,CAAC,CAAC;KACvD;AACH;IACE,IAAI,EAAE,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;KAClC,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,KAAK,CAAC,CAAC;KAC7D;AACH;CACA,GAAE,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;KAC7D,MAAM,IAAI,KAAK,CAAC,qCAAqC,GAAG,KAAK,CAAC,CAAC;KAC/D;AACH;IACE,IAAI,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;IACvC,IAAI,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;CACrC,GAAE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;CACjC,GAAE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;CAC/B,GAAE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;CACvE,GAAE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IACjE;GACD;AACD;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE;GAChC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;CACtB,EAAC,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC7B,EAAC,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC7B,EAAC,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;GACtB,IAAI,CAAC,CAAC;GACN,IAAI,CAAC,CAAC;GACN,IAAI,CAAC,CAAC;AACP;CACA,EAAC,IAAI,GAAG,KAAK,GAAG,EAAE;IAChB,CAAC,GAAG,CAAC,CAAC;CACR,GAAE,MAAM,IAAI,CAAC,KAAK,GAAG,EAAE;IACrB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;CACtB,GAAE,MAAM,IAAI,CAAC,KAAK,GAAG,EAAE;IACrB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;CAC1B,GAAE,MAAM,IAAI,CAAC,KAAK,GAAG,EAAE;IACrB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;IACxB;AACF;CACA,EAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;AAC3B;CACA,EAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IACV,CAAC,IAAI,GAAG,CAAC;IACT;AACF;GACC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AACrB;CACA,EAAC,IAAI,GAAG,KAAK,GAAG,EAAE;IAChB,CAAC,GAAG,CAAC,CAAC;CACR,GAAE,MAAM,IAAI,CAAC,IAAI,GAAG,EAAE;IACpB,CAAC,GAAG,KAAK,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;CAC1B,GAAE,MAAM;IACN,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IAC5B;AACF;CACA,EAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;CAC9B,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE;GAChC,IAAI,IAAI,CAAC;GACT,IAAI,IAAI,CAAC;GACT,IAAI,IAAI,CAAC;GACT,IAAI,CAAC,CAAC;GACN,IAAI,CAAC,CAAC;AACP;GACC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;CACtB,EAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC3B,EAAC,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC,EAAC,IAAI,KAAK,GAAG,UAAU,CAAC,EAAE;CAC1B,GAAE,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;CACpC,GAAE,CAAC;AACH;CACA,EAAC,IAAI,IAAI,KAAK,CAAC,EAAE;CACjB,GAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACZ,GAAE,MAAM;CACR,GAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;CACf,GAAE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CAClB,GAAE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CAClB,GAAE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB;CACA,GAAE,IAAI,CAAC,KAAK,CAAC,EAAE;CACf,IAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;CACnB,IAAG,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE;KACnB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC;CAC7B,IAAG,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE;KACnB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC;KAC1B;CACH,GAAE,IAAI,CAAC,GAAG,CAAC,EAAE;KACV,CAAC,IAAI,CAAC,CAAC;CACV,IAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE;KACjB,CAAC,IAAI,CAAC,CAAC;KACP;IACD;AACF;CACA,EAAC,OAAO;IACN,CAAC,GAAG,GAAG;IACP,CAAC,GAAG,GAAG;IACP,CAAC,GAAG,GAAG;CACT,GAAE,CAAC;CACH,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE;CACjC,EAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;CAChB,EAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;CAChB,EAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;CAChB,EAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;GAChC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/C;GACC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/C;CACA,EAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;CAC9B,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE;GACjC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,CAAC,CAAC;GACN,IAAI,CAAC,CAAC;GACN,IAAI,CAAC,CAAC;GACN,IAAI,CAAC,CAAC;AACP;CACA,EAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACnC,EAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;CAChC,EAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;CAChC,EAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;AAChC;CACA,EAAC,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;CAC7C,EAAC,CAAC;AACF;CACA;CACA;CACA;CACA,CAAA,SAAS,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE;GAClC;CACD,GAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;CAC1B,GAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;CAC1B,GAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KACvB;GACF;AACD;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,UAAU,GAAG,EAAE;CACrC,EAAC,IAAI,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;GACpC,IAAI,QAAQ,EAAE;IACb,OAAO,QAAQ,CAAC;IAChB;AACF;CACA,EAAC,IAAI,sBAAsB,GAAG,QAAQ,CAAC;GACtC,IAAI,qBAAqB,CAAC;AAC3B;CACA,EAAC,KAAK,IAAI,OAAO,IAAI,SAAS,EAAE;CAChC,GAAE,IAAI,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;CACzC,IAAG,IAAI,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;AAClC;CACA;KACG,IAAI,QAAQ,GAAG,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAClD;CACA;CACA,IAAG,IAAI,QAAQ,GAAG,sBAAsB,EAAE;MACtC,sBAAsB,GAAG,QAAQ,CAAC;MAClC,qBAAqB,GAAG,OAAO,CAAC;MAChC;KACD;IACD;AACF;GACC,OAAO,qBAAqB,CAAC;CAC9B,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,UAAU,OAAO,EAAE;CACzC,EAAC,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;CAC3B,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE;GAChC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACtB;CACA;GACC,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;GACrE,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;GACrE,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;AACtE;CACA,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;CACpD,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;CACpD,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;AACpD;CACA,EAAC,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;CACpC,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE;GAChC,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CAChC,EAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;CAChB,EAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;CAChB,EAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;GACf,IAAI,CAAC,CAAC;GACN,IAAI,CAAC,CAAC;GACN,IAAI,CAAC,CAAC;AACP;GACC,CAAC,IAAI,MAAM,CAAC;GACZ,CAAC,IAAI,GAAG,CAAC;GACT,CAAC,IAAI,OAAO,CAAC;AACd;GACC,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC;GACjE,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC;GACjE,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC;AAClE;GACC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;GACnB,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;GAClB,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACnB;GACC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClB,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE;GAChC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,EAAE,CAAC;GACP,IAAI,EAAE,CAAC;GACP,IAAI,EAAE,CAAC;GACP,IAAI,GAAG,CAAC;GACR,IAAI,GAAG,CAAC;AACT;CACA,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE;CACd,GAAE,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACd,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACvB;AACF;CACA,EAAC,IAAI,CAAC,GAAG,GAAG,EAAE;IACZ,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;CACnB,GAAE,MAAM;IACN,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB;AACF;CACA,EAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AACjB;GACC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACjB,EAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CAC7B,GAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC5B,GAAE,IAAI,EAAE,GAAG,CAAC,EAAE;KACX,EAAE,EAAE,CAAC;KACL;CACH,GAAE,IAAI,EAAE,GAAG,CAAC,EAAE;KACX,EAAE,EAAE,CAAC;KACL;AACH;CACA,GAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;CAClB,IAAG,GAAG,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;CACjC,IAAG,MAAM,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;KACtB,GAAG,GAAG,EAAE,CAAC;CACZ,IAAG,MAAM,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;CACzB,IAAG,GAAG,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;CAC3C,IAAG,MAAM;KACN,GAAG,GAAG,EAAE,CAAC;KACT;AACH;IACE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;IACnB;AACF;GACC,OAAO,GAAG,CAAC;CACZ,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE;CACjC,EAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;GACf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;CACtB,EAAC,IAAI,IAAI,GAAG,CAAC,CAAC;GACb,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;GAC7B,IAAI,EAAE,CAAC;GACP,IAAI,CAAC,CAAC;AACP;GACC,CAAC,IAAI,CAAC,CAAC;CACR,EAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;GAC1B,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;GACpC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;GAChB,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D;CACA,EAAC,OAAO,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;CAC/B,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE;GAChC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;GACpB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5B;GACC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;GAC1B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;CAC3B,EAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACjC,EAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;GACtC,CAAC,IAAI,GAAG,CAAC;AACV;CACA,EAAC,QAAQ,EAAE;CACX,GAAE,KAAK,CAAC;KACL,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACpB,GAAE,KAAK,CAAC;KACL,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACpB,GAAE,KAAK,CAAC;KACL,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACpB,GAAE,KAAK,CAAC;KACL,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACpB,GAAE,KAAK,CAAC;KACL,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACpB,GAAE,KAAK,CAAC;KACL,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAClB;CACF,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE;CACjC,EAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;GACf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;GAC7B,IAAI,IAAI,CAAC;GACT,IAAI,EAAE,CAAC;GACP,IAAI,CAAC,CAAC;AACP;GACC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;GAChB,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;CACvB,EAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;CACf,EAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;CACrC,EAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;GACb,CAAC,IAAI,CAAC,CAAC;AACR;CACA,EAAC,OAAO,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;CAC/B,EAAC,CAAC;AACF;CACA;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE;GAChC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACtB,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;CACvB,EAAC,IAAI,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;GACpB,IAAI,CAAC,CAAC;GACN,IAAI,CAAC,CAAC;GACN,IAAI,CAAC,CAAC;GACN,IAAI,CAAC,CAAC;AACP;CACA;CACA,EAAC,IAAI,KAAK,GAAG,CAAC,EAAE;IACd,EAAE,IAAI,KAAK,CAAC;IACZ,EAAE,IAAI,KAAK,CAAC;IACZ;AACF;GACC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACvB,EAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;CACZ,EAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACf;CACA,EAAC,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE;CACvB,GAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACV;AACF;GACC,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACvB;GACC,IAAI,CAAC,CAAC;GACN,IAAI,CAAC,CAAC;GACN,IAAI,CAAC,CAAC;CACP,EAAC,QAAQ,CAAC;CACV,GAAE,QAAQ;IACR,KAAK,CAAC,CAAC;CACT,GAAE,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM;CACtC,GAAE,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM;CACtC,GAAE,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;CACtC,GAAE,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;CACtC,GAAE,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;CACtC,GAAE,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;IACpC;AACF;CACA,EAAC,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;CACpC,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,UAAU,IAAI,EAAE;GAClC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACtB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACtB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACtB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACtB,IAAI,CAAC,CAAC;GACN,IAAI,CAAC,CAAC;GACN,IAAI,CAAC,CAAC;AACP;CACA,EAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACtC,EAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACtC,EAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACtC;CACA,EAAC,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;CACpC,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE;GAChC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,CAAC,CAAC;GACN,IAAI,CAAC,CAAC;GACN,IAAI,CAAC,CAAC;AACP;CACA,EAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CAClD,EAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;CACjD,EAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;AACjD;CACA;CACA,EAAC,CAAC,GAAG,CAAC,GAAG,SAAS;CAClB,MAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,IAAI,KAAK;MACzC,CAAC,GAAG,KAAK,CAAC;AACd;CACA,EAAC,CAAC,GAAG,CAAC,GAAG,SAAS;CAClB,MAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,IAAI,KAAK;MACzC,CAAC,GAAG,KAAK,CAAC;AACd;CACA,EAAC,CAAC,GAAG,CAAC,GAAG,SAAS;CAClB,MAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,IAAI,KAAK;MACzC,CAAC,GAAG,KAAK,CAAC;AACd;CACA,EAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACjC,EAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACjC,EAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC;CACA,EAAC,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;CACpC,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE;CACjC,EAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;CAChB,EAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;CAChB,EAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;GACf,IAAI,CAAC,CAAC;GACN,IAAI,CAAC,CAAC;GACN,IAAI,CAAC,CAAC;AACP;GACC,CAAC,IAAI,MAAM,CAAC;GACZ,CAAC,IAAI,GAAG,CAAC;GACT,CAAC,IAAI,OAAO,CAAC;AACd;GACC,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC;GACjE,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC;GACjE,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC;AAClE;GACC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;GACnB,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;GAClB,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACnB;GACC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClB,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE;CACjC,EAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;CAChB,EAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;CAChB,EAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;GACf,IAAI,CAAC,CAAC;GACN,IAAI,CAAC,CAAC;GACN,IAAI,CAAC,CAAC;AACP;GACC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;CACpB,EAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjB,EAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AACjB;GACC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;GACxB,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;GACxB,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACzB,EAAC,CAAC,GAAG,EAAE,GAAG,QAAQ,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,KAAK,CAAC;CACjD,EAAC,CAAC,GAAG,EAAE,GAAG,QAAQ,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,KAAK,CAAC;CACjD,EAAC,CAAC,GAAG,EAAE,GAAG,QAAQ,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,KAAK,CAAC;AACjD;GACC,CAAC,IAAI,MAAM,CAAC;GACZ,CAAC,IAAI,GAAG,CAAC;GACT,CAAC,IAAI,OAAO,CAAC;AACd;GACC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClB,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE;CACjC,EAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;CAChB,EAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;CAChB,EAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;GACf,IAAI,EAAE,CAAC;GACP,IAAI,CAAC,CAAC;GACN,IAAI,CAAC,CAAC;AACP;GACC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;GACtB,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AAC5B;CACA,EAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IACV,CAAC,IAAI,GAAG,CAAC;IACT;AACF;CACA,EAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9B;GACC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClB,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE;CACjC,EAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;CAChB,EAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;CAChB,EAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;GACf,IAAI,CAAC,CAAC;GACN,IAAI,CAAC,CAAC;GACN,IAAI,EAAE,CAAC;AACR;GACC,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;GAC3B,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;GACrB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACtB;GACC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClB,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,UAAU,IAAI,EAAE;CACrC,EAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;CACjB,EAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;CACjB,EAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;GAChB,IAAI,KAAK,GAAG,CAAC,IAAI,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE;GACC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;AAChC;CACA,EAAC,IAAI,KAAK,KAAK,CAAC,EAAE;IAChB,OAAO,EAAE,CAAC;IACV;AACF;GACC,IAAI,IAAI,GAAG,EAAE;OACT,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;OACzB,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;MAC1B,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACzB;CACA,EAAC,IAAI,KAAK,KAAK,CAAC,EAAE;IAChB,IAAI,IAAI,EAAE,CAAC;IACX;AACF;GACC,OAAO,IAAI,CAAC;CACb,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,UAAU,IAAI,EAAE;CACrC;CACA;GACC,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3D,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,UAAU,IAAI,EAAE;CACtC,EAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;CACjB,EAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;CACjB,EAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB;CACA;CACA;GACC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;CACzB,GAAE,IAAI,CAAC,GAAG,CAAC,EAAE;KACV,OAAO,EAAE,CAAC;KACV;AACH;CACA,GAAE,IAAI,CAAC,GAAG,GAAG,EAAE;KACZ,OAAO,GAAG,CAAC;KACX;AACH;CACA,GAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;IAC9C;AACF;GACC,IAAI,IAAI,GAAG,EAAE;CACd,MAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;CAClC,MAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;MAC7B,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AAC5B;GACC,OAAO,IAAI,CAAC;CACb,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,MAAM,CAAC,GAAG,GAAG,UAAU,IAAI,EAAE;CACrC,EAAC,IAAI,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;AACvB;CACA;GACC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;CACjC,GAAE,IAAI,IAAI,GAAG,EAAE,EAAE;KACd,KAAK,IAAI,GAAG,CAAC;KACb;AACH;CACA,GAAE,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,GAAG,CAAC;AAC7B;IACE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7B;AACF;CACA,EAAC,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;CACtC,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC;CACpC,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC;CAC3C,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC;AAC3C;GACC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClB,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,UAAU,IAAI,EAAE;CACtC;CACA,EAAC,IAAI,IAAI,IAAI,GAAG,EAAE;IAChB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;IAC9B,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACjB;AACF;GACC,IAAI,IAAI,EAAE,CAAC;AACZ;GACC,IAAI,GAAG,CAAC;CACT,EAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;GACxC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;GACpD,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;AAC7B;GACC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClB,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,IAAI,EAAE;CAClC,EAAC,IAAI,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE;CAClD,MAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC;CACvC,MAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACjC;CACA,EAAC,IAAI,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;GAChD,OAAO,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;CACnD,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,IAAI,EAAE;CAClC,EAAC,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;GAChE,IAAI,CAAC,KAAK,EAAE;IACX,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACjB;AACF;CACA,EAAC,IAAI,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5B;GACC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;CAC5B,GAAE,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE;CAC1D,IAAG,OAAO,IAAI,GAAG,IAAI,CAAC;CACtB,IAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ;AACF;GACC,IAAI,OAAO,GAAG,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;GACxC,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,IAAI,IAAI,CAAC;GAC/B,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC;CAC/B,EAAC,IAAI,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC;AACxB;GACC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClB,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE;GAChC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;CACtB,EAAC,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACvC,EAAC,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACvC,EAAC,IAAI,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;GACzB,IAAI,SAAS,CAAC;GACd,IAAI,GAAG,CAAC;AACT;CACA,EAAC,IAAI,MAAM,GAAG,CAAC,EAAE;IACf,SAAS,GAAG,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;CACjC,GAAE,MAAM;IACN,SAAS,GAAG,CAAC,CAAC;IACd;AACF;CACA,EAAC,IAAI,MAAM,IAAI,CAAC,EAAE;IAChB,GAAG,GAAG,CAAC,CAAC;IACR;CACF,EAAC,IAAI,GAAG,KAAK,CAAC,EAAE;IACd,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC;IAC7B;CACF,EAAC,IAAI,GAAG,KAAK,CAAC,EAAE;IACd,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC;CAC7B,GAAE,MAAM;CACR,GAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC;IAC/B;AACF;GACC,GAAG,IAAI,CAAC,CAAC;GACT,GAAG,IAAI,CAAC,CAAC;AACV;CACA,EAAC,OAAO,CAAC,GAAG,GAAG,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,SAAS,GAAG,GAAG,CAAC,CAAC;CACnD,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE;GAChC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;CACtB,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACX,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACX;CACA,EAAC,IAAI,CAAC,GAAG,GAAG,EAAE;CACd,GAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;CAClB,GAAE,MAAM;IACN,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;IACxB;AACF;CACA,EAAC,IAAI,CAAC,GAAG,GAAG,EAAE;CACd,GAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9B;AACF;CACA,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;CACnC,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE;GAChC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACtB;CACA,EAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACf,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACX;CACA,EAAC,IAAI,CAAC,GAAG,GAAG,EAAE;IACZ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB;AACF;CACA,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;CACnC,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE;GAChC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACtB;CACA,EAAC,IAAI,CAAC,KAAK,GAAG,EAAE;CAChB,GAAE,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;IACnC;AACF;GACC,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;GACrB,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;CACtB,EAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAChB,EAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACf,EAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACZ;CACA,EAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;CACvB,GAAE,KAAK,CAAC;KACL,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;CAChD,GAAE,KAAK,CAAC;KACL,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;CAChD,GAAE,KAAK,CAAC;KACL,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;CAChD,GAAE,KAAK,CAAC;KACL,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;CAChD,GAAE,KAAK,CAAC;KACL,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;IAC9C;KACC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACvC;AACF;GACC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AACpB;CACA,EAAC,OAAO;IACN,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG;IACxB,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG;IACxB,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG;CAC1B,GAAE,CAAC;CACH,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE;GAChC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACtB;GACC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;CAC3B,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACX;CACA,EAAC,IAAI,CAAC,GAAG,GAAG,EAAE;CACd,GAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACV;AACF;CACA,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;CACnC,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE;GAChC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACtB;CACA,EAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACX;GACC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE;IACvB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAChB;GACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE;IACxB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtB;AACF;CACA,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;CACnC,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE;GAChC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;GAC1B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;CAC/C,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE;GAChC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;CACtB,EAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACf,EAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACf,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACX;CACA,EAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IACV,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB;AACF;CACA,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;CACnC,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE;CACrC,EAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC;CACvF,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,UAAU,GAAG,EAAE;CACnC,EAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC;CACjF,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,UAAU,IAAI,EAAE;CACnC,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;CACxE,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,UAAU,IAAI,EAAE;GACrD,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;CACxB,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,UAAU,IAAI,EAAE;GAClC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;CAC1B,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,UAAU,IAAI,EAAE;CACpC,EAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3B,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,UAAU,IAAI,EAAE;GAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACxB,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,UAAU,IAAI,EAAE;CACnC,EAAC,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;CAClD,EAAC,IAAI,OAAO,GAAG,CAAC,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;AAC9C;CACA,EAAC,IAAI,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;GAChD,OAAO,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;CACnD,EAAC,CAAC;AACF;CACA,CAAA,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE;GACjC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;GACzC,OAAO,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;CAC1B,EAAC,CAAC;CACF,EAAC,CAAC,CAAC;CACH,CAAoB,WAAW,CAAC,IAAI;CACpC,CAAoB,WAAW,CAAC,IAAI;CACpC,CAAoB,WAAW,CAAC,IAAI;CACpC,CAAoB,WAAW,CAAC,IAAI;CACpC,CAAoB,WAAW,CAAC,KAAK;CACrC,CAAoB,WAAW,CAAC,IAAI;CACpC,CAAoB,WAAW,CAAC,IAAI;CACpC,CAAoB,WAAW,CAAC,IAAI;CACpC,CAAoB,WAAW,CAAC,IAAI;CACpC,CAAqB,WAAW,CAAC,QAAQ;CACzC,CAAqB,WAAW,CAAC,OAAO;CACxC,CAAqB,WAAW,CAAC,QAAQ;CACzC,CAAqB,WAAW,CAAC,IAAI;CACrC,CAAqB,WAAW,CAAC,MAAM;CACvC,CAAqB,WAAW,CAAC,KAAK;AACtC;CACA;CACA;AACA;CACA;CACA;CACA;CACA;AACA;CACA;CACA;AACA;CACA,CAAA,SAAS,UAAU,GAAG;CACtB,EAAC,IAAI,KAAK,GAAG,EAAE,CAAC;CAChB;GACC,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACvC;CACA,EAAC,KAAK,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;CACpD,GAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG;CACrB;CACA;KACG,QAAQ,EAAE,CAAC,CAAC;KACZ,MAAM,EAAE,IAAI;CACf,IAAG,CAAC;IACF;AACF;GACC,OAAO,KAAK,CAAC;GACb;AACD;CACA;EACA,SAAS,SAAS,CAAC,SAAS,EAAE;CAC9B,EAAC,IAAI,KAAK,GAAG,UAAU,EAAE,CAAC;CAC1B,EAAC,IAAI,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC;AACzB;GACC,KAAK,CAAC,SAAS,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC/B;CACA,EAAC,OAAO,KAAK,CAAC,MAAM,EAAE;CACtB,GAAE,IAAI,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;CAC5B,GAAE,IAAI,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;AACpD;CACA,GAAE,KAAK,IAAI,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;CACxD,IAAG,IAAI,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;CAC/B,IAAG,IAAI,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC9B;CACA,IAAG,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,EAAE;CAC7B,KAAI,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;CAChD,KAAI,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;CAC1B,KAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;MACxB;KACD;IACD;AACF;GACC,OAAO,KAAK,CAAC;GACb;AACD;CACA,CAAA,SAAS,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE;GACvB,OAAO,UAAU,IAAI,EAAE;IACtB,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;CACxB,GAAE,CAAC;GACF;AACD;CACA,CAAA,SAAS,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE;CACxC,EAAC,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7C,EAAC,IAAI,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC;AACtD;GACC,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;CACjC,EAAC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;IACzB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;CAClC,GAAE,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IACnD,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACxB;AACF;CACA,EAAC,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC;GACrB,OAAO,EAAE,CAAC;GACV;AACD;CACA,CAAA,IAAI,KAAK,GAAG,UAAU,SAAS,EAAE;CACjC,EAAC,IAAI,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;CAClC,EAAC,IAAI,UAAU,GAAG,EAAE,CAAC;AACrB;GACC,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CACjC,EAAC,KAAK,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;CACpD,GAAE,IAAI,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;CAC1B,GAAE,IAAI,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;AAC5B;CACA,GAAE,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;CAC5B;CACA,IAAG,SAAS;KACT;AACH;IACE,UAAU,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACrD;AACF;GACC,OAAO,UAAU,CAAC;CACnB,EAAC,CAAC;AACF;EACA,IAAI,OAAO,GAAG,EAAE,CAAC;AACjB;EACA,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACtC;EACA,SAAS,OAAO,CAAC,EAAE,EAAE;CACrB,EAAC,IAAI,SAAS,GAAG,UAAU,IAAI,EAAE;IAC/B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE;KACxC,OAAO,IAAI,CAAC;KACZ;AACH;CACA,GAAE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;CAC5B,IAAG,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC7C;AACH;CACA,GAAE,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;CAClB,GAAE,CAAC;AACH;CACA;CACA,EAAC,IAAI,YAAY,IAAI,EAAE,EAAE;CACzB,GAAE,SAAS,CAAC,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC;IACrC;AACF;GACC,OAAO,SAAS,CAAC;GACjB;AACD;EACA,SAAS,WAAW,CAAC,EAAE,EAAE;CACzB,EAAC,IAAI,SAAS,GAAG,UAAU,IAAI,EAAE;IAC/B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE;KACxC,OAAO,IAAI,CAAC;KACZ;AACH;CACA,GAAE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;CAC5B,IAAG,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC7C;AACH;CACA,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;AACxB;CACA;CACA;CACA;CACA,GAAE,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;CAClC,IAAG,KAAK,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;CACtD,KAAI,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;MAClC;KACD;AACH;IACE,OAAO,MAAM,CAAC;CAChB,GAAE,CAAC;AACH;CACA;CACA,EAAC,IAAI,YAAY,IAAI,EAAE,EAAE;CACzB,GAAE,SAAS,CAAC,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC;IACrC;AACF;GACC,OAAO,SAAS,CAAC;GACjB;AACD;CACA,CAAA,MAAM,CAAC,OAAO,CAAC,UAAU,SAAS,EAAE;CACpC,EAAC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;AACzB;GACC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;GAChG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7F;CACA,EAAC,IAAI,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;GAC9B,IAAI,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvC;CACA,EAAC,WAAW,CAAC,OAAO,CAAC,UAAU,OAAO,EAAE;CACxC,GAAE,IAAI,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAC3B;CACA,GAAE,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;CAChD,GAAE,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;CAChD,GAAE,CAAC,CAAC;CACJ,EAAC,CAAC,CAAC;AACH;EACA,IAAI,YAAY,GAAG,OAAO,CAAC;AAC3B;CACA,CAAA,IAAI,WAAW,GAAG;GACjB,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC/B,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;GACrB,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC7B,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACxB,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACxB,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACzB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;GAClB,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACjC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;GACnB,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;GAC5B,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;GACtB,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,WAAW,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;GAC3B,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;GAC3B,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;GAC3B,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;GACvB,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACjC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC3B,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;GACxB,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;GACrB,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;GACvB,UAAU,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;GACzB,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;GAC/B,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC3B,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;GACxB,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC3B,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,aAAa,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;GAC5B,gBAAgB,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;GAC/B,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;GAC3B,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;GAC5B,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;GACtB,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC7B,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC/B,eAAe,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;GAC9B,eAAe,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;GAC7B,eAAe,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;GAC7B,eAAe,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;GAC9B,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;GAC3B,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;GAC1B,aAAa,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC1B,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC1B,YAAY,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;GAC1B,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC9B,aAAa,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;GAC5B,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;GACxB,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC7B,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;GACrB,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;GAC3B,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACvB,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;GACpB,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;GAC7B,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACvB,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC3B,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC1B,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;GAC1B,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;GACtB,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACxB,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACxB,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC3B,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAChC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;GAC1B,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC/B,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC7B,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,sBAAsB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACvC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC7B,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC9B,eAAe,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;GAC/B,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC/B,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACjC,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACjC,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACjC,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC9B,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;GACnB,WAAW,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;GAC1B,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACxB,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;GACxB,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;GACrB,kBAAkB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACnC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;GACzB,cAAc,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;GAC9B,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC/B,gBAAgB,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;GAChC,iBAAiB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAClC,mBAAmB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;GAClC,iBAAiB,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;GACjC,iBAAiB,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;GACjC,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;GAC7B,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC3B,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC9B,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;GACnB,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC1B,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;GACtB,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;GAC3B,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;GACvB,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;GACzB,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACzB,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAChC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAChC,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAChC,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC7B,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;GACtB,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACvB,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACvB,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC7B,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;GACvB,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;GAC/B,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;GAClB,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,WAAW,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;GAC3B,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;GAC5B,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACzB,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;GAC5B,UAAU,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;GACzB,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC3B,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;GACvB,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACzB,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC1B,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;GAC3B,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACvB,aAAa,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;GAC5B,WAAW,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;GAC3B,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACtB,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;GACrB,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC1B,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;GACvB,WAAW,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;GAC3B,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACzB,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACxB,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACxB,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GAC7B,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;GACvB,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;CAC9B,EAAC,CAAC;AACF;CACA;AACA;AACA;CACA,CAAA,IAAI,WAAW,GAAG;KACf,OAAO,EAAE,OAAO;KAChB,OAAO,EAAE,OAAO;KAChB,MAAM,EAAE,MAAM;KACd,MAAM,EAAE,MAAM;KACd,MAAM,EAAE,MAAM;KACd,QAAQ,EAAE,QAAQ;AACrB;KACG,SAAS,EAAE,SAAS;KACpB,SAAS,EAAE,SAAS;KACpB,UAAU,EAAE,UAAU;KACtB,aAAa,EAAE,aAAa;KAC5B,cAAc,EAAE,cAAc;KAC9B,SAAS,EAAE,SAAS;KACpB,UAAU,EAAE,UAAU;KACtB,SAAS,EAAE,SAAS;KACpB,OAAO,EAAE,OAAO;CACnB,EAAC,CAAC;AACF;EACA,SAAS,OAAO,CAAC,MAAM,EAAE;KACtB,IAAI,CAAC,MAAM,EAAE;CAChB,OAAM,OAAO;MACT;KACD,IAAI,IAAI,IAAI,wBAAwB;SAChC,GAAG,IAAI,uCAAuC;SAC9C,IAAI,GAAG,0FAA0F;SACjG,GAAG,GAAG,4GAA4G;SAClH,OAAO,GAAG,OAAO,CAAC;AACzB;KACG,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SACf,CAAC,GAAG,CAAC;CACZ,QAAO,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;SAC1B,QAAQ,GAAG,EAAE,CAAC;KAClB,IAAI,KAAK,EAAE;CACd,OAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CACvB,OAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CAC1B,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CAC3C,UAAS,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;SAC7C;QACD,IAAI,QAAQ,EAAE;WACX,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,GAAG,QAAQ,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC;SACxE;MACH;UACI,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;CACvC,OAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CAC1B,OAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CACvB,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;WAClC,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;SACvD;QACD,IAAI,QAAQ,EAAE;WACX,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC;SAC7D;MACH;UACI,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;CACxC,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CAC3C,UAAS,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAClC;QACD,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;MAC3B;UACI,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;CACvC,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;WAClC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;SACvD;QACD,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;MAC3B;UACI,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;CAC3C,OAAM,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,aAAa,EAAE;WAC5B,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SACtB;QACD,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,GAAG,EAAE;CAChB,UAAS,OAAO;SACT;MACH;AACJ;CACA,IAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CACxC,OAAM,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;MACjC;CACJ,IAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACf,CAAC,GAAG,CAAC,CAAC;MACR;UACI;QACF,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MACrB;CACJ,IAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;KACX,OAAO,GAAG,CAAC;GACb;AACD;EACA,SAAS,OAAO,CAAC,MAAM,EAAE;KACtB,IAAI,CAAC,MAAM,EAAE;CAChB,OAAM,OAAO;MACT;CACJ,IAAG,IAAI,GAAG,GAAG,0GAA0G,CAAC;KACrH,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KAC9B,IAAI,KAAK,EAAE;QACR,IAAI,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;CACvC,OAAM,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;CAC/C,WAAU,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;CACjD,WAAU,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;CACjD,WAAU,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MACtB;GACH;AACD;EACA,SAAS,MAAM,CAAC,MAAM,EAAE;KACrB,IAAI,CAAC,MAAM,EAAE;CAChB,OAAM,OAAO;MACT;CACJ,IAAG,IAAI,GAAG,GAAG,wGAAwG,CAAC;KACnH,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KAC9B,IAAI,KAAK,EAAE;MACV,IAAI,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;CACrC,OAAM,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;CAC/C,WAAU,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;CACjD,WAAU,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;CACjD,WAAU,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MACtB;GACH;AACD;EACA,SAAS,MAAM,CAAC,MAAM,EAAE;CACxB,IAAG,IAAI,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;KAC3B,OAAO,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;GAClC;AACD;EACA,SAAS,MAAM,CAAC,MAAM,EAAE;CACxB,GAAE,IAAI,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3B,OAAO,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;GACjC;AACD;EACA,SAAS,QAAQ,CAAC,MAAM,EAAE;CAC1B,IAAG,IAAI,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;KAC3B,IAAI,IAAI,EAAE;CACb,OAAM,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;MACjB;CACJ,SAAQ,IAAI,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE;CACpC,OAAM,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;MACjB;CACJ,SAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE;CACnC,OAAM,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;MACjB;GACH;AACD;CACA;CACA,CAAA,SAAS,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE;KACzB,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;KAC7D,OAAO,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAClC,iBAAgB,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAClC,iBAAgB,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAClC;CACA,kBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;qBACd,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;CACjD,oBAAmB,EAAE;CACrB,gBAAe,CAAC;GACf;AACD;CACA,CAAA,SAAS,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE;CAChC,IAAG,IAAI,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;CAC9C,OAAM,OAAO,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;MACjC;KACD,OAAO,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;GAClE;AACD;CACA,CAAA,SAAS,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE;CACjC,IAAG,IAAI,KAAK,KAAK,SAAS,EAAE;CAC5B,OAAM,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;MAChD;KACD,OAAO,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;CAC7D,cAAa,IAAI,GAAG,KAAK,GAAG,GAAG,CAAC;GAC/B;AACD;CACA,CAAA,SAAS,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE;CACpC,IAAG,IAAI,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;CAC9C,OAAM,OAAO,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;MACrC;CACJ,IAAG,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;CACxC,QAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;CACxC,QAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACzC;CACA,IAAG,OAAO,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC;GACnD;AACD;CACA,CAAA,SAAS,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE;CACrC,IAAG,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;CACxC,QAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;CACxC,QAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;KACtC,OAAO,OAAO,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;GACrF;AACD;CACA,CAAA,SAAS,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE;CAChC,IAAG,IAAI,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;CAC9C,OAAM,OAAO,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;MACjC;KACD,OAAO,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;GACpE;AACD;CACA,CAAA,SAAS,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE;CACjC,IAAG,IAAI,KAAK,KAAK,SAAS,EAAE;CAC5B,OAAM,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;MAChD;KACD,OAAO,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK;eACzD,KAAK,GAAG,GAAG,CAAC;GACxB;AACD;CACA;CACA;CACA,CAAA,SAAS,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE;CAC/B,IAAG,IAAI,KAAK,KAAK,SAAS,EAAE;CAC5B,OAAM,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;MAC9C;KACD,OAAO,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;CAChE,eAAc,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,CAAC,GAAG,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;GAC3E;AACD;EACA,SAAS,OAAO,CAAC,GAAG,EAAE;CACtB,GAAE,OAAO,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;GACtC;AACD;CACA;CACA,CAAA,SAAS,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;CAC9B,IAAG,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;GAC3C;AACD;EACA,SAAS,SAAS,CAAC,GAAG,EAAE;CACxB,GAAE,IAAI,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;CAC3C,GAAE,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;GAC3C;AACD;AACA;CACA;EACA,IAAI,YAAY,GAAG,EAAE,CAAC;CACtB,CAAA,KAAK,IAAI,IAAI,IAAI,WAAW,EAAE;KAC3B,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;GACzC;AACD;CACA;AACA;AACA;AACA;CACA,CAAA,IAAI,KAAK,GAAG,UAAU,GAAG,EAAE;CAC3B,EAAC,IAAI,GAAG,YAAY,KAAK,EAAE;IACzB,OAAO,GAAG,CAAC;IACX;CACF,EAAC,IAAI,EAAE,IAAI,YAAY,KAAK,CAAC,EAAE;CAC/B,GAAE,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACtB;AACF;CACA,EAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;GACnB,IAAI,CAAC,MAAM,GAAG;IACb,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACd,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACd,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACd,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACd,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClB,KAAK,EAAE,CAAC;CACV,GAAE,CAAC;AACH;CACA;GACC,IAAI,IAAI,CAAC;CACV,EAAC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;IAC5B,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,IAAI,EAAE;KACT,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KAC5B,MAAM,IAAI,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;KAC3C,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KAC5B,MAAM,IAAI,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;KAC1C,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KAC5B;CACH,GAAE,MAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;IACnC,IAAI,GAAG,GAAG,CAAC;CACb,GAAE,IAAI,IAAI,CAAC,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;KACnD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;CAC/B,IAAG,MAAM,IAAI,IAAI,CAAC,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;KAChE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;CAC/B,IAAG,MAAM,IAAI,IAAI,CAAC,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;KAC5D,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;CAC/B,IAAG,MAAM,IAAI,IAAI,CAAC,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;KAChE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;CAC/B,IAAG,MAAM,IAAI,IAAI,CAAC,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;KAC3D,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KAC7B;IACD;CACF,EAAC,CAAC;AACF;EACA,KAAK,CAAC,SAAS,GAAG;GACjB,OAAO,EAAE,YAAY;CACtB,GAAE,OAAO,IAAI,CAAC,KAAK,CAAC;IAClB;GACD,GAAG,EAAE,YAAY;IAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACvC;GACD,GAAG,EAAE,YAAY;IAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACvC;GACD,GAAG,EAAE,YAAY;IAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACvC;GACD,GAAG,EAAE,YAAY;IAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACvC;GACD,IAAI,EAAE,YAAY;IACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACxC;AACF;GACC,QAAQ,EAAE,YAAY;CACvB,GAAE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IACvB;GACD,QAAQ,EAAE,YAAY;CACvB,GAAE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IACvB;GACD,QAAQ,EAAE,YAAY;CACvB,GAAE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IACvB;GACD,QAAQ,EAAE,YAAY;CACvB,GAAE,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;CAC3B,GAAE,IAAI,MAAM,CAAC,KAAK,KAAK,CAAC,EAAE;CAC1B,IAAG,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;KACzC;CACH,GAAE,OAAO,MAAM,CAAC,GAAG,CAAC;IAClB;GACD,SAAS,EAAE,YAAY;CACxB,GAAE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IACxB;GACD,SAAS,EAAE,YAAY;CACxB,GAAE,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;CAC3B,GAAE,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC;GACD,SAAS,EAAE,YAAY;CACxB,GAAE,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;CAC3B,GAAE,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC;CACF,EAAC,KAAK,EAAE,UAAU,GAAG,EAAE;CACvB,GAAE,IAAI,GAAG,KAAK,SAAS,EAAE;CACzB,IAAG,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;KACzB;IACD,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC7B,OAAO,IAAI,CAAC;IACZ;AACF;CACA,EAAC,GAAG,EAAE,UAAU,GAAG,EAAE;IACnB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACtC;CACF,EAAC,KAAK,EAAE,UAAU,GAAG,EAAE;IACrB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACtC;CACF,EAAC,IAAI,EAAE,UAAU,GAAG,EAAE;IACpB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACtC;CACF,EAAC,GAAG,EAAE,UAAU,GAAG,EAAE;IACnB,IAAI,GAAG,EAAE;KACR,GAAG,IAAI,GAAG,CAAC;KACX,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;KAChC;IACD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACtC;CACF,EAAC,UAAU,EAAE,UAAU,GAAG,EAAE;IAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACtC;CACF,EAAC,SAAS,EAAE,UAAU,GAAG,EAAE;IACzB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACtC;CACF,EAAC,WAAW,EAAE,UAAU,GAAG,EAAE;IAC3B,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACtC;CACF,EAAC,SAAS,EAAE,UAAU,GAAG,EAAE;IACzB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACtC;CACF,EAAC,SAAS,EAAE,UAAU,GAAG,EAAE;IACzB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACtC;CACF,EAAC,KAAK,EAAE,UAAU,GAAG,EAAE;IACrB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACtC;CACF,EAAC,IAAI,EAAE,UAAU,GAAG,EAAE;IACpB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACvC;CACF,EAAC,OAAO,EAAE,UAAU,GAAG,EAAE;IACvB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACvC;CACF,EAAC,MAAM,EAAE,UAAU,GAAG,EAAE;IACtB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACvC;CACF,EAAC,KAAK,EAAE,UAAU,GAAG,EAAE;IACrB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACvC;AACF;GACC,SAAS,EAAE,YAAY;IACtB,OAAO,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC9C;GACD,SAAS,EAAE,YAAY;CACxB,GAAE,OAAO,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjE;GACD,UAAU,EAAE,YAAY;CACzB,GAAE,OAAO,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClE;GACD,aAAa,EAAE,YAAY;CAC5B,GAAE,OAAO,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrE;GACD,SAAS,EAAE,YAAY;CACxB,GAAE,OAAO,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjE;GACD,UAAU,EAAE,YAAY;CACzB,GAAE,OAAO,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClE;GACD,SAAS,EAAE,YAAY;CACxB,GAAE,OAAO,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjE;GACD,OAAO,EAAE,YAAY;CACtB,GAAE,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/D;AACF;GACC,SAAS,EAAE,YAAY;IACtB,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/C;AACF;GACC,UAAU,EAAE,YAAY;CACzB;IACE,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;CAC5B,GAAE,IAAI,GAAG,GAAG,EAAE,CAAC;CACf,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;KACpC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;KACxB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,IAAI,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,KAAK,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC;KACpF;IACD,OAAO,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3D;AACF;CACA,EAAC,QAAQ,EAAE,UAAU,MAAM,EAAE;CAC7B;CACA,GAAE,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;CAC/B,GAAE,IAAI,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;CACjC,GAAE,IAAI,IAAI,GAAG,IAAI,EAAE;KAChB,OAAO,CAAC,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC;KACrC;IACD,OAAO,CAAC,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC;IACrC;AACF;CACA,EAAC,KAAK,EAAE,UAAU,MAAM,EAAE;IACxB,IAAI,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;CAC5C,GAAE,IAAI,aAAa,IAAI,GAAG,EAAE;KACzB,OAAO,KAAK,CAAC;KACb;AACH;IACE,OAAO,CAAC,aAAa,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC;IAC1C;AACF;GACC,IAAI,EAAE,YAAY;CACnB;IACE,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IAC1B,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC;CAChE,GAAE,OAAO,GAAG,GAAG,GAAG,CAAC;IACjB;AACF;GACC,KAAK,EAAE,YAAY;CACpB,GAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB;AACF;GACC,MAAM,EAAE,YAAY;CACrB,GAAE,IAAI,GAAG,GAAG,EAAE,CAAC;CACf,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CAC9B,IAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KAClC;IACD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC;IACZ;AACF;CACA,EAAC,OAAO,EAAE,UAAU,KAAK,EAAE;IACzB,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IAC1B,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACzB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC;IACZ;AACF;CACA,EAAC,MAAM,EAAE,UAAU,KAAK,EAAE;IACxB,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IAC1B,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACzB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC;IACZ;AACF;CACA,EAAC,QAAQ,EAAE,UAAU,KAAK,EAAE;IAC1B,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IAC1B,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACzB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC;IACZ;AACF;CACA,EAAC,UAAU,EAAE,UAAU,KAAK,EAAE;IAC5B,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IAC1B,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACzB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC;IACZ;AACF;CACA,EAAC,MAAM,EAAE,UAAU,KAAK,EAAE;IACxB,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IAC1B,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACzB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC;IACZ;AACF;CACA,EAAC,OAAO,EAAE,UAAU,KAAK,EAAE;IACzB,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IAC1B,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACzB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC;IACZ;AACF;GACC,SAAS,EAAE,YAAY;IACtB,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;CAC5B;IACE,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CACzD,GAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACvC,OAAO,IAAI,CAAC;IACZ;AACF;CACA,EAAC,OAAO,EAAE,UAAU,KAAK,EAAE;IACzB,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;CAChC,GAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;IACjD,OAAO,IAAI,CAAC;IACZ;AACF;CACA,EAAC,OAAO,EAAE,UAAU,KAAK,EAAE;IACzB,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;CAChC,GAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;IACjD,OAAO,IAAI,CAAC;IACZ;AACF;CACA,EAAC,MAAM,EAAE,UAAU,OAAO,EAAE;IAC1B,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;CAC5B,GAAE,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,GAAG,CAAC;CACrC,GAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACnC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC;IACZ;AACF;CACA;CACA;CACA;CACA;CACA,EAAC,GAAG,EAAE,UAAU,UAAU,EAAE,MAAM,EAAE;CACpC,GAAE,IAAI,MAAM,GAAG,IAAI,CAAC;CACpB,GAAE,IAAI,MAAM,GAAG,UAAU,CAAC;IACxB,IAAI,CAAC,GAAG,MAAM,KAAK,SAAS,GAAG,GAAG,GAAG,MAAM,CAAC;AAC9C;IACE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACpB,GAAE,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;AAC1C;CACA,GAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;CACpE,GAAE,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;AAClB;CACA,GAAE,OAAO,IAAI;CACb,KAAI,GAAG;CACP,KAAI,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE;CACzC,KAAI,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE;CAC7C,KAAI,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE;MACvC;CACJ,KAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvD;AACF;GACC,MAAM,EAAE,YAAY;CACrB,GAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB;AACF;GACC,KAAK,EAAE,YAAY;CACpB;CACA;CACA;CACA;CACA,GAAE,IAAI,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;CAC3B,GAAE,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;CAC3B,GAAE,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;CAC7B,GAAE,IAAI,KAAK,EAAE,IAAI,CAAC;AAClB;CACA,GAAE,KAAK,IAAI,IAAI,IAAI,MAAM,EAAE;CAC3B,IAAG,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;CACpC,KAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;MACrB,IAAI,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CACrC,KAAI,IAAI,IAAI,KAAK,gBAAgB,EAAE;OAC9B,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACnC,MAAK,MAAM,IAAI,IAAI,KAAK,iBAAiB,EAAE;CAC3C,MAAK,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;CAC1B,MAAK,MAAM;OACN,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;OAChD;MACD;KACD;AACH;IACE,OAAO,MAAM,CAAC;IACd;CACF,EAAC,CAAC;AACF;CACA,CAAA,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG;GACxB,GAAG,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC;GAC7B,GAAG,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,CAAC;GACvC,GAAG,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC;GACnC,GAAG,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC;GACtC,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC;CAC7C,EAAC,CAAC;AACF;CACA,CAAA,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG;GACvB,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACpB,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACpB,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACpB,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;GACpB,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;CAC3B,EAAC,CAAC;AACF;CACA,CAAA,KAAK,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,KAAK,EAAE;CAC7C,EAAC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;CAC1B,EAAC,IAAI,IAAI,GAAG,EAAE,CAAC;AACf;CACA,EAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CACxC,GAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC;AACF;CACA,EAAC,IAAI,MAAM,CAAC,KAAK,KAAK,CAAC,EAAE;CACzB,GAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;IACtB;AACF;CACA;GACC,OAAO,IAAI,CAAC;CACb,EAAC,CAAC;AACF;EACA,KAAK,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,KAAK,EAAE,IAAI,EAAE;CACnD,EAAC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;CAC1B,EAAC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;CAC1B,EAAC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;CACxB,EAAC,IAAI,KAAK,GAAG,CAAC,CAAC;GACd,IAAI,CAAC,CAAC;AACP;CACA,EAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACnB;CACA,EAAC,IAAI,KAAK,KAAK,OAAO,EAAE;IACtB,KAAK,GAAG,IAAI,CAAC;CACf,GAAE,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;CACzB;CACA,GAAE,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5C,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;CAC7B,GAAE,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;CACjD;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CACrC,IAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;KACzC;AACH;CACA,GAAE,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;CACjB,GAAE,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;CAClD;CACA,GAAE,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5B;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CACrC,IAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAClC;AACH;CACA,GAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACnB;AACF;GACC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,KAAK,SAAS,GAAG,MAAM,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC;AACvF;CACA,EAAC,IAAI,KAAK,KAAK,OAAO,EAAE;IACtB,OAAO,KAAK,CAAC;IACb;AACF;GACC,IAAI,MAAM,CAAC;AACZ;CACA;CACA,EAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CACpC,GAAE,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACpE,GAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACtC;AACF;CACA;CACA,EAAC,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE;CAC3B,GAAE,IAAI,KAAK,KAAK,KAAK,EAAE;CACvB,IAAG,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;KAC1D;IACD;AACF;GACC,OAAO,IAAI,CAAC;CACb,EAAC,CAAC;AACF;EACA,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE,IAAI,EAAE;CAClD,EAAC,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB;CACA,EAAC,IAAI,IAAI,KAAK,SAAS,EAAE;CACzB;CACA,GAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC7B;AACF;CACA;CACA,EAAC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;CAC/B,GAAE,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC;AACF;GACC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;GAC5B,OAAO,IAAI,CAAC;CACb,EAAC,CAAC;AACF;EACA,KAAK,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;GACzD,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;CAClC,EAAC,IAAI,GAAG,KAAK,SAAS,EAAE;CACxB;CACA,GAAE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;IACtB,MAAM,IAAI,GAAG,KAAK,OAAO,CAAC,KAAK,CAAC,EAAE;CACpC;IACE,OAAO,IAAI,CAAC;IACZ;AACF;CACA;CACA,EAAC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;GACrB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAChC;GACC,OAAO,IAAI,CAAC;CACb,EAAC,CAAC;AACF;CACA,CAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;CACnC,EAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;GACrB;AACD;EACA,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB;EACA,SAAS,UAAU,CAAC,GAAG,EAAE;CACzB,EAAC,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;GACrE;AACD;CACA;CACA;CACA;CACA,CAAA,IAAI,OAAO,GAAG;CACd;CACA;CACA;GACC,IAAI,EAAE,WAAW,EAAE;AACpB;CACA;CACA;CACA;CACA;CACA;GACC,GAAG,GAAG,WAAW;CAClB,GAAE,IAAI,EAAE,GAAG,CAAC,CAAC;CACb,GAAE,OAAO,WAAW;KACjB,OAAO,EAAE,EAAE,CAAC;CACf,IAAG,CAAC;CACJ,GAAE,EAAE,CAAC;AACL;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,aAAa,EAAE,SAAS,KAAK,EAAE;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,CAAC;IACtD;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,OAAO,EAAE,SAAS,KAAK,EAAE;IACxB,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;KAC1C,OAAO,IAAI,CAAC;KACZ;CACH,GAAE,IAAI,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;KACpE,OAAO,IAAI,CAAC;KACZ;IACD,OAAO,KAAK,CAAC;IACb;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,QAAQ,EAAE,SAAS,KAAK,EAAE;CAC3B,GAAE,OAAO,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,iBAAiB,CAAC;IACrF;AACF;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,QAAQ,EAAE,SAAS,KAAK,EAAE;CAC3B,GAAE,OAAO,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjF;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,cAAc,EAAE,SAAS,KAAK,EAAE,YAAY,EAAE;IAC7C,OAAO,OAAO,KAAK,KAAK,WAAW,GAAG,YAAY,GAAG,KAAK,CAAC;IAC3D;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACC,qBAAqB,EAAE,SAAS,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE;IAC3D,OAAO,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE,YAAY,CAAC,CAAC;IAC3F;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACC,QAAQ,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;IACrC,IAAI,EAAE,IAAI,OAAO,EAAE,CAAC,IAAI,KAAK,UAAU,EAAE;KACxC,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;KAC/B;IACD;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACC,IAAI,EAAE,SAAS,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;CAChD,GAAE,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC;CACnB,GAAE,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;CACjC,IAAG,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC;KACtB,IAAI,OAAO,EAAE;CAChB,KAAI,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;CACnC,MAAK,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;OACjC;CACL,KAAI,MAAM;MACN,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;CAC9B,MAAK,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;OACjC;MACD;KACD,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;KACtC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;CAChC,IAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;KAClB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;CAC7B,KAAI,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;MAC7C;KACD;IACD;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE;IAC7B,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC;AACtB;CACA,GAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM,EAAE;KAC1C,OAAO,KAAK,CAAC;KACb;AACH;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CAC/C,IAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;CACd,IAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACd;KACG,IAAI,EAAE,YAAY,KAAK,IAAI,EAAE,YAAY,KAAK,EAAE;MAC/C,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;OACjC,OAAO,KAAK,CAAC;OACb;CACL,KAAI,MAAM,IAAI,EAAE,KAAK,EAAE,EAAE;CACzB;MACI,OAAO,KAAK,CAAC;MACb;KACD;AACH;IACE,OAAO,IAAI,CAAC;IACZ;AACF;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,KAAK,EAAE,SAAS,MAAM,EAAE;CACzB,GAAE,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;KAC5B,OAAO,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACjC;AACH;CACA,GAAE,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;KAC7B,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KACnC,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CAClC,IAAG,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;CAC1B,IAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AACb;CACA,IAAG,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;MACrB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MACjD;AACJ;KACG,OAAO,MAAM,CAAC;KACd;AACH;IACE,OAAO,MAAM,CAAC;IACd;AACF;CACA;CACA;CACA;CACA;CACA;GACC,OAAO,EAAE,SAAS,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;CACjD,GAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;CACxB;CACA;CACA,IAAG,OAAO;KACP;AACH;CACA,GAAE,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;CACzB,GAAE,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACzB;CACA,GAAE,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;KACrD,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;CACtC,IAAG,MAAM;KACN,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KAClC;IACD;AACF;CACA;CACA;CACA;CACA;GACC,SAAS,EAAE,SAAS,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE;CAC1C,GAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;CACxB;CACA;CACA,IAAG,OAAO;KACP;AACH;CACA,GAAE,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;CACzB,GAAE,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACzB;CACA,GAAE,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;KACrD,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC5B,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;KACvC,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KAClC;IACD;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACC,KAAK,EAAE,SAAS,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;CAC1C,GAAE,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC;CAC5D,GAAE,IAAI,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAC1B,IAAI,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9B;IACE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;KAC9B,OAAO,MAAM,CAAC;KACd;AACH;CACA,GAAE,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;IACxB,KAAK,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;AAC5C;IACE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CAC7B,IAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;KACpB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;CAClC,KAAI,SAAS;MACT;AACJ;KACG,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CAC9B,IAAG,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CAClD,KAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;MACxC;KACD;AACH;IACE,OAAO,MAAM,CAAC;IACd;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,OAAO,EAAE,SAAS,MAAM,EAAE,MAAM,EAAE;CACnC,GAAE,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAClE;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,SAAS,MAAM,EAAE;CAC3C,GAAE,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE;KACzD,MAAM,EAAE,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;MAC/B,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;MACpB;CACJ,IAAG,CAAC,CAAC;IACH;AACF;CACA;CACA;CACA;CACA,EAAC,QAAQ,EAAE,SAAS,UAAU,EAAE;CAChC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,YAAY,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,WAAW,GAAG,WAAW;KACjH,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;CACpC,IAAG,CAAC;AACJ;IACE,IAAI,SAAS,GAAG,WAAW;CAC7B,IAAG,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC;CACnC,IAAG,CAAC;AACJ;CACA,GAAE,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC;CACrC,GAAE,YAAY,CAAC,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;CAC3C,GAAE,YAAY,CAAC,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;AACzC;IACE,IAAI,UAAU,EAAE;KACf,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;KACnD;AACH;CACA,GAAE,YAAY,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC;IACtC,OAAO,YAAY,CAAC;IACpB;AACF;GACC,WAAW,EAAE,SAAS,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE;CACxD,GAAE,IAAI,KAAK,KAAK,SAAS,EAAE;KACxB,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,QAAQ;CACxC,KAAI,+BAA+B,GAAG,OAAO,GAAG,WAAW,CAAC,CAAC;KAC1D;IACD;CACF,EAAC,CAAC;AACF;EACA,IAAI,YAAY,GAAG,OAAO,CAAC;AAC3B;CACA;AACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;AACxC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;EACA,OAAO,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE;CACnD,EAAC,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;CAC7D,EAAC,CAAC;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,OAAO,CAAC,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC;AACnD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,OAAO,CAAC,wBAAwB,GAAG,OAAO,CAAC,qBAAqB,CAAC;AACjE;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,IAAI,OAAO,GAAG;CACd,EAAC,MAAM,EAAE,SAAS,CAAC,EAAE;IACnB,OAAO,CAAC,CAAC;IACT;AACF;CACA,EAAC,UAAU,EAAE,SAAS,CAAC,EAAE;CACzB,GAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACb;AACF;CACA,EAAC,WAAW,EAAE,SAAS,CAAC,EAAE;IACxB,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACpB;AACF;CACA,EAAC,aAAa,EAAE,SAAS,CAAC,EAAE;CAC5B,GAAE,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE;CACtB,IAAG,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;KACnB;CACH,GAAE,OAAO,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC;AACF;CACA,EAAC,WAAW,EAAE,SAAS,CAAC,EAAE;CAC1B,GAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjB;AACF;CACA,EAAC,YAAY,EAAE,SAAS,CAAC,EAAE;CAC3B,GAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B;AACF;CACA,EAAC,cAAc,EAAE,SAAS,CAAC,EAAE;CAC7B,GAAE,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE;KACnB,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KACvB;CACH,GAAE,OAAO,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC;AACF;CACA,EAAC,WAAW,EAAE,SAAS,CAAC,EAAE;IACxB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrB;AACF;CACA,EAAC,YAAY,EAAE,SAAS,CAAC,EAAE;CAC3B,GAAE,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC;AACF;CACA,EAAC,cAAc,EAAE,SAAS,CAAC,EAAE;CAC7B,GAAE,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE;KACnB,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC3B;CACH,GAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC;AACF;CACA,EAAC,WAAW,EAAE,SAAS,CAAC,EAAE;IACxB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB;AACF;CACA,EAAC,YAAY,EAAE,SAAS,CAAC,EAAE;CAC3B,GAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvC;AACF;CACA,EAAC,cAAc,EAAE,SAAS,CAAC,EAAE;CAC7B,GAAE,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE;CACtB,IAAG,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC/B;CACH,GAAE,OAAO,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C;AACF;CACA,EAAC,UAAU,EAAE,SAAS,CAAC,EAAE;CACzB,GAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACxC;AACF;CACA,EAAC,WAAW,EAAE,SAAS,CAAC,EAAE;CAC1B,GAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACnC;AACF;CACA,EAAC,aAAa,EAAE,SAAS,CAAC,EAAE;CAC5B,GAAE,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C;AACF;CACA,EAAC,UAAU,EAAE,SAAS,CAAC,EAAE;IACvB,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjD;AACF;CACA,EAAC,WAAW,EAAE,SAAS,CAAC,EAAE;IACxB,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACjD;AACF;CACA,EAAC,aAAa,EAAE,SAAS,CAAC,EAAE;CAC5B,GAAE,IAAI,CAAC,KAAK,CAAC,EAAE;KACZ,OAAO,CAAC,CAAC;KACT;CACH,GAAE,IAAI,CAAC,KAAK,CAAC,EAAE;KACZ,OAAO,CAAC,CAAC;KACT;CACH,GAAE,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE;CACtB,IAAG,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACvC;CACH,GAAE,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C;AACF;CACA,EAAC,UAAU,EAAE,SAAS,CAAC,EAAE;CACzB,GAAE,IAAI,CAAC,IAAI,CAAC,EAAE;KACX,OAAO,CAAC,CAAC;KACT;CACH,GAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC;AACF;CACA,EAAC,WAAW,EAAE,SAAS,CAAC,EAAE;CAC1B,GAAE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC;AACF;CACA,EAAC,aAAa,EAAE,SAAS,CAAC,EAAE;CAC5B,GAAE,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE;CACtB,IAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;KACzC;CACH,GAAE,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C;AACF;CACA,EAAC,aAAa,EAAE,SAAS,CAAC,EAAE;CAC5B,GAAE,IAAI,CAAC,GAAG,OAAO,CAAC;CAClB,GAAE,IAAI,CAAC,GAAG,CAAC,CAAC;CACZ,GAAE,IAAI,CAAC,GAAG,CAAC,CAAC;CACZ,GAAE,IAAI,CAAC,KAAK,CAAC,EAAE;KACZ,OAAO,CAAC,CAAC;KACT;CACH,GAAE,IAAI,CAAC,KAAK,CAAC,EAAE;KACZ,OAAO,CAAC,CAAC;KACT;IACD,IAAI,CAAC,CAAC,EAAE;KACP,CAAC,GAAG,GAAG,CAAC;KACR;CACH,GAGS;CACT,IAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;KACzC;CACH,GAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjF;AACF;CACA,EAAC,cAAc,EAAE,SAAS,CAAC,EAAE;CAC7B,GAAE,IAAI,CAAC,GAAG,OAAO,CAAC;CAClB,GAAE,IAAI,CAAC,GAAG,CAAC,CAAC;CACZ,GAAE,IAAI,CAAC,GAAG,CAAC,CAAC;CACZ,GAAE,IAAI,CAAC,KAAK,CAAC,EAAE;KACZ,OAAO,CAAC,CAAC;KACT;CACH,GAAE,IAAI,CAAC,KAAK,CAAC,EAAE;KACZ,OAAO,CAAC,CAAC;KACT;IACD,IAAI,CAAC,CAAC,EAAE;KACP,CAAC,GAAG,GAAG,CAAC;KACR;CACH,GAGS;CACT,IAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;KACzC;CACH,GAAE,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC5E;AACF;CACA,EAAC,gBAAgB,EAAE,SAAS,CAAC,EAAE;CAC/B,GAAE,IAAI,CAAC,GAAG,OAAO,CAAC;CAClB,GAAE,IAAI,CAAC,GAAG,CAAC,CAAC;CACZ,GAAE,IAAI,CAAC,GAAG,CAAC,CAAC;CACZ,GAAE,IAAI,CAAC,KAAK,CAAC,EAAE;KACZ,OAAO,CAAC,CAAC;KACT;CACH,GAAE,IAAI,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE;KACrB,OAAO,CAAC,CAAC;KACT;IACD,IAAI,CAAC,CAAC,EAAE;KACP,CAAC,GAAG,IAAI,CAAC;KACT;CACH,GAGS;CACT,IAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;KACzC;CACH,GAAE,IAAI,CAAC,GAAG,CAAC,EAAE;CACb,IAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACvF;CACH,GAAE,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACzF;CACF,EAAC,UAAU,EAAE,SAAS,CAAC,EAAE;CACzB,GAAE,IAAI,CAAC,GAAG,OAAO,CAAC;CAClB,GAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC;AACF;CACA,EAAC,WAAW,EAAE,SAAS,CAAC,EAAE;CAC1B,GAAE,IAAI,CAAC,GAAG,OAAO,CAAC;IAChB,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/C;AACF;CACA,EAAC,aAAa,EAAE,SAAS,CAAC,EAAE;CAC5B,GAAE,IAAI,CAAC,GAAG,OAAO,CAAC;CAClB,GAAE,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE;KACnB,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACtD;IACD,OAAO,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACjE;AACF;CACA,EAAC,YAAY,EAAE,SAAS,CAAC,EAAE;IACzB,OAAO,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC;AACF;CACA,EAAC,aAAa,EAAE,SAAS,CAAC,EAAE;CAC5B,GAAE,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE;CACtB,IAAG,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;KACtB;CACH,GAAE,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE;CACtB,IAAG,OAAO,MAAM,IAAI,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;KAC/C;CACH,GAAE,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE;CACxB,IAAG,OAAO,MAAM,IAAI,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;KAClD;CACH,GAAE,OAAO,MAAM,IAAI,CAAC,KAAK,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;IACrD;AACF;CACA,EAAC,eAAe,EAAE,SAAS,CAAC,EAAE;CAC9B,GAAE,IAAI,CAAC,GAAG,GAAG,EAAE;KACZ,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;KACzC;CACH,GAAE,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;IACpD;CACF,EAAC,CAAC;AACF;CACA,CAAA,IAAI,cAAc,GAAG;GACpB,OAAO,EAAE,OAAO;CACjB,EAAC,CAAC;AACF;CACA;AACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,YAAY,CAAC,aAAa,GAAG,OAAO,CAAC;AACrC;CACA,CAAA,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;CACjB,CAAA,IAAI,WAAW,GAAG,EAAE,GAAG,GAAG,CAAC;CAC3B,CAAA,IAAI,SAAS,GAAG,EAAE,GAAG,CAAC,CAAC;CACvB,CAAA,IAAI,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;CACrB,CAAA,IAAI,UAAU,GAAG,EAAE,GAAG,CAAC,CAAC;CACxB,CAAA,IAAI,aAAa,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC/B;CACA;CACA;CACA;CACA,CAAA,IAAI,SAAS,GAAG;CAChB;CACA;CACA;CACA;CACA,EAAC,KAAK,EAAE,SAAS,KAAK,EAAE;CACxB,GAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrD;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,WAAW,EAAE,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;IACvD,IAAI,MAAM,EAAE;CACd,IAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;CACnD,IAAG,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;CACpB,IAAG,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;KAChB,IAAI,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;KAC1B,IAAI,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;AAC/B;KACG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;KACnB,IAAI,IAAI,GAAG,KAAK,IAAI,GAAG,GAAG,MAAM,EAAE;CACrC,KAAI,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;CACzC,KAAI,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;CACxC,KAAI,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;CAC1C,KAAI,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;CAC1C,KAAI,MAAM,IAAI,IAAI,GAAG,KAAK,EAAE;MACxB,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;CACxB,KAAI,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;CAC9C,KAAI,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC;CACjD,KAAI,MAAM,IAAI,GAAG,GAAG,MAAM,EAAE;CAC5B,KAAI,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;CAClC,KAAI,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;CACpC,KAAI,MAAM;CACV,KAAI,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;MAC/B;CACJ,IAAG,GAAG,CAAC,SAAS,EAAE,CAAC;KAChB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACpB,IAAG,MAAM;CACT,IAAG,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;KAC9B;IACD;AACF;CACA,EAAC,SAAS,EAAE,SAAS,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE;IACvD,IAAI,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC;IAC/C,IAAI,GAAG,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,WAAW,CAAC;AAC1C;CACA,GAAE,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;CAC1C,IAAG,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;KACxB,IAAI,IAAI,KAAK,2BAA2B,IAAI,IAAI,KAAK,4BAA4B,EAAE;CACtF,KAAI,GAAG,CAAC,IAAI,EAAE,CAAC;MACX,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACxB,KAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;CACpB,KAAI,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACzF,KAAI,GAAG,CAAC,OAAO,EAAE,CAAC;CAClB,KAAI,OAAO;MACP;KACD;AACH;IACE,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE;CACpC,IAAG,OAAO;KACP;AACH;CACA,GAAE,GAAG,CAAC,SAAS,EAAE,CAAC;AAClB;CACA,GAAE,QAAQ,KAAK;CACf;IACE;CACF,IAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;CACvC,IAAG,GAAG,CAAC,SAAS,EAAE,CAAC;CACnB,IAAG,MAAM;CACT,GAAE,KAAK,UAAU;KACd,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;KACnE,GAAG,IAAI,aAAa,CAAC;KACrB,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;KACnE,GAAG,IAAI,aAAa,CAAC;KACrB,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;CACtE,IAAG,GAAG,CAAC,SAAS,EAAE,CAAC;CACnB,IAAG,MAAM;CACT,GAAE,KAAK,aAAa;CACpB;CACA;CACA;CACA;CACA;CACA;CACA;CACA,IAAG,YAAY,GAAG,MAAM,GAAG,KAAK,CAAC;CACjC,IAAG,IAAI,GAAG,MAAM,GAAG,YAAY,CAAC;CAChC,IAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC;CAC/C,IAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC;KAC5C,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,YAAY,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC;KACzE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,YAAY,EAAE,GAAG,GAAG,OAAO,EAAE,GAAG,CAAC,CAAC;KACpE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC;KACpE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,YAAY,EAAE,GAAG,GAAG,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;CAC5E,IAAG,GAAG,CAAC,SAAS,EAAE,CAAC;CACnB,IAAG,MAAM;CACT,GAAE,KAAK,MAAM;KACV,IAAI,CAAC,QAAQ,EAAE;CAClB,KAAI,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;MAC7B,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;CACrD,KAAI,MAAM;MACN;KACD,GAAG,IAAI,UAAU,CAAC;CACrB;CACA,GAAE,KAAK,SAAS;KACb,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;KACjC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;CACpC,IAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC;CACxC,IAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC;CACxC,IAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC;CACxC,IAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC;CACxC,IAAG,GAAG,CAAC,SAAS,EAAE,CAAC;CACnB,IAAG,MAAM;CACT,GAAE,KAAK,UAAU;KACd,GAAG,IAAI,UAAU,CAAC;CACrB;CACA,GAAE,KAAK,OAAO;KACX,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;KACjC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;CACpC,IAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC;CACxC,IAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC;CACxC,IAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC;CACxC,IAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC;CACxC,IAAG,MAAM;CACT,GAAE,KAAK,MAAM;KACV,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;KACjC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;CACpC,IAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC;CACxC,IAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC;CACxC,IAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC;CACxC,IAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC;KACrC,GAAG,IAAI,UAAU,CAAC;KAClB,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;KACjC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;CACpC,IAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC;CACxC,IAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC;CACxC,IAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC;CACxC,IAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC;CACxC,IAAG,MAAM;CACT,GAAE,KAAK,MAAM;KACV,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;KACjC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;CACpC,IAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC;CACxC,IAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC;CACxC,IAAG,MAAM;CACT,GAAE,KAAK,MAAM;KACV,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACjB,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;CACtE,IAAG,MAAM;KACN;AACH;CACA,GAAE,GAAG,CAAC,IAAI,EAAE,CAAC;CACb,GAAE,GAAG,CAAC,MAAM,EAAE,CAAC;IACb;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,cAAc,EAAE,SAAS,KAAK,EAAE,IAAI,EAAE;CACvC,GAAE,IAAI,OAAO,GAAG,IAAI,CAAC;AACrB;CACA,GAAE,OAAO,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,OAAO,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,OAAO;CACxE,IAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,OAAO,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;IACjE;AACF;CACA,EAAC,QAAQ,EAAE,SAAS,GAAG,EAAE,IAAI,EAAE;CAC/B,GAAE,GAAG,CAAC,IAAI,EAAE,CAAC;CACb,GAAE,GAAG,CAAC,SAAS,EAAE,CAAC;CAClB,GAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;CAChF,GAAE,GAAG,CAAC,IAAI,EAAE,CAAC;IACX;AACF;CACA,EAAC,UAAU,EAAE,SAAS,GAAG,EAAE;CAC3B,GAAE,GAAG,CAAC,OAAO,EAAE,CAAC;IACd;AACF;GACC,MAAM,EAAE,SAAS,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;CAC/C,GAAE,IAAI,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC;IACjC,IAAI,OAAO,EAAE;CACf,IAAG,IAAI,OAAO,KAAK,QAAQ,EAAE;CAC7B,KAAI,IAAI,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC;CACjD,KAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;CACvD,KAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,GAAG,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;CACvD,KAAI,MAAM,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,IAAI,MAAM,OAAO,KAAK,OAAO,IAAI,IAAI,CAAC,EAAE;CAC/E,KAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CACrC,KAAI,MAAM;CACV,KAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;MACjC;CACJ,IAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAClC,IAAG,OAAO;KACP;AACH;CACA,GAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;CACvB,IAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAClC,IAAG,OAAO;KACP;AACH;IACE,GAAG,CAAC,aAAa;KAChB,IAAI,GAAG,QAAQ,CAAC,qBAAqB,GAAG,QAAQ,CAAC,iBAAiB;KAClE,IAAI,GAAG,QAAQ,CAAC,qBAAqB,GAAG,QAAQ,CAAC,iBAAiB;KAClE,IAAI,GAAG,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,qBAAqB;KAC9D,IAAI,GAAG,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,qBAAqB;KAC9D,MAAM,CAAC,CAAC;CACX,IAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACX;CACF,EAAC,CAAC;AACF;EACA,IAAI,cAAc,GAAG,SAAS,CAAC;AAC/B;CACA;AACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,YAAY,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;AACrC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,YAAY,CAAC,oBAAoB,GAAG,SAAS,GAAG,EAAE;CAClD,EAAC,GAAG,CAAC,SAAS,EAAE,CAAC;GAChB,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;CACnD,EAAC,CAAC;AACF;CACA,CAAA,IAAI,QAAQ,GAAG;CACf;CACA;CACA;CACA,EAAC,IAAI,EAAE,SAAS,KAAK,EAAE,MAAM,EAAE;IAC7B,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACrE;CACF,EAAC,CAAC;AACF;CACA;CACA;CACA,CAAA,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE;GACvB,YAAY,EAAE,iBAAiB;GAC/B,gBAAgB,EAAE,MAAM;GACxB,iBAAiB,EAAE,oDAAoD;GACvE,eAAe,EAAE,EAAE;GACnB,gBAAgB,EAAE,QAAQ;GAC1B,iBAAiB,EAAE,GAAG;GACtB,SAAS,EAAE,IAAI;CAChB,EAAC,CAAC,CAAC;AACH;EACA,IAAI,aAAa,GAAG,QAAQ,CAAC;AAC7B;CACA,CAAA,IAAI,cAAc,GAAG,YAAY,CAAC,cAAc,CAAC;AACjD;CACA;CACA;CACA;CACA;CACA;CACA;EACA,SAAS,YAAY,CAAC,IAAI,EAAE;GAC3B,IAAI,CAAC,IAAI,IAAI,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;IAC9F,OAAO,IAAI,CAAC;IACZ;AACF;CACA,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,EAAE;OACtC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC;CAC1C,KAAI,IAAI,CAAC,IAAI,GAAG,KAAK;MACjB,IAAI,CAAC,MAAM,CAAC;GACf;AACD;CACA;CACA;CACA;CACA;CACA,CAAA,IAAI,eAAe,GAAG;CACtB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,YAAY,EAAE,SAAS,KAAK,EAAE,IAAI,EAAE;CACrC,GAAE,IAAI,OAAO,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACzE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;CAC3C,IAAG,OAAO,IAAI,GAAG,GAAG,CAAC;KAClB;AACH;CACA,GAAE,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACtB;CACA,GAAE,QAAQ,OAAO,CAAC,CAAC,CAAC;CACpB,GAAE,KAAK,IAAI;KACR,OAAO,KAAK,CAAC;CAChB,GAAE,KAAK,GAAG;KACP,KAAK,IAAI,GAAG,CAAC;CAChB,IAAG,MAAM;KACN;AACH;CACA,GAAE,OAAO,IAAI,GAAG,KAAK,CAAC;IACpB;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,SAAS,EAAE,SAAS,KAAK,EAAE;IAC1B,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACjB;CACA,GAAE,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;KACjC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;KACpB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;KACtB,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;KACvB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;CACxB,IAAG,MAAM;CACT,IAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;KAC5B;AACH;CACA,GAAE,OAAO;KACN,GAAG,EAAE,CAAC;KACN,KAAK,EAAE,CAAC;KACR,MAAM,EAAE,CAAC;KACT,IAAI,EAAE,CAAC;CACV,IAAG,MAAM,EAAE,CAAC,GAAG,CAAC;CAChB,IAAG,KAAK,EAAE,CAAC,GAAG,CAAC;CACf,IAAG,CAAC;IACF;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,UAAU,EAAE,SAAS,OAAO,EAAE;CAC/B,GAAE,IAAI,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC;CAC5C,GAAE,IAAI,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC;IAC5E,IAAI,IAAI,GAAG;KACV,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE,cAAc,CAAC,iBAAiB,CAAC;KAC5E,UAAU,EAAE,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE,cAAc,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC;KACzH,IAAI,EAAE,IAAI;KACV,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,gBAAgB,CAAC;KACzE,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,EAAE;CACb,IAAG,CAAC;AACJ;IACE,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,IAAI,CAAC;IACZ;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACC,OAAO,EAAE,SAAS,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;CACjD,GAAE,IAAI,SAAS,GAAG,IAAI,CAAC;CACvB,GAAE,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC;AACrB;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACnD,IAAG,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;CACrB,IAAG,IAAI,KAAK,KAAK,SAAS,EAAE;CAC5B,KAAI,SAAS;MACT;KACD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;CAC7D,KAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;MACvB,SAAS,GAAG,KAAK,CAAC;MAClB;KACD,IAAI,KAAK,KAAK,SAAS,IAAI,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;CAC3D,KAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;MACrB,SAAS,GAAG,KAAK,CAAC;MAClB;CACJ,IAAG,IAAI,KAAK,KAAK,SAAS,EAAE;CAC5B,KAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;CAC5B,MAAK,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;OACvB;MACD,OAAO,KAAK,CAAC;MACb;KACD;IACD;CACF,EAAC,CAAC;AACF;CACA;CACA;CACA;CACA;CACA,CAAA,IAAI,SAAS,GAAG;CAChB;CACA;CACA;CACA;CACA,EAAC,UAAU,EAAE,SAAS,KAAK,EAAE;CAC7B,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,CAAC,CAAC;AACR;IACE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;CAC7B,IAAG,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE;CACxB,KAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MACf,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;MACvB;KACD;CACH,GAAE,IAAI,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE;CAC3B,IAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAClB;AACH;IACE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;CAC7B,IAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CAChB,IAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IACT,OAAO,MAAM,CAAC;IACd;AACF;GACC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,EAAE;CAClC,GAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;CAC3C;CACA;IACE,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;CACvC,GAAE,IAAI,WAAW,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AAClD;CACA,GAAE,OAAO,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC1C;CACF,EAAC,CAAC;AACF;EACA,IAAI,YAAY,GAAG,SAAS,CAAC;AAC7B;CACA;AACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,YAAY,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;AACrC;CACA,CAAA,IAAI,aAAa,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE;CAC3C,EAAC,OAAO;CACR,GAAE,CAAC,EAAE,SAAS,CAAC,EAAE;KACd,OAAO,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;KACjC;CACH,GAAE,QAAQ,EAAE,SAAS,CAAC,EAAE;KACrB,KAAK,GAAG,CAAC,CAAC;KACV;CACH,GAAE,SAAS,EAAE,SAAS,KAAK,EAAE;CAC7B,IAAG,IAAI,KAAK,KAAK,QAAQ,EAAE;MACvB,OAAO,KAAK,CAAC;MACb;KACD,OAAO,KAAK,KAAK,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;KAC5C;CACH,GAAE,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE;CAC5B,IAAG,OAAO,CAAC,GAAG,KAAK,CAAC;KACjB;CACH,GAAE,UAAU,EAAE,SAAS,CAAC,EAAE,SAAS,EAAE;CACrC,IAAG,OAAO,CAAC,GAAG,SAAS,CAAC;KACrB;CACH,GAAE,CAAC;CACH,EAAC,CAAC;AACF;EACA,IAAI,aAAa,GAAG,WAAW;CAC/B,EAAC,OAAO;CACR,GAAE,CAAC,EAAE,SAAS,CAAC,EAAE;KACd,OAAO,CAAC,CAAC;KACT;CACH,GAAE,QAAQ,EAAE,SAAS,CAAC,EAAE;KACrB;CACH,GAAE,SAAS,EAAE,SAAS,KAAK,EAAE;KAC1B,OAAO,KAAK,CAAC;KACb;CACH,GAAE,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE;CAC5B,IAAG,OAAO,CAAC,GAAG,KAAK,CAAC;KACjB;CACH,GAAE,UAAU,EAAE,SAAS,CAAC,EAAE,UAAU,EAAE;KACnC,OAAO,CAAC,CAAC;KACT;CACH,GAAE,CAAC;CACH,EAAC,CAAC;AACF;EACA,IAAI,UAAU,GAAG,SAAS,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;CAC7C,EAAC,OAAO,GAAG,GAAG,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,aAAa,EAAE,CAAC;CAC5D,EAAC,CAAC;AACF;CACA,CAAA,IAAI,qBAAqB,GAAG,SAAS,GAAG,EAAE,SAAS,EAAE;CACrD,EAAC,IAAI,KAAK,EAAE,QAAQ,CAAC;GACpB,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,KAAK,EAAE;CACjD,GAAE,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;CAC3B,GAAE,QAAQ,GAAG;CACb,IAAG,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC;CACtC,IAAG,KAAK,CAAC,mBAAmB,CAAC,WAAW,CAAC;CACzC,IAAG,CAAC;AACJ;IACE,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;CACzD,GAAE,GAAG,CAAC,iBAAiB,GAAG,QAAQ,CAAC;IACjC;CACF,EAAC,CAAC;AACF;CACA,CAAA,IAAI,oBAAoB,GAAG,SAAS,GAAG,EAAE;CACzC,EAAC,IAAI,QAAQ,GAAG,GAAG,CAAC,iBAAiB,CAAC;CACtC,EAAC,IAAI,QAAQ,KAAK,SAAS,EAAE;CAC7B,GAAE,OAAO,GAAG,CAAC,iBAAiB,CAAC;IAC7B,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE;CACF,EAAC,CAAC;AACF;CACA,CAAA,IAAI,WAAW,GAAG;GACjB,aAAa,EAAE,UAAU;GACzB,qBAAqB,EAAE,qBAAqB;GAC5C,oBAAoB,EAAE,oBAAoB;CAC3C,EAAC,CAAC;AACF;EACA,IAAI,SAAS,GAAG,YAAY,CAAC;EAC7B,IAAI,MAAM,GAAG,cAAc,CAAC;EAC5B,IAAI,MAAM,GAAG,cAAc,CAAC;EAC5B,IAAI,OAAO,GAAG,eAAe,CAAC;EAC9B,IAAI,IAAI,GAAG,YAAY,CAAC;EACxB,IAAI,GAAG,GAAG,WAAW,CAAC;CACtB,CAAA,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;CAC1B,CAAA,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;CAC1B,CAAA,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;CAC5B,CAAA,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;CACtB,CAAA,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC;AACpB;EACA,SAAS,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;GAC9C,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CAC/B,EAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC;AACxD;CACA,EAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CAChD,GAAE,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAChB;CACA,GAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AACtB;CACA;CACA;IACE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;CACjC,IAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;KACnB;AACH;CACA,GAAE,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AACrB;IACE,IAAI,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;CAC3C,IAAG,SAAS;KACT;AACH;IACE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;CAClC,IAAG,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;KACpB;AACH;CACA,GAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AACtB;CACA,GAAE,IAAI,GAAG,OAAO,MAAM,CAAC;AACvB;CACA,GAAE,IAAI,IAAI,KAAK,OAAO,MAAM,EAAE;CAC9B,IAAG,IAAI,IAAI,KAAK,QAAQ,EAAE;CAC1B,KAAI,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;CAC9B,KAAI,IAAI,EAAE,CAAC,KAAK,EAAE;CAClB,MAAK,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;CAC/B,MAAK,IAAI,EAAE,CAAC,KAAK,EAAE;CACnB,OAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;CAC/C,OAAM,SAAS;QACT;OACD;CACL,KAAI,MAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;CACxE,KAAI,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC;CAClD,KAAI,SAAS;MACT;KACD;AACH;CACA,GAAE,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IACnB;GACD;AACD;CACA,CAAA,IAAI,OAAO,GAAG,SAAS,aAAa,EAAE;GACrC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;GACtC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;CACxC,EAAC,CAAC;AACF;CACA,CAAA,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE;GACnC,KAAK,EAAE,SAAS;AACjB;GACC,UAAU,EAAE,WAAW;CACxB,GAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACpB;AACF;GACC,KAAK,EAAE,WAAW;CACnB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;CACjB,IAAG,EAAE,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;KAC3C;CACH,GAAE,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC;IACf,OAAO,EAAE,CAAC;IACV;AACF;CACA,EAAC,UAAU,EAAE,SAAS,IAAI,EAAE;CAC5B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC;CACxB,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC;CACxB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC;AACtB;CACA;CACA,GAAE,IAAI,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE;CAC5B,IAAG,EAAE,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;CAC1C,IAAG,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC;KACjB,OAAO,EAAE,CAAC;KACV;AACH;IACE,IAAI,CAAC,IAAI,EAAE;CACb,IAAG,IAAI,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC;KACrB;AACH;IACE,IAAI,CAAC,KAAK,EAAE;CACd,IAAG,KAAK,GAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC;KACvB;AACH;IACE,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACxC;IACE,OAAO,EAAE,CAAC;IACV;AACF;GACC,eAAe,EAAE,WAAW;CAC7B,GAAE,OAAO;CACT,IAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;CACnB,IAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;CACnB,IAAG,CAAC;IACF;AACF;GACC,QAAQ,EAAE,WAAW;IACpB,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9E;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC;AACpC;EACA,IAAI,YAAY,GAAG,OAAO,CAAC;AAC3B;CACA,CAAA,IAAI,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC;GACnC,KAAK,EAAE,IAAI;GACX,WAAW,EAAE,CAAC;GACd,QAAQ,EAAE,EAAE;GACZ,MAAM,EAAE,EAAE;GACV,MAAM,EAAE,IAAI;AACb;GACC,mBAAmB,EAAE,IAAI;GACzB,mBAAmB,EAAE,IAAI;CAC1B,EAAC,CAAC,CAAC;AACH;EACA,IAAI,cAAc,GAAG,SAAS,CAAC;AAC/B;CACA;AACA;CACA;CACA;CACA;CACA;CACA;CACA;EACA,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,iBAAiB,EAAE;GAC7D,GAAG,EAAE,WAAW;IACf,OAAO,IAAI,CAAC;IACZ;CACF,EAAC,CAAC,CAAC;AACH;CACA;CACA;CACA;CACA;CACA;CACA;EACA,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,eAAe,EAAE;GAC3D,GAAG,EAAE,WAAW;CACjB,GAAE,OAAO,IAAI,CAAC,KAAK,CAAC;IAClB;CACF,EAAC,GAAG,EAAE,SAAS,KAAK,EAAE;CACtB,GAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACnB;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE;CAC7B,EAAC,SAAS,EAAE;IACV,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,cAAc;CACxB,GAAE,UAAU,EAAE,SAAS,CAAC,IAAI;CAC5B,GAAE,UAAU,EAAE,SAAS,CAAC,IAAI;IAC1B;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,IAAI,eAAe,GAAG;GACrB,UAAU,EAAE,EAAE;GACd,OAAO,EAAE,IAAI;AACd;CACA;CACA;CACA;CACA;CACA;CACA;GACC,YAAY,EAAE,SAAS,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;CAC1D,GAAE,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;CACnC,GAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AACd;CACA,GAAE,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;IACxB,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;CACnC,GAAE,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAChC;IACE,IAAI,CAAC,IAAI,EAAE;CACb,IAAG,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;KACvB;AACH;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;KACpD,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,EAAE;CACtC,KAAI,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;CAC9B,KAAI,OAAO;MACP;KACD;AACH;CACA,GAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC7B;CACA;CACA,GAAE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;CAC/B,IAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC7B;IACD;AACF;CACA,EAAC,eAAe,EAAE,SAAS,KAAK,EAAE;CAClC,GAAE,IAAI,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE;CACvE,IAAG,OAAO,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC;CACpC,IAAG,CAAC,CAAC;AACL;CACA,GAAE,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;KACjB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;CACpC,IAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;IACD;AACF;GACC,qBAAqB,EAAE,WAAW;CACnC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,EAAE,CAAC,OAAO,KAAK,IAAI,EAAE;CAC3B;CACA;CACA;CACA,IAAG,EAAE,CAAC,OAAO,GAAG,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW;CACnE,KAAI,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC;CACtB,KAAI,EAAE,CAAC,WAAW,EAAE,CAAC;CACrB,KAAI,CAAC,CAAC;KACH;IACD;AACF;CACA;CACA;CACA;GACC,WAAW,EAAE,WAAW;CACzB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AAChB;CACA,GAAE,EAAE,CAAC,OAAO,EAAE,CAAC;AACf;CACA;IACE,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;CAChC,IAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC;KAC3B;IACD;AACF;CACA;CACA;CACA;GACC,OAAO,EAAE,WAAW;CACrB,GAAE,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACjC,IAAI,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC;CAC3C,GAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACZ;CACA;CACA,GAAE,OAAO,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE;CAChC,IAAG,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;CAC7B,IAAG,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;CAC3B,IAAG,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;AACjC;CACA;CACA;KACG,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;CACjG,IAAG,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACxD;CACA,IAAG,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;CACnE,IAAG,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;AACzE;CACA,IAAG,IAAI,SAAS,CAAC,WAAW,IAAI,QAAQ,EAAE;CAC1C,KAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;CAC1E,KAAI,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;MACxB,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC5B,KAAI,MAAM;MACN,EAAE,CAAC,CAAC;MACJ;KACD;IACD;CACF,EAAC,CAAC;AACF;CACA,CAAA,IAAI,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;AACxC;CACA,CAAA,IAAI,WAAW,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAChE;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,SAAS,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE;CAC5C,EAAC,IAAI,KAAK,CAAC,QAAQ,EAAE;IACnB,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;CAC1C,GAAE,OAAO;IACP;AACF;CACA,EAAC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE;IACxC,YAAY,EAAE,IAAI;IAClB,UAAU,EAAE,KAAK;CACnB,GAAE,KAAK,EAAE;CACT,IAAG,SAAS,EAAE,CAAC,QAAQ,CAAC;KACrB;CACH,GAAE,CAAC,CAAC;AACJ;CACA,EAAC,WAAW,CAAC,OAAO,CAAC,SAAS,GAAG,EAAE;IACjC,IAAI,MAAM,GAAG,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACrE,GAAE,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AACxB;CACA,GAAE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE;KACjC,YAAY,EAAE,IAAI;KAClB,UAAU,EAAE,KAAK;KACjB,KAAK,EAAE,WAAW;CACrB,KAAI,IAAI,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;MACjD,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACrC;CACA,KAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE;OACzD,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE;QACzC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACnC;CACN,MAAK,CAAC,CAAC;AACP;MACI,OAAO,GAAG,CAAC;MACX;CACJ,IAAG,CAAC,CAAC;CACL,GAAE,CAAC,CAAC;GACH;AACD;CACA;CACA;CACA;CACA;CACA,CAAA,SAAS,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE;CAC9C,EAAC,IAAI,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC;GAC1B,IAAI,CAAC,IAAI,EAAE;CACZ,GAAE,OAAO;IACP;AACF;CACA,EAAC,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;GAC/B,IAAI,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;CACzC,EAAC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;IACjB,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3B;AACF;CACA,EAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;CAC3B,GAAE,OAAO;IACP;AACF;CACA,EAAC,WAAW,CAAC,OAAO,CAAC,SAAS,GAAG,EAAE;CACnC,GAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;CACpB,GAAE,CAAC,CAAC;AACJ;CACA,EAAC,OAAO,KAAK,CAAC,QAAQ,CAAC;GACtB;AACD;CACA;CACA,CAAA,IAAI,iBAAiB,GAAG,SAAS,KAAK,EAAE,YAAY,EAAE;GACrD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;CACtC,EAAC,CAAC;AACF;CACA,CAAA,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,SAAS,EAAE;AAC9C;CACA;CACA;CACA;CACA;GACC,kBAAkB,EAAE,IAAI;AACzB;CACA;CACA;CACA;CACA;GACC,eAAe,EAAE,IAAI;AACtB;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,sBAAsB,EAAE;CACzB,GAAE,iBAAiB;CACnB,GAAE,gBAAgB;CAClB,GAAE,aAAa;CACf,GAAE,YAAY;CACd,GAAE,kBAAkB;CACpB,GAAE,iBAAiB;CACnB,GAAE,aAAa;IACb;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,mBAAmB,EAAE;CACtB,GAAE,iBAAiB;CACnB,GAAE,aAAa;CACf,GAAE,aAAa;CACf,GAAE,YAAY;IACZ;AACF;CACA,EAAC,UAAU,EAAE,SAAS,KAAK,EAAE,YAAY,EAAE;CAC3C,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC;CACnB,GAAE,EAAE,CAAC,KAAK,GAAG,YAAY,CAAC;CAC1B,GAAE,EAAE,CAAC,UAAU,EAAE,CAAC;CAClB,GAAE,EAAE,CAAC,WAAW,EAAE,CAAC;IACjB,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;IAC7B;AACF;CACA,EAAC,WAAW,EAAE,SAAS,YAAY,EAAE;CACrC,GAAE,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;IAC1B;AACF;GACC,UAAU,EAAE,WAAW;CACxB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;CAC1B,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;CACvB,GAAE,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;CAC5B,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;IAC9B,IAAI,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;AACxC;CACA,GAAE,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,EAAE,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE;CAC7E,IAAG,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACzD;CACH,GAAE,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,EAAE,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE;CAC7E,IAAG,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACzD;IACD;AACF;GACC,UAAU,EAAE,WAAW;CACxB,GAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C;AACF;GACC,OAAO,EAAE,WAAW;IACnB,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C;AACF;CACA,EAAC,aAAa,EAAE,SAAS,OAAO,EAAE;IAChC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClC;AACF;CACA;CACA;CACA;GACC,gBAAgB,EAAE,WAAW;CAC9B,GAAE,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC;IAC9B;AACF;CACA;CACA;CACA;GACC,gBAAgB,EAAE,WAAW;CAC9B,GAAE,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC;IAC9B;AACF;CACA;CACA;CACA;GACC,cAAc,EAAE,WAAW;IAC1B,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACnD;AACF;CACA;CACA;CACA;GACC,cAAc,EAAE,WAAW;IAC1B,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACnD;AACF;GACC,KAAK,EAAE,WAAW;CACnB,GAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB;AACF;CACA;CACA;CACA;GACC,OAAO,EAAE,WAAW;CACrB,GAAE,IAAI,IAAI,CAAC,KAAK,EAAE;KACf,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KACtC;IACD;AACF;GACC,iBAAiB,EAAE,WAAW;CAC/B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC;CACnC,GAAE,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC;CAC1B,IAAG,MAAM,EAAE,EAAE,CAAC,KAAK;CACnB,IAAG,aAAa,EAAE,EAAE,CAAC,KAAK;CAC1B,IAAG,CAAC,CAAC;IACH;AACF;CACA,EAAC,cAAc,EAAE,SAAS,KAAK,EAAE;CACjC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,eAAe,CAAC;CAChC,GAAE,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC;CAC1B,IAAG,MAAM,EAAE,EAAE,CAAC,KAAK;CACnB,IAAG,aAAa,EAAE,EAAE,CAAC,KAAK;KACvB,MAAM,EAAE,KAAK;CAChB,IAAG,CAAC,CAAC;IACH;AACF;GACC,WAAW,EAAE,WAAW;CACzB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IACxB,IAAI,IAAI,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;CACxC,GAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;CAC3B,GAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AACd;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACjD,IAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;KAClD;AACH;CACA,GAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC;IACtD;AACF;CACA,EAAC,kBAAkB,EAAE,SAAS,KAAK,EAAE;IACnC,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;CAC3C,GAAE,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9C,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACzC;AACF;GACC,qBAAqB,EAAE,WAAW;CACnC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;CAChC,GAAE,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;AACjD;CACA;CACA;CACA;CACA,GAAE,IAAI,EAAE,CAAC,KAAK,KAAK,IAAI,EAAE;CACzB,IAAG,IAAI,EAAE,CAAC,KAAK,EAAE;CACjB;MACI,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;MAClC;AACJ;KACG,IAAI,IAAI,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;CAC1C,KAAI,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;MAC5B;CACJ,IAAG,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC;KAChB;AACH;CACA;CACA;CACA,GAAE,EAAE,CAAC,cAAc,EAAE,CAAC;IACpB;AACF;CACA;CACA;CACA;CACA;GACC,UAAU,EAAE,WAAW;CACxB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,EAAE,CAAC,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;KACjD,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC;KACnC,EAAE,CAAC,UAAU,EAAE;CAClB,IAAG,EAAE;KACF,MAAM,EAAE,SAAS,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE;MACrC,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,MAAM,EAAE;OACtC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;OACvC;MACD;CACJ,IAAG,CAAC,CAAC;IACH;AACF;CACA,EAAC,OAAO,EAAE,SAAS,KAAK,EAAE;CAC1B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,EAAE,CAAC,UAAU,EAAE,CAAC;CAClB,GAAE,EAAE,CAAC,eAAe,GAAG,IAAI,CAAC;CAC5B,GAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjB;AACF;CACA,EAAC,MAAM,EAAE,SAAS,CAAC,IAAI;AACvB;CACA,EAAC,UAAU,EAAE,SAAS,WAAW,EAAE;CACnC,GAAE,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC1B,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;CACjC,GAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;CAC7B,GAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACZ;CACA,GAAE,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;KACrB,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;KACpC;AACH;CACA,GAAE,IAAI,IAAI,CAAC,OAAO,EAAE;KACjB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;KACrC;IACD;AACF;GACC,IAAI,EAAE,WAAW;CAClB,GAAE,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC1B,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;CACjC,GAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;CAC7B,GAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACZ;CACA,GAAE,IAAI,IAAI,CAAC,OAAO,EAAE;CACpB,IAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;KACpB;AACH;CACA,GAAE,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACxB,IAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;KACnB;IACD;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,QAAQ,EAAE,SAAS,KAAK,EAAE;CAC3B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;CAC1B,GAAE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC3B,IAAI,KAAK,CAAC;AACZ;CACA,GAAE,EAAE,CAAC,UAAU,EAAE,CAAC;CAClB,GAAE,IAAI,OAAO,IAAI,KAAK,KAAK,SAAS,EAAE;KACnC,KAAK,GAAG,EAAE,CAAC,6BAA6B,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;CAC3D,IAAG,MAAM;CACT,IAAG,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC;CACtB,IAAG,KAAK,GAAG,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;KACrE;AACH;CACA,GAAE,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;CACnD,IAAG,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC;KAC1C;AACH;IACE,OAAO,KAAK,CAAC;IACb;AACF;CACA;CACA;CACA;CACA,EAAC,6BAA6B,EAAE,SAAS,OAAO,EAAE,KAAK,EAAE;CACzD,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;CACvB,GAAE,IAAI,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC;IAC7B,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;CACpC,GAAE,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;CACpF,GAAE,IAAI,cAAc,GAAG,EAAE,CAAC,sBAAsB,CAAC;CACjD,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC;AAC5B;CACA;IACE,IAAI,OAAO,GAAG;KACb,KAAK,EAAE,KAAK;CACf,IAAG,OAAO,EAAE,EAAE,CAAC,UAAU,EAAE;CAC3B,IAAG,YAAY,EAAE,EAAE,CAAC,KAAK;KACtB,KAAK,EAAE,KAAK;CACf,IAAG,CAAC;AACJ;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CAC3D,IAAG,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;KACxB,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;CAChF,IAAG,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;MACrB,MAAM,CAAC,OAAO,CAAC;MACf,WAAW,CAAC,OAAO,CAAC;MACpB,OAAO,CAAC,OAAO,CAAC;MAChB,EAAE,OAAO,CAAC,CAAC;KACZ;AACH;IACE,OAAO,MAAM,CAAC;IACd;AACF;CACA;CACA;CACA;CACA,EAAC,0BAA0B,EAAE,SAAS,OAAO,EAAE,KAAK,EAAE;CACtD,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,MAAM,GAAG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;CACzC,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC,eAAe,CAAC;CAClC,GAAE,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE;KACtB,OAAO,MAAM,CAAC;KACd;CACH,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;CACvB,GAAE,IAAI,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC;CAC/B,GAAE,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;CACjF,GAAE,IAAI,cAAc,GAAG,EAAE,CAAC,mBAAmB,CAAC;CAC9C,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB;CACA;IACE,IAAI,OAAO,GAAG;KACb,KAAK,EAAE,KAAK;KACZ,SAAS,EAAE,KAAK;CACnB,IAAG,OAAO,EAAE,EAAE,CAAC,UAAU,EAAE;CAC3B,IAAG,YAAY,EAAE,EAAE,CAAC,KAAK;CACzB,IAAG,CAAC;AACJ;CACA;IACE,IAAI,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC;AAClC;IACE,IAAI,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC;AACzB;CACA,GAAE,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;AACxB;CACA,GAAE,IAAI,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;CACzC,IAAG,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CAC5D,KAAI,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;CAC5B,KAAI,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;OACrB,MAAM,CAAC,GAAG,CAAC;OACX,WAAW,CAAC,GAAG,CAAC;OAChB,OAAO,CAAC,GAAG,CAAC;CACjB,MAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;MACzB;CACJ,IAAG,MAAM;KACN,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;CACtC,IAAG,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CAClD,KAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;CAClB,KAAI,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;OACrB,MAAM,CAAC,GAAG,CAAC;CAChB,MAAK,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;OAChC,WAAW,CAAC,GAAG,CAAC;OAChB,OAAO,CAAC,GAAG,CAAC;CACjB,MAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;MACzB;KACD;AACH;CACA,GAAE,IAAI,IAAI,CAAC,SAAS,EAAE;KACnB,EAAE,CAAC,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KAC3C;AACH;IACE,OAAO,MAAM,CAAC;IACd;AACF;CACA,EAAC,gBAAgB,EAAE,SAAS,OAAO,EAAE;CACrC,GAAE,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;CAChE,GAAE,OAAO,OAAO,CAAC,cAAc,CAAC;IAC9B;AACF;CACA,EAAC,aAAa,EAAE,SAAS,OAAO,EAAE;CAClC,GAAE,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;CAChE,GAAE,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAC3B,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;CACpC,GAAE,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;CAC7B,GAAE,IAAI,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;AAC9C;IACE,OAAO,CAAC,cAAc,GAAG;CAC3B,IAAG,eAAe,EAAE,KAAK,CAAC,eAAe;CACzC,IAAG,WAAW,EAAE,KAAK,CAAC,WAAW;CACjC,IAAG,WAAW,EAAE,KAAK,CAAC,WAAW;CACjC,IAAG,CAAC;AACJ;IACE,KAAK,CAAC,eAAe,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,EAAE,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACrJ,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACrI,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACtH;AACF;CACA;CACA;CACA;GACC,wBAAwB,EAAE,WAAW;IACpC,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC;AACvC;IACE,IAAI,OAAO,EAAE;CACf,IAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;KAC/B;IACD;AACF;CACA;CACA;CACA;GACC,qBAAqB,EAAE,WAAW;IACjC,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC;CACvC,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC;CAChB,GAAE,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC;AAC9C;IACE,IAAI,CAAC,OAAO,EAAE;CAChB,IAAG,OAAO;KACP;AACH;CACA,GAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IACvB,YAAY,GAAG,IAAI,CAAC,6BAA6B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACnE;IACE,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;CACnC,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACjD,IAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;KACd,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;KACvB,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;KAC/B;AACH;CACA,GAAE,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAC9B;AACF;CACA;CACA;CACA;GACC,cAAc,EAAE,WAAW;CAC5B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IACxB,IAAI,IAAI,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC;IAChC,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;CACjC,GAAE,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;AAC5B;CACA,GAAE,IAAI,OAAO,GAAG,OAAO,EAAE;CACzB,IAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC;CAChD,IAAG,MAAM,IAAI,OAAO,GAAG,OAAO,EAAE;KAC7B,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC;KAC9C;IACD;AACF;CACA;CACA;CACA;CACA,EAAC,cAAc,EAAE,SAAS,KAAK,EAAE,KAAK,EAAE;CACxC,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,EAAE;KAC/B,IAAI,CAAC,kBAAkB,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;KACnC;IACD;AACF;CACA;CACA;CACA;GACC,UAAU,EAAE,WAAW;CACxB,GAAE,IAAI,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;CAC/B,GAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC;IAClE;AACF;CACA;CACA;CACA;GACC,SAAS,EAAE,WAAW;IACrB,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IAC1B;AACF;CACA;CACA;CACA;GACC,WAAW,EAAE,WAAW;IACvB,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IAC5B;AACF;CACA;CACA;CACA;CACA,EAAC,YAAY,EAAE,SAAS,KAAK,EAAE,KAAK,EAAE;CACtC,GAAE,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;CAC3C,GAAE,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACjD;AACF;CACA;CACA;CACA;GACC,aAAa,EAAE,WAAW;IACzB,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACzC;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,iBAAiB,CAAC,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC;AAC9C;EACA,IAAI,sBAAsB,GAAG,iBAAiB,CAAC;AAC/C;CACA,CAAA,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AACtB;CACA,CAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE;CAC7B,EAAC,QAAQ,EAAE;CACX,GAAE,GAAG,EAAE;CACP,IAAG,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,YAAY;KAClD,WAAW,EAAE,MAAM;KACnB,WAAW,EAAE,CAAC;KACd,WAAW,EAAE,QAAQ;KACrB;IACD;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE;CAC3B,EAAC,IAAI,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;CACjC,EAAC,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;CAC7B,EAAC,IAAI,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;GAClC,IAAI,WAAW,GAAG,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;CACjD,EAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;CACf,EAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACf;CACA;CACA;CACA,EAAC,GAAG,CAAC,SAAS,EAAE,CAAC;GAChB,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,WAAW,EAAE,UAAU,GAAG,WAAW,EAAE,QAAQ,GAAG,WAAW,CAAC,CAAC;CAClF,EAAC,IAAI,GAAG,CAAC,WAAW,GAAG,WAAW,EAAE;CACpC,GAAE,WAAW,GAAG,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;IAC5C,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,WAAW,GAAG,WAAW,EAAE,QAAQ,GAAG,WAAW,EAAE,UAAU,GAAG,WAAW,EAAE,IAAI,CAAC,CAAC;CACvG,GAAE,MAAM;IACN,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7E;CACF,EAAC,GAAG,CAAC,SAAS,EAAE,CAAC;CACjB,EAAC,GAAG,CAAC,IAAI,EAAE,CAAC;GACX;AACD;EACA,SAAS,qBAAqB,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE;CACpD,EAAC,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;GAC5B,IAAI,CAAC,CAAC;AACP;GACC,IAAI,KAAK,EAAE;IACV,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;CACtC,GAAE,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CACpB,GAAE,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;CAC1B,GAAE,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,WAAW,EAAE;CAC1D,IAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC;CACvB,IAAG,GAAG,CAAC,WAAW,EAAE,CAAC;KAClB;IACD;AACF;CACA,EAAC,GAAG,CAAC,SAAS,EAAE,CAAC;CACjB,EAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,UAAU,GAAG,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;CACpF,EAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE;CACvC,GAAE,GAAG,CAAC,MAAM,EAAE,CAAC;IACb;AACF;CACA,EAAC,GAAG,CAAC,SAAS,EAAE,CAAC;GAChB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;CAC7E,EAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE;CACvC,GAAE,GAAG,CAAC,MAAM,EAAE,CAAC;IACb;GACD;AACD;CACA,CAAA,SAAS,UAAU,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE;GACjC,IAAI,KAAK,GAAG,EAAE,CAAC,WAAW,KAAK,OAAO,CAAC;AACxC;GACC,IAAI,KAAK,EAAE;IACV,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC;CACrC,GAAE,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;CACzB,GAAE,MAAM;CACR,GAAE,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,WAAW,CAAC;CACjC,GAAE,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;IACvB;AACF;CACA,EAAC,IAAI,GAAG,CAAC,WAAW,EAAE;IACpB,qBAAqB,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAC3C;AACF;GACC,IAAI,KAAK,EAAE;CACZ,GAAE,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAClB;AACF;CACA,EAAC,GAAG,CAAC,SAAS,EAAE,CAAC;GAChB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;GACpE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;CAC5E,EAAC,GAAG,CAAC,SAAS,EAAE,CAAC;CACjB,EAAC,GAAG,CAAC,MAAM,EAAE,CAAC;GACb;AACD;CACA,CAAA,IAAI,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC;GACrC,KAAK,EAAE,KAAK;AACb;CACA,EAAC,YAAY,EAAE,SAAS,MAAM,EAAE;CAChC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;AACtB;IACE,IAAI,EAAE,EAAE;CACV,IAAG,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE;KAC9E;IACD,OAAO,KAAK,CAAC;IACb;AACF;CACA,EAAC,OAAO,EAAE,SAAS,MAAM,EAAE,MAAM,EAAE;CACnC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;AACtB;IACE,IAAI,EAAE,EAAE;CACV,IAAG,IAAI,qBAAqB,GAAG,SAAS,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;CACvF,IAAG,IAAI,KAAK,GAAG,qBAAqB,CAAC,KAAK,CAAC;CAC3C,IAAG,IAAI,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,CAAC;AACjD;CACA;CACA,IAAG,IAAI,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC;CAClC,IAAG,IAAI,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;CAC9B,IAAG,OAAO,QAAQ,GAAG,UAAU,EAAE;MAC7B,QAAQ,IAAI,GAAG,CAAC;MAChB;CACJ,IAAG,OAAO,KAAK,GAAG,QAAQ,EAAE;MACxB,KAAK,IAAI,GAAG,CAAC;MACb;CACJ,IAAG,OAAO,KAAK,GAAG,UAAU,EAAE;MAC1B,KAAK,IAAI,GAAG,CAAC;MACb;AACJ;CACA;KACG,IAAI,aAAa,IAAI,KAAK,IAAI,UAAU,IAAI,KAAK,IAAI,QAAQ,CAAC,CAAC;CAClE,IAAG,IAAI,YAAY,IAAI,QAAQ,IAAI,EAAE,CAAC,WAAW,IAAI,QAAQ,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC;AACjF;CACA,IAAG,QAAQ,aAAa,IAAI,YAAY,EAAE;KACvC;IACD,OAAO,KAAK,CAAC;IACb;AACF;GACC,cAAc,EAAE,WAAW;CAC5B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;CACtB,GAAE,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,QAAQ,IAAI,CAAC,CAAC;CACpD,GAAE,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,IAAI,CAAC,CAAC;CACzD,GAAE,OAAO;CACT,IAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,UAAU;CAC7C,IAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,UAAU;CAC7C,IAAG,CAAC;IACF;AACF;GACC,OAAO,EAAE,WAAW;CACrB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;IACpB,OAAO,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,UAAU,KAAK,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/H;AACF;GACC,eAAe,EAAE,WAAW;CAC7B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;CACtB,GAAE,IAAI,WAAW,GAAG,EAAE,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;CACxE,GAAE,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC;AAC/E;CACA,GAAE,OAAO;CACT,IAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,eAAe,CAAC;CACtD,IAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,eAAe,CAAC;CACtD,IAAG,CAAC;IACF;AACF;GACC,IAAI,EAAE,WAAW;IAChB,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;CAC5B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;CACtB,GAAE,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC,WAAW,KAAK,OAAO,IAAI,IAAI,GAAG,CAAC,CAAC;IAC1D,IAAI,GAAG,GAAG;CACZ,IAAG,CAAC,EAAE,EAAE,CAAC,CAAC;CACV,IAAG,CAAC,EAAE,EAAE,CAAC,CAAC;CACV,IAAG,WAAW,EAAE,EAAE,CAAC,WAAW;CAC9B,IAAG,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,GAAG,WAAW,EAAE,CAAC,CAAC;KACtD,WAAW,EAAE,WAAW;CAC3B,IAAG,UAAU,EAAE,EAAE,CAAC,UAAU;CAC5B,IAAG,QAAQ,EAAE,EAAE,CAAC,QAAQ;KACrB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,GAAG,GAAG,CAAC;CAClD,IAAG,CAAC;IACF,IAAI,CAAC,CAAC;AACR;CACA,GAAE,GAAG,CAAC,IAAI,EAAE,CAAC;AACb;CACA,GAAE,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,eAAe,CAAC;CACrC,GAAE,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC;AACnC;CACA,GAAE,IAAI,GAAG,CAAC,WAAW,EAAE;KACpB,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;CACvC,IAAG,GAAG,CAAC,SAAS,EAAE,CAAC;KAChB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;KACrE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;CAC9E,IAAG,GAAG,CAAC,SAAS,EAAE,CAAC;CACnB,IAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE;CACzC,KAAI,GAAG,CAAC,IAAI,EAAE,CAAC;MACX;CACJ,IAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC,aAAa,GAAG,GAAG,CAAC;KACvD;AACH;CACA,GAAE,GAAG,CAAC,SAAS,EAAE,CAAC;IAChB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;CAC7E,GAAE,GAAG,CAAC,SAAS,EAAE,CAAC;CAClB,GAAE,GAAG,CAAC,IAAI,EAAE,CAAC;AACb;CACA,GAAE,IAAI,EAAE,CAAC,WAAW,EAAE;KACnB,UAAU,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;KACzB;AACH;CACA,GAAE,GAAG,CAAC,OAAO,EAAE,CAAC;IACd;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,IAAI,gBAAgB,GAAG,SAAS,CAAC,cAAc,CAAC;AAChD;CACA,CAAA,IAAI,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC;AACrD;CACA,CAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE;CAC7B,EAAC,QAAQ,EAAE;CACX,GAAE,IAAI,EAAE;KACL,OAAO,EAAE,GAAG;KACZ,eAAe,EAAE,YAAY;KAC7B,WAAW,EAAE,CAAC;KACd,WAAW,EAAE,YAAY;KACzB,cAAc,EAAE,MAAM;KACtB,UAAU,EAAE,EAAE;KACd,gBAAgB,EAAE,GAAG;KACrB,eAAe,EAAE,OAAO;KACxB,eAAe,EAAE,IAAI;KACrB,IAAI,EAAE,IAAI;KACV;IACD;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,IAAI,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC;GACtC,KAAK,EAAE,MAAM;AACd;GACC,IAAI,EAAE,WAAW;CAClB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC;IAClB,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;CAC1B,GAAE,IAAI,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;IAC3B,IAAI,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;CACpC,GAAE,IAAI,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC;IAC1C,IAAI,wBAAwB,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;CAC9D,GAAE,IAAI,cAAc,GAAG,CAAC,CAAC,CAAC;CAC1B,GAAE,IAAI,SAAS,GAAG,EAAE,CAAC,KAAK,CAAC;CAC3B,GAAE,IAAI,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC;AACjC;CACA,GAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;CACtB,IAAG,OAAO;KACP;AACH;CACA,GAAE,IAAI,EAAE,CAAC,KAAK,EAAE;CAChB,IAAG,KAAK,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE;MAC/C,QAAQ,GAAG,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CACrD;CACA,KAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE;OACrD,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;OAC5D,SAAS,GAAG,QAAQ,CAAC;CAC1B,MAAK,MAAM;OACN;MACD;CACJ;KACG,IAAI,SAAS,EAAE;MACd,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;MACvB;KACD;AACH;CACA,GAAE,GAAG,CAAC,IAAI,EAAE,CAAC;AACb;CACA;IACE,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,cAAc,IAAI,wBAAwB,CAAC,cAAc,CAAC;AAC7E;CACA;CACA,GAAE,IAAI,GAAG,CAAC,WAAW,EAAE;CACvB,IAAG,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,IAAI,wBAAwB,CAAC,UAAU,CAAC,CAAC;KACtE;AACH;CACA,GAAE,GAAG,CAAC,cAAc,GAAG,gBAAgB,CAAC,EAAE,CAAC,gBAAgB,EAAE,wBAAwB,CAAC,gBAAgB,CAAC,CAAC;IACtG,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC,eAAe,IAAI,wBAAwB,CAAC,eAAe,CAAC;CAChF,GAAE,GAAG,CAAC,SAAS,GAAG,gBAAgB,CAAC,EAAE,CAAC,WAAW,EAAE,wBAAwB,CAAC,WAAW,CAAC,CAAC;IACvF,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,IAAI,cAAc,CAAC,YAAY,CAAC;AAClE;CACA;CACA,GAAE,GAAG,CAAC,SAAS,EAAE,CAAC;AAClB;CACA;IACE,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;CAC9B,GAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;CACvB,IAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;KACrC,cAAc,GAAG,CAAC,CAAC;KACnB;AACH;CACA,GAAE,KAAK,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE;KAC/C,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;KAChC,QAAQ,GAAG,cAAc,KAAK,CAAC,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACrG;CACA,IAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;CACxB,KAAI,IAAI,CAAC,cAAc,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,cAAc,KAAK,CAAC,CAAC,EAAE;CAChF;CACA,MAAK,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;CAC1C,MAAK,MAAM;CACX;CACA,MAAK,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;OACxD;MACD,cAAc,GAAG,KAAK,CAAC;MACvB;KACD;AACH;IACE,IAAI,SAAS,EAAE;CACjB,IAAG,GAAG,CAAC,SAAS,EAAE,CAAC;KAChB;AACH;CACA,GAAE,GAAG,CAAC,MAAM,EAAE,CAAC;CACf,GAAE,GAAG,CAAC,OAAO,EAAE,CAAC;IACd;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,IAAI,gBAAgB,GAAG,SAAS,CAAC,cAAc,CAAC;AAChD;CACA,CAAA,IAAI,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC;AACvD;CACA,CAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE;CAC7B,EAAC,QAAQ,EAAE;CACX,GAAE,KAAK,EAAE;KACN,MAAM,EAAE,CAAC;KACT,UAAU,EAAE,QAAQ;KACpB,eAAe,EAAE,cAAc;KAC/B,WAAW,EAAE,cAAc;KAC3B,WAAW,EAAE,CAAC;CACjB;KACG,SAAS,EAAE,CAAC;KACZ,WAAW,EAAE,CAAC;KACd,gBAAgB,EAAE,CAAC;KACnB;IACD;CACF,EAAC,CAAC,CAAC;AACH;EACA,SAAS,MAAM,CAAC,MAAM,EAAE;CACxB,EAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;GACpB,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC;GACzE;AACD;EACA,SAAS,MAAM,CAAC,MAAM,EAAE;CACxB,EAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;GACpB,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC;GACzE;AACD;CACA,CAAA,IAAI,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC;GACvC,KAAK,EAAE,OAAO;AACf;CACA,EAAC,OAAO,EAAE,SAAS,MAAM,EAAE,MAAM,EAAE;CACnC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;IACpB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC;IACxH;AACF;GACC,YAAY,EAAE,MAAM;GACpB,QAAQ,EAAE,MAAM;GAChB,QAAQ,EAAE,MAAM;AACjB;GACC,cAAc,EAAE,WAAW;CAC5B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;CACtB,GAAE,OAAO;CACT,IAAG,CAAC,EAAE,EAAE,CAAC,CAAC;CACV,IAAG,CAAC,EAAE,EAAE,CAAC,CAAC;CACV,IAAG,CAAC;IACF;AACF;GACC,OAAO,EAAE,WAAW;CACrB,GAAE,OAAO,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAChD;AACF;GACC,eAAe,EAAE,WAAW;CAC7B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;CACtB,GAAE,OAAO;CACT,IAAG,CAAC,EAAE,EAAE,CAAC,CAAC;CACV,IAAG,CAAC,EAAE,EAAE,CAAC,CAAC;KACP,OAAO,EAAE,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,WAAW;CACtC,IAAG,CAAC;IACF;AACF;CACA,EAAC,IAAI,EAAE,SAAS,SAAS,EAAE;CAC3B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;IACpB,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;CAC5B,GAAE,IAAI,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC;CACjC,GAAE,IAAI,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;CAC7B,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;CACzB,GAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;CACf,GAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;CACf,GAAE,IAAI,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC;CAC5C,GAAE,IAAI,YAAY,GAAG,cAAc,CAAC,YAAY,CAAC;AACjD;CACA,GAAE,IAAI,EAAE,CAAC,IAAI,EAAE;CACf,IAAG,OAAO;KACP;AACH;CACA;CACA,GAAE,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE;KAC9E,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,IAAI,YAAY,CAAC;CACpD,IAAG,GAAG,CAAC,SAAS,GAAG,gBAAgB,CAAC,EAAE,CAAC,WAAW,EAAE,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;KAC5F,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,eAAe,IAAI,YAAY,CAAC;CACtD,IAAG,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;KACpE;IACD;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,IAAI,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC;AACvD;CACA,CAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE;CAC7B,EAAC,QAAQ,EAAE;CACX,GAAE,SAAS,EAAE;KACV,eAAe,EAAE,cAAc;KAC/B,WAAW,EAAE,cAAc;KAC3B,aAAa,EAAE,QAAQ;KACvB,WAAW,EAAE,CAAC;KACd;IACD;CACF,EAAC,CAAC,CAAC;AACH;EACA,SAAS,UAAU,CAAC,EAAE,EAAE;GACvB,OAAO,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC;GACpC;AACD;CACA;CACA;CACA;CACA;CACA;CACA;EACA,SAAS,YAAY,CAAC,EAAE,EAAE;GACzB,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC;AAC1B;CACA,EAAC,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE;CACrB,GAAE,IAAI,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;CACtB,GAAE,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;CACnB,GAAE,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;CACnB,GAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;CAC/B,GAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;CAC/B,GAAE,MAAM;CACR,GAAE,IAAI,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;CACvB,GAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;CAC/B,GAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;CAC/B,GAAE,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;CACnB,GAAE,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IACjB;AACF;CACA,EAAC,OAAO;IACN,IAAI,EAAE,EAAE;IACR,GAAG,EAAE,EAAE;IACP,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,EAAE;CACZ,GAAE,CAAC;GACF;AACD;CACA,CAAA,SAAS,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;CAC5B,EAAC,OAAO,IAAI,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;GAClD;AACD;EACA,SAAS,kBAAkB,CAAC,EAAE,EAAE;CAChC,EAAC,IAAI,IAAI,GAAG,EAAE,CAAC,aAAa,CAAC;CAC7B,EAAC,IAAI,GAAG,GAAG,EAAE,CAAC;AACd;GACC,IAAI,CAAC,IAAI,EAAE;IACV,OAAO,GAAG,CAAC;IACX;AACF;CACA,EAAC,IAAI,EAAE,CAAC,UAAU,EAAE;IAClB,IAAI,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,EAAE;KACnB,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC;IACD,MAAM,IAAI,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,EAAE;IAC1B,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACnC;AACF;CACA,EAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;GACjB,OAAO,GAAG,CAAC;GACX;AACD;CACA,CAAA,SAAS,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;CAC1C,EAAC,IAAI,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC;CAC5B,EAAC,IAAI,IAAI,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAC;GAClC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAChB;CACA,EAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;IAC9B,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACpB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;IACtB,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;IACvB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;CACvB,GAAE,MAAM;CACR,GAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;IAC5B;AACF;CACA,EAAC,OAAO;CACR,GAAE,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC;CAClD,GAAE,CAAC,EAAE,IAAI,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC;CACpD,GAAE,CAAC,EAAE,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC;CACrD,GAAE,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC;CACnD,GAAE,CAAC;GACF;AACD;EACA,SAAS,aAAa,CAAC,EAAE,EAAE;CAC3B,EAAC,IAAI,MAAM,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;GAC9B,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;GACvC,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC;CACzC,EAAC,IAAI,MAAM,GAAG,gBAAgB,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;AAC1D;CACA,EAAC,OAAO;CACR,GAAE,KAAK,EAAE;CACT,IAAG,CAAC,EAAE,MAAM,CAAC,IAAI;CACjB,IAAG,CAAC,EAAE,MAAM,CAAC,GAAG;KACb,CAAC,EAAE,KAAK;KACR,CAAC,EAAE,MAAM;KACT;CACH,GAAE,KAAK,EAAE;KACN,CAAC,EAAE,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;KACzB,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;KACxB,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;KAC9B,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;KAC/B;CACH,GAAE,CAAC;GACF;AACD;CACA,CAAA,SAAS,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;CAC3B,EAAC,IAAI,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC;CACxB,EAAC,IAAI,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC;CACxB,EAAC,IAAI,MAAM,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;AACjE;CACA,EAAC,OAAO,MAAM;CACd,OAAM,KAAK,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC;CACrD,OAAM,KAAK,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;GACrD;AACD;CACA,CAAA,IAAI,iBAAiB,GAAG,YAAY,CAAC,MAAM,CAAC;GAC3C,KAAK,EAAE,WAAW;AACnB;GACC,IAAI,EAAE,WAAW;IAChB,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;CAC5B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;CACtB,GAAE,IAAI,KAAK,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;CAChC,GAAE,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;CAC1B,GAAE,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAC1B;CACA,GAAE,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,eAAe,CAAC;IACnC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACnD;CACA,GAAE,IAAI,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE;CAClD,IAAG,OAAO;KACP;AACH;CACA,GAAE,GAAG,CAAC,IAAI,EAAE,CAAC;CACb,GAAE,GAAG,CAAC,SAAS,EAAE,CAAC;IAChB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;CAC/C,GAAE,GAAG,CAAC,IAAI,EAAE,CAAC;CACb,GAAE,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,WAAW,CAAC;IAC/B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;CAC/C,GAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;CACtB,GAAE,GAAG,CAAC,OAAO,EAAE,CAAC;IACd;AACF;GACC,MAAM,EAAE,WAAW;CACpB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;IACpB,OAAO,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;IACtB;AACF;CACA,EAAC,OAAO,EAAE,SAAS,MAAM,EAAE,MAAM,EAAE;IACjC,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C;AACF;CACA,EAAC,YAAY,EAAE,SAAS,MAAM,EAAE,MAAM,EAAE;CACxC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;CACtB,GAAE,OAAO,UAAU,CAAC,EAAE,CAAC;CACvB,MAAK,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC;OACzB,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC7B;AACF;CACA,EAAC,QAAQ,EAAE,SAAS,MAAM,EAAE;IAC1B,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACzC;AACF;CACA,EAAC,QAAQ,EAAE,SAAS,MAAM,EAAE;IAC1B,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACzC;AACF;GACC,cAAc,EAAE,WAAW;CAC5B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;CACtB,GAAE,IAAI,CAAC,EAAE,CAAC,CAAC;CACX,GAAE,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE;CACtB,IAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;CACZ,IAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC;CAC5B,IAAG,MAAM;CACT,IAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC;CAC5B,IAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;KACT;AACH;IACE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACpB;AACF;GACC,OAAO,EAAE,WAAW;CACrB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;AACtB;CACA,GAAE,OAAO,UAAU,CAAC,EAAE,CAAC;CACvB,MAAK,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;CACxC,MAAK,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACxC;AACF;GACC,eAAe,EAAE,WAAW;CAC7B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;CACtB,GAAE,OAAO;CACT,IAAG,CAAC,EAAE,EAAE,CAAC,CAAC;CACV,IAAG,CAAC,EAAE,EAAE,CAAC,CAAC;CACV,IAAG,CAAC;IACF;CACF,EAAC,CAAC,CAAC;AACH;EACA,IAAI,QAAQ,GAAG,EAAE,CAAC;EAClB,IAAI,GAAG,GAAG,WAAW,CAAC;EACtB,IAAI,IAAI,GAAG,YAAY,CAAC;EACxB,IAAI,KAAK,GAAG,aAAa,CAAC;EAC1B,IAAI,SAAS,GAAG,iBAAiB,CAAC;CAClC,CAAA,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC;CACnB,CAAA,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;CACrB,CAAA,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;CACvB,CAAA,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;AAC/B;CACA,CAAA,IAAI,UAAU,GAAG,SAAS,CAAC,WAAW,CAAC;CACvC,CAAA,IAAI,gBAAgB,GAAG,SAAS,CAAC,cAAc,CAAC;AAChD;CACA,CAAA,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE;CAC1B,EAAC,KAAK,EAAE;IACN,IAAI,EAAE,OAAO;IACb;AACF;CACA,EAAC,MAAM,EAAE;IACP,KAAK,EAAE,CAAC;KACP,IAAI,EAAE,UAAU;KAChB,MAAM,EAAE,IAAI;CACf,IAAG,SAAS,EAAE;MACV,eAAe,EAAE,IAAI;MACrB;CACJ,IAAG,CAAC;AACJ;IACE,KAAK,EAAE,CAAC;KACP,IAAI,EAAE,QAAQ;CACjB,IAAG,CAAC;IACF;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE;CAC7B,EAAC,QAAQ,EAAE;CACX,GAAE,GAAG,EAAE;KACJ,kBAAkB,EAAE,GAAG;KACvB,aAAa,EAAE,GAAG;KAClB;IACD;CACF,EAAC,CAAC,CAAC;AACH;CACA;CACA;CACA;CACA;CACA,CAAA,SAAS,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE;CAC7C,EAAC,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC;GACxB,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC;AACzB;CACA,EAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;IAChD,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD;AACF;GACC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;IAC1D,IAAI,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAChC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;IACzD,IAAI,GAAG,IAAI,CAAC;IACZ;AACF;GACC,OAAO,GAAG,CAAC;GACX;AACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,SAAS,wBAAwB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;CACzD,EAAC,IAAI,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC;CACtC,EAAC,IAAI,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC;GAC7B,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;GAC/B,IAAI,GAAG,GAAG,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC;MACzC,oBAAoB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;MAC/C,CAAC,CAAC,CAAC;CACP,EAAC,IAAI,IAAI,EAAE,KAAK,CAAC;AACjB;CACA,EAAC,IAAI,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE;CACzC,GAAE,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAC1C,GAAE,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC;CAChC,GAAE,MAAM;CACR;CACA;CACA;CACA,GAAE,IAAI,GAAG,SAAS,GAAG,KAAK,CAAC;IACzB,KAAK,GAAG,CAAC,CAAC;IACV;AACF;CACA,EAAC,OAAO;CACR,GAAE,KAAK,EAAE,IAAI,GAAG,KAAK;IACnB,KAAK,EAAE,KAAK;CACd,GAAE,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC;CAC1B,GAAE,CAAC;GACF;AACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,SAAS,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;CAC1D,EAAC,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;CAC3B,EAAC,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;CAC1B,EAAC,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;CACjD,EAAC,IAAI,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;CACjE,EAAC,IAAI,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAC1C,EAAC,IAAI,KAAK,EAAE,IAAI,CAAC;AACjB;CACA,EAAC,IAAI,IAAI,KAAK,IAAI,EAAE;CACpB;CACA;IACE,IAAI,GAAG,IAAI,IAAI,IAAI,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;IACtE;AACF;CACA,EAAC,IAAI,IAAI,KAAK,IAAI,EAAE;CACpB;CACA,GAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B;AACF;CACA,EAAC,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;CAC5D,EAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;AAC5C;CACA,EAAC,OAAO;CACR,GAAE,KAAK,EAAE,IAAI,GAAG,KAAK,CAAC,UAAU;CAChC,GAAE,KAAK,EAAE,OAAO,CAAC,aAAa;IAC5B,KAAK,EAAE,KAAK;CACd,GAAE,CAAC;GACF;AACD;CACA,CAAA,IAAI,cAAc,GAAG,sBAAsB,CAAC,MAAM,CAAC;AACnD;CACA,EAAC,eAAe,EAAE,QAAQ,CAAC,SAAS;AACpC;CACA;CACA;CACA;CACA,EAAC,mBAAmB,EAAE;CACtB,GAAE,iBAAiB;CACnB,GAAE,aAAa;CACf,GAAE,eAAe;CACjB,GAAE,aAAa;CACf,GAAE,eAAe;CACjB,GAAE,cAAc;CAChB,GAAE,oBAAoB;CACtB,GAAE,iBAAiB;CACnB,GAAE,cAAc;IACd;AACF;GACC,UAAU,EAAE,WAAW;CACxB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,IAAI,EAAE,SAAS,CAAC;AACtB;CACA,GAAE,sBAAsB,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AACnE;CACA,GAAE,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IACpB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC;CACrC,GAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;AAClB;IACE,SAAS,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC;CAC1C,GAAE,UAAU,CAAC,WAAW,EAAE,SAAS,CAAC,aAAa,EAAE,gCAAgC,EAAE,uBAAuB,CAAC,CAAC;CAC9G,GAAE,UAAU,CAAC,WAAW,EAAE,SAAS,CAAC,YAAY,EAAE,+BAA+B,EAAE,sBAAsB,CAAC,CAAC;CAC3G,GAAE,UAAU,CAAC,WAAW,EAAE,SAAS,CAAC,kBAAkB,EAAE,qCAAqC,EAAE,4BAA4B,CAAC,CAAC;CAC7H,GAAE,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,+BAA+B,EAAE,sBAAsB,CAAC,CAAC;CAC7H,GAAE,UAAU,CAAC,WAAW,EAAE,SAAS,CAAC,eAAe,EAAE,kCAAkC,EAAE,yBAAyB,CAAC,CAAC;IAClH;AACF;CACA,EAAC,MAAM,EAAE,SAAS,KAAK,EAAE;CACzB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,KAAK,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;CAChC,GAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AACd;IACE,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;AAC5B;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CAClD,IAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;KACrC;IACD;AACF;GACC,aAAa,EAAE,SAAS,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE;CAClD,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;CAC1B,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;IAC9B,IAAI,OAAO,GAAG,EAAE,CAAC,0BAA0B,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAChE;CACA,GAAE,SAAS,CAAC,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;CACrD,GAAE,SAAS,CAAC,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;CACrD,GAAE,SAAS,CAAC,aAAa,GAAG,EAAE,CAAC,KAAK,CAAC;CACrC,GAAE,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC;IACzB,SAAS,CAAC,MAAM,GAAG;CACrB,IAAG,eAAe,EAAE,OAAO,CAAC,eAAe;CAC3C,IAAG,WAAW,EAAE,OAAO,CAAC,WAAW;CACnC,IAAG,aAAa,EAAE,OAAO,CAAC,aAAa;CACvC,IAAG,WAAW,EAAE,OAAO,CAAC,WAAW;CACnC,IAAG,YAAY,EAAE,OAAO,CAAC,KAAK;KAC3B,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;CACrC,IAAG,CAAC;AACJ;CACA,GAAE,IAAI,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;CAC9C,IAAG,SAAS,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;KACtC;AACH;CACA,GAAE,EAAE,CAAC,sBAAsB,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAC9D;CACA,GAAE,SAAS,CAAC,KAAK,EAAE,CAAC;IAClB;AACF;CACA;CACA;CACA;GACC,sBAAsB,EAAE,SAAS,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;CACpE,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;CAC/B,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC;CACnC,GAAE,IAAI,IAAI,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;CACnC,GAAE,IAAI,UAAU,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;IACvC,IAAI,KAAK,GAAG,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;CACzC,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;CACrE,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAC5E;CACA,GAAE,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;IAC9B,KAAK,CAAC,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAC3C,GAAE,KAAK,CAAC,CAAC,GAAG,UAAU,GAAG,KAAK,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;CACtE,GAAE,KAAK,CAAC,CAAC,GAAG,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IACpE,KAAK,CAAC,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IACrD,KAAK,CAAC,KAAK,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IACpD;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,UAAU,EAAE,SAAS,IAAI,EAAE;CAC5B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC;IAChC,IAAI,QAAQ,GAAG,KAAK,CAAC,wBAAwB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IACxD,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;CACtC,GAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;CAC7B,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC;CAClB,GAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AACd;IACE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CAC7B,IAAG,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;CACtB;CACA;CACA;CACA;CACA;CACA,IAAG,IAAI,OAAO,KAAK,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;OACxD,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,EAAE;MACrD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;MACxB;CACJ,IAAG,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;CAC5B,KAAI,MAAM;MACN;KACD;AACH;IACE,OAAO,MAAM,CAAC;IACd;AACF;CACA;CACA;CACA;CACA;GACC,aAAa,EAAE,WAAW;CAC3B,GAAE,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC;IAChC;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,aAAa,EAAE,SAAS,YAAY,EAAE,IAAI,EAAE;IAC3C,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;CAC7C,GAAE,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,SAAS;CACjC,MAAK,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;OACpB,CAAC,CAAC,CAAC;AACR;CACA,GAAE,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC;CACtB,MAAK,MAAM,CAAC,MAAM,GAAG,CAAC;CACtB,MAAK,KAAK,CAAC;IACT;AACF;CACA;CACA;CACA;GACC,QAAQ,EAAE,WAAW;CACtB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC;CAClC,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC;CAClB,GAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AACd;IACE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CAC9D,IAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;KACvD;AACH;CACA,GAAE,OAAO;KACN,MAAM,EAAE,MAAM;CACjB,IAAG,KAAK,EAAE,KAAK,CAAC,WAAW;CAC3B,IAAG,GAAG,EAAE,KAAK,CAAC,SAAS;CACvB,IAAG,UAAU,EAAE,EAAE,CAAC,aAAa,EAAE;KAC9B,KAAK,EAAE,KAAK;CACf,IAAG,CAAC;IACF;AACF;CACA;CACA;CACA;CACA;GACC,uBAAuB,EAAE,SAAS,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE;CACjE,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;CACvB,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC;CAClC,GAAE,IAAI,YAAY,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IACxC,IAAI,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;IACnC,IAAI,QAAQ,GAAG,KAAK,CAAC,wBAAwB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;CAC1D,GAAE,IAAI,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;CACpE,GAAE,IAAI,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IACxC,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;IACpC,IAAI,KAAK,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC;CACjC,GAAE,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;CACvG,GAAE,IAAI,MAAM,GAAG,KAAK,CAAC,KAAK,KAAK,SAAS,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;CACxI,GAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;CAC7B,GAAE,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC;AACtD;IACE,IAAI,OAAO,KAAK,OAAO,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,CAAC,EAAE;KAC9D,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CAC9B,KAAI,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AACxB;CACA,KAAI,IAAI,KAAK,CAAC,KAAK,KAAK,YAAY,EAAE;CACtC,MAAK,MAAM;OACN;AACL;CACA,KAAI,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,EAAE;CAC/B,MAAK,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;CACxE,MAAK,MAAM,GAAG,WAAW,CAAC,KAAK,KAAK,SAAS,GAAG,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC,IAAI,WAAW,CAAC,GAAG,IAAI,CAAC,GAAG,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC;AACnJ;OACK,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,EAAE;QACpE,KAAK,IAAI,MAAM,CAAC;QAChB;OACD;MACD;KACD;AACH;IACE,IAAI,GAAG,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,GAAG,KAAK,CAAC,gBAAgB,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;CAChD,GAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACrB;CACA,GAAE,IAAI,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,EAAE;KAChE,IAAI,GAAG,YAAY,CAAC;CACvB,IAAG,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,MAAM,GAAG,CAAC,IAAI,YAAY,EAAE;CACnE,KAAI,IAAI,GAAG,IAAI,GAAG,YAAY,CAAC;CAC/B,KAAI,MAAM;CACV,KAAI,IAAI,GAAG,IAAI,GAAG,YAAY,CAAC;MAC3B;KACD;AACH;CACA,GAAE,OAAO;KACN,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,IAAI;CACb,IAAG,MAAM,EAAE,IAAI,GAAG,IAAI,GAAG,CAAC;CAC1B,IAAG,CAAC;IACF;AACF;CACA;CACA;CACA;GACC,uBAAuB,EAAE,SAAS,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;CACxE,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,KAAK,GAAG,OAAO,CAAC,YAAY,KAAK,MAAM;CAC7C,MAAK,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC;OAChD,wBAAwB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AACrD;CACA,GAAE,IAAI,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IACpE,IAAI,MAAM,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;CAC5E,GAAE,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG;CACrB,IAAG,gBAAgB,CAAC,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC;KACnD,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AAC9B;CACA,GAAE,OAAO;CACT,IAAG,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,CAAC;CAC1B,IAAG,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,CAAC;KACvB,MAAM,EAAE,MAAM;KACd,IAAI,EAAE,IAAI;CACb,IAAG,CAAC;IACF;AACF;GACC,IAAI,EAAE,WAAW;CAClB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;CACvB,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC;IAChC,IAAI,KAAK,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;CAChC,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;CAChC,GAAE,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;CAC1B,GAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACZ;CACA,GAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;AACxD;CACA,GAAE,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACxB,IAAG,IAAI,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;CAChD,IAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;CAC3C,KAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;MAChB;KACD;AACH;IACE,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC;AACF;CACA;CACA;CACA;GACC,0BAA0B,EAAE,WAAW;CACxC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,sBAAsB,CAAC,SAAS,CAAC,0BAA0B,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;IACpH,IAAI,SAAS,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC;IAC5C,IAAI,SAAS,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC;AAC9C;CACA,GAAE,MAAM,CAAC,aAAa,GAAG,gBAAgB,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;CACzF,GAAE,MAAM,CAAC,YAAY,GAAG,gBAAgB,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;CACtF,GAAE,MAAM,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC;CACxG,GAAE,MAAM,CAAC,eAAe,GAAG,gBAAgB,CAAC,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;CAC/F,GAAE,MAAM,CAAC,YAAY,GAAG,gBAAgB,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;AACtF;IACE,OAAO,MAAM,CAAC;IACd;AACF;CACA,EAAC,CAAC,CAAC;AACH;CACA,CAAA,IAAI,gBAAgB,GAAG,SAAS,CAAC,cAAc,CAAC;CAChD,CAAA,IAAI,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;AAC1C;CACA,CAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE;CAC7B,EAAC,KAAK,EAAE;IACN,IAAI,EAAE,QAAQ;IACd;AACF;CACA,EAAC,MAAM,EAAE;IACP,KAAK,EAAE,CAAC;KACP,IAAI,EAAE,QAAQ;KACd,QAAQ,EAAE,QAAQ;KAClB,EAAE,EAAE,UAAU;CACjB,IAAG,CAAC;IACF,KAAK,EAAE,CAAC;KACP,IAAI,EAAE,QAAQ;KACd,QAAQ,EAAE,MAAM;KAChB,EAAE,EAAE,UAAU;CACjB,IAAG,CAAC;IACF;AACF;CACA,EAAC,QAAQ,EAAE;CACX,GAAE,SAAS,EAAE;KACV,KAAK,EAAE,WAAW;CACrB;MACI,OAAO,EAAE,CAAC;MACV;CACJ,IAAG,KAAK,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;CAC/B,KAAI,IAAI,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;CACpE,KAAI,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;MAClE,OAAO,YAAY,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC;MAC1F;KACD;IACD;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,IAAI,iBAAiB,GAAG,sBAAsB,CAAC,MAAM,CAAC;CACtD;CACA;CACA;CACA,EAAC,eAAe,EAAE,QAAQ,CAAC,KAAK;AAChC;CACA;CACA;CACA;CACA,EAAC,mBAAmB,EAAE;CACtB,GAAE,iBAAiB;CACnB,GAAE,aAAa;CACf,GAAE,aAAa;CACf,GAAE,sBAAsB;CACxB,GAAE,kBAAkB;CACpB,GAAE,kBAAkB;CACpB,GAAE,aAAa;CACf,GAAE,WAAW;CACb,GAAE,YAAY;CACd,GAAE,UAAU;IACV;AACF;CACA;CACA;CACA;CACA,EAAC,MAAM,EAAE,SAAS,KAAK,EAAE;CACzB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;CAC1B,GAAE,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;AACzB;CACA;IACE,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,KAAK,EAAE;KAC7C,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CACzC,IAAG,CAAC,CAAC;IACH;AACF;CACA;CACA;CACA;GACC,aAAa,EAAE,SAAS,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;CAC9C,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IACxB,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;IAChC,IAAI,MAAM,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,MAAM,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,OAAO,GAAG,EAAE,CAAC,0BAA0B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;CAC5D,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CACzC,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC;AACzB;CACA,GAAE,IAAI,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAChI,IAAI,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AACxF;CACA,GAAE,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;CACzB,GAAE,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;CACzB,GAAE,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;CAC3B,GAAE,KAAK,CAAC,aAAa,GAAG,OAAO,CAAC;CAChC,GAAE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;IACrB,KAAK,CAAC,MAAM,GAAG;CACjB,IAAG,eAAe,EAAE,OAAO,CAAC,eAAe;CAC3C,IAAG,WAAW,EAAE,OAAO,CAAC,WAAW;CACnC,IAAG,WAAW,EAAE,OAAO,CAAC,WAAW;CACnC,IAAG,SAAS,EAAE,OAAO,CAAC,SAAS;CAC/B,IAAG,UAAU,EAAE,OAAO,CAAC,UAAU;CACjC,IAAG,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC1B,MAAM,EAAE,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM;CACrC,IAAG,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;KACzC,CAAC,EAAE,CAAC;KACJ,CAAC,EAAE,CAAC;CACP,IAAG,CAAC;AACJ;CACA,GAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IACd;AACF;CACA;CACA;CACA;CACA,EAAC,aAAa,EAAE,SAAS,KAAK,EAAE;CAChC,GAAE,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;CAC3B,GAAE,IAAI,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC;CAC/B,GAAE,IAAI,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;AAC9C;IACE,KAAK,CAAC,cAAc,GAAG;CACzB,IAAG,eAAe,EAAE,KAAK,CAAC,eAAe;CACzC,IAAG,WAAW,EAAE,KAAK,CAAC,WAAW;CACjC,IAAG,WAAW,EAAE,KAAK,CAAC,WAAW;CACjC,IAAG,MAAM,EAAE,KAAK,CAAC,MAAM;CACvB,IAAG,CAAC;AACJ;CACA,GAAE,KAAK,CAAC,eAAe,GAAG,gBAAgB,CAAC,OAAO,CAAC,oBAAoB,EAAE,aAAa,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;CACjH,GAAE,KAAK,CAAC,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,EAAE,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;CACrG,GAAE,KAAK,CAAC,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACpF,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IACpD;AACF;CACA;CACA;CACA;CACA,EAAC,0BAA0B,EAAE,SAAS,KAAK,EAAE,KAAK,EAAE;CACpD,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;CACvB,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;IAC9B,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;IAChC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;CACvC,GAAE,IAAI,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,0BAA0B,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AAChG;CACA;IACE,IAAI,OAAO,GAAG;KACb,KAAK,EAAE,KAAK;KACZ,SAAS,EAAE,KAAK;KAChB,OAAO,EAAE,OAAO;CACnB,IAAG,YAAY,EAAE,EAAE,CAAC,KAAK;CACzB,IAAG,CAAC;AACJ;CACA;CACA,GAAE,IAAI,EAAE,CAAC,eAAe,KAAK,MAAM,EAAE;KAClC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;KACtC;AACH;CACA;CACA,GAAE,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;KACzB,MAAM,CAAC,MAAM;KACb,IAAI,CAAC,CAAC;CACT,IAAG,EAAE,CAAC,OAAO,CAAC,MAAM;KACjB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM;CACtC,IAAG,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACrB;IACE,OAAO,MAAM,CAAC;IACd;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,IAAI,gBAAgB,GAAG,SAAS,CAAC,cAAc,CAAC;AAChD;CACA,CAAA,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;CACnB,CAAA,IAAI,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC;CAC3B,CAAA,IAAI,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC;AACzB;CACA,CAAA,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE;CAC/B,EAAC,SAAS,EAAE;CACZ;IACE,aAAa,EAAE,IAAI;CACrB;IACE,YAAY,EAAE,KAAK;IACnB;CACF,EAAC,KAAK,EAAE;IACN,IAAI,EAAE,QAAQ;IACd;CACF,EAAC,cAAc,EAAE,SAAS,KAAK,EAAE;IAC/B,IAAI,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;CAC1C,GAAE,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;CACxB,GAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;CAC/B,GAAE,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC;AACtC;CACA,GAAE,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;CACnD,GAAE,IAAI,QAAQ,CAAC,MAAM,EAAE;KACpB,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CAC9D,KAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;CAC9D,KAAI,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;CACxE,KAAI,YAAY,CAAC,KAAK,CAAC,eAAe,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;CACxE,KAAI,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;CACnB,MAAK,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;OACzD;MACD;KACD;AACH;CACA,GAAE,OAAO,IAAI,CAAC,SAAS,CAAC;IACtB;CACF,EAAC,MAAM,EAAE;CACT,GAAE,MAAM,EAAE;CACV,IAAG,cAAc,EAAE,SAAS,KAAK,EAAE;CACnC,KAAI,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;CAC1B,KAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;OAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,KAAK,EAAE,CAAC,EAAE;QACzC,IAAI,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9C;CACA,OAAM,OAAO;SACN,IAAI,EAAE,KAAK;CAClB,QAAO,SAAS,EAAE,KAAK,CAAC,eAAe;CACvC,QAAO,WAAW,EAAE,KAAK,CAAC,WAAW;CACrC,QAAO,SAAS,EAAE,KAAK,CAAC,WAAW;SAC5B,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM;AACrE;CACA;SACO,KAAK,EAAE,CAAC;CACf,QAAO,CAAC;CACR,OAAM,CAAC,CAAC;OACH;MACD,OAAO,EAAE,CAAC;MACV;KACD;AACH;CACA,GAAE,OAAO,EAAE,SAAS,CAAC,EAAE,UAAU,EAAE;CACnC,IAAG,IAAI,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;CAChC,IAAG,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;CAC1B,IAAG,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;AACrB;KACG,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;MACrE,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;CACnC;CACA,KAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;CAC1B,MAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;OACnD;MACD;AACJ;CACA,IAAG,KAAK,CAAC,MAAM,EAAE,CAAC;KACf;IACD;AACF;CACA;GACC,gBAAgB,EAAE,EAAE;AACrB;CACA;GACC,QAAQ,EAAE,CAAC,SAAS;AACrB;CACA;GACC,aAAa,EAAE,WAAW;AAC3B;CACA;CACA,EAAC,QAAQ,EAAE;CACX,GAAE,SAAS,EAAE;KACV,KAAK,EAAE,WAAW;MACjB,OAAO,EAAE,CAAC;MACV;CACJ,IAAG,KAAK,EAAE,SAAS,WAAW,EAAE,IAAI,EAAE;MAClC,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;MAC/C,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACvF;CACA,KAAI,IAAI,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;CACtC;CACA;CACA,MAAK,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;CACnC,MAAK,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;CAC3B,MAAK,MAAM;OACN,SAAS,IAAI,KAAK,CAAC;OACnB;AACL;MACI,OAAO,SAAS,CAAC;MACjB;KACD;IACD;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,IAAI,mBAAmB,GAAG,sBAAsB,CAAC,MAAM,CAAC;AACxD;CACA,EAAC,eAAe,EAAE,QAAQ,CAAC,GAAG;AAC9B;CACA,EAAC,UAAU,EAAE,SAAS,CAAC,IAAI;AAC3B;CACA;CACA;CACA;CACA,EAAC,mBAAmB,EAAE;CACtB,GAAE,iBAAiB;CACnB,GAAE,aAAa;CACf,GAAE,aAAa;CACf,GAAE,aAAa;CACf,GAAE,sBAAsB;CACxB,GAAE,kBAAkB;CACpB,GAAE,kBAAkB;IAClB;AACF;CACA;CACA,EAAC,YAAY,EAAE,SAAS,YAAY,EAAE;CACtC,GAAE,IAAI,SAAS,GAAG,CAAC,CAAC;AACpB;CACA,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,EAAE,CAAC,EAAE;KACtC,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;MACnC,EAAE,SAAS,CAAC;MACZ;KACD;AACH;IACE,OAAO,SAAS,CAAC;IACjB;AACF;CACA,EAAC,MAAM,EAAE,SAAS,KAAK,EAAE;CACzB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;CACvB,GAAE,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;CAClC,GAAE,IAAI,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC;CAC3B,GAAE,IAAI,MAAM,GAAG,CAAC,CAAC;CACjB,GAAE,IAAI,MAAM,GAAG,CAAC,CAAC;CACjB,GAAE,IAAI,OAAO,GAAG,CAAC,CAAC;CAClB,GAAE,IAAI,OAAO,GAAG,CAAC,CAAC;CAClB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;CAC1B,GAAE,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACrB,IAAI,MAAM,GAAG,IAAI,CAAC,gBAAgB,GAAG,GAAG,IAAI,CAAC,CAAC;CAChD,GAAE,IAAI,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;IACvC,IAAI,WAAW,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC;AACnC;CACA;CACA,GAAE,IAAI,aAAa,GAAG,WAAW,EAAE;KAChC,IAAI,UAAU,GAAG,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC;CAChD,IAAG,UAAU,IAAI,UAAU,IAAI,IAAI,GAAG,CAAC,WAAW,GAAG,UAAU,GAAG,CAAC,IAAI,GAAG,WAAW,GAAG,CAAC,CAAC;CAC1F,IAAG,IAAI,QAAQ,GAAG,UAAU,GAAG,aAAa,CAAC;KAC1C,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;KAClC,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;KAClC,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KAC9B,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;CACjC,IAAG,IAAI,SAAS,GAAG,CAAC,UAAU,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC,KAAK,QAAQ,IAAI,WAAW,CAAC;CACjF,IAAG,IAAI,UAAU,GAAG,CAAC,UAAU,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,KAAK,QAAQ,IAAI,WAAW,GAAG,SAAS,CAAC;KAC3G,IAAI,WAAW,GAAG,UAAU,KAAK,CAAC,IAAI,IAAI,QAAQ,IAAI,IAAI,CAAC;CAC9D,IAAG,IAAI,WAAW,GAAG,CAAC,UAAU,IAAI,CAAC,SAAS,IAAI,QAAQ,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,IAAI,GAAG,SAAS,CAAC;KACvG,IAAI,IAAI,GAAG,WAAW,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;KACrF,IAAI,IAAI,GAAG,WAAW,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;KACrF,IAAI,IAAI,GAAG,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;KAClF,IAAI,IAAI,GAAG,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;KACnF,MAAM,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC;KAC3B,MAAM,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC;KAC3B,OAAO,GAAG,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;KAC7B,OAAO,GAAG,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;KAC7B;AACH;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACjD,IAAG,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC7D;AACH;IACE,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAC;CAC7C,GAAE,QAAQ,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC;CAC7E,GAAE,SAAS,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC;IAC5E,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;CACrE,GAAE,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5D,KAAK,CAAC,YAAY,GAAG,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,KAAK,EAAE,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAC,CAAC;IACzG,KAAK,CAAC,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC;IAC5C,KAAK,CAAC,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC;AAC9C;IACE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC;AACnC;IACE,EAAE,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAC5F,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,GAAG,KAAK,CAAC,YAAY,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC;AAClF;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACjD,IAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;KACpC;IACD;AACF;GACC,aAAa,EAAE,SAAS,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;CAC5C,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;CACvB,GAAE,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;CAClC,GAAE,IAAI,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC;CAC3B,GAAE,IAAI,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC;CACrC,GAAE,IAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC;CACvD,GAAE,IAAI,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC;CACvD,GAAE,IAAI,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC;CACjC,GAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;CAC/B,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;CAChC,GAAE,IAAI,aAAa,GAAG,KAAK,IAAI,aAAa,CAAC,aAAa,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,CAAC;CACtK,GAAE,IAAI,WAAW,GAAG,KAAK,IAAI,aAAa,CAAC,YAAY,GAAG,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC;CAC7E,GAAE,IAAI,WAAW,GAAG,KAAK,IAAI,aAAa,CAAC,YAAY,GAAG,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC;IAC3E,IAAI,OAAO,GAAG,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;AACnC;CACA,GAAE,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE;CACxB;CACA,IAAG,aAAa,EAAE,EAAE,CAAC,KAAK;KACvB,MAAM,EAAE,KAAK;AAChB;CACA;CACA,IAAG,MAAM,EAAE;CACX,KAAI,eAAe,EAAE,OAAO,CAAC,eAAe;CAC5C,KAAI,WAAW,EAAE,OAAO,CAAC,WAAW;CACpC,KAAI,WAAW,EAAE,OAAO,CAAC,WAAW;CACpC,KAAI,WAAW,EAAE,OAAO,CAAC,WAAW;CACpC,KAAI,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC,OAAO;CAC9B,KAAI,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC,OAAO;MAC1B,UAAU,EAAE,UAAU;MACtB,QAAQ,EAAE,QAAQ;MAClB,aAAa,EAAE,aAAa;MAC5B,WAAW,EAAE,WAAW;MACxB,WAAW,EAAE,WAAW;MACxB,KAAK,EAAE,SAAS,CAAC,qBAAqB,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;MACtF;CACJ,IAAG,CAAC,CAAC;AACL;CACA,GAAE,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC;AACzB;CACA;IACE,IAAI,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE;CAC9C,IAAG,IAAI,KAAK,KAAK,CAAC,EAAE;CACpB,KAAI,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC;CACrC,KAAI,MAAM;CACV,KAAI,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;MAChE;AACJ;KACG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,CAAC;KACxD;AACH;CACA,GAAE,GAAG,CAAC,KAAK,EAAE,CAAC;IACZ;AACF;GACC,cAAc,EAAE,WAAW;CAC5B,GAAE,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;CAClC,GAAE,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;CAC5B,GAAE,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,CAAC;AACZ;CACA,GAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,KAAK,EAAE;KAClD,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;MACrC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;MACzB;CACJ,IAAG,CAAC,CAAC;AACL;CACA;CACA;CACA;AACA;IACE,OAAO,KAAK,CAAC;IACb;AACF;CACA,EAAC,sBAAsB,EAAE,SAAS,KAAK,EAAE;IACvC,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC;IACjC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;CAClC,IAAG,OAAO,WAAW,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;KAC/C;IACD,OAAO,CAAC,CAAC;IACT;AACF;CACA;CACA,EAAC,iBAAiB,EAAE,SAAS,IAAI,EAAE;CACnC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,GAAG,GAAG,CAAC,CAAC;CACd,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;CACvB,GAAE,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC;AACvE;IACE,IAAI,CAAC,IAAI,EAAE;CACb;KACG,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACjE,KAAI,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;OAC9B,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;CACpC,MAAK,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;CACtB,MAAK,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE;CACzB,OAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B;CACN,MAAK,MAAM;OACN;MACD;KACD;AACH;IACE,IAAI,CAAC,IAAI,EAAE;KACV,OAAO,CAAC,CAAC;KACT;AACH;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACjD,IAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;KACd,IAAI,UAAU,EAAE;CACnB,KAAI,UAAU,CAAC,UAAU,EAAE,CAAC;MACxB,OAAO,GAAG,UAAU,CAAC,0BAA0B,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;CAC5D,KAAI,MAAM;CACV,KAAI,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC;MACvB;CACJ,IAAG,IAAI,OAAO,CAAC,WAAW,KAAK,OAAO,EAAE;CACxC,KAAI,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;CACtC,KAAI,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC;AAC1C;MACI,GAAG,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,CAAC;MAC5C,GAAG,GAAG,UAAU,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,CAAC;MAC1C;KACD;IACD,OAAO,GAAG,CAAC;IACX;AACF;CACA;CACA;CACA;CACA,EAAC,aAAa,EAAE,SAAS,GAAG,EAAE;CAC9B,GAAE,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC;CACzB,GAAE,IAAI,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC;CAC7B,GAAE,IAAI,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;AAC9C;IACE,GAAG,CAAC,cAAc,GAAG;CACvB,IAAG,eAAe,EAAE,KAAK,CAAC,eAAe;CACzC,IAAG,WAAW,EAAE,KAAK,CAAC,WAAW;CACjC,IAAG,WAAW,EAAE,KAAK,CAAC,WAAW;CACjC,IAAG,CAAC;AACJ;CACA,GAAE,KAAK,CAAC,eAAe,GAAG,gBAAgB,CAAC,OAAO,CAAC,oBAAoB,EAAE,aAAa,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;CACjH,GAAE,KAAK,CAAC,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,EAAE,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;CACrG,GAAE,KAAK,CAAC,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACpF;AACF;CACA;CACA;CACA;CACA;CACA,EAAC,oBAAoB,EAAE,SAAS,YAAY,EAAE;CAC9C,GAAE,IAAI,gBAAgB,GAAG,CAAC,CAAC;AAC3B;CACA,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,EAAE,CAAC,EAAE;KACtC,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;MACnC,gBAAgB,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;MAC3C;KACD;AACH;IACE,OAAO,gBAAgB,CAAC;IACxB;AACF;CACA;CACA;CACA;CACA,EAAC,cAAc,EAAE,SAAS,YAAY,EAAE;IACtC,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvF;AACF;CACA;CACA;CACA;CACA;GACC,6BAA6B,EAAE,WAAW;CAC3C,GAAE,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClE;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,aAAa,CAAC,IAAI,CAAC,eAAe,EAAE;CACpC,EAAC,KAAK,EAAE;IACN,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,GAAG;IACT;AACF;CACA,EAAC,MAAM,EAAE;IACP,KAAK,EAAE,CAAC;KACP,IAAI,EAAE,QAAQ;KACd,QAAQ,EAAE,QAAQ;CACrB,IAAG,CAAC;AACJ;IACE,KAAK,EAAE,CAAC;KACP,IAAI,EAAE,UAAU;KAChB,QAAQ,EAAE,MAAM;KAChB,MAAM,EAAE,IAAI;CACf,IAAG,SAAS,EAAE;MACV,eAAe,EAAE,IAAI;MACrB;CACJ,IAAG,CAAC;IACF;AACF;CACA,EAAC,QAAQ,EAAE;CACX,GAAE,SAAS,EAAE;KACV,aAAa,EAAE,MAAM;KACrB;IACD;AACF;CACA,EAAC,QAAQ,EAAE;IACT,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,GAAG;IACT;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE;CAC7B,EAAC,QAAQ,EAAE;CACX,GAAE,aAAa,EAAE;KACd,kBAAkB,EAAE,GAAG;KACvB,aAAa,EAAE,GAAG;KAClB;IACD;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,IAAI,wBAAwB,GAAG,cAAc,CAAC,MAAM,CAAC;CACrD;CACA;CACA;GACC,gBAAgB,EAAE,WAAW;CAC9B,GAAE,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC;IAC9B;AACF;CACA;CACA;CACA;GACC,gBAAgB,EAAE,WAAW;CAC9B,GAAE,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC;IAC9B;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,IAAI,gBAAgB,GAAG,SAAS,CAAC,cAAc,CAAC;CAChD,CAAA,IAAI,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;CAC1C,CAAA,IAAI,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC;AACpD;CACA,CAAA,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE;GAC1B,SAAS,EAAE,IAAI;GACf,QAAQ,EAAE,KAAK;AAChB;CACA,EAAC,KAAK,EAAE;IACN,IAAI,EAAE,OAAO;IACb;AACF;CACA,EAAC,MAAM,EAAE;IACP,KAAK,EAAE,CAAC;KACP,IAAI,EAAE,UAAU;KAChB,EAAE,EAAE,UAAU;CACjB,IAAG,CAAC;IACF,KAAK,EAAE,CAAC;KACP,IAAI,EAAE,QAAQ;KACd,EAAE,EAAE,UAAU;CACjB,IAAG,CAAC;IACF;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,SAAS,SAAS,CAAC,KAAK,EAAE,eAAe,EAAE;CAC3C,EAAC,IAAI,QAAQ,GAAG,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;CACnD,EAAC,IAAI,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;CAChC,EAAC,IAAI,GAAG,GAAG,QAAQ,CAAC,GAAG,KAAK,SAAS,GAAG,eAAe,GAAG,CAAC,CAAC;CAC5D,EAAC,IAAI,GAAG,GAAG,QAAQ,CAAC,GAAG,KAAK,SAAS,GAAG,eAAe,GAAG,CAAC,CAAC;CAC5D,EAAC,OAAO;CACR,GAAE,KAAK,EAAE,OAAO,GAAG,GAAG,GAAG,GAAG;CAC5B,GAAE,GAAG,EAAE,OAAO,GAAG,GAAG,GAAG,GAAG;CAC1B,GAAE,CAAC;GACF;AACD;CACA,CAAA,SAAS,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE;CAClD,EAAC,IAAI,eAAe,GAAG,WAAW,GAAG,CAAC,CAAC;GACtC,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;GAC3C,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAC5C;CACA,EAAC,OAAO;CACR,GAAE,GAAG,EAAE,CAAC,CAAC,GAAG;CACZ,GAAE,KAAK,EAAE,CAAC,CAAC,GAAG;CACd,GAAE,MAAM,EAAE,CAAC,CAAC,KAAK;CACjB,GAAE,IAAI,EAAE,CAAC,CAAC,KAAK;CACf,GAAE,CAAC;GACF;AACD;EACA,SAAS,MAAM,CAAC,KAAK,EAAE;GACtB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAChB;CACA,EAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;CAChC,GAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC;CAChB,GAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;CAClB,GAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;CACnB,GAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;CACjB,GAAE,MAAM;IACN,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtB;AACF;CACA,EAAC,OAAO;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;CACT,GAAE,CAAC;GACF;AACD;AACA;CACA,CAAA,IAAI,eAAe,GAAG,sBAAsB,CAAC,MAAM,CAAC;AACpD;CACA,EAAC,kBAAkB,EAAE,QAAQ,CAAC,IAAI;AAClC;CACA,EAAC,eAAe,EAAE,QAAQ,CAAC,KAAK;AAChC;CACA;CACA;CACA;CACA,EAAC,sBAAsB,EAAE;CACzB,GAAE,iBAAiB;CACnB,GAAE,gBAAgB;CAClB,GAAE,aAAa;CACf,GAAE,YAAY;CACd,GAAE,kBAAkB;CACpB,GAAE,iBAAiB;CACnB,GAAE,aAAa;CACf,GAAE,wBAAwB;CAC1B,GAAE,MAAM;IACN;AACF;CACA;CACA;CACA;CACA,EAAC,mBAAmB,EAAE;IACpB,eAAe,EAAE,sBAAsB;IACvC,WAAW,EAAE,kBAAkB;IAC/B,WAAW,EAAE,kBAAkB;IAC/B,SAAS,EAAE,gBAAgB;IAC3B,oBAAoB,EAAE,2BAA2B;IACjD,gBAAgB,EAAE,uBAAuB;IACzC,gBAAgB,EAAE,uBAAuB;IACzC,WAAW,EAAE,kBAAkB;IAC/B,UAAU,EAAE,YAAY;IACxB,MAAM,EAAE,aAAa;IACrB,QAAQ,EAAE,eAAe;IACzB;AACF;CACA,EAAC,MAAM,EAAE,SAAS,KAAK,EAAE;CACzB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;CAC1B,GAAE,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;IACxB,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;CACjC,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC;CAC1B,GAAE,IAAI,QAAQ,GAAG,EAAE,CAAC,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;CACrF,GAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AACd;CACA,GAAE,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;CAC9C,GAAE,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9C;CACA;IACE,IAAI,QAAQ,EAAE;CAChB;CACA,IAAG,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE;CACzE,KAAI,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;MACpC;AACJ;CACA;CACA,IAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC;CAC5B,IAAG,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,KAAK,CAAC;CACjC;CACA,IAAG,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;CAC3B;KACG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC;AACxD;CACA,IAAG,IAAI,CAAC,KAAK,EAAE,CAAC;KACb;AACH;CACA;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACnD,IAAG,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;KACtC;AACH;IACE,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,CAAC,EAAE;CAC7C,IAAG,EAAE,CAAC,yBAAyB,EAAE,CAAC;KAC/B;AACH;CACA;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACnD,IAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;KAClB;IACD;AACF;GACC,aAAa,EAAE,SAAS,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;CAC9C,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IACxB,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;CAClC,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;CAChC,GAAE,IAAI,YAAY,GAAG,EAAE,CAAC,KAAK,CAAC;IAC5B,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CAClC,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC;CAC1B,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC;IACxB,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;CACtC,GAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACX;IACE,IAAI,OAAO,GAAG,EAAE,CAAC,0BAA0B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC5D;CACA,GAAE,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;CAC5F,GAAE,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;AACrF;CACA;CACA,GAAE,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;CACzB,GAAE,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;CACzB,GAAE,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;CAC3B,GAAE,KAAK,CAAC,aAAa,GAAG,YAAY,CAAC;CACrC,GAAE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;AACvB;CACA;IACE,KAAK,CAAC,MAAM,GAAG;KACd,CAAC,EAAE,CAAC;KACJ,CAAC,EAAE,CAAC;CACP,IAAG,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;CAC5C;CACA,IAAG,MAAM,EAAE,OAAO,CAAC,MAAM;CACzB,IAAG,UAAU,EAAE,OAAO,CAAC,UAAU;CACjC,IAAG,QAAQ,EAAE,OAAO,CAAC,QAAQ;CAC7B,IAAG,eAAe,EAAE,OAAO,CAAC,eAAe;CAC3C,IAAG,WAAW,EAAE,OAAO,CAAC,WAAW;CACnC,IAAG,WAAW,EAAE,OAAO,CAAC,WAAW;CACnC,IAAG,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC;KAC5E,WAAW,EAAE,SAAS,GAAG,SAAS,CAAC,WAAW,GAAG,KAAK;CACzD;CACA,IAAG,SAAS,EAAE,OAAO,CAAC,SAAS;CAC/B,IAAG,CAAC;IACF;AACF;CACA;CACA;CACA;CACA,EAAC,6BAA6B,EAAE,SAAS,OAAO,EAAE;CAClD,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC;IACxB,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;IAClC,IAAI,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;IAC/B,IAAI,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;CAC1C,GAAE,IAAI,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,6BAA6B,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AACnG;CACA;CACA;CACA;CACA,GAAE,MAAM,CAAC,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;CACxE,GAAE,MAAM,CAAC,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC3E,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;CAChG,GAAE,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC/G;IACE,OAAO,MAAM,CAAC;IACd;AACF;GACC,eAAe,EAAE,SAAS,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE;CACvD,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;CACvB,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC;CAC1B,GAAE,IAAI,MAAM,GAAG,CAAC,CAAC;CACjB,GAAE,IAAI,MAAM,GAAG,CAAC,CAAC;CACjB,GAAE,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC;AACnE;CACA,GAAE,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE;KAC3B,UAAU,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;CAC7C,IAAG,QAAQ,GAAG,KAAK,CAAC,6BAA6B,EAAE,CAAC;CACpD,IAAG,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC1B;KACG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CAC9B,KAAI,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;CACzB,KAAI,IAAI,MAAM,CAAC,KAAK,KAAK,YAAY,EAAE;CACvC,MAAK,MAAM;OACN;AACL;CACA,KAAI,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;CAC3C,KAAI,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,EAAE,EAAE;CAChE,MAAK,iBAAiB,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;CAC/D,MAAK,IAAI,iBAAiB,GAAG,CAAC,EAAE;CAChC,OAAM,MAAM,IAAI,iBAAiB,IAAI,CAAC,CAAC;CACvC,OAAM,MAAM;CACZ,OAAM,MAAM,IAAI,iBAAiB,IAAI,CAAC,CAAC;QACjC;OACD;MACD;AACJ;CACA,IAAG,IAAI,UAAU,GAAG,CAAC,EAAE;MACnB,OAAO,MAAM,CAAC,gBAAgB,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;MACpD;KACD,OAAO,MAAM,CAAC,gBAAgB,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;KACpD;CACH,GAAE,OAAO,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACtC;AACF;GACC,yBAAyB,EAAE,WAAW;CACvC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;CACvB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IACxB,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;CACtC,GAAE,IAAI,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC;IAC3B,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC;AACpC;CACA;CACA,GAAE,IAAI,SAAS,CAAC,QAAQ,EAAE;KACvB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE;CACvC,KAAI,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;CAC3B,KAAI,CAAC,CAAC;KACH;AACH;IACE,SAAS,eAAe,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;CACzC,IAAG,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;KACxC;AACH;CACA,GAAE,IAAI,SAAS,CAAC,sBAAsB,KAAK,UAAU,EAAE;CACvD,IAAG,SAAS,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;CACzC,IAAG,MAAM;CACT,IAAG,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;MAChD,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;CAC7B,KAAI,aAAa,GAAG,SAAS,CAAC,WAAW;OACpC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM;CAC7C,MAAK,KAAK;OACL,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM;OACpC,SAAS,CAAC,OAAO;CACtB,MAAK,CAAC;MACF,KAAK,CAAC,qBAAqB,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;MACvD,KAAK,CAAC,qBAAqB,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;MACvD,KAAK,CAAC,iBAAiB,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;MAC/C,KAAK,CAAC,iBAAiB,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;MAC/C;KACD;AACH;IACE,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE;CACnD,IAAG,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;MAChD,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;CAC7B,KAAI,IAAI,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE;CACpC,MAAK,IAAI,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;CAC7D,OAAM,KAAK,CAAC,qBAAqB,GAAG,eAAe,CAAC,KAAK,CAAC,qBAAqB,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;CACxG,OAAM,KAAK,CAAC,qBAAqB,GAAG,eAAe,CAAC,KAAK,CAAC,qBAAqB,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAClG;OACD,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;CAC7E,OAAM,KAAK,CAAC,iBAAiB,GAAG,eAAe,CAAC,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;CAChG,OAAM,KAAK,CAAC,iBAAiB,GAAG,eAAe,CAAC,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1F;OACD;MACD;KACD;IACD;AACF;GACC,IAAI,EAAE,WAAW;CAClB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;CACvB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IACxB,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;CAC/B,GAAE,IAAI,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC;CAC7B,GAAE,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;CAC5B,GAAE,IAAI,CAAC,GAAG,CAAC,CAAC;CACZ,GAAE,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;IACzB,IAAI,IAAI,CAAC;AACX;CACA,GAAE,IAAI,EAAE,CAAC,SAAS,EAAE;KACjB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;AACnC;KACG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE;CACxC,KAAI,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;CACzD,KAAI,KAAK,EAAE,IAAI,CAAC,KAAK,KAAK,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;CACxE,KAAI,GAAG,EAAE,IAAI,CAAC,GAAG,KAAK,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;CACrD,KAAI,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;CAC7E,KAAI,CAAC,CAAC;AACN;CACA,IAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACvB;KACG,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KACvC;AACH;CACA;CACA,GAAE,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;KACrB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACrB;IACD;AACF;CACA;CACA;CACA;CACA,EAAC,aAAa,EAAE,SAAS,KAAK,EAAE;CAChC,GAAE,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;CAC3B,GAAE,IAAI,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC;CAC/B,GAAE,IAAI,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;AAC9C;IACE,KAAK,CAAC,cAAc,GAAG;CACzB,IAAG,eAAe,EAAE,KAAK,CAAC,eAAe;CACzC,IAAG,WAAW,EAAE,KAAK,CAAC,WAAW;CACjC,IAAG,WAAW,EAAE,KAAK,CAAC,WAAW;CACjC,IAAG,MAAM,EAAE,KAAK,CAAC,MAAM;CACvB,IAAG,CAAC;AACJ;CACA,GAAE,KAAK,CAAC,eAAe,GAAG,gBAAgB,CAAC,OAAO,CAAC,oBAAoB,EAAE,aAAa,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;CACjH,GAAE,KAAK,CAAC,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,EAAE,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;CACrG,GAAE,KAAK,CAAC,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CACtF,GAAE,KAAK,CAAC,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACrE;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,IAAI,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;AAC1C;CACA,CAAA,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE;CAChC,EAAC,KAAK,EAAE;IACN,IAAI,EAAE,cAAc;CACtB,GAAE,UAAU,EAAE;KACX,OAAO,EAAE,KAAK;KACd;CACH,GAAE,SAAS,EAAE;KACV,QAAQ,EAAE,IAAI;KACd;CACH,GAAE,WAAW,EAAE;KACZ,OAAO,EAAE,KAAK;KACd;CACH,GAAE,KAAK,EAAE;KACN,WAAW,EAAE,IAAI;KACjB;IACD;AACF;CACA;CACA,EAAC,SAAS,EAAE;IACV,aAAa,EAAE,IAAI;IACnB,YAAY,EAAE,IAAI;IAClB;AACF;CACA,EAAC,UAAU,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE;CAC3B,EAAC,cAAc,EAAE,SAAS,KAAK,EAAE;IAC/B,IAAI,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;CAC1C,GAAE,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;CACxB,GAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;CAC/B,GAAE,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC;AACtC;CACA,GAAE,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;CACnD,GAAE,IAAI,QAAQ,CAAC,MAAM,EAAE;KACpB,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CAC9D,KAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;CAC9D,KAAI,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;CACxE,KAAI,YAAY,CAAC,KAAK,CAAC,eAAe,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;CACxE,KAAI,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;CACnB,MAAK,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;OACzD;MACD;KACD;AACH;CACA,GAAE,OAAO,IAAI,CAAC,SAAS,CAAC;IACtB;CACF,EAAC,MAAM,EAAE;CACT,GAAE,MAAM,EAAE;CACV,IAAG,cAAc,EAAE,SAAS,KAAK,EAAE;CACnC,KAAI,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;CAC1B,KAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;OAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,KAAK,EAAE,CAAC,EAAE;QACzC,IAAI,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9C;CACA,OAAM,OAAO;SACN,IAAI,EAAE,KAAK;CAClB,QAAO,SAAS,EAAE,KAAK,CAAC,eAAe;CACvC,QAAO,WAAW,EAAE,KAAK,CAAC,WAAW;CACrC,QAAO,SAAS,EAAE,KAAK,CAAC,WAAW;SAC5B,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM;AACrE;CACA;SACO,KAAK,EAAE,CAAC;CACf,QAAO,CAAC;CACR,OAAM,CAAC,CAAC;OACH;MACD,OAAO,EAAE,CAAC;MACV;KACD;AACH;CACA,GAAE,OAAO,EAAE,SAAS,CAAC,EAAE,UAAU,EAAE;CACnC,IAAG,IAAI,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;CAChC,IAAG,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;CAC1B,IAAG,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;AACrB;KACG,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;MACrE,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;CACnC,KAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;MACnD;AACJ;CACA,IAAG,KAAK,CAAC,MAAM,EAAE,CAAC;KACf;IACD;AACF;CACA;CACA,EAAC,QAAQ,EAAE;CACX,GAAE,SAAS,EAAE;KACV,KAAK,EAAE,WAAW;MACjB,OAAO,EAAE,CAAC;MACV;CACJ,IAAG,KAAK,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;CAC/B,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;MACpD;KACD;IACD;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,IAAI,oBAAoB,GAAG,sBAAsB,CAAC,MAAM,CAAC;AACzD;CACA,EAAC,eAAe,EAAE,QAAQ,CAAC,GAAG;AAC9B;CACA,EAAC,UAAU,EAAE,SAAS,CAAC,IAAI;AAC3B;CACA;CACA;CACA;CACA,EAAC,mBAAmB,EAAE;CACtB,GAAE,iBAAiB;CACnB,GAAE,aAAa;CACf,GAAE,aAAa;CACf,GAAE,aAAa;CACf,GAAE,sBAAsB;CACxB,GAAE,kBAAkB;CACpB,GAAE,kBAAkB;IAClB;AACF;CACA;CACA;CACA;GACC,gBAAgB,EAAE,WAAW;IAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;IAC3B;AACF;CACA;CACA;CACA;GACC,gBAAgB,EAAE,WAAW;IAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;IAC3B;AACF;CACA,EAAC,MAAM,EAAE,SAAS,KAAK,EAAE;CACzB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;CAChC,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;CAC1B,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;IAC7C,IAAI,MAAM,GAAG,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC;IAC7B,IAAI,MAAM,GAAG,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC;CAC/B,GAAE,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;CACvB,GAAE,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC;AACrB;CACA,GAAE,EAAE,CAAC,aAAa,EAAE,CAAC;AACrB;IACE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,oBAAoB,EAAE,CAAC;AACzC;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;CACzD,IAAG,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;KAClB,KAAK,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;CAC/B,IAAG,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;KAClB,KAAK,IAAI,KAAK,CAAC;KACf;AACH;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACjD,IAAG,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAChE,IAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;KACpC;IACD;AACF;CACA;CACA;CACA;GACC,aAAa,EAAE,WAAW;CAC3B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;CACvB,GAAE,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;CAClC,GAAE,IAAI,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC;IACzB,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7F;CACA,GAAE,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;CAC/C,GAAE,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,KAAK,CAAC,WAAW,GAAG,GAAG,KAAK,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;CACnH,GAAE,KAAK,CAAC,YAAY,GAAG,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,sBAAsB,EAAE,CAAC;AAChG;CACA,GAAE,EAAE,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IACrE,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC;IACrD;AACF;GACC,aAAa,EAAE,SAAS,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;CAC5C,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;CACvB,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;CAChC,GAAE,IAAI,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC;CAC3B,GAAE,IAAI,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC;CACrC,GAAE,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACxB,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AACjC;CACA,GAAE,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;CAC9B,GAAE,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC9B;CACA;CACA,GAAE,IAAI,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC;IACxC,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,6BAA6B,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACzF,IAAI,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;CACrC,GAAE,IAAI,QAAQ,GAAG,UAAU,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACnE;IACE,IAAI,WAAW,GAAG,aAAa,CAAC,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,6BAA6B,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5G,IAAI,OAAO,GAAG,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;AACnC;CACA,GAAE,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE;CACxB;CACA,IAAG,aAAa,EAAE,EAAE,CAAC,KAAK;KACvB,MAAM,EAAE,KAAK;KACb,MAAM,EAAE,KAAK;AAChB;CACA;CACA,IAAG,MAAM,EAAE;CACX,KAAI,eAAe,EAAE,OAAO,CAAC,eAAe;CAC5C,KAAI,WAAW,EAAE,OAAO,CAAC,WAAW;CACpC,KAAI,WAAW,EAAE,OAAO,CAAC,WAAW;CACpC,KAAI,WAAW,EAAE,OAAO,CAAC,WAAW;MAChC,CAAC,EAAE,OAAO;MACV,CAAC,EAAE,OAAO;MACV,WAAW,EAAE,CAAC;CAClB,KAAI,WAAW,EAAE,KAAK,GAAG,WAAW,GAAG,QAAQ;MAC3C,UAAU,EAAE,KAAK,IAAI,aAAa,CAAC,aAAa,GAAG,iBAAiB,GAAG,UAAU;MACjF,QAAQ,EAAE,KAAK,IAAI,aAAa,CAAC,aAAa,GAAG,iBAAiB,GAAG,QAAQ;CACjF,KAAI,KAAK,EAAE,SAAS,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;MACpE;CACJ,IAAG,CAAC,CAAC;AACL;CACA,GAAE,GAAG,CAAC,KAAK,EAAE,CAAC;IACZ;AACF;GACC,oBAAoB,EAAE,WAAW;CAClC,GAAE,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;CAClC,GAAE,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;CAC5B,GAAE,IAAI,KAAK,GAAG,CAAC,CAAC;AAChB;CACA,GAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,KAAK,EAAE;CACrD,IAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;MACnD,KAAK,EAAE,CAAC;MACR;CACJ,IAAG,CAAC,CAAC;AACL;IACE,OAAO,KAAK,CAAC;IACb;AACF;CACA;CACA;CACA;CACA,EAAC,aAAa,EAAE,SAAS,GAAG,EAAE;CAC9B,GAAE,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC;CACzB,GAAE,IAAI,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC;CAC7B,GAAE,IAAI,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;CAC9C,GAAE,IAAI,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC;AAChD;IACE,GAAG,CAAC,cAAc,GAAG;CACvB,IAAG,eAAe,EAAE,KAAK,CAAC,eAAe;CACzC,IAAG,WAAW,EAAE,KAAK,CAAC,WAAW;CACjC,IAAG,WAAW,EAAE,KAAK,CAAC,WAAW;CACjC,IAAG,CAAC;AACJ;CACA,GAAE,KAAK,CAAC,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC,oBAAoB,EAAE,aAAa,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;CAC/G,GAAE,KAAK,CAAC,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,gBAAgB,EAAE,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;CACnG,GAAE,KAAK,CAAC,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAClF;AACF;CACA;CACA;CACA;CACA,EAAC,aAAa,EAAE,SAAS,KAAK,EAAE;CAChC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC;CACnC,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;CAChC,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;AAC1B;CACA,GAAE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;KAC1D,OAAO,CAAC,CAAC;KACT;AACH;CACA;IACE,IAAI,OAAO,GAAG;CAChB,IAAG,KAAK,EAAE,EAAE,CAAC,KAAK;KACf,SAAS,EAAE,KAAK;KAChB,OAAO,EAAE,OAAO;CACnB,IAAG,YAAY,EAAE,EAAE,CAAC,KAAK;CACzB,IAAG,CAAC;AACJ;IACE,OAAO,SAAS,CAAC;KAChB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK;CACtC,IAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,KAAK;CACxB,IAAG,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACnB;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;CACnE,CAAA,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE;GACzB,gBAAgB,EAAE,CAAC;CACpB,EAAC,CAAC,CAAC;AACH;CACA;EACA,IAAI,cAAc,GAAG,mBAAmB,CAAC;AACzC;CACA,CAAA,IAAI,gBAAgB,GAAG,SAAS,CAAC,cAAc,CAAC;AAChD;CACA,CAAA,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE;GAC3B,QAAQ,EAAE,KAAK;CAChB,EAAC,KAAK,EAAE;IACN,IAAI,EAAE,cAAc;IACpB;CACF,EAAC,QAAQ,EAAE;CACX,GAAE,IAAI,EAAE;KACL,IAAI,EAAE,OAAO;KACb,OAAO,EAAE,CAAC;KACV;IACD;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,IAAI,gBAAgB,GAAG,sBAAsB,CAAC,MAAM,CAAC;CACrD,EAAC,kBAAkB,EAAE,QAAQ,CAAC,IAAI;AAClC;CACA,EAAC,eAAe,EAAE,QAAQ,CAAC,KAAK;AAChC;CACA,EAAC,UAAU,EAAE,SAAS,CAAC,IAAI;AAC3B;CACA;CACA;CACA;CACA,EAAC,sBAAsB,EAAE;CACzB,GAAE,iBAAiB;CACnB,GAAE,aAAa;CACf,GAAE,aAAa;CACf,GAAE,gBAAgB;CAClB,GAAE,YAAY;CACd,GAAE,kBAAkB;CACpB,GAAE,iBAAiB;CACnB,GAAE,MAAM;IACN;AACF;CACA;CACA;CACA;CACA,EAAC,mBAAmB,EAAE;IACpB,eAAe,EAAE,sBAAsB;IACvC,WAAW,EAAE,kBAAkB;IAC/B,WAAW,EAAE,kBAAkB;IAC/B,SAAS,EAAE,gBAAgB;IAC3B,oBAAoB,EAAE,2BAA2B;IACjD,gBAAgB,EAAE,uBAAuB;IACzC,gBAAgB,EAAE,uBAAuB;IACzC,WAAW,EAAE,kBAAkB;IAC/B,UAAU,EAAE,YAAY;IACxB,MAAM,EAAE,aAAa;IACrB,QAAQ,EAAE,eAAe;IACzB;AACF;CACA;CACA;CACA;GACC,gBAAgB,EAAE,WAAW;IAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;IAC3B;AACF;CACA;CACA;CACA;GACC,gBAAgB,EAAE,WAAW;IAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;IAC3B;AACF;CACA,EAAC,MAAM,EAAE,SAAS,KAAK,EAAE;CACzB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;CAC1B,GAAE,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;IACxB,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;IAC7B,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;CAC7B,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC;CAC1B,GAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AACd;CACA;CACA,GAAE,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE;CACxE,IAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;KACpC;AACH;CACA;CACA,GAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;CACtB,GAAE,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,KAAK,CAAC;CAChC;CACA,GAAE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;CAC1B,GAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;CACpB;IACE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC;AACvD;CACA,GAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AACf;CACA;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACnD,IAAG,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;KACtC;AACH;CACA;CACA,GAAE,EAAE,CAAC,yBAAyB,EAAE,CAAC;AACjC;CACA;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACnD,IAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;KAClB;IACD;AACF;GACC,aAAa,EAAE,SAAS,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;CAC9C,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;CAClC,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;IAC9B,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;CAC7B,GAAE,IAAI,aAAa,GAAG,KAAK,CAAC,wBAAwB,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/E,IAAI,OAAO,GAAG,EAAE,CAAC,0BAA0B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1D,IAAI,SAAS,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;CAC9C,GAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC;CAClD,GAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC;AAClD;CACA;CACA,GAAE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;CACvB,GAAE,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;CAC3B,GAAE,KAAK,CAAC,aAAa,GAAG,EAAE,CAAC,KAAK,CAAC;CACjC,GAAE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;AACvB;CACA;IACE,KAAK,CAAC,MAAM,GAAG;KACd,CAAC,EAAE,CAAC;KACJ,CAAC,EAAE,CAAC;CACP,IAAG,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;CAC5C;CACA,IAAG,MAAM,EAAE,OAAO,CAAC,MAAM;CACzB,IAAG,UAAU,EAAE,OAAO,CAAC,UAAU;CACjC,IAAG,QAAQ,EAAE,OAAO,CAAC,QAAQ;CAC7B,IAAG,eAAe,EAAE,OAAO,CAAC,eAAe;CAC3C,IAAG,WAAW,EAAE,OAAO,CAAC,WAAW;CACnC,IAAG,WAAW,EAAE,OAAO,CAAC,WAAW;CACnC,IAAG,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC;AAC/E;CACA;CACA,IAAG,SAAS,EAAE,OAAO,CAAC,SAAS;CAC/B,IAAG,CAAC;IACF;AACF;CACA;CACA;CACA;GACC,6BAA6B,EAAE,WAAW;CAC3C,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC;IACxB,IAAI,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;CACjC,GAAE,IAAI,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,6BAA6B,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AACnG;CACA,GAAE,MAAM,CAAC,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;CACxE,GAAE,MAAM,CAAC,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvF;IACE,OAAO,MAAM,CAAC;IACd;AACF;GACC,yBAAyB,EAAE,WAAW;CACvC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IACxB,IAAI,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IAC9B,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC;AACpC;CACA;IACE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE;KACjC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE;CACvC,KAAI,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;CAC3B,KAAI,CAAC,CAAC;KACH;AACH;IACE,SAAS,eAAe,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;CACzC,IAAG,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;KACxC;AACH;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;KAChD,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;CAC5B,IAAG,aAAa,GAAG,SAAS,CAAC,WAAW;MACpC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM;CAClD,KAAI,KAAK;MACL,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM;MAC1C,KAAK,CAAC,OAAO;CACjB,KAAI,CAAC;AACL;CACA;KACG,KAAK,CAAC,qBAAqB,GAAG,eAAe,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KAC/F,KAAK,CAAC,qBAAqB,GAAG,eAAe,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;KAC/F,KAAK,CAAC,iBAAiB,GAAG,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KACvF,KAAK,CAAC,iBAAiB,GAAG,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;KACvF;IACD;AACF;CACA,EAAC,aAAa,EAAE,SAAS,KAAK,EAAE;CAChC,GAAE,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;CAC3B,GAAE,IAAI,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC;CAC/B,GAAE,IAAI,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;AAC9C;IACE,KAAK,CAAC,cAAc,GAAG;CACzB,IAAG,eAAe,EAAE,KAAK,CAAC,eAAe;CACzC,IAAG,WAAW,EAAE,KAAK,CAAC,WAAW;CACjC,IAAG,WAAW,EAAE,KAAK,CAAC,WAAW;CACjC,IAAG,MAAM,EAAE,KAAK,CAAC,MAAM;CACvB,IAAG,CAAC;AACJ;CACA,GAAE,KAAK,CAAC,eAAe,GAAG,gBAAgB,CAAC,OAAO,CAAC,oBAAoB,EAAE,aAAa,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;CACjH,GAAE,KAAK,CAAC,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,EAAE,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;CACrG,GAAE,KAAK,CAAC,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CACtF,GAAE,KAAK,CAAC,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACrE;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE;CAC9B,EAAC,KAAK,EAAE;IACN,IAAI,EAAE,QAAQ;IACd;AACF;CACA,EAAC,MAAM,EAAE;IACP,KAAK,EAAE,CAAC;KACP,EAAE,EAAE,UAAU;KACd,IAAI,EAAE,QAAQ;KACd,QAAQ,EAAE,QAAQ;CACrB,IAAG,CAAC;IACF,KAAK,EAAE,CAAC;KACP,EAAE,EAAE,UAAU;KACd,IAAI,EAAE,QAAQ;KACd,QAAQ,EAAE,MAAM;CACnB,IAAG,CAAC;IACF;AACF;CACA,EAAC,QAAQ,EAAE;CACX,GAAE,SAAS,EAAE;KACV,KAAK,EAAE,WAAW;MACjB,OAAO,EAAE,CAAC;MACV;CACJ,IAAG,KAAK,EAAE,SAAS,IAAI,EAAE;CACzB,KAAI,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;MACpD;KACD;IACD;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE;CAC7B,EAAC,QAAQ,EAAE;CACX,GAAE,OAAO,EAAE;KACR,QAAQ,EAAE,KAAK;KACf;IACD;CACF,EAAC,CAAC,CAAC;AACH;CACA;EACA,IAAI,kBAAkB,GAAG,eAAe,CAAC;AACzC;CACA;CACA;CACA;AACA;CACA,CAAA,IAAI,WAAW,GAAG;GACjB,GAAG,EAAE,cAAc;GACnB,MAAM,EAAE,iBAAiB;GACzB,QAAQ,EAAE,mBAAmB;GAC7B,aAAa,EAAE,wBAAwB;GACvC,IAAI,EAAE,eAAe;GACrB,SAAS,EAAE,oBAAoB;GAC/B,GAAG,EAAE,cAAc;GACnB,KAAK,EAAE,gBAAgB;GACvB,OAAO,EAAE,kBAAkB;CAC5B,EAAC,CAAC;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,SAAS,mBAAmB,CAAC,CAAC,EAAE,KAAK,EAAE;CACvC,EAAC,IAAI,CAAC,CAAC,MAAM,EAAE;CACf,GAAE,OAAO;CACT,IAAG,CAAC,EAAE,CAAC,CAAC,CAAC;CACT,IAAG,CAAC,EAAE,CAAC,CAAC,CAAC;CACT,IAAG,CAAC;IACF;AACF;GACC,OAAO,SAAS,CAAC,mBAAmB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;GAC/C;AACD;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,SAAS,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE;CAC3C,EAAC,IAAI,QAAQ,GAAG,KAAK,CAAC,6BAA6B,EAAE,CAAC;CACtD,EAAC,IAAI,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;AACzC;CACA,EAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;IAClD,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;CAC9B,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACrD,IAAG,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;CACzB,IAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE;CAC5B,KAAI,OAAO,CAAC,OAAO,CAAC,CAAC;MACjB;KACD;IACD;GACD;AACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,SAAS,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE;CAC5C,EAAC,IAAI,QAAQ,GAAG,EAAE,CAAC;AACnB;CACA,EAAC,iBAAiB,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE;CAC5C,GAAE,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE;CAC/C,IAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACvB;CACH,GAAE,CAAC,CAAC;AACJ;GACC,OAAO,QAAQ,CAAC;GAChB;AACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;EACA,SAAS,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE;CACrE,EAAC,IAAI,WAAW,GAAG,MAAM,CAAC,iBAAiB,CAAC;CAC5C,EAAC,IAAI,YAAY,GAAG,EAAE,CAAC;AACvB;CACA,EAAC,iBAAiB,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE;CAC5C,GAAE,IAAI,SAAS,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE;CAC7D,IAAG,OAAO;KACP;AACH;CACA,GAAE,IAAI,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACtC,IAAI,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;CAClD,GAAE,IAAI,QAAQ,GAAG,WAAW,EAAE;CAC9B,IAAG,YAAY,GAAG,CAAC,OAAO,CAAC,CAAC;KACzB,WAAW,GAAG,QAAQ,CAAC;CAC1B,IAAG,MAAM,IAAI,QAAQ,KAAK,WAAW,EAAE;CACvC;CACA,IAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3B;CACH,GAAE,CAAC,CAAC;AACJ;GACC,OAAO,YAAY,CAAC;GACpB;AACD;CACA;CACA;CACA;CACA;CACA;EACA,SAAS,wBAAwB,CAAC,IAAI,EAAE;CACxC,EAAC,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;CACrC,EAAC,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACrC;CACA,EAAC,OAAO,SAAS,GAAG,EAAE,GAAG,EAAE;CAC3B,GAAE,IAAI,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CAClD,GAAE,IAAI,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;CAC9D,GAAE,CAAC;GACF;AACD;CACA,CAAA,SAAS,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE;GACrC,IAAI,QAAQ,GAAG,mBAAmB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;CAC9C;GACC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,GAAG,CAAC;GACnC,IAAI,cAAc,GAAG,wBAAwB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;GAC5D,IAAI,KAAK,GAAG,OAAO,CAAC,SAAS,GAAG,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;CAC9H,EAAC,IAAI,QAAQ,GAAG,EAAE,CAAC;AACnB;CACA,EAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;IAClB,OAAO,EAAE,CAAC;IACV;AACF;GACC,KAAK,CAAC,6BAA6B,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE;CAC9D,GAAE,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3C;CACA;IACE,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE;CACtC,IAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACvB;CACH,GAAE,CAAC,CAAC;AACJ;GACC,OAAO,QAAQ,CAAC;GAChB;AACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACA;CACA;CACA;CACA;CACA;CACA,CAAA,IAAI,gBAAgB,GAAG;CACvB;CACA,EAAC,KAAK,EAAE;CACR,GAAE,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC,EAAE;KAC1B,IAAI,QAAQ,GAAG,mBAAmB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;CAChD,IAAG,IAAI,QAAQ,GAAG,EAAE,CAAC;AACrB;CACA,IAAG,iBAAiB,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE;CAC9C,KAAI,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE;CACjD,MAAK,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;OACvB,OAAO,QAAQ,CAAC;OAChB;CACL,KAAI,CAAC,CAAC;AACN;KACG,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC5B;AACH;CACA;CACA;CACA;CACA;CACA;CACA;IACE,KAAK,EAAE,SAAS;AAClB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;IACE,KAAK,EAAE,SAAS;AAClB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;IACE,OAAO,EAAE,SAAS,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE;KACpC,IAAI,QAAQ,GAAG,mBAAmB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;KAC7C,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC;KACpC,IAAI,cAAc,GAAG,wBAAwB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KAC5D,IAAI,KAAK,GAAG,OAAO,CAAC,SAAS,GAAG,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;AAChI;CACA,IAAG,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;CACzB,KAAI,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC;MAC1D;AACJ;KACG,OAAO,KAAK,CAAC;KACb;AACH;CACA;CACA;CACA;CACA;CACA;CACA;CACA,GAAE,QAAQ,EAAE,SAAS,KAAK,EAAE,CAAC,EAAE;CAC/B,IAAG,OAAO,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;KAC/C;AACH;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,GAAE,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,EAAE;KACzB,IAAI,QAAQ,GAAG,mBAAmB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;CAChD,IAAG,OAAO,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;KAC1C;AACH;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;IACE,OAAO,EAAE,SAAS,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE;KACpC,IAAI,QAAQ,GAAG,mBAAmB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;KAC7C,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC;KACpC,IAAI,cAAc,GAAG,wBAAwB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D,IAAG,OAAO,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;KAC3E;AACH;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;IACE,CAAC,EAAE,SAAS,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE;KAC9B,IAAI,QAAQ,GAAG,mBAAmB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;CAChD,IAAG,IAAI,KAAK,GAAG,EAAE,CAAC;CAClB,IAAG,IAAI,cAAc,GAAG,KAAK,CAAC;AAC9B;CACA,IAAG,iBAAiB,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE;MAC1C,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;CACtC,MAAK,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;OACpB;AACL;CACA,KAAI,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE;OAC5C,cAAc,GAAG,IAAI,CAAC;OACtB;CACL,KAAI,CAAC,CAAC;AACN;CACA;CACA;CACA,IAAG,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,cAAc,EAAE;MACzC,KAAK,GAAG,EAAE,CAAC;MACX;KACD,OAAO,KAAK,CAAC;KACb;AACH;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;IACE,CAAC,EAAE,SAAS,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE;KAC9B,IAAI,QAAQ,GAAG,mBAAmB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;CAChD,IAAG,IAAI,KAAK,GAAG,EAAE,CAAC;CAClB,IAAG,IAAI,cAAc,GAAG,KAAK,CAAC;AAC9B;CACA,IAAG,iBAAiB,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE;MAC1C,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;CACtC,MAAK,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;OACpB;AACL;CACA,KAAI,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE;OAC5C,cAAc,GAAG,IAAI,CAAC;OACtB;CACL,KAAI,CAAC,CAAC;AACN;CACA;CACA;CACA,IAAG,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,cAAc,EAAE;MACzC,KAAK,GAAG,EAAE,CAAC;MACX;KACD,OAAO,KAAK,CAAC;KACb;IACD;CACF,EAAC,CAAC;AACF;CACA,CAAA,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAC9B;CACA,CAAA,SAAS,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE;GAC1C,OAAO,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE;CAC3C,GAAE,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC;CAC5B,GAAE,CAAC,CAAC;GACH;AACD;CACA,CAAA,SAAS,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE;GACrC,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;IAChC,IAAI,EAAE,GAAG,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,EAAE,GAAG,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;CAC3B,GAAE,OAAO,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM;CAChC,IAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK;CACtB,IAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;CACzB,GAAE,CAAC,CAAC;GACH;AACD;EACA,SAAS,SAAS,CAAC,KAAK,EAAE;CAC1B,EAAC,IAAI,WAAW,GAAG,EAAE,CAAC;CACtB,EAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC;AAClB;GACC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACzD,GAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACf,WAAW,CAAC,IAAI,CAAC;KAChB,KAAK,EAAE,CAAC;KACR,GAAG,EAAE,GAAG;CACX,IAAG,GAAG,EAAE,GAAG,CAAC,QAAQ;CACpB,IAAG,UAAU,EAAE,GAAG,CAAC,YAAY,EAAE;CACjC,IAAG,MAAM,EAAE,GAAG,CAAC,MAAM;CACrB,IAAG,CAAC,CAAC;IACH;GACD,OAAO,WAAW,CAAC;GACnB;AACD;CACA,CAAA,SAAS,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE;CACxC,EAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC;CACrB,EAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACnD,GAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACtB;CACA,GAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU;OAC7B,MAAM,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM,CAAC,cAAc;OAC7C,MAAM,CAAC,YAAY,CAAC;CACzB;IACE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,aAAa,CAAC;IAC1D;GACD;AACD;EACA,SAAS,gBAAgB,CAAC,KAAK,EAAE;CACjC,EAAC,IAAI,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;CACpC,EAAC,IAAI,IAAI,GAAG,YAAY,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;CACtE,EAAC,IAAI,KAAK,GAAG,YAAY,CAAC,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;CAClE,EAAC,IAAI,GAAG,GAAG,YAAY,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;CACpE,EAAC,IAAI,MAAM,GAAG,YAAY,CAAC,gBAAgB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;AACpE;CACA,EAAC,OAAO;CACR,GAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;CAC9B,GAAE,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;CACtC,GAAE,SAAS,EAAE,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC;CACvD,GAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;CAC9B,GAAE,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;CAChC,GAAE,CAAC;GACF;AACD;EACA,SAAS,cAAc,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE;CACrD,EAAC,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;GACrF;AACD;CACA,CAAA,SAAS,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE;CAC/C,EAAC,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;CACtB,EAAC,IAAI,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;CACvC,EAAC,IAAI,QAAQ,EAAE,SAAS,CAAC;AACzB;CACA,EAAC,IAAI,MAAM,CAAC,IAAI,EAAE;CAClB;IACE,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC;IACrC;CACF,EAAC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC;GACzD,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC;AACtC;CACA,EAAC,IAAI,GAAG,CAAC,UAAU,EAAE;CACrB,GAAE,IAAI,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;CACpC,GAAE,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;CAC5D,GAAE,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;CAC/D,GAAE,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;CACrE,GAAE,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IAChE;AACF;CACA,EAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,GAAG,cAAc,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;CACvF,EAAC,SAAS,GAAG,MAAM,CAAC,WAAW,GAAG,cAAc,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AACzF;CACA,EAAC,IAAI,QAAQ,KAAK,SAAS,CAAC,CAAC,IAAI,SAAS,KAAK,SAAS,CAAC,CAAC,EAAE;CAC5D,GAAE,SAAS,CAAC,CAAC,GAAG,QAAQ,CAAC;CACzB,GAAE,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC;AAC1B;CACA;IACE,IAAI,KAAK,GAAG,MAAM,CAAC,UAAU,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;CACrF,GAAE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE;GACD;AACD;EACA,SAAS,gBAAgB,CAAC,SAAS,EAAE;CACrC,EAAC,IAAI,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;AACvC;CACA,EAAC,SAAS,SAAS,CAAC,GAAG,EAAE;CACzB,GAAE,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;CAC7D,GAAE,SAAS,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC;IACzB,OAAO,MAAM,CAAC;IACd;GACD,SAAS,CAAC,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;GAChC,SAAS,CAAC,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;CAClC,EAAC,SAAS,CAAC,OAAO,CAAC,CAAC;CACpB,EAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;GACpB;AACD;CACA,CAAA,SAAS,UAAU,CAAC,UAAU,EAAE,SAAS,EAAE;CAC3C,EAAC,IAAI,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;AACvC;CACA,EAAC,SAAS,kBAAkB,CAAC,SAAS,EAAE;IACtC,IAAI,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;CACtD,GAAE,SAAS,CAAC,OAAO,CAAC,SAAS,GAAG,EAAE;CAClC,IAAG,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;CAC3D,IAAG,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;IACd;AACF;CACA,EAAC,OAAO,UAAU;CAClB,KAAI,kBAAkB,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;MACrC,kBAAkB,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;GACzC;AACD;CACA,CAAA,SAAS,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE;CAC5C,EAAC,IAAI,UAAU,GAAG,EAAE,CAAC;CACrB,EAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC;AAC1C;CACA,EAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACjD,GAAE,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CACpB,GAAE,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AACnB;IACE,GAAG,CAAC,MAAM;CACZ,IAAG,MAAM,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC;CAC9B,IAAG,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC;CAC/B,IAAG,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC;CAC3C,IAAG,CAAC;IACF,IAAI,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;KAC1C,OAAO,GAAG,IAAI,CAAC;CAClB,IAAG,IAAI,UAAU,CAAC,MAAM,EAAE;CAC1B;CACA;MACI,KAAK,GAAG,IAAI,CAAC;MACb;KACD;CACH,GAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE;CACtB,IAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACxB;IACD;AACF;CACA,EAAC,OAAO,KAAK,GAAG,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,OAAO,GAAG,OAAO,CAAC;GAC5E;AACD;CACA,CAAA,SAAS,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE;CAC9C,EAAC,IAAI,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;CAClC,EAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;CACrB,EAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;GACpB,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC;AAC1B;CACA,EAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACjD,GAAE,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CACpB,GAAE,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;CACnB,GAAE,IAAI,MAAM,CAAC,UAAU,EAAE;CACzB,IAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,SAAS,GAAG,WAAW,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;KAC7D,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,GAAG,WAAW,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC;CACpG,IAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;KACZ,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;KAC5B,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC;CACpC,IAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;CAClB,IAAG,MAAM;CACT,IAAG,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;KACb,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;CAC7B,IAAG,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;KACxB,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC;KACzC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC;CACrC,IAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;KACd;IACD;AACF;CACA,EAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC;CACjB,EAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC;GAChB;AACD;CACA,CAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE;CAC7B,EAAC,MAAM,EAAE;CACT,GAAE,OAAO,EAAE;KACR,GAAG,EAAE,CAAC;KACN,KAAK,EAAE,CAAC;KACR,MAAM,EAAE,CAAC;KACT,IAAI,EAAE,CAAC;KACP;IACD;CACF,EAAC,CAAC,CAAC;AACH;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACA;CACA;CACA;CACA;CACA,CAAA,IAAI,YAAY,GAAG;GAClB,QAAQ,EAAE,EAAE;AACb;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,MAAM,EAAE,SAAS,KAAK,EAAE,IAAI,EAAE;CAC/B,GAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;CACpB,IAAG,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;KACjB;AACH;CACA;IACE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;IACzC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC;IACvC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,WAAW;CAC5C,IAAG,OAAO,CAAC;MACP,CAAC,EAAE,CAAC;MACJ,IAAI,EAAE,WAAW;OAChB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;OACjC;CACL,KAAI,CAAC,CAAC;CACN,IAAG,CAAC;AACJ;IACE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB;AACF;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,SAAS,EAAE,SAAS,KAAK,EAAE,UAAU,EAAE;CACxC,GAAE,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;CACjE,GAAE,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;KACjB,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;KAC7B;IACD;AACF;CACA;CACA;CACA;CACA;CACA;CACA;GACC,SAAS,EAAE,SAAS,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;IACzC,IAAI,KAAK,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;CAClD,GAAE,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;CAC1B,GAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,IAAI,CAAC;AACX;CACA,GAAE,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACxB,IAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CACnB,IAAG,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;MACjC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;MAC3B;KACD;IACD;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACC,MAAM,EAAE,SAAS,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;IACtC,IAAI,CAAC,KAAK,EAAE;CACd,IAAG,OAAO;KACP;AACH;IACE,IAAI,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;CACjD,GAAE,IAAI,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACnE;IACE,IAAI,cAAc,GAAG,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC3C,IAAI,eAAe,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9C,IAAI,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;CAC5C,GAAE,IAAI,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC;CACrC,GAAE,IAAI,eAAe,GAAG,KAAK,CAAC,UAAU,CAAC;AACzC;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;AACA;CACA,GAAE,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;KAC1B,UAAU,EAAE,KAAK;KACjB,WAAW,EAAE,MAAM;KACnB,OAAO,EAAE,OAAO;KAChB,cAAc,EAAE,cAAc;KAC9B,YAAY,EAAE,cAAc,GAAG,CAAC,GAAG,aAAa,CAAC,MAAM;CAC1D,IAAG,aAAa,EAAE,eAAe,GAAG,CAAC;CACrC,IAAG,CAAC,CAAC;CACL,GAAE,IAAI,SAAS,GAAG,MAAM,CAAC;CACzB,IAAG,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC;KAC/B,CAAC,EAAE,cAAc;KACjB,CAAC,EAAE,eAAe;CACrB,IAAG,CAAC,EAAE,OAAO,CAAC,IAAI;CAClB,IAAG,CAAC,EAAE,OAAO,CAAC,GAAG;KACd,EAAE,OAAO,CAAC,CAAC;AACd;IACE,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,CAAC;AAC/D;CACA;IACE,QAAQ,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAC7C;CACA;IACE,IAAI,QAAQ,CAAC,eAAe,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE;CACpD;KACG,QAAQ,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;KAC3C;AACH;CACA,GAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAC9B;CACA;IACE,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAClD;CACA;CACA,GAAE,SAAS,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC;CAC7B,GAAE,SAAS,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC;AAC7B;IACE,UAAU,CAAC,KAAK,CAAC,cAAc,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AACtD;IACE,KAAK,CAAC,SAAS,GAAG;CACpB,IAAG,IAAI,EAAE,SAAS,CAAC,IAAI;CACvB,IAAG,GAAG,EAAE,SAAS,CAAC,GAAG;KAClB,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC;KACnC,MAAM,EAAE,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;CACtC,IAAG,CAAC;AACJ;CACA;IACE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE;CACnD,IAAG,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;KACrB,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;CAChC,IAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;CACxC,IAAG,CAAC,CAAC;IACH;CACF,EAAC,CAAC;AACF;CACA;CACA;CACA;CACA;AACA;CACA,CAAA,IAAI,cAAc,GAAG;CACrB,EAAC,cAAc,EAAE,SAAS,IAAI,EAAE;CAChC,GAAE,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;CAC3B;CACA,IAAG,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;KACnB;AACH;IACE,OAAO,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAC7C;CACF,EAAC,CAAC;AACF;EACA,IAAI,YAAY,GAAG,i9BAAi9B,CAAC;AACr+B;CACA,CAAA,IAAI,cAAc,gBAAgB,MAAM,CAAC,MAAM,CAAC;CAChD,CAAA,SAAS,EAAE,IAAI;CACf,CAAA,SAAS,EAAE,YAAY;CACvB,EAAC,CAAC,CAAC;AACH;CACA,CAAA,IAAI,UAAU,GAAG,yBAAyB,CAAC,cAAc,CAAC,CAAC;AAC3D;EACA,IAAI,WAAW,GAAG,UAAU,CAAC;EAC7B,IAAI,UAAU,GAAG,UAAU,CAAC;CAC5B,CAAA,IAAI,gBAAgB,GAAG,UAAU,GAAG,cAAc,CAAC;CACnD,CAAA,IAAI,kBAAkB,GAAG,UAAU,GAAG,gBAAgB,CAAC;CACvD,CAAA,IAAI,oBAAoB,GAAG,UAAU,GAAG,kBAAkB,CAAC;CAC3D,CAAA,IAAI,sBAAsB,GAAG,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,CAAC;AACxE;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,IAAI,WAAW,GAAG;GACjB,UAAU,EAAE,WAAW;GACvB,SAAS,EAAE,WAAW;GACtB,QAAQ,EAAE,SAAS;GACnB,YAAY,EAAE,YAAY;GAC1B,WAAW,EAAE,WAAW;GACxB,WAAW,EAAE,WAAW;GACxB,SAAS,EAAE,SAAS;GACpB,YAAY,EAAE,UAAU;GACxB,UAAU,EAAE,UAAU;CACvB,EAAC,CAAC;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,SAAS,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE;GACxC,IAAI,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;GAClD,IAAI,OAAO,GAAG,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;CACzD,EAAC,OAAO,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;GAChD;AACD;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,SAAS,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE;CACpC,EAAC,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC1B;CACA;CACA;GACC,IAAI,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;GACjD,IAAI,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAChD;CACA;CACA,EAAC,MAAM,CAAC,WAAW,CAAC,GAAG;CACvB,GAAE,OAAO,EAAE;KACR,MAAM,EAAE,YAAY;KACpB,KAAK,EAAE,WAAW;CACrB,IAAG,KAAK,EAAE;CACV,KAAI,OAAO,EAAE,KAAK,CAAC,OAAO;CAC1B,KAAI,MAAM,EAAE,KAAK,CAAC,MAAM;CACxB,KAAI,KAAK,EAAE,KAAK,CAAC,KAAK;MAClB;KACD;CACH,GAAE,CAAC;AACH;CACA;CACA;CACA;GACC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC;AAC1C;GACC,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,EAAE,EAAE;IAC/C,IAAI,YAAY,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnD,GAAE,IAAI,YAAY,KAAK,SAAS,EAAE;CAClC,IAAG,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC;KAC5B;IACD;AACF;GACC,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,EAAE,EAAE;IACjD,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE;CAClC;CACA;CACA;CACA,IAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;CACpE,IAAG,MAAM;KACN,IAAI,aAAa,GAAG,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CACtD,IAAG,IAAI,YAAY,KAAK,SAAS,EAAE;CACnC,KAAI,MAAM,CAAC,MAAM,GAAG,aAAa,CAAC;MAC9B;KACD;IACD;AACF;GACC,OAAO,MAAM,CAAC;GACd;AACD;CACA;CACA;CACA;CACA;CACA;EACA,IAAI,4BAA4B,IAAI,WAAW;CAC/C,EAAC,IAAI,QAAQ,GAAG,KAAK,CAAC;CACtB,EAAC,IAAI;IACH,IAAI,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE;CACrD;KACG,GAAG,EAAE,WAAW;MACf,QAAQ,GAAG,IAAI,CAAC;MAChB;CACJ,IAAG,CAAC,CAAC;IACH,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC,OAAO,CAAC,EAAE;CACb;IACE;GACD,OAAO,QAAQ,CAAC;GAChB,EAAE,CAAC,CAAC;AACL;CACA;CACA;EACA,IAAI,oBAAoB,GAAG,4BAA4B,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;AAClF;CACA,CAAA,SAAS,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;GAC1C,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC;GAC5D;AACD;CACA,CAAA,SAAS,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;GAC7C,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC;GAC/D;AACD;EACA,SAAS,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE;CACrD,EAAC,OAAO;IACN,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,KAAK;CACd,GAAE,MAAM,EAAE,WAAW,IAAI,IAAI;IAC3B,CAAC,EAAE,CAAC,KAAK,SAAS,GAAG,CAAC,GAAG,IAAI;IAC7B,CAAC,EAAE,CAAC,KAAK,SAAS,GAAG,CAAC,GAAG,IAAI;CAC/B,GAAE,CAAC;GACF;AACD;CACA,CAAA,SAAS,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE;CACvC,EAAC,IAAI,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC;GACjD,IAAI,GAAG,GAAG,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;CACvD,EAAC,OAAO,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;GACrD;AACD;CACA,CAAA,SAAS,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE;CAChC,EAAC,IAAI,OAAO,GAAG,KAAK,CAAC;CACrB,EAAC,IAAI,IAAI,GAAG,EAAE,CAAC;AACf;CACA,EAAC,OAAO,WAAW;CACnB,GAAE,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;CAC/C,GAAE,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC;AAC5B;IACE,IAAI,CAAC,OAAO,EAAE;KACb,OAAO,GAAG,IAAI,CAAC;KACf,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW;MAClD,OAAO,GAAG,KAAK,CAAC;MAChB,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;CAC5B,KAAI,CAAC,CAAC;KACH;CACH,GAAE,CAAC;GACF;AACD;EACA,SAAS,SAAS,CAAC,GAAG,EAAE;GACvB,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;CACxC,EAAC,EAAE,CAAC,SAAS,GAAG,GAAG,IAAI,EAAE,CAAC;GACzB,OAAO,EAAE,CAAC;GACV;AACD;CACA;EACA,SAAS,aAAa,CAAC,OAAO,EAAE;CAChC,EAAC,IAAI,OAAO,GAAG,OAAO,CAAC;AACvB;CACA;CACA;CACA,EAAC,IAAI,OAAO,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC;GAC1C,IAAI,MAAM,GAAG,SAAS,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;GACrD,IAAI,MAAM,GAAG,SAAS,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;AACtD;CACA,EAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC;CACjC,EAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC;AACjC;CACA,EAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;CAC7B,EAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;CAC7B,EAAC,OAAO,CAAC,MAAM,GAAG,WAAW;CAC7B,GAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC;CAC9B,GAAE,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC;CAC7B,GAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC;CAC9B,GAAE,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC;CAC7B,GAAE,CAAC;AACH;GACC,IAAI,QAAQ,GAAG,WAAW;CAC3B,GAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,CAAC;CACZ,GAAE,CAAC;AACH;CACA,EAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;CAChE,EAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAChE;GACC,OAAO,OAAO,CAAC;GACf;AACD;CACA;CACA,CAAA,SAAS,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;CACvC,EAAC,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;GAC5D,IAAI,KAAK,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,EAAE;CAC/C,GAAE,IAAI,CAAC,CAAC,aAAa,KAAK,oBAAoB,EAAE;KAC7C,OAAO,EAAE,CAAC;KACV;CACH,GAAE,CAAC;AACH;GACC,SAAS,CAAC,IAAI,CAAC,sBAAsB,EAAE,SAAS,IAAI,EAAE;IACrD,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;CACjC,GAAE,CAAC,CAAC;AACJ;CACA;CACA;CACA;CACA;CACA;GACC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;AACtC;GACC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;GACvC;AACD;EACA,SAAS,gBAAgB,CAAC,IAAI,EAAE;GAC/B,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;CACvC,EAAC,IAAI,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC;AACjC;GACC,IAAI,KAAK,EAAE;IACV,SAAS,CAAC,IAAI,CAAC,sBAAsB,EAAE,SAAS,IAAI,EAAE;KACrD,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;CACrC,IAAG,CAAC,CAAC;AACL;CACA,GAAE,OAAO,OAAO,CAAC,WAAW,CAAC;IAC3B;AACF;GACC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;GAC1C;AACD;CACA,CAAA,SAAS,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;CAClD,EAAC,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7D;CACA;GACC,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC,WAAW;CACpE,GAAE,IAAI,OAAO,CAAC,OAAO,EAAE;CACvB,IAAG,IAAI,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,IAAI,IAAI,CAAC,UAAU,CAAC;KACrE,IAAI,CAAC,GAAG,SAAS,GAAG,SAAS,CAAC,WAAW,GAAG,CAAC,CAAC;KAC9C,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;CAC1C,IAAG,IAAI,SAAS,IAAI,SAAS,CAAC,WAAW,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE;CAC/D;CACA;CACA;CACA;CACA;CACA;CACA;MACI,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;MACvC;KACD;IACD,CAAC,CAAC,CAAC;AACL;CACA;CACA;CACA,EAAC,cAAc,CAAC,IAAI,EAAE,WAAW;CACjC,GAAE,IAAI,OAAO,CAAC,OAAO,EAAE;CACvB,IAAG,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;KAChC,IAAI,SAAS,IAAI,SAAS,KAAK,OAAO,CAAC,UAAU,EAAE;MAClD,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;MACtD;AACJ;CACA;CACA,IAAG,OAAO,CAAC,MAAM,EAAE,CAAC;KACjB;CACH,GAAE,CAAC,CAAC;GACH;AACD;EACA,SAAS,oBAAoB,CAAC,IAAI,EAAE;GACnC,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;CACvC,EAAC,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAC/B;CACA,EAAC,OAAO,OAAO,CAAC,OAAO,CAAC;CACxB,EAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACxB;CACA,EAAC,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,EAAE;IAClC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACxC;GACD;AACD;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,SAAS,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE;CAClC;CACA,EAAC,IAAI,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;CACrE,EAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;CAC9B,GAAE,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;CAChC,GAAE,GAAG,GAAG,kBAAkB,GAAG,GAAG,CAAC;IAC/B,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC5C,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACvC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;CAClD,GAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC5B;GACD;AACD;CACA,CAAA,IAAI,cAAc,GAAG;CACrB;CACA;CACA;CACA;CACA;CACA;CACA;GACC,mBAAmB,EAAE,KAAK;AAC3B;CACA;CACA;CACA;CACA;CACA;GACC,QAAQ,EAAE,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW;AAC3E;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,aAAa,EAAE,SAAS,MAAM,EAAE;CACjC,GAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;CACjC;CACA;CACA;CACA,IAAG,IAAI,IAAI,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC;CACnE,IAAG,IAAI,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;CACrD,IAAG,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;KAClC;IACD;AACF;CACA,EAAC,cAAc,EAAE,SAAS,IAAI,EAAE,MAAM,EAAE;CACxC,GAAE,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;KAC7B,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;CACxC,IAAG,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;CAC1B;CACA,IAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;KACf;AACH;CACA,GAAE,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;CAC3B;CACA,IAAG,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;KACnB;AACH;CACA;CACA;CACA;CACA,GAAE,IAAI,OAAO,GAAG,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACjE;CACA;CACA;CACA;CACA;CACA;CACA;CACA;IACE,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE;CAC1C;CACA;CACA,IAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;CAC5B,IAAG,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KACzB,OAAO,OAAO,CAAC;KACf;AACH;IACE,OAAO,IAAI,CAAC;IACZ;AACF;CACA,EAAC,cAAc,EAAE,SAAS,OAAO,EAAE;CACnC,GAAE,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAC9B,GAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;CAC5B,IAAG,OAAO;KACP;AACH;IACE,IAAI,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC;IAC1C,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE;CAC7C,IAAG,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B,IAAG,IAAI,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;CACvC,KAAI,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;CACjC,KAAI,MAAM;MACN,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;MACjC;CACJ,IAAG,CAAC,CAAC;AACL;CACA,GAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;KACxD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;CAC7B,IAAG,CAAC,CAAC;AACL;CACA;CACA;CACA;CACA;CACA;CACA,GAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC9B;CACA,GAAE,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC;IAC3B;AACF;GACC,gBAAgB,EAAE,SAAS,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE;CACnD,GAAE,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;CAC5B,GAAE,IAAI,IAAI,KAAK,QAAQ,EAAE;CACzB;KACG,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;CAC9C,IAAG,OAAO;KACP;AACH;CACA,GAAE,IAAI,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;CACtE,GAAE,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;CAC1D,GAAE,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,SAAS,KAAK,EAAE;KAC5D,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;CAC3C,IAAG,CAAC;AACJ;IACE,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACjC;AACF;GACC,mBAAmB,EAAE,SAAS,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE;CACtD,GAAE,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;CAC5B,GAAE,IAAI,IAAI,KAAK,QAAQ,EAAE;CACzB;CACA,IAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;CAChC,IAAG,OAAO;KACP;AACH;IACE,IAAI,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAC1C,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;CACtC,GAAE,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,EAAE;CACd,IAAG,OAAO;KACP;AACH;IACE,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACpC;CACF,EAAC,CAAC;AACF;CACA;AACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,SAAS,CAAC,QAAQ,GAAG,WAAW,CAAC;AACjC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,SAAS,CAAC,WAAW,GAAG,cAAc,CAAC;AACvC;CACA;EACA,IAAI,cAAc,GAAG,cAAc,CAAC,QAAQ,GAAG,cAAc,GAAG,cAAc,CAAC;AAC/E;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,IAAI,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC;CAChC;CACA;CACA;GACC,UAAU,EAAE,WAAW,EAAE;AAC1B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACC,cAAc,EAAE,WAAW,EAAE;AAC9B;CACA;CACA;CACA;CACA;CACA;CACA;GACC,cAAc,EAAE,WAAW,EAAE;AAC9B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACC,gBAAgB,EAAE,WAAW,EAAE;AAChC;CACA;CACA;CACA;CACA;CACA;CACA;GACC,mBAAmB,EAAE,WAAW,EAAE;AACnC;GACC,EAAE,cAAc,CAAC,CAAC;AACnB;CACA,CAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE;GAC5B,OAAO,EAAE,EAAE;CACZ,EAAC,CAAC,CAAC;AACH;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,IAAI,YAAY,GAAG;CACnB;CACA;CACA;CACA;GACC,QAAQ,EAAE,EAAE;AACb;CACA;CACA;CACA;CACA;CACA;CACA;GACC,QAAQ,EAAE,CAAC;AACZ;CACA;CACA;CACA;CACA;CACA,EAAC,QAAQ,EAAE,SAAS,OAAO,EAAE;CAC7B,GAAE,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;CACxB,GAAE,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,MAAM,EAAE;KAC7C,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;CACjC,KAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;MACf;CACJ,IAAG,CAAC,CAAC;AACL;CACA,GAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAChB;AACF;CACA;CACA;CACA;CACA;CACA,EAAC,UAAU,EAAE,SAAS,OAAO,EAAE;CAC/B,GAAE,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;CACxB,GAAE,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,MAAM,EAAE;KAC7C,IAAI,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/B,IAAG,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;MACf,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;MACjB;CACJ,IAAG,CAAC,CAAC;AACL;CACA,GAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAChB;AACF;CACA;CACA;CACA;CACA;GACC,KAAK,EAAE,WAAW;CACnB,GAAE,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;CACrB,GAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAChB;AACF;CACA;CACA;CACA;CACA;CACA;GACC,KAAK,EAAE,WAAW;CACnB,GAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC5B;AACF;CACA;CACA;CACA;CACA;CACA;GACC,MAAM,EAAE,WAAW;CACpB,GAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;IACrB;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACC,MAAM,EAAE,SAAS,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;IACnC,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;CAC5C,GAAE,IAAI,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC;IAC9B,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AAC5C;IACE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CAC7B,IAAG,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;CAC/B,IAAG,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;CAC9B,IAAG,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;CACzB,IAAG,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;CACrC,KAAI,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;MACpC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;MAChC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,KAAK,EAAE;OAC3C,OAAO,KAAK,CAAC;OACb;MACD;KACD;AACH;IACE,OAAO,IAAI,CAAC;IACZ;AACF;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,WAAW,EAAE,SAAS,KAAK,EAAE;CAC9B,GAAE,IAAI,KAAK,GAAG,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;IACpD,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE;CAClC,IAAG,OAAO,KAAK,CAAC,WAAW,CAAC;KACzB;AACH;CACA,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC;CACnB,GAAE,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,MAAM,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,CAAC;CAC7C,GAAE,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK,EAAE,CAAC;AACjE;CACA,GAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,MAAM,EAAE;KACnE,IAAI,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;CACrC,IAAG,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;CACnB,KAAI,OAAO;MACP;AACJ;CACA,IAAG,IAAI,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;CACtB,IAAG,IAAI,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;CAC1B,IAAG,IAAI,IAAI,KAAK,KAAK,EAAE;CACvB,KAAI,OAAO;MACP;AACJ;CACA,IAAG,IAAI,IAAI,KAAK,IAAI,EAAE;CACtB,KAAI,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;MACzD;AACJ;CACA,IAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACrB,WAAW,CAAC,IAAI,CAAC;MAChB,MAAM,EAAE,MAAM;CAClB,KAAI,OAAO,EAAE,IAAI,IAAI,EAAE;CACvB,KAAI,CAAC,CAAC;CACN,IAAG,CAAC,CAAC;AACL;CACA,GAAE,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;CAClC,GAAE,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;IACzB,OAAO,WAAW,CAAC;IACnB;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,WAAW,EAAE,SAAS,KAAK,EAAE;CAC9B,GAAE,OAAO,KAAK,CAAC,QAAQ,CAAC;IACtB;CACF,EAAC,CAAC;AACF;CACA,CAAA,IAAI,iBAAiB,GAAG;CACxB;CACA;GACC,YAAY,EAAE,EAAE;CACjB;CACA;AACA;CACA;GACC,QAAQ,EAAE,EAAE;GACZ,iBAAiB,EAAE,SAAS,IAAI,EAAE,gBAAgB,EAAE,aAAa,EAAE;IAClE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC;CAC7C,GAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACrD;CACF,EAAC,mBAAmB,EAAE,SAAS,IAAI,EAAE;CACrC,GAAE,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IACpF;CACF,EAAC,gBAAgB,EAAE,SAAS,IAAI,EAAE;CAClC;CACA,GAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAClI;CACF,EAAC,mBAAmB,EAAE,SAAS,IAAI,EAAE,SAAS,EAAE;CAChD,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;KACrC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;KACnE;IACD;CACF,EAAC,iBAAiB,EAAE,SAAS,KAAK,EAAE;CACpC;IACE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE;CAC/C;KACG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;KAC1C,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;KACxC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;KACpC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;CACrC,IAAG,CAAC,CAAC;IACH;CACF,EAAC,CAAC;AACF;CACA,CAAA,IAAI,gBAAgB,GAAG,SAAS,CAAC,cAAc,CAAC;CAChD,CAAA,IAAI,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC;AAC/C;CACA,CAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE;CAC7B,EAAC,QAAQ,EAAE;IACT,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,SAAS;IACnB,SAAS,EAAE,IAAI;IACf,eAAe,EAAE,iBAAiB;IAClC,cAAc,EAAE,MAAM;IACtB,YAAY,EAAE,CAAC;IACf,iBAAiB,EAAE,CAAC;IACpB,cAAc,EAAE,MAAM;IACtB,UAAU,EAAE,MAAM;IAClB,WAAW,EAAE,CAAC;IACd,aAAa,EAAE,MAAM;IACrB,SAAS,EAAE,MAAM;IACjB,eAAe,EAAE,MAAM;IACvB,aAAa,EAAE,CAAC;IAChB,eAAe,EAAE,CAAC;IAClB,eAAe,EAAE,MAAM;IACvB,WAAW,EAAE,MAAM;IACnB,QAAQ,EAAE,CAAC;IACX,QAAQ,EAAE,CAAC;IACX,YAAY,EAAE,CAAC;IACf,SAAS,EAAE,CAAC;IACZ,YAAY,EAAE,CAAC;IACf,kBAAkB,EAAE,MAAM;IAC1B,aAAa,EAAE,IAAI;IACnB,WAAW,EAAE,eAAe;IAC5B,WAAW,EAAE,CAAC;CAChB,GAAE,SAAS,EAAE;CACb;CACA,IAAG,WAAW,EAAE,SAAS,CAAC,IAAI;CAC9B,IAAG,KAAK,EAAE,SAAS,YAAY,EAAE,IAAI,EAAE;CACvC,KAAI,IAAI,KAAK,GAAG,EAAE,CAAC;CACnB,KAAI,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;MACzB,IAAI,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAChD;CACA,KAAI,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;CACjC,MAAK,IAAI,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;CAChC,MAAK,IAAI,IAAI,CAAC,KAAK,EAAE;CACrB,OAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;CACzB,OAAM,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;CAC7B,OAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QACpB,MAAM,IAAI,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,UAAU,EAAE;QACrD,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B;OACD;AACL;MACI,OAAO,KAAK,CAAC;MACb;CACJ,IAAG,UAAU,EAAE,SAAS,CAAC,IAAI;AAC7B;CACA;CACA,IAAG,UAAU,EAAE,SAAS,CAAC,IAAI;AAC7B;CACA;CACA,IAAG,WAAW,EAAE,SAAS,CAAC,IAAI;CAC9B,IAAG,KAAK,EAAE,SAAS,WAAW,EAAE,IAAI,EAAE;CACtC,KAAI,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;AACpE;MACI,IAAI,KAAK,EAAE;OACV,KAAK,IAAI,IAAI,CAAC;OACd;MACD,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;CACrD,MAAK,KAAK,IAAI,WAAW,CAAC,KAAK,CAAC;CAChC,MAAK,MAAM;CACX,MAAK,KAAK,IAAI,WAAW,CAAC,MAAM,CAAC;OAC5B;MACD,OAAO,KAAK,CAAC;MACb;CACJ,IAAG,UAAU,EAAE,SAAS,WAAW,EAAE,KAAK,EAAE;MACxC,IAAI,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;MAC1D,IAAI,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;CACrD,KAAI,IAAI,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC;CACnC,KAAI,OAAO;CACX,MAAK,WAAW,EAAE,IAAI,CAAC,WAAW;CAClC,MAAK,eAAe,EAAE,IAAI,CAAC,eAAe;CAC1C,MAAK,CAAC;MACF;KACD,cAAc,EAAE,WAAW;CAC9B,KAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;MACnC;CACJ,IAAG,UAAU,EAAE,SAAS,CAAC,IAAI;AAC7B;CACA;CACA,IAAG,SAAS,EAAE,SAAS,CAAC,IAAI;AAC5B;CACA;CACA,IAAG,YAAY,EAAE,SAAS,CAAC,IAAI;CAC/B,IAAG,MAAM,EAAE,SAAS,CAAC,IAAI;CACzB,IAAG,WAAW,EAAE,SAAS,CAAC,IAAI;KAC3B;IACD;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,IAAI,WAAW,GAAG;CAClB;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,OAAO,EAAE,SAAS,QAAQ,EAAE;CAC7B,GAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;KACrB,OAAO,KAAK,CAAC;KACb;AACH;CACA,GAAE,IAAI,CAAC,EAAE,GAAG,CAAC;CACb,GAAE,IAAI,CAAC,GAAG,CAAC,CAAC;CACZ,GAAE,IAAI,CAAC,GAAG,CAAC,CAAC;CACZ,GAAE,IAAI,KAAK,GAAG,CAAC,CAAC;AAChB;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;CACnD,IAAG,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;CACxB,IAAG,IAAI,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE;CAC5B,KAAI,IAAI,GAAG,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC;CACnC,KAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;CACf,KAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;MACX,EAAE,KAAK,CAAC;MACR;KACD;AACH;CACA,GAAE,OAAO;CACT,IAAG,CAAC,EAAE,CAAC,GAAG,KAAK;CACf,IAAG,CAAC,EAAE,CAAC,GAAG,KAAK;CACf,IAAG,CAAC;IACF;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,aAAa,EAAE;CAC5C,GAAE,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;CAC1B,GAAE,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;CAC1B,GAAE,IAAI,WAAW,GAAG,MAAM,CAAC,iBAAiB,CAAC;CAC7C,GAAE,IAAI,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC;AAC7B;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;CACnD,IAAG,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;CACxB,IAAG,IAAI,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE;CAC5B,KAAI,IAAI,MAAM,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC;MACjC,IAAI,CAAC,GAAG,SAAS,CAAC,qBAAqB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AACnE;CACA,KAAI,IAAI,CAAC,GAAG,WAAW,EAAE;OACpB,WAAW,GAAG,CAAC,CAAC;OAChB,cAAc,GAAG,EAAE,CAAC;OACpB;MACD;KACD;AACH;IACE,IAAI,cAAc,EAAE;CACtB,IAAG,IAAI,EAAE,GAAG,cAAc,CAAC,eAAe,EAAE,CAAC;CAC7C,IAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;CACZ,IAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;KACT;AACH;CACA,GAAE,OAAO;KACN,CAAC,EAAE,CAAC;KACJ,CAAC,EAAE,CAAC;CACP,IAAG,CAAC;IACF;CACF,EAAC,CAAC;AACF;CACA;CACA,CAAA,SAAS,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE;GACnC,IAAI,MAAM,EAAE;CACb,GAAE,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;CACjC;CACA,IAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;CAC5C,IAAG,MAAM;CACT,IAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAClB;IACD;AACF;GACC,OAAO,IAAI,CAAC;GACZ;AACD;CACA;CACA;CACA;CACA;CACA;CACA;EACA,SAAS,aAAa,CAAC,GAAG,EAAE;GAC3B,IAAI,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,YAAY,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;CACnF,GAAE,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvB;GACD,OAAO,GAAG,CAAC;GACX;AACD;AACA;CACA;CACA;CACA;CACA;CACA;EACA,SAAS,iBAAiB,CAAC,OAAO,EAAE;CACpC,EAAC,IAAI,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;GAC7B,IAAI,MAAM,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;CAChD,EAAC,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;CAC5B,EAAC,IAAI,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;CAC1C,EAAC,IAAI,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC;CACzE,EAAC,IAAI,UAAU,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;CAC9C,EAAC,IAAI,UAAU,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;AAC9C;CACA,EAAC,OAAO;CACR,GAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,EAAE;CACpE,GAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,EAAE;CACpE,GAAE,KAAK,EAAE,UAAU,GAAG,EAAE,GAAG,UAAU,CAAC,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,EAAE;CAChF,GAAE,KAAK,EAAE,UAAU,GAAG,EAAE,GAAG,UAAU,CAAC,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,EAAE;IAC9E,KAAK,EAAE,KAAK;IACZ,YAAY,EAAE,YAAY;CAC5B,GAAE,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;CACrB,GAAE,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;CACrB,GAAE,CAAC;GACF;AACD;CACA;CACA;CACA;CACA;EACA,SAAS,YAAY,CAAC,WAAW,EAAE;CACnC,EAAC,IAAI,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC;AAC3C;CACA,EAAC,OAAO;CACR;CACA,GAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ;CAChC,GAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ;CAChC,GAAE,MAAM,EAAE,WAAW,CAAC,MAAM;CAC5B,GAAE,MAAM,EAAE,WAAW,CAAC,MAAM;AAC5B;CACA;CACA,GAAE,GAAG,EAAE,WAAW,CAAC,GAAG;CACtB,GAAE,aAAa,EAAE,WAAW,CAAC,aAAa;AAC1C;CACA;CACA,GAAE,aAAa,EAAE,WAAW,CAAC,aAAa;IACxC,eAAe,EAAE,gBAAgB,CAAC,WAAW,CAAC,cAAc,EAAE,cAAc,CAAC,iBAAiB,CAAC;IAC/F,cAAc,EAAE,gBAAgB,CAAC,WAAW,CAAC,aAAa,EAAE,cAAc,CAAC,gBAAgB,CAAC;CAC9F,GAAE,UAAU,EAAE,WAAW,CAAC,SAAS;IACjC,YAAY,EAAE,gBAAgB,CAAC,WAAW,CAAC,YAAY,EAAE,cAAc,CAAC,eAAe,CAAC;CAC1F,GAAE,WAAW,EAAE,WAAW,CAAC,WAAW;AACtC;CACA;CACA,GAAE,cAAc,EAAE,WAAW,CAAC,cAAc;IAC1C,gBAAgB,EAAE,gBAAgB,CAAC,WAAW,CAAC,eAAe,EAAE,cAAc,CAAC,iBAAiB,CAAC;IACjG,eAAe,EAAE,gBAAgB,CAAC,WAAW,CAAC,cAAc,EAAE,cAAc,CAAC,gBAAgB,CAAC;IAC9F,aAAa,EAAE,gBAAgB,CAAC,WAAW,CAAC,aAAa,EAAE,cAAc,CAAC,eAAe,CAAC;CAC5F,GAAE,WAAW,EAAE,WAAW,CAAC,UAAU;CACrC,GAAE,YAAY,EAAE,WAAW,CAAC,YAAY;CACxC,GAAE,iBAAiB,EAAE,WAAW,CAAC,iBAAiB;AAClD;CACA;CACA,GAAE,eAAe,EAAE,WAAW,CAAC,eAAe;IAC5C,iBAAiB,EAAE,gBAAgB,CAAC,WAAW,CAAC,gBAAgB,EAAE,cAAc,CAAC,iBAAiB,CAAC;IACnG,gBAAgB,EAAE,gBAAgB,CAAC,WAAW,CAAC,eAAe,EAAE,cAAc,CAAC,gBAAgB,CAAC;IAChG,cAAc,EAAE,gBAAgB,CAAC,WAAW,CAAC,cAAc,EAAE,cAAc,CAAC,eAAe,CAAC;CAC9F,GAAE,YAAY,EAAE,WAAW,CAAC,WAAW;CACvC,GAAE,aAAa,EAAE,WAAW,CAAC,aAAa;CAC1C,GAAE,eAAe,EAAE,WAAW,CAAC,eAAe;AAC9C;CACA;CACA,GAAE,SAAS,EAAE,WAAW,CAAC,SAAS;CAClC,GAAE,YAAY,EAAE,WAAW,CAAC,YAAY;CACxC,GAAE,eAAe,EAAE,WAAW,CAAC,eAAe;IAC5C,OAAO,EAAE,CAAC;CACZ,GAAE,qBAAqB,EAAE,WAAW,CAAC,kBAAkB;CACvD,GAAE,aAAa,EAAE,WAAW,CAAC,aAAa;CAC1C,GAAE,WAAW,EAAE,WAAW,CAAC,WAAW;CACtC,GAAE,WAAW,EAAE,WAAW,CAAC,WAAW;CACtC,GAAE,CAAC;GACF;AACD;CACA;CACA;CACA;CACA,CAAA,SAAS,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE;GACvC,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;AAC9B;GACC,IAAI,MAAM,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;CACjC,EAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AACf;CACA;CACA,EAAC,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;GACtB,IAAI,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,EAAE,QAAQ,EAAE;IAC9D,OAAO,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;IACtF,EAAE,CAAC,CAAC,CAAC;CACP,EAAC,kBAAkB,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;AACxE;GACC,IAAI,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;GACxC,IAAI,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;CAC3C,EAAC,IAAI,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;CACzC,EAAC,IAAI,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;CACvC,EAAC,IAAI,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;AAC3C;CACA,EAAC,MAAM,IAAI,cAAc,GAAG,aAAa,CAAC;CAC1C,EAAC,MAAM,IAAI,cAAc,GAAG,CAAC,cAAc,GAAG,CAAC,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;GACzE,MAAM,IAAI,cAAc,GAAG,KAAK,CAAC,iBAAiB,GAAG,CAAC,CAAC;CACxD,EAAC,MAAM,IAAI,kBAAkB,GAAG,YAAY,CAAC;CAC7C,EAAC,MAAM,IAAI,kBAAkB,GAAG,CAAC,kBAAkB,GAAG,CAAC,IAAI,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;GAChF,MAAM,IAAI,eAAe,GAAG,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC;CACvD,EAAC,MAAM,IAAI,eAAe,IAAI,cAAc,CAAC,CAAC;CAC9C,EAAC,MAAM,IAAI,eAAe,GAAG,CAAC,eAAe,GAAG,CAAC,IAAI,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;AAC7E;CACA;CACA,EAAC,IAAI,YAAY,GAAG,CAAC,CAAC;CACtB,EAAC,IAAI,YAAY,GAAG,SAAS,IAAI,EAAE;CACnC,GAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,YAAY,CAAC,CAAC;CACtE,GAAE,CAAC;AACH;CACA,EAAC,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,aAAa,EAAE,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;GAC9F,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AAC3C;CACA;CACA,EAAC,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,YAAY,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;CAC5F,EAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC;AACxE;CACA;GACC,YAAY,GAAG,KAAK,CAAC,aAAa,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC;GAC5D,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE;IACvC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC9C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAC7C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;CAC/C,GAAE,CAAC,CAAC;AACJ;CACA;GACC,YAAY,GAAG,CAAC,CAAC;AAClB;CACA;CACA,EAAC,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,cAAc,EAAE,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;GACjG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAC5C;CACA;CACA,EAAC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;AAC7B;CACA,EAAC,OAAO;IACN,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,MAAM;CAChB,GAAE,CAAC;GACF;AACD;CACA;CACA;CACA;CACA,CAAA,SAAS,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE;CAC3C,EAAC,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;CAC5B,EAAC,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;GAC3B,IAAI,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;CAC1C,EAAC,IAAI,MAAM,GAAG,QAAQ,CAAC;CACvB,EAAC,IAAI,MAAM,GAAG,QAAQ,CAAC;AACvB;GACC,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;IAC1B,MAAM,GAAG,KAAK,CAAC;CACjB,GAAE,MAAM,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE;IAClD,MAAM,GAAG,QAAQ,CAAC;IAClB;AACF;CACA,EAAC,IAAI,EAAE,EAAE,EAAE,CAAC;CACZ,EAAC,IAAI,GAAG,EAAE,GAAG,CAAC;GACb,IAAI,EAAE,CAAC;CACR,EAAC,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC;CACnD,EAAC,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC;AACnD;CACA,EAAC,IAAI,MAAM,KAAK,QAAQ,EAAE;CAC1B,GAAE,EAAE,GAAG,SAAS,CAAC,EAAE;CACnB,IAAG,OAAO,CAAC,IAAI,IAAI,CAAC;CACpB,IAAG,CAAC;CACJ,GAAE,EAAE,GAAG,SAAS,CAAC,EAAE;CACnB,IAAG,OAAO,CAAC,GAAG,IAAI,CAAC;CACnB,IAAG,CAAC;CACJ,GAAE,MAAM;CACR,GAAE,EAAE,GAAG,SAAS,CAAC,EAAE;KAChB,OAAO,CAAC,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;CAChC,IAAG,CAAC;CACJ,GAAE,EAAE,GAAG,SAAS,CAAC,EAAE;CACnB,IAAG,OAAO,CAAC,KAAK,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;CAChD,IAAG,CAAC;IACF;AACF;CACA,EAAC,GAAG,GAAG,SAAS,CAAC,EAAE;CACnB,GAAE,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC;CAC7E,GAAE,CAAC;CACH,EAAC,GAAG,GAAG,SAAS,CAAC,EAAE;CACnB,GAAE,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;CACnE,GAAE,CAAC;CACH,EAAC,EAAE,GAAG,SAAS,CAAC,EAAE;IAChB,OAAO,CAAC,IAAI,IAAI,GAAG,KAAK,GAAG,QAAQ,CAAC;CACtC,GAAE,CAAC;AACH;CACA,EAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IAChB,MAAM,GAAG,MAAM,CAAC;AAClB;CACA;CACA,GAAE,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;KACjB,MAAM,GAAG,QAAQ,CAAC;KAClB,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACrB;IACD,MAAM,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACvB,MAAM,GAAG,OAAO,CAAC;AACnB;CACA;CACA,GAAE,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;KACjB,MAAM,GAAG,QAAQ,CAAC;KAClB,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACrB;IACD;AACF;CACA,EAAC,IAAI,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC;CAC7B,EAAC,OAAO;IACN,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM;IAC1C,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM;CAC5C,GAAE,CAAC;GACF;AACD;CACA;CACA;CACA;EACA,SAAS,kBAAkB,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE;CACxD;CACA,EAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;CACd,EAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACd;CACA,EAAC,IAAI,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC;CAC9B,EAAC,IAAI,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC;CACpC,EAAC,IAAI,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC;CACpC,EAAC,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;CAC/B,EAAC,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;CAC/B,EAAC,IAAI,cAAc,GAAG,SAAS,GAAG,YAAY,CAAC;CAC/C,EAAC,IAAI,gBAAgB,GAAG,YAAY,GAAG,YAAY,CAAC;AACpD;CACA,EAAC,IAAI,MAAM,KAAK,OAAO,EAAE;CACzB,GAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC;CAClB,GAAE,MAAM,IAAI,MAAM,KAAK,QAAQ,EAAE;IAC/B,CAAC,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACtB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE;KACjC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;KAC7B;CACH,GAAE,IAAI,CAAC,GAAG,CAAC,EAAE;KACV,CAAC,GAAG,CAAC,CAAC;KACN;IACD;AACF;CACA,EAAC,IAAI,MAAM,KAAK,KAAK,EAAE;IACrB,CAAC,IAAI,cAAc,CAAC;CACtB,GAAE,MAAM,IAAI,MAAM,KAAK,QAAQ,EAAE;CACjC,GAAE,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC;CACpC,GAAE,MAAM;IACN,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACvB;AACF;CACA,EAAC,IAAI,MAAM,KAAK,QAAQ,EAAE;CAC1B,GAAE,IAAI,MAAM,KAAK,MAAM,EAAE;KACtB,CAAC,IAAI,cAAc,CAAC;CACvB,IAAG,MAAM,IAAI,MAAM,KAAK,OAAO,EAAE;KAC9B,CAAC,IAAI,cAAc,CAAC;KACpB;CACH,GAAE,MAAM,IAAI,MAAM,KAAK,MAAM,EAAE;IAC7B,CAAC,IAAI,gBAAgB,CAAC;CACxB,GAAE,MAAM,IAAI,MAAM,KAAK,OAAO,EAAE;IAC9B,CAAC,IAAI,gBAAgB,CAAC;IACtB;AACF;CACA,EAAC,OAAO;IACN,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;CACN,GAAE,CAAC;GACF;AACD;CACA,CAAA,SAAS,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE;GAC/B,OAAO,KAAK,KAAK,QAAQ;MACtB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC;MACnB,KAAK,KAAK,OAAO;OAChB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,QAAQ;CAClC,MAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC;GACvB;AACD;CACA;CACA;CACA;EACA,SAAS,uBAAuB,CAAC,QAAQ,EAAE;GAC1C,OAAO,YAAY,CAAC,EAAE,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;GACjD;AACD;CACA,CAAA,IAAI,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC;GACnC,UAAU,EAAE,WAAW;IACtB,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;CAC5C,GAAE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACtB;AACF;CACA;CACA;GACC,QAAQ,EAAE,WAAW;CACtB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC;CACzB,GAAE,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACjC;CACA,GAAE,IAAI,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;CAC/D,GAAE,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;CACnD,GAAE,IAAI,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AAC7D;CACA,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;IACxD,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAClD,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;AACzD;IACE,OAAO,KAAK,CAAC;IACb;AACF;CACA;GACC,aAAa,EAAE,WAAW;CAC3B,GAAE,OAAO,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAC1F;AACF;CACA;CACA,EAAC,OAAO,EAAE,SAAS,YAAY,EAAE,IAAI,EAAE;CACvC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;CACxC,GAAE,IAAI,SAAS,GAAG,EAAE,CAAC;AACrB;IACE,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,WAAW,EAAE;KAClD,IAAI,QAAQ,GAAG;MACd,MAAM,EAAE,EAAE;MACV,KAAK,EAAE,EAAE;MACT,KAAK,EAAE,EAAE;CACb,KAAI,CAAC;KACF,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;CACnG,IAAG,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;KAC1E,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACjG;CACA,IAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;CAC5B,IAAG,CAAC,CAAC;AACL;IACE,OAAO,SAAS,CAAC;IACjB;AACF;CACA;GACC,YAAY,EAAE,WAAW;CAC1B,GAAE,OAAO,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IACzF;AACF;CACA;CACA;GACC,SAAS,EAAE,WAAW;CACvB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;AACxC;CACA,GAAE,IAAI,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;CACjE,GAAE,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;CACrD,GAAE,IAAI,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AAC/D;CACA,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;IACzD,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;AAC1D;IACE,OAAO,KAAK,CAAC;IACb;AACF;CACA,EAAC,MAAM,EAAE,SAAS,OAAO,EAAE;CAC3B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC;AACzB;CACA;CACA;CACA;CACA,GAAE,IAAI,aAAa,GAAG,EAAE,CAAC,MAAM,CAAC;IAC9B,IAAI,KAAK,GAAG,EAAE,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;CAC7C,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC;AAC1B;CACA,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC;AACtB;CACA;IACE,IAAI,SAAS,GAAG;CAClB,IAAG,MAAM,EAAE,aAAa,CAAC,MAAM;CAC/B,IAAG,MAAM,EAAE,aAAa,CAAC,MAAM;CAC/B,IAAG,CAAC;IACF,IAAI,eAAe,GAAG;CACxB,IAAG,CAAC,EAAE,aAAa,CAAC,CAAC;CACrB,IAAG,CAAC,EAAE,aAAa,CAAC,CAAC;CACrB,IAAG,CAAC;IACF,IAAI,WAAW,GAAG;CACpB,IAAG,KAAK,EAAE,aAAa,CAAC,KAAK;CAC7B,IAAG,MAAM,EAAE,aAAa,CAAC,MAAM;CAC/B,IAAG,CAAC;IACF,IAAI,eAAe,GAAG;CACxB,IAAG,CAAC,EAAE,aAAa,CAAC,MAAM;CAC1B,IAAG,CAAC,EAAE,aAAa,CAAC,MAAM;CAC1B,IAAG,CAAC;AACJ;CACA,GAAE,IAAI,CAAC,EAAE,GAAG,CAAC;AACb;CACA,GAAE,IAAI,MAAM,CAAC,MAAM,EAAE;CACrB,IAAG,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;AACrB;CACA,IAAG,IAAI,WAAW,GAAG,EAAE,CAAC;CACxB,IAAG,IAAI,eAAe,GAAG,EAAE,CAAC;CAC5B,IAAG,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC;AACpF;CACA,IAAG,IAAI,YAAY,GAAG,EAAE,CAAC;CACzB,IAAG,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;CAClD,KAAI,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAChD;AACJ;CACA;CACA,IAAG,IAAI,IAAI,CAAC,MAAM,EAAE;MAChB,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;OAC9C,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;CACjC,MAAK,CAAC,CAAC;MACH;AACJ;CACA;CACA,IAAG,IAAI,IAAI,CAAC,QAAQ,EAAE;MAClB,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;OAC/C,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;CACtC,MAAK,CAAC,CAAC;MACH;AACJ;CACA;KACG,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,WAAW,EAAE;MAClD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;MAC7E,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;CACzF,KAAI,CAAC,CAAC;AACN;AACA;CACA;CACA,IAAG,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;CACjD,IAAG,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;CAC3D,IAAG,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;CAC/C,IAAG,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;CACzD,IAAG,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AACnD;CACA;CACA,IAAG,KAAK,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;CAC/B,IAAG,KAAK,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;CAC/B,IAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;CAC1C,IAAG,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;CACnC,IAAG,KAAK,CAAC,eAAe,GAAG,eAAe,CAAC;AAC3C;CACA;CACA,IAAG,KAAK,CAAC,UAAU,GAAG,YAAY,CAAC;AACnC;CACA;KACG,WAAW,GAAG,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KAC1C,SAAS,GAAG,kBAAkB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;CACrD;CACA,IAAG,eAAe,GAAG,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;CAClF,IAAG,MAAM;CACT,IAAG,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;KAClB;AACH;CACA,GAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;CAClC,GAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;CAClC,GAAE,KAAK,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;CAC9B,GAAE,KAAK,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;CAC9B,GAAE,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;CAClC,GAAE,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;AACpC;CACA;CACA,GAAE,KAAK,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC;CACnC,GAAE,KAAK,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC;AACnC;CACA,GAAE,EAAE,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB;CACA,GAAE,IAAI,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE;KAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;KAC5B;AACH;IACE,OAAO,EAAE,CAAC;IACV;AACF;CACA,EAAC,SAAS,EAAE,SAAS,YAAY,EAAE,IAAI,EAAE;IACvC,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;CAC5B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;CACtB,GAAE,IAAI,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACpE;CACA,GAAE,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;CACjD,GAAE,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;CACjD,GAAE,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;IAC/C;GACD,gBAAgB,EAAE,SAAS,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE;CACpD,GAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;CAC7B,GAAE,IAAI,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC;CAC/B,GAAE,IAAI,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC;CACrC,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;CACzB,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;CACzB,GAAE,IAAI,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC;CAC3B,GAAE,IAAI,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC;CAC3B,GAAE,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;CACzB,GAAE,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B;CACA,GAAE,IAAI,MAAM,KAAK,QAAQ,EAAE;KACxB,EAAE,GAAG,GAAG,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC;AAC3B;CACA,IAAG,IAAI,MAAM,KAAK,MAAM,EAAE;MACtB,EAAE,GAAG,GAAG,CAAC;CACb,KAAI,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;MACpB,EAAE,GAAG,EAAE,CAAC;AACZ;CACA,KAAI,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;CACxB,KAAI,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;CACxB,KAAI,MAAM;CACV,KAAI,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;CACrB,KAAI,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;MACpB,EAAE,GAAG,EAAE,CAAC;AACZ;CACA,KAAI,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;CACxB,KAAI,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;MACpB;CACJ,IAAG,MAAM;CACT,IAAG,IAAI,MAAM,KAAK,MAAM,EAAE;MACtB,EAAE,GAAG,GAAG,GAAG,YAAY,IAAI,SAAS,CAAC,CAAC;CAC1C,KAAI,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;CACxB,KAAI,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;CACxB,KAAI,MAAM,IAAI,MAAM,KAAK,OAAO,EAAE;MAC9B,EAAE,GAAG,GAAG,GAAG,KAAK,GAAG,YAAY,GAAG,SAAS,CAAC;CAChD,KAAI,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;CACxB,KAAI,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;CACxB,KAAI,MAAM;CACV,KAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC;CACnB,KAAI,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;CACxB,KAAI,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;MACpB;CACJ,IAAG,IAAI,MAAM,KAAK,KAAK,EAAE;MACrB,EAAE,GAAG,GAAG,CAAC;CACb,KAAI,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;MACpB,EAAE,GAAG,EAAE,CAAC;CACZ,KAAI,MAAM;CACV,KAAI,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC;CACtB,KAAI,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;MACpB,EAAE,GAAG,EAAE,CAAC;CACZ;CACA,KAAI,IAAI,GAAG,GAAG,EAAE,CAAC;MACb,EAAE,GAAG,EAAE,CAAC;MACR,EAAE,GAAG,GAAG,CAAC;MACT;KACD;IACD,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACxD;AACF;GACC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;CAClC,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;CACvB,GAAE,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;CAC5B,GAAE,IAAI,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC;AACrC;IACE,IAAI,MAAM,EAAE;CACd,IAAG,IAAI,SAAS,GAAG,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;AACxD;CACA,IAAG,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;AAC1C;CACA,IAAG,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;CACvD,IAAG,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC;AAC/B;CACA,IAAG,aAAa,GAAG,EAAE,CAAC,aAAa,CAAC;CACpC,IAAG,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC;AAClC;CACA,IAAG,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,cAAc,CAAC;CACrC,IAAG,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE,CAAC,eAAe,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC;AAC3F;KACG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;MAC5B,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,aAAa,GAAG,CAAC,CAAC,CAAC;CACxE,KAAI,EAAE,CAAC,CAAC,IAAI,aAAa,GAAG,YAAY,CAAC;AACzC;CACA,KAAI,IAAI,CAAC,GAAG,CAAC,KAAK,MAAM,EAAE;OACrB,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,iBAAiB,GAAG,YAAY,CAAC;OAC5C;MACD;KACD;IACD;AACF;GACC,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;CACjC,GAAE,IAAI,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC;CACrC,GAAE,IAAI,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC;CACnC,GAAE,IAAI,SAAS,GAAG,EAAE,CAAC,UAAU,CAAC;CAChC,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;CACrB,GAAE,IAAI,cAAc,GAAG,EAAE,CAAC,aAAa,CAAC;CACxC,GAAE,IAAI,YAAY,GAAG,CAAC,CAAC;CACvB,GAAE,IAAI,MAAM,GAAG,cAAc,GAAG,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5D;CACA,GAAE,IAAI,SAAS,GAAG,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;AACvD;CACA,GAAE,IAAI,cAAc,GAAG,SAAS,IAAI,EAAE;KACnC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC;CACjF,IAAG,EAAE,CAAC,CAAC,IAAI,YAAY,GAAG,WAAW,CAAC;CACtC,IAAG,CAAC;AACJ;CACA,GAAE,IAAI,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;IAC9D,IAAI,uBAAuB,GAAG,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAC/D;CACA,GAAE,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;CAC5B,GAAE,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC;CAC9B,GAAE,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,YAAY,EAAE,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC;AACvF;IACE,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,EAAE,EAAE,uBAAuB,CAAC,CAAC;AAClD;CACA;CACA,GAAE,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,aAAa,CAAC;IACjC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;AAChD;CACA,GAAE,YAAY,GAAG,cAAc,IAAI,uBAAuB,KAAK,OAAO;CACtE,MAAK,SAAS,KAAK,QAAQ,IAAI,YAAY,GAAG,CAAC,GAAG,CAAC,KAAK,YAAY,GAAG,CAAC,CAAC;CACzE,MAAK,CAAC,CAAC;AACP;CACA;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACjD,IAAG,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;KACnB,SAAS,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;KAClC,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACnC;CACA,IAAG,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;KAC1B,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AACnD;CACA,IAAG,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;CAC1B,IAAG,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACnD;MACI,IAAI,cAAc,EAAE;OACnB,IAAI,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACzC;CACA;CACA,MAAK,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,qBAAqB,CAAC;OACzC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;AACnG;CACA;CACA,MAAK,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;CACvB,MAAK,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;OAC1C,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;AACrG;CACA;CACA,MAAK,GAAG,CAAC,SAAS,GAAG,WAAW,CAAC,eAAe,CAAC;CACjD,MAAK,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;CACvI,MAAK,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;OAC1B;AACL;CACA,KAAI,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;MACzB;AACJ;KACG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;KAC/C;AACH;CACA;IACE,YAAY,GAAG,CAAC,CAAC;AACnB;CACA;IACE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;CAC/C,GAAE,EAAE,CAAC,CAAC,IAAI,WAAW,CAAC;IACpB;AACF;GACC,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;CACnC,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;CACzB,GAAE,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;CAC7B,GAAE,IAAI,cAAc,EAAE,CAAC,CAAC;AACxB;IACE,IAAI,MAAM,EAAE;CACd,IAAG,IAAI,SAAS,GAAG,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;AACxD;CACA,IAAG,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;CAC3C,IAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC;AAC9B;CACA,IAAG,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;CACxD,IAAG,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC;AAC/B;CACA,IAAG,cAAc,GAAG,EAAE,CAAC,cAAc,CAAC;AACtC;CACA,IAAG,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,eAAe,CAAC;CACtC,IAAG,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE,CAAC,gBAAgB,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC;AAC9F;KACG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;MAC5B,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC;MACtE,EAAE,CAAC,CAAC,IAAI,cAAc,GAAG,EAAE,CAAC,aAAa,CAAC;MAC1C;KACD;IACD;AACF;GACC,cAAc,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE;CACpD,GAAE,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,eAAe,CAAC;CACrC,GAAE,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC;CACnC,GAAE,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,WAAW,CAAC;CACjC,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;CACzB,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;CACzB,GAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;CACf,GAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;CACf,GAAE,IAAI,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;CAChC,GAAE,IAAI,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;CAClC,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC;AAC/B;CACA,GAAE,GAAG,CAAC,SAAS,EAAE,CAAC;IAChB,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;CAC5B,GAAE,IAAI,MAAM,KAAK,KAAK,EAAE;KACrB,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;KAChC;CACH,GAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;CACpC,GAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;IAC1D,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,OAAO,EAAE;KAC9C,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;KAChC;CACH,GAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;IAC3C,GAAG,CAAC,gBAAgB,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,KAAK,GAAG,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;CAC9E,GAAE,IAAI,MAAM,KAAK,QAAQ,EAAE;KACxB,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;KAChC;CACH,GAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;CACrC,GAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;IAC5D,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,MAAM,EAAE;KAC7C,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;KAChC;IACD,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;CAC5B,GAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;CAC5C,GAAE,GAAG,CAAC,SAAS,EAAE,CAAC;AAClB;CACA,GAAE,GAAG,CAAC,IAAI,EAAE,CAAC;AACb;CACA,GAAE,IAAI,EAAE,CAAC,WAAW,GAAG,CAAC,EAAE;CAC1B,IAAG,GAAG,CAAC,MAAM,EAAE,CAAC;KACb;IACD;AACF;GACC,IAAI,EAAE,WAAW;IAChB,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;CAC5B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;AACtB;CACA,GAAE,IAAI,EAAE,CAAC,OAAO,KAAK,CAAC,EAAE;CACxB,IAAG,OAAO;KACP;AACH;IACE,IAAI,WAAW,GAAG;CACpB,IAAG,KAAK,EAAE,EAAE,CAAC,KAAK;CAClB,IAAG,MAAM,EAAE,EAAE,CAAC,MAAM;CACpB,IAAG,CAAC;IACF,IAAI,EAAE,GAAG;CACX,IAAG,CAAC,EAAE,EAAE,CAAC,CAAC;CACV,IAAG,CAAC,EAAE,EAAE,CAAC,CAAC;CACV,IAAG,CAAC;AACJ;CACA;CACA,GAAE,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;AAC7D;CACA;CACA,GAAE,IAAI,iBAAiB,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;AAC/H;IACE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,iBAAiB,EAAE;CAClD,IAAG,GAAG,CAAC,IAAI,EAAE,CAAC;CACd,IAAG,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;AAC7B;CACA;CACA,IAAG,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;AACjD;CACA;CACA,IAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC;AACvB;CACA,IAAG,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC;AAC9D;CACA;KACG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AAC/B;CACA;KACG,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AAC9B;CACA;KACG,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AAChC;CACA,IAAG,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC;AAC7D;CACA,IAAG,GAAG,CAAC,OAAO,EAAE,CAAC;KACd;IACD;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,WAAW,EAAE,SAAS,CAAC,EAAE;CAC1B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC;CAC5B,GAAE,IAAI,OAAO,GAAG,KAAK,CAAC;AACtB;IACE,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC;AACxC;CACA;CACA,GAAE,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE;CAC7B,IAAG,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC;CACnB,IAAG,MAAM;CACT,IAAG,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;CAC9E,IAAG,IAAI,OAAO,CAAC,OAAO,EAAE;CACxB,KAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;MACrB;KACD;AACH;CACA;CACA,GAAE,OAAO,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;AAC/D;CACA;IACE,IAAI,OAAO,EAAE;CACf,IAAG,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC;AAC/B;KACG,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;MACtC,EAAE,CAAC,cAAc,GAAG;CACxB,MAAK,CAAC,EAAE,CAAC,CAAC,CAAC;CACX,MAAK,CAAC,EAAE,CAAC,CAAC,CAAC;CACX,MAAK,CAAC;AACN;CACA,KAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CACpB,KAAI,EAAE,CAAC,KAAK,EAAE,CAAC;MACX;KACD;AACH;IACE,OAAO,OAAO,CAAC;IACf;CACF,EAAC,CAAC,CAAC;AACH;CACA;CACA;CACA;EACA,IAAI,aAAa,GAAG,WAAW,CAAC;AAChC;EACA,IAAI,YAAY,GAAG,SAAS,CAAC;CAC7B,CAAA,YAAY,CAAC,WAAW,GAAG,aAAa,CAAC;AACzC;CACA,CAAA,IAAI,gBAAgB,GAAG,SAAS,CAAC,cAAc,CAAC;AAChD;CACA,CAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE;GAC5B,QAAQ,EAAE,EAAE;CACb,EAAC,MAAM,EAAE;CACT,GAAE,WAAW;CACb,GAAE,UAAU;CACZ,GAAE,OAAO;CACT,GAAE,YAAY;CACd,GAAE,WAAW;IACX;CACF,EAAC,KAAK,EAAE;IACN,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,SAAS;IACf,SAAS,EAAE,IAAI;IACf,iBAAiB,EAAE,GAAG;IACtB;GACD,OAAO,EAAE,IAAI;GACb,mBAAmB,EAAE,IAAI;GACzB,UAAU,EAAE,IAAI;GAChB,2BAA2B,EAAE,CAAC;CAC/B,EAAC,CAAC,CAAC;AACH;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,SAAS,gBAAgB,2BAA2B;GACnD,OAAO,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;IACrE,MAAM,EAAE,SAAS,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;KAC9C,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,OAAO,EAAE;MACvC,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;CAClC,KAAI,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC;AACvB;CACA,KAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;CACtB,MAAK,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;OACjB;AACL;MACI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;OAC1B,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;CAC5B,MAAK,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC,CAAC;AAClF;OACK,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;QAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrB;AACN;CACA,MAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;CACrF;CACA;QACM,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;CACzF,OAAM,MAAM;CACZ;CACA,OAAM,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACvC;OACD;CACL,KAAI,MAAM;CACV,KAAI,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;MAChD;KACD;CACH,GAAE,CAAC,CAAC;GACH;AACD;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,SAAS,WAAW,2BAA2B;GAC9C,OAAO,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;IACrE,MAAM,EAAE,SAAS,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;CACjD,IAAG,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CACjD,IAAG,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1B;CACA,IAAG,IAAI,GAAG,KAAK,QAAQ,EAAE;CACzB;MACI,MAAM,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;CAC/C,KAAI,MAAM,IAAI,GAAG,KAAK,OAAO,EAAE;CAC/B;MACI,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;CAC/F,KAAI,MAAM;CACV,KAAI,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;MAChD;KACD;CACH,GAAE,CAAC,CAAC;GACH;AACD;EACA,SAAS,UAAU,CAAC,MAAM,EAAE;GAC3B,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACxC;CACA;CACA;CACA,EAAC,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;GAC3C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;GACpC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;AACjC;CACA,EAAC,MAAM,CAAC,OAAO,GAAG,WAAW;IAC3B,aAAa,CAAC,MAAM;CACtB,GAAE,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC;CAC5B,GAAE,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;AACxB;GACC,OAAO,MAAM,CAAC;GACd;AACD;EACA,SAAS,YAAY,CAAC,KAAK,EAAE;CAC7B,EAAC,IAAI,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC;AAChC;GACC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE;IAC5C,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;CACvC,GAAE,CAAC,CAAC;AACJ;GACC,UAAU,GAAG,WAAW;IACvB,aAAa,CAAC,MAAM;CACtB,GAAE,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;IAChC,UAAU,CAAC,CAAC;AACd;GACC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,UAAU,CAAC;CACnD,EAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;CAC7B,EAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;AAC7B;CACA;GACC,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;CAC9C,EAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;GAC3B;AACD;CACA,CAAA,SAAS,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE;GACtD,IAAI,EAAE,CAAC;CACR,EAAC,IAAI,KAAK,GAAG,SAAS,GAAG,EAAE;CAC3B,GAAE,OAAO,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;CACvB,GAAE,CAAC;AACH;CACA,EAAC,GAAG;CACJ,GAAE,EAAE,GAAG,MAAM,GAAG,KAAK,EAAE,CAAC;IACtB,QAAQ,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;AACrD;GACC,OAAO,EAAE,CAAC;GACV;AACD;EACA,SAAS,oBAAoB,CAAC,QAAQ,EAAE;GACvC,OAAO,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,QAAQ,CAAC;GACnD;AACD;CACA,CAAA,SAAS,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE;CAC/B,EAAC,OAAO,SAAS,CAAC,EAAE,CAAC,EAAE;IACrB,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;OACnB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;OACb,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;CACnB,GAAE,CAAC;GACF;AACD;CACA,CAAA,IAAI,KAAK,GAAG,SAAS,IAAI,EAAE,MAAM,EAAE;GAClC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;GAC7B,OAAO,IAAI,CAAC;CACb,EAAC,CAAC;AACF;CACA,CAAA,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,sBAAsB;CACtD;CACA;CACA;CACA,EAAC,SAAS,EAAE,SAAS,IAAI,EAAE,MAAM,EAAE;CACnC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AAChB;CACA,GAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AAC9B;IACE,IAAI,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpD,IAAI,MAAM,GAAG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IACvC,IAAI,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;IACrC,IAAI,KAAK,GAAG,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC;AACrC;IACE,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;CAC1B,GAAE,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC;CACnB,GAAE,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC;CACrB,GAAE,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC;CACrB,GAAE,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC;CACnB,GAAE,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC;IACnB,EAAE,CAAC,WAAW,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;CAClD,GAAE,EAAE,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;CAC9B,GAAE,EAAE,CAAC,eAAe,GAAG,KAAK,CAAC;CAC7B,GAAE,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC;AAClB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,GAAE,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC;CAChB,GAAE,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC;AACrB;CACA;IACE,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;AAC9B;CACA;CACA,GAAE,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE;KACjC,GAAG,EAAE,WAAW;CACnB,KAAI,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;MACtB;CACJ,IAAG,GAAG,EAAE,SAAS,KAAK,EAAE;CACxB,KAAI,EAAE,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;MACvB;CACJ,IAAG,CAAC,CAAC;AACL;CACA,GAAE,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE;CAC3B;CACA;CACA;CACA;CACA,IAAG,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;CACtF,IAAG,OAAO;KACP;AACH;CACA,GAAE,EAAE,CAAC,UAAU,EAAE,CAAC;CAClB,GAAE,EAAE,CAAC,MAAM,EAAE,CAAC;IACZ;AACF;CACA;CACA;CACA;GACC,UAAU,EAAE,WAAW;CACxB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AAChB;CACA;IACE,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;AACxC;CACA,GAAE,SAAS,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AACzD;CACA,GAAE,EAAE,CAAC,UAAU,EAAE,CAAC;AAClB;CACA,GAAE,IAAI,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE;CAC7B;CACA,IAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KAChB;AACH;CACA,GAAE,EAAE,CAAC,WAAW,EAAE,CAAC;AACnB;CACA;IACE,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;AACvC;IACE,OAAO,EAAE,CAAC;IACV;AACF;GACC,KAAK,EAAE,WAAW;IACjB,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,IAAI,CAAC;IACZ;AACF;GACC,IAAI,EAAE,WAAW;CAClB;CACA,GAAE,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC;IACZ;AACF;CACA,EAAC,MAAM,EAAE,SAAS,MAAM,EAAE;CAC1B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;CAC3B,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;CACzB,GAAE,IAAI,WAAW,GAAG,CAAC,OAAO,CAAC,mBAAmB,IAAI,EAAE,CAAC,WAAW,KAAK,IAAI,CAAC;AAC5E;CACA;CACA;AACA;CACA;IACE,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1E,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACrH;CACA,GAAE,IAAI,EAAE,CAAC,KAAK,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,KAAK,SAAS,EAAE;CACxD,IAAG,OAAO;KACP;AACH;IACE,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,GAAG,QAAQ,CAAC;IACnC,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC;IACtC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC;IACrC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;AACzC;IACE,SAAS,CAAC,WAAW,CAAC,EAAE,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;AACtD;IACE,IAAI,CAAC,MAAM,EAAE;CACf;CACA,IAAG,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;CACtD,IAAG,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAChD;CACA;CACA,IAAG,IAAI,OAAO,CAAC,QAAQ,EAAE;MACrB,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;MAC9B;AACJ;CACA,IAAG,EAAE,CAAC,IAAI,EAAE,CAAC;KACV,EAAE,CAAC,MAAM,CAAC;CACb,KAAI,QAAQ,EAAE,OAAO,CAAC,2BAA2B;CACjD,KAAI,CAAC,CAAC;KACH;IACD;AACF;GACC,mBAAmB,EAAE,WAAW;CACjC,GAAE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC3B,IAAI,aAAa,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;CAC3C,GAAE,IAAI,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;AACnC;CACA,GAAE,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,EAAE;CACpE,IAAG,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE;CACzB,KAAI,YAAY,CAAC,EAAE,GAAG,oBAAoB,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;MAC9E;CACJ,IAAG,CAAC,CAAC;AACL;CACA,GAAE,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,EAAE;CACpE,IAAG,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE;CACzB,KAAI,YAAY,CAAC,EAAE,GAAG,oBAAoB,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;MAC9E;CACJ,IAAG,CAAC,CAAC;AACL;IACE,IAAI,YAAY,EAAE;KACjB,YAAY,CAAC,EAAE,GAAG,YAAY,CAAC,EAAE,IAAI,OAAO,CAAC;KAC7C;IACD;AACF;CACA;CACA;CACA;GACC,mBAAmB,EAAE,WAAW;CACjC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;IACzB,IAAI,MAAM,GAAG,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC;CAC/B,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC;CACjB,GAAE,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE,EAAE,EAAE;CAC7D,IAAG,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;KAChB,OAAO,GAAG,CAAC;KACX,EAAE,EAAE,CAAC,CAAC;AACT;CACA,GAAE,IAAI,OAAO,CAAC,MAAM,EAAE;CACtB,IAAG,KAAK,GAAG,KAAK,CAAC,MAAM;CACvB,KAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,SAAS,YAAY,EAAE;CAC5D,MAAK,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;CAC5E,MAAK,CAAC;CACN,KAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,SAAS,YAAY,EAAE;CAC5D,MAAK,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;CACxE,MAAK,CAAC;CACN,KAAI,CAAC;KACF;AACH;CACA,GAAE,IAAI,OAAO,CAAC,KAAK,EAAE;KAClB,KAAK,CAAC,IAAI,CAAC;CACd,KAAI,OAAO,EAAE,OAAO,CAAC,KAAK;MACtB,KAAK,EAAE,cAAc;MACrB,SAAS,EAAE,IAAI;MACf,SAAS,EAAE,WAAW;CAC1B,KAAI,CAAC,CAAC;KACH;AACH;IACE,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE;CACvC,IAAG,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC;CACnC,IAAG,IAAI,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC;CAC5B,IAAG,IAAI,SAAS,GAAG,gBAAgB,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACnE;CACA,IAAG,IAAI,oBAAoB,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;CAC7F,KAAI,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;MACvC;AACJ;CACA,IAAG,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;CACtB,IAAG,IAAI,KAAK,GAAG,IAAI,CAAC;CACpB,IAAG,IAAI,EAAE,IAAI,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE;CACtD,KAAI,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;CACvB,KAAI,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC;CACjC,KAAI,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;CACvB,KAAI,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;CACrB,KAAI,MAAM;MACN,IAAI,UAAU,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;MAClE,IAAI,CAAC,UAAU,EAAE;CACrB,MAAK,OAAO;OACP;CACL,KAAI,KAAK,GAAG,IAAI,UAAU,CAAC;OACtB,EAAE,EAAE,EAAE;OACN,IAAI,EAAE,SAAS;OACf,OAAO,EAAE,YAAY;CAC1B,MAAK,GAAG,EAAE,EAAE,CAAC,GAAG;OACX,KAAK,EAAE,EAAE;CACd,MAAK,CAAC,CAAC;MACH,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;MACzB;AACJ;CACA,IAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC;AAC7B;CACA;CACA;CACA;CACA,IAAG,IAAI,IAAI,CAAC,SAAS,EAAE;CACvB,KAAI,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC;MACjB;CACJ,IAAG,CAAC,CAAC;CACL;IACE,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,EAAE,EAAE;KAChD,IAAI,CAAC,UAAU,EAAE;CACpB,KAAI,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;MAClB;CACJ,IAAG,CAAC,CAAC;AACL;CACA,GAAE,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB;CACA,GAAE,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C;AACF;GACC,wBAAwB,EAAE,WAAW;CACtC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,cAAc,GAAG,EAAE,CAAC;IACxB,IAAI,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;CAClC,GAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AACd;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;CACrD,IAAG,IAAI,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC1B,IAAI,IAAI,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;CACnC,IAAG,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;AAC7C;KACG,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;CACxC,KAAI,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;MACzB,IAAI,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;MAC5B;CACJ,IAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KACjB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;CACnC,IAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AAClB;CACA,IAAG,IAAI,IAAI,CAAC,UAAU,EAAE;MACpB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CACnC,KAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;CACjC,KAAI,MAAM;MACN,IAAI,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACjD,KAAI,IAAI,eAAe,KAAK,SAAS,EAAE;CACvC,MAAK,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC,CAAC;OAC5D;AACL;MACI,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;MAC7C,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;MACrC;KACD;AACH;IACE,OAAO,cAAc,CAAC;IACtB;AACF;CACA;CACA;CACA;CACA;GACC,aAAa,EAAE,WAAW;CAC3B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,YAAY,EAAE;KAChE,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;KACnD,EAAE,EAAE,CAAC,CAAC;IACP;AACF;CACA;CACA;CACA;GACC,KAAK,EAAE,WAAW;CACnB,GAAE,IAAI,CAAC,aAAa,EAAE,CAAC;CACvB,GAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;IAC1B;AACF;CACA,EAAC,MAAM,EAAE,SAAS,MAAM,EAAE;CAC1B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AACd;IACE,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;CAC7C;CACA,IAAG,MAAM,GAAG;MACR,QAAQ,EAAE,MAAM;CACpB,KAAI,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;CACtB,KAAI,CAAC;KACF;AACH;CACA,GAAE,YAAY,CAAC,EAAE,CAAC,CAAC;AACnB;CACA;CACA;CACA,GAAE,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AAC/B;IACE,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,CAAC,KAAK,KAAK,EAAE;CACzD,IAAG,OAAO;KACP;AACH;CACA;IACE,EAAE,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC;AAC7B;CACA;CACA,GAAE,IAAI,cAAc,GAAG,EAAE,CAAC,wBAAwB,EAAE,CAAC;AACrD;CACA;IACE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;KAC1D,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC;KACxD;AACH;CACA,GAAE,EAAE,CAAC,YAAY,EAAE,CAAC;AACpB;CACA;CACA,GAAE,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE;KAC1D,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,UAAU,EAAE;CACvD,KAAI,UAAU,CAAC,KAAK,EAAE,CAAC;CACvB,KAAI,CAAC,CAAC;KACH;AACH;CACA,GAAE,EAAE,CAAC,cAAc,EAAE,CAAC;AACtB;CACA;CACA;CACA,GAAE,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;AAC1B;CACA;CACA;CACA,GAAE,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC;AACrB;CACA;IACE,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;AACzC;CACA,GAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;AAC9C;CACA,GAAE,IAAI,EAAE,CAAC,eAAe,EAAE;KACvB,EAAE,CAAC,gBAAgB,GAAG;CACzB,KAAI,QAAQ,EAAE,MAAM,CAAC,QAAQ;CAC7B,KAAI,MAAM,EAAE,MAAM,CAAC,MAAM;CACzB,KAAI,IAAI,EAAE,MAAM,CAAC,IAAI;CACrB,KAAI,CAAC;CACL,IAAG,MAAM;CACT,IAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KAClB;IACD;AACF;CACA;CACA;CACA;CACA;CACA;GACC,YAAY,EAAE,WAAW;CAC1B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AAChB;IACE,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,CAAC,KAAK,KAAK,EAAE;CACzD,IAAG,OAAO;KACP;AACH;CACA,GAAE,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACrD;CACA,GAAE,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC;IAChB,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,EAAE;CACzC;CACA;CACA,IAAG,IAAI,GAAG,CAAC,UAAU,EAAE;CACvB,KAAI,GAAG,CAAC,UAAU,EAAE,CAAC;MACjB;CACJ,IAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;KACjD,EAAE,EAAE,CAAC,CAAC;AACT;IACE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,KAAK,EAAE;CAC3C,IAAG,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;CACrB,IAAG,CAAC,CAAC;AACL;CACA;CACA;CACA;CACA;CACA;CACA;CACA;IACE,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAC5C,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;IACvC;AACF;CACA;CACA;CACA;CACA;CACA;GACC,cAAc,EAAE,WAAW;CAC5B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AAChB;IACE,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,sBAAsB,CAAC,KAAK,KAAK,EAAE;CACjE,IAAG,OAAO;KACP;AACH;IACE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACjE,IAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;KACpB;AACH;IACE,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,qBAAqB,CAAC,CAAC;IAC/C;AACF;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,aAAa,EAAE,SAAS,KAAK,EAAE;CAChC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,IAAI,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,IAAI,GAAG;KACV,IAAI,EAAE,IAAI;KACV,KAAK,EAAE,KAAK;CACf,IAAG,CAAC;AACJ;CACA,GAAE,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,qBAAqB,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,EAAE;CACxE,IAAG,OAAO;KACP;AACH;CACA,GAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAC5B;CACA,GAAE,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,oBAAoB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD;AACF;CACA,EAAC,MAAM,EAAE,SAAS,MAAM,EAAE;CAC1B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AAChB;IACE,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;CAC7C;CACA,IAAG,MAAM,GAAG;MACR,QAAQ,EAAE,MAAM;CACpB,KAAI,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;CACtB,KAAI,CAAC;KACF;AACH;IACE,IAAI,gBAAgB,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;CAC9C,GAAE,IAAI,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,IAAI,gBAAgB,CAAC,QAAQ,CAAC,CAAC;CAClG,GAAE,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AACzB;IACE,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,CAAC,KAAK,KAAK,EAAE;CACzD,IAAG,OAAO;KACP;AACH;CACA,GAAE,IAAI,UAAU,GAAG,SAAS,SAAS,EAAE;KACpC,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;CAC1C,IAAG,SAAS,CAAC,QAAQ,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;CACxF,IAAG,CAAC;AACJ;CACA,GAAE,IAAI,gBAAgB,IAAI,QAAQ,EAAE;CACpC,IAAG,IAAI,SAAS,GAAG,IAAI,cAAc,CAAC;CACtC,KAAI,QAAQ,EAAE,QAAQ,GAAG,KAAK;MAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,gBAAgB,CAAC,MAAM;AACpD;CACA,KAAI,MAAM,EAAE,SAAS,KAAK,EAAE,eAAe,EAAE;CAC7C,MAAK,IAAI,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;CAC3E,MAAK,IAAI,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC;OAC9C,IAAI,WAAW,GAAG,WAAW,GAAG,eAAe,CAAC,QAAQ,CAAC;AAC9D;CACA,MAAK,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;OAClE;AACL;CACA,KAAI,mBAAmB,EAAE,gBAAgB,CAAC,UAAU;MAChD,mBAAmB,EAAE,UAAU;CACnC,KAAI,CAAC,CAAC;AACN;CACA,IAAG,eAAe,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;CAC/D,IAAG,MAAM;CACT,IAAG,EAAE,CAAC,IAAI,EAAE,CAAC;AACb;CACA;CACA,IAAG,UAAU,CAAC,IAAI,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;KACzD;AACH;IACE,OAAO,EAAE,CAAC;IACV;AACF;CACA,EAAC,IAAI,EAAE,SAAS,WAAW,EAAE;CAC7B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,CAAC,EAAE,MAAM,CAAC;AAChB;CACA,GAAE,EAAE,CAAC,KAAK,EAAE,CAAC;AACb;CACA,GAAE,IAAI,SAAS,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE;KACzC,WAAW,GAAG,CAAC,CAAC;KAChB;AACH;CACA,GAAE,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAC7B;CACA,GAAE,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE;CACvC,IAAG,OAAO;KACP;AACH;CACA,GAAE,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,EAAE,CAAC,WAAW,CAAC,CAAC,KAAK,KAAK,EAAE;CACtE,IAAG,OAAO;KACP;AACH;CACA;CACA;CACA;CACA,GAAE,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC;IACpB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;KACvD,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;KAC7B;AACH;CACA,GAAE,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AAC/B;CACA;IACE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;KAC9B,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;KAC7B;AACH;CACA,GAAE,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AAC/B;CACA,GAAE,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IACpD;AACF;CACA;CACA;CACA;CACA,EAAC,UAAU,EAAE,SAAS,WAAW,EAAE;CACnC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AAChB;IACE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACzE,IAAG,IAAI,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;CAC/B,KAAI,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;MACxD;KACD;AACH;IACE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACnC;AACF;CACA;CACA;CACA;CACA,EAAC,sBAAsB,EAAE,SAAS,aAAa,EAAE;CACjD,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;CACxC,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC;CAClB,GAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AACd;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;KAClD,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;MAC7C,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;MAClC;KACD;AACH;IACE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/C;IACE,OAAO,MAAM,CAAC;IACd;AACF;CACA;CACA;CACA;GACC,6BAA6B,EAAE,WAAW;CAC3C,GAAE,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACzC;AACF;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,YAAY,EAAE,SAAS,WAAW,EAAE;CACrC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,QAAQ,EAAE,CAAC,CAAC;AAClB;CACA,GAAE,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,oBAAoB,EAAE,CAAC,WAAW,CAAC,CAAC,KAAK,KAAK,EAAE;CAC9E,IAAG,OAAO;KACP;AACH;CACA,GAAE,QAAQ,GAAG,EAAE,CAAC,6BAA6B,EAAE,CAAC;CAChD,GAAE,KAAK,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;KAC1C,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;KACzC;AACH;CACA,GAAE,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,mBAAmB,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5D;AACF;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,WAAW,EAAE,SAAS,IAAI,EAAE,WAAW,EAAE;CAC1C,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,IAAI,GAAG;KACV,IAAI,EAAE,IAAI;CACb,IAAG,KAAK,EAAE,IAAI,CAAC,KAAK;KACjB,WAAW,EAAE,WAAW;CAC3B,IAAG,CAAC;AACJ;CACA,GAAE,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,mBAAmB,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,EAAE;CACtE,IAAG,OAAO;KACP;AACH;IACE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACpC;CACA,GAAE,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD;AACF;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,YAAY,EAAE,SAAS,WAAW,EAAE;CACrC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;IACzB,IAAI,IAAI,GAAG;KACV,OAAO,EAAE,OAAO;KAChB,WAAW,EAAE,WAAW;CAC3B,IAAG,CAAC;AACJ;CACA,GAAE,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,mBAAmB,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,EAAE;CACtE,IAAG,OAAO;KACP;AACH;CACA,GAAE,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB;CACA,GAAE,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD;AACF;CACA;CACA;CACA;CACA;CACA,EAAC,iBAAiB,EAAE,SAAS,CAAC,EAAE;IAC9B,OAAO,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9C;AACF;CACA,EAAC,kBAAkB,EAAE,SAAS,CAAC,EAAE;CACjC,GAAE,OAAO,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IAChE;AACF;CACA,EAAC,kBAAkB,EAAE,SAAS,CAAC,EAAE;CACjC,GAAE,OAAO,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IACpE;AACF;GACC,yBAAyB,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;IACrD,IAAI,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;CAC5C,GAAE,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;KACjC,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;KAChC;AACH;IACE,OAAO,EAAE,CAAC;IACV;AACF;CACA,EAAC,iBAAiB,EAAE,SAAS,CAAC,EAAE;CAChC,GAAE,OAAO,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IAClE;AACF;CACA,EAAC,cAAc,EAAE,SAAS,YAAY,EAAE;CACxC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;CAC/C,GAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;CACtB,IAAG,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;KACnB;AACH;IACE,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChC,IAAI,CAAC,IAAI,EAAE;KACV,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG;MAC7B,IAAI,EAAE,IAAI;MACV,IAAI,EAAE,EAAE;MACR,OAAO,EAAE,IAAI;MACb,UAAU,EAAE,IAAI;MAChB,MAAM,EAAE,IAAI;MACZ,OAAO,EAAE,IAAI;MACb,OAAO,EAAE,IAAI;CACjB,KAAI,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;MACzB,KAAK,EAAE,YAAY;CACvB,KAAI,CAAC;KACF;AACH;IACE,OAAO,IAAI,CAAC;IACZ;AACF;GACC,sBAAsB,EAAE,WAAW;CACpC,GAAE,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACnE,IAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;MAC7B,KAAK,EAAE,CAAC;MACR;KACD;IACD,OAAO,KAAK,CAAC;IACb;AACF;CACA,EAAC,gBAAgB,EAAE,SAAS,YAAY,EAAE;IACxC,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;AAC/C;CACA;CACA;IACE,OAAO,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC;IAClG;AACF;GACC,cAAc,EAAE,WAAW;IAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACzC;AACF;CACA;CACA;CACA;CACA,EAAC,kBAAkB,EAAE,SAAS,YAAY,EAAE;CAC5C,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;IACjB,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;CACjD,GAAE,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAChD;IACE,IAAI,IAAI,EAAE;CACZ,IAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;CAC7B,IAAG,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;KACzB;IACD;AACF;GACC,OAAO,EAAE,WAAW;CACrB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;CACzB,GAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AACd;CACA,GAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AACZ;CACA;IACE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CAC7D,IAAG,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;KACzB;AACH;IACE,IAAI,MAAM,EAAE;CACd,IAAG,EAAE,CAAC,YAAY,EAAE,CAAC;KAClB,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;KAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CACnC,IAAG,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC;CACpB,IAAG,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC;KACd;AACH;IACE,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AACrC;IACE,OAAO,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B;AACF;GACC,aAAa,EAAE,WAAW;CAC3B,GAAE,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC3D;AACF;GACC,WAAW,EAAE,WAAW;CACzB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,EAAE,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC;KAC7B,MAAM,EAAE,EAAE;KACV,cAAc,EAAE,EAAE;CACrB,IAAG,KAAK,EAAE,EAAE,CAAC,IAAI;CACjB,IAAG,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ;KAC7B,EAAE,EAAE,CAAC,CAAC;IACP;AACF;CACA;CACA;CACA;GACC,UAAU,EAAE,WAAW;CACxB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,SAAS,GAAG,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC;IACnC,IAAI,QAAQ,GAAG,WAAW;KACzB,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;CACxC,IAAG,CAAC;AACJ;CACA,GAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE;KAChD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;CACjD,IAAG,SAAS,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;CAC9B,IAAG,CAAC,CAAC;AACL;CACA;CACA;CACA,GAAE,IAAI,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE;KAC1B,QAAQ,GAAG,WAAW;CACzB,KAAI,EAAE,CAAC,MAAM,EAAE,CAAC;CAChB,KAAI,CAAC;AACL;KACG,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;CACrD,IAAG,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC;KAC5B;IACD;AACF;CACA;CACA;CACA;GACC,YAAY,EAAE,WAAW;CAC1B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,SAAS,GAAG,EAAE,CAAC,UAAU,CAAC;IAC9B,IAAI,CAAC,SAAS,EAAE;CAClB,IAAG,OAAO;KACP;AACH;CACA,GAAE,OAAO,EAAE,CAAC,UAAU,CAAC;IACrB,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,IAAI,EAAE;KAClD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;CACpD,IAAG,CAAC,CAAC;IACH;AACF;GACC,gBAAgB,EAAE,SAAS,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;IACnD,IAAI,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;CAC1C,GAAE,IAAI,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC;AACvB;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACrD,IAAG,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;KACtB,IAAI,OAAO,EAAE;CAChB,KAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC;MACtF;KACD;AACH;CACA,GAAE,IAAI,IAAI,KAAK,SAAS,EAAE;KACvB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,GAAG,GAAG,MAAM,GAAG,mBAAmB,CAAC,EAAE,CAAC;KAChG;IACD;AACF;CACA;CACA;CACA;CACA,EAAC,YAAY,EAAE,SAAS,CAAC,EAAE;CAC3B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;AAC3B;CACA,GAAE,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE;CAC7D,IAAG,OAAO;KACP;AACH;CACA;CACA,GAAE,EAAE,CAAC,eAAe,GAAG,IAAI,CAAC;CAC5B,GAAE,EAAE,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B;IACE,IAAI,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CAClC;CACA;CACA;CACA;IACE,IAAI,OAAO,EAAE;CACf,IAAG,OAAO,GAAG,OAAO,CAAC,MAAM;CAC3B,OAAM,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;QACtB,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;KACpC;AACH;CACA,GAAE,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C;CACA,GAAE,IAAI,eAAe,GAAG,EAAE,CAAC,gBAAgB,CAAC;IAC1C,IAAI,eAAe,EAAE;CACvB;CACA,IAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;KAC3B,MAAM,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE;CACvC;CACA,IAAG,EAAE,CAAC,IAAI,EAAE,CAAC;AACb;CACA;CACA;KACG,EAAE,CAAC,MAAM,CAAC;MACT,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB;MAC5C,IAAI,EAAE,IAAI;CACd,KAAI,CAAC,CAAC;KACH;AACH;CACA,GAAE,EAAE,CAAC,eAAe,GAAG,KAAK,CAAC;CAC7B,GAAE,EAAE,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B;IACE,OAAO,EAAE,CAAC;IACV;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,WAAW,EAAE,SAAS,CAAC,EAAE;CAC1B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,OAAO,GAAG,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC;CACjC,GAAE,IAAI,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;CACnC,GAAE,IAAI,OAAO,GAAG,KAAK,CAAC;AACtB;IACE,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC;AACtC;CACA;CACA,GAAE,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE;CAC7B,IAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC;CAClB,IAAG,MAAM;CACT,IAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,yBAAyB,CAAC,CAAC,EAAE,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;KAC7E;AACH;CACA;CACA;IACE,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1F;CACA,GAAE,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;CAClD,IAAG,IAAI,OAAO,CAAC,OAAO,EAAE;CACxB;CACA,KAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;MAC9C;KACD;AACH;CACA;CACA,GAAE,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE;CAC5B,IAAG,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KAC7D;AACH;CACA;IACE,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,YAAY,CAAC,IAAI,EAAE;CAC7C,IAAG,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KACxD;AACH;CACA,GAAE,OAAO,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;AAC7D;CACA;CACA,GAAE,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,MAAM,CAAC;AAC5B;IACE,OAAO,OAAO,CAAC;IACf;CACF,EAAC,CAAC,CAAC;AACH;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;AACrB;EACA,IAAI,eAAe,GAAG,KAAK,CAAC;AAC5B;CACA;AACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;AACzB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;AACjB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC;AACpC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,SAAS,CAAC,UAAU,GAAG,gBAAgB,CAAC;AACxC;EACA,IAAI,YAAY,GAAG,WAAW;AAC9B;CACA;AACA;GACC,SAAS,CAAC,KAAK,GAAG,SAAS,UAAU,EAAE,cAAc,EAAE;CACxD,GAAE,IAAI,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE;CAC/D,IAAG,OAAO,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;KACzC;CACH,GAAE,IAAI,QAAQ,GAAG,EAAE,CAAC;AACpB;IACE,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,IAAI,EAAE;CAC5C,IAAG,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE;CAC7B,KAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;MACpB;CACJ,IAAG,CAAC,CAAC;AACL;IACE,OAAO,QAAQ,CAAC;CAClB,GAAE,CAAC;GACF,SAAS,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS;CAChD,GAAE,SAAS,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;KAChC,OAAO,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;KACxC;CACH,GAAE,SAAS,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;KAChC,KAAK,GAAG,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC;CAC/C,IAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACvD,KAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE;OAC7C,OAAO,CAAC,CAAC;OACT;MACD;KACD,OAAO,CAAC,CAAC,CAAC;CACb,IAAG,CAAC;GACH,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE;CAC/E;CACA,GAAE,IAAI,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;CAC3C,IAAG,UAAU,GAAG,CAAC,CAAC,CAAC;KAChB;CACH,GAAE,KAAK,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CAC9D,IAAG,IAAI,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;CACtC,IAAG,IAAI,cAAc,CAAC,WAAW,CAAC,EAAE;MAChC,OAAO,WAAW,CAAC;MACnB;KACD;CACH,GAAE,CAAC;GACF,SAAS,CAAC,iBAAiB,GAAG,SAAS,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE;CACnF;CACA,GAAE,IAAI,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;CAC3C,IAAG,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC;KAClC;CACH,GAAE,KAAK,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;CAC5C,IAAG,IAAI,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;CACtC,IAAG,IAAI,cAAc,CAAC,WAAW,CAAC,EAAE;MAChC,OAAO,WAAW,CAAC;MACnB;KACD;CACH,GAAE,CAAC;AACH;CACA;CACA,EAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,EAAE;CAClC,GAAE,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;CAC9C,GAAE,CAAC;GACF,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE;IAChD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;CACnC,GAAE,CAAC;GACF,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE;IAC5C,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CAC9B,GAAE,OAAO,CAAC,CAAC,OAAO,GAAG,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC;CAClE,GAAE,CAAC;CACH,EAAC,SAAS,CAAC,GAAG,GAAG,SAAS,KAAK,EAAE;IAC/B,OAAO,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE;CAC3C,IAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;MAClB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;MAC5B;KACD,OAAO,GAAG,CAAC;CACd,IAAG,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;CAC/B,GAAE,CAAC;CACH,EAAC,SAAS,CAAC,GAAG,GAAG,SAAS,KAAK,EAAE;IAC/B,OAAO,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE;CAC3C,IAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;MAClB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;MAC5B;KACD,OAAO,GAAG,CAAC;CACd,IAAG,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;CAC/B,GAAE,CAAC;CACH,EAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;IACzB,SAAS,CAAC,EAAE;CACd,IAAG,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACpB;IACD,SAAS,CAAC,EAAE;CACd,IAAG,CAAC,GAAG,CAAC,CAAC,CAAC;KACP,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;MACxB,OAAO,CAAC,CAAC;MACT;KACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;CACzB,IAAG,CAAC;CACJ,EAAC,SAAS,CAAC,SAAS,GAAG,SAAS,OAAO,EAAE;IACvC,OAAO,OAAO,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;CACnC,GAAE,CAAC;CACH,EAAC,SAAS,CAAC,SAAS,GAAG,SAAS,OAAO,EAAE;IACvC,OAAO,OAAO,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;CACnC,GAAE,CAAC;AACH;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,SAAS,CAAC,cAAc,GAAG,SAAS,CAAC,EAAE;IACtC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;CAC9B,IAAG,OAAO;KACP;CACH,GAAE,IAAI,CAAC,GAAG,CAAC,CAAC;CACZ,GAAE,IAAI,CAAC,GAAG,CAAC,CAAC;CACZ,GAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;KACnC,CAAC,IAAI,EAAE,CAAC;KACR,CAAC,EAAE,CAAC;KACJ;IACD,OAAO,CAAC,CAAC;CACX,GAAE,CAAC;AACH;CACA;GACC,SAAS,CAAC,iBAAiB,GAAG,SAAS,WAAW,EAAE,UAAU,EAAE;IAC/D,IAAI,mBAAmB,GAAG,UAAU,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IACvD,IAAI,mBAAmB,GAAG,UAAU,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;CACzD,GAAE,IAAI,wBAAwB,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,GAAG,mBAAmB,GAAG,mBAAmB,CAAC,CAAC;AAClI;IACE,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;AACnE;IACE,IAAI,KAAK,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE;CAChC,IAAG,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;KACvB;AACH;CACA,GAAE,OAAO;KACN,KAAK,EAAE,KAAK;KACZ,QAAQ,EAAE,wBAAwB;CACrC,IAAG,CAAC;CACJ,GAAE,CAAC;GACF,SAAS,CAAC,qBAAqB,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;CACtD,GAAE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CAC5E,GAAE,CAAC;AACH;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE;IAC3C,OAAO,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;CAC1C,GAAE,CAAC;AACH;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACC,SAAS,CAAC,WAAW,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;CACvD,GAAE,IAAI,gBAAgB,GAAG,KAAK,CAAC,uBAAuB,CAAC;CACvD,GAAE,IAAI,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;CAC5B,GAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,SAAS,IAAI,gBAAgB,CAAC,GAAG,gBAAgB,GAAG,SAAS,CAAC;CAC3F,GAAE,CAAC;AACH;CACA,EAAC,SAAS,CAAC,WAAW,GAAG,SAAS,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,EAAE;CAC1E;CACA;AACA;CACA;AACA;IACE,IAAI,QAAQ,GAAG,UAAU,CAAC,IAAI,GAAG,WAAW,GAAG,UAAU,CAAC;CAC5D,GAAE,IAAI,OAAO,GAAG,WAAW,CAAC;IAC1B,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,WAAW,GAAG,UAAU,CAAC;AACxD;CACA,GAAE,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CACjG,GAAE,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACzF;IACE,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;IAC5B,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;AAC9B;CACA;IACE,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAC3B,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAC7B;CACA,GAAE,IAAI,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;CACnB,GAAE,IAAI,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;AACnB;CACA,GAAE,OAAO;CACT,IAAG,QAAQ,EAAE;CACb,KAAI,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;CAC7C,KAAI,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;MACzC;CACJ,IAAG,IAAI,EAAE;CACT,KAAI,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;CAC7C,KAAI,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;MACzC;CACJ,IAAG,CAAC;CACJ,GAAE,CAAC;GACF,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC;CAC7C,EAAC,SAAS,CAAC,mBAAmB,GAAG,SAAS,MAAM,EAAE;CAClD;CACA;CACA;CACA;AACA;CACA,GAAE,IAAI,kBAAkB,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE,GAAG,CAAC,SAAS,KAAK,EAAE;CAC9D,IAAG,OAAO;CACV,KAAI,KAAK,EAAE,KAAK,CAAC,MAAM;MACnB,MAAM,EAAE,CAAC;MACT,EAAE,EAAE,CAAC;CACT,KAAI,CAAC;CACL,IAAG,CAAC,CAAC;AACL;CACA;CACA,GAAE,IAAI,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC;IAC1C,IAAI,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,CAAC;IAC7C,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,EAAE;CAClC,IAAG,YAAY,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;CACxC,IAAG,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE;CAChC,KAAI,SAAS;MACT;AACJ;CACA,IAAG,WAAW,GAAG,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;CAC1D,IAAG,UAAU,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;KAClE,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE;CAC7C,KAAI,IAAI,WAAW,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClE;CACA;MACI,YAAY,CAAC,MAAM,GAAG,WAAW,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,WAAW,GAAG,CAAC,CAAC;MACxG;AACJ;KACG,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE;CAC/C,KAAI,YAAY,CAAC,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC;MACtC,MAAM,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE;CACpD,KAAI,YAAY,CAAC,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC;CACzC,KAAI,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;CAChF,KAAI,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC;CACxB,KAAI,MAAM;CACV,KAAI,YAAY,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC;MACjE;KACD;AACH;CACA;IACE,IAAI,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,CAAC;CAC5C,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;CACtC,IAAG,YAAY,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;KACrC,UAAU,GAAG,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CAC1C,IAAG,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE;CACzD,KAAI,SAAS;MACT;AACJ;CACA,IAAG,IAAI,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;MACjE,YAAY,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC;CACxC,KAAI,SAAS;MACT;AACJ;KACG,MAAM,GAAG,YAAY,CAAC,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC;KAC/C,KAAK,GAAG,UAAU,CAAC,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC;CAC/C,IAAG,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;CAC/D,IAAG,IAAI,gBAAgB,IAAI,CAAC,EAAE;CAC9B,KAAI,SAAS;MACT;AACJ;KACG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;KACvC,YAAY,CAAC,EAAE,GAAG,MAAM,GAAG,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC;KACtD,UAAU,CAAC,EAAE,GAAG,KAAK,GAAG,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC;KACnD;AACH;CACA;IACE,IAAI,MAAM,CAAC;IACX,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,EAAE;CAClC,IAAG,YAAY,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;CACxC,IAAG,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE;CAChC,KAAI,SAAS;MACT;AACJ;CACA,IAAG,WAAW,GAAG,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;CAC1D,IAAG,UAAU,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;KAClE,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE;CAC/C,KAAI,MAAM,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;CAC9D,KAAI,YAAY,CAAC,KAAK,CAAC,qBAAqB,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC;CAC7E,KAAI,YAAY,CAAC,KAAK,CAAC,qBAAqB,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,GAAG,YAAY,CAAC,EAAE,CAAC;MAC3F;KACD,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE;CAC7C,KAAI,MAAM,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;CAC7D,KAAI,YAAY,CAAC,KAAK,CAAC,iBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC;CACzE,KAAI,YAAY,CAAC,KAAK,CAAC,iBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,GAAG,YAAY,CAAC,EAAE,CAAC;MACvF;KACD;CACH,GAAE,CAAC;GACF,SAAS,CAAC,QAAQ,GAAG,SAAS,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE;IACtD,IAAI,IAAI,EAAE;KACT,OAAO,KAAK,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;KAC9E;IACD,OAAO,KAAK,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;CACpG,GAAE,CAAC;GACF,SAAS,CAAC,YAAY,GAAG,SAAS,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE;IAC1D,IAAI,IAAI,EAAE;KACT,OAAO,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;KAC9E;CACH,GAAE,OAAO,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;CAC5D,GAAE,CAAC;CACH;GACC,SAAS,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE;CAC5C,GAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;CACpD,GAAE,IAAI,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC9C,IAAI,YAAY,CAAC;AACnB;IACE,IAAI,KAAK,EAAE;CACb,IAAG,IAAI,QAAQ,GAAG,GAAG,EAAE;MACnB,YAAY,GAAG,CAAC,CAAC;CACrB,KAAI,MAAM,IAAI,QAAQ,GAAG,CAAC,EAAE;MACxB,YAAY,GAAG,CAAC,CAAC;CACrB,KAAI,MAAM,IAAI,QAAQ,GAAG,CAAC,EAAE;MACxB,YAAY,GAAG,CAAC,CAAC;CACrB,KAAI,MAAM;MACN,YAAY,GAAG,EAAE,CAAC;MAClB;CACJ,IAAG,MAAM,IAAI,QAAQ,IAAI,GAAG,EAAE;KAC3B,YAAY,GAAG,CAAC,CAAC;CACpB,IAAG,MAAM,IAAI,QAAQ,IAAI,CAAC,EAAE;KACzB,YAAY,GAAG,CAAC,CAAC;CACpB,IAAG,MAAM,IAAI,QAAQ,IAAI,CAAC,EAAE;KACzB,YAAY,GAAG,CAAC,CAAC;CACpB,IAAG,MAAM;KACN,YAAY,GAAG,EAAE,CAAC;KAClB;AACH;IACE,OAAO,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;CAC/C,GAAE,CAAC;CACH;CACA,EAAC,SAAS,CAAC,gBAAgB,IAAI,WAAW;CAC1C,GAAE,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;KAClC,OAAO,SAAS,QAAQ,EAAE;MACzB,QAAQ,EAAE,CAAC;CACf,KAAI,CAAC;KACF;IACD,OAAO,MAAM,CAAC,qBAAqB;KAClC,MAAM,CAAC,2BAA2B;KAClC,MAAM,CAAC,wBAAwB;KAC/B,MAAM,CAAC,sBAAsB;KAC7B,MAAM,CAAC,uBAAuB;KAC9B,SAAS,QAAQ,EAAE;MAClB,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;CAClD,KAAI,CAAC;IACH,EAAE,CAAC,CAAC;CACN;GACC,SAAS,CAAC,mBAAmB,GAAG,SAAS,GAAG,EAAE,KAAK,EAAE;CACtD,GAAE,IAAI,MAAM,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC;IACjC,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC;CAC5C,GAAE,IAAI,YAAY,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;AACpD;CACA,GAAE,IAAI,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;IACxB,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;KAClC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;KAC5B,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAC/B;CACA,IAAG,MAAM;CACT,IAAG,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC;CACtB,IAAG,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC;KACnB;AACH;CACA;CACA;CACA;CACA,GAAE,IAAI,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;CAC3E,GAAE,IAAI,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;CACzE,GAAE,IAAI,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;CAC7E,GAAE,IAAI,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;CAC/E,GAAE,IAAI,KAAK,GAAG,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,GAAG,WAAW,GAAG,YAAY,CAAC;CAClF,GAAE,IAAI,MAAM,GAAG,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,GAAG,UAAU,GAAG,aAAa,CAAC;AACnF;CACA;CACA;IACE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,GAAG,WAAW,KAAK,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACzH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,GAAG,UAAU,KAAK,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,uBAAuB,CAAC,CAAC;AAC3H;CACA,GAAE,OAAO;KACN,CAAC,EAAE,MAAM;KACT,CAAC,EAAE,MAAM;CACZ,IAAG,CAAC;AACJ;CACA,GAAE,CAAC;AACH;CACA;GACC,SAAS,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE;IACxD,IAAI,aAAa,CAAC;CACpB,GAAE,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;KACnC,aAAa,GAAG,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC5C;KACG,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;CACvC;CACA,KAAI,aAAa,GAAG,aAAa,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;MACtE;CACJ,IAAG,MAAM;KACN,aAAa,GAAG,UAAU,CAAC;KAC3B;AACH;IACE,OAAO,aAAa,CAAC;IACrB;AACF;CACA;CACA;CACA;CACA;CACA,EAAC,SAAS,kBAAkB,CAAC,KAAK,EAAE;CACpC,GAAE,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,CAAC;IACjE;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACC,SAAS,sBAAsB,CAAC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE;CACxE,GAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC;IAChC,IAAI,UAAU,GAAG,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;CACrD,GAAE,IAAI,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;CACjE,GAAE,IAAI,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC;CACzE,GAAE,IAAI,QAAQ,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC;CACrD,GAAE,IAAI,aAAa,GAAG,kBAAkB,CAAC,oBAAoB,CAAC,CAAC;CAC/D,GAAE,IAAI,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC1C;CACA,GAAE,IAAI,QAAQ,IAAI,aAAa,EAAE;KAC9B,OAAO,IAAI,CAAC,GAAG;MACd,QAAQ,GAAG,aAAa,CAAC,eAAe,EAAE,OAAO,EAAE,kBAAkB,CAAC,GAAG,QAAQ;CACrF,KAAI,aAAa,GAAG,aAAa,CAAC,oBAAoB,EAAE,UAAU,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,CAAC;KACjG;AACH;IACE,OAAO,MAAM,CAAC;IACd;CACF;CACA,EAAC,SAAS,CAAC,kBAAkB,GAAG,SAAS,OAAO,EAAE;IAChD,OAAO,sBAAsB,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;CACrE,GAAE,CAAC;CACH;CACA,EAAC,SAAS,CAAC,mBAAmB,GAAG,SAAS,OAAO,EAAE;IACjD,OAAO,sBAAsB,CAAC,OAAO,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;CACvE,GAAE,CAAC;CACH;CACA;CACA;GACC,SAAS,CAAC,iBAAiB,GAAG,SAAS,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE;IAC3E,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACnD;CACA,GAAE,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,eAAe,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;CAC3G,GAAE,CAAC;CACH;CACA;CACA;CACA,EAAC,SAAS,CAAC,cAAc,GAAG,SAAS,OAAO,EAAE;CAC9C,GAAE,IAAI,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAChC,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,KAAK,qBAAqB,EAAE;CAC7D,IAAG,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;KACrB;IACD,OAAO,MAAM,CAAC;CAChB,GAAE,CAAC;CACH,EAAC,SAAS,CAAC,eAAe,GAAG,SAAS,OAAO,EAAE;IAC7C,IAAI,SAAS,GAAG,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,CAAC,SAAS,EAAE;CAClB,IAAG,OAAO,OAAO,CAAC,WAAW,CAAC;KAC3B;AACH;CACA,GAAE,IAAI,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;CAC1C,GAAE,IAAI,WAAW,GAAG,SAAS,CAAC,iBAAiB,CAAC,SAAS,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;CACxF,GAAE,IAAI,YAAY,GAAG,SAAS,CAAC,iBAAiB,CAAC,SAAS,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;AAC1F;IACE,IAAI,CAAC,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,CAAC;IACjD,IAAI,EAAE,GAAG,SAAS,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;CACjD,GAAE,OAAO,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CACzC,GAAE,CAAC;CACH,EAAC,SAAS,CAAC,gBAAgB,GAAG,SAAS,OAAO,EAAE;IAC9C,IAAI,SAAS,GAAG,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,CAAC,SAAS,EAAE;CAClB,IAAG,OAAO,OAAO,CAAC,YAAY,CAAC;KAC5B;AACH;CACA,GAAE,IAAI,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;CAC5C,GAAE,IAAI,UAAU,GAAG,SAAS,CAAC,iBAAiB,CAAC,SAAS,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;CACvF,GAAE,IAAI,aAAa,GAAG,SAAS,CAAC,iBAAiB,CAAC,SAAS,EAAE,gBAAgB,EAAE,YAAY,CAAC,CAAC;AAC7F;IACE,IAAI,CAAC,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,CAAC;IAClD,IAAI,EAAE,GAAG,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;CAClD,GAAE,OAAO,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CACzC,GAAE,CAAC;GACF,SAAS,CAAC,QAAQ,GAAG,SAAS,EAAE,EAAE,QAAQ,EAAE;IAC3C,OAAO,EAAE,CAAC,YAAY;CACxB,IAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC;CAC5B,IAAG,QAAQ,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;CAC9E,GAAE,CAAC;GACF,SAAS,CAAC,WAAW,GAAG,SAAS,KAAK,EAAE,UAAU,EAAE;IACnD,IAAI,UAAU,GAAG,KAAK,CAAC,uBAAuB,GAAG,UAAU,KAAK,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;CACjI,GAAE,IAAI,UAAU,KAAK,CAAC,EAAE;CACxB,IAAG,OAAO;KACP;AACH;CACA,GAAE,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;CAC5B,GAAE,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;CAC5B,GAAE,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAC1B;CACA,GAAE,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;CACtC,GAAE,MAAM,CAAC,KAAK,GAAG,KAAK,GAAG,UAAU,CAAC;IAClC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAC1C;CACA;CACA;CACA;CACA,GAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE;KAChD,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;KACpC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;KAClC;CACH,GAAE,CAAC;CACH;GACC,SAAS,CAAC,UAAU,GAAG,SAAS,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE;IACjE,OAAO,SAAS,GAAG,GAAG,GAAG,SAAS,GAAG,KAAK,GAAG,UAAU,CAAC;CAC1D,GAAE,CAAC;CACH,EAAC,SAAS,CAAC,WAAW,GAAG,SAAS,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;CACnE,GAAE,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;CACtB,GAAE,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;CAC3C,GAAE,IAAI,EAAE,GAAG,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC;AAC7D;CACA,GAAE,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;CAC3B,IAAG,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC;CAC1B,IAAG,EAAE,GAAG,KAAK,CAAC,cAAc,GAAG,EAAE,CAAC;CAClC,IAAG,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;KAClB;AACH;CACA,GAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;CAClB,GAAE,IAAI,OAAO,GAAG,CAAC,CAAC;CAClB,GAAE,IAAI,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC;IAChC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC;IACnC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;CAC7B,IAAG,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;AAC5B;CACA;CACA,IAAG,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;CACnF,KAAI,OAAO,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;MAC/D,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;CACxC;CACA;CACA,KAAI,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;CACpD,MAAK,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CAC5B;CACA,MAAK,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;CAC/F,OAAM,OAAO,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QACrE;OACD;MACD;KACD;AACH;IACE,IAAI,KAAK,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;CAC5B,GAAE,IAAI,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE;KACjC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;MAC3B,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;MACnB;KACD,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;KACpB;IACD,OAAO,OAAO,CAAC;CACjB,GAAE,CAAC;CACH,EAAC,SAAS,CAAC,WAAW,GAAG,SAAS,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;CAClE,GAAE,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7B,IAAI,CAAC,SAAS,EAAE;CAClB,IAAG,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;CAC5D,IAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAChB;CACH,GAAE,IAAI,SAAS,GAAG,OAAO,EAAE;KACxB,OAAO,GAAG,SAAS,CAAC;KACpB;IACD,OAAO,OAAO,CAAC;CACjB,GAAE,CAAC;AACH;CACA;CACA;CACA;CACA,EAAC,SAAS,CAAC,kBAAkB,GAAG,SAAS,aAAa,EAAE;CACxD,GAAE,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,KAAK,EAAE;CAChD,IAAG,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;CACjC,KAAI,IAAI,KAAK,CAAC,MAAM,GAAG,aAAa,EAAE;CACtC,MAAK,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC;OAC7B;MACD;CACJ,IAAG,CAAC,CAAC;IACH,OAAO,aAAa,CAAC;CACvB,GAAE,CAAC;AACH;CACA,EAAC,SAAS,CAAC,KAAK,GAAG,CAAC,YAAY;IAC9B,SAAS,KAAK,EAAE;CAClB,IAAG,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;KACrC,OAAO,KAAK,CAAC;KACb;IACD,SAAS,KAAK,EAAE;CAClB;CACA,IAAG,IAAI,KAAK,YAAY,cAAc,EAAE;CACxC,KAAI,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC;MAC1C;AACJ;CACA,IAAG,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;CAC9B,IAAG,CAAC;AACJ;CACA,EAAC,SAAS,CAAC,aAAa,GAAG,SAAS,UAAU,EAAE;CAChD;IACE,OAAO,CAAC,UAAU,YAAY,aAAa,IAAI,UAAU,YAAY,cAAc;CACrF,IAAG,UAAU;CACb,IAAG,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;CACrE,GAAE,CAAC;CACH,EAAC,CAAC;AACF;CACA,CAAA,SAAS,QAAQ,GAAG;GACnB,MAAM,IAAI,KAAK;CAChB,GAAE,wDAAwD;CAC1D,GAAE,qDAAqD;CACvD,GAAE,CAAC;GACF;AACD;CACA;CACA;CACA;CACA;CACA;CACA;AACA;CACA;CACA;CACA;CACA;CACA;CACA;AACA;CACA;CACA;CACA;EACA,SAAS,WAAW,CAAC,OAAO,EAAE;CAC9B,EAAC,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;GAC7B;AACD;CACA,CAAA,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,4BAA4B;CAClE;CACA;CACA;CACA;CACA;GACC,OAAO,EAAE,QAAQ;AAClB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACC,KAAK,EAAE,QAAQ;AAChB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACC,MAAM,EAAE,QAAQ;AACjB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACC,GAAG,EAAE,QAAQ;AACd;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACC,IAAI,EAAE,QAAQ;AACf;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACC,OAAO,EAAE,QAAQ;AAClB;CACA;CACA;CACA;CACA;CACA;CACA;GACC,KAAK,EAAE,QAAQ;AAChB;CACA;AACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,OAAO,EAAE,SAAS,KAAK,EAAE;IACxB,OAAO,KAAK,CAAC;IACb;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,WAAW,CAAC,QAAQ,GAAG,SAAS,OAAO,EAAE;GACxC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;CAClD,EAAC,CAAC;AACF;EACA,IAAI,KAAK,GAAG,WAAW,CAAC;AACxB;CACA,CAAA,IAAI,aAAa,GAAG;GACnB,KAAK,EAAE,KAAK;CACb,EAAC,CAAC;AACF;CACA;CACA;CACA;CACA;CACA,CAAA,IAAI,UAAU,GAAG;CACjB;CACA;CACA;CACA;CACA,EAAC,UAAU,EAAE;CACb;CACA;CACA;CACA;CACA;CACA;CACA,GAAE,MAAM,EAAE,SAAS,KAAK,EAAE;CAC1B,IAAG,OAAO,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,GAAG,KAAK,CAAC;KACrD;AACH;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;IACE,MAAM,EAAE,SAAS,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE;CAC5C;CACA,IAAG,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5E;CACA;KACG,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;MACxB,IAAI,SAAS,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;CAC7C;OACK,KAAK,GAAG,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;OAC1C;MACD;AACJ;CACA,IAAG,IAAI,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;CACnD,IAAG,IAAI,UAAU,GAAG,EAAE,CAAC;AACvB;CACA,IAAG,IAAI,SAAS,KAAK,CAAC,EAAE;CACxB,KAAI,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;CAClF,KAAI,IAAI,OAAO,GAAG,IAAI,EAAE;CACxB,MAAK,IAAI,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;CACxD,MAAK,IAAI,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;CACrE,MAAK,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;OAC3D,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;CAC1D,MAAK,MAAM;CACX,MAAK,IAAI,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;CAChD,MAAK,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;OACnD,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;OAC3C;CACL,KAAI,MAAM;MACN,UAAU,GAAG,GAAG,CAAC;MACjB;AACJ;KACG,OAAO,UAAU,CAAC;KAClB;AACH;IACE,WAAW,EAAE,SAAS,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE;KAC9C,IAAI,MAAM,GAAG,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACnF;CACA,IAAG,IAAI,SAAS,KAAK,CAAC,EAAE;MACpB,OAAO,GAAG,CAAC;MACX,MAAM,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;CACzG,KAAI,OAAO,SAAS,CAAC,aAAa,EAAE,CAAC;MACjC;KACD,OAAO,EAAE,CAAC;KACV;IACD;CACF,EAAC,CAAC;AACF;CACA,CAAA,IAAI,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;CAChC,CAAA,IAAI,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;CAC5C,CAAA,IAAI,gBAAgB,GAAG,SAAS,CAAC,cAAc,CAAC;CAChD,CAAA,IAAI,qBAAqB,GAAG,SAAS,CAAC,qBAAqB,CAAC;AAC5D;CACA,CAAA,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE;GAC3B,OAAO,EAAE,IAAI;GACb,QAAQ,EAAE,MAAM;GAChB,MAAM,EAAE,KAAK;AACd;CACA;CACA,EAAC,SAAS,EAAE;IACV,OAAO,EAAE,IAAI;IACb,KAAK,EAAE,iBAAiB;IACxB,SAAS,EAAE,CAAC;IACZ,UAAU,EAAE,IAAI;IAChB,eAAe,EAAE,IAAI;IACrB,SAAS,EAAE,IAAI;IACf,cAAc,EAAE,EAAE;IAClB,aAAa,EAAE,CAAC;IAChB,aAAa,EAAE,kBAAkB;IACjC,kBAAkB,EAAE,EAAE;IACtB,wBAAwB,EAAE,GAAG;IAC7B,eAAe,EAAE,KAAK;IACtB,UAAU,EAAE,EAAE;IACd,gBAAgB,EAAE,GAAG;IACrB;AACF;CACA;CACA,EAAC,UAAU,EAAE;CACb;IACE,OAAO,EAAE,KAAK;AAChB;CACA;IACE,WAAW,EAAE,EAAE;AACjB;CACA;CACA,GAAE,OAAO,EAAE;KACR,GAAG,EAAE,CAAC;KACN,MAAM,EAAE,CAAC;KACT;IACD;AACF;CACA;CACA,EAAC,KAAK,EAAE;IACN,WAAW,EAAE,KAAK;IAClB,WAAW,EAAE,CAAC;IACd,WAAW,EAAE,EAAE;IACf,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI;IACd,eAAe,EAAE,CAAC;IAClB,WAAW,EAAE,CAAC;CAChB;CACA,GAAE,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,MAAM;IACtC,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;IACT;CACF,EAAC,CAAC,CAAC;AACH;CACA;CACA,CAAA,SAAS,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE;CAC/B,EAAC,IAAI,MAAM,GAAG,EAAE,CAAC;GAChB,IAAI,SAAS,GAAG,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC;CACvC,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACX,EAAC,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;AACtB;GACC,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,SAAS,EAAE;CACjC,GAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC;GACD,OAAO,MAAM,CAAC;GACd;AACD;CACA,CAAA,SAAS,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE;GAC3D,IAAI,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;CACtC,EAAC,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;GAC7C,IAAI,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;CACnD,EAAC,IAAI,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC;CAC/B,EAAC,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC;CAC3B,EAAC,IAAI,OAAO,GAAG,IAAI,CAAC;GACnB,IAAI,MAAM,CAAC;AACZ;GACC,IAAI,eAAe,EAAE;CACtB,GAAE,IAAI,MAAM,KAAK,CAAC,EAAE;CACpB,IAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,KAAK,EAAE,GAAG,GAAG,SAAS,CAAC,CAAC;CACzD,IAAG,MAAM,IAAI,KAAK,KAAK,CAAC,EAAE;CAC1B,IAAG,MAAM,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC;CACvD,IAAG,MAAM;CACT,IAAG,MAAM,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;KACjE;IACD,SAAS,IAAI,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC;AACrD;CACA;CACA,GAAE,IAAI,SAAS,GAAG,KAAK,GAAG,OAAO,IAAI,SAAS,GAAG,GAAG,GAAG,OAAO,EAAE;CAChE,IAAG,OAAO;KACP;IACD;GACD,OAAO,SAAS,CAAC;GACjB;AACD;CACA,CAAA,SAAS,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE;GACvC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE;CACxC,GAAE,IAAI,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IAClB,IAAI,KAAK,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,CAAC;CACR,GAAE,IAAI,KAAK,GAAG,MAAM,EAAE;KACnB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,EAAE;MAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;MACzB;KACD,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;KACpB;CACH,GAAE,CAAC,CAAC;GACH;AACD;CACA;CACA;CACA;CACA;EACA,SAAS,iBAAiB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;CAC1D,EAAC,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;CAC3B,EAAC,IAAI,MAAM,GAAG,EAAE,CAAC;CACjB,EAAC,IAAI,OAAO,GAAG,EAAE,CAAC;CAClB,EAAC,IAAI,OAAO,GAAG,EAAE,CAAC;CAClB,EAAC,IAAI,eAAe,GAAG,CAAC,CAAC;CACzB,EAAC,IAAI,gBAAgB,GAAG,CAAC,CAAC;GACzB,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC;AAC7G;GACC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;IAC5B,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;CACzB,GAAE,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;IAC9D,GAAG,CAAC,IAAI,GAAG,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;IACxC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CACxE,GAAE,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;CACnC,GAAE,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;CACrB;CACA,GAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;KAC7C,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;KACvE,MAAM,GAAG,UAAU,CAAC;CACvB,IAAG,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;CAC7B;CACA,IAAG,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACnD,KAAI,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CAC3B;CACA,KAAI,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;OACzD,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;OAC7E,MAAM,IAAI,UAAU,CAAC;OACrB;MACD;KACD;CACH,GAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CACrB,GAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAC7B,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IACnD,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACtD;CACF,EAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAChC;GACC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;GACzC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC7C;CACA,EAAC,SAAS,OAAO,CAAC,GAAG,EAAE;CACvB,GAAE,OAAO;CACT,IAAG,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;CAC1B,IAAG,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;CAC5B,IAAG,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;CAC5B,IAAG,CAAC;IACF;AACF;CACA,EAAC,OAAO;CACR,GAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;CACnB,GAAE,IAAI,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;CAC3B,GAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;CACzB,GAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;CAC3B,GAAE,CAAC;GACF;AACD;EACA,SAAS,iBAAiB,CAAC,OAAO,EAAE;GACnC,OAAO,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC;GACtD;AACD;EACA,SAAS,mBAAmB,CAAC,OAAO,EAAE;CACtC,EAAC,IAAI,IAAI,EAAE,OAAO,CAAC;AACnB;CACA,EAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;IACrB,OAAO,CAAC,CAAC;IACT;AACF;GACC,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;CAC9C,EAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACxD;GACC,OAAO,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;GACxC;AACD;CACA,CAAA,SAAS,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE;GAC9C,OAAO,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC;IACpD,UAAU,EAAE,gBAAgB,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC;IACvE,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC;IACjE,SAAS,EAAE,gBAAgB,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC;IACpE,UAAU,EAAE,gBAAgB,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC;CACzE,GAAE,CAAC,EAAE;IACH,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;CACpH,GAAE,CAAC,CAAC;GACH;AACD;EACA,SAAS,oBAAoB,CAAC,OAAO,EAAE;GACtC,IAAI,KAAK,GAAG,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;CACtD,EAAC,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AACtF;GACC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;GACpC;AACD;EACA,SAAS,UAAU,CAAC,aAAa,EAAE;CACnC,EAAC,IAAI,QAAQ,GAAG,EAAE,CAAC;CACnB,EAAC,IAAI,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;CACtB,EAAC,KAAK,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,GAAG,EAAE,EAAE,KAAK,EAAE;CACnE,GAAE,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;CAC9B,GAAE,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE;CAC1C,IAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACpB;IACD;GACD,OAAO,QAAQ,CAAC;GAChB;AACD;EACA,SAAS,cAAc,CAAC,GAAG,EAAE;CAC7B,EAAC,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;CACtB,EAAC,IAAI,CAAC,EAAE,IAAI,CAAC;AACb;CACA,EAAC,IAAI,GAAG,GAAG,CAAC,EAAE;IACZ,OAAO,KAAK,CAAC;IACb;AACF;CACA,EAAC,KAAK,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;CAC1C,GAAE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;KACjC,OAAO,KAAK,CAAC;KACb;IACD;GACD,OAAO,IAAI,CAAC;GACZ;AACD;EACA,SAAS,gBAAgB,CAAC,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE;CACvE,EAAC,IAAI,gBAAgB,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;GACpD,IAAI,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC;GAC9C,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC;AAC9B;CACA;CACA;GACC,IAAI,CAAC,gBAAgB,EAAE;IACtB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC5B;AACF;GACC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;CACvD,EAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;CACvD,GAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACtB,GAAE,IAAI,MAAM,GAAG,OAAO,EAAE;KACrB,OAAO,MAAM,CAAC;KACd;IACD;GACD,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;GAC5B;AACD;EACA,SAAS,eAAe,CAAC,KAAK,EAAE;CAChC,EAAC,IAAI,MAAM,GAAG,EAAE,CAAC;CACjB,EAAC,IAAI,CAAC,EAAE,IAAI,CAAC;CACb,EAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;CACjD,GAAE,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;CACtB,IAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACf;IACD;GACD,OAAO,MAAM,CAAC;GACd;AACD;CACA,CAAA,SAAS,UAAU,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE;CAClD,EAAC,IAAI,KAAK,GAAG,CAAC,CAAC;CACf,EAAC,IAAI,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;CAC5B,EAAC,IAAI,CAAC,EAAE,IAAI,CAAC;AACb;GACC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;CAC9B,EAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CACpC,GAAE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CAClB,GAAE,IAAI,CAAC,KAAK,IAAI,EAAE;CAClB,IAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;KAChB,KAAK,EAAE,CAAC;KACR,IAAI,GAAG,YAAY,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC;CACxC,IAAG,MAAM;CACT,IAAG,OAAO,IAAI,CAAC,KAAK,CAAC;KAClB;IACD;GACD;AACD;EACA,SAAS,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE;GACnD,IAAI,KAAK,GAAG,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;GAC5C,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC5E,EAAC,IAAI,KAAK,GAAG,CAAC,CAAC;GACd,IAAI,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;AAC3B;GACC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;GAC7B,IAAI,QAAQ,EAAE;CACf,GAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;CACjC,GAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;IAChD;AACF;GACC,IAAI,GAAG,KAAK,CAAC;AACd;CACA,EAAC,OAAO,IAAI,GAAG,CAAC,EAAE;IAChB,KAAK,EAAE,CAAC;CACV,GAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC,CAAC;IAC3C;AACF;CACA,EAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;CAC5C,GAAE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CAClB,GAAE,IAAI,CAAC,KAAK,IAAI,EAAE;CAClB,IAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;KAChB,KAAK,EAAE,CAAC;CACX,IAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC,CAAC;CAC9C,IAAG,MAAM;CACT,IAAG,OAAO,IAAI,CAAC,KAAK,CAAC;KAClB;IACD;GACD;AACD;CACA,CAAA,IAAI,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC;AAChC;GACC,aAAa,EAAE,CAAC;AACjB;CACA;CACA;CACA;CACA;CACA;CACA;GACC,UAAU,EAAE,WAAW;CACxB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,OAAO;CACT,IAAG,IAAI,EAAE,EAAE,CAAC,WAAW,IAAI,CAAC;CAC5B,IAAG,GAAG,EAAE,EAAE,CAAC,UAAU,IAAI,CAAC;CAC1B,IAAG,KAAK,EAAE,EAAE,CAAC,YAAY,IAAI,CAAC;CAC9B,IAAG,MAAM,EAAE,EAAE,CAAC,aAAa,IAAI,CAAC;CAChC,IAAG,CAAC;IACF;AACF;CACA;CACA;CACA;CACA;GACC,QAAQ,EAAE,WAAW;CACtB,GAAE,OAAO,IAAI,CAAC,MAAM,CAAC;IACnB;AACF;CACA;CACA;CACA;GACC,UAAU,EAAE,WAAW;IACtB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;IACvG;AACF;CACA;CACA;CACA;AACA;CACA;CACA;CACA;CACA;CACA;CACA;GACC,iBAAiB,EAAE,WAAW;CAC/B;IACE;AACF;GACC,YAAY,EAAE,WAAW;CAC1B,GAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACC,MAAM,EAAE,SAAS,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE;CAChD,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAClC,GAAE,IAAI,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;IACrC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,CAAC;AAC9C;CACA;CACA,GAAE,EAAE,CAAC,YAAY,EAAE,CAAC;AACpB;CACA;CACA,GAAE,EAAE,CAAC,QAAQ,GAAG,QAAQ,CAAC;CACzB,GAAE,EAAE,CAAC,SAAS,GAAG,SAAS,CAAC;CAC3B,GAAE,EAAE,CAAC,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC;KAC7B,IAAI,EAAE,CAAC;KACP,KAAK,EAAE,CAAC;KACR,GAAG,EAAE,CAAC;KACN,MAAM,EAAE,CAAC;KACT,EAAE,OAAO,CAAC,CAAC;AACd;CACA,GAAE,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC;CACnB,GAAE,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC;CAClB,GAAE,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC;CACxB,GAAE,EAAE,CAAC,cAAc,GAAG,CAAC,CAAC;CACxB,GAAE,EAAE,CAAC,iBAAiB,GAAG,CAAC,CAAC;IACzB,EAAE,CAAC,gBAAgB,GAAG,EAAE,CAAC,gBAAgB,IAAI,EAAE,CAAC;CAClD,GAAE,EAAE,CAAC,cAAc,GAAG,IAAI,CAAC;CAC3B,GAAE,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB;CACA;CACA,GAAE,EAAE,CAAC,mBAAmB,EAAE,CAAC;CAC3B,GAAE,EAAE,CAAC,aAAa,EAAE,CAAC;CACrB,GAAE,EAAE,CAAC,kBAAkB,EAAE,CAAC;AAC1B;CACA;CACA,GAAE,EAAE,CAAC,gBAAgB,EAAE,CAAC;CACxB,GAAE,EAAE,CAAC,mBAAmB,EAAE,CAAC;CAC3B,GAAE,EAAE,CAAC,eAAe,EAAE,CAAC;AACvB;CACA;CACA;CACA;CACA;CACA;CACA;AACA;CACA,GAAE,EAAE,CAAC,gBAAgB,EAAE,CAAC;AACxB;CACA;CACA;IACE,KAAK,GAAG,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;AAChC;CACA;IACE,KAAK,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;AAC7C;CACA;CACA,GAAE,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,EAAE,CAAC,KAAK,EAAE;KAC1C,KAAK,GAAG,EAAE,CAAC;CACd,IAAG,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;MAClD,KAAK,CAAC,IAAI,CAAC;CACf,MAAK,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;OAClB,KAAK,EAAE,KAAK;CACjB,MAAK,CAAC,CAAC;MACH;KACD;AACH;CACA,GAAE,EAAE,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB;CACA;CACA;CACA,GAAE,eAAe,GAAG,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;CAC9C,GAAE,MAAM,GAAG,EAAE,CAAC,qBAAqB,CAAC,eAAe,GAAG,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,CAAC;AACzF;CACA;CACA;CACA;CACA;CACA,GAAE,EAAE,CAAC,UAAU,EAAE,CAAC;AAClB;CACA;CACA,GAAE,EAAE,CAAC,2BAA2B,EAAE,CAAC;CACnC,GAAE,EAAE,CAAC,qBAAqB,EAAE,CAAC;CAC7B,GAAE,EAAE,CAAC,0BAA0B,EAAE,CAAC;AAClC;CACA,GAAE,EAAE,CAAC,SAAS,EAAE,CAAC;CACjB,GAAE,EAAE,CAAC,GAAG,EAAE,CAAC;CACX,GAAE,EAAE,CAAC,QAAQ,EAAE,CAAC;AAChB;CACA;IACE,EAAE,CAAC,YAAY,GAAG,QAAQ,CAAC,OAAO,KAAK,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AACxH;IACE,IAAI,eAAe,EAAE;CACvB;KACG,MAAM,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;KACnD;AACH;CACA,GAAE,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC;AACpB;CACA;AACA;CACA,GAAE,EAAE,CAAC,WAAW,EAAE,CAAC;AACnB;CACA;CACA;CACA,GAAE,OAAO,EAAE,CAAC,OAAO,CAAC;IAClB;AACF;CACA;CACA;CACA;GACC,UAAU,EAAE,WAAW;CACxB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,aAAa,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;CAC/C,GAAE,IAAI,UAAU,EAAE,QAAQ,CAAC;AAC3B;CACA,GAAE,IAAI,EAAE,CAAC,YAAY,EAAE,EAAE;CACzB,IAAG,UAAU,GAAG,EAAE,CAAC,IAAI,CAAC;CACxB,IAAG,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC;CACvB,IAAG,MAAM;CACT,IAAG,UAAU,GAAG,EAAE,CAAC,GAAG,CAAC;CACvB,IAAG,QAAQ,GAAG,EAAE,CAAC,MAAM,CAAC;CACxB;CACA,IAAG,aAAa,GAAG,CAAC,aAAa,CAAC;KAC/B;CACH,GAAE,EAAE,CAAC,WAAW,GAAG,UAAU,CAAC;CAC9B,GAAE,EAAE,CAAC,SAAS,GAAG,QAAQ,CAAC;CAC1B,GAAE,EAAE,CAAC,cAAc,GAAG,aAAa,CAAC;CACpC,GAAE,EAAE,CAAC,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;IACnC;AACF;GACC,WAAW,EAAE,WAAW;CACzB,GAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD;AACF;CACA;AACA;GACC,mBAAmB,EAAE,WAAW;CACjC,GAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D;GACD,aAAa,EAAE,WAAW;CAC3B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB;CACA,GAAE,IAAI,EAAE,CAAC,YAAY,EAAE,EAAE;CACzB;CACA,IAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC;CAC1B,IAAG,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC;CACf,IAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;CACvB,IAAG,MAAM;CACT,IAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC;AAC5B;CACA;CACA,IAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;CACd,IAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;KACtB;AACH;CACA;CACA,GAAE,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC;CACrB,GAAE,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC;CACpB,GAAE,EAAE,CAAC,YAAY,GAAG,CAAC,CAAC;CACtB,GAAE,EAAE,CAAC,aAAa,GAAG,CAAC,CAAC;IACrB;GACD,kBAAkB,EAAE,WAAW;CAChC,GAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5D;AACF;CACA;GACC,gBAAgB,EAAE,WAAW;CAC9B,GAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D;CACF,EAAC,mBAAmB,EAAE,SAAS,CAAC,IAAI;GACnC,eAAe,EAAE,WAAW;CAC7B,GAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD;AACF;CACA;GACC,gBAAgB,EAAE,WAAW;CAC9B,GAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D;CACF,EAAC,UAAU,EAAE,SAAS,CAAC,IAAI;CAC3B,EAAC,eAAe,EAAE,SAAS,KAAK,EAAE;CAClC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB;IACE,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE;CACtC,IAAG,OAAO,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;KACnE;CACH;IACE,EAAE,CAAC,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;IACtF,OAAO,KAAK,CAAC;IACb;AACF;GACC,2BAA2B,EAAE,WAAW;CACzC,GAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,2BAA2B,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE;GACD,oBAAoB,EAAE,WAAW;CAClC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB;IACE,IAAI,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAChC,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC1E;GACD,0BAA0B,EAAE,WAAW;CACxC,GAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE;AACF;CACA;AACA;GACC,2BAA2B,EAAE,WAAW;CACzC,GAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,2BAA2B,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE;GACD,qBAAqB,EAAE,WAAW;CACnC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;CAC3B,GAAE,IAAI,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;IAC7B,IAAI,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;IACpC,IAAI,WAAW,GAAG,QAAQ,CAAC,WAAW,IAAI,CAAC,CAAC;CAC9C,GAAE,IAAI,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;CACzC,GAAE,IAAI,aAAa,GAAG,WAAW,CAAC;CAClC,GAAE,IAAI,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,CAAC;AAClG;IACE,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,WAAW,IAAI,WAAW,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE;CAClH,IAAG,EAAE,CAAC,aAAa,GAAG,WAAW,CAAC;CAClC,IAAG,OAAO;KACP;AACH;CACA,GAAE,UAAU,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC;CACnC,GAAE,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;CAC1C,GAAE,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;AACzE;CACA;CACA;CACA,GAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,aAAa,CAAC,CAAC;CACnE,GAAE,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,QAAQ,GAAG,QAAQ,GAAG,QAAQ,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;AAClF;CACA;CACA,GAAE,IAAI,aAAa,GAAG,CAAC,GAAG,SAAS,EAAE;CACrC,IAAG,SAAS,GAAG,QAAQ,IAAI,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;KAC/D,SAAS,GAAG,EAAE,CAAC,SAAS,GAAG,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC;QAC5D,QAAQ,CAAC,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;CACjE,IAAG,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,aAAa,GAAG,cAAc,GAAG,cAAc,CAAC,CAAC;KAC9F,aAAa,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG;MAC3C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC;MACnE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,gBAAgB,CAAC;CACvG,KAAI,CAAC,CAAC;CACN,IAAG,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;KAC5E;AACH;CACA,GAAE,EAAE,CAAC,aAAa,GAAG,aAAa,CAAC;IACjC;GACD,0BAA0B,EAAE,WAAW;CACxC,GAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE;AACF;CACA;AACA;GACC,SAAS,EAAE,WAAW;CACvB,GAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD;GACD,GAAG,EAAE,WAAW;CACjB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB;CACA,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,OAAO,GAAG;KAC1B,KAAK,EAAE,CAAC;KACR,MAAM,EAAE,CAAC;CACZ,IAAG,CAAC;AACJ;CACA,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;CACvB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;CACxB,GAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;CAC5B,GAAE,IAAI,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC;CACvC,GAAE,IAAI,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;CACpC,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;IAC9B,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC;CAC5C,GAAE,IAAI,YAAY,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC;AACvC;CACA;IACE,IAAI,YAAY,EAAE;CACpB,IAAG,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC;KAC5B,MAAM,IAAI,OAAO,EAAE;CACtB,IAAG,OAAO,CAAC,KAAK,GAAG,iBAAiB,CAAC,YAAY,CAAC,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC;KACtF;AACH;CACA;IACE,IAAI,CAAC,YAAY,EAAE;CACrB,IAAG,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC;KAC9B,MAAM,IAAI,OAAO,EAAE;CACtB,IAAG,OAAO,CAAC,MAAM,GAAG,iBAAiB,CAAC,YAAY,CAAC,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC;KACvF;AACH;CACA;CACA,GAAE,IAAI,QAAQ,CAAC,OAAO,IAAI,OAAO,EAAE;CACnC,IAAG,IAAI,SAAS,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;CAClD,IAAG,IAAI,UAAU,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC;CACxC,IAAG,IAAI,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;CACzC,IAAG,IAAI,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC;CACvC,IAAG,IAAI,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC;CAC3C,IAAG,IAAI,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC;KAC1C,IAAI,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC;CACpD,IAAG,IAAI,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC;AACtC;KACG,IAAI,YAAY,EAAE;CACrB;MACI,IAAI,SAAS,GAAG,EAAE,CAAC,aAAa,KAAK,CAAC,CAAC;MACvC,IAAI,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;MACzD,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;MACzC,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAC7C;CACA,KAAI,IAAI,WAAW,GAAG,WAAW,GAAG,eAAe,CAAC,KAAK;CACzD,QAAO,WAAW,IAAI,gBAAgB,CAAC,MAAM,IAAI,SAAS,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;CAC1F,SAAQ,SAAS,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;AACnC;MACI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,GAAG,WAAW,GAAG,WAAW,CAAC,CAAC;AACxF;CACA,KAAI,IAAI,UAAU,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;MACjD,IAAI,WAAW,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;CAC9E,KAAI,IAAI,WAAW,EAAE,YAAY,CAAC;AAClC;CACA;CACA;MACI,IAAI,SAAS,EAAE;OACd,WAAW,GAAG,QAAQ;QACrB,WAAW,GAAG,cAAc,CAAC,KAAK,GAAG,WAAW,GAAG,cAAc,CAAC,MAAM;QACxE,WAAW,IAAI,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;OAC/D,YAAY,GAAG,QAAQ;QACtB,WAAW,IAAI,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;QAC3D,WAAW,GAAG,aAAa,CAAC,KAAK,GAAG,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;CAC7E,MAAK,MAAM;CACX,MAAK,WAAW,GAAG,cAAc,CAAC,KAAK,GAAG,CAAC,CAAC;CAC5C,MAAK,YAAY,GAAG,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC;OACvC;AACL;CACA;CACA;CACA,KAAI,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,GAAG,UAAU,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;CACtG,KAAI,EAAE,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,GAAG,WAAW,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;CAC1G,KAAI,MAAM;CACV;CACA;CACA,KAAI,IAAI,UAAU,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC;CACxC;CACA;CACA,MAAK,eAAe,CAAC,KAAK,GAAG,WAAW,GAAG,SAAS,CAAC;AACrD;CACA,KAAI,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC;AACtE;MACI,EAAE,CAAC,UAAU,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;MAC1C,EAAE,CAAC,aAAa,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;MAC5C;KACD;AACH;CACA,GAAE,EAAE,CAAC,aAAa,EAAE,CAAC;AACrB;IACE,IAAI,YAAY,EAAE;KACjB,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAC5E,IAAG,EAAE,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAC9B,IAAG,MAAM;CACT,IAAG,EAAE,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;KACzB,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;KAC3E;IACD;AACF;CACA;CACA;CACA;CACA;GACC,aAAa,EAAE,WAAW;CAC3B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,EAAE,CAAC,OAAO,EAAE;KACf,EAAE,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KAC5D,EAAE,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;KACzD,EAAE,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KAC/D,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;KAClE;IACD;AACF;GACC,QAAQ,EAAE,WAAW;CACtB,GAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD;AACF;CACA;GACC,YAAY,EAAE,WAAW;IACxB,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;IAChC,OAAO,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,QAAQ,CAAC;IACzC;GACD,WAAW,EAAE,WAAW;CACzB,GAAE,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAC9B;AACF;CACA;CACA,EAAC,aAAa,EAAE,SAAS,QAAQ,EAAE;CACnC;CACA,GAAE,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE;KAC5B,OAAO,GAAG,CAAC;KACX;CACH;CACA,GAAE,IAAI,CAAC,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,YAAY,MAAM,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;KACxF,OAAO,GAAG,CAAC;KACX;AACH;CACA;IACE,IAAI,QAAQ,EAAE;CAChB,IAAG,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;CAC5B,KAAI,IAAI,QAAQ,CAAC,CAAC,KAAK,SAAS,EAAE;OAC7B,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;OACtC;CACL,KAAI,MAAM,IAAI,QAAQ,CAAC,CAAC,KAAK,SAAS,EAAE;MACpC,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;MACtC;KACD;AACH;CACA;IACE,OAAO,QAAQ,CAAC;IAChB;AACF;CACA,EAAC,qBAAqB,EAAE,SAAS,KAAK,EAAE;CACxC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC;AACtB;IACE,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE;CACtC,IAAG,OAAO,IAAI,CAAC,KAAK,CAAC;CACrB,IAAG,CAAC,CAAC;AACL;CACA,GAAE,EAAE,CAAC,2BAA2B,EAAE,CAAC;AACnC;CACA;CACA;CACA;CACA,GAAE,MAAM,GAAG,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;AACtD;CACA,GAAE,EAAE,CAAC,0BAA0B,EAAE,CAAC;AAClC;CACA;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;KAC/C,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;KAC3B;AACH;IACE,OAAO,MAAM,CAAC;IACd;AACF;CACA;CACA;CACA;GACC,cAAc,EAAE,WAAW;CAC5B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,UAAU,GAAG,EAAE,CAAC,WAAW,CAAC;AAClC;IACE,IAAI,CAAC,UAAU,EAAE;CACnB,IAAG,EAAE,CAAC,WAAW,GAAG,UAAU,GAAG,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,oBAAoB,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC;KACpI,EAAE,CAAC,iBAAiB,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;KAC/C;AACH;IACE,OAAO,UAAU,CAAC;IAClB;AACF;CACA;CACA;CACA;CACA,EAAC,WAAW,EAAE,SAAS,KAAK,EAAE;IAC5B,IAAI,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC3B;CACA,GAAE,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;CACtB,IAAG,KAAK,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;CACzC,IAAG,GAAG,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KACpC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;KAC3B,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAG,MAAM;KACN,KAAK,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KACnC,KAAK,GAAG,SAAS,CAAC;KAClB,GAAG,GAAG,KAAK,CAAC;KACZ,GAAG,GAAG,KAAK,CAAC;KACZ,GAAG,GAAG,KAAK,CAAC;KACZ;AACH;CACA,GAAE,OAAO;KACN,GAAG,EAAE,GAAG;KACR,GAAG,EAAE,GAAG;KACR,KAAK,EAAE,KAAK;KACZ,GAAG,EAAE,GAAG;CACX,IAAG,CAAC;IACF;AACF;CACA;CACA;CACA;CACA,EAAC,cAAc,EAAE,SAAS,QAAQ,EAAE;IAClC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;CACrC,GAAE,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE;CAC7B,IAAG,OAAO,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;KAC1C;AACH;IACE,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACrC;AACF;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,gBAAgB,EAAE,SAAS,CAAC,IAAI;AACjC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,gBAAgB,EAAE,SAAS,CAAC,IAAI;AACjC;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,gBAAgB,EAAE,SAAS,CAAC,IAAI;AACjC;CACA;CACA;CACA;CACA;CACA,EAAC,eAAe,EAAE,SAAS,KAAK,EAAE;CAClC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IAC/B,IAAI,QAAQ,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;IAChC,IAAI,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/D;IACE,OAAO,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,QAAQ,GAAG,CAAC;CAC1C,MAAK,IAAI;CACT,MAAK,EAAE,CAAC,kBAAkB,CAAC,KAAK,GAAG,SAAS,IAAI,MAAM,GAAG,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3E;AACF;CACA;CACA;CACA;CACA;CACA,EAAC,kBAAkB,EAAE,SAAS,OAAO,EAAE;CACvC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AAChB;CACA,GAAE,IAAI,EAAE,CAAC,cAAc,EAAE;CACzB,IAAG,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC;KACtB;AACH;IACE,OAAO,EAAE,CAAC,WAAW,GAAG,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;IAC7C;AACF;CACA,EAAC,kBAAkB,EAAE,SAAS,KAAK,EAAE;CACrC,GAAE,IAAI,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC;IACxD,OAAO,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC;IACnD;AACF;CACA;CACA;CACA;CACA;GACC,YAAY,EAAE,WAAW;IACxB,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAClD;AACF;GACC,YAAY,EAAE,WAAW;CAC1B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;CACnB,GAAE,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;AACnB;CACA,GAAE,OAAO,EAAE,CAAC,WAAW,GAAG,CAAC;KACxB,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG;KACxB,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG;CAC3B,IAAG,CAAC,CAAC;IACH;AACF;CACA;CACA;CACA;CACA;CACA,EAAC,SAAS,EAAE,SAAS,KAAK,EAAE;CAC5B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAClC,GAAE,IAAI,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC;CAC9B,GAAE,IAAI,UAAU,GAAG,QAAQ,CAAC,aAAa,IAAI,UAAU,GAAG,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;CAC7E,GAAE,IAAI,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;CAC1E,GAAE,IAAI,eAAe,GAAG,YAAY,CAAC,MAAM,CAAC;CAC5C,GAAE,IAAI,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,IAAI,GAAG,YAAY,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,CAAC;AACxC;CACA;CACA,GAAE,IAAI,eAAe,GAAG,UAAU,EAAE;KACjC,UAAU,CAAC,KAAK,EAAE,YAAY,EAAE,eAAe,GAAG,UAAU,CAAC,CAAC;CACjE,IAAG,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;KACzB;AACH;CACA,GAAE,OAAO,GAAG,gBAAgB,CAAC,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC1E;CACA,GAAE,IAAI,eAAe,GAAG,CAAC,EAAE;CAC3B,IAAG,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,eAAe,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;CAC1D,KAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAC3D;CACJ,IAAG,eAAe,GAAG,eAAe,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,KAAK,eAAe,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;KACtF,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,aAAa,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,eAAe,EAAE,KAAK,CAAC,CAAC;KACpG,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,aAAa,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,eAAe,CAAC,CAAC;CAChH,IAAG,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;KACzB;CACH,GAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;CACvB,GAAE,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;IACzB;AACF;CACA;CACA;CACA;GACC,SAAS,EAAE,WAAW;CACvB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;AACrC;CACA;IACE,IAAI,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;CAClD,GAAE,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;CACpC,GAAE,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACpC;CACA,GAAE,IAAI,UAAU,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC;IACrC,IAAI,OAAO,GAAG,WAAW,CAAC,eAAe,IAAI,CAAC,CAAC;CACjD,GAAE,IAAI,CAAC,GAAG,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,GAAG,CAAC,CAAC;CAC7D,GAAE,IAAI,CAAC,GAAG,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,GAAG,CAAC,CAAC;AAC/D;CACA;CACA,GAAE,OAAO,EAAE,CAAC,YAAY,EAAE;CAC1B,MAAK,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG;CAC1C,MAAK,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACzC;AACF;CACA;CACA;CACA;GACC,UAAU,EAAE,WAAW;CACxB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;IACrB,IAAI,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;CACnC,GAAE,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;AACpB;CACA,GAAE,IAAI,OAAO,KAAK,MAAM,EAAE;CAC1B,IAAG,OAAO,CAAC,CAAC,OAAO,CAAC;KACjB;AACH;CACA;IACE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CAChE,IAAG,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;MAC9B,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;CACnC,KAAI,IAAI,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,EAAE,EAAE;OACrD,OAAO,IAAI,CAAC;OACZ;MACD;KACD;AACH;IACE,OAAO,KAAK,CAAC;IACb;AACF;CACA;CACA;CACA;CACA,EAAC,qBAAqB,EAAE,SAAS,SAAS,EAAE;CAC5C,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;CACvB,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;CAC3B,GAAE,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;CACpC,GAAE,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;CAClC,GAAE,IAAI,eAAe,GAAG,SAAS,CAAC,eAAe,CAAC;CAClD,GAAE,IAAI,YAAY,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC;CACvC,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC;CAC9B,GAAE,IAAI,WAAW,GAAG,KAAK,CAAC,MAAM,IAAI,eAAe,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7D;CACA,GAAE,IAAI,EAAE,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;CACxC,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC;CACjB,GAAE,IAAI,SAAS,GAAG,SAAS,CAAC,UAAU,GAAG,qBAAqB,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;CAC9F,GAAE,IAAI,aAAa,GAAG,SAAS,GAAG,CAAC,CAAC;CACpC,GAAE,IAAI,UAAU,GAAG,SAAS,CAAC,WAAW,CAAC;CACzC,GAAE,IAAI,gBAAgB,GAAG,SAAS,KAAK,EAAE;KACtC,OAAO,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;CAC9C,IAAG,CAAC;IACF,IAAI,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,CAAC;IACtD,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,CAAC;AAC7F;CACA,GAAE,IAAI,QAAQ,KAAK,KAAK,EAAE;KACvB,WAAW,GAAG,gBAAgB,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;CAC7C,IAAG,GAAG,GAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC;CACxB,IAAG,GAAG,GAAG,WAAW,GAAG,aAAa,CAAC;KAClC,EAAE,GAAG,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC;CACxD,IAAG,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC;CACzB,IAAG,MAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE;KACjC,WAAW,GAAG,gBAAgB,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CAC1C,IAAG,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC;KACnB,EAAE,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC;CAC3D,IAAG,GAAG,GAAG,WAAW,GAAG,aAAa,CAAC;CACrC,IAAG,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC;CACrB,IAAG,MAAM,IAAI,QAAQ,KAAK,MAAM,EAAE;KAC/B,WAAW,GAAG,gBAAgB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;CAC5C,IAAG,GAAG,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC;CACvB,IAAG,GAAG,GAAG,WAAW,GAAG,aAAa,CAAC;KAClC,EAAE,GAAG,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC;CACzD,IAAG,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC;CACxB,IAAG,MAAM;KACN,WAAW,GAAG,gBAAgB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3C,IAAG,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC;KACpB,EAAE,GAAG,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC;CAC1D,IAAG,GAAG,GAAG,WAAW,GAAG,aAAa,CAAC;CACrC,IAAG,GAAG,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC;KACnB;AACH;IACE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,EAAE,CAAC,EAAE;KACjC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACzB;CACA;CACA,IAAG,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE;CACtD,KAAI,SAAS;MACT;AACJ;CACA,IAAG,IAAI,CAAC,KAAK,EAAE,CAAC,aAAa,IAAI,OAAO,CAAC,MAAM,KAAK,eAAe,EAAE;CACrE;CACA,KAAI,SAAS,GAAG,SAAS,CAAC,aAAa,CAAC;CACxC,KAAI,SAAS,GAAG,SAAS,CAAC,aAAa,CAAC;CACxC,KAAI,UAAU,GAAG,SAAS,CAAC,kBAAkB,IAAI,EAAE,CAAC;CACpD,KAAI,gBAAgB,GAAG,SAAS,CAAC,wBAAwB,IAAI,GAAG,CAAC;CACjE,KAAI,MAAM;CACV,KAAI,SAAS,GAAG,qBAAqB,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACjE,KAAI,SAAS,GAAG,qBAAqB,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAC;CAC7E,KAAI,UAAU,GAAG,SAAS,CAAC,UAAU,IAAI,EAAE,CAAC;CAC5C,KAAI,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,IAAI,GAAG,CAAC;MACrD;AACJ;CACA,IAAG,SAAS,GAAG,mBAAmB,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,eAAe,CAAC,CAAC;AAC1E;CACA;CACA,IAAG,IAAI,SAAS,KAAK,SAAS,EAAE;CAChC,KAAI,SAAS;MACT;AACJ;KACG,gBAAgB,GAAG,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAC9D;KACG,IAAI,YAAY,EAAE;MACjB,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,gBAAgB,CAAC;CAC3C,KAAI,MAAM;MACN,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,gBAAgB,CAAC;MACvC;AACJ;KACG,KAAK,CAAC,IAAI,CAAC;MACV,GAAG,EAAE,GAAG;MACR,GAAG,EAAE,GAAG;MACR,GAAG,EAAE,GAAG;MACR,GAAG,EAAE,GAAG;MACR,EAAE,EAAE,EAAE;MACN,EAAE,EAAE,EAAE;MACN,EAAE,EAAE,EAAE;MACN,EAAE,EAAE,EAAE;MACN,KAAK,EAAE,SAAS;MAChB,KAAK,EAAE,SAAS;MAChB,UAAU,EAAE,UAAU;MACtB,gBAAgB,EAAE,gBAAgB;CACtC,KAAI,CAAC,CAAC;KACH;AACH;CACA,GAAE,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;CAClC,GAAE,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;AAClC;IACE,OAAO,KAAK,CAAC;IACb;AACF;CACA;CACA;CACA;GACC,kBAAkB,EAAE,WAAW;CAChC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;CAC3B,GAAE,IAAI,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC;CAClC,GAAE,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;CAClC,GAAE,IAAI,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC;CACtC,GAAE,IAAI,YAAY,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC;CACvC,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC;CAC9B,GAAE,IAAI,KAAK,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;CAChD,GAAE,IAAI,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC;IACtC,IAAI,EAAE,GAAG,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;CAChD,GAAE,IAAI,QAAQ,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;CACxD,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC;AAC5F;CACA,GAAE,IAAI,QAAQ,KAAK,KAAK,EAAE;KACvB,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,EAAE,GAAG,WAAW,CAAC;KACjC,SAAS,GAAG,CAAC,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;CAC7C,IAAG,MAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE;KACjC,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,WAAW,CAAC;KAC9B,SAAS,GAAG,CAAC,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;CAC9C,IAAG,MAAM,IAAI,QAAQ,KAAK,MAAM,EAAE;CAClC,IAAG,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,UAAU,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,WAAW,CAAC;CACtD,IAAG,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;CAC7C,IAAG,MAAM;CACT,IAAG,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,UAAU,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,WAAW,CAAC;CACrD,IAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;KAC1C;AACH;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CAClD,IAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CACnB,IAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACtB;CACA;CACA,IAAG,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;CAC7B,KAAI,SAAS;MACT;AACJ;CACA,IAAG,KAAK,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,WAAW,CAAC,WAAW,CAAC;CAC1E,IAAG,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;CACjD,IAAG,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;CAChC,IAAG,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACjD;KACG,IAAI,YAAY,EAAE;MACjB,CAAC,GAAG,KAAK,CAAC;CACd,KAAI,UAAU,GAAG,QAAQ,KAAK,KAAK;SAC5B,CAAC,CAAC,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC,IAAI,SAAS,IAAI,UAAU;SAChD,CAAC,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC,IAAI,UAAU,CAAC;CAC1C,KAAI,MAAM;MACN,CAAC,GAAG,KAAK,CAAC;MACV,UAAU,GAAG,CAAC,CAAC,GAAG,SAAS,IAAI,UAAU,GAAG,CAAC,CAAC;MAC9C;AACJ;KACG,KAAK,CAAC,IAAI,CAAC;MACV,CAAC,EAAE,CAAC;MACJ,CAAC,EAAE,CAAC;MACJ,QAAQ,EAAE,QAAQ;MAClB,KAAK,EAAE,KAAK;MACZ,IAAI,EAAE,IAAI;MACV,UAAU,EAAE,UAAU;MACtB,SAAS,EAAE,SAAS;CACxB,KAAI,CAAC,CAAC;KACH;AACH;IACE,OAAO,KAAK,CAAC;IACb;AACF;CACA;CACA;CACA;CACA,EAAC,SAAS,EAAE,SAAS,SAAS,EAAE;CAChC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;AACvC;CACA,GAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;CAC1B,IAAG,OAAO;KACP;AACH;CACA,GAAE,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;CACnB,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;CACvB,GAAE,IAAI,UAAU,GAAG,SAAS,CAAC,WAAW,CAAC;CACzC,GAAE,IAAI,SAAS,GAAG,SAAS,CAAC,UAAU,GAAG,qBAAqB,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;CAC9F,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,cAAc,KAAK,EAAE,CAAC,cAAc,GAAG,EAAE,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3F,IAAI,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;AAClC;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CAClD,IAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CACnB,IAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;CACtB,IAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACtB;CACA,IAAG,IAAI,KAAK,IAAI,KAAK,EAAE;CACvB,KAAI,GAAG,CAAC,IAAI,EAAE,CAAC;CACf,KAAI,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;CAC1B,KAAI,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC;CAC5B,KAAI,IAAI,GAAG,CAAC,WAAW,EAAE;OACpB,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;CACtC,MAAK,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC;OAC3C;AACL;CACA,KAAI,GAAG,CAAC,SAAS,EAAE,CAAC;AACpB;CACA,KAAI,IAAI,SAAS,CAAC,SAAS,EAAE;CAC7B,MAAK,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;CACpC,MAAK,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;OAC/B;AACL;CACA,KAAI,IAAI,SAAS,CAAC,eAAe,EAAE;CACnC,MAAK,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;CAClC,MAAK,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;OAC7B;AACL;CACA,KAAI,GAAG,CAAC,MAAM,EAAE,CAAC;CACjB,KAAI,GAAG,CAAC,OAAO,EAAE,CAAC;MACd;KACD;AACH;IACE,IAAI,SAAS,EAAE;CACjB;CACA,IAAG,IAAI,cAAc,GAAG,SAAS,CAAC;CAClC,IAAG,IAAI,aAAa,GAAG,qBAAqB,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;CAC5F,IAAG,IAAI,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;KACpC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACtB;CACA,IAAG,IAAI,EAAE,CAAC,YAAY,EAAE,EAAE;CAC1B,KAAI,EAAE,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,GAAG,cAAc,GAAG,CAAC,CAAC;CACzE,KAAI,EAAE,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,GAAG,aAAa,GAAG,CAAC,CAAC;CACxE,KAAI,EAAE,GAAG,EAAE,GAAG,WAAW,CAAC;CAC1B,KAAI,MAAM;CACV,KAAI,EAAE,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,cAAc,CAAC,GAAG,cAAc,GAAG,CAAC,CAAC;CACxE,KAAI,EAAE,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,aAAa,GAAG,CAAC,CAAC;CACzE,KAAI,EAAE,GAAG,EAAE,GAAG,WAAW,CAAC;MACtB;AACJ;CACA,IAAG,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;CAC7B,IAAG,GAAG,CAAC,WAAW,GAAG,qBAAqB,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;CAC/D,IAAG,GAAG,CAAC,SAAS,EAAE,CAAC;KAChB,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;KACnB,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;CACtB,IAAG,GAAG,CAAC,MAAM,EAAE,CAAC;KACb;IACD;AACF;CACA;CACA;CACA;GACC,WAAW,EAAE,WAAW;CACzB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;AACrC;CACA,GAAE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;CAC5B,IAAG,OAAO;KACP;AACH;CACA,GAAE,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;CACnB,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,WAAW,KAAK,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,kBAAkB,EAAE,CAAC,CAAC;CAC3E,GAAE,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AACjD;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CAClD,IAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CACnB,IAAG,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;AACxB;CACA;CACA,IAAG,GAAG,CAAC,IAAI,EAAE,CAAC;CACd,IAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;KAC9B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;CAC7B,IAAG,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;CAC9B,IAAG,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC;CAClC,IAAG,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC;CAC/B,IAAG,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAClC;CACA,IAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;CACtB,IAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;CACvB,IAAG,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;CACvB,KAAI,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACpD;CACA,MAAK,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACvC,MAAK,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC;OACzB;CACL,KAAI,MAAM;MACN,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MAC1B;CACJ,IAAG,GAAG,CAAC,OAAO,EAAE,CAAC;KACd;IACD;AACF;CACA;CACA;CACA;GACC,UAAU,EAAE,WAAW;CACxB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;CACnB,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;CAC3B,GAAE,IAAI,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;AACtC;CACA,GAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;CAC3B,IAAG,OAAO;KACP;AACH;CACA,GAAE,IAAI,mBAAmB,GAAG,gBAAgB,CAAC,UAAU,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACxG,IAAI,cAAc,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;CAChE,GAAE,IAAI,iBAAiB,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACxE,IAAI,cAAc,GAAG,cAAc,CAAC,UAAU,GAAG,CAAC,CAAC;CACrD,GAAE,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;CAClC,GAAE,IAAI,QAAQ,GAAG,CAAC,CAAC;CACnB,GAAE,IAAI,WAAW,EAAE,WAAW,CAAC;AAC/B;CACA,GAAE,IAAI,EAAE,CAAC,YAAY,EAAE,EAAE;KACtB,WAAW,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;CACxC,IAAG,WAAW,GAAG,QAAQ,KAAK,QAAQ;QAChC,EAAE,CAAC,MAAM,GAAG,cAAc,GAAG,iBAAiB,CAAC,MAAM;QACrD,EAAE,CAAC,GAAG,GAAG,cAAc,GAAG,iBAAiB,CAAC,GAAG,CAAC;CACtD,IAAG,MAAM;CACT,IAAG,IAAI,MAAM,GAAG,QAAQ,KAAK,MAAM,CAAC;KACjC,WAAW,GAAG,MAAM;QACjB,EAAE,CAAC,IAAI,GAAG,cAAc,GAAG,iBAAiB,CAAC,GAAG;QAChD,EAAE,CAAC,KAAK,GAAG,cAAc,GAAG,iBAAiB,CAAC,GAAG,CAAC;KACrD,WAAW,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;CACxC,IAAG,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;KACnD;AACH;CACA,GAAE,GAAG,CAAC,IAAI,EAAE,CAAC;IACX,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;CAC1C,GAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;CACvB,GAAE,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC;CAC3B,GAAE,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC;CAC9B,GAAE,GAAG,CAAC,SAAS,GAAG,mBAAmB,CAAC;CACtC,GAAE,GAAG,CAAC,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC;CACnC,GAAE,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC7C,GAAE,GAAG,CAAC,OAAO,EAAE,CAAC;IACd;AACF;CACA,EAAC,IAAI,EAAE,SAAS,SAAS,EAAE;CAC3B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AAChB;CACA,GAAE,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE;CACxB,IAAG,OAAO;KACP;AACH;CACA,GAAE,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;CAC1B,GAAE,EAAE,CAAC,UAAU,EAAE,CAAC;CAClB,GAAE,EAAE,CAAC,WAAW,EAAE,CAAC;IACjB;AACF;CACA;CACA;CACA;GACC,OAAO,EAAE,WAAW;CACrB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;CACxB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;CAC3C,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;AACnD;CACA,GAAE,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE;CAC7D;CACA,IAAG,OAAO,CAAC;MACP,CAAC,EAAE,EAAE;MACL,IAAI,EAAE,WAAW;OAChB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;OAC7B;CACL,KAAI,CAAC,CAAC;KACH;AACH;CACA,GAAE,OAAO,CAAC;KACP,CAAC,EAAE,EAAE;KACL,IAAI,EAAE,WAAW;MAChB,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;MAClC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;MACnC;CACJ,IAAG,EAAE;KACF,CAAC,EAAE,EAAE;KACL,IAAI,EAAE,WAAW;MAChB,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;MACpC;CACJ,IAAG,CAAC,CAAC;IACH;AACF;CACA;CACA;CACA;CACA,EAAC,wBAAwB,EAAE,SAAS,IAAI,EAAE;CAC1C,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,YAAY,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC;CACvC,GAAE,OAAO,EAAE,CAAC,KAAK,CAAC,6BAA6B,EAAE;CACjD,KAAI,MAAM,CAAC,SAAS,IAAI,EAAE;MACtB,OAAO,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;CACvC,UAAS,YAAY,GAAG,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;CACzE,KAAI,CAAC,CAAC;IACJ;CACF,EAAC,CAAC,CAAC;AACH;EACA,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;AAC7C;EACA,IAAI,UAAU,GAAG,KAAK,CAAC;AACvB;CACA,CAAA,IAAI,eAAe,GAAG,SAAS,CAAC,aAAa,CAAC;AAC9C;CACA,CAAA,IAAI,aAAa,GAAG;GACnB,QAAQ,EAAE,QAAQ;CACnB,EAAC,CAAC;AACF;CACA,CAAA,IAAI,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC;GACtC,mBAAmB,EAAE,WAAW;CACjC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;IAC7B,IAAI,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACnC,GAAE,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;CAC1B,GAAE,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;CAC1B,GAAE,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACjC,IAAI,SAAS,CAAC;AAChB;CACA,GAAE,IAAI,GAAG,KAAK,SAAS,EAAE;CACzB;KACG,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;CACnC,IAAG,IAAI,SAAS,IAAI,CAAC,EAAE;MACnB,QAAQ,GAAG,SAAS,CAAC;MACrB;KACD;AACH;CACA,GAAE,IAAI,GAAG,KAAK,SAAS,EAAE;CACzB;KACG,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;CACnC,IAAG,IAAI,SAAS,IAAI,CAAC,EAAE;MACnB,QAAQ,GAAG,SAAS,CAAC;MACrB;KACD;AACH;CACA,GAAE,EAAE,CAAC,QAAQ,GAAG,QAAQ,CAAC;CACzB,GAAE,EAAE,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACvB,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1B,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1B;AACF;GACC,UAAU,EAAE,WAAW;CACxB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;CAC/B,GAAE,IAAI,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;CAC7B,GAAE,IAAI,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;AAC7B;CACA;CACA,GAAE,EAAE,CAAC,KAAK,GAAG,CAAC,QAAQ,KAAK,CAAC,IAAI,QAAQ,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;IAC9G;AACF;CACA,EAAC,gBAAgB,EAAE,SAAS,KAAK,EAAE,YAAY,EAAE;CACjD,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;AACvB;CACA,GAAE,IAAI,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,gBAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;CAClF,IAAG,OAAO,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;KACvE;AACH;IACE,OAAO,EAAE,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC;IAC9B;AACF;GACC,UAAU,EAAE,WAAW;CACxB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;CACjC,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;AACvB;IACE,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3C;CACA,GAAE,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE;CAC1B;KACG,EAAE,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC,cAAc,CAAC;KACvC;AACH;IACE,IAAI,CAAC,KAAK,EAAE;CACd,IAAG,OAAO;KACP;AACH;CACA,GAAE,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,QAAQ,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAClD,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9D;AACF;CACA;GACC,gBAAgB,EAAE,SAAS,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE;CACxD,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,aAAa,EAAE,MAAM,EAAE,GAAG,CAAC;AACjC;CACA,GAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE;CACjE,IAAG,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzD;AACH;CACA;CACA;CACA,GAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;CAC/B,IAAG,aAAa,GAAG,EAAE,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;KACtD;CACH,GAAE,IAAI,aAAa,KAAK,SAAS,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;CAC5E,IAAG,MAAM,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;KACzB,KAAK,GAAG,SAAS,CAAC,cAAc,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;KACvD,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KAC5B,KAAK,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;CACpC,IAAG,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;MACjB,KAAK,GAAG,KAAK,CAAC;MACd;KACD;CACH,GAAE,OAAO,EAAE,CAAC,kBAAkB,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC;IACxE;AACF;CACA,EAAC,eAAe,EAAE,SAAS,KAAK,EAAE;CAClC,GAAE,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACvB,OAAO,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;CAC9C,MAAK,IAAI;CACT,MAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9D;AACF;CACA,EAAC,gBAAgB,EAAE,SAAS,KAAK,EAAE;CACnC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC;IACvF,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzD;AACF;GACC,YAAY,EAAE,WAAW;CAC1B,GAAE,OAAO,IAAI,CAAC,MAAM,CAAC;IACnB;CACF,EAAC,CAAC,CAAC;AACH;CACA;EACA,IAAI,SAAS,GAAG,aAAa,CAAC;CAC9B,CAAA,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC;AACrC;CACA,CAAA,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;CAC1B,CAAA,IAAI,eAAe,GAAG,SAAS,CAAC,aAAa,CAAC;AAC9C;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,SAAS,aAAa,CAAC,iBAAiB,EAAE,SAAS,EAAE;CACrD,EAAC,IAAI,KAAK,GAAG,EAAE,CAAC;CAChB;CACA;CACA;AACA;CACA,EAAC,IAAI,WAAW,GAAG,KAAK,CAAC;CACzB,EAAC,IAAI,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,CAAC;CAC3C,EAAC,IAAI,IAAI,GAAG,QAAQ,IAAI,CAAC,CAAC;GACzB,IAAI,YAAY,GAAG,iBAAiB,CAAC,QAAQ,GAAG,CAAC,CAAC;CACnD,EAAC,IAAI,GAAG,GAAG,iBAAiB,CAAC,GAAG,CAAC;CACjC,EAAC,IAAI,GAAG,GAAG,iBAAiB,CAAC,GAAG,CAAC;CACjC,EAAC,IAAI,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC;CAC7C,EAAC,IAAI,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC;CAC1B,EAAC,IAAI,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC;CAC1B,EAAC,IAAI,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;GAC5E,IAAI,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC;AACzC;CACA;CACA;CACA,EAAC,IAAI,OAAO,GAAG,WAAW,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE;CAC5E,GAAE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpB;AACF;CACA,EAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC;CACpE,EAAC,IAAI,SAAS,GAAG,YAAY,EAAE;CAC/B;CACA,GAAE,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,GAAG,OAAO,GAAG,YAAY,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC9E;AACF;CACA,EAAC,IAAI,QAAQ,IAAI,eAAe,CAAC,SAAS,CAAC,EAAE;CAC7C;CACA,GAAE,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;CAC3D,GAAE,MAAM;CACR;IACE,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;CACnC,GAAE,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;IAC/C;AACF;CACA,EAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC;CAChD,EAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC;AAC/C;CACA;GACC,IAAI,QAAQ,EAAE;CACf;CACA,GAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,WAAW,CAAC,GAAG,GAAG,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC,EAAE;KAClF,OAAO,GAAG,GAAG,CAAC;KACd;CACH,GAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,WAAW,CAAC,GAAG,GAAG,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC,EAAE;KAClF,OAAO,GAAG,GAAG,CAAC;KACd;IACD;AACF;GACC,SAAS,GAAG,CAAC,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC;CAC3C;CACA,EAAC,IAAI,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,EAAE;IAC7E,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;CACpC,GAAE,MAAM;IACN,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACjC;AACF;CACA,EAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;CACjD,EAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;CACjD,EAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,GAAG,CAAC,CAAC;CAClD,EAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,EAAE;IACnC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,GAAG,OAAO,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;IAClE;CACF,EAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,GAAG,CAAC,CAAC;AAClD;GACC,OAAO,KAAK,CAAC;GACb;AACD;CACA,CAAA,IAAI,gBAAgB,GAAG,UAAU,CAAC,MAAM,CAAC;CACzC,EAAC,aAAa,EAAE,SAAS,KAAK,EAAE;CAChC,GAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;KAC9B,OAAO,CAAC,KAAK,CAAC;KACd;CACH,GAAE,OAAO,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5D;AACF;GACC,sBAAsB,EAAE,WAAW;CACpC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;CACxB,GAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;AAC5B;CACA;CACA;CACA;CACA,GAAE,IAAI,QAAQ,CAAC,WAAW,EAAE;KACzB,IAAI,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;KACrC,IAAI,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACxC;KACG,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE;CACnC;CACA,KAAI,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;MACX,MAAM,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE;CAC1C;CACA,KAAI,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;MACX;KACD;AACH;CACA,GAAE,IAAI,MAAM,GAAG,QAAQ,CAAC,GAAG,KAAK,SAAS,IAAI,QAAQ,CAAC,YAAY,KAAK,SAAS,CAAC;CACjF,GAAE,IAAI,MAAM,GAAG,QAAQ,CAAC,GAAG,KAAK,SAAS,IAAI,QAAQ,CAAC,YAAY,KAAK,SAAS,CAAC;AACjF;CACA,GAAE,IAAI,QAAQ,CAAC,GAAG,KAAK,SAAS,EAAE;CAClC,IAAG,EAAE,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;CACzB,IAAG,MAAM,IAAI,QAAQ,CAAC,YAAY,KAAK,SAAS,EAAE;CAClD,IAAG,IAAI,EAAE,CAAC,GAAG,KAAK,IAAI,EAAE;CACxB,KAAI,EAAE,CAAC,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC;CACnC,KAAI,MAAM;CACV,KAAI,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;MACjD;KACD;AACH;CACA,GAAE,IAAI,QAAQ,CAAC,GAAG,KAAK,SAAS,EAAE;CAClC,IAAG,EAAE,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;CACzB,IAAG,MAAM,IAAI,QAAQ,CAAC,YAAY,KAAK,SAAS,EAAE;CAClD,IAAG,IAAI,EAAE,CAAC,GAAG,KAAK,IAAI,EAAE;CACxB,KAAI,EAAE,CAAC,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC;CACnC,KAAI,MAAM;CACV,KAAI,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;MACjD;KACD;AACH;CACA,GAAE,IAAI,MAAM,KAAK,MAAM,EAAE;CACzB;CACA;CACA;CACA;KACG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,EAAE;MACrB,IAAI,MAAM,EAAE;OACX,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;CACzB,MAAK,MAAM;OACN,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;OACpB;MACD;KACD;AACH;IACE,IAAI,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,EAAE;CACzB,IAAG,EAAE,CAAC,GAAG,EAAE,CAAC;AACZ;CACA,IAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;CAC9B,KAAI,EAAE,CAAC,GAAG,EAAE,CAAC;MACT;KACD;IACD;AACF;GACC,YAAY,EAAE,WAAW;CAC1B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAClC,GAAE,IAAI,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;CACnC,GAAE,IAAI,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;IAC3C,IAAI,QAAQ,CAAC;AACf;IACE,IAAI,QAAQ,EAAE;KACb,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;CAC/E,IAAG,MAAM;CACT,IAAG,QAAQ,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAC;CACrC,IAAG,aAAa,GAAG,aAAa,IAAI,EAAE,CAAC;KACpC;AACH;IACE,IAAI,aAAa,EAAE;KAClB,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;KAC7C;AACH;IACE,OAAO,QAAQ,CAAC;IAChB;AACF;GACC,iBAAiB,EAAE,WAAW;CAC/B,GAAE,OAAO,MAAM,CAAC,iBAAiB,CAAC;IAChC;AACF;GACC,wBAAwB,EAAE,IAAI;AAC/B;GACC,UAAU,EAAE,WAAW;CACxB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;CACxB,GAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;AAC5B;CACA;CACA;CACA;CACA;CACA,GAAE,IAAI,QAAQ,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC;IACjC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AACnC;IACE,IAAI,uBAAuB,GAAG;KAC7B,QAAQ,EAAE,QAAQ;CACrB,IAAG,GAAG,EAAE,QAAQ,CAAC,GAAG;CACpB,IAAG,GAAG,EAAE,QAAQ,CAAC,GAAG;CACpB,IAAG,SAAS,EAAE,QAAQ,CAAC,SAAS;CAChC,IAAG,QAAQ,EAAE,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAAC;CAChF,IAAG,CAAC;CACJ,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,GAAG,aAAa,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;AACpE;CACA,GAAE,EAAE,CAAC,wBAAwB,EAAE,CAAC;AAChC;CACA;CACA;IACE,EAAE,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9B,EAAE,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAChC;CACA,GAAE,IAAI,QAAQ,CAAC,OAAO,EAAE;CACxB,IAAG,KAAK,CAAC,OAAO,EAAE,CAAC;AACnB;CACA,IAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC;CACrB,IAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;CACnB,IAAG,MAAM;CACT,IAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC;CACrB,IAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;KAChB;IACD;AACF;GACC,oBAAoB,EAAE,WAAW;CAClC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,EAAE,CAAC,cAAc,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;CACvC,GAAE,EAAE,CAAC,aAAa,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACzC;IACE,UAAU,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnD;AACF;GACC,UAAU,EAAE,WAAW;CACxB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;CAC5B,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC;CACrB,GAAE,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IACjB,IAAI,MAAM,CAAC;AACb;IACE,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3C;IACE,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE;KACtC,MAAM,GAAG,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;KAC3D,KAAK,IAAI,MAAM,CAAC;KAChB,GAAG,IAAI,MAAM,CAAC;KACd;CACH,GAAE,EAAE,CAAC,WAAW,GAAG,KAAK,CAAC;CACzB,GAAE,EAAE,CAAC,SAAS,GAAG,GAAG,CAAC;CACrB,GAAE,EAAE,CAAC,WAAW,GAAG,GAAG,GAAG,KAAK,CAAC;IAC7B;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,IAAI,eAAe,GAAG;GACrB,QAAQ,EAAE,MAAM;CACjB,EAAC,KAAK,EAAE;CACR,GAAE,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,MAAM;IACtC;CACF,EAAC,CAAC;AACF;EACA,IAAI,WAAW,GAAG,CAAC,CAAC;EACpB,IAAI,WAAW,GAAG,CAAC,CAAC;AACpB;CACA,CAAA,SAAS,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;GAChD,IAAI,GAAG,GAAG;IACT,IAAI,CAAC,IAAI;CACX;CACA,GAAE,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE;IACnE,IAAI,CAAC,KAAK;CACZ,GAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACb;CACA,EAAC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;CAChC,GAAE,MAAM,CAAC,GAAG,CAAC,GAAG;KACb,GAAG,EAAE,EAAE;KACP,GAAG,EAAE,EAAE;CACV,IAAG,CAAC;IACF;AACF;CACA,EAAC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;GACnB;AACD;EACA,SAAS,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;CAC9C,EAAC,IAAI,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC;CAC1B,EAAC,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;GAC3B,IAAI,KAAK,GAAG,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;CACrD,EAAC,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;CACrB,EAAC,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;CACrB,EAAC,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;CACxB,EAAC,IAAI,CAAC,EAAE,KAAK,CAAC;AACd;GACC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;IAC1B,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;CACnE,IAAG,SAAS;KACT;AACH;IACE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACrB,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACvB;CACA,GAAE,IAAI,IAAI,CAAC,cAAc,EAAE;CAC3B,IAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;CAChB,IAAG,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE;KAC1C,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC;CACvB,IAAG,MAAM;KACN,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC;KACpB;IACD;GACD;AACD;CACA,CAAA,SAAS,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;CACzC,EAAC,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;CACxB,EAAC,IAAI,CAAC,EAAE,KAAK,CAAC;AACd;GACC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;IAC1B,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;CACnE,IAAG,SAAS;KACT;AACH;CACA,GAAE,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;CAC7C,GAAE,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3C;GACD;AACD;CACA,CAAA,IAAI,YAAY,GAAG,gBAAgB,CAAC,MAAM,CAAC;GAC1C,mBAAmB,EAAE,WAAW;CACjC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;CACxB,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;IACrB,IAAI,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;CACrC,GAAE,IAAI,QAAQ,GAAG,EAAE,CAAC,wBAAwB,EAAE,CAAC;CAC/C,GAAE,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC;CAC/B,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC;CAClB,GAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;AAC5B;CACA,GAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;CACpC,GAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACpC;CACA,GAAE,IAAI,SAAS,KAAK,SAAS,EAAE;CAC/B,IAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CAC5C,KAAI,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;CACvB,KAAI,SAAS,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC;MACrC;KACD;AACH;IACE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CAC7B,IAAG,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;KACnB,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;KACjC,IAAI,SAAS,EAAE;MACd,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;CACtC,KAAI,MAAM;MACN,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;MAC7B;KACD;AACH;IACE,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE;CAC/C,IAAG,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;CACpD,IAAG,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CACpD,IAAG,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CACpD,IAAG,CAAC,CAAC;AACL;IACE,EAAE,CAAC,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,WAAW,CAAC;IAC7E,EAAE,CAAC,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,WAAW,CAAC;AAC/E;CACA;CACA,GAAE,EAAE,CAAC,sBAAsB,EAAE,CAAC;IAC5B;AACF;CACA;GACC,iBAAiB,EAAE,WAAW;CAC/B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,QAAQ,CAAC;AACf;CACA,GAAE,IAAI,EAAE,CAAC,YAAY,EAAE,EAAE;KACtB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;KAChC;CACH,GAAE,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;CAC5D,GAAE,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;IAClD;AACF;CACA;GACC,wBAAwB,EAAE,WAAW;CACtC,GAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;CAC5B;CACA,IAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;KACrB;IACD;AACF;CACA,EAAC,gBAAgB,EAAE,SAAS,KAAK,EAAE,YAAY,EAAE;IAC/C,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/E;AACF;CACA;CACA,EAAC,gBAAgB,EAAE,SAAS,KAAK,EAAE;CACnC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,OAAO,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC;IAC3F;AACF;CACA,EAAC,gBAAgB,EAAE,SAAS,KAAK,EAAE;CACnC,GAAE,OAAO,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;IAC5E;AACF;CACA,EAAC,eAAe,EAAE,SAAS,KAAK,EAAE;CAClC,GAAE,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;CAClC,GAAE,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;KAC1C,OAAO,IAAI,CAAC;KACZ;IACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C;CACF,EAAC,CAAC,CAAC;AACH;CACA;EACA,IAAI,WAAW,GAAG,eAAe,CAAC;CAClC,CAAA,YAAY,CAAC,SAAS,GAAG,WAAW,CAAC;AACrC;CACA,CAAA,IAAI,gBAAgB,GAAG,SAAS,CAAC,cAAc,CAAC;CAChD,CAAA,IAAI,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AACjC;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,SAAS,eAAe,CAAC,iBAAiB,EAAE,SAAS,EAAE;CACvD,EAAC,IAAI,KAAK,GAAG,EAAE,CAAC;AAChB;CACA,EAAC,IAAI,OAAO,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACvG;CACA,EAAC,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;GAC9C,IAAI,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;CACtE,EAAC,IAAI,GAAG,EAAE,WAAW,CAAC;AACtB;CACA,EAAC,IAAI,OAAO,KAAK,CAAC,EAAE;CACpB,GAAE,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;CAChD,GAAE,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;AACrE;CACA,GAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;CACtB,GAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;CAC5C,GAAE,MAAM;IACN,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;CACnC,GAAE,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;IACtD;GACD,IAAI,SAAS,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC3D;CACA,EAAC,GAAG;CACJ,GAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtB;IACE,EAAE,WAAW,CAAC;CAChB,GAAE,IAAI,WAAW,KAAK,EAAE,EAAE;KACvB,WAAW,GAAG,CAAC,CAAC;KAChB,EAAE,GAAG,CAAC;KACN,SAAS,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;KACrC;AACH;IACE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;CAChF,GAAE,QAAQ,GAAG,GAAG,MAAM,KAAK,GAAG,KAAK,MAAM,IAAI,WAAW,GAAG,cAAc,CAAC,EAAE;AAC5E;GACC,IAAI,QAAQ,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;CACjE,EAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACtB;GACC,OAAO,KAAK,CAAC;GACb;AACD;CACA,CAAA,IAAI,eAAe,GAAG;GACrB,QAAQ,EAAE,MAAM;AACjB;CACA;CACA,EAAC,KAAK,EAAE;CACR,GAAE,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,WAAW;IAC3C;CACF,EAAC,CAAC;AACF;CACA;CACA,CAAA,SAAS,oBAAoB,CAAC,KAAK,EAAE,YAAY,EAAE;CACnD,EAAC,OAAO,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,YAAY,CAAC;GACtE;AACD;CACA,CAAA,IAAI,iBAAiB,GAAG,UAAU,CAAC,MAAM,CAAC;GACzC,mBAAmB,EAAE,WAAW;CACjC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;CACxB,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;IACrB,IAAI,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;CACrC,GAAE,IAAI,YAAY,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC;CACvC,GAAE,SAAS,SAAS,CAAC,IAAI,EAAE;CAC3B,IAAG,OAAO,YAAY,GAAG,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,EAAE,CAAC;KACtE;CACH,GAAE,IAAI,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC;AAC/C;CACA;CACA,GAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;CACpC,GAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;CACpC,GAAE,EAAE,CAAC,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC3C;CACA,GAAE,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC;CAC/B,GAAE,IAAI,SAAS,KAAK,SAAS,EAAE;CAC/B,IAAG,KAAK,YAAY,GAAG,CAAC,EAAE,YAAY,GAAG,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE;MACtE,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;MAC1C,IAAI,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC;CAC/D,MAAK,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;OAC1B,SAAS,GAAG,IAAI,CAAC;CACtB,MAAK,MAAM;OACN;MACD;KACD;AACH;CACA,GAAE,IAAI,IAAI,CAAC,OAAO,IAAI,SAAS,EAAE;CACjC,IAAG,IAAI,cAAc,GAAG,EAAE,CAAC;AAC3B;CACA,IAAG,KAAK,YAAY,GAAG,CAAC,EAAE,YAAY,GAAG,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE;MACtE,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;MAC1C,IAAI,GAAG,GAAG;OACT,IAAI,CAAC,IAAI;CACd;CACA,OAAM,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,YAAY,GAAG,EAAE;OAC7E,IAAI,CAAC,KAAK;CACf,MAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB;CACA,KAAI,IAAI,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;CACjE,MAAK,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;CAC5C,OAAM,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACzB;AACN;OACK,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC;CACxC,MAAK,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;CACpD,OAAM,IAAI,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QACjC,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;CACtC;CACA,OAAM,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE;CACzG,QAAO,SAAS;SACT;QACD,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC;QACvB;OACD;MACD;AACJ;KACG,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,aAAa,EAAE;CAC1D,KAAI,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;OAC7B,IAAI,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;OAC1C,IAAI,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;CAC/C,MAAK,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;CACvC,MAAK,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;OAClC;CACL,KAAI,CAAC,CAAC;AACN;CACA,IAAG,MAAM;CACT,IAAG,KAAK,YAAY,GAAG,CAAC,EAAE,YAAY,GAAG,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE;MACtE,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;CAC9C,KAAI,IAAI,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;OAC5D,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC;CACxC,MAAK,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;QAC9C,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;CACtC;CACA,OAAM,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE;CACzG,QAAO,SAAS;SACT;AACP;CACA,OAAM,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;CAC3C,OAAM,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;AAC3C;CACA,OAAM,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,EAAE;CAC3B,QAAO,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;SACnD;QACD;OACD;MACD;KACD;AACH;CACA,GAAE,EAAE,CAAC,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC;CACtD,GAAE,EAAE,CAAC,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC;CACtD,GAAE,EAAE,CAAC,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3E;CACA;CACA,GAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAC9B;AACF;GACC,sBAAsB,EAAE,WAAW;CACpC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAClC,GAAE,IAAI,WAAW,GAAG,CAAC,CAAC;CACtB,GAAE,IAAI,WAAW,GAAG,EAAE,CAAC;AACvB;CACA,GAAE,EAAE,CAAC,GAAG,GAAG,oBAAoB,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;CACtD,GAAE,EAAE,CAAC,GAAG,GAAG,oBAAoB,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;AACtD;IACE,IAAI,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,EAAE;CACzB,IAAG,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,IAAI,EAAE;MACpC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;MACrD,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACzD,KAAI,MAAM;CACV,KAAI,EAAE,CAAC,GAAG,GAAG,WAAW,CAAC;CACzB,KAAI,EAAE,CAAC,GAAG,GAAG,WAAW,CAAC;MACrB;KACD;CACH,GAAE,IAAI,EAAE,CAAC,GAAG,KAAK,IAAI,EAAE;KACpB,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;KACrD;CACH,GAAE,IAAI,EAAE,CAAC,GAAG,KAAK,IAAI,EAAE;KACpB,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC;CACxB,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;CACjD,OAAM,WAAW,CAAC;KACf;CACH,GAAE,IAAI,EAAE,CAAC,UAAU,KAAK,IAAI,EAAE;CAC9B,IAAG,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE;CACnB,KAAI,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,GAAG,CAAC;CAC3B,KAAI,MAAM,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE;MACtB,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC5D,KAAI,MAAM;CACV,KAAI,EAAE,CAAC,UAAU,GAAG,WAAW,CAAC;MAC5B;KACD;IACD;AACF;GACC,UAAU,EAAE,WAAW;CACxB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAChC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;AACnC;IACE,IAAI,iBAAiB,GAAG;CAC1B,IAAG,GAAG,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC;CAC1C,IAAG,GAAG,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC;CAC1C,IAAG,CAAC;CACJ,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,GAAG,eAAe,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AAChE;CACA;CACA;IACE,EAAE,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9B,EAAE,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAChC;CACA,GAAE,IAAI,QAAQ,CAAC,OAAO,EAAE;CACxB,IAAG,OAAO,GAAG,CAAC,OAAO,CAAC;CACtB,IAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC;CACrB,IAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;CACnB,IAAG,MAAM;CACT,IAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC;CACrB,IAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;KAChB;IACD,IAAI,OAAO,EAAE;CACf,IAAG,KAAK,CAAC,OAAO,EAAE,CAAC;KAChB;IACD;AACF;GACC,oBAAoB,EAAE,WAAW;IAChC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AACvC;IACE,UAAU,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD;AACF;CACA;CACA,EAAC,gBAAgB,EAAE,SAAS,KAAK,EAAE,YAAY,EAAE;IAC/C,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/E;AACF;CACA,EAAC,eAAe,EAAE,SAAS,KAAK,EAAE;CAClC,GAAE,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;CAC9B,GAAE,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;KAC1C,OAAO,IAAI,CAAC;KACZ;IACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,kBAAkB,EAAE,SAAS,KAAK,EAAE;CACrC,GAAE,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;CACrC,GAAE,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1D;IACE,OAAO,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACvC;AACF;GACC,UAAU,EAAE,WAAW;CACxB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC;CACrB,GAAE,IAAI,MAAM,GAAG,CAAC,CAAC;AACjB;IACE,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3C;CACA,GAAE,IAAI,KAAK,KAAK,CAAC,EAAE;KAChB,KAAK,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;KAC7C,MAAM,GAAG,gBAAgB,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;KACxG;AACH;IACE,EAAE,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;CAChC,GAAE,EAAE,CAAC,YAAY,GAAG,MAAM,CAAC;IACzB,EAAE,CAAC,WAAW,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC;IAC/D;AACF;CACA,EAAC,gBAAgB,EAAE,SAAS,KAAK,EAAE;CACnC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,OAAO,GAAG,CAAC,CAAC;AAClB;IACE,KAAK,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACnC;IACE,IAAI,KAAK,GAAG,EAAE,CAAC,GAAG,IAAI,KAAK,GAAG,CAAC,EAAE;CACnC,IAAG,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC;KAC7E;CACH,GAAE,OAAO,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACtC;AACF;CACA,EAAC,gBAAgB,EAAE,SAAS,KAAK,EAAE;CACnC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,OAAO,GAAG,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC3C,OAAO,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC;CACtC,MAAK,CAAC;OACD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC;IAC/E;CACF,EAAC,CAAC,CAAC;AACH;CACA;EACA,IAAI,WAAW,GAAG,eAAe,CAAC;CAClC,CAAA,iBAAiB,CAAC,SAAS,GAAG,WAAW,CAAC;AAC1C;CACA,CAAA,IAAI,gBAAgB,GAAG,SAAS,CAAC,cAAc,CAAC;CAChD,CAAA,IAAI,uBAAuB,GAAG,SAAS,CAAC,qBAAqB,CAAC;CAC9D,CAAA,IAAI,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;AAC1C;CACA,CAAA,IAAI,eAAe,GAAG;GACrB,OAAO,EAAE,IAAI;AACd;CACA;GACC,OAAO,EAAE,IAAI;GACb,QAAQ,EAAE,WAAW;AACtB;CACA,EAAC,UAAU,EAAE;IACX,OAAO,EAAE,IAAI;IACb,KAAK,EAAE,iBAAiB;IACxB,SAAS,EAAE,CAAC;IACZ,UAAU,EAAE,EAAE;IACd,gBAAgB,EAAE,GAAG;IACrB;AACF;CACA,EAAC,SAAS,EAAE;IACV,QAAQ,EAAE,KAAK;IACf;AACF;CACA;CACA,EAAC,KAAK,EAAE;CACR;IACE,iBAAiB,EAAE,IAAI;AACzB;CACA;IACE,aAAa,EAAE,wBAAwB;AACzC;CACA;IACE,gBAAgB,EAAE,CAAC;AACrB;CACA;IACE,gBAAgB,EAAE,CAAC;AACrB;CACA,GAAE,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,MAAM;IACtC;AACF;CACA,EAAC,WAAW,EAAE;CACd;IACE,OAAO,EAAE,IAAI;AACf;CACA;IACE,QAAQ,EAAE,EAAE;AACd;CACA;CACA,GAAE,QAAQ,EAAE,SAAS,KAAK,EAAE;KACzB,OAAO,KAAK,CAAC;KACb;IACD;CACF,EAAC,CAAC;AACF;EACA,SAAS,qBAAqB,CAAC,IAAI,EAAE;CACrC,EAAC,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;AAC3B;GACC,IAAI,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE;CACvC,GAAE,OAAO,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC,gBAAgB,GAAG,CAAC,CAAC;IACjH;GACD,OAAO,CAAC,CAAC;GACT;AACD;CACA,CAAA,SAAS,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE;CAClD,EAAC,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;CAC/B,GAAE,OAAO;CACT,IAAG,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC;CACjD,IAAG,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,UAAU;CAC/B,IAAG,CAAC;IACF;AACF;CACA,EAAC,OAAO;IACN,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK;IAC/B,CAAC,EAAE,UAAU;CACf,GAAE,CAAC;GACF;AACD;EACA,SAAS,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;GACpD,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE;CACrC,GAAE,OAAO;CACT,IAAG,KAAK,EAAE,GAAG,IAAI,IAAI,GAAG,CAAC,CAAC;CAC1B,IAAG,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,CAAC,CAAC;CACxB,IAAG,CAAC;IACF,MAAM,IAAI,KAAK,GAAG,GAAG,IAAI,KAAK,GAAG,GAAG,EAAE;CACxC,GAAE,OAAO;CACT,IAAG,KAAK,EAAE,GAAG,GAAG,IAAI;KACjB,GAAG,EAAE,GAAG;CACX,IAAG,CAAC;IACF;AACF;CACA,EAAC,OAAO;IACN,KAAK,EAAE,GAAG;CACZ,GAAE,GAAG,EAAE,GAAG,GAAG,IAAI;CACjB,GAAE,CAAC;GACF;AACD;CACA;CACA;CACA;EACA,SAAS,kBAAkB,CAAC,KAAK,EAAE;AACnC;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;AACA;CACA,EAAC,IAAI,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACtE;CACA;CACA;GACC,IAAI,cAAc,GAAG;IACpB,CAAC,EAAE,CAAC;CACN,GAAE,CAAC,EAAE,KAAK,CAAC,KAAK;IACd,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,UAAU;CACpC,GAAE,CAAC;CACH,EAAC,IAAI,cAAc,GAAG,EAAE,CAAC;CACzB,EAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC;AAChC;GACC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;CAChC,EAAC,KAAK,CAAC,gBAAgB,GAAG,EAAE,CAAC;AAC7B;CACA,EAAC,IAAI,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;GAChD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;CAClC,GAAE,aAAa,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;CACnE,GAAE,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;AACvC;CACA;IACE,IAAI,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC1C,IAAI,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC;CACtD,GAAE,IAAI,OAAO,GAAG,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;CAC5E,GAAE,IAAI,OAAO,GAAG,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AAC7E;IACE,IAAI,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,CAAC,EAAE;CACxC,IAAG,cAAc,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;CACpC,IAAG,cAAc,CAAC,CAAC,GAAG,YAAY,CAAC;KAChC;AACH;IACE,IAAI,OAAO,CAAC,GAAG,GAAG,cAAc,CAAC,CAAC,EAAE;CACtC,IAAG,cAAc,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;CAClC,IAAG,cAAc,CAAC,CAAC,GAAG,YAAY,CAAC;KAChC;AACH;IACE,IAAI,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,CAAC,EAAE;CACxC,IAAG,cAAc,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;CACpC,IAAG,cAAc,CAAC,CAAC,GAAG,YAAY,CAAC;KAChC;AACH;IACE,IAAI,OAAO,CAAC,GAAG,GAAG,cAAc,CAAC,CAAC,EAAE;CACtC,IAAG,cAAc,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;CAClC,IAAG,cAAc,CAAC,CAAC,GAAG,YAAY,CAAC;KAChC;IACD;AACF;CACA,EAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;GACvE;AACD;EACA,SAAS,oBAAoB,CAAC,KAAK,EAAE;GACpC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,GAAG,EAAE;IACjC,OAAO,QAAQ,CAAC;CAClB,GAAE,MAAM,IAAI,KAAK,GAAG,GAAG,EAAE;IACvB,OAAO,MAAM,CAAC;IACd;AACF;GACC,OAAO,OAAO,CAAC;GACf;AACD;EACA,SAAS,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE;GAClD,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC;CACrC,EAAC,IAAI,CAAC,EAAE,IAAI,CAAC;AACb;CACA,EAAC,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;CAC9B,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACjD,IAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACrC,CAAC,IAAI,UAAU,CAAC;KAChB;CACH,GAAE,MAAM;CACR,GAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC;GACD;AACD;CACA,CAAA,SAAS,iCAAiC,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;GACrE,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,GAAG,EAAE;IAClC,QAAQ,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,MAAM,IAAI,KAAK,GAAG,GAAG,IAAI,KAAK,GAAG,EAAE,EAAE;CACvC,GAAE,QAAQ,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;IACzB;GACD;AACD;EACA,SAAS,eAAe,CAAC,KAAK,EAAE;CAChC,EAAC,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;CACrB,EAAC,IAAI,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC;CAC1B,EAAC,IAAI,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC;CACvC,EAAC,IAAI,kBAAkB,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;GACrD,IAAI,aAAa,GAAG,KAAK,CAAC,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;GACpG,IAAI,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AAC3D;CACA,EAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AACZ;CACA,EAAC,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;CAC1B,EAAC,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC;AAC7B;GACC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;CAC/D;CACA,GAAE,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,kBAAkB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;CACrD,GAAE,IAAI,kBAAkB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC,EAAE,aAAa,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AAChF;CACA;CACA,GAAE,IAAI,mBAAmB,GAAG,uBAAuB,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;CACxH,GAAE,GAAG,CAAC,SAAS,GAAG,mBAAmB,CAAC;AACtC;IACE,IAAI,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC1C,IAAI,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC9C,GAAG,CAAC,SAAS,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;CAC9C,GAAE,iCAAiC,CAAC,KAAK,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;CAC1F,GAAE,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC3E;CACF,EAAC,GAAG,CAAC,OAAO,EAAE,CAAC;GACd;AACD;EACA,SAAS,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE;CAC5D,EAAC,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;CACrB,EAAC,IAAI,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;CACtC,EAAC,IAAI,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;CACjD,EAAC,IAAI,SAAS,GAAG,uBAAuB,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;CACxE,EAAC,IAAI,SAAS,GAAG,uBAAuB,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;GAC3E,IAAI,aAAa,CAAC;AACnB;CACA,EAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,UAAU,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE;CAC7D,GAAE,OAAO;IACP;AACF;CACA,EAAC,GAAG,CAAC,IAAI,EAAE,CAAC;CACZ,EAAC,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC;CAC7B,EAAC,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;CAC3B,EAAC,IAAI,GAAG,CAAC,WAAW,EAAE;IACpB,GAAG,CAAC,WAAW,CAAC,YAAY,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IAC/C,GAAG,CAAC,cAAc,GAAG,YAAY,CAAC,gBAAgB,IAAI,GAAG,CAAC;IAC1D;AACF;CACA,EAAC,GAAG,CAAC,SAAS,EAAE,CAAC;GAChB,IAAI,QAAQ,EAAE;CACf;IACE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;CAChE,GAAE,MAAM;CACR;IACE,aAAa,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;CACpD,GAAE,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;AAC/C;CACA,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;KACpC,aAAa,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;CACrD,IAAG,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;KAC7C;IACD;CACF,EAAC,GAAG,CAAC,SAAS,EAAE,CAAC;CACjB,EAAC,GAAG,CAAC,MAAM,EAAE,CAAC;CACd,EAAC,GAAG,CAAC,OAAO,EAAE,CAAC;GACd;AACD;EACA,SAAS,YAAY,CAAC,KAAK,EAAE;GAC5B,OAAO,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;GAC7C;AACD;CACA,CAAA,IAAI,kBAAkB,GAAG,gBAAgB,CAAC,MAAM,CAAC;GAChD,aAAa,EAAE,WAAW;CAC3B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AAChB;CACA;CACA,GAAE,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC;CACzB,GAAE,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC;CAC3B,GAAE,EAAE,CAAC,UAAU,GAAG,qBAAqB,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;CACxD,GAAE,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;CACxC,GAAE,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;IACzD,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnE;AACF;GACC,mBAAmB,EAAE,WAAW;CACjC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;CACvB,GAAE,IAAI,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;CACrC,GAAE,IAAI,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACrC;CACA,GAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,YAAY,EAAE;CACtE,IAAG,IAAI,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE;MACzC,IAAI,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;AAClD;CACA,KAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,KAAK,EAAE;OACtD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;CAC7C,MAAK,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;CAClD,OAAM,OAAO;QACP;AACN;OACK,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;OAC3B,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;CAChC,MAAK,CAAC,CAAC;MACH;CACJ,IAAG,CAAC,CAAC;AACL;CACA,GAAE,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,MAAM,CAAC,iBAAiB,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;CACxD,GAAE,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,MAAM,CAAC,iBAAiB,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AACxD;CACA;CACA,GAAE,EAAE,CAAC,sBAAsB,EAAE,CAAC;IAC5B;AACF;CACA;GACC,iBAAiB,EAAE,WAAW;CAC/B,GAAE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACzE;AACF;GACC,oBAAoB,EAAE,WAAW;CAClC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AAChB;IACE,gBAAgB,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3D;CACA;CACA,GAAE,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW;CACvD,IAAG,IAAI,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;KAC/E,OAAO,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;CAC5C,IAAG,CAAC,CAAC;IACH;AACF;CACA,EAAC,gBAAgB,EAAE,SAAS,KAAK,EAAE,YAAY,EAAE;IAC/C,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/E;AACF;GACC,GAAG,EAAE,WAAW;CACjB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;AACxB;IACE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;CAChD,IAAG,kBAAkB,CAAC,EAAE,CAAC,CAAC;CAC1B,IAAG,MAAM;CACT,IAAG,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9B;IACD;AACF;CACA;CACA;CACA;CACA;GACC,aAAa,EAAE,SAAS,qBAAqB,EAAE,cAAc,EAAE,cAAc,EAAE;CAChF,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,mBAAmB,GAAG,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IACxE,IAAI,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;CACnG,GAAE,IAAI,kBAAkB,GAAG,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;CAC1E,GAAE,IAAI,qBAAqB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AACxH;CACA,GAAE,mBAAmB,GAAG,YAAY,CAAC,mBAAmB,CAAC,CAAC;CAC1D,GAAE,oBAAoB,GAAG,YAAY,CAAC,oBAAoB,CAAC,CAAC;CAC5D,GAAE,kBAAkB,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;CACxD,GAAE,qBAAqB,GAAG,YAAY,CAAC,qBAAqB,CAAC,CAAC;AAC9D;CACA,GAAE,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG;CAC3B,IAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,GAAG,CAAC,mBAAmB,GAAG,oBAAoB,IAAI,CAAC,CAAC;CACvF,IAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,GAAG,CAAC,kBAAkB,GAAG,qBAAqB,IAAI,CAAC,CAAC,CAAC,CAAC;CACzF,GAAE,EAAE,CAAC,cAAc,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;IACxG;AACF;GACC,cAAc,EAAE,SAAS,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE;CACpF,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,QAAQ,GAAG,EAAE,CAAC,KAAK,GAAG,aAAa,GAAG,EAAE,CAAC,WAAW,CAAC;IACzD,IAAI,OAAO,GAAG,YAAY,GAAG,EAAE,CAAC,WAAW,CAAC;IAC5C,IAAI,MAAM,GAAG,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC;CAC5C,GAAE,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,UAAU,IAAI,cAAc,GAAG,EAAE,CAAC,WAAW,CAAC;AAChF;IACE,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,GAAG,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;IAC9D,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC;IAC7E;AACF;CACA,EAAC,aAAa,EAAE,SAAS,KAAK,EAAE;CAChC,GAAE,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;CACzB,GAAE,IAAI,eAAe,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IACrD,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;IAClC,IAAI,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;AAC3C;CACA;IACE,IAAI,KAAK,GAAG,CAAC,KAAK,GAAG,eAAe,GAAG,UAAU,IAAI,GAAG,CAAC;AAC3D;CACA,GAAE,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;IAC7D;AACF;CACA,EAAC,6BAA6B,EAAE,SAAS,KAAK,EAAE;CAChD,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AAChB;CACA,GAAE,IAAI,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;KACnC,OAAO,GAAG,CAAC;KACX;AACH;CACA;CACA,GAAE,IAAI,aAAa,GAAG,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IACvD,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE;KAC7B,OAAO,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,IAAI,aAAa,CAAC;KACxC;IACD,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,IAAI,aAAa,CAAC;IACxC;AACF;CACA,EAAC,gBAAgB,EAAE,SAAS,KAAK,EAAE,kBAAkB,EAAE;CACvD,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,SAAS,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;CAC1D,GAAE,OAAO;CACT,IAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,kBAAkB,GAAG,EAAE,CAAC,OAAO;CAC3D,IAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,kBAAkB,GAAG,EAAE,CAAC,OAAO;CAC3D,IAAG,CAAC;IACF;AACF;CACA,EAAC,wBAAwB,EAAE,SAAS,KAAK,EAAE,KAAK,EAAE;CAClD,GAAE,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/E;AACF;CACA,EAAC,eAAe,EAAE,SAAS,KAAK,EAAE;CAClC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;CACnB,GAAE,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;AACnB;CACA,GAAE,OAAO,EAAE,CAAC,wBAAwB,CAAC,KAAK,IAAI,CAAC;CAC/C,IAAG,EAAE,CAAC,WAAW,GAAG,CAAC;KAClB,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG;KACxB,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG;KACxB,CAAC,CAAC,CAAC;IACJ;AACF;CACA;CACA;CACA;GACC,SAAS,EAAE,WAAW;CACvB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;CACnB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;CACxB,GAAE,IAAI,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;CACpC,GAAE,IAAI,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC;CACtC,GAAE,IAAI,SAAS,GAAG,gBAAgB,CAAC,aAAa,CAAC,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;CACpF,GAAE,IAAI,SAAS,GAAG,gBAAgB,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;CAC5E,GAAE,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC;AAC1B;CACA,GAAE,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;CAChC,IAAG,eAAe,CAAC,EAAE,CAAC,CAAC;KACpB;AACH;CACA,GAAE,IAAI,YAAY,CAAC,OAAO,EAAE;CAC5B,IAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,EAAE,KAAK,EAAE;CACnD,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;CACrB,MAAK,MAAM,GAAG,EAAE,CAAC,6BAA6B,CAAC,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;OACpE,cAAc,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;OAChD;CACL,KAAI,CAAC,CAAC;KACH;AACH;IACE,IAAI,aAAa,CAAC,OAAO,IAAI,SAAS,IAAI,SAAS,EAAE;CACvD,IAAG,GAAG,CAAC,IAAI,EAAE,CAAC;CACd,IAAG,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;CAC7B,IAAG,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC;CAC/B,IAAG,IAAI,GAAG,CAAC,WAAW,EAAE;CACxB,KAAI,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,UAAU,EAAE,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;CACxF,KAAI,GAAG,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC,aAAa,CAAC,gBAAgB,EAAE,YAAY,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,CAAC;MACrG;AACJ;KACG,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;MACtD,MAAM,GAAG,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;MAChF,QAAQ,GAAG,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;CAC9C,KAAI,GAAG,CAAC,SAAS,EAAE,CAAC;CACpB,KAAI,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;CACvC,KAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;CACvC,KAAI,GAAG,CAAC,MAAM,EAAE,CAAC;MACb;AACJ;CACA,IAAG,GAAG,CAAC,OAAO,EAAE,CAAC;KACd;IACD;AACF;CACA;CACA;CACA;GACC,WAAW,EAAE,WAAW;CACzB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;CACnB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;CACxB,GAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;AAC5B;CACA,GAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;CACzB,IAAG,OAAO;KACP;AACH;IACE,IAAI,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;CACxD,GAAE,IAAI,aAAa,GAAG,gBAAgB,CAAC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;CAClG,GAAE,IAAI,MAAM,EAAE,KAAK,CAAC;AACpB;CACA,GAAE,GAAG,CAAC,IAAI,EAAE,CAAC;CACb,GAAE,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;CAC7B,GAAE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;CACxC,GAAE,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;CACzB,GAAE,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC;CAC3B,GAAE,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC;AAC9B;CACA,GAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,EAAE,KAAK,EAAE;KAC/C,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;CACzC,KAAI,OAAO;MACP;AACJ;CACA,IAAG,MAAM,GAAG,EAAE,CAAC,6BAA6B,CAAC,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AACvE;CACA,IAAG,IAAI,QAAQ,CAAC,iBAAiB,EAAE;MAC/B,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;CACzC,KAAI,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC;AAC3C;MACI,GAAG,CAAC,QAAQ;CAChB,MAAK,CAAC,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,gBAAgB;OACtC,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC,gBAAgB;CAC5D,MAAK,KAAK,GAAG,QAAQ,CAAC,gBAAgB,GAAG,CAAC;OACrC,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,gBAAgB,GAAG,CAAC;CAClD,MAAK,CAAC;MACF;AACJ;CACA,IAAG,GAAG,CAAC,SAAS,GAAG,aAAa,CAAC;KAC9B,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;CACnC,IAAG,CAAC,CAAC;AACL;CACA,GAAE,GAAG,CAAC,OAAO,EAAE,CAAC;IACd;AACF;CACA;CACA;CACA;CACA,EAAC,UAAU,EAAE,SAAS,CAAC,IAAI;CAC3B,EAAC,CAAC,CAAC;AACH;CACA;EACA,IAAI,WAAW,GAAG,eAAe,CAAC;CAClC,CAAA,kBAAkB,CAAC,SAAS,GAAG,WAAW,CAAC;AAC3C;CACA,CAAA,IAAI,YAAY,GAAG,SAAS,CAAC,WAAW,CAAC;CACzC,CAAA,IAAI,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;CAC1C,CAAA,IAAI,gBAAgB,GAAG,SAAS,CAAC,cAAc,CAAC;AAChD;CACA;EACA,IAAI,WAAW,GAAG,MAAM,CAAC,gBAAgB,IAAI,CAAC,gBAAgB,CAAC;CAC/D,CAAA,IAAI,WAAW,GAAG,MAAM,CAAC,gBAAgB,IAAI,gBAAgB,CAAC;AAC9D;CACA,CAAA,IAAI,SAAS,GAAG;CAChB,EAAC,WAAW,EAAE;IACZ,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,IAAI;IACX;CACF,EAAC,MAAM,EAAE;IACP,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,EAAE;IACT;CACF,EAAC,MAAM,EAAE;IACP,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,EAAE;IACT;CACF,EAAC,IAAI,EAAE;IACL,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,EAAE;IACT;CACF,EAAC,GAAG,EAAE;IACJ,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,EAAE;IACT;CACF,EAAC,IAAI,EAAE;IACL,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,CAAC;IACR;CACF,EAAC,KAAK,EAAE;IACN,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,EAAE;IACT;CACF,EAAC,OAAO,EAAE;IACR,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,CAAC;IACR;CACF,EAAC,IAAI,EAAE;IACL,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,QAAQ;IACd;CACF,EAAC,CAAC;AACF;EACA,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACnC;CACA,CAAA,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;CACtB,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC;GACb;AACD;EACA,SAAS,WAAW,CAAC,KAAK,EAAE;CAC5B,EAAC,IAAI,IAAI,GAAG,EAAE,CAAC;CACf,EAAC,IAAI,GAAG,GAAG,EAAE,CAAC;CACd,EAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;AACnB;CACA,EAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACjD,GAAE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CAClB,GAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;CACnB,IAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACrB,IAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACf;IACD;AACF;GACC,OAAO,GAAG,CAAC;GACX;AACD;EACA,SAAS,MAAM,CAAC,OAAO,EAAE;CACzB,EAAC,OAAO,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;GACrE;AACD;EACA,SAAS,MAAM,CAAC,OAAO,EAAE;CACzB,EAAC,OAAO,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;GACrE;AACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;EACA,SAAS,gBAAgB,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE;GAC7D,IAAI,YAAY,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;CACtD,GAAE,OAAO;KACN,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;KACnB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;CACtB,IAAG,CAAC;IACF;AACF;CACA,EAAC,IAAI,KAAK,GAAG,EAAE,CAAC;CAChB,EAAC,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;GAClB,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AAC/B;CACA,EAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACtD,GAAE,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IACrB,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE;CAChC,IAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjB;IACD;AACF;CACA,EAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjB;CACA,EAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;IAC/C,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpB,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACtB,GAAE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB;CACA;IACE,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE;CAC1F,IAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KAC9C;IACD;AACF;GACC,OAAO,KAAK,CAAC;GACb;AACD;CACA;CACA,CAAA,SAAS,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE;CACnC,EAAC,IAAI,EAAE,GAAG,CAAC,CAAC;GACX,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;CAC3B,EAAC,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AACjB;GACC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;IAC3B,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACrB,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;CAC9B,GAAE,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AAClB;IACE,IAAI,CAAC,EAAE,EAAE;CACX;KACG,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;KAC1B,MAAM,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE;CAC9B,IAAG,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;KACb,MAAM,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE;CAC9B,IAAG,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;CAChB,IAAG,MAAM;KACN,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;KACxB;IACD;AACF;CACA;GACC,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;GAC1B;AACD;CACA;CACA;CACA;CACA;CACA;CACA;EACA,SAAS,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;GAC/C,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACvC;CACA;CACA,EAAC,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;CAClF,EAAC,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;AAClF;CACA,EAAC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;CACpC,EAAC,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;CACnD,EAAC,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;AAChD;CACA,EAAC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;GAC3B;AACD;CACA,CAAA,SAAS,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE;CACnC,EAAC,IAAI,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC;GAC7B,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;CAClC,EAAC,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;GAC5B,IAAI,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;CACvC,EAAC,IAAI,KAAK,GAAG,KAAK,CAAC;AACnB;CACA,EAAC,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;CACnC,GAAE,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACtB;AACF;CACA;GACC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;CACjC,GAAE,KAAK,GAAG,OAAO,MAAM,KAAK,QAAQ;CACpC,MAAK,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC;CACjC,MAAK,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxB;AACF;CACA,EAAC,IAAI,KAAK,KAAK,IAAI,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC;IACd;AACF;CACA;CACA;GACC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;CAC9C,GAAE,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACxB;CACA;IACE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;KAC/B,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KAC7B;IACD;AACF;GACC,OAAO,KAAK,CAAC;GACb;AACD;CACA,CAAA,SAAS,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE;CAC7B,EAAC,IAAI,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;IACnC,OAAO,IAAI,CAAC;IACZ;AACF;GACC,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;CAClC,EAAC,IAAI,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;CAC5D,EAAC,IAAI,KAAK,KAAK,IAAI,EAAE;IACnB,OAAO,KAAK,CAAC;IACb;AACF;CACA,EAAC,IAAI,OAAO,CAAC,KAAK,EAAE;CACpB,GAAE,KAAK,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACtD;AACF;GACC,OAAO,KAAK,CAAC;GACb;AACD;CACA;CACA;CACA;EACA,SAAS,yBAAyB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;CAChE,EAAC,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;CACzB,EAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC;AACzB;CACA,EAAC,KAAK,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;IACnD,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,GAAG,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,GAAG,WAAW,CAAC;AACzD;IACE,IAAI,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,QAAQ,EAAE;CACxF,IAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;KAChB;IACD;AACF;CACA,EAAC,OAAO,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;GACvB;AACD;CACA;CACA;CACA;EACA,SAAS,0BAA0B,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE;CACxE,EAAC,IAAI,CAAC,EAAE,IAAI,CAAC;AACb;GACC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE;CAC9D,GAAE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAChB,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE;KAClF,OAAO,IAAI,CAAC;KACZ;IACD;AACF;CACA,EAAC,OAAO,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;GACnD;AACD;EACA,SAAS,kBAAkB,CAAC,IAAI,EAAE;GACjC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;IACzE,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;CAClC,IAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;KAChB;IACD;GACD;AACD;CACA;CACA;CACA;CACA;CACA;CACA;EACA,SAAS,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;CAC7C,EAAC,IAAI,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC;CAC9B,EAAC,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;CAC7B,EAAC,IAAI,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAC7B,EAAC,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,IAAI,yBAAyB,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;CAC9F,EAAC,IAAI,QAAQ,GAAG,SAAS,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;CACzE,EAAC,IAAI,OAAO,GAAG,KAAK,KAAK,MAAM,GAAG,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC;CAC9D,EAAC,IAAI,KAAK,GAAG,GAAG,CAAC;CACjB,EAAC,IAAI,KAAK,GAAG,EAAE,CAAC;GACf,IAAI,IAAI,CAAC;AACV;CACA;GACC,IAAI,OAAO,EAAE;CACd,GAAE,KAAK,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACpD;AACF;CACA;CACA,EAAC,KAAK,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC;AAC1D;CACA;CACA,EAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,MAAM,GAAG,QAAQ,EAAE;CACxD,GAAE,MAAM,GAAG,GAAG,OAAO,GAAG,GAAG,GAAG,sCAAsC,GAAG,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC;IAC5F;AACF;GACC,KAAK,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE;CAC5E,GAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB;AACF;GACC,IAAI,IAAI,KAAK,GAAG,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;CACjD,GAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB;AACF;GACC,OAAO,KAAK,CAAC;GACb;AACD;CACA;CACA;CACA;CACA;CACA;CACA;EACA,SAAS,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE;CACzD,EAAC,IAAI,KAAK,GAAG,CAAC,CAAC;CACf,EAAC,IAAI,GAAG,GAAG,CAAC,CAAC;CACb,EAAC,IAAI,KAAK,EAAE,IAAI,CAAC;AACjB;GACC,IAAI,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE;CACrC,GAAE,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;CACxD,GAAE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;CAC1B,IAAG,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC;CACrB,IAAG,MAAM;KACN,KAAK,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;KACpE;CACH,GAAE,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;CACtE,GAAE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;KACvB,GAAG,GAAG,IAAI,CAAC;CACd,IAAG,MAAM;KACN,GAAG,GAAG,CAAC,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;KAChF;IACD;AACF;GACC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;GAC/D;AACD;EACA,SAAS,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE;CACrD,EAAC,IAAI,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC;CAC9B,EAAC,IAAI,KAAK,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;CACzD,EAAC,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;CAC1C,EAAC,IAAI,KAAK,EAAE,KAAK,CAAC;AAClB;GACC,KAAK,KAAK,GAAG,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE;CAC/E,GAAE,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;CACrB,GAAE,IAAI,KAAK,IAAI,CAAC,EAAE;KACf,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;KAC1B;IACD;GACD,OAAO,KAAK,CAAC;GACb;AACD;CACA,CAAA,SAAS,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE;CACvD,EAAC,IAAI,KAAK,GAAG,EAAE,CAAC;CAChB,EAAC,IAAI,GAAG,GAAG,EAAE,CAAC;CACd,EAAC,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;CAC1B,EAAC,IAAI,CAAC,EAAE,KAAK,CAAC;AACd;GACC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CAC5B,GAAE,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;CACpB,GAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjB;IACE,KAAK,CAAC,IAAI,CAAC;KACV,KAAK,EAAE,KAAK;KACZ,KAAK,EAAE,KAAK;CACf,IAAG,CAAC,CAAC;IACH;AACF;CACA;CACA;GACC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;GACxF;AACD;CACA,CAAA,IAAI,eAAe,GAAG;GACrB,QAAQ,EAAE,QAAQ;AACnB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACC,YAAY,EAAE,QAAQ;AACvB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACC,MAAM,EAAE,MAAM;AACf;GACC,QAAQ,EAAE,EAAE;CACb,EAAC,IAAI,EAAE;IACL,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,KAAK;IACZ,aAAa,EAAE,KAAK;IACpB,UAAU,EAAE,KAAK;IACjB,OAAO,EAAE,aAAa;IACtB,cAAc,EAAE,EAAE;IAClB;CACF,EAAC,KAAK,EAAE;IACN,QAAQ,EAAE,KAAK;AACjB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;IACE,MAAM,EAAE,MAAM;AAChB;CACA,GAAE,KAAK,EAAE;KACN,OAAO,EAAE,KAAK;KACd;IACD;CACF,EAAC,CAAC;AACF;CACA,CAAA,IAAI,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;GAClC,UAAU,EAAE,WAAW;CACxB,GAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;IACzB,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C;AACF;GACC,MAAM,EAAE,WAAW;CACpB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;CAC3B,GAAE,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;CACjD,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,QAAQ,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC7E;CACA;CACA,GAAE,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;CACxE,GAAE,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;CAChE,GAAE,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;AAChE;CACA;CACA;CACA;CACA;CACA,GAAE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AAC5D;CACA,GAAE,OAAO,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IACxD;AACF;CACA;CACA;CACA;CACA,EAAC,aAAa,EAAE,SAAS,QAAQ,EAAE;IACjC,IAAI,QAAQ,IAAI,QAAQ,CAAC,CAAC,KAAK,SAAS,EAAE;CAC5C,IAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC;KACtB;CACH,GAAE,OAAO,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/D;AACF;GACC,mBAAmB,EAAE,WAAW;CACjC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;CACvB,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC;CAC5B,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;IACzB,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC;CACxC,GAAE,IAAI,GAAG,GAAG,WAAW,CAAC;CACxB,GAAE,IAAI,GAAG,GAAG,WAAW,CAAC;CACxB,GAAE,IAAI,UAAU,GAAG,EAAE,CAAC;CACtB,GAAE,IAAI,QAAQ,GAAG,EAAE,CAAC;CACpB,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC;CAClB,GAAE,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC;CACrD,GAAE,IAAI,UAAU,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;AACnC;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACvD,IAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACtC;AACH;IACE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACxE,IAAG,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;CAClC,KAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC;CACA;MACI,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;CACrC,MAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACtB;CACA,MAAK,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;QAC9C,SAAS,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;CACrC,OAAM,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3B,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;QAC3B;CACN,MAAK,MAAM;OACN,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;OAC9B,IAAI,CAAC,WAAW,EAAE;QACjB,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvC,WAAW,GAAG,IAAI,CAAC;QACnB;OACD;CACL,KAAI,MAAM;CACV,KAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;MACjB;KACD;AACH;CACA,GAAE,IAAI,MAAM,CAAC,MAAM,EAAE;CACrB,IAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;CAClC,IAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;KAC/C;AACH;CACA,GAAE,IAAI,UAAU,CAAC,MAAM,EAAE;KACtB,UAAU,GAAG,IAAI,GAAG,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CAC1F,IAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;CACtC,IAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;KACvD;AACH;CACA,GAAE,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC;CAC1C,GAAE,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC;AAC1C;CACA;IACE,GAAG,GAAG,GAAG,KAAK,WAAW,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;IACrE,GAAG,GAAG,GAAG,KAAK,WAAW,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AACzE;CACA;CACA,GAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,GAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAClC;CACA;CACA,GAAE,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC;IACf,EAAE,CAAC,WAAW,GAAG;KAChB,IAAI,EAAE,UAAU;KAChB,QAAQ,EAAE,QAAQ;KAClB,MAAM,EAAE,MAAM;CACjB,IAAG,CAAC;IACF;AACF;GACC,UAAU,EAAE,WAAW;CACxB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;CACnB,GAAE,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;CACnB,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;CAC3B,GAAE,IAAI,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;CAC/B,GAAE,IAAI,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAC9B,GAAE,IAAI,UAAU,GAAG,EAAE,CAAC,WAAW,CAAC;CAClC,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,QAAQ,GAAG,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;CAC1C,GAAE,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;CAC/B,GAAE,IAAI,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;CAC1C,GAAE,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC;AACzB;CACA,GAAE,IAAI,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,IAAI,YAAY,KAAK,QAAQ,CAAC,EAAE;CAC7E,IAAG,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC;CAChC,IAAG,MAAM,IAAI,MAAM,KAAK,QAAQ,EAAE;CAClC,IAAG,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;CAClC,IAAG,MAAM;CACT,IAAG,UAAU,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;KAC9C;AACH;IACE,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,IAAI,UAAU,CAAC,MAAM,EAAE;CACvD,IAAG,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;KACpB,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KACxC;AACH;CACA;CACA,GAAE,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC;CAC1C,GAAE,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC;AAC1C;CACA;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CACvD,IAAG,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;KAC1B,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,EAAE;CAC7C,KAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;MACtB;KACD;AACH;CACA,GAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC;CACf,GAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC;AACf;CACA;CACA;CACA;IACE,EAAE,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,QAAQ;CAChD,MAAK,yBAAyB,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC;OACrE,0BAA0B,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACrF,GAAE,EAAE,CAAC,UAAU,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,KAAK,KAAK,MAAM,GAAG,SAAS;CAC5E,MAAK,kBAAkB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;CAClC,GAAE,EAAE,CAAC,MAAM,GAAG,gBAAgB,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;CAC5E,GAAE,EAAE,CAAC,QAAQ,GAAG,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AACpE;CACA,GAAE,IAAI,QAAQ,CAAC,OAAO,EAAE;CACxB,IAAG,KAAK,CAAC,OAAO,EAAE,CAAC;KAChB;AACH;IACE,OAAO,mBAAmB,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;IACrD;AACF;CACA,EAAC,gBAAgB,EAAE,SAAS,KAAK,EAAE,YAAY,EAAE;CACjD,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC;IAC1B,IAAI,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,IAAI,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC/B,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;CAClF,GAAE,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtD;CACA,GAAE,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;KAC9B,KAAK,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KAChC;CACH,GAAE,IAAI,QAAQ,CAAC,aAAa,EAAE;CAC9B,IAAG,OAAO,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;KACtE;CACH,GAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;KAC9B,OAAO,KAAK,CAAC;KACb;CACH,GAAE,OAAO,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAChF;AACF;CACA;CACA;CACA;CACA;GACC,kBAAkB,EAAE,SAAS,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;CAC1D,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC;CAC5B,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;IACzB,IAAI,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC;IAC1C,IAAI,WAAW,GAAG,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;CACtC,GAAE,IAAI,SAAS,GAAG,EAAE,CAAC,UAAU,CAAC;CAChC,GAAE,IAAI,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;CACvC,GAAE,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;CAC1B,GAAE,IAAI,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;CAC/B,GAAE,IAAI,KAAK,GAAG,SAAS,IAAI,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC;CAC7D,GAAE,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,WAAW,GAAG,WAAW,CAAC,CAAC;CACxF,GAAE,IAAI,cAAc,GAAG,KAAK,GAAG,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;CAC/D,GAAE,IAAI,SAAS,GAAG,SAAS,CAAC;KACzB,cAAc,CAAC,QAAQ;KACvB,cAAc,CAAC,YAAY;KAC3B,QAAQ,CAAC,QAAQ;KACjB,QAAQ,CAAC,YAAY;CACxB,IAAG,CAAC,CAAC;AACL;CACA,GAAE,OAAO,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;IAC1D;AACF;CACA,EAAC,oBAAoB,EAAE,SAAS,KAAK,EAAE;CACvC,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC;CAClB,GAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AACd;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;KAC/C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;KAC/D;AACH;IACE,OAAO,MAAM,CAAC;IACd;AACF;CACA;CACA;CACA;CACA,EAAC,iBAAiB,EAAE,SAAS,IAAI,EAAE;CACnC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC;CAC5B,GAAE,IAAI,GAAG,GAAG,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;CAC1D,GAAE,OAAO,EAAE,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACrE;AACF;GACC,gBAAgB,EAAE,SAAS,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE;CACxD,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,IAAI,GAAG,IAAI,CAAC;AAClB;IACE,IAAI,KAAK,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,EAAE;CACzD,IAAG,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC;KACpD;AACH;CACA,GAAE,IAAI,IAAI,KAAK,IAAI,EAAE;KAClB,IAAI,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;KACxB;AACH;CACA,GAAE,IAAI,IAAI,KAAK,IAAI,EAAE;CACrB,IAAG,OAAO,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;KAClC;IACD;AACF;CACA,EAAC,eAAe,EAAE,SAAS,KAAK,EAAE;CAClC,GAAE,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC5B,OAAO,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM;KACxC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;CAC7C,IAAG,IAAI,CAAC;IACN;AACF;CACA,EAAC,gBAAgB,EAAE,SAAS,KAAK,EAAE;CACnC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC;CAC5B,GAAE,IAAI,GAAG,GAAG,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;CACxE,GAAE,IAAI,IAAI,GAAG,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAC1D;CACA;IACE,OAAO,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC;AACF;CACA;CACA;CACA;CACA,EAAC,aAAa,EAAE,SAAS,KAAK,EAAE;CAChC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACnC,GAAE,IAAI,cAAc,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;IACrD,IAAI,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IACnG,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACpC,GAAE,IAAI,YAAY,GAAG,gBAAgB,CAAC,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAChG;CACA,GAAE,OAAO;KACN,CAAC,EAAE,CAAC,cAAc,GAAG,WAAW,KAAK,YAAY,GAAG,WAAW,CAAC;KAChE,CAAC,EAAE,CAAC,cAAc,GAAG,WAAW,KAAK,YAAY,GAAG,WAAW,CAAC;CACnE,IAAG,CAAC;IACF;AACF;CACA;CACA;CACA;CACA;CACA,EAAC,aAAa,EAAE,SAAS,KAAK,EAAE;IAC9B,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC;AACF;CACA;CACA;CACA;CACA,EAAC,gBAAgB,EAAE,SAAS,WAAW,EAAE;CACzC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACjC,GAAE,IAAI,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC;AAC/C;CACA;CACA,GAAE,IAAI,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,WAAW,CAAC;IACzE,IAAI,YAAY,GAAG,EAAE,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC,EAAE,mBAAmB,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;IACxH,IAAI,IAAI,GAAG,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;CAC5C,GAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACxF;CACA,GAAE,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE;KACtB,QAAQ,EAAE,CAAC;KACX;AACH;IACE,OAAO,QAAQ,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC;IACnC;CACF,EAAC,CAAC,CAAC;AACH;CACA;EACA,IAAI,WAAW,GAAG,eAAe,CAAC;CAClC,CAAA,UAAU,CAAC,SAAS,GAAG,WAAW,CAAC;AACnC;CACA,CAAA,IAAI,MAAM,GAAG;GACZ,QAAQ,EAAE,cAAc;GACxB,MAAM,EAAE,YAAY;GACpB,WAAW,EAAE,iBAAiB;GAC9B,YAAY,EAAE,kBAAkB;GAChC,IAAI,EAAE,UAAU;CACjB,EAAC,CAAC;AACF;CACA,CAAA,IAAI,OAAO,GAAG;GACb,QAAQ,EAAE,wBAAwB;GAClC,WAAW,EAAE,eAAe;GAC5B,MAAM,EAAE,WAAW;GACnB,MAAM,EAAE,QAAQ;GAChB,IAAI,EAAE,IAAI;GACV,GAAG,EAAE,OAAO;GACZ,IAAI,EAAE,IAAI;GACV,KAAK,EAAE,UAAU;GACjB,OAAO,EAAE,aAAa;GACtB,IAAI,EAAE,MAAM;CACb,EAAC,CAAC;AACF;EACA,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,MAAM,KAAK,UAAU,GAAG;GAC3D,GAAG,EAAE,QAAQ;AACd;GACC,OAAO,EAAE,WAAW;IACnB,OAAO,OAAO,CAAC;IACf;AACF;CACA,EAAC,KAAK,EAAE,SAAS,KAAK,EAAE,MAAM,EAAE;IAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;KAC5D,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CACjC,IAAG,MAAM,IAAI,EAAE,KAAK,YAAY,MAAM,CAAC,EAAE;CACzC,IAAG,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;KACtB;CACH,GAAE,OAAO,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;IAChD;AACF;CACA,EAAC,MAAM,EAAE,SAAS,IAAI,EAAE,MAAM,EAAE;IAC9B,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACnC;AACF;GACC,GAAG,EAAE,SAAS,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;CACnC,GAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;IAChD;AACF;GACC,IAAI,EAAE,SAAS,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE;CAChC,GAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3C;AACF;GACC,OAAO,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;CACxC,GAAE,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;CACtB,GAAE,IAAI,IAAI,KAAK,SAAS,EAAE;KACvB,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;KAC1C;IACD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;IACpC;AACF;CACA,EAAC,KAAK,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;CAC7B,GAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;IAC1C;AACF;CACA;AACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,OAAO,EAAE,SAAS,IAAI,EAAE;CACzB,GAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;IACpB;GACD,GAAG,EAAE,CAAC,CAAC;AACR;CACA,CAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE;CAC7B,EAAC,OAAO,EAAE;CACV,GAAE,MAAM,EAAE;KACP,SAAS,EAAE,IAAI;KACf;IACD;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,IAAI,OAAO,GAAG;CACd,EAAC,OAAO,EAAE,SAAS,MAAM,EAAE;CAC3B,GAAE,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;CAC1B,GAAE,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IACzB,IAAI,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,OAAO,GAAG,IAAI,IAAI,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;CACtD,GAAE,IAAI,MAAM,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC;IACvD,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;AAClC;IACE,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;CAC7C,IAAG,OAAO,CAAC,CAAC,GAAG,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC;CAClD,IAAG,CAAC;IACF;AACF;CACA,EAAC,QAAQ,EAAE,SAAS,MAAM,EAAE;CAC5B,GAAE,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC/B,IAAI,CAAC,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC;IACrC,IAAI,CAAC,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC;AACvC;CACA,GAAE,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;CACnC,IAAG,OAAO,SAAS,KAAK,EAAE,CAAC,EAAE;CAC7B,KAAI,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;CACvB,KAAI,CAAC;KACF;AACH;IACE,OAAO,SAAS,KAAK,EAAE;CACzB,IAAG,OAAO;MACN,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC;MAC3B,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC;CAC/B,KAAI,CAAC;CACL,IAAG,CAAC;IACF;CACF,EAAC,CAAC;AACF;CACA;CACA,CAAA,SAAS,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;GACrC,IAAI,KAAK,GAAG,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC;CAC7B,EAAC,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;GACtB,IAAI,MAAM,CAAC;AACZ;CACA,EAAC,IAAI,IAAI,KAAK,SAAS,EAAE;CACzB,GAAE,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;IAC/B;AACF;GACC,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,EAAE;IACpC,OAAO,KAAK,CAAC;IACb;AACF;CACA,EAAC,IAAI,IAAI,KAAK,IAAI,EAAE;IAClB,OAAO,QAAQ,CAAC;IAChB;AACF;GACC,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;CAC/B,EAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE;CACxD,GAAE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;CAC1C,IAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;KACxB;AACH;CACA,GAAE,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,IAAI,KAAK,EAAE;KACtD,OAAO,KAAK,CAAC;KACb;AACH;IACE,OAAO,MAAM,CAAC;IACd;AACF;CACA,EAAC,QAAQ,IAAI;CACb;CACA,EAAC,KAAK,QAAQ;IACZ,OAAO,OAAO,CAAC;CACjB,EAAC,KAAK,KAAK;IACT,OAAO,KAAK,CAAC;CACf,EAAC,KAAK,MAAM;IACV,OAAO,QAAQ,CAAC;CAClB;GACC,KAAK,QAAQ,CAAC;GACd,KAAK,OAAO,CAAC;CACd,EAAC,KAAK,KAAK;IACT,OAAO,IAAI,CAAC;CACd;GACC;IACC,OAAO,KAAK,CAAC;IACb;GACD;AACD;EACA,SAAS,qBAAqB,CAAC,MAAM,EAAE;GACtC,IAAI,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC;GACnC,IAAI,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC;CACpC,EAAC,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;CACxB,EAAC,IAAI,MAAM,GAAG,IAAI,CAAC;GAClB,IAAI,UAAU,CAAC;AAChB;CACA,EAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;IACnB,OAAO,IAAI,CAAC;IACZ;AACF;CACA;CACA;CACA;AACA;CACA,EAAC,IAAI,IAAI,KAAK,OAAO,EAAE;CACvB,GAAE,MAAM,GAAG,KAAK,CAAC,WAAW,KAAK,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC;CAC9E,GAAE,MAAM,IAAI,IAAI,KAAK,KAAK,EAAE;CAC5B,GAAE,MAAM,GAAG,KAAK,CAAC,QAAQ,KAAK,SAAS,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC;CACrE,GAAE,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE;CAC3C,GAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;CAC3B,GAAE,MAAM,IAAI,KAAK,CAAC,YAAY,EAAE;CAChC,GAAE,MAAM,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IAC9B;AACF;GACC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE;CAC9C,GAAE,IAAI,MAAM,CAAC,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,CAAC,KAAK,SAAS,EAAE;KACrD,OAAO,MAAM,CAAC;KACd;AACH;CACA,GAAE,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;CAClC,IAAG,UAAU,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;CACrC,IAAG,OAAO;CACV,KAAI,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI;CACjC,KAAI,CAAC,EAAE,UAAU,GAAG,IAAI,GAAG,MAAM;CACjC,KAAI,CAAC;KACF;IACD;AACF;GACC,OAAO,IAAI,CAAC;GACZ;AACD;EACA,SAAS,uBAAuB,CAAC,MAAM,EAAE;GACxC,IAAI,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC;CAC9B,EAAC,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;CAC7B,EAAC,IAAI,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;CAC7C,EAAC,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;CACxB,EAAC,IAAI,MAAM,GAAG,EAAE,CAAC;GAChB,IAAI,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC;AAClC;GACC,IAAI,CAAC,MAAM,EAAE;IACZ,OAAO,IAAI,CAAC;IACZ;AACF;CACA,EAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;CACvD,EAAC,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;GACpD,MAAM,GAAG,KAAK,CAAC,wBAAwB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;GAClD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;IAC5B,KAAK,GAAG,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,KAAK;CAC5C,MAAK,KAAK,CAAC,wBAAwB,CAAC,CAAC,EAAE,IAAI,KAAK,OAAO,GAAG,KAAK,GAAG,GAAG,CAAC;CACtE,MAAK,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;CAC9B,GAAE,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE;CAClC,IAAG,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;CACvB,IAAG,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;CACvB,IAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;KACnD;CACH,GAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB;GACD,OAAO,MAAM,CAAC;GACd;AACD;EACA,SAAS,eAAe,CAAC,MAAM,EAAE;GAChC,IAAI,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC;AACpC;CACA,EAAC,IAAI,KAAK,CAAC,wBAAwB,EAAE;CACrC,GAAE,OAAO,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACvC;CACF,EAAC,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC;GACrC;AACD;CACA,CAAA,SAAS,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE;CAClD,EAAC,IAAI,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;CAC7B,EAAC,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;CACxB,EAAC,IAAI,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;GACtB,IAAI,MAAM,CAAC;AACZ;GACC,IAAI,CAAC,SAAS,EAAE;IACf,OAAO,IAAI,CAAC;IACZ;AACF;CACA,EAAC,OAAO,IAAI,KAAK,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;CACxD,GAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;KACpB,OAAO,IAAI,CAAC;KACZ;AACH;CACA,GAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,CAAC,MAAM,EAAE;KACZ,OAAO,KAAK,CAAC;KACb;AACH;CACA,GAAE,IAAI,MAAM,CAAC,OAAO,EAAE;KACnB,OAAO,IAAI,CAAC;KACZ;AACH;CACA,GAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACrB,GAAE,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACnB;AACF;GACC,OAAO,KAAK,CAAC;GACb;AACD;EACA,SAAS,YAAY,CAAC,MAAM,EAAE;CAC9B,EAAC,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;CACxB,EAAC,IAAI,IAAI,GAAG,SAAS,CAAC;AACtB;CACA,EAAC,IAAI,IAAI,KAAK,KAAK,EAAE;IACnB,OAAO,IAAI,CAAC;IACZ;AACF;CACA,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;IACpB,IAAI,GAAG,UAAU,CAAC;IAClB;AACF;GACC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;GAC7B;AACD;EACA,SAAS,UAAU,CAAC,KAAK,EAAE;CAC3B,EAAC,OAAO,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;GAC5B;AACD;EACA,SAAS,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;GAClD,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAClB;CACA,EAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;CACrB,GAAE,OAAO;IACP;AACF;CACA;CACA,EAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;GACrC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;IAC1B,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD;AACF;GACC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE;IAClC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClB,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;CACpB,GAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;CAC/E,GAAE,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;CACjC,IAAG,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KAC/D;CACH,GAAE,OAAO;IACP;AACF;CACA;GACC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD;CACA;CACA,EAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;IAC9B,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC7D;GACD;AACD;CACA,CAAA,SAAS,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;CACxD,EAAC,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;CAC3B,EAAC,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;CAC1B,EAAC,IAAI,MAAM,GAAG,EAAE,CAAC;CACjB,EAAC,IAAI,MAAM,GAAG,EAAE,CAAC;CACjB,EAAC,IAAI,IAAI,GAAG,CAAC,CAAC;CACd,EAAC,IAAI,IAAI,GAAG,CAAC,CAAC;CACd,EAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC;AAChD;CACA,EAAC,GAAG,CAAC,SAAS,EAAE,CAAC;AACjB;CACA,EAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;CAC1C,GAAE,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC;IAClB,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;IACzB,EAAE,GAAG,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;CAC/B,GAAE,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;CACtB,GAAE,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;AACtB;IACE,IAAI,IAAI,IAAI,UAAU,KAAK,SAAS,IAAI,EAAE,EAAE;CAC9C,IAAG,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;CACtB,IAAG,IAAI,GAAG,KAAK,GAAG,UAAU,CAAC;KAC1B;AACH;CACA,GAAE,IAAI,EAAE,IAAI,EAAE,EAAE;KACb,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACvB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;CAC1B,IAAG,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE;KACxB,IAAI,CAAC,IAAI,EAAE;CACd,KAAI,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;CAC9C,KAAI,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;MAChB,MAAM,GAAG,EAAE,CAAC;MACZ,MAAM,GAAG,EAAE,CAAC;CAChB,KAAI,MAAM;MACN,IAAI,EAAE,EAAE;CACZ,MAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;OAChB;MACD,IAAI,EAAE,EAAE;CACZ,MAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;OAChB;MACD;KACD;IACD;AACF;CACA,EAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC3C;CACA,EAAC,GAAG,CAAC,SAAS,EAAE,CAAC;CACjB,EAAC,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;CACvB,EAAC,GAAG,CAAC,IAAI,EAAE,CAAC;GACX;AACD;CACA,CAAA,IAAI,aAAa,GAAG;GACnB,EAAE,EAAE,QAAQ;AACb;CACA,EAAC,mBAAmB,EAAE,SAAS,KAAK,EAAE,OAAO,EAAE;CAC/C,GAAE,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,MAAM,CAAC;CACjD,GAAE,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;CACpC,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC;AAC1B;IACE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,EAAE;KAC3B,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;CAClC,IAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;KAClB,MAAM,GAAG,IAAI,CAAC;AACjB;CACA,IAAG,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,YAAY,QAAQ,CAAC,IAAI,EAAE;CACvD,KAAI,MAAM,GAAG;CACb,MAAK,OAAO,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;OAClC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC;OAC9B,KAAK,EAAE,KAAK;OACZ,EAAE,EAAE,EAAE;CACX,MAAK,CAAC;MACF;AACJ;CACA,IAAG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;CACzB,IAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACrB;AACH;IACE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,EAAE;CAC9B,IAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;KACpB,IAAI,CAAC,MAAM,EAAE;CAChB,KAAI,SAAS;MACT;AACJ;CACA,IAAG,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;KACnD,MAAM,CAAC,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;KAC1C,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;KACrC;IACD;AACF;CACA,EAAC,kBAAkB,EAAE,SAAS,KAAK,EAAE;CACrC,GAAE,IAAI,QAAQ,GAAG,KAAK,CAAC,6BAA6B,EAAE,CAAC;CACvD,GAAE,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;CACtB,GAAE,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC;AAC/C;CACA,GAAE,KAAK,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;KAC1C,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAC9B;KACG,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;CAC/B,KAAI,SAAS;MACT;AACJ;CACA,IAAG,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;CAChB,IAAG,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC;CACnB,IAAG,MAAM,GAAG,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC;CAC/B,IAAG,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;KACrB,KAAK,GAAG,IAAI,CAAC,eAAe,IAAI,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC;AACrE;KACG,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE;CACzC,KAAI,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;CACpD,KAAI,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;MACnD,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;MACjC;KACD;IACD;CACF,EAAC,CAAC;AACF;CACA,CAAA,IAAI,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC;CACjD,CAAA,IAAI,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;CAC5B,CAAA,IAAI,gBAAgB,GAAG,SAAS,CAAC,cAAc,CAAC;AAChD;CACA,CAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE;CAC7B,EAAC,MAAM,EAAE;IACP,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,KAAK,EAAE,QAAQ;IACf,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,IAAI;AACd;CACA;CACA,GAAE,OAAO,EAAE,SAAS,CAAC,EAAE,UAAU,EAAE;CACnC,IAAG,IAAI,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC;CACvC,IAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;KACpB,IAAI,IAAI,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AACvC;CACA;KACG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;AAC/E;CACA;CACA,IAAG,EAAE,CAAC,MAAM,EAAE,CAAC;KACZ;AACH;IACE,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;AACf;CACA,GAAE,MAAM,EAAE;KACP,QAAQ,EAAE,EAAE;KACZ,OAAO,EAAE,EAAE;CACd;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,IAAG,cAAc,EAAE,SAAS,KAAK,EAAE;MAC/B,IAAI,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;MACnC,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;CAC7C,KAAI,IAAI,aAAa,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;AACvE;MACI,OAAO,KAAK,CAAC,sBAAsB,EAAE,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE;CAC7D,MAAK,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;AACzE;CACA,MAAK,OAAO;QACN,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK;CACtC,OAAM,SAAS,EAAE,KAAK,CAAC,eAAe;QAChC,MAAM,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;CACjD,OAAM,OAAO,EAAE,KAAK,CAAC,cAAc;CACnC,OAAM,QAAQ,EAAE,KAAK,CAAC,UAAU;CAChC,OAAM,cAAc,EAAE,KAAK,CAAC,gBAAgB;CAC5C,OAAM,QAAQ,EAAE,KAAK,CAAC,eAAe;CACrC,OAAM,SAAS,EAAE,KAAK,CAAC,WAAW;CAClC,OAAM,WAAW,EAAE,KAAK,CAAC,WAAW;CACpC,OAAM,UAAU,EAAE,KAAK,CAAC,UAAU;CAClC,OAAM,QAAQ,EAAE,KAAK,CAAC,QAAQ;AAC9B;CACA;CACA,OAAM,YAAY,EAAE,IAAI,CAAC,KAAK;CAC9B,OAAM,CAAC;OACF,EAAE,IAAI,CAAC,CAAC;MACT;KACD;IACD;AACF;CACA,EAAC,cAAc,EAAE,SAAS,KAAK,EAAE;IAC/B,IAAI,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;IACnC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC;AACtC;CACA,GAAE,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;AACnD;CACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;CACrD,IAAG,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;CAC7D,IAAG,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;CACvE,IAAG,YAAY,CAAC,KAAK,CAAC,eAAe,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;CACpE,IAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;CAC1B,KAAI,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;MACjE;KACD;AACH;CACA,GAAE,OAAO,IAAI,CAAC,SAAS,CAAC;IACtB;CACF,EAAC,CAAC,CAAC;AACH;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,SAAS,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE;GACzC,OAAO,SAAS,CAAC,aAAa,IAAI,SAAS,CAAC,QAAQ,GAAG,QAAQ;CAChE,GAAE,QAAQ;IACR,SAAS,CAAC,QAAQ,CAAC;GACpB;AACD;CACA;CACA;CACA;CACA,CAAA,IAAI,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;AACjC;CACA,EAAC,UAAU,EAAE,SAAS,MAAM,EAAE;CAC9B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAC/B;CACA;CACA,GAAE,EAAE,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB;CACA;CACA;CACA;CACA,GAAE,EAAE,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB;CACA;CACA,GAAE,EAAE,CAAC,YAAY,GAAG,KAAK,CAAC;IACxB;AACF;CACA;CACA;CACA;AACA;GACC,YAAY,EAAE,MAAM;GACpB,MAAM,EAAE,SAAS,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE;CAChD,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AAChB;CACA;CACA,GAAE,EAAE,CAAC,YAAY,EAAE,CAAC;AACpB;CACA;CACA,GAAE,EAAE,CAAC,QAAQ,GAAG,QAAQ,CAAC;CACzB,GAAE,EAAE,CAAC,SAAS,GAAG,SAAS,CAAC;CAC3B,GAAE,EAAE,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB;CACA;CACA,GAAE,EAAE,CAAC,mBAAmB,EAAE,CAAC;CAC3B,GAAE,EAAE,CAAC,aAAa,EAAE,CAAC;CACrB,GAAE,EAAE,CAAC,kBAAkB,EAAE,CAAC;CAC1B;CACA,GAAE,EAAE,CAAC,iBAAiB,EAAE,CAAC;CACzB,GAAE,EAAE,CAAC,WAAW,EAAE,CAAC;CACnB,GAAE,EAAE,CAAC,gBAAgB,EAAE,CAAC;AACxB;CACA;CACA,GAAE,EAAE,CAAC,SAAS,EAAE,CAAC;CACjB,GAAE,EAAE,CAAC,GAAG,EAAE,CAAC;CACX,GAAE,EAAE,CAAC,QAAQ,EAAE,CAAC;CAChB;CACA,GAAE,EAAE,CAAC,WAAW,EAAE,CAAC;AACnB;CACA,GAAE,OAAO,EAAE,CAAC,OAAO,CAAC;IAClB;GACD,WAAW,EAAE,MAAM;AACpB;CACA;AACA;GACC,mBAAmB,EAAE,MAAM;GAC3B,aAAa,EAAE,WAAW;CAC3B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB;CACA,GAAE,IAAI,EAAE,CAAC,YAAY,EAAE,EAAE;CACzB;CACA,IAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC;CAC1B,IAAG,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC;CACf,IAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;CACvB,IAAG,MAAM;CACT,IAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC;AAC5B;CACA;CACA,IAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;CACd,IAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;KACtB;AACH;CACA;CACA,GAAE,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC;CACrB,GAAE,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC;CACpB,GAAE,EAAE,CAAC,YAAY,GAAG,CAAC,CAAC;CACtB,GAAE,EAAE,CAAC,aAAa,GAAG,CAAC,CAAC;AACvB;CACA;IACE,EAAE,CAAC,OAAO,GAAG;KACZ,KAAK,EAAE,CAAC;KACR,MAAM,EAAE,CAAC;CACZ,IAAG,CAAC;IACF;GACD,kBAAkB,EAAE,MAAM;AAC3B;CACA;AACA;GACC,iBAAiB,EAAE,MAAM;GACzB,WAAW,EAAE,WAAW;CACzB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;IACxC,IAAI,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AACvF;CACA,GAAE,IAAI,SAAS,CAAC,MAAM,EAAE;KACrB,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE;CACnD,KAAI,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;CACjD,KAAI,CAAC,CAAC;KACH;AACH;CACA,GAAE,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;CAC1B,IAAG,WAAW,CAAC,OAAO,EAAE,CAAC;KACtB;AACH;CACA,GAAE,EAAE,CAAC,WAAW,GAAG,WAAW,CAAC;IAC7B;GACD,gBAAgB,EAAE,MAAM;AACzB;CACA;AACA;GACC,SAAS,EAAE,MAAM;GACjB,GAAG,EAAE,WAAW;CACjB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;CACxB,GAAE,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;CAC9B,GAAE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC7B;CACA,GAAE,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;AACnB;IACE,IAAI,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;CAC1D,GAAE,IAAI,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC;AAChC;CACA;IACE,IAAI,QAAQ,GAAG,EAAE,CAAC,cAAc,GAAG,EAAE,CAAC;AACxC;CACA,GAAE,IAAI,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;CAC3B,GAAE,IAAI,YAAY,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC;AACvC;IACE,IAAI,YAAY,EAAE;CACpB,IAAG,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC;KAC5B,OAAO,CAAC,MAAM,GAAG,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;CACrC,IAAG,MAAM;KACN,OAAO,CAAC,KAAK,GAAG,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;CACpC,IAAG,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC;KAC9B;AACH;CACA;IACE,IAAI,CAAC,OAAO,EAAE;CAChB,IAAG,EAAE,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;CAC7D,IAAG,OAAO;KACP;CACH,GAAE,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC;AAC9B;IACE,IAAI,YAAY,EAAE;CACpB;AACA;CACA;KACG,IAAI,UAAU,GAAG,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;CACxC,IAAG,IAAI,WAAW,GAAG,CAAC,CAAC;AACvB;CACA,IAAG,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC;CAC1B,IAAG,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC;AAC/B;CACA,IAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC,EAAE;MACtD,IAAI,QAAQ,GAAG,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;MAChD,IAAI,KAAK,GAAG,QAAQ,IAAI,QAAQ,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;AACnF;MACI,IAAI,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE;CACtG,MAAK,WAAW,IAAI,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC;CACjD,MAAK,UAAU,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;OACpD;AACL;CACA;CACA,KAAI,QAAQ,CAAC,CAAC,CAAC,GAAG;OACb,IAAI,EAAE,CAAC;OACP,GAAG,EAAE,CAAC;OACN,KAAK,EAAE,KAAK;OACZ,MAAM,EAAE,QAAQ;CACrB,MAAK,CAAC;AACN;CACA,KAAI,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC;CACnE,KAAI,CAAC,CAAC;AACN;CACA,IAAG,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC;AACjC;CACA,IAAG,MAAM;CACT,IAAG,IAAI,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC;KACjC,IAAI,YAAY,GAAG,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC;KACxC,IAAI,aAAa,GAAG,EAAE,CAAC,aAAa,GAAG,EAAE,CAAC;CAC7C,IAAG,IAAI,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC;CACtC,IAAG,IAAI,eAAe,GAAG,CAAC,CAAC;CAC3B,IAAG,IAAI,gBAAgB,GAAG,CAAC,CAAC;AAC5B;CACA,IAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC,EAAE;MACtD,IAAI,QAAQ,GAAG,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;MAChD,IAAI,SAAS,GAAG,QAAQ,IAAI,QAAQ,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;AACvF;CACA;CACA,KAAI,IAAI,CAAC,GAAG,CAAC,IAAI,gBAAgB,GAAG,QAAQ,GAAG,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE;CAC9E,MAAK,UAAU,IAAI,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC;CACvD,MAAK,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;CACxC,MAAK,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;OACrC,eAAe,GAAG,CAAC,CAAC;OACpB,gBAAgB,GAAG,CAAC,CAAC;OACrB;AACL;CACA;MACI,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;CAC3D,KAAI,gBAAgB,IAAI,QAAQ,GAAG,QAAQ,CAAC;AAC5C;CACA;CACA,KAAI,QAAQ,CAAC,CAAC,CAAC,GAAG;OACb,IAAI,EAAE,CAAC;OACP,GAAG,EAAE,CAAC;OACN,KAAK,EAAE,SAAS;OAChB,MAAM,EAAE,QAAQ;CACrB,MAAK,CAAC;CACN,KAAI,CAAC,CAAC;AACN;KACG,UAAU,IAAI,eAAe,CAAC;CACjC,IAAG,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;CACtC,IAAG,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;CACxC,IAAG,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC;KAC5B;AACH;CACA,GAAE,EAAE,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;CAC3B,GAAE,EAAE,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC3B;GACD,QAAQ,EAAE,MAAM;AACjB;CACA;GACC,YAAY,EAAE,WAAW;CAC1B,GAAE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC;IAC7E;AACF;CACA;GACC,IAAI,EAAE,WAAW;CAClB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;CACxB,GAAE,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;CAC9B,GAAE,IAAI,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC;CAC5C,GAAE,IAAI,YAAY,GAAG,cAAc,CAAC,YAAY,CAAC;IAC/C,IAAI,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;CACjD,GAAE,IAAI,YAAY,GAAG,EAAE,CAAC,MAAM,CAAC;CAC/B,GAAE,IAAI,aAAa,GAAG,EAAE,CAAC,aAAa,CAAC;CACvC,GAAE,IAAI,WAAW,GAAG,EAAE,CAAC,KAAK,CAAC;CAC7B,GAAE,IAAI,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC;AACjC;CACA,GAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;CACrB,IAAG,OAAO;KACP;AACH;CACA,GAAE,IAAI,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;CACtE,GAAE,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;CACnB,GAAE,IAAI,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC;IACvF,IAAI,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;CAC1D,GAAE,IAAI,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC;IAC9B,IAAI,MAAM,CAAC;AACb;CACA;IACE,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;CAC9C,GAAE,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC;CAC9B,GAAE,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;CACtB,GAAE,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC;CAC9B,GAAE,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;CAC5B,GAAE,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC;AAC9B;IACE,IAAI,QAAQ,GAAG,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;CAClD,GAAE,IAAI,QAAQ,GAAG,EAAE,CAAC,cAAc,CAAC;AACnC;CACA;IACE,IAAI,aAAa,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE;KAC9C,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC,EAAE;CACzC,KAAI,OAAO;MACP;AACJ;CACA;CACA,IAAG,GAAG,CAAC,IAAI,EAAE,CAAC;AACd;CACA,IAAG,IAAI,SAAS,GAAG,gBAAgB,CAAC,UAAU,CAAC,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;CACnF,IAAG,GAAG,CAAC,SAAS,GAAG,gBAAgB,CAAC,UAAU,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;CACxE,IAAG,GAAG,CAAC,OAAO,GAAG,gBAAgB,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;CAClF,IAAG,GAAG,CAAC,cAAc,GAAG,gBAAgB,CAAC,UAAU,CAAC,cAAc,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;CAClG,IAAG,GAAG,CAAC,QAAQ,GAAG,gBAAgB,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC;CACrF,IAAG,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;CAC7B,IAAG,GAAG,CAAC,WAAW,GAAG,gBAAgB,CAAC,UAAU,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;AAC5E;CACA,IAAG,IAAI,GAAG,CAAC,WAAW,EAAE;CACxB;CACA,KAAI,GAAG,CAAC,WAAW,CAAC,gBAAgB,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;MAC/E;AACJ;CACA,IAAG,IAAI,SAAS,IAAI,SAAS,CAAC,aAAa,EAAE;CAC7C;CACA;MACI,IAAI,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;CAC3C,KAAI,IAAI,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;MAC/C,IAAI,OAAO,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC;AACnC;CACA;MACI,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;CAC1G,KAAI,MAAM;CACV;CACA,KAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;CAC3E,KAAI,IAAI,SAAS,KAAK,CAAC,EAAE;CACzB,MAAK,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;OACzE;MACD;AACJ;CACA,IAAG,GAAG,CAAC,OAAO,EAAE,CAAC;CACjB,IAAG,CAAC;AACJ;IACE,IAAI,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE;CACvD,IAAG,IAAI,YAAY,GAAG,QAAQ,GAAG,CAAC,CAAC;CACnC,IAAG,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC,CAAC;CAC3D,IAAG,IAAI,OAAO,GAAG,CAAC,GAAG,YAAY,CAAC;AAClC;CACA,IAAG,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AACjD;CACA,IAAG,IAAI,UAAU,CAAC,MAAM,EAAE;CAC1B;CACA,KAAI,GAAG,CAAC,SAAS,EAAE,CAAC;CACpB,KAAI,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;MAClB,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;CAC/B,KAAI,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;CAC3D,KAAI,GAAG,CAAC,MAAM,EAAE,CAAC;MACb;CACJ,IAAG,CAAC;AACJ;CACA,GAAE,IAAI,eAAe,GAAG,SAAS,SAAS,EAAE,SAAS,EAAE;KACpD,QAAQ,IAAI,CAAC,KAAK;CACrB,IAAG,KAAK,OAAO;CACf,KAAI,OAAO,SAAS,CAAC,OAAO,CAAC;CAC7B,IAAG,KAAK,KAAK;CACb,KAAI,OAAO,SAAS,GAAG,SAAS,CAAC;KAC9B;MACC,OAAO,CAAC,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC,OAAO,IAAI,CAAC,CAAC;MACvD;CACJ,IAAG,CAAC;AACJ;CACA;CACA,GAAE,IAAI,YAAY,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC;IACrC,IAAI,YAAY,EAAE;CACpB,IAAG,MAAM,GAAG;CACZ,KAAI,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;MACxD,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,SAAS,CAAC,OAAO;MAC7B,IAAI,EAAE,CAAC;CACX,KAAI,CAAC;CACL,IAAG,MAAM;CACT,IAAG,MAAM,GAAG;MACR,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,SAAS,CAAC,OAAO;CAClC,KAAI,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,eAAe,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;MAC3D,IAAI,EAAE,CAAC;CACX,KAAI,CAAC;KACF;AACH;CACA,GAAE,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AAClE;IACE,IAAI,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC;CAChD,GAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC,EAAE;CACzD,IAAG,IAAI,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;KACvD,IAAI,KAAK,GAAG,QAAQ,IAAI,QAAQ,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;CACrD,IAAG,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;CACpB,IAAG,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AACpB;KACG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACxC;CACA;CACA;CACA;KACG,IAAI,YAAY,EAAE;MACjB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,SAAS,CAAC,OAAO,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE;CAC7E,MAAK,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,UAAU,CAAC;CAChC,MAAK,MAAM,CAAC,IAAI,EAAE,CAAC;OACd,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;OAC/E;CACL,KAAI,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,UAAU,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE;MAChE,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;CACxE,KAAI,MAAM,CAAC,IAAI,EAAE,CAAC;MACd,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,eAAe,CAAC,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;MAClF;AACJ;KACG,IAAI,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B;KACG,aAAa,CAAC,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;AACvC;KACG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;KAClE,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AACvB;CACA;KACG,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;AAC7C;KACG,IAAI,YAAY,EAAE;MACjB,MAAM,CAAC,CAAC,IAAI,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC;CAC1C,KAAI,MAAM;CACV,KAAI,MAAM,CAAC,CAAC,IAAI,UAAU,CAAC;MACvB;CACJ,IAAG,CAAC,CAAC;AACL;CACA,GAAE,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC/D;AACF;CACA;CACA;CACA;CACA,EAAC,gBAAgB,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE;CAClC,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;AACpB;IACE,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;CACtE;CACA,IAAG,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC;CAC1B,IAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;CACnC,KAAI,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACnB;CACA,KAAI,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE;CACnH;CACA,MAAK,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;OACzB;MACD;KACD;AACH;IACE,OAAO,IAAI,CAAC;IACZ;AACF;CACA;CACA;CACA;CACA;CACA;CACA,EAAC,WAAW,EAAE,SAAS,CAAC,EAAE;CAC1B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;CACxB,GAAE,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,KAAK,SAAS,GAAG,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC;IACnD,IAAI,WAAW,CAAC;AAClB;CACA,GAAE,IAAI,IAAI,KAAK,WAAW,EAAE;KACzB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;CACvC,KAAI,OAAO;MACP;CACJ,IAAG,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE;CAC/B,IAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;CACtB,KAAI,OAAO;MACP;CACJ,IAAG,MAAM;CACT,IAAG,OAAO;KACP;AACH;CACA;CACA,GAAE,WAAW,GAAG,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C;CACA,GAAE,IAAI,IAAI,KAAK,OAAO,EAAE;CACxB,IAAG,IAAI,WAAW,IAAI,IAAI,CAAC,OAAO,EAAE;CACpC;CACA,KAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;MAC7C;CACJ,IAAG,MAAM;KACN,IAAI,IAAI,CAAC,OAAO,IAAI,WAAW,KAAK,EAAE,CAAC,YAAY,EAAE;CACxD,KAAI,IAAI,EAAE,CAAC,YAAY,EAAE;CACzB,MAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;OACjD;CACL,KAAI,EAAE,CAAC,YAAY,GAAG,WAAW,CAAC;MAC9B;AACJ;CACA,IAAG,IAAI,IAAI,CAAC,OAAO,IAAI,WAAW,EAAE;CACpC;CACA,KAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;MAC7C;KACD;IACD;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,SAAS,wBAAwB,CAAC,KAAK,EAAE,UAAU,EAAE;CACrD,EAAC,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC;CACzB,GAAE,GAAG,EAAE,KAAK,CAAC,GAAG;IACd,OAAO,EAAE,UAAU;IACnB,KAAK,EAAE,KAAK;CACd,GAAE,CAAC,CAAC;AACJ;GACC,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;GAClD,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CACpC,EAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;GACtB;AACD;CACA,CAAA,IAAI,aAAa,GAAG;GACnB,EAAE,EAAE,QAAQ;AACb;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACC,QAAQ,EAAE,MAAM;AACjB;CACA,EAAC,UAAU,EAAE,SAAS,KAAK,EAAE;IAC3B,IAAI,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;AACxC;IACE,IAAI,UAAU,EAAE;CAClB,IAAG,wBAAwB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;KAC5C;IACD;AACF;CACA,EAAC,YAAY,EAAE,SAAS,KAAK,EAAE;IAC7B,IAAI,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;CACxC,GAAE,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAC5B;IACE,IAAI,UAAU,EAAE;CAClB,IAAG,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9D;KACG,IAAI,MAAM,EAAE;MACX,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;CACtD,KAAI,MAAM,CAAC,OAAO,GAAG,UAAU,CAAC;CAChC,KAAI,MAAM;CACV,KAAI,wBAAwB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;MAC5C;KACD,MAAM,IAAI,MAAM,EAAE;KAClB,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CACzC,IAAG,OAAO,KAAK,CAAC,MAAM,CAAC;KACpB;IACD;AACF;CACA,EAAC,UAAU,EAAE,SAAS,KAAK,EAAE,CAAC,EAAE;CAChC,GAAE,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC1B,IAAI,MAAM,EAAE;CACd,IAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;KACtB;IACD;CACF,EAAC,CAAC;AACF;CACA,CAAA,IAAI,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;AAC5B;CACA,CAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE;CAC7B,EAAC,KAAK,EAAE;IACN,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,KAAK;IACf,IAAI,EAAE,EAAE;IACR,MAAM,EAAE,IAAI;IACZ;CACF,EAAC,CAAC,CAAC;AACH;CACA;CACA;CACA;CACA,CAAA,IAAI,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC;CAChC,EAAC,UAAU,EAAE,SAAS,MAAM,EAAE;CAC9B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAC/B;CACA;CACA,GAAE,EAAE,CAAC,cAAc,GAAG,EAAE,CAAC;IACvB;AACF;CACA;AACA;GACC,YAAY,EAAE,MAAM;GACpB,MAAM,EAAE,SAAS,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE;CAChD,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AAChB;CACA;CACA,GAAE,EAAE,CAAC,YAAY,EAAE,CAAC;AACpB;CACA;CACA,GAAE,EAAE,CAAC,QAAQ,GAAG,QAAQ,CAAC;CACzB,GAAE,EAAE,CAAC,SAAS,GAAG,SAAS,CAAC;CAC3B,GAAE,EAAE,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB;CACA;CACA,GAAE,EAAE,CAAC,mBAAmB,EAAE,CAAC;CAC3B,GAAE,EAAE,CAAC,aAAa,EAAE,CAAC;CACrB,GAAE,EAAE,CAAC,kBAAkB,EAAE,CAAC;CAC1B;CACA,GAAE,EAAE,CAAC,iBAAiB,EAAE,CAAC;CACzB,GAAE,EAAE,CAAC,WAAW,EAAE,CAAC;CACnB,GAAE,EAAE,CAAC,gBAAgB,EAAE,CAAC;AACxB;CACA;CACA,GAAE,EAAE,CAAC,SAAS,EAAE,CAAC;CACjB,GAAE,EAAE,CAAC,GAAG,EAAE,CAAC;CACX,GAAE,EAAE,CAAC,QAAQ,EAAE,CAAC;CAChB;CACA,GAAE,EAAE,CAAC,WAAW,EAAE,CAAC;AACnB;CACA,GAAE,OAAO,EAAE,CAAC,OAAO,CAAC;AACpB;IACE;GACD,WAAW,EAAE,MAAM;AACpB;CACA;AACA;GACC,mBAAmB,EAAE,MAAM;GAC3B,aAAa,EAAE,WAAW;CAC3B,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB;CACA,GAAE,IAAI,EAAE,CAAC,YAAY,EAAE,EAAE;CACzB;CACA,IAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC;CAC1B,IAAG,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC;CACf,IAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;CACvB,IAAG,MAAM;CACT,IAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC;AAC5B;CACA;CACA,IAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;CACd,IAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;KACtB;AACH;CACA;CACA,GAAE,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC;CACrB,GAAE,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC;CACpB,GAAE,EAAE,CAAC,YAAY,GAAG,CAAC,CAAC;CACtB,GAAE,EAAE,CAAC,aAAa,GAAG,CAAC,CAAC;AACvB;CACA;IACE,EAAE,CAAC,OAAO,GAAG;KACZ,KAAK,EAAE,CAAC;KACR,MAAM,EAAE,CAAC;CACZ,IAAG,CAAC;IACF;GACD,kBAAkB,EAAE,MAAM;AAC3B;CACA;AACA;GACC,iBAAiB,EAAE,MAAM;GACzB,WAAW,EAAE,MAAM;GACnB,gBAAgB,EAAE,MAAM;AACzB;CACA;AACA;GACC,SAAS,EAAE,MAAM;GACjB,GAAG,EAAE,WAAW;CACjB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;IACtB,IAAI,OAAO,GAAG,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC;CAChC,GAAE,IAAI,YAAY,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC;CACvC,GAAE,IAAI,SAAS,EAAE,QAAQ,CAAC;AAC1B;CACA,GAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;CACrB,IAAG,EAAE,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;CAC7D,IAAG,OAAO;KACP;AACH;CACA,GAAE,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAChE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AAC1F;CACA,GAAE,EAAE,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG,YAAY,GAAG,EAAE,CAAC,QAAQ,GAAG,QAAQ,CAAC;CACnE,GAAE,EAAE,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,EAAE,CAAC,SAAS,CAAC;IACpE;GACD,QAAQ,EAAE,MAAM;AACjB;CACA;GACC,YAAY,EAAE,WAAW;IACxB,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;IAChC,OAAO,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,QAAQ,CAAC;IACzC;AACF;CACA;GACC,IAAI,EAAE,WAAW;CAClB,GAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CAChB,GAAE,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;CACnB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;AACxB;CACA,GAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;CACrB,IAAG,OAAO;KACP;AACH;IACE,IAAI,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;CACpD,GAAE,IAAI,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;IACrC,IAAI,MAAM,GAAG,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;CAC7C,GAAE,IAAI,QAAQ,GAAG,CAAC,CAAC;CACnB,GAAE,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;CACnB,GAAE,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;CACrB,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;CACzB,GAAE,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;CACvB,GAAE,IAAI,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;AAC/B;CACA,GAAE,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;CAClG,GAAE,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC7B;CACA;CACA,GAAE,IAAI,EAAE,CAAC,YAAY,EAAE,EAAE;KACtB,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC;CACxC,IAAG,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;CACzB,IAAG,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC;CAC3B,IAAG,MAAM;CACT,IAAG,MAAM,GAAG,IAAI,CAAC,QAAQ,KAAK,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;KACnE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;CACvC,IAAG,QAAQ,GAAG,MAAM,GAAG,GAAG,CAAC;CAC3B,IAAG,QAAQ,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;KAC7D;AACH;CACA,GAAE,GAAG,CAAC,IAAI,EAAE,CAAC;IACX,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC,GAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;CACvB,GAAE,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC;CAC3B,GAAE,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC;AAC9B;CACA,GAAE,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;CACvB,GAAE,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;CAC/B,IAAG,IAAI,CAAC,GAAG,CAAC,CAAC;CACb,IAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;CACzC,KAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;MACtC,CAAC,IAAI,UAAU,CAAC;MAChB;CACJ,IAAG,MAAM;CACT,IAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;KACnC;AACH;CACA,GAAE,GAAG,CAAC,OAAO,EAAE,CAAC;IACd;CACF,EAAC,CAAC,CAAC;AACH;CACA,CAAA,SAAS,4BAA4B,CAAC,KAAK,EAAE,SAAS,EAAE;CACxD,EAAC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC;CACvB,GAAE,GAAG,EAAE,KAAK,CAAC,GAAG;IACd,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,KAAK;CACd,GAAE,CAAC,CAAC;AACJ;GACC,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;GAChD,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;CACnC,EAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;GACzB;AACD;CACA,CAAA,IAAI,YAAY,GAAG;GAClB,EAAE,EAAE,OAAO;AACZ;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACC,QAAQ,EAAE,KAAK;AAChB;CACA,EAAC,UAAU,EAAE,SAAS,KAAK,EAAE;IAC3B,IAAI,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AACtC;IACE,IAAI,SAAS,EAAE;CACjB,IAAG,4BAA4B,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;KAC/C;IACD;AACF;CACA,EAAC,YAAY,EAAE,SAAS,KAAK,EAAE;IAC7B,IAAI,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;CACtC,GAAE,IAAI,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;AACpC;IACE,IAAI,SAAS,EAAE;CACjB,IAAG,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5D;KACG,IAAI,UAAU,EAAE;MACf,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;CACzD,KAAI,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;CACnC,KAAI,MAAM;CACV,KAAI,4BAA4B,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;MAC/C;KACD,MAAM,IAAI,UAAU,EAAE;KACtB,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;CAC7C,IAAG,OAAO,KAAK,CAAC,UAAU,CAAC;KACxB;IACD;CACF,EAAC,CAAC;AACF;EACA,IAAI,OAAO,GAAG,EAAE,CAAC;EACjB,IAAI,MAAM,GAAG,aAAa,CAAC;EAC3B,IAAI,MAAM,GAAG,aAAa,CAAC;EAC3B,IAAI,KAAK,GAAG,YAAY,CAAC;CACzB,CAAA,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;CACxB,CAAA,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;CACxB,CAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;AACtB;CACA;CACA;CACA;AACA;AACA;CACA,CAAA,eAAe,CAAC,OAAO,GAAG,SAAS,CAAC;AACpC;CACA;CACA,CAAA,YAAY,EAAE,CAAC;AACf;CACA,CAAA,eAAe,CAAC,SAAS,GAAG,aAAa,CAAC;CAC1C,CAAA,eAAe,CAAC,SAAS,GAAG,cAAc,CAAC;CAC3C,CAAA,eAAe,CAAC,gBAAgB,GAAG,eAAe,CAAC;CACnD,CAAA,eAAe,CAAC,WAAW,GAAG,WAAW,CAAC;CAC1C,CAAA,eAAe,CAAC,iBAAiB,GAAG,sBAAsB,CAAC;CAC3D,CAAA,eAAe,CAAC,QAAQ,GAAG,aAAa,CAAC;CACzC,CAAA,eAAe,CAAC,OAAO,GAAG,YAAY,CAAC;CACvC,CAAA,eAAe,CAAC,QAAQ,GAAG,QAAQ,CAAC;CACpC,CAAA,eAAe,CAAC,WAAW,GAAG,gBAAgB,CAAC;CAC/C,CAAA,eAAe,CAAC,OAAO,GAAG,YAAY,CAAC;CACvC,CAAA,eAAe,CAAC,QAAQ,GAAG,QAAQ,CAAC;CACpC,CAAA,eAAe,CAAC,OAAO,GAAG,YAAY,CAAC;CACvC,CAAA,eAAe,CAAC,KAAK,GAAG,UAAU,CAAC;CACnC,CAAA,eAAe,CAAC,YAAY,GAAG,iBAAiB,CAAC;CACjD,CAAA,eAAe,CAAC,KAAK,GAAG,UAAU,CAAC;CACnC,CAAA,eAAe,CAAC,OAAO,GAAG,YAAY,CAAC;AACvC;CACA;AACA;EACA,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,IAAI,EAAE;CAC3D,EAAC,eAAe,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;CAC9E,EAAC,CAAC,CAAC;AACH;CACA;AACA;AACA;CACA;AACA;CACA,CAAA,KAAK,IAAI,CAAC,IAAI,OAAO,EAAE;CACvB,EAAC,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;IAC9B,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C;GACD;AACD;CACA,CAAA,eAAe,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;AACtC;EACA,IAAI,GAAG,GAAG,eAAe,CAAC;CAC1B,CAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;CACnC,EAAC,MAAM,CAAC,KAAK,GAAG,eAAe,CAAC;GAC/B;AACD;CACA;AACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,eAAe,CAAC,KAAK,GAAG,eAAe,CAAC;AACxC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;EACA,eAAe,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;AACjD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;EACA,eAAe,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;AAC/C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,eAAe,CAAC,aAAa,GAAG,eAAe,CAAC,OAAO,CAAC;AACxD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;EACA,eAAe,CAAC,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAChE;CACA;CACA;CACA;CACA;CACA;CACA;CACA;EACA,eAAe,CAAC,aAAa,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC;AAC/D;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,eAAe,CAAC,aAAa,GAAG,eAAe,CAAC,OAAO,CAAC;AACxD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAA,eAAe,CAAC,eAAe,GAAG,gBAAgB,CAAC;AACnD;CACA;CACA;CACA;CACA;CACA;CACA;EACA,eAAe,CAAC,OAAO,CAAC,IAAI;GAC3B;CACD,GAAE,KAAK;CACP,GAAE,QAAQ;CACV,GAAE,UAAU;CACZ,GAAE,MAAM;CACR,GAAE,WAAW;CACb,GAAE,OAAO;CACT,GAAE,SAAS;IACT;GACD,SAAS,KAAK,EAAE;IACf,eAAe,CAAC,KAAK,CAAC,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;CAC9C,IAAG,OAAO,IAAI,eAAe,CAAC,GAAG,EAAE,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,EAAE;CAC5E,KAAI,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;MACpD,CAAC,CAAC,CAAC;CACP,IAAG,CAAC;IACF;CACF,EAAC,CAAC;AACF;CACA,CAAA,OAAO,GAAG,CAAC;AACX;CACA,EAAC,EAAE,EAAA;;;;;;CCzyfH;CACAG,KAAK,CAACC,WAAW,CAACC,aAAa,CAACC,SAAS,CAACC,uBAAuB,GAAG,UAClEC,YAAY,EACZzB,KAAK,EACL0B,OAAO,EACP;CACA,EAAA,IAAMC,KAAK,GAAG,IAAI,CAACA,KAAK,CAAA;CACxB,EAAA,IAAMC,KAAK,GAAG,IAAI,CAACC,cAAc,EAAE,CAAA;CACnC,EAAA,IAAMC,QAAQ,GAAGH,KAAK,CAACI,IAAI,CAACD,QAAQ,CAAA;GACpC,IAAI,CAACA,QAAQ,EAAE;CACb,IAAA,MAAM,IAAIpF,KAAK,CAAuBoF,qBAAAA,GAAAA,QAAU,CAAC,CAAA;CACnD,GAAA;GACAF,KAAK,CAACI,WAAW,GAAGC,eAAe,CAAA;GACnC,IAAMvC,GAAG,GAAGoC,QAAQ,CAACL,YAAY,CAAC,CAACM,IAAI,CAAC/B,KAAK,CAAC,CAAA;CAC9C,EAAA,IAAMM,KAAK,GAAGsB,KAAK,CAACI,WAAW,CAACtC,GAAG,CAAC,CAAA;CACpC,EAAA,IAAMwC,KAAK,GACT5B,KAAK,CAAC4B,KAAK,KAAKC,SAAS,GACrB,CAAC,GACD7B,KAAK,CAAC8B,GAAG,IAAI,CAAC,IAAI9B,KAAK,CAAC+B,GAAG,IAAI,CAAC,GAC9B/B,KAAK,CAAC+B,GAAG,GACT/B,KAAK,CAAC8B,GAAG,CAAA;CACjB,EAAA,IAAME,MAAM,GACVhC,KAAK,CAAC4B,KAAK,KAAKC,SAAS,GACrB7B,KAAK,CAACiC,GAAG,GACTjC,KAAK,CAAC8B,GAAG,IAAI,CAAC,IAAI9B,KAAK,CAAC+B,GAAG,IAAI,CAAC,GAC9B/B,KAAK,CAAC8B,GAAG,GAAG9B,KAAK,CAAC+B,GAAG,GACrB/B,KAAK,CAAC+B,GAAG,GAAG/B,KAAK,CAAC8B,GAAG,CAAA;CAC7B,EAAA,IAAMI,IAAI,GAAGZ,KAAK,CAACa,gBAAgB,CAACP,KAAK,CAAC,CAAA;GAC1C,IAAMQ,IAAI,GAAGd,KAAK,CAACa,gBAAgB,CAACP,KAAK,GAAGI,MAAM,CAAC,CAAA;CACnD,EAAA,IAAMK,IAAI,GAAGD,IAAI,GAAGF,IAAI,CAAA;GAExB,OAAO;CACLG,IAAAA,IAAI,EAAEA,IAAI;CACVH,IAAAA,IAAI,EAAEA,IAAI;CACVE,IAAAA,IAAI,EAAEA,IAAI;CACVE,IAAAA,MAAM,EAAEF,IAAI,GAAGC,IAAI,GAAG,CAAA;IACvB,CAAA;CACH,CAAC,CAAA;CAEDvB,KAAK,CAACC,WAAW,CAACC,aAAa,CAACC,SAAS,CAACsB,uBAAuB,GAAG,UAClEpB,YAAY,EACZzB,KAAK,EACL8C,KAAK,EACLpB,OAAO,EACP;CACA,EAAA,IAAMqB,SAAS,GAAGrB,OAAO,CAACsB,YAAY,CAAA;CACtC,EAAA,IAAML,IAAI,GAAGI,SAAS,GAAGrB,OAAO,CAACuB,kBAAkB,CAAA;CACnD,EAAA,IAAML,MAAM,GAAGE,KAAK,CAACZ,KAAK,IAAIT,YAAY,GAAGsB,SAAS,GAAGA,SAAS,GAAG,CAAC,CAAC,CAAA;GACvE,OAAO;CACLP,IAAAA,IAAI,EAAEI,MAAM,GAAGD,IAAI,GAAG,CAAC;CACvBD,IAAAA,IAAI,EAAEE,MAAM,GAAGD,IAAI,GAAG,CAAC;CACvBC,IAAAA,MAAM,EAANA,MAAM;CACND,IAAAA,IAAI,EAAJA,IAAAA;IACD,CAAA;CACH,CAAC,CAAA;CAEDvB,KAAK,CAACC,WAAW,CAACC,aAAa,CAACC,SAAS,CAAC2B,IAAI,GAAG,YAAY;GAC3D,IAAMC,KAAK,GAAG,IAAI,CAACC,OAAO,EAAE,CAACrB,IAAI,CAAA;CACjC,EAAA,IAAMsB,GAAG,GAAGF,KAAK,CAACb,MAAM,CAAA;CACxB,EAAA,IAAMgB,OAAO,GAAG,IAAI,CAACC,UAAU,EAAE,CAAA;CACjC,EAAA,IAAIF,GAAG,KAAKC,OAAO,CAACvB,IAAI,CAACO,MAAM,EAAE;CAC/B;CACA,IAAA,OAAA;CACF,GAAA;CACA,EAAA,IAAMX,KAAK,GAAG,IAAI,CAACA,KAAK,CAAA;CACxB,EAAA,IAAMC,KAAK,GAAG,IAAI,CAACC,cAAc,EAAE,CAAA;GACnCD,KAAK,CAACI,WAAW,GAAGC,eAAe,CAAA;CACnC,EAAA,IAAMuB,GAA6B,GAAG7B,KAAK,CAAC6B,GAAG,CAAA;CAC/C,EAAA,IAAMC,SAAuC,GAAG9B,KAAK,CAAC8B,SAAS,CAAA;GAC/DrC,KAAK,CAACsC,OAAO,CAACC,MAAM,CAACC,QAAQ,CAACJ,GAAG,EAAEC,SAAS,CAAC,CAAA;CAC7C,EAAA,IAAI,CAAC,IAAI,CAACI,UAAU,EAAE;CACpB,IAAA,IAAI,CAACA,UAAU,GACbC,IAAI,CAACC,IAAI,CAACP,GAAG,CAACQ,WAAW,CAAC,GAAG,CAAC,CAACC,uBAAuB,CAAC,GAAG,CAAC,CAAA;CAC/D,GAAA;CACA,EAAA,IAAMJ,UAAU,GAAG,IAAI,CAACA,UAAU,CAAA;GAClC,IAAIK,KAAK,GAAG,CAAC,CAAA;GACb,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGd,GAAG,EAAE,EAAEc,CAAC,EAAE;CAC5B,IAAA,IAAMC,IAAI,GAAGjB,KAAK,CAACgB,CAAC,CAAC,CAAA;CACrB,IAAA,IAAME,IAAI,GAAGD,IAAI,CAACE,KAAK,CAAA;CACvB,IAAA,IAAI,CAACC,UAAU,CAACF,IAAI,CAAC7B,IAAI,EAAE6B,IAAI,CAACG,CAAC,EAAEf,SAAS,CAACgB,IAAI,EAAEhB,SAAS,CAACiB,KAAK,CAAC,EAAE;CACnE;CACA,MAAA,SAAA;CACF,KAAA;CACA,IAAA,IAAMhF,GAAG,GAAG4D,OAAO,CAACvB,IAAI,CAACoC,CAAC,CAAC,CAAA;CAC3B,IAAA,IAAMQ,GAAG,GAAG/C,KAAK,CAACI,WAAW,CAACtC,GAAG,CAAC,CAAA;CAClC,IAAA,IAAI,CAACkF,KAAK,CAACD,GAAG,CAACtC,GAAG,CAAC,IAAI,CAACuC,KAAK,CAACD,GAAG,CAACvC,GAAG,CAAC,EAAE;CACtC,MAAA,IAAQyC,QAAQ,GAAKnF,GAAG,CAAhBmF,QAAQ,CAAA;CAChB,MAAA,IAAMC,KAAK,GAAKpF,GAAG,CAAboF,KAAK,CAAA;CACX,MAAA,IAAMC,MAAM,GAAGF,QAAQ,KAAK,MAAM,CAAA;CAClC,MAAA,IAAMG,cAAc,GAAGH,QAAQ,KAAK,cAAc,CAAA;OAClD,IAAMI,UAAU,GAAGJ,QAAQ,KAAK,UAAU,IAAIE,MAAM,IAAIC,cAAc,CAAA;CACtE,MAAA,IAAME,KAAK,GAAGL,QAAQ,KAAK,KAAK,CAAA;CAChC,MAAA,IAAIK,KAAK,EAAE;CACTb,QAAAA,IAAI,CAACc,CAAC,IAAId,IAAI,CAACe,MAAM,GAAG,GAAG,IAAIjB,CAAC,GAAG,CAAC,CAAC,GAAGE,IAAI,CAACe,MAAM,GAAG,IAAI,CAAA;QAC3D,MAAM,IAAIL,MAAM,EAAE;SACjBV,IAAI,CAACe,MAAM,IAAI,EAAE,CAAA;CACnB,OAAA;CACA,MAAA,IAAMC,MAAM,GAAGC,aAAa,CAACjB,IAAI,CAAC,CAAA;OAClC,IAAMkB,QAAQ,GAAGF,MAAM,CAACG,CAAC,GAAG3B,UAAU,GAAG,GAAG,IAAI,CAACmB,cAAc,CAAA;OAC/D,IAAIC,UAAU,IAAIC,KAAK,EAAE;CACvB,QAAA,IAAIK,QAAQ,EAAE;WACZlB,IAAI,CAACoB,WAAW,GAAG,CAAC,CAAA;WACpB,IAAItB,CAAC,KAAK,CAAC,EAAE;aACXE,IAAI,CAACqB,aAAa,GAAG,KAAK,CAAA;CAC5B,WAAA;CACF,SAAC,MAAM;CACLxB,UAAAA,KAAK,GACHA,KAAK,IACLtC,KAAK,CAAC+D,gBAAgB,CAAClC,SAAS,CAACiB,KAAK,CAAC,GACrC9C,KAAK,CAAC+D,gBAAgB,CAAClC,SAAS,CAACgB,IAAI,CAAC,CAAA;CAC1C,UAAA,IAAIP,KAAK,GAAG,GAAG,IAAIgB,KAAK,EAAE;aACxBb,IAAI,CAACoB,WAAW,GAAG,CAAC,CAAA;CACtB,WAAA;CACF,SAAA;CACA,QAAA,IAAIT,cAAc,EAAE;WAClBX,IAAI,CAACoB,WAAW,GAAG,CAAC,CAAA;WACpBpB,IAAI,CAACuB,eAAe,GAAG,oBAAoB,CAAA;CAC7C,SAAC,MAAM;WACLvB,IAAI,CAACuB,eAAe,GAAA,gBAAA,IAAoB,IAAI,GAAIzB,CAAC,GAAG,CAAC,GAAI,EAAE,CAAG,GAAA,GAAA,CAAA;CAChE,SAAA;CACF,OAAA;OACAC,IAAI,CAAClB,IAAI,EAAE,CAAA;CACX,MAAA,IAAI+B,UAAU,EAAE;SACd,IAAI,CAACH,KAAK,EAAE;WACVA,KAAK,GAAG,EAAE,CAAA;CACZ,SAAA;CACA,QAAA,IAAIC,MAAM,EAAE;WACVvB,GAAG,CAACqC,SAAS,GAAG,0BAA0B,CAAA;CAC1CrC,UAAAA,GAAG,CAACsC,QAAQ,CAACT,MAAM,CAACb,CAAC,EAAEa,MAAM,CAACF,CAAC,EAAEE,MAAM,CAACG,CAAC,EAAEH,MAAM,CAACU,CAAC,CAAC,CAAA;CACtD,SAAA;SACA,IAAIjB,KAAK,CAACkB,OAAO,EAAE;WACjBxC,GAAG,CAACqC,SAAS,GAAG,sBAAsB,CAAA;CACtCrC,UAAAA,GAAG,CAACsC,QAAQ,CAACT,MAAM,CAACb,CAAC,EAAEa,MAAM,CAACF,CAAC,EAAEE,MAAM,CAACG,CAAC,EAAEH,MAAM,CAACU,CAAC,CAAC,CAAA;CACtD,SAAA;CACA,QAAA,IAAIjB,KAAK,CAACmB,MAAM,IAAInB,KAAK,CAACoB,KAAK,EAAE;WAC/B1C,GAAG,CAACqC,SAAS,GAAG,wBAAwB,CAAA;WACxCrC,GAAG,CAACsC,QAAQ,CACVT,MAAM,CAACb,CAAC,EACRa,MAAM,CAACF,CAAC,EACPE,MAAM,CAACG,CAAC,GAAGV,KAAK,CAACmB,MAAM,GAAInB,KAAK,CAACoB,KAAK,EACvCb,MAAM,CAACU,CACT,CAAC,CAAA;CACH,SAAA;QACD,MAAM,IAAIb,KAAK,EAAE;SAChB,IAAIxF,GAAG,CAACyG,MAAM,EAAE;WACd3C,GAAG,CAACqC,SAAS,GAAG,yBAAyB,CAAA;CACzCrC,UAAAA,GAAG,CAACsC,QAAQ,CAACT,MAAM,CAACb,CAAC,EAAEa,MAAM,CAACF,CAAC,EAAEE,MAAM,CAACG,CAAC,EAAEH,MAAM,CAACU,CAAC,CAAC,CAAA;CACtD,SAAA;CACF,OAAA;CACA,MAAA,IAAIR,QAAQ,EAAE;CACZ,QAAA,IAAMrD,KAAK,GAAGyC,GAAG,CAACzC,KAAK,CAAC;SACxBsB,GAAG,CAACqC,SAAS,GAAG,cAAc,CAAA;CAC9B,QAAA,IAAIf,KAAK,EAAE;WACT,IAAMsB,QAAQ,GAAGC,QAAA,CAAc,EAAE,EAAEhB,MAAM,CAAC,CAAA;WAC1C,IAAI3F,GAAG,CAAC4G,EAAE,EAAE;CACV,YAAA,IAAMC,OAAO,GAAA,KAAA,GAAS7G,GAAG,CAAC4G,EAAI,CAAA;aAC9B,IAAME,OAAO,GAAG1C,IAAI,CAACzB,GAAG,CACtBmB,GAAG,CAACQ,WAAW,CAACuC,OAAO,CAAC,CAACE,KAAK,GAAG,CAAC,EAClCL,QAAQ,CAACZ,CAAC,GAAG,CAAC,GAAG,CACnB,CAAC,CAAA;CACD,YAAA,IAAIgB,OAAO,EAAE;eACXhD,GAAG,CAACkD,QAAQ,CACVH,OAAO,EACPH,QAAQ,CAAC5B,CAAC,GAAG,CAAC,EACd4B,QAAQ,CAACjB,CAAC,GAAGtB,UAAU,EACvBuC,QAAQ,CAACZ,CAAC,GAAG,CAAC,GAAG,CACnB,CAAC,CAAA;eACDY,QAAQ,CAAC5B,CAAC,IAAIgC,OAAO,CAAA;eACrBJ,QAAQ,CAACZ,CAAC,IAAIgB,OAAO,CAAA;CACvB,aAAA;CACF,WAAA;WACA,IAAMG,OAAO,GAAG5B,MAAM,GAAYrF,QAAAA,GAAAA,GAAG,CAACM,KAAK,GAAA,MAAA,GAAYN,GAAG,CAACkH,EAAI,CAAA;WAC/D,IAAMC,SAAS,GAAG/C,IAAI,CAACzB,GAAG,CACxBmB,GAAG,CAACQ,WAAW,CAAC2C,OAAO,CAAC,CAACF,KAAK,GAAG,CAAC,EAClCL,QAAQ,CAACZ,CAAC,GAAG,CACf,CAAC,CAAA;WACDhC,GAAG,CAACkD,QAAQ,CACVC,OAAO,EACPP,QAAQ,CAAC5B,CAAC,GAAG4B,QAAQ,CAACZ,CAAC,GAAGqB,SAAS,EACnCT,QAAQ,CAACjB,CAAC,GAAGtB,UAAU,EACvBuC,QAAQ,CAACZ,CAAC,GAAG,CACf,CAAC,CAAA;CACH,SAAA;CACA,QAAA,IAAIN,KAAK,EAAE;WACT,IAAM4B,SAAS,GAAGhD,IAAI,CAACzB,GAAG,CACxB,EAAE,EACFyB,IAAI,CAACC,IAAI,CAACsB,MAAM,CAACG,CAAC,IAAI3B,UAAU,GAAG,CAAC,CAAC,CACvC,CAAC,CAAA;CACDL,UAAAA,GAAG,CAACkD,QAAQ,CACV,CAAC,EAAE,GAAGhH,GAAG,CAACqH,OAAO,EAAEC,KAAK,CAAC,CAAC,EAAEF,SAAS,CAAC,EACtCzB,MAAM,CAACb,CAAC,GAAG,CAAC,EACZa,MAAM,CAACF,CAAC,GAAGE,MAAM,CAACU,CAAC,GAAG,CAAC,EACvBV,MAAM,CAACG,CAAC,GAAG,CACb,CAAC,CAAA;CACH,SAAC,MAAM,IAAI,CAACT,MAAM,EAAE;CAClB,UAAA,IAAMkC,MAAK,GAAG/E,KAAK,MAAMA,KAAK,GAAG,CAAC,CAAC,CAAA;CACnC,UAAA,IAAMgF,WAAW,GAAGD,MAAK,GACrBnD,IAAI,CAACzB,GAAG,CAAC,CAAC,EAAEyB,IAAI,CAAC1B,GAAG,CAAC,CAAC,EAAE0B,IAAI,CAACqD,KAAK,CAAC9B,MAAM,CAACG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GACvD,CAAC,CAAA;CACL,UAAA,IAAM4B,WAAW,GAAGC,MAAM,CAACnF,KAAK,EAAEgF,WAAW,CAAC,CAAA;WAC9C1D,GAAG,CAACkD,QAAQ,CACVU,WAAW,EACX/B,MAAM,CAACb,CAAC,GAAG,CAAC,EACZa,MAAM,CAACF,CAAC,GAAGE,MAAM,CAACU,CAAC,GAAG,CAAC,EACvBV,MAAM,CAACG,CAAC,GAAG,CACb,CAAC,CAAA;CACH,SAAA;CACF,OAAA;CACF,KAAA;CACF,GAAA;GAEApE,KAAK,CAACsC,OAAO,CAACC,MAAM,CAAC2D,UAAU,CAAC3F,KAAK,CAAC6B,GAAG,CAAC,CAAA;CAC5C,CAAC,CAAA;CAEM,SAAS+D,2BAA2BA,CAAC5F,KAAK,EAAE;CACjD6F,EAAAA,MAAM,CAAC5H,IAAI,CAAC+B,KAAK,CAAC8F,MAAM,CAAC,CAACC,OAAO,CAAC,UAACC,IAAI,EAAK;CAC1C,IAAA,IAAM/F,KAAK,GAAGD,KAAK,CAAC8F,MAAM,CAAEE,IAAI,CAAC,CAAA;KACjC/F,KAAK,CAACI,WAAW,GAAGC,eAAe,CAAA;CACrC,GAAC,CAAC,CAAA;CACJ,CAAA;CAEA,SAASA,eAAeA,CAAC3B,KAAqB,EAAE;GAC9C,IAAIA,KAAK,KAAK6B,SAAS,EAAE;CACvBtB,IAAAA,OAAO,CAAC+G,IAAI,CAAC,uCAAuC,CAAC,CAAA;CACrD,IAAA,OAAO,EAAE,CAAA;CACX,GAAA;CAEA,EAAA,IAAI1F,KAAK,CAAA;CACT,EAAA,IAAIK,GAAG,CAAA;CACP,EAAA,IAAIF,GAAG,CAAA;CACP,EAAA,IAAID,GAAG,CAAA;CAEP,EAAA,IAAIyF,KAAK,CAACC,OAAO,CAACxH,KAAK,CAAC,EAAE;KACxB4B,KAAK,GAAG,CAAC,IAAI,CAAC6F,aAAa,CAACzH,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;KACrCiC,GAAG,GAAG,CAAC,IAAI,CAACwF,aAAa,CAACzH,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;KACnC+B,GAAG,GAAGyB,IAAI,CAACzB,GAAG,CAACH,KAAK,EAAEK,GAAG,CAAC,CAAA;KAC1BH,GAAG,GAAG0B,IAAI,CAAC1B,GAAG,CAACF,KAAK,EAAEK,GAAG,CAAC,CAAA;CAC5B,GAAC,MAAM;KACLL,KAAK,GAAG,CAAC,IAAI,CAAC6F,aAAa,CAACzH,KAAK,CAAC4B,KAAK,CAAC,CAAA;KACxC,IAAI,KAAK,IAAI5B,KAAK,EAAE;OAClBiC,GAAG,GAAG,CAAC,IAAI,CAACwF,aAAa,CAACzH,KAAK,CAACiC,GAAG,CAAC,CAAA;CACtC,KAAC,MAAM;CACLA,MAAAA,GAAG,GAAG,CAAC,IAAI,CAACwF,aAAa,CAACzH,KAAK,CAAC4B,KAAK,GAAG5B,KAAK,CAAC0H,QAAQ,CAAC,CAAA;CACzD,KAAA;KACA3F,GAAG,GAAGyB,IAAI,CAACzB,GAAG,CAACH,KAAK,EAAEK,GAAG,CAAC,CAAA;KAC1BH,GAAG,GAAG0B,IAAI,CAAC1B,GAAG,CAACF,KAAK,EAAEK,GAAG,CAAC,CAAA;CAC5B,GAAA;GAEA,OAAO;CACLF,IAAAA,GAAG,EAAHA,GAAG;CACHD,IAAAA,GAAG,EAAHA,GAAG;CACHF,IAAAA,KAAK,EAALA,KAAK;CACLK,IAAAA,GAAG,EAAHA,GAAAA;IACD,CAAA;CACH,CAAA;CAEA,SAASgC,UAAUA,CAAC0D,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAE;CAClC,EAAA,OAAOF,EAAE,GAAGC,EAAE,IAAIF,EAAE,GAAGG,EAAE,CAAA;CAC3B,CAAA;CAEA,SAAS9C,aAAaA,CAAC+C,EAAE,EAAE;CACzB,EAAA,IAAMC,IAAI,GAAGD,EAAE,CAACjD,MAAM,GAAG,CAAC,CAAA;CAC1B,EAAA,IAAMX,IAAI,GAAGX,IAAI,CAACzB,GAAG,CAACgG,EAAE,CAAC7D,CAAC,EAAE6D,EAAE,CAAC7F,IAAI,CAAC,CAAA;CACpC,EAAA,IAAMkC,KAAK,GAAGZ,IAAI,CAAC1B,GAAG,CAACiG,EAAE,CAAC7D,CAAC,EAAE6D,EAAE,CAAC7F,IAAI,CAAC,CAAA;CACrC,EAAA,IAAM+F,GAAG,GAAGF,EAAE,CAAClD,CAAC,GAAGmD,IAAI,CAAA;CACvB,EAAA,IAAME,MAAM,GAAGH,EAAE,CAAClD,CAAC,GAAGmD,IAAI,CAAA;GAC1B,OAAO;CACL9D,IAAAA,CAAC,EAAEC,IAAI;CACPU,IAAAA,CAAC,EAAEoD,GAAG;KACN/C,CAAC,EAAEd,KAAK,GAAGD,IAAI;KACfsB,CAAC,EAAEyC,MAAM,GAAGD,GAAAA;IACb,CAAA;CACH,CAAA;CAEO,SAASlB,MAAMA,CAAC/G,KAAK,EAAE4G,WAAW,EAAE;CACzC,EAAA,IAAMnB,CAAC,GAAIzF,KAAK,GAAG,IAAI,GAAI,CAAC,CAAA;GAC5B,IAAMmI,CAAC,GAAG,CAAEnI,KAAK,GAAG,EAAE,GAAI,CAAC,IAAI,EAAE,CAAA;CACjC,EAAA,IAAMoI,CAAC,GAAGpI,KAAK,GAAG,EAAE,CAAA;CACpB,EAAA,OAAO,CAAGyF,CAAC,GAAI4C,GAAAA,GAAAA,GAAG,CAACF,CAAC,EAAE,CAAC,CAAC,GAAIE,GAAAA,GAAAA,GAAG,CAC7BD,CAAC,CAACE,OAAO,CAAC1B,WAAW,CAAC,EACtBA,WAAW,GAAGA,WAAW,GAAG,CAAC,GAAG,CAClC,CAAC,EAAG2B,OAAO,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAA;CAClD,CAAA;CAEA,SAASF,GAAGA,CAACG,GAAG,EAAExG,MAAM,EAAE;GACxBwG,GAAG,GAAG,EAAE,GAAGA,GAAG,CAAA;CACd,EAAA,OAAOA,GAAG,CAACxG,MAAM,GAAGA,MAAM,EAAE;KAC1BwG,GAAG,GAAG,GAAG,GAAGA,GAAG,CAAA;CACjB,GAAA;CACA,EAAA,OAAOA,GAAG,CAAA;CACZ;;CC/QA,IAAMC,cAAc,GAAG,gBAAgB,CAAA;CAoBvC,IAAaC,aAAa,gBAAA,YAAA;CAUxB,EAAA,SAAAA,aAAYrF,CAAAA,MAAyB,EAAEsF,cAAoB,EAAE;CAAA,IAAA,IAAAC,KAAA,GAAA,IAAA,CAAA;CAAA,IAAA,IAAA,CAT5CvH,KAAK,GAAA,KAAA,CAAA,CAAA;KAAA,IACdwH,CAAAA,oBAAoB,GAAW,CAAC,CAAC,CAAA;KAAA,IACjCC,CAAAA,eAAe,GAAqB,IAAI,CAAA;KAAA,IACxCC,CAAAA,KAAK,GAA4B,IAAI,CAAA;CAAA,IAAA,IAAA,CACrCC,mBAAmB,GAAA,KAAA,CAAA,CAAA;CAAA,IAAA,IAAA,CACnBC,iBAAiB,GAAA,KAAA,CAAA,CAAA;KAAA,IACjBC,CAAAA,MAAM,GAAY,IAAI,CAAA;KAAA,IACtBC,CAAAA,OAAO,GAAW,EAAE,CAAA;CAG1B,IAAA,IAAMjG,GAAG,GAAGG,MAAM,CAAC+F,UAAU,CAAC,IAAI,CAAC,CAAA;KACnC,IAAI,CAAClG,GAAG,EAAE;CACR,MAAA,MAAM,IAAI9G,KAAK,CAC0CiH,sDAAAA,GAAAA,MACzD,CAAC,CAAA;CACH,KAAA;CACA,IAAA,IAAMhC,KAAK,GACR,IAAI,CAACA,KAAK,GACXgI,IAAI,CAAChI,KAAK,GACR,IAAIP,KAAK,CAACoC,GAAG,EAAE;CACboG,MAAAA,IAAI,EAAE,eAAe;CACrB7H,MAAAA,IAAI,EAAE;CACJ8H,QAAAA,MAAM,EAAE,EAAE;CACV/H,QAAAA,QAAQ,EAAE,EAAA;QACX;OACDJ,OAAO,EAAE2E,QAAA,CAAcyD,eAAe,EAAE,EAAEb,cAAc,CAAC;CACzDc,MAAAA,OAAO,EAAE,CACP;CACEC,QAAAA,WAAW,EAAE,SAAAA,WAACrI,CAAAA,KAAK,EAAK;WACtBuH,KAAI,CAACE,eAAe,GAAG,IAAI,CAAA;WAC3BF,KAAI,CAACe,eAAe,EAAE,CAAA;CACxB,SAAA;QACD,CAAA;CAEL,KAAC,CAAE,CAAA;KAEP1C,2BAA2B,CAAC5F,KAAK,CAAC,CAAA;CAElCgC,IAAAA,MAAM,CAACuG,UAAU,GAAG,UAACC,KAAiB,EAAK;CACzC,MAAA,IAAMxI,KAAK,GAAGuH,KAAI,CAACvH,KAAK,CAAA;CACxB,MAAA,IAAM8B,SAAuC,GAAG9B,KAAK,CAAC8B,SAAS,CAAA;CAC/D,MAAA,IAAM2G,OAAO,GAAGzI,KAAK,CAAC0I,iBAAiB,CAACF,KAAK,CAAC,CAAA;OAC9C,IAAMG,GAAG,GAAGlJ,KAAK,CAACsC,OAAO,CAAC6G,mBAAmB,CAACJ,KAAK,EAAExI,KAAK,CAAC,CAAA;CAC3D,MAAA,IAAMC,KAAK,GAAGsH,KAAI,CAACsB,WAAW,CAACzB,cAAc,CAAC,CAAA;CAC9C;OACA,IAAIqB,OAAO,CAAC9H,MAAM,IAAIgI,GAAG,CAAC9F,CAAC,GAAGf,SAAS,CAACgB,IAAI,EAAE;CAC5C,QAAA,IAAMgG,MAAM,GAAGN,KAAK,CAACO,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAA;SAC3DxB,KAAI,CAACyB,IAAI,CAAC/I,KAAK,EAAE0I,GAAG,EAAEG,MAAM,CAAC,CAAA;CAC/B,OAAC,MAAM;CACL7I,QAAAA,KAAK,CAACF,OAAO,CAACkJ,KAAK,CAACvI,GAAG,GAAG,CAAC,CAAA;SAC3BT,KAAK,CAACF,OAAO,CAACkJ,KAAK,CAACxI,GAAG,GAAG8G,KAAI,CAACO,OAAO,CAAA;CACxC,OAAA;OACAP,KAAI,CAAC2B,MAAM,EAAE,CAAA;MACd,CAAA;CAEDlH,IAAAA,MAAM,CAACmH,OAAO,GAAG,UAACX,KAAiB,EAAK;OACtC,IAAIA,KAAK,CAACY,SAAS,EAAE;CACnB;CACA,QAAA,OAAA;CACF,OAAA;CACA,MAAA,IAAMpJ,KAAK,GAAGuH,KAAI,CAACvH,KAAK,CAAA;CACxB,MAAA,IAAM8B,SAAuC,GAAG9B,KAAK,CAAC8B,SAAS,CAAA;OAC/D,IAAM6G,GAAG,GAAGlJ,KAAK,CAACsC,OAAO,CAAC6G,mBAAmB,CAACJ,KAAK,EAAExI,KAAK,CAAC,CAAA;CAC3D;OACA,IAAI2I,GAAG,CAAC9F,CAAC,GAAGf,SAAS,CAACgB,IAAI,GAAG,EAAE,EAAE;CAC/B,QAAA,IAAM7C,KAAK,GAAGsH,KAAI,CAACsB,WAAW,CAACzB,cAAc,CAAC,CAAA;SAC9C,IAAIoB,KAAK,CAACa,MAAM,EAAE;CAChB,UAAA,IAAMC,SAAS,GAAG,CAACd,KAAK,CAACa,MAAM,GAAGlH,IAAI,CAACoH,GAAG,CAACf,KAAK,CAACa,MAAM,CAAC,CAAA;CACxD,UAAA,IAAMG,MAAM,GAAGrH,IAAI,CAACzB,GAAG,CAAC,GAAG,EAAEyB,IAAI,CAACoH,GAAG,CAACf,KAAK,CAACa,MAAM,CAAC,CAAC,GAAG,IAAI,CAAA;CAC3D,UAAA,IAAMI,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,GAAGD,MAAM,KAAK,CAAC,GAAGA,MAAM,CAAC,CAAA;WAC5CjC,KAAI,CAACyB,IAAI,CAAC/I,KAAK,EAAE0I,GAAG,EAAEc,IAAI,GAAGH,SAAS,CAAC,CAAA;CACzC,SAAC,MAAM,IAAId,KAAK,CAACkB,MAAM,EAAE;CACvBnC,UAAAA,KAAI,CAACoC,GAAG,CAAC1J,KAAK,EAAEuI,KAAK,CAACkB,MAAM,GAAG,EAAE,EAAEzJ,KAAK,CAACS,GAAG,EAAET,KAAK,CAACQ,GAAG,CAAC,CAAA;CAC1D,SAAA;SACA+H,KAAK,CAACoB,cAAc,EAAE,CAAA;CACxB,OAAA;MACD,CAAA;KAED,IAAIC,KAAK,GAAG,KAAK,CAAA;KACjB,IAAIC,YAAY,GAAG,CAAC,CAAA;CACpB9H,IAAAA,MAAM,CAAC+H,aAAa,GAAG,UAACC,SAAuB,EAAK;OAClD,IAAI,CAACA,SAAS,CAACC,SAAS,IAAIH,YAAY,KAAK,CAAC,EAAE;CAC9C,QAAA,OAAA;CACF,OAAA;CACA,MAAA,IAAM9J,KAAK,GAAGuH,KAAI,CAACvH,KAAK,CAAA;CACxB,MAAA,IAAM8B,SAAuC,GAAG9B,KAAK,CAAC8B,SAAS,CAAA;OAC/D,IAAM6G,GAAG,GAAGlJ,KAAK,CAACsC,OAAO,CAAC6G,mBAAmB,CAACoB,SAAS,EAAEhK,KAAK,CAAC,CAAA;CAC/D;CACA,MAAA,IAAI2I,GAAG,CAAC9F,CAAC,GAAGf,SAAS,CAACgB,IAAI,EAAE;CAC1B,QAAA,IAAM7C,KAAK,GAAGsH,KAAI,CAACsB,WAAW,CAACzB,cAAc,CAAC,CAAA;CAC9C,QAAA,IAAM8C,MAAM,GAAGF,SAAS,CAACG,OAAO,CAAA;CAChC,QAAA,IAAQzJ,GAAG,GAAUT,KAAK,CAAlBS,GAAG;WAAED,GAAG,GAAKR,KAAK,CAAbQ,GAAG,CAAA;SAChB,IAAM2J,MAAM,GAAG,CAAC3J,GAAG,GAAGC,GAAG,IAAIT,KAAK,CAAC6E,KAAK,CAAA;CACxC+E,QAAAA,KAAK,GAAG,KAAK,CAAA;CACb7H,QAAAA,MAAM,CAACqI,iBAAiB,CAACL,SAAS,CAACM,SAAS,CAAC,CAAA;CAC7CtI,QAAAA,MAAM,CAACuI,aAAa,GAAG,UAACC,SAAuB,EAAK;WAClD,IAAI,CAACR,SAAS,CAACC,SAAS,IAAIH,YAAY,KAAK,CAAC,EAAE;CAC9C,YAAA,OAAA;CACF,WAAA;CACA,UAAA,IAAMW,MAAM,GAAGP,MAAM,GAAGM,SAAS,CAACL,OAAO,CAAA;CACzC,UAAA,IAAMO,UAAU,GAAGD,MAAM,GAAGL,MAAM,CAAA;WAClCP,KAAK,GAAGA,KAAK,IAAI1H,IAAI,CAACoH,GAAG,CAACkB,MAAM,CAAC,GAAG,CAAC,CAAA;WACrClD,KAAI,CAACoC,GAAG,CAAC1J,KAAK,EAAEyK,UAAU,EAAEhK,GAAG,EAAED,GAAG,CAAC,CAAA;UACtC,CAAA;CACH,OAAA;MACD,CAAA;KAEDuB,MAAM,CAAC2I,WAAW,GAAG3I,MAAM,CAAC4I,eAAe,GAAG,UAACC,OAAqB,EAAK;OACvE,IAAI7I,MAAM,CAACuI,aAAa,EAAE;SACxBvI,MAAM,CAACuI,aAAa,GAAG,IAAI,CAAA;CAC3BvI,QAAAA,MAAM,CAAC8I,qBAAqB,CAACD,OAAO,CAACP,SAAS,CAAC,CAAA;CACjD,OAAA;CACA,MAAA,IAAI,CAACT,KAAK,IAAIgB,OAAO,CAACZ,SAAS,EAAE;CAC/B1C,QAAAA,KAAI,CAACwD,KAAK,CAACF,OAAO,CAAC,CAAA;CACrB,OAAA;MACD,CAAA;;CAED;CACA;CACA7I,IAAAA,MAAM,CAACgJ,cAAc,GAAG,UAACxC,KAAK,EAAK;CACjCsB,MAAAA,YAAY,GAAG,CAAC,CAAA;OAChBtB,KAAK,CAACoB,cAAc,EAAE,CAAA;MACvB,CAAA;;CAED;CACA5H,IAAAA,MAAM,CAACiJ,YAAY,GAAG,UAACzC,KAAK,EAAK;CAC/BsB,MAAAA,YAAY,GAAG,CAAC,CAAA;MACjB,CAAA;;CAED;CACA9H,IAAAA,MAAM,CAACkJ,eAAe,GAAG,UAAC1C,KAAK,EAAK;CAClC,MAAA,IAAMxI,KAAK,GAAGuH,KAAI,CAACvH,KAAK,CAAA;CACxB,MAAA,IAAM8B,SAAuC,GAAG9B,KAAK,CAAC8B,SAAS,CAAA;OAC/D,IAAM6G,GAAG,GAAGlJ,KAAK,CAACsC,OAAO,CAAC6G,mBAAmB,CAACJ,KAAK,EAAExI,KAAK,CAAC,CAAA;CAC3D;CACA,MAAA,IAAI2I,GAAG,CAAC9F,CAAC,GAAGf,SAAS,CAACgB,IAAI,EAAE;CAC1B,QAAA,IAAM7C,KAAK,GAAGsH,KAAI,CAACsB,WAAW,CAACzB,cAAc,CAAC,CAAA;CAC9C,QAAA,IAAM0B,MAAM,GAAGN,KAAK,CAACvI,KAAK,GAAG6J,YAAY,CAAA;SACzCvC,KAAI,CAACyB,IAAI,CAAC/I,KAAK,EAAE0I,GAAG,EAAEG,MAAM,CAAC,CAAA;SAC7BgB,YAAY,GAAGtB,KAAK,CAACvI,KAAK,CAAA;CAC5B,OAAA;MACD,CAAA;CACH,GAAA;CAAC,EAAA,IAAAkL,MAAA,GAAA9D,aAAA,CAAAzH,SAAA,CAAA;CAAAuL,EAAAA,MAAA,CAEOJ,KAAK,GAAb,SAAAA,KAAAA,CAAcvC,KAAiB,EAAE;CAC/B;CACA,IAAA,IAAMxI,KAAK,GAAG,IAAI,CAACA,KAAK,CAAA;CACxB,IAAA,IAAMyI,OAAO,GAAGzI,KAAK,CAAC0I,iBAAiB,CAACF,KAAK,CAAC,CAAA;KAC9C,IAAIC,OAAO,CAAC9H,MAAM,IAAIX,KAAK,CAACI,IAAI,CAACD,QAAQ,EAAE;CAAA,MAAA,IAAAiL,SAAA,CAAA;CACzC,MAAA,IAAMzJ,OAAO,GAAG3B,KAAK,CAACI,IAAI,CAACD,QAAQ,CAAEsI,OAAO,CAAC,CAAC,CAAC,CAAS4C,aAAa,CAAC,CAAA;CACtE,MAAA,IAAMtN,GAAG,GAAG4D,OAAO,CAACvB,IAAI,CAAGqI,OAAO,CAAC,CAAC,CAAC,CAAS6C,MAAM,CAAC,CAAA;CACrD;CACApM,MAAAA,OAAO,CAACC,GAAG,CAACpB,GAAG,CAAC,CAAA;OAChB,IAAAqN,CAAAA,SAAA,GAAIpD,IAAI,CAACuD,GAAG,KAARH,IAAAA,IAAAA,SAAA,CAAU1D,KAAK,EAAE;CACnB,QAAA,IAAMzH,KAAK,GAAG,IAAI,CAAC4I,WAAW,CAACzB,cAAc,CAAC,CAAA;SAC9C,IAAMuB,GAAG,GAAGlJ,KAAK,CAACsC,OAAO,CAAC6G,mBAAmB,CAACJ,KAAK,EAAExI,KAAK,CAAC,CAAA;CAC3DgI,QAAAA,IAAI,CAACuD,GAAG,CAAC7D,KAAK,CAAC8D,WAAW,GAAGvL,KAAK,CAAC+D,gBAAgB,CAAC2E,GAAG,CAAC9F,CAAC,CAAC,CAAA;CAC5D,OAAA;CACF,KAAA;IACD,CAAA;CAAAsI,EAAAA,MAAA,CAEOxB,GAAG,GAAX,SAAAA,GAAY1J,CAAAA,KAAiB,EAAE6I,MAAc,EAAEpI,GAAW,EAAED,GAAW,EAAE;KACvE,IAAIqI,MAAM,KAAK,CAAC,EAAE;CAChB,MAAA,OAAA;CACF,KAAA;KACA,IAAIa,GAAG,GAAGb,MAAM,CAAA;KAChB,IAAIA,MAAM,GAAG,CAAC,EAAE;CACda,MAAAA,GAAG,GAAGxH,IAAI,CAACzB,GAAG,CAAC,IAAI,CAACoH,OAAO,GAAG,EAAE,GAAGrH,GAAG,EAAEqI,MAAM,CAAC,CAAA;CACjD,KAAC,MAAM;OACLa,GAAG,GAAGxH,IAAI,CAAC1B,GAAG,CAAC,CAAC,EAAE,GAAGC,GAAG,EAAEoI,MAAM,CAAC,CAAA;CACnC,KAAA;KACA7I,KAAK,CAACF,OAAO,CAACkJ,KAAK,CAACvI,GAAG,GAAGA,GAAG,GAAGiJ,GAAG,CAAA;KACnC1J,KAAK,CAACF,OAAO,CAACkJ,KAAK,CAACxI,GAAG,GAAGA,GAAG,GAAGkJ,GAAG,CAAA;KACnC,IAAI,CAAC8B,eAAe,EAAE,CAAA;IACvB,CAAA;GAAAN,MAAA,CAEOnC,IAAI,GAAZ,SAAAA,IAAAA,CAAa/I,KAAiB,EAAE0I,GAAQ,EAAEG,MAAc,EAAE;KACxD,IAAMvG,KAAK,GAAGtC,KAAK,CAACQ,GAAG,GAAGR,KAAK,CAACS,GAAG,CAAA;CACnC,IAAA,IAAMgL,IAAI,GAAGnJ,KAAK,GAAGuG,MAAM,CAAA;CAC3B,IAAA,IAAM6C,UAAU,GAAG,CAAC1L,KAAK,CAAC+D,gBAAgB,CAAC2E,GAAG,CAAC9F,CAAC,CAAC,GAAG5C,KAAK,CAACS,GAAG,IAAI6B,KAAK,CAAA;CACtE,IAAA,IAAMqJ,UAAU,GAAG,CAAC,GAAGD,UAAU,CAAA;CACjC,IAAA,IAAME,QAAQ,GAAGH,IAAI,GAAGC,UAAU,CAAA;CAClC,IAAA,IAAMG,QAAQ,GAAGJ,IAAI,GAAGE,UAAU,CAAA;CAClC3L,IAAAA,KAAK,CAACF,OAAO,CAACkJ,KAAK,CAACvI,GAAG,GAAGyB,IAAI,CAAC1B,GAAG,CAAC,CAAC,EAAE,EAAER,KAAK,CAACS,GAAG,GAAGmL,QAAQ,CAAC,CAAA;KAC7D5L,KAAK,CAACF,OAAO,CAACkJ,KAAK,CAACxI,GAAG,GAAG0B,IAAI,CAACzB,GAAG,CAAC,IAAI,CAACoH,OAAO,GAAG,EAAE,EAAE7H,KAAK,CAACQ,GAAG,GAAGqL,QAAQ,CAAC,CAAA;KAC3E,IAAI,CAACL,eAAe,EAAE,CAAA;IACvB,CAAA;CAAAN,EAAAA,MAAA,CAMDY,KAAK,GAAL,SAAAA,QAAQ;CACN,IAAA,IAAM9L,KAAK,GAAG,IAAI,CAAC4I,WAAW,CAACzB,cAAc,CAAC,CAAA;CAC9CnH,IAAAA,KAAK,CAACF,OAAO,CAACkJ,KAAK,CAACvI,GAAG,GAAG,CAAC,CAAA;CAC3BT,IAAAA,KAAK,CAACF,OAAO,CAACkJ,KAAK,CAACxI,GAAG,GAAG,EAAE,CAAA;CAC5B,IAAA,IAAAuL,gBAAA,GAA6B,IAAI,CAAChM,KAAK,CAACI,IAAI;OAApC8H,MAAM,GAAA8D,gBAAA,CAAN9D,MAAM;OAAE/H,QAAQ,GAAA6L,gBAAA,CAAR7L,QAAQ,CAAA;KACxB,IAAI+H,MAAM,IAAI/H,QAAQ,EAAE;OACtB+H,MAAM,CAACvH,MAAM,GAAG,CAAC,CAAA;OACjBR,QAAQ,CAACQ,MAAM,GAAG,CAAC,CAAA;CACnB,MAAA,IAAI,CAACsL,MAAM,CAAC9L,QAAQ,CAAC,CAAA;CACvB,KAAA;IACD,CAAA;CAAAgL,EAAAA,MAAA,CAEDjC,MAAM,GAAN,SAAAA,SAAS;CAAA,IAAA,IAAAgD,eAAA,CAAA;CACP,IAAA,IAAI,IAAI,CAACrE,MAAM,IAAI,EAAAqE,CAAAA,eAAA,GAAC,IAAI,CAAClM,KAAK,CAAC6B,GAAG,KAAdqK,IAAAA,IAAAA,eAAA,CAAgBlK,MAAM,CAAC8C,KAAK,CAAE,EAAA;CAChD,MAAA,OAAA;CACF,KAAA;CACAkD,IAAAA,IAAI,CAACmE,oBAAoB,CAAC,IAAI,CAAC3E,oBAAoB,CAAC,CAAA;CACpD,IAAA,IAAI,CAACxH,KAAK,CAACkJ,MAAM,CAAC;CAChB7C,MAAAA,QAAQ,EAAE,CAAC;CACX+F,MAAAA,IAAI,EAAE,IAAA;CACR,KAAC,CAAC,CAAA;IACH,CAAA;CAAAjB,EAAAA,MAAA,CAEDM,eAAe,GAAf,SAAAA,kBAAkB;CAAA,IAAA,IAAAY,MAAA,GAAA,IAAA,CAAA;KAChB,IAAI,IAAI,CAACxE,MAAM,EAAE;CACf,MAAA,OAAA;CACF,KAAA;CACAG,IAAAA,IAAI,CAACmE,oBAAoB,CAAC,IAAI,CAAC3E,oBAAoB,CAAC,CAAA;CACpD,IAAA,IAAI,CAACA,oBAAoB,GAAGQ,IAAI,CAACsE,qBAAqB,CAAC,YAAA;CAAA,MAAA,OAAMD,MAAI,CAACnD,MAAM,EAAE,CAAA;MAAC,CAAA,CAAA;IAC5E,CAAA;CAAAiC,EAAAA,MAAA,CAEDc,MAAM,GAAN,SAAAA,MAAAA,CAAO9L,QAAS,EAAE;CAAA,IAAA,IAAAoM,MAAA,GAAA,IAAA,CAAA;KAChB,IAAI,IAAI,CAAC1E,MAAM,EAAE;CACf,MAAA,OAAA;CACF,KAAA;CACA,IAAA,IAAI1H,QAAQ,IAAA,IAAA,IAARA,QAAQ,CAAEQ,MAAM,EAAE;CAAA,MAAA,IAAA6L,kBAAA,CAAA;CACpB,MAAA,IAAMvM,KAAK,GAAG,IAAI,CAAC4I,WAAW,CAACzB,cAAc,CAAC,CAAA;OAC9C,IAAQR,GAAG,GAAK,IAAI,CAAC5G,KAAK,CAAC8B,SAAS,CAA5B8E,GAAG,CAAA;OACX,IAAMnD,MAAM,GACVmD,GAAG,GACHzG,QAAQ,CAACsM,MAAM,CAAC,UAACzJ,GAAG,EAAErB,OAAO,EAAA;CAAA,QAAA,OAAKqB,GAAG,GAAGrB,OAAO,CAACN,YAAY,CAAA;CAAA,OAAA,EAAE,CAAC,CAAC,GAChEpB,KAAK,CAACwD,MAAM,GACZ,CAAC,CAAA;CACH,MAAA,IAAMiJ,SAAS,GAAA,CAAAF,kBAAA,GAAG,IAAI,CAACxM,KAAK,CAACgC,MAAM,KAAA,IAAA,GAAA,KAAA,CAAA,GAAjBwK,kBAAA,CAAmBG,aAAa,CAAA;CAClD,MAAA,IAAID,SAAS,EAAE;CACbA,QAAAA,SAAS,CAACE,KAAK,CAACnJ,MAAM,GAAMA,MAAM,GAAI,IAAA,CAAA;CACxC,OAAA;CACF,KAAA;CACAuE,IAAAA,IAAI,CAACmE,oBAAoB,CAAC,IAAI,CAAC3E,oBAAoB,CAAC,CAAA;CACpD,IAAA,IAAI,CAACA,oBAAoB,GAAGQ,IAAI,CAACsE,qBAAqB,CAAC,YAAM;CAC3DC,MAAAA,MAAI,CAACvM,KAAK,CAACiM,MAAM,EAAE,CAAA;CACrB,KAAC,CAAC,CAAA;IACH,CAAA;CAAAd,EAAAA,MAAA,CAED0B,IAAI,GAAJ,SAAAA,OAAO;KACL,IAAI,CAAChF,MAAM,GAAG,KAAK,CAAA;IACpB,CAAA;CAAAsD,EAAAA,MAAA,CAED2B,IAAI,GAAJ,SAAAA,OAAO;KACL,IAAI,CAACjF,MAAM,GAAG,IAAI,CAAA;IACnB,CAAA;GAAAsD,MAAA,CAED4B,YAAY,GAAZ,SAAAA,aAAaC,MAAe,EAAEC,aAAa,EAAE;CAAA,IAAA,IAAAC,MAAA,GAAA,IAAA,CAAA;CAC3C,IAAA,IAAAC,iBAAA,GAA6B,IAAI,CAACnN,KAAK,CAACI,IAAI;OAApC8H,MAAM,GAAAiF,iBAAA,CAANjF,MAAM;OAAE/H,QAAQ,GAAAgN,iBAAA,CAARhN,QAAQ,CAAA;CACxB,IAAA,IAAI,CAAC+H,MAAM,IAAI,CAAC/H,QAAQ,EAAE;CACxB,MAAA,OAAA;CACF,KAAA;CACA,IAAA,IAAAiN,UAAA,GAAoDpF,IAAI,CAACuD,GAAG;OAApD8B,SAAS,GAAAD,UAAA,CAATC,SAAS;OAAEC,aAAa,GAAAF,UAAA,CAAbE,aAAa;OAAEC,aAAa,GAAAH,UAAA,CAAbG,aAAa,CAAA;CAC/C;CACA,IAAA,IAAMC,YAAY,GAChBP,aAAa,KAAKzM,SAAS,GAAGyM,aAAa,GAAGjF,IAAI,CAACuD,GAAG,CAACiC,YAAY,CAAA;CACrER,IAAAA,MAAM,CAACjH,OAAO,CAAC,UAAC0H,KAAK,EAAEjL,CAAC,EAAK;CAC3B,MAAA,IAAMnE,KAAK,GAAGoP,KAAK,CAACC,EAAE,IAAIlL,CAAC,CAAA;OAC3B0F,MAAM,CAAC/J,IAAI,CAACwP,YAAY,CAACF,KAAK,EAAEpP,KAAK,CAAC,CAAC,CAAA;OACvC,IAAIuP,WAA0B,GAAG,IAAI,CAAA;OACrC,IAAIJ,YAAY,KAAKhL,CAAC,EAAE;CACtBoL,QAAAA,WAAW,GAAG,wBAAwB,CAAA;CACxC,OAAC,MAAM,IAAIP,SAAS,KAAK7K,CAAC,EAAE;CAC1BoL,QAAAA,WAAW,GAAG,wBAAwB,CAAA;CACxC,OAAC,MAAM,IAAIN,aAAa,KAAK9K,CAAC,EAAE;CAC9BoL,QAAAA,WAAW,GAAG,yBAAyB,CAAA;CACzC,OAAC,MAAM,IAAIL,aAAa,KAAK/K,CAAC,EAAE;CAC9BoL,QAAAA,WAAW,GAAG,wBAAwB,CAAA;CACxC,OAAA;CACAzN,MAAAA,QAAQ,CAAChC,IAAI,CACX0P,mBAAmB,CAAC;SAClBtT,GAAG,EAAE2L,KAAK,CAACC,OAAO,CAACsH,KAAK,CAAClT,GAAG,CAAC,GACzBkT,KAAK,CAAClT,GAAG,CAACkT,KAAK,CAACK,KAAK,IAAI,CAAC,CAAC,GAC3BL,KAAK,CAAClT,GAAG;CACbwT,QAAAA,SAAS,EAAE,OAAO;CAClBH,QAAAA,WAAW,EAAXA,WAAW;CACXH,QAAAA,KAAK,EAAEpP,KAAAA;CACT,OAAC,CACH,CAAC,CAAA;OACD,IAAIoP,KAAK,CAACO,OAAO,EAAE;CACjBd,QAAAA,MAAI,CAACe,kBAAkB,CAACR,KAAK,CAACO,OAAO,CAAC,CAAA;CACxC,OAAA;CACF,KAAC,CAAC,CAAA;CACF,IAAA,IAAI,CAAC/B,MAAM,CAAC9L,QAAQ,CAAC,CAAA;IACtB,CAAA;CAAAgL,EAAAA,MAAA,CAED+C,iBAAiB,GAAjB,SAAAA,iBAAAA,CAAkBC,WAA4B,EAAE;CAAA,IAAA,IAAAC,MAAA,GAAA,IAAA,CAAA;CAC9C,IAAA,IAAAC,iBAAA,GAA6B,IAAI,CAACrO,KAAK,CAACI,IAAI;OAApC8H,MAAM,GAAAmG,iBAAA,CAANnG,MAAM;OAAE/H,QAAQ,GAAAkO,iBAAA,CAARlO,QAAQ,CAAA;CACxB,IAAA,IAAI,CAAC+H,MAAM,IAAI,CAAC/H,QAAQ,EAAE;CACxB,MAAA,OAAA;CACF,KAAA;CACA,IAAA,IAAQmO,UAAU,GAAKtG,IAAI,CAACuD,GAAG,CAAvB+C,UAAU,CAAA;CAClBH,IAAAA,WAAW,CAACpI,OAAO,CAAC,UAACwI,KAAoB,EAAE/L,CAAC,EAAK;OAC/C0F,MAAM,CAAC/J,IAAI,CAACqQ,iBAAiB,CAACD,KAAK,EAAE/L,CAAC,CAAC,CAAC,CAAA;CACxCrC,MAAAA,QAAQ,CAAChC,IAAI,CACX0P,mBAAmB,CAAC;SAClBtT,GAAG,EAAEgU,KAAK,CAAChU,GAAG;CACdwT,QAAAA,SAAS,EAAE,YAAY;CACvBH,QAAAA,WAAW,EAAEU,UAAU,KAAK9L,CAAC,GAAG,wBAAwB,GAAG,IAAI;CAC/D8L,QAAAA,UAAU,EAAE9L,CAAAA;CACd,OAAC,CACH,CAAC,CAAA;OACD,IAAI+L,KAAK,CAACP,OAAO,EAAE;CACjBI,QAAAA,MAAI,CAACH,kBAAkB,CAACM,KAAK,CAACP,OAAO,CAAC,CAAA;CACxC,OAAA;CACF,KAAC,CAAC,CAAA;CACF,IAAA,IAAI,CAAC/B,MAAM,CAAC9L,QAAQ,CAAC,CAAA;IACtB,CAAA;CAAAgL,EAAAA,MAAA,CAEDsD,oBAAoB,GAApB,SAAAA,oBAAAA,CAAqBC,SAA0B,EAAE;CAAA,IAAA,IAAAC,MAAA,GAAA,IAAA,CAAA;CAC/C,IAAA,IAAAC,iBAAA,GAA6B,IAAI,CAAC5O,KAAK,CAACI,IAAI;OAApC8H,MAAM,GAAA0G,iBAAA,CAAN1G,MAAM;OAAE/H,QAAQ,GAAAyO,iBAAA,CAARzO,QAAQ,CAAA;CACxB,IAAA,IAAI,CAAC+H,MAAM,IAAI,CAAC/H,QAAQ,EAAE;CACxB,MAAA,OAAA;CACF,KAAA;CACA,IAAA,IAAQ0O,aAAa,GAAK7G,IAAI,CAACuD,GAAG,CAA1BsD,aAAa,CAAA;CACrBH,IAAAA,SAAS,CAAC3I,OAAO,CAAC,UAACwI,KAAK,EAAE/L,CAAC,EAAK;OAC9B0F,MAAM,CAAC/J,IAAI,CAAC2Q,gBAAgB,CAACP,KAAK,EAAE/L,CAAC,CAAC,CAAC,CAAA;CACvCrC,MAAAA,QAAQ,CAAChC,IAAI,CACX0P,mBAAmB,CAAC;SAClBtT,GAAG,EAAEgU,KAAK,CAAChU,GAAG;CACdwT,QAAAA,SAAS,EAAE,eAAe;CAC1BH,QAAAA,WAAW,EAAEiB,aAAa,KAAKrM,CAAC,GAAG,wBAAwB,GAAG,IAAI;CAClEqM,QAAAA,aAAa,EAAErM,CAAAA;CACjB,OAAC,CACH,CAAC,CAAA;OACD,IAAI+L,KAAK,CAACP,OAAO,EAAE;CACjBW,QAAAA,MAAI,CAACV,kBAAkB,CAACM,KAAK,CAACP,OAAO,CAAC,CAAA;CACxC,OAAA;CACF,KAAC,CAAC,CAAA;CACF,IAAA,IAAI,CAAC/B,MAAM,CAAC9L,QAAQ,CAAC,CAAA;IACtB,CAAA;CAAAgL,EAAAA,MAAA,CAED4D,UAAU,GAAV,SAAAA,UAAAA,CACEhB,SAAiE,EACjE;CACA,IAAA,IAAAiB,iBAAA,GAA6B,IAAI,CAAChP,KAAK,CAACI,IAAI;OAApC8H,MAAM,GAAA8G,iBAAA,CAAN9G,MAAM;OAAE/H,QAAQ,GAAA6O,iBAAA,CAAR7O,QAAQ,CAAA;CACxB,IAAA,IAAI,CAAC+H,MAAM,IAAI,CAAC/H,QAAQ,EAAE;CACxB,MAAA,OAAA;CACF,KAAA;CACA,IAAA,IAAIqC,CAAC,GAAGrC,QAAQ,CAACQ,MAAM,CAAA;KACvB,OAAO6B,CAAC,EAAE,EAAE;OACV,IAAKrC,QAAQ,CAACqC,CAAC,CAAC,CAASuL,SAAS,KAAKA,SAAS,EAAE;CAChD5N,QAAAA,QAAQ,CAAC8O,MAAM,CAACzM,CAAC,EAAE,CAAC,CAAC,CAAA;CACrB0F,QAAAA,MAAM,CAAC+G,MAAM,CAACzM,CAAC,EAAE,CAAC,CAAC,CAAA;CACrB,OAAA;CACF,KAAA;IACD,CAAA;CAAA2I,EAAAA,MAAA,CAED8C,kBAAkB,GAAlB,SAAAA,kBAAAA,CAAmBD,OAAqB,EAAE;CACxC,IAAA,IAAQkB,cAAc,GAAyBlB,OAAO,CAA9CkB,cAAc;OAAEC,aAAa,GAAUnB,OAAO,CAA9BmB,aAAa;OAAE5U,GAAG,GAAKyT,OAAO,CAAfzT,GAAG,CAAA;KAC1C,IAAQ4F,QAAQ,GAAK,IAAI,CAACH,KAAK,CAACI,IAAI,CAA5BD,QAAQ,CAAA;CAChB,IAAA,IAAIiP,YAAY,GAAGC,SAAS,CAC1BlP,QAAQ,EACR,UAACwB,OAAO,EAAA;CAAA,MAAA,OACN2N,uBAAuB,CAAC/U,GAAG,CAAC,KAC5B+U,uBAAuB,CAAC3N,OAAO,CAACpH,GAAG,IAAI,EAAE,CAAC,CAAA;CAAA,KAC9C,CAAC,CAAA;KACD,IAAI,CAAC6U,YAAY,EAAE;CACjBA,MAAAA,YAAY,GAAGC,SAAS,CACtBlP,QAAQ,EACR,UAACwB,OAAO,EAAA;CAAA,QAAA,IAAA4N,mBAAA,CAAA;CAAA,QAAA,OAAK,EAAAA,mBAAA,GAAAvB,OAAO,CAACwB,SAAS,CAAC,CAAC,CAAC,KAAA,IAAA,GAAA,KAAA,CAAA,GAApBD,mBAAA,CAAsB9B,KAAK,MAAK9L,OAAO,CAAC8L,KAAK,CAAA;CAAA,OAC5D,CAAC,CAAA;CACH,KAAA;KACA,IAAI,CAAC2B,YAAY,EAAE;CACjB,MAAA,OAAA;CACF,KAAA;CACA,IAAA,IAAMhP,IAAI,GAAGgP,YAAY,CAAChP,IAAI,CAAA;KAC9BA,IAAI,CAACO,MAAM,GAAG,CAAC,CAAA;KACf,IAAIqN,OAAO,CAACwB,SAAS,EAAE;CACrBxB,MAAAA,OAAO,CAACwB,SAAS,CAACzJ,OAAO,CAAC,UAAC0J,QAAQ,EAAK;CACtC;CACA;SACA,IAAMC,aAAa,GAAGhL,QAAA,CACpB;CACExB,UAAAA,QAAQ,EAAE,UAAA;CACZ,SAAC,EACDuM,QAAQ;CACR;CACA,QAAA;CAAEE,UAAAA,MAAM,EAAE,IAAA;CAAK,SACjB,CAAC,CAAA;CACDvP,QAAAA,IAAI,CAACjC,IAAI,CAACuR,aAAa,CAAC,CAAA;CAC1B,OAAC,CAAC,CAAA;CACJ,KAAA;KACA,IAAI1B,OAAO,CAAC4B,QAAQ,EAAE;CACpB5B,MAAAA,OAAO,CAAC4B,QAAQ,CAAC7J,OAAO,CAAC,UAAC8J,IAAI,EAAK;SACjC,IAAMC,SAAS,GAAGpL,QAAA,CAChB;CACExB,UAAAA,QAAQ,EAAE,MAAM;WAChB3C,KAAK,EAAEsP,IAAI,CAACJ,QAAQ,CAAClP,KAAK,GAAGsP,IAAI,CAACE,UAAAA;UACnC,EACDF,IAAI,EACJ;WACEJ,QAAQ,EAAE/K,QAAA,CAAc,EAAE,EAAEmL,IAAI,CAACJ,QAAQ,EAAE;CAAEE,YAAAA,MAAM,EAAE,IAAA;YAAM,CAAA;CAC7D,SACF,CAAC,CAAA;CACDvP,QAAAA,IAAI,CAACjC,IAAI,CAAC2R,SAAS,CAAC,CAAA;CACtB,OAAC,CAAC,CAAA;OACF,IAAI9B,OAAO,CAACgC,YAAY,EAAE;SACxB,IAAMN,aAAa,GAAGhL,QAAA,CACpB;CACExB,UAAAA,QAAQ,EAAE,cAAA;UACX,EACD8K,OAAO,CAACgC,YAAY;CACpB;CACA,QAAA;CAAEL,UAAAA,MAAM,EAAE,IAAA;CAAK,SACjB,CAAC,CAAA;CACDvP,QAAAA,IAAI,CAACjC,IAAI,CAACuR,aAAa,CAAC,CAAA;CAC1B,OAAA;CACF,KAAA;CACA,IAAA,IAAMnP,KAAK,GAAG0P,gBAAgB,CAACjC,OAAO,CAAC,CAAA;KACvC,IAAI,CAACkC,OAAO,GAAG,IAAI,CAACpI,OAAO,GAAG3F,IAAI,CAAC1B,GAAG,CACpCF,KAAK,GAAG4O,aAAa,GAAGD,cAAc,GAAG,CAAC,EAC1C,IAAI,CAACpH,OACP,CAAC,CAAA;KACD,IAAI,CAAC2D,eAAe,EAAE,CAAA;CACxB,GAAA;;CAEA;CAAA,GAAA;CAAAN,EAAAA,MAAA,CA4BAgF,cAAc,GAAd,SAAAA,cAAAA,CAAe/P,IAAuD,EAAE;KACtE,IAAQD,QAAQ,GAAK,IAAI,CAACH,KAAK,CAACI,IAAI,CAA5BD,QAAQ,CAAA;CAChB,IAAA,IAAMiQ,IAAc,GAAGhQ,IAAI,CAACgQ,IAAI,CAAA;CAChC,IAAA,IAAIhB,YAAY,GAAGC,SAAS,CAC1BlP,QAAQ,EACR,UAACwB,OAAO,EAAA;CAAA,MAAA,OAAKyO,IAAI,CAACC,OAAO,KAAK1O,OAAO,CAACpH,GAAG,CAAA;CAAA,KAC3C,CAAC,CAAA;KACD,IAAI,CAAC6U,YAAY,EAAE;CACjBA,MAAAA,YAAY,GAAGC,SAAS,CACtBlP,QAAQ,EACR,UAACwB,OAAO,EAAA;CAAA,QAAA,OAAKyO,IAAI,CAAC3C,KAAK,KAAK9L,OAAO,CAAC8L,KAAK,CAAA;CAAA,OAC3C,CAAC,CAAA;CACH,KAAA;KACA,IAAI,CAAC2B,YAAY,EAAE;CACjB,MAAA,OAAA;CACF,KAAA;CACA;KACA,IAAMkB,QAAQ,GAAGjB,SAAS,CACxBD,YAAY,CAAChP,IAAI,EACjB,UAACkQ,QAAQ,EAAA;CAAA,MAAA,OAAKA,QAAQ,CAACC,MAAM,KAAKH,IAAI,CAACG,MAAM,IAAID,QAAQ,CAACrL,EAAE,KAAKmL,IAAI,CAACnL,EAAE,CAAA;CAAA,KAC1E,CAAC,CAAA;CACD,IAAA,IAAIqL,QAAQ,IAAIA,QAAQ,KAAKF,IAAI,EAAE;CACjC1L,MAAAA,QAAA,CAAc4L,QAAQ,EAAEF,IAAI,CAAC,CAAA;CAC/B,KAAA;KACA,IAAI,CAAC3E,eAAe,EAAE,CAAA;IACvB,CAAA;GAAAN,MAAA,CAEDqF,mBAAmB,GAAnB,SAAAA,oBAAoBC,MAAgB,EAAE/I,KAAuB,EAAE;CAAA,IAAA,IAAAgJ,MAAA,GAAA,IAAA,CAAA;CAC7D,IAAA,IAAAC,iBAAA,GAA6B,IAAI,CAAC3Q,KAAK,CAACI,IAAI;OAApC8H,MAAM,GAAAyI,iBAAA,CAANzI,MAAM;OAAE/H,QAAQ,GAAAwQ,iBAAA,CAARxQ,QAAQ,CAAA;CACxB,IAAA,IAAI,CAAC+H,MAAM,IAAI,CAAC/H,QAAQ,EAAE;CACxB,MAAA,OAAA;CACF,KAAA;CACA,IAAA,IAAMyQ,UAAU,GAAG/K,MAAM,CAAC5H,IAAI,CAACwS,MAAM,CAAC,CAACrS,IAAI,CAAC,UAAC6J,IAAI,EAAA;CAAA,MAAA,OAC/CA,IAAI,KAAK,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;CAAA,KAC3B,CAAC,CAAA;KACD,IAAM4I,eAAe,GAAG,EAAE,CAAA;KAE1B,IAAI,CAACC,mBAAmB,EAAE,CAAA;KAE1B,IAAI,CAACpJ,KAAK,GAAGA,KAAK,CAAA;CAElBkJ,IAAAA,UAAU,CAAC7K,OAAO,CAAC,UAACkC,IAAI,EAAK;CAC3B,MAAA,IAAMsG,KAAK,GAAGkC,MAAM,CAACxI,IAAI,CAAC,CAAA;OAC1B,IAAM7H,IAAI,GAAG,EAAE,CAAA;CACf,MAAA,IAAM2Q,YAAY,GAAGxC,KAAK,CAACyC,MAAM,CAAA;CACjC,MAAA,IAAM/M,eAAe,GAAG;CACtBgN,QAAAA,KAAK,EAAE,sBAAsB;CAC7BC,QAAAA,KAAK,EAAE,wBAAwB;CAC/BC,QAAAA,UAAU,EAAE,0BAAA;QACb,CAAClJ,IAAI,CAAC,CAAA;OACPC,MAAM,CAACkJ,OAAO,CAAInJ,IAAI,iBAAYsG,KAAK,CAACb,EAAE,GAAA,GAAG,CAAC,CAAA;CAC9CvN,MAAAA,QAAQ,CAACiR,OAAO,CACdvD,mBAAmB,CAAC;CAClBzN,QAAAA,IAAI,EAAJA,IAAI;CACJkB,QAAAA,kBAAkB,EAAE,GAAG;CACvB2C,QAAAA,eAAe,EAAfA,eAAe;CACf8M,QAAAA,YAAY,EAAZA,YAAAA;CACF,OAAC,CACH,CAAC,CAAA;CACDA,MAAAA,YAAY,CAACM,gBAAgB,CAAC,QAAQ,EAAE,YAAM;SAC5C,IAAI;CACFC,UAAAA,sBAAsB,CAACP,YAAY,CAACQ,QAAQ,EAAEnR,IAAI,CAAC,CAAA;UACpD,CAAC,OAAOoR,KAAK,EAAE;CACd;CACAtS,UAAAA,OAAO,CAAC+G,IAAI,CAACuL,KAAK,CAAC,CAAA;CACnB,UAAA,OAAA;CACF,SAAA;CACAF,QAAAA,sBAAsB,CAAC5J,KAAK,CAAC6J,QAAQ,EAAEV,eAAe,CAAC,CAAA;SACvDH,MAAI,CAACxH,MAAM,EAAE,CAAA;CACf,OAAC,CAAC,CAAA;CACJ,KAAC,CAAC,CAAA;CAEF,IAAA,IAAI0H,UAAU,CAACjQ,MAAM,KAAK,CAAC,EAAE;OAC3B+G,KAAK,CAAC+J,UAAU,GAAG,YAAM;CACvBH,QAAAA,sBAAsB,CAAC5J,KAAK,CAAC6J,QAAQ,EAAEV,eAAe,CAAC,CAAA;SACvDH,MAAI,CAACxH,MAAM,EAAE,CAAA;QACd,CAAA;CACH,KAAA;CAEAhB,IAAAA,MAAM,CAACkJ,OAAO,CAAC,cAAc,CAAC,CAAA;CAC9BjR,IAAAA,QAAQ,CAACiR,OAAO,CACdvD,mBAAmB,CAAC;CAClBzN,MAAAA,IAAI,EAAEyQ,eAAe;CACrBvP,MAAAA,kBAAkB,EAAE,GAAG;CACvB2C,MAAAA,eAAe,EAAE,sBAAsB;CACvCyD,MAAAA,KAAK,EAALA,KAAAA;CACF,KAAC,CACH,CAAC,CAAA;KAEDA,KAAK,CAACgK,YAAY,GAAG,YAAA;CAAA,MAAA,OAAMhB,MAAI,CAACpI,eAAe,EAAE,CAAA;CAAA,KAAA,CAAA;;CAEjD;CACA,IAAA,IAAQqJ,UAAU,GAAKjK,KAAK,CAApBiK,UAAU,CAAA;KAClB,IAAI,CAAChK,mBAAmB,GACtB,IAAI,CAACA,mBAAmB,IAAK,UAACiK,CAAC,EAAA;CAAA,MAAA,OAAKlB,MAAI,CAACmB,aAAa,CAACD,CAAC,CAACE,aAAa,CAAC,CAAA;MAAC,CAAA;KAC1EH,UAAU,CAACI,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAACpK,mBAAmB,CAAC,CAAA;KACpEgK,UAAU,CAACI,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAACpK,mBAAmB,CAAC,CAAA;KACvEgK,UAAU,CAACI,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAACpK,mBAAmB,CAAC,CAAA;KAClEgK,UAAU,CAACN,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC1J,mBAAmB,CAAC,CAAA;KACjEgK,UAAU,CAACN,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC1J,mBAAmB,CAAC,CAAA;KACpEgK,UAAU,CAACN,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC1J,mBAAmB,CAAC,CAAA;CAC/D,IAAA,IAAI,CAACkK,aAAa,CAACF,UAAU,CAAC,CAAA;CAC9B,IAAA,IAAI,CAAC1F,MAAM,CAAC9L,QAAQ,CAAC,CAAA;IACtB,CAAA;CAAAgL,EAAAA,MAAA,CAED2F,mBAAmB,GAAnB,SAAAA,sBAAsB;CACpB,IAAA,IAAAkB,iBAAA,GAA6B,IAAI,CAAChS,KAAK,CAACI,IAAI;OAApC8H,MAAM,GAAA8J,iBAAA,CAAN9J,MAAM;OAAE/H,QAAQ,GAAA6R,iBAAA,CAAR7R,QAAQ,CAAA;CACxB,IAAA,IAAI,CAAC+H,MAAM,IAAI,CAAC/H,QAAQ,EAAE;CACxB,MAAA,OAAA;CACF,KAAA;CACA,IAAA,IAAIqC,CAAC,GAAGrC,QAAQ,CAACQ,MAAM,CAAA;KACvB,OAAO6B,CAAC,EAAE,EAAE;CACV,MAAA,IAAI,CAAC0F,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE+J,QAAQ,EAAE,CAACC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;CACvD/R,QAAAA,QAAQ,CAAC8O,MAAM,CAACzM,CAAC,EAAE,CAAC,CAAC,CAAA;CACrB0F,QAAAA,MAAM,CAAC+G,MAAM,CAACzM,CAAC,EAAE,CAAC,CAAC,CAAA;CACrB,OAAA;CACF,KAAA;IACD,CAAA;CAAA2I,EAAAA,MAAA,CAED0G,aAAa,GAAb,SAAAA,aAAAA,CAAcF,UAAU,EAAE;CAAA,IAAA,IAAAQ,MAAA,GAAA,IAAA,CAAA;CACxB,IAAA,IAAAC,iBAAA,GAA6B,IAAI,CAACpS,KAAK,CAACI,IAAI;OAApC8H,MAAM,GAAAkK,iBAAA,CAANlK,MAAM;OAAE/H,QAAQ,GAAAiS,iBAAA,CAARjS,QAAQ,CAAA;CACxB,IAAA,IAAI,CAAC+H,MAAM,IAAI,CAAC/H,QAAQ,EAAE;CACxB,MAAA,OAAA;CACF,KAAA;CACA,IAAA,IAAI,CAAC4O,UAAU,CAAC,WAAW,CAAC,CAAA;KAC5B,EAAE,CAAChJ,OAAO,CAACsM,IAAI,CAACV,UAAU,EAAE,UAACW,SAAS,EAAE9P,CAAC,EAAK;CAC5C;CACA;CACA;CACA;OACA,IAAMpC,IAAI,GAAG,EAAE,CAAA;CACf8H,MAAAA,MAAM,CAAC/J,IAAI,CAAA,CACNmU,SAAS,CAAClW,IAAI,IAAIkW,SAAS,CAACC,KAAK,IAAID,GAAAA,GAAAA,SAAS,CAACE,IAAI,GAAA,IAAA,GACpDF,SAAS,CAACG,IAAI,MAElB,CAAC,CAAA;CACDtS,MAAAA,QAAQ,CAAChC,IAAI,CACX0P,mBAAmB,CAAC;CAClBzN,QAAAA,IAAI,EAAJA,IAAI;CACJkB,QAAAA,kBAAkB,EAAE,GAAG;CACvB/G,QAAAA,GAAG,EAAE,EAAE;CACPwT,QAAAA,SAAS,EAAE,WAAW;SACtBH,WAAW,EACR0E,SAAS,CAACG,IAAI,KAAK,QAAQ,KAAMjQ,CAAC,GAC/B,wBAAwB,GACxB,IAAI;CACV8P,QAAAA,SAAS,EAAE9P,CAAAA;CACb,OAAC,CACH,CAAC,CAAA;OACD2P,MAAI,CAACvK,iBAAiB,GACpBuK,MAAI,CAACvK,iBAAiB,IACrB,UAACgK,CAAC,EAAA;CAAA,QAAA,OAAKO,MAAI,CAACO,mBAAmB,CAACd,CAAC,CAACE,aAAa,CAAC,CAAA;QAAC,CAAA;OACpDQ,SAAS,CAACK,KAAK,GAAGvS,IAAI,CAAA;OACtBkS,SAAS,CAACP,mBAAmB,CAAC,WAAW,EAAEI,MAAI,CAACvK,iBAAiB,CAAC,CAAA;OAClE0K,SAAS,CAACjB,gBAAgB,CAAC,WAAW,EAAEc,MAAI,CAACvK,iBAAiB,CAAC,CAAA;CAC/DuK,MAAAA,MAAI,CAACO,mBAAmB,CAACJ,SAAS,CAAC,CAAA;CACrC,KAAC,CAAC,CAAA;CACF,IAAA,IAAI,CAACrG,MAAM,CAAC9L,QAAQ,CAAC,CAAA;IACtB,CAAA;CAAAgL,EAAAA,MAAA,CAEDuH,mBAAmB,GAAnB,SAAAA,mBAAAA,CAAoBJ,SAAS,EAAE;CAC7B,IAAA,IAAMlS,IAAI,GAAGkS,SAAS,CAACK,KAAK,CAAA;KAC5B,IAAI,CAACvS,IAAI,EAAE;CACT,MAAA,OAAA;CACF,KAAA;CACA,IAAA,IAAQwS,UAAU,GAAWN,SAAS,CAA9BM,UAAU;OAAEC,IAAI,GAAKP,SAAS,CAAlBO,IAAI,CAAA;KACxBzS,IAAI,CAACO,MAAM,GAAG,CAAC,CAAA;KACf,IAAI,CAACkS,IAAI,EAAE;CACT,MAAA,OAAA;CACF,KAAA;CACA,IAAA,IAAMlS,MAAM,GAAGkS,IAAI,CAAClS,MAAM,CAAA;KAE1B,IAAImS,YAAY,GAAG,CAAC,CAAA;KACpB,IAAIC,SAAS,GAAGC,QAAQ,CAAA;KACxB,IAAIC,SAAS,GAAG,CAAC,CAAA;CACjB,IAAA,IAAIL,UAAU,EAAE;OACdE,YAAY,GAAGF,UAAU,CAACjS,MAAM,CAAA;OAChC,KAAK,IAAI6B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGsQ,YAAY,EAAEtQ,CAAC,EAAE,EAAE;CACrC,QAAA,IAAI0Q,GAAG,GAAGN,UAAU,CAACpQ,CAAC,CAAC,CAAA;CACvB,QAAA,IAAI,CAAC0Q,GAAG,IAAIN,UAAU,CAACO,IAAI,EAAE;CAC3BD,UAAAA,GAAG,GAAGN,UAAU,CAACO,IAAI,CAAC3Q,CAAC,CAAC,CAAA;CAC1B,SAAA;CACA,QAAA,IAAI0Q,GAAG,EAAE;WACPH,SAAS,GAAG5Q,IAAI,CAACzB,GAAG,CAACqS,SAAS,EAAEG,GAAG,CAACE,SAAS,CAAC,CAAA;CAC9CH,UAAAA,SAAS,GAAGC,GAAG,CAACG,OAAO,GACnBlR,IAAI,CAAC1B,GAAG,CAACwS,SAAS,EAAEC,GAAG,CAACG,OAAO,CAAC,GAChCJ,SAAS,CAAA;CACf,SAAC,MAAM;CACLH,UAAAA,YAAY,EAAE,CAAA;CAChB,SAAA;CACF,OAAA;CACF,KAAA;KAAC,IAAAQ,KAAA,GAAAA,SAAAA,KAAAA,GACgC;CAC/B,MAAA,IAAIJ,GAAG,GAAGL,IAAI,CAACrQ,EAAC,CAAC,CAAA;CACjB,MAAA,IAAI,CAAC0Q,GAAG,IAAIL,IAAI,CAACM,IAAI,EAAE;CACrBD,QAAAA,GAAG,GAAGL,IAAI,CAACM,IAAI,CAAC3Q,EAAC,CAAC,CAAA;CACpB,OAAA;OACA,IAAI,CAAC0Q,GAAG,EAAE;CAAA,QAAA,OAAA,CAAA,CAAA;CAEV,OAAA;CACA,MAAA,IAAM3S,KAAK,GAAG2S,GAAG,CAACE,SAAS,CAAA;CAC3B,MAAA,IAAMxS,GAAG,GAAGsS,GAAG,CAACG,OAAO,CAAA;CACvB,MAAA,IAAMjO,OAAO,GAAGmO,WAAW,CAACL,GAAG,CAAC,CAAA;OAChC,IAAI1O,MAAM,GAAG,KAAK,CAAA;OAClB,IAAIsO,YAAY,IAAIlS,GAAG,IAAImS,SAAS,IAAIxS,KAAK,IAAI0S,SAAS,EAAE;SAC1DzO,MAAM,GAAG,EAAE,CAACgP,IAAI,CAACnB,IAAI,CAACO,UAAU,EAAE,UAACa,SAAS,EAAA;CAAA,UAAA,OAC1CC,SAAS,CAACD,SAAS,EAAEP,GAAG,CAAC,CAAA;CAAA,SAC3B,CAAC,CAAA;CACH,OAAA;OACA9S,IAAI,CAACjC,IAAI,CAAC;CACRoC,QAAAA,KAAK,EAALA,KAAK;CACLK,QAAAA,GAAG,EAAHA,GAAG;CACHwE,QAAAA,OAAO,EAAPA,OAAO;CACPZ,QAAAA,MAAM,EAANA,MAAM;CACNtB,QAAAA,QAAQ,EAAE,KAAA;CACZ,OAAC,CAAC,CAAA;MACH,CAAA;KAxBD,KAAK,IAAIV,EAAC,GAAG,CAAC,EAAEA,EAAC,GAAG7B,MAAM,EAAE6B,EAAC,EAAE,EAAA;CAAA,MAAA,IAAA8Q,KAAA,EAM3B,EAAA,SAAA;CAAS,KAAA;KAmBb,IAAI,CAAC7H,eAAe,EAAE,CAAA;IACvB,CAAA;CAAAN,EAAAA,MAAA,CAED7C,eAAe,GAAf,SAAAA,kBAAkB;CAAA,IAAA,IAAAqL,UAAA,CAAA;CAChB,IAAA,IAAM3T,KAAK,GAAG,IAAI,CAACA,KAAK,CAAA;CACxB,IAAA,IAAI,CAAA2T,UAAA,GAAA3L,IAAI,CAACuD,GAAG,aAARoI,UAAA,CAAUjM,KAAK,IAAI1H,KAAK,CAACI,IAAI,CAACD,QAAQ,CAAEQ,MAAM,EAAE;OAClD,IAAM6K,WAAW,GAAGxD,IAAI,CAACuD,GAAG,CAAC7D,KAAK,CAAC8D,WAAW,CAAA;CAC9C,MAAA,IAAMvL,KAAK,GAAG,IAAI,CAAC4I,WAAW,CAACzB,cAAc,CAAC,CAAA;CAC9C,MAAA,IAAMvF,GAAG,GAAG7B,KAAK,CAAC6B,GAAG,CAAA;CACrB,MAAA,IAAI,IAAI,CAACgG,MAAM,IAAI,CAAChG,GAAG,IAAI,CAACA,GAAG,CAACG,MAAM,CAAC8C,KAAK,EAAE;CAC5C,QAAA,OAAA;CACF,OAAA;CACA,MAAA,IAAMhD,SAAuC,GAAG9B,KAAK,CAAC8B,SAAS,CAAA;CAC/D,MAAA,IAAMe,CAAC,GAAG5C,KAAK,CAACa,gBAAgB,CAAC0K,WAAW,CAAC,CAAA;OAC7C3J,GAAG,CAAC+R,OAAO,EAAE,CAAA;OACb/R,GAAG,CAACgS,IAAI,EAAE,CAAA;OACV,IAAI,CAACC,SAAS,CAACjS,GAAG,EAAEgB,CAAC,EAAEf,SAAS,CAAC,CAAA;OACjC,IAAIe,CAAC,GAAGf,SAAS,CAACgB,IAAI,IAAID,CAAC,GAAGf,SAAS,CAACiB,KAAK,EAAE;CAC7ClB,QAAAA,GAAG,CAACqC,SAAS,GAAG,IAAI,CAAC6P,mBAAmB,CAAC/L,IAAI,CAACuD,GAAG,CAAC7D,KAAK,CAAC,CAAA;CACxD,QAAA,IAAMlE,CAAC,GAAG1B,SAAS,CAAC8E,GAAG,GAAG5G,KAAK,CAACI,IAAI,CAACD,QAAQ,CAAE,CAAC,CAAC,CAACkB,YAAY,GAAG,CAAC,CAAA;CAClEQ,QAAAA,GAAG,CAACkD,QAAQ,CAACW,MAAM,CAAC8F,WAAW,EAAE,CAAC,CAAC,EAAE3I,CAAC,GAAG,CAAC,EAAEW,CAAC,EAAE,GAAG,CAAC,CAAA;CACrD,OAAA;OACA3B,GAAG,CAAC+R,OAAO,EAAE,CAAA;CACf,KAAA;IACD,CAAA;CAAAzI,EAAAA,MAAA,CAED4I,mBAAmB,GAAnB,SAAAA,mBAAAA,CAAoB9C,KAAuB,EAAU;KACnD,IAAI,CAACA,KAAK,CAAC+C,UAAU,IAAI/C,KAAK,CAACgD,KAAK,EAAE;CACpC,MAAA,OAAO,oBAAoB,CAAA;CAC7B,KAAA;KACA,IAAIhD,KAAK,CAACiD,OAAO,IAAIjD,KAAK,CAAC+C,UAAU,GAAG,CAAC,EAAE;CACzC,MAAA,OAAO,wBAAwB,CAAA;CACjC,KAAA;KACA,IAAI/C,KAAK,CAACkD,MAAM,EAAE;CAChB,MAAA,OAAO,wBAAwB,CAAA;CACjC,KAAA;CACA,IAAA,OAAO,sBAAsB,CAAA;IAC9B,CAAA;GAAAhJ,MAAA,CAED2I,SAAS,GAAT,SAAAA,SAAAA,CAAUjS,GAAG,EAAEgB,CAAS,EAAEf,SAAS,EAAE;CACnC,IAAA,IAAI,CAAC,IAAI,CAAC2F,eAAe,EAAE;CACzB,MAAA,IAAM2M,gBAAgB,GAAGpM,IAAI,CAACoM,gBAAgB,IAAI,CAAC,CAAA;OACnD,IAAI,CAAC3M,eAAe,GAAG5F,GAAG,CAACwS,YAAY,CACrC,CAAC,EACD,CAAC,EACDvS,SAAS,CAACiB,KAAK,GAAGqR,gBAAgB,EAClCtS,SAAS,CAAC+E,MAAM,GAAGuN,gBACrB,CAAC,CAAA;CACH,KAAC,MAAM;OACLvS,GAAG,CAACqC,SAAS,GAAG,SAAS,CAAA;CACzBrC,MAAAA,GAAG,CAACsC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAErC,SAAS,CAACiB,KAAK,EAAEjB,SAAS,CAAC+E,MAAM,CAAC,CAAA;OACrDhF,GAAG,CAACyS,YAAY,CAAC,IAAI,CAAC7M,eAAe,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;CAC9C,KAAA;KACA,IAAI5E,CAAC,GAAGf,SAAS,CAACgB,IAAI,IAAID,CAAC,GAAGf,SAAS,CAACiB,KAAK,EAAE;OAC7ClB,GAAG,CAAC0S,SAAS,GAAG,CAAC,CAAA;CACjB1S,MAAAA,GAAG,CAAC2S,WAAW,GAAG,IAAI,CAACT,mBAAmB,CAAC/L,IAAI,CAACuD,GAAG,CAAC7D,KAAK,CAAC,CAAC;OAC3D7F,GAAG,CAAC4S,SAAS,EAAE,CAAA;OACf5S,GAAG,CAAC6S,MAAM,CAAC7R,CAAC,EAAEf,SAAS,CAAC8E,GAAG,CAAC,CAAA;OAC5B/E,GAAG,CAAC8S,MAAM,CAAC9R,CAAC,EAAEf,SAAS,CAAC+E,MAAM,CAAC,CAAA;OAC/BhF,GAAG,CAAC+S,MAAM,EAAE,CAAA;CACd,KAAA;IACD,CAAA;CAAAC,EAAAA,YAAA,CAAAxN,aAAA,EAAA,CAAA;KAAAnJ,GAAA,EAAA,aAAA;KAAA4W,GAAA,EA9hBD,SAAAA,GAAAA,GAAoD;CAClD,MAAA,OAAQ,IAAI,CAAC9U,KAAK,CAAS8F,MAAM,CAAA;CACnC,KAAA;CAAC,GAAA,EAAA;KAAA5H,GAAA,EAAA,SAAA;KAAA4W,GAAA,EA2OD,SAAAA,GAAAA,GAAsB;CACpB,MAAA,IAAM7U,KAAK,GAAG,IAAI,CAAC4I,WAAW,CAACzB,cAAc,CAAC,CAAA;CAC9C,MAAA,IAAInH,KAAK,EAAE;CACT,QAAA,OAAOA,KAAK,CAACF,OAAO,CAACkJ,KAAK,CAACvI,GAAG,CAAA;CAChC,OAAA;CACA,MAAA,OAAO,CAAC,CAAA;CACV,KAAA;;CAEA;CAAA,GAAA,EAAA;KAAAxC,GAAA,EAAA,SAAA;KAAA4W,GAAA,EACA,SAAAA,GAAAA,GAAsB;CACpB,MAAA,IAAM7U,KAAK,GAAG,IAAI,CAAC4I,WAAW,CAACzB,cAAc,CAAC,CAAA;CAC9C,MAAA,IAAInH,KAAK,EAAE;CACT,QAAA,OAAOA,KAAK,CAACF,OAAO,CAACkJ,KAAK,CAACxI,GAAG,CAAA;CAChC,OAAA;OACA,OAAO,IAAI,CAACqH,OAAO,CAAA;CACrB,KAAA;;CAEA;CAAA;CAAAiN,IAAAA,GAAA,EACA,SAAAA,GAAYlS,CAAAA,CAAS,EAAE;CACrB,MAAA,IAAMmS,WAAW,GAAG,IAAI,CAAC9E,OAAO,CAAA;OAChC,IAAM+E,OAAO,GAAG9S,IAAI,CAAC1B,GAAG,CAACoC,CAAC,EAAEmS,WAAW,CAAC,CAAA;CACxC,MAAA,IAAIA,WAAW,KAAK,EAAE,IAAIC,OAAO,KAAKD,WAAW,EAAE;CACjD,QAAA,IAAM/U,KAAK,GAAG,IAAI,CAAC4I,WAAW,CAACzB,cAAc,CAAC,CAAA;CAC9CnH,QAAAA,KAAK,CAACF,OAAO,CAACkJ,KAAK,CAACxI,GAAG,GAAGwU,OAAO,CAAA;CACnC,OAAA;CACF,KAAA;CAAC,GAAA,CAAA,CAAA,CAAA;CAAA,EAAA,OAAA5N,aAAA,CAAA;CAAA,CAAA,EAAA,CAAA;CA2RH,SAASiI,uBAAuBA,CAAC/U,GAAW,EAAU;GACpD,IAAIA,GAAG,KAAK,EAAE,EAAE;CACd,IAAA,OAAOA,GAAG,CAAA;CACZ,GAAA;GACA,IAAI;KACF,IAAM2a,MAAW,GAAG,IAAIlN,IAAI,CAACmN,GAAG,CAAC5a,GAAG,CAAC,CAAA;CACrC2a,IAAAA,MAAM,CAACE,YAAY,CAACC,MAAM,CAAC,UAAU,CAAC,CAAA;CACtCH,IAAAA,MAAM,CAACE,YAAY,CAACC,MAAM,CAAC,WAAW,CAAC,CAAA;CACvCH,IAAAA,MAAM,CAACE,YAAY,CAACC,MAAM,CAAC,WAAW,CAAC,CAAA;CACvCH,IAAAA,MAAM,CAACE,YAAY,CAAChX,IAAI,EAAE,CAAA;KAC1B,OAAO8W,MAAM,CAACI,IAAI,CAAA;IACnB,CAAC,OAAO1D,CAAC,EAAE;CACV,IAAA,OAAOrX,GAAG,CAAC2M,OAAO,CAAC,oCAAoC,EAAE,EAAE,CAAC,CAAA;CAC9D,GAAA;CACF,CAAA;CAEA,SAAS2G,mBAAmBA,CAAC9N,OAAO,EAAE;CACpC,EAAA,OAAO2E,QAAA,CACL;CACEtE,IAAAA,IAAI,EAAE,EAAE;CACRmV,IAAAA,OAAO,EAAEnO,cAAc;CACvB/F,IAAAA,YAAY,EAAE,EAAE;CAChBC,IAAAA,kBAAkB,EAAE,CAAA;IACrB,EACDvB,OACF,CAAC,CAAA;CACH,CAAA;CAEA,SAASkQ,gBAAgBA,CAACjC,OAAqB,EAAU;CAAA,EAAA,IAAAwH,kBAAA,CAAA;GACvD,OAAO,CAAAA,kBAAA,GAAAxH,OAAO,CAACwB,SAAS,KAAA,IAAA,IAAjBgG,kBAAA,CAAmB7U,MAAM,GAAGqN,OAAO,CAACwB,SAAS,CAAC,CAAC,CAAC,CAACjP,KAAK,GAAG,CAAC,CAAA;CACnE,CAAA;CAEA,SAASoN,YAAYA,CAACF,KAAY,EAAEpP,KAAa,EAAE;CAAA,EAAA,IAAAoX,YAAA,CAAA;GACjD,IAAIlD,KAAK,GAAG,iBAAiB,CAAA;GAC7B,IAAAkD,CAAAA,YAAA,GAAIhI,KAAK,CAACiI,KAAK,KAAXD,IAAAA,IAAAA,YAAA,CAAaE,SAAS,EAAE;KAC1BpD,KAAK,GAAMqD,qBAAqB,CAACnI,KAAK,CAAC,SAAIA,KAAK,CAACiI,KAAK,CAACC,SAAW,CAAA;KAClE,IAAIlI,KAAK,CAACrR,IAAI,EAAE;CACdmW,MAAAA,KAAK,GAAMA,KAAK,GAAA,IAAA,GAAK9E,KAAK,CAACrR,IAAI,GAAG,GAAA,CAAA;CACpC,KAAA;CACF,GAAC,MAAM,IAAIqR,KAAK,CAACrR,IAAI,EAAE;KACrBmW,KAAK,GAAG9E,KAAK,CAACrR,IAAI,CAAA;CACpB,GAAA;GACA,OAAUmW,KAAK,WAAMlU,KAAK,CAAA;CAC5B,CAAA;CAEA,SAASuX,qBAAqBA,CAACnI,KAAY,EAAE;CAC3C,EAAA,OAAOA,KAAK,CAACiI,KAAK,CAACG,UAAU,IAAIpI,KAAK,CAACiI,KAAK,CAACI,MAAM,IAAIrI,KAAK,CAACiI,KAAK,CAACK,KAAK,CAAA;CAC1E,CAAA;CAEA,SAASvH,iBAAiBA,CAACD,KAAoB,EAAElQ,KAAa,EAAE;CAC9D,EAAA,IAAMkU,KAAK,GAAGhE,KAAK,CAACyH,IAAI,GAAMzH,KAAK,CAACnS,IAAI,GAAA,GAAA,GAAImS,KAAK,CAACyH,IAAI,GAAKzH,KAAK,CAACnS,IAAI,CAAA;CACrE,EAAA,OAAUmW,KAAK,GAAA,IAAA,IAAKhE,KAAK,CAAC0H,OAAO,IAAI1H,KAAK,CAACmH,KAAK,CAAC,UAAU,CAAC,aAAOrX,KAAK,CAAA;CAC1E,CAAA;CAEA,SAASyQ,gBAAgBA,CAACP,KAAoB,EAAElQ,KAAa,EAAE;CAC7D,EAAA,IAAMkU,KAAK,GAAGhE,KAAK,CAACyH,IAAI,GAAMzH,KAAK,CAACnS,IAAI,GAAA,GAAA,GAAImS,KAAK,CAACyH,IAAI,GAAKzH,KAAK,CAACnS,IAAI,CAAA;CACrE,EAAA,OAAUmW,KAAK,GAAA,IAAA,IAAKhE,KAAK,CAAC0H,OAAO,IAAI1H,KAAK,CAACmH,KAAK,CAAC,UAAU,CAAC,aAAOrX,KAAK,CAAA;CAC1E,CAAA;CAEA,SAASiT,sBAAsBA,CAAC4E,UAAU,EAAE9V,IAAI,EAAE;GAChDA,IAAI,CAACO,MAAM,GAAG,CAAC,CAAA;CACf,EAAA,IAAQA,MAAM,GAAKuV,UAAU,CAArBvV,MAAM,CAAA;GACd,KAAK,IAAI6B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG7B,MAAM,EAAE6B,CAAC,EAAE,EAAE;CAC/BpC,IAAAA,IAAI,CAACjC,IAAI,CAAC,CAAC+X,UAAU,CAAC3V,KAAK,CAACiC,CAAC,CAAC,EAAE0T,UAAU,CAACtV,GAAG,CAAC4B,CAAC,CAAC,CAAC,CAAC,CAAA;CACrD,GAAA;CACF,CAAA;CAEA,SAASkR,SAASA,CAACyC,IAAI,EAAEC,IAAI,EAAE;GAC7B,OACED,IAAI,CAAC/C,SAAS,KAAKgD,IAAI,CAAChD,SAAS,IACjC+C,IAAI,CAAC9C,OAAO,KAAK+C,IAAI,CAAC/C,OAAO,IAC7B8C,IAAI,CAAC5X,IAAI,KAAK6X,IAAI,CAAC7X,IAAI,IACvB4X,IAAI,CAAC/V,IAAI,KAAKgW,IAAI,CAAChW,IAAI,IACvBiW,IAAI,CAACC,SAAS,CAACH,IAAI,CAACxX,KAAK,CAAC,KAAK0X,IAAI,CAACC,SAAS,CAACF,IAAI,CAACzX,KAAK,CAAC,CAAA;CAE7D,CAAA;CAEA,SAAS4U,WAAWA,CAACL,GAAG,EAAE;GACxB,IAAIA,GAAG,CAAC3U,IAAI,EAAE;KACZ,OAAO2U,GAAG,CAAC3U,IAAI,CAAA;CACjB,GAAA;CACA,EAAA,IAAMgY,MAAM,GAAGC,YAAY,CAACtD,GAAG,CAAC,CAAA;CAChC,EAAA,OAAOmD,IAAI,CAACC,SAAS,CAACC,MAAM,CAAC,CAAA;CAC/B,CAAA;CAEA,SAASC,YAAYA,CAACtD,GAAG,EAAE;GACzB,IAAM9S,IAAI,GAAG,EAAE,CAAA;CACf,EAAA,IAAQzB,KAAK,GAAKuU,GAAG,CAAbvU,KAAK,CAAA;CACb,EAAA,IAAIA,KAAK,EAAE;KACT,IAAIA,KAAK,CAAC8X,IAAI,EAAE;CACd,MAAA,IAAIC,UAAU,GAAGtW,IAAI,CAACzB,KAAK,CAACT,GAAG,CAAC,CAAA;CAChC,MAAA,IAAIwY,UAAU,KAAK7Q,MAAM,CAAC6Q,UAAU,CAAC,EAAE;SACrCA,UAAU,GAAG,EAAE,CAAA;CACftW,QAAAA,IAAI,CAACzB,KAAK,CAACT,GAAG,CAAC,GAAGwY,UAAU,CAAA;CAC9B,OAAA;OACAA,UAAU,CAAC/X,KAAK,CAAC8X,IAAI,CAAC,GAAG9X,KAAK,CAACyB,IAAI,CAAA;CACrC,KAAC,MAAM;OACLA,IAAI,CAACzB,KAAK,CAACT,GAAG,CAAC,GAAGS,KAAK,CAACyB,IAAI,CAAA;CAC9B,KAAA;CACF,GAAA;CACA,EAAA,OAAOA,IAAI,CAAA;CACb,CAAA;CAEA,SAAS+H,eAAeA,GAAG;GACzB,OAAO;CACLwO,IAAAA,SAAS,EAAE;CACTtQ,MAAAA,QAAQ,EAAE,CAAA;MACX;CACDuQ,IAAAA,QAAQ,EAAE;CACRC,MAAAA,SAAS,EAAE;CACT/S,QAAAA,WAAW,EAAE,CAAC;CACd8J,QAAAA,WAAW,EAAE,qBAAA;CACf,OAAA;MACD;CACDkJ,IAAAA,MAAM,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC;CAC/BC,IAAAA,KAAK,EAAE;CACLtE,MAAAA,IAAI,EAAE,IAAI;CACVuE,MAAAA,iBAAiB,EAAE,CAAA;MACpB;CACDC,IAAAA,MAAM,EAAE;CACNC,MAAAA,OAAO,EAAE,KAAA;MACV;CACDC,IAAAA,mBAAmB,EAAE,KAAK;CAE1BC,IAAAA,2BAA2B,EAAE,CAAC;CAC9BtR,IAAAA,MAAM,EAAE;CACN;CACAuR,MAAAA,KAAK,EAAE,CACL;CACE3J,QAAAA,EAAE,EAAEtG,cAAc;CAClB6B,QAAAA,KAAK,EAAE;CACLqO,UAAAA,WAAW,EAAE,IAAI;CACjBC,UAAAA,UAAU,EAAE,CAAC;CACbC,UAAAA,WAAW,EAAE,CAAC;WACdC,QAAQ,EAAE,SAAAA,QAACC,CAAAA,SAAS,EAAElV,CAAC,EAAEyG,KAAK,EAAK;aACjC,IAAIzG,CAAC,KAAK,CAAC,IAAIA,CAAC,KAAKyG,KAAK,CAACtI,MAAM,GAAG,CAAC,EAAE;CACrC,cAAA,OAAO+W,SAAS,GAAG,EAAE,GAAG,GAAG,CAAA;CAC7B,aAAC,MAAM;CACL,cAAA,OAAOhS,MAAM,CAACgS,SAAS,EAAE,CAAC,CAAC,CAAA;CAC7B,aAAA;CACF,WAAA;CACF,SAAA;CACF,OAAC,CACF;CACDC,MAAAA,KAAK,EAAE,CACL;CACEC,QAAAA,SAAS,EAAE;CACTV,UAAAA,OAAO,EAAE,KAAA;CACX,SAAA;QACD,CAAA;MAEJ;CACDW,IAAAA,QAAQ,EAAE;CACRC,MAAAA,OAAO,EAAE,KAAA;CACX,KAAA;IACD,CAAA;CACH,CAAA;CAEA,SAASzI,SAASA,CAAC0I,KAAK,EAAEC,SAAS,EAAE;CACnC,EAAA,IAAMtW,GAAG,GAAGqW,KAAK,CAACpX,MAAM,KAAK,CAAC,CAAA;CAC9B,EAAA,IAAI,OAAOqX,SAAS,KAAK,UAAU,EAAE;KACnC,MAAMC,SAAS,CAAC,8BAA8B,CAAC,CAAA;CACjD,GAAA;CACA,EAAA,IAAMC,OAAO,GAAGC,SAAS,CAAC,CAAC,CAAC,CAAA;GAC5B,IAAIC,CAAC,GAAG,CAAC,CAAA;GACT,OAAOA,CAAC,GAAG1W,GAAG,EAAE;CACd,IAAA,IAAM2W,MAAM,GAAGN,KAAK,CAACK,CAAC,CAAC,CAAA;CACvB,IAAA,IAAIJ,SAAS,CAAC3F,IAAI,CAAC6F,OAAO,EAAEG,MAAM,EAAED,CAAC,EAAEL,KAAK,CAAC,EAAE;CAC7C,MAAA,OAAOM,MAAM,CAAA;CACf,KAAA;CACAD,IAAAA,CAAC,EAAE,CAAA;CACL,GAAA;CACA;CACA,EAAA,OAAO5X,SAAS,CAAA;CAClB;;;;CC36BA,IAAM8X,YAAY,GAAG;CACnBC,EAAAA,kBAAkB,EAAE,6BAA6B;CACjDC,EAAAA,UAAU,EAAE,cAAc;CAC1BC,EAAAA,MAAM,EAAE,cAAc;CACtBC,EAAAA,SAAS,EAAE,iBAAA;CACb,CAAC,CAAA;CAED,IAAMzd,WAAW,GAAGuE,aAAgC,CAAA;CACpD,IAAMmZ,oBAAoB,GAAG1d,WAAW,CAAC4K,MAAM,CAAC5H,IAAI,CAAChD,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAACV,GAAG,CAAA;CACzE,IAAMqe,SAAS,GAAGC,kBAAkB,CAACC,WAAW,CAAC,KAAK,EAAEH,oBAAoB,CAAC,CAAC,CAAA;CAE9E,IAAII,UAAU,GAAGD,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;CAChD,IAAIC,UAAU,EAAE;GACdA,UAAU,GAAG1C,IAAI,CAAC2C,KAAK,CAACC,IAAI,CAACF,UAAU,CAAC,CAAC,CAAA;CAC3C,CAAC,MAAM;GACLA,UAAU,GAAG,EAAE,CAAA;CACjB,CAAA;CAEA,IAAMG,aAAa,GAAG;CACpBC,EAAAA,KAAK,EAAE,IAAI;CACXC,EAAAA,YAAY,EAAE,IAAI;CAClBC,EAAAA,cAAc,EAAE,IAAI;GACpBC,gBAAgB,EAAE,EAAE,GAAG,GAAA;CACzB,CAAC,CAAA;CAED,IAAIC,eAAe,GAAGC,0BAA0B,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAA;CACzE,IAAIC,gBAAgB,GAAGD,0BAA0B,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAA;CAC3E,IAAIE,YAAY,GAAGF,0BAA0B,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAA;CACjE,IAAIG,YAAY,GAAGH,0BAA0B,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAA;CACjE,IAAII,QAAQ,GAAGJ,0BAA0B,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;CAC5D,IAAIK,WAAW,GAAGL,0BAA0B,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA;CAElE,IAAIM,YAAY,GAAG,CAAC,CAAC,CAAA;CACrB,IAAIC,kBAAkB,GAAG,IAAI,CAAA;CAE7B,IAAI9I,KAAK,GAAGxS,QAAQ,CAACub,aAAa,CAAC,QAAQ,CAAC,CAAA;CAC5C,IAAM5G,SAAS,GAAG6G,IAAI,CAACC,GAAG,EAAE,CAAA;CAE5B,IAAIC,cAAc,CAAA;CAClB,IAAIC,iBAAiB,CAAA;CACrB,IAAIC,YAAY,CAAA;CAChB,IAAIC,0BAA0B,CAAA;CAC9B,IAAI/O,GAAG,CAAA;CACP,IAAIhR,GAAG,CAAA;CACP,IAAIuc,MAAM,CAAA;CACV,IAAI3T,KAAK,CAAA;CACT,IAAIsN,MAAM,CAAA;CACV,IAAI8J,QAAQ,CAAA;CACZ,IAAIC,wBAAwB,GAAG,KAAK,CAAA;CACpC,IAAIC,YAAY,GAAG,IAAI,CAAA;CACvB,IAAIza,KAAK,CAAA;CACT,IAAI0a,qBAAqB,GAAG,CAAC,CAAC,CAAA;CAE9B,IAAMpO,qBAAqB,GAAGtE,IAAI,CAACsE,qBAAqB,IAAItE,IAAI,CAAC2S,UAAU,CAAA;CAC3E,IAAMxO,oBAAoB,GAAGnE,IAAI,CAACmE,oBAAoB,IAAInE,IAAI,CAAC4S,YAAY,CAAA;CAC3E,IAAMC,cAAc,GAAG,EAAE,CAAA;CACzB,IAAM5O,MAAM,GAAG,SAATA,MAAMA,GAAS;GACnBE,oBAAoB,CAACuO,qBAAqB,CAAC,CAAA;GAC3CA,qBAAqB,GAAGpO,qBAAqB,CAAC,YAAM;CAClDuO,IAAAA,cAAc,CAAC9U,OAAO,CAAC,UAAC+U,OAAO,EAAK;CAClCA,MAAAA,OAAO,EAAE,CAAA;CACf,KAAK,CAAC,CAAA;CACN,GAAG,CAAC,CAAA;CACJ,CAAC,CAAA;CAED9S,IAAI,CAAC+S,QAAQ,GAAG9O,MAAM,CAAA;CACtB,IAAIjE,IAAI,CAACgT,MAAM,IAAIhT,IAAI,CAACgT,MAAM,CAACC,WAAW,EAAE;CAC1CjT,EAAAA,IAAI,CAACgT,MAAM,CAACC,WAAW,CAACC,QAAQ,GAAGjP,MAAM,CAAA;CAC3C,CAAA;CAEA,IAAMkP,YAAY,GAAG,SAAfA,YAAYA,GAAS;CACzB,EAAA,IAAMzX,MAAM,GAAGuN,KAAK,CAACmK,qBAAqB,EAAE,CAAA;CAC5CC,EAAAA,CAAC,CAAC,cAAc,CAAC,CAACC,IAAI,CACjBnZ,IAAI,CAACoZ,KAAK,CAAC7X,MAAM,CAACoB,KAAK,GAAG,EAAE,CAAC,GAAG,EAAE,GAAA,KAAA,GACnC3C,IAAI,CAACoZ,KAAK,CAAC7X,MAAM,CAACD,MAAM,GAAG,EAAE,CAAC,GAAG,EAEvC,CAAG,CAAA;CACD,EAAA,IAAIwN,KAAK,CAACuK,UAAU,IAAIvK,KAAK,CAACwK,WAAW,EAAE;CACzCJ,IAAAA,CAAC,CAAC,oBAAoB,CAAC,CAACC,IAAI,CAAIrK,KAAK,CAACuK,UAAU,GAAA,KAAA,GAAMvK,KAAK,CAACwK,WAAa,CAAC,CAAA;CAC3E,GAAA;CACH,CAAC,CAAA;CACDZ,cAAc,CAAC1c,IAAI,CAACgd,YAAY,CAAC,CAAA;CAEjCE,CAAC,CAAC5c,QAAQ,CAAC,CAACid,KAAK,CAAC,YAAY;CAC5BC,EAAAA,iBAAiB,EAAE,CAAA;GAEnB3b,KAAK,GAAG4b,kBAAkB,EAAE,CAAA;CAE5B/V,EAAAA,MAAM,CAAC5H,IAAI,CAAChD,WAAW,CAAC,CAAC8K,OAAO,CAAC,UAAC7H,GAAG,EAAEG,KAAK,EAAK;CAC/C,IAAA,IAAMwd,MAAM,GAAG5gB,WAAW,CAACiD,GAAG,CAAC,CAAA;KAC/B,IAAM4d,MAAM,GAAG,IAAIC,MAAM,CAACF,MAAM,CAACrhB,WAAW,EAAE0D,GAAG,CAAC,CAAA;CAClDmd,IAAAA,CAAC,CAAC,eAAe,CAAC,CAACW,MAAM,CAACF,MAAM,CAAC,CAAA;CACjC,IAAA,IAAID,MAAM,CAACthB,GAAG,KAAKqe,SAAS,EAAE;OAC5Bna,QAAQ,CAACub,aAAa,CAAC,eAAe,CAAC,CAACiC,aAAa,GAAG5d,KAAK,GAAG,CAAC,CAAA;CAClE,KAAA;CACL,GAAG,CAAC,CAAA;CAEF,EAAA,IAAMmd,UAAU,GAAGvK,KAAK,CAACrE,KAAK,CAAC9H,KAAK,CAAA;CACpC,EAAA,IAAI0W,UAAU,EAAE;KACdH,CAAC,CAAC,mBAAmB,CAAC,CAACa,IAAI,CAAC,UAAU1Z,CAAC,EAAEsZ,MAAM,EAAE;CAC/C,MAAA,IAAIA,MAAM,CAACnd,KAAK,KAAK6c,UAAU,EAAE;SAC/B/c,QAAQ,CAACub,aAAa,CAAC,YAAY,CAAC,CAACiC,aAAa,GAAGzZ,CAAC,CAAA;CACtD6Y,QAAAA,CAAC,CAAC,iBAAiB,CAAC,CAACvW,KAAK,CAAC0W,UAAU,CAAC,CAAA;CACtCvP,QAAAA,MAAM,EAAE,CAAA;CACR,QAAA,OAAO,KAAK,CAAA;CACb,OAAA;CACP,KAAK,CAAC,CAAA;CACH,GAAA;CAEDoP,EAAAA,CAAC,CAAC,eAAe,CAAC,CAACc,MAAM,CAAC,YAAY;CACpC,IAAA,IAAMje,GAAG,GAAGmd,CAAC,CAAC,eAAe,CAAC,CAACrY,GAAG,EAAE,IAAI6C,MAAM,CAAC5H,IAAI,CAAChD,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;CACnE8e,IAAAA,kBAAkB,GAAG9e,WAAW,CAACiD,GAAG,CAAC,CAAA;CACrC,IAAA,IAAMke,SAAS,GAAGrC,kBAAkB,CAACxf,GAAG,CAAA;CACxC8gB,IAAAA,CAAC,CAAC,YAAY,CAAC,CAACrY,GAAG,CAACoZ,SAAS,CAAC,CAAA;CAC9BC,IAAAA,kBAAkB,EAAE,CAAA;CACxB,GAAG,CAAC,CAAA;CAEFhB,EAAAA,CAAC,CAAC,YAAY,CAAC,CAACc,MAAM,CAAC,YAAY;CACjCpC,IAAAA,kBAAkB,GAAG,IAAI,CAAA;CACzBsC,IAAAA,kBAAkB,EAAE,CAAA;CACxB,GAAG,CAAC,CAAA;CAEFhB,EAAAA,CAAC,CAAC,YAAY,CAAC,CAACc,MAAM,CAAC,YAAY;CACjCd,IAAAA,CAAC,CAAC,QAAQ,CAAC,CAACvW,KAAK,CAACuW,CAAC,CAAC,YAAY,CAAC,CAACrY,GAAG,EAAE,CAAC,CAAA;CACxCqY,IAAAA,CAAC,CAAC,iBAAiB,CAAC,CAACvW,KAAK,CAACuW,CAAC,CAAC,YAAY,CAAC,CAACrY,GAAG,EAAE,CAAC,CAAA;CACjDsZ,IAAAA,WAAW,EAAE,CAAA;CACbrQ,IAAAA,MAAM,EAAE,CAAA;CACZ,GAAG,CAAC,CAAA;CAEFoP,EAAAA,CAAC,CAAC,kBAAkB,CAAC,CAACtQ,KAAK,CAAC,YAAY;KACtCwO,eAAe,GAAG,IAAI,CAACgD,OAAO,CAAA;CAC9BF,IAAAA,kBAAkB,EAAE,CAAA;CACxB,GAAG,CAAC,CAAA;CAEFhB,EAAAA,CAAC,CAAC,mBAAmB,CAAC,CAACtQ,KAAK,CAAC,YAAY;KACvC0O,gBAAgB,GAAG,IAAI,CAAC8C,OAAO,CAAA;CAC/BC,IAAAA,mBAAmB,EAAE,CAAA;CACzB,GAAG,CAAC,CAAA;CAEFnB,EAAAA,CAAC,CAAC,cAAc,CAAC,CAACtQ,KAAK,CAAC,YAAY;KAClC8O,WAAW,GAAG,IAAI,CAAC0C,OAAO,CAAA;CAC1BC,IAAAA,mBAAmB,EAAE,CAAA;CACzB,GAAG,CAAC,CAAA;CAEFnB,EAAAA,CAAC,CAAC,WAAW,CAAC,CAACtQ,KAAK,CAAC,YAAY;KAC/B6O,QAAQ,GAAG,IAAI,CAAC2C,OAAO,CAAA;CACvBlB,IAAAA,CAAC,CAAC,WAAW,CAAC,CAACoB,MAAM,CAAC7C,QAAQ,CAAC,CAAA;CAC/B4C,IAAAA,mBAAmB,EAAE,CAAA;CACzB,GAAG,CAAC,CAAA;CAEFnB,EAAAA,CAAC,CAAC,eAAe,CAAC,CAACc,MAAM,CAAC,YAAY;KACpCxC,YAAY,GAAG,IAAI,CAAChb,KAAK,CAAA;CACzB6d,IAAAA,mBAAmB,EAAE,CAAA;CACzB,GAAG,CAAC,CAAA;CAEFnB,EAAAA,CAAC,CAAC,eAAe,CAAC,CAACc,MAAM,CAAC,YAAY;KACpCzC,YAAY,GAAG,IAAI,CAAC/a,KAAK,CAAA;CACzB6d,IAAAA,mBAAmB,EAAE,CAAA;CACzB,GAAG,CAAC,CAAA;CAEFnB,EAAAA,CAAC,CAAC,eAAe,CAAC,CAACrY,GAAG,CAAC2W,YAAY,CAAC,CAAA;GACpC0B,CAAC,CAAC,kBAAkB,CAAC,CAACqB,IAAI,CAAC,SAAS,EAAEnD,eAAe,CAAC,CAAA;GACtD8B,CAAC,CAAC,mBAAmB,CAAC,CAACqB,IAAI,CAAC,SAAS,EAAEjD,gBAAgB,CAAC,CAAA;GACxD4B,CAAC,CAAC,cAAc,CAAC,CAACqB,IAAI,CAAC,SAAS,EAAE7C,WAAW,CAAC,CAAA;GAC9CwB,CAAC,CAAC,WAAW,CAAC,CAACqB,IAAI,CAAC,SAAS,EAAE9C,QAAQ,CAAC,CAAA;CACxCyB,EAAAA,CAAC,CAAC,eAAe,CAAC,CAACrY,GAAG,CAAC0W,YAAY,CAAC,CAAA;;CAEtC;CACA;CACA;GACE,SAASiD,cAAcA,CAACtgB,OAAO,EAAE;CAC/B,IAAA,IAAMugB,UAAU,GAAGvgB,OAAO,CAACwgB,QAAQ,CAAC,GAAG,CAAC,CAAA;CACxC,IAIO,IAAID,UAAU,EAAE;OACrB,OAAiDE,yCAAAA,GAAAA,kBAAkB,CACjEzgB,OACD,CAAA,CAAA;CACP,KAAK,MAAM;OACL,OAA4DygB,oDAAAA,GAAAA,kBAAkB,CAC5EzgB,OACD,CAAA,CAAA;CACF,KAAA;CACF,GAAA;CAED,EAAA,IAAMA,OAAO,GAAG0gB,GAAG,CAAC1gB,OAAO,CAAA;CAC3B,EAAA,IAAIA,OAAO,EAAE;CACX,IAAA,IAAM2gB,EAAE,GAAG3B,CAAC,CAAC,OAAO,CAAC,CAClB4B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CACxBA,IAAI,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAClCA,IAAI,CAAC,MAAM,EAAEN,cAAc,CAACtgB,OAAO,CAAC,CAAC,CACrCkC,IAAI,CAAC,GAAG,GAAGlC,OAAO,CAAC,CAAA;CACtBgf,IAAAA,CAAC,CAAC,QAAQ,CAAC,CAACW,MAAM,CAAC,GAAG,CAAC,CAACA,MAAM,CAACgB,EAAE,CAAC,CAAA;CACnC,GAAA;CAED3B,EAAAA,CAAC,CAAC,YAAY,CAAC,CAACrY,GAAG,CAAC4V,SAAS,CAAC,CAAA;CAE9B,EAAA,IAAMsE,cAAc,GAAG7G,IAAI,CAAC2C,KAAK,CAC/BmE,YAAY,CAACC,OAAO,CAAC9E,YAAY,CAACG,MAAM,CAC5C,CAAG,IAAI;CACHA,IAAAA,MAAM,EAAE,IAAI;CACZ4E,IAAAA,KAAK,EAAE,KAAA;IACR,CAAA;CACDpM,EAAAA,KAAK,CAACwH,MAAM,GAAGyE,cAAc,CAACzE,MAAM,CAAA;CACpCxH,EAAAA,KAAK,CAACoM,KAAK,GAAGH,cAAc,CAACG,KAAK,CAAA;CAElChC,EAAAA,CAAC,CAAC,WAAW,CAAC,CAACoB,MAAM,CAAC7C,QAAQ,CAAC,CAAA;CAC/ByB,EAAAA,CAAC,CAAC,gBAAgB,CAAC,CAACxO,IAAI,EAAE,CAAA;GAE1BwO,CAAC,CAAC,sBAAsB,CAAC,CAACoB,MAAM,CAACzU,IAAI,CAACsV,aAAa,CAAC,CAAA;GACpDjC,CAAC,CAAC,qBAAqB,CAAC,CAACoB,MAAM,CAAC,CAACzU,IAAI,CAACsV,aAAa,CAAC,CAAA;CAEpDjB,EAAAA,kBAAkB,EAAE,CAAA;GAEpB,IAAIkB,aAAa,GAAGJ,YAAY,CAACC,OAAO,CAAC9E,YAAY,CAACI,SAAS,CAAC,CAAA;GAChE,IAAI6E,aAAa,KAAK,IAAI,EAAE;CAC1BA,IAAAA,aAAa,GAAG,OAAO,CAAA;CACxB,GAAA;CACD,EAAA,IAAIA,aAAa,EAAE;KACjBA,aAAa,CAACC,KAAK,CAAC,GAAG,CAAC,CAACzX,OAAO,CAAC,UAAC0X,WAAW,EAAK;CAChDC,MAAAA,SAAS,CAACrC,CAAC,CAAC,eAAe,CAAC,CAACsC,QAAQ,CAACF,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;CACrE,KAAK,CAAC,CAAA;CACH,GAAA;GACDpC,CAAC,CAACrT,IAAI,CAAC,CAAC4V,EAAE,CAAC,UAAU,EAAE,YAAY;CACjC5V,IAAAA,IAAI,CAAC6V,QAAQ,CAACC,MAAM,EAAE,CAAA;CAC1B,GAAG,CAAC,CAAA;CACJ,CAAC,CAAC,CAAA;CAEF,SAASC,YAAYA,GAAG;CACtB/V,EAAAA,IAAI,CAAC8O,MAAM,GAAGA,MAAM,GAAG;CACrBvc,IAAAA,GAAG,EAAEA,GAAG;CACRyjB,IAAAA,EAAE,EAAEhW,IAAI,CAACiW,WAAW,CAAC/D,GAAG,EAAE;CAC1BgE,IAAAA,IAAI,EAAE,EAAE;CACRlN,IAAAA,MAAM,EAAE,EAAE;CACVC,IAAAA,KAAK,EAAE,EAAE;CACTxD,IAAAA,KAAK,EAAE,EAAE;CACT0Q,IAAAA,OAAO,EAAE,EAAA;IACV,CAAA;CACD7D,EAAAA,0BAA0B,GAAG9Z,SAAS,CAAA;CACtC2Z,EAAAA,cAAc,GAAG3Z,SAAS,CAAA;GAC1BsZ,YAAY,GAAG,CAAC,CAAC,CAAA;;CAEnB;GACE9R,IAAI,CAACoW,wBAAwB,GAAG,IAAI,CAAA;GACpCpW,IAAI,CAACqW,yBAAyB,GAAG,IAAI,CAAA;CACrCrW,EAAAA,IAAI,CAACuS,QAAQ,GAAGA,QAAQ,GAAG;CACzBrJ,IAAAA,KAAK,EAAE,EAAE;CACTD,IAAAA,KAAK,EAAE,EAAA;IACR,CAAA;GACDjJ,IAAI,CAACsW,oBAAoB,GAAGA,oBAAoB,CAAA;GAChDtW,IAAI,CAACuW,eAAe,GAAGA,eAAe,CAAA;GACtCvW,IAAI,CAACwU,mBAAmB,GAAGA,mBAAmB,CAAA;GAC9CxU,IAAI,CAACwW,UAAU,GAAGA,UAAU,CAAA;GAC5BxW,IAAI,CAACyW,oBAAoB,GAAGA,oBAAoB,CAAA;GAChDzW,IAAI,CAAC0V,SAAS,GAAGA,SAAS,CAAA;GAC1B1V,IAAI,CAAC0W,cAAc,GAAGA,cAAc,CAAA;GACpC1W,IAAI,CAAC2W,sBAAsB,GAAGA,sBAAsB,CAAA;CACtD,CAAA;CAEA,SAASC,SAASA,CAAC/jB,MAAM,EAAEgkB,KAAK,EAAE;GAChC,IAAIA,KAAK,GAAG,CAAC,EAAE;CACb,IAAA,OAAA;CACD,GAAA;CAED,EAAA,OAAOhkB,MAAM,CAAC8F,MAAM,GAAGke,KAAK,EAAE;KAC5BhkB,MAAM,CAACikB,KAAK,EAAE,CAAA;CACf,GAAA;CACH,CAAA;CAEA,SAASC,gBAAgBA,GAAG;GAC1B,IAAMlc,CAAC,GAAG8W,YAAY,CAAA;GAEtB,IAAI9W,CAAC,GAAG,CAAC,EAAE;CACT,IAAA,OAAA;CACD,GAAA;CAED+b,EAAAA,SAAS,CAAC9H,MAAM,CAACoH,IAAI,EAAErb,CAAC,CAAC,CAAA;CACzB+b,EAAAA,SAAS,CAAC9H,MAAM,CAAC9F,MAAM,EAAEnO,CAAC,CAAC,CAAA;CAC3B+b,EAAAA,SAAS,CAAC9H,MAAM,CAAC7F,KAAK,EAAEpO,CAAC,CAAC,CAAA;CAC1B+b,EAAAA,SAAS,CAAC9H,MAAM,CAACrJ,KAAK,EAAE5K,CAAC,CAAC,CAAA;CAC1B+b,EAAAA,SAAS,CAAC9H,MAAM,CAACqH,OAAO,EAAEtb,CAAC,CAAC,CAAA;CAC9B,CAAA;CAEA,SAASwZ,kBAAkBA,GAAG;CAC5BhB,EAAAA,CAAC,CAAC,sBAAsB,CAAC,CAAC2D,KAAK,EAAE,CAAA;CAEjC,EAAA,IAAI,CAACjC,GAAG,CAACkC,WAAW,EAAE,EAAE;CACtBC,IAAAA,iBAAiB,EAAE,CAAA;CACnB,IAAA,OAAA;CACD,GAAA;GAED3kB,GAAG,GAAG8gB,CAAC,CAAC,YAAY,CAAC,CAACrY,GAAG,EAAE,CAAA;;CAE7B;CACE,EAAA,IAAIzI,GAAG,EAAE;KACP,IAAI;OACF,IAAI4a,GAAG,CAAC5a,GAAG,CAAC,CAAA;MACb,CAAC,OAAOiX,KAAK,EAAE;CACd6J,MAAAA,CAAC,CAAC,YAAY,CAAC,CAACrY,GAAG,CAAC,EAAE,CAAC,CAAA;OACvBmc,KAAK,CAAC,aAAa,CAAC,CAAA;CACpB,MAAA,OAAO,KAAK,CAAA;CACb,KAAA;CACF,GAAA;CAEDpB,EAAAA,YAAY,EAAE,CAAA;CACdqB,EAAAA,UAAU,EAAE,CAAA;CAEZ,EAAA,IAAI7T,GAAG,EAAE;KACPA,GAAG,CAAC8T,OAAO,EAAE,CAAA;CACbC,IAAAA,aAAa,CAAC/T,GAAG,CAACgU,WAAW,CAAC,CAAA;CAC9BhU,IAAAA,GAAG,GAAG,IAAI,CAAA;CACX,GAAA;GAED,IAAI,CAACgO,eAAe,EAAE;KACpBiG,SAAS,CAAC,oBAAoB,CAAC,CAAA;CAC/B,IAAA,OAAA;CACD,GAAA;CAEDA,EAAAA,SAAS,CAAC,UAAU,GAAGjlB,GAAG,CAAC,CAAA;;CAE7B;CACE,EAAA,IAAMklB,SAAS,GAAGpE,CAAC,CAACqE,MAAM,CACxB,EAAE,EACFxG,aAAa,EACbyG,cAAc,CAAC;CAAE3G,IAAAA,KAAK,EAAE,IAAA;IAAM,CAClC,CAAG,CAAA;CAED,EAAA,IAAIe,kBAAkB,IAAIA,kBAAkB,CAACjf,MAAM,EAAE;KACnDoE,OAAO,CAACuX,IAAI,CACV,yEAAyE,EACzEsD,kBAAkB,CAACjf,MACzB,CAAK,CAAA;KACDugB,CAAC,CAACqE,MAAM,CAACD,SAAS,EAAE1F,kBAAkB,CAACjf,MAAM,CAAC,CAAA;KAC9C8kB,uBAAuB,CAACH,SAAS,CAAC,CAAA;CACnC,GAAA;GAEDjD,mBAAmB,CAAC,IAAI,CAAC,CAAA;CACzBtd,EAAAA,OAAO,CAACC,GAAG,CAAC,sBAAsB,EAAEsgB,SAAS,CAAC,CAAA;GAE9CzX,IAAI,CAACuD,GAAG,GAAGA,GAAG,GAAG,IAAIwR,GAAG,CAAC0C,SAAS,CAAC,CAAA;GAEnCD,SAAS,CAAC,iDAAiD,CAAC,CAAA;CAE5D,EAAA,IAAMK,aAAa,GAAG,EAAE,CAACC,MAAM,CAACzN,IAAI,CAClCpB,KAAK,CAACU,UAAU,EAChB,UAACpD,KAAK,EAAA;CAAA,IAAA,OAAKA,KAAK,CAACiE,IAAI,KAAK,UAAU,CAAA;CAAA,GACxC,CAAG,CAAA;GACD,IAAIqN,aAAa,CAAClf,MAAM,EAAE;CACxB,IAAA,IAAMof,KAAK,GAAGF,aAAa,CACxBG,GAAG,CAAC,UAACzR,KAAK,EAAA;OAAA,OAAKA,KAAK,CAACiE,IAAI,CAAA;MAAC,CAAA,CAC1BsN,MAAM,CAAC,UAACtN,IAAI,EAAEnU,KAAK,EAAE2J,IAAI,EAAA;CAAA,MAAA,OAAKA,IAAI,CAACkK,OAAO,CAACM,IAAI,CAAC,KAAKnU,KAAK,CAAA;MAAC,CAAA,CAAA;KAC9DmhB,SAAS,CAAA,oCAAA,GAC8BO,KAAK,CAACE,IAAI,CAAC,OAAO,CAAC,iBAC9D,CAAK,CAAA;KACD,IAAMC,0BAA0B,GAAGjP,KAAK,CAAA;CACxCA,IAAAA,KAAK,GAAGiP,0BAA0B,CAACC,SAAS,CAAC,KAAK,CAAC,CAAA;CACnDlP,IAAAA,KAAK,CAACmP,eAAe,CAAC,KAAK,CAAC,CAAA;CAC5BnP,IAAAA,KAAK,CAACwH,MAAM,GAAGyH,0BAA0B,CAACzH,MAAM,CAAA;CAChDxH,IAAAA,KAAK,CAACoM,KAAK,GAAG6C,0BAA0B,CAAC7C,KAAK,CAAA;KAC9C6C,0BAA0B,CAACG,UAAU,CAACC,YAAY,CAChDrP,KAAK,EACLiP,0BACN,CAAK,CAAA;CACDA,IAAAA,0BAA0B,CAACG,UAAU,CAAChhB,WAAW,CAC/C6gB,0BACN,CAAK,CAAA;CACF,GAAA;GACDK,sBAAsB,CAAChV,GAAG,CAAC,CAAA;GAC3BiV,sBAAsB,CAACvP,KAAK,CAAC,CAAA;CAE7B1F,EAAAA,GAAG,CAACkV,UAAU,CAAClmB,GAAG,CAAC,CAAA;GACnBgR,GAAG,CAACmV,gBAAgB,GAAGhH,YAAY,CAAA;CACnCnO,EAAAA,GAAG,CAACoV,WAAW,CAAC1P,KAAK,CAAC,CAAA;GAEtB1F,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAACC,cAAc,EAAE,YAAY;KAC5CrB,SAAS,CAAC,wBAAwB,CAAC,CAAA;KACnC1F,YAAY,GAAG,CAAC,CAAC,CAAA;CACjBhD,IAAAA,MAAM,CAAC7F,KAAK,CAAC9S,IAAI,CAAC;OAChB2iB,IAAI,EAAE9Y,IAAI,CAACiW,WAAW,CAAC/D,GAAG,EAAE,GAAGpD,MAAM,CAACkH,EAAE;CACxC/V,MAAAA,IAAI,EAAE,gBAAA;CACZ,KAAK,CAAC,CAAA;CACF8W,IAAAA,gBAAgB,EAAE,CAAA;CACtB,GAAG,CAAC,CAAA;GAEFxT,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAACG,cAAc,EAAE,YAAY;KAC5CvB,SAAS,CAAC,wBAAwB,CAAC,CAAA;CACnCF,IAAAA,aAAa,CAAC/T,GAAG,CAACgU,WAAW,CAAC,CAAA;KAC9BzF,YAAY,GAAG,CAAC,CAAC,CAAA;CACjBrJ,IAAAA,MAAM,GAAG,EAAE,CAAA;CACXqG,IAAAA,MAAM,CAAC7F,KAAK,CAAC9S,IAAI,CAAC;OAChB2iB,IAAI,EAAE9Y,IAAI,CAACiW,WAAW,CAAC/D,GAAG,EAAE,GAAGpD,MAAM,CAACkH,EAAE;CACxC/V,MAAAA,IAAI,EAAE,gBAAA;CACZ,KAAK,CAAC,CAAA;CACF8W,IAAAA,gBAAgB,EAAE,CAAA;CACtB,GAAG,CAAC,CAAA;GAEFxT,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAACI,UAAU,EAAE,YAAY;CACxC1B,IAAAA,aAAa,CAAC/T,GAAG,CAACgU,WAAW,CAAC,CAAA;CAClC,GAAG,CAAC,CAAA;GACFhU,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAACK,YAAY,EAAE,YAAY;CAC1C3B,IAAAA,aAAa,CAAC/T,GAAG,CAACgU,WAAW,CAAC,CAAA;CAClC,GAAG,CAAC,CAAA;CAEFhU,EAAAA,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAACM,yBAAyB,EAAE,UAAUC,SAAS,EAAE/gB,IAAI,EAAE;CACtEghB,IAAAA,UAAU,EAAE,CAAA;CACZtK,IAAAA,MAAM,CAAC7F,KAAK,CAAC9S,IAAI,CAAC;OAChB2iB,IAAI,EAAE9Y,IAAI,CAACiW,WAAW,CAAC/D,GAAG,EAAE,GAAGpD,MAAM,CAACkH,EAAE;CACxC/V,MAAAA,IAAI,EAAE7H,IAAI,CAACsN,EAAE,GAAG,eAAA;CACtB,KAAK,CAAC,CAAA;CACFqR,IAAAA,gBAAgB,EAAE,CAAA;CACtB,GAAG,CAAC,CAAA;CAEFxT,EAAAA,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAACS,qBAAqB,EAAE,UAAUF,SAAS,EAAE/gB,IAAI,EAAE;CACtE;CAAA,GACG,CAAC,CAAA;CAEFmL,EAAAA,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAACU,eAAe,EAAE,UAAUH,SAAS,EAAE/gB,IAAI,EAAE;CAC5D0W,IAAAA,MAAM,CAACrJ,KAAK,CAACtP,IAAI,CAAC;OAChB2iB,IAAI,EAAE9Y,IAAI,CAACiW,WAAW,CAAC/D,GAAG,EAAE,GAAGpD,MAAM,CAACkH,EAAE;OACxCtQ,EAAE,EAAEtN,IAAI,CAACqN,KAAK;CACd0Q,MAAAA,OAAO,EAAEhc,IAAI,CAACoZ,KAAK,CAAChQ,GAAG,CAACyB,MAAM,CAAC5M,IAAI,CAACqN,KAAK,CAAC,CAAC0Q,OAAO,GAAG,IAAI,CAAA;CAC/D,KAAK,CAAC,CAAA;CACFY,IAAAA,gBAAgB,EAAE,CAAA;CAClBR,IAAAA,eAAe,EAAE,CAAA;CACrB,GAAG,CAAC,CAAA;CAEFhT,EAAAA,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAACW,eAAe,EAAE,UAAUJ,SAAS,EAAE/gB,IAAI,EAAE;CAC5D0W,IAAAA,MAAM,CAACoH,IAAI,CAAC/f,IAAI,CAAC;CACf8J,MAAAA,IAAI,EAAE,UAAU;CAChB7L,MAAAA,IAAI,EAAE,EAAE;CACRmE,MAAAA,KAAK,EAAE,CAAC;CACRK,MAAAA,GAAG,EAAER,IAAI,CAAC4M,MAAM,CAACrM,MAAM;OACvBmgB,IAAI,EAAE1gB,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAACjhB,KAAK,GAAGuW,MAAM,CAACkH,EAAE;CAC1CyD,MAAAA,OAAO,EAAErhB,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAACE,KAAK,GAAGthB,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAACjhB,KAAK;CAC5D2d,MAAAA,IAAI,EAAE9d,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAAC5gB,GAAG,GAAGR,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAACE,KAAK;CACvDrb,MAAAA,QAAQ,EAAEjG,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAAC5gB,GAAG,GAAGR,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAACE,KAAAA;CAC5D,KAAK,CAAC,CAAA;CACF3C,IAAAA,gBAAgB,EAAE,CAAA;KAClB/W,IAAI,CAAC2Z,aAAa,EAAE,CAAA;CACxB,GAAG,CAAC,CAAA;CAEFpW,EAAAA,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAACW,eAAe,EAAE,UAAUJ,SAAS,EAAE/gB,IAAI,EAAE;CAC5Dof,IAAAA,SAAS,CAAIjU,GAAG,CAACyB,MAAM,CAACrM,MAAM,0BAAuB,CAAC,CAAA;KACtD6e,SAAS,CAAC,8BAA8B,CAAC,CAAA;CACzCrc,IAAAA,KAAK,GAAG;CACNye,MAAAA,OAAO,EAAExhB,IAAI,CAAC4M,MAAM,CAACrM,MAAM;CAC3BkhB,MAAAA,WAAW,EAAE,CAAA;MACd,CAAA;CACD9C,IAAAA,gBAAgB,EAAE,CAAA;CAClBR,IAAAA,eAAe,EAAE,CAAA;CACrB,GAAG,CAAC,CAAA;CAEFhT,EAAAA,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAACkB,oBAAoB,EAAE,UAAUX,SAAS,EAAE/gB,IAAI,EAAE;KACjEof,SAAS,CAAC,4BAA4B,GAAGpf,IAAI,CAAC+N,WAAW,CAACxN,MAAM,CAAC,CAAA;CACjEohB,IAAAA,oBAAoB,EAAE,CAAA;CAC1B,GAAG,CAAC,CAAA;CAEFxW,EAAAA,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAACoB,qBAAqB,EAAE,UAAUb,SAAS,EAAE/gB,IAAI,EAAE;KAClEof,SAAS,CAAC,0BAA0B,CAAC,CAAA;CACrCuC,IAAAA,oBAAoB,EAAE,CAAA;CACtBjL,IAAAA,MAAM,CAAC7F,KAAK,CAAC9S,IAAI,CAAC;OAChB2iB,IAAI,EAAE9Y,IAAI,CAACiW,WAAW,CAAC/D,GAAG,EAAE,GAAGpD,MAAM,CAACkH,EAAE;CACxC/V,MAAAA,IAAI,EAAE,iBAAiB;CACvB7L,MAAAA,IAAI,EAAE,GAAG,GAAGgE,IAAI,CAACsN,EAAAA;CACvB,KAAK,CAAC,CAAA;CACFqR,IAAAA,gBAAgB,EAAE,CAAA;CAClBzE,IAAAA,0BAA0B,GAAGxD,MAAM,CAAC7F,KAAK,CAACtQ,MAAM,GAAG,CAAC,CAAA;CACxD,GAAG,CAAC,CAAA;CAEF4K,EAAAA,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAACqB,oBAAoB,EAAE,UAAUd,SAAS,EAAE/gB,IAAI,EAAE;KACjEof,SAAS,CAAC,sBAAsB,CAAC,CAAA;CACjCuC,IAAAA,oBAAoB,EAAE,CAAA;CACtB,IAAA,IAAMvZ,KAAK,GAAG;OACZsY,IAAI,EAAE9Y,IAAI,CAACiW,WAAW,CAAC/D,GAAG,EAAE,GAAGpD,MAAM,CAACkH,EAAE;CACxC/V,MAAAA,IAAI,EAAE,gBAAgB;CACtB7L,MAAAA,IAAI,EAAE,GAAG,GAAGgE,IAAI,CAACsN,EAAAA;MAClB,CAAA;KACD,IAAI4M,0BAA0B,KAAK9Z,SAAS,EAAE;CAC5CsW,MAAAA,MAAM,CAAC7F,KAAK,CAACqJ,0BAA0B,CAAC,CAACjU,QAAQ,GAC/CmC,KAAK,CAACsY,IAAI,GAAGhK,MAAM,CAAC7F,KAAK,CAACqJ,0BAA0B,CAAC,CAACwG,IAAI,CAAA;CAC5DxG,MAAAA,0BAA0B,GAAG9Z,SAAS,CAAA;CACvC,KAAA;CACDsW,IAAAA,MAAM,CAAC7F,KAAK,CAAC9S,IAAI,CAACqK,KAAK,CAAC,CAAA;CACxBuW,IAAAA,gBAAgB,EAAE,CAAA;CACtB,GAAG,CAAC,CAAA;CAEFxT,EAAAA,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAACsB,YAAY,EAAE,UAAUf,SAAS,EAAE/gB,IAAI,EAAE;CACzD0W,IAAAA,MAAM,CAACqL,MAAM,GAAG/hB,IAAI,CAAC4N,OAAO,CAACvT,IAAI,CAAA;CACjC,IAAA,IAAM+N,KAAK,GAAG;CACZP,MAAAA,IAAI,EAAE,OAAO;OACbyF,EAAE,EAAEtN,IAAI,CAACqN,KAAK;CACdlN,MAAAA,KAAK,EAAEH,IAAI,CAAC4N,OAAO,CAACoU,OAAO;CAC3BxhB,MAAAA,GAAG,EAAER,IAAI,CAAC4N,OAAO,CAACqU,KAAK;OACvBvB,IAAI,EAAE1gB,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAACjhB,KAAK,GAAGuW,MAAM,CAACkH,EAAE;CAC1CyD,MAAAA,OAAO,EAAErhB,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAACE,KAAK,GAAGthB,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAACjhB,KAAK;CAC5D2d,MAAAA,IAAI,EAAE9d,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAAC5gB,GAAG,GAAGR,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAACE,KAAK;CACvDY,MAAAA,OAAO,EAAEliB,IAAI,CAAC+C,KAAK,CAACmf,OAAO,CAAC1hB,GAAG,GAAGR,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAAC5gB,GAAG;CACxDyF,MAAAA,QAAQ,EAAEjG,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAAC5gB,GAAG,GAAGR,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAACE,KAAAA;MACvD,CAAA;CAED,IAAA,IAAMa,eAAe,GAAGniB,IAAI,CAAC+C,KAAK,CAACmf,OAAO,CAAC1hB,GAAG,GAAGR,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAAC5gB,GAAG,CAAA;KACvE,IAAIuC,KAAK,CAAC0e,WAAW,EAAE;OACrB,IAAI,CAACW,iBAAiB,IAAID,eAAe,CAAA;CAC/C,KAAK,MAAM;OACL,IAAI,CAACC,iBAAiB,GAAGD,eAAe,CAAA;CACzC,KAAA;KAEDpf,KAAK,CAAC0e,WAAW,EAAE,CAAA;CACnB1e,IAAAA,KAAK,CAACsf,cAAc,GAAGtgB,IAAI,CAACoZ,KAAK,CAC9B,IAAI,GAAG,IAAI,CAACiH,iBAAiB,GAAIrf,KAAK,CAAC0e,WAC9C,CAAK,CAAA;;CAEL;;CAEI/K,IAAAA,MAAM,CAACoH,IAAI,CAAC/f,IAAI,CAACqK,KAAK,CAAC,CAAA;CACvBuW,IAAAA,gBAAgB,EAAE,CAAA;KAClB/W,IAAI,CAAC2Z,aAAa,EAAE,CAAA;CACxB,GAAG,CAAC,CAAA;CAEFpW,EAAAA,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAAC8B,kBAAkB,EAAE,UAAUvB,SAAS,EAAE/gB,IAAI,EAAE;CAC/D0W,IAAAA,MAAM,CAACqL,MAAM,GAAG/hB,IAAI,CAAC4N,OAAO,CAACvT,IAAI,CAAA;CACjC,IAAA,IAAM+N,KAAK,GAAG;CACZP,MAAAA,IAAI,EAAE,aAAa;OACnByF,EAAE,EAAEtN,IAAI,CAACsN,EAAE;CACXnN,MAAAA,KAAK,EAAEH,IAAI,CAAC4N,OAAO,CAACoU,OAAO;CAC3BxhB,MAAAA,GAAG,EAAER,IAAI,CAAC4N,OAAO,CAACqU,KAAK;OACvBvB,IAAI,EAAE1gB,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAACjhB,KAAK,GAAGuW,MAAM,CAACkH,EAAE;CAC1CyD,MAAAA,OAAO,EAAErhB,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAACE,KAAK,GAAGthB,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAACjhB,KAAK;CAC5D2d,MAAAA,IAAI,EAAE9d,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAAC5gB,GAAG,GAAGR,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAACE,KAAK;CACvDY,MAAAA,OAAO,EAAEliB,IAAI,CAAC+C,KAAK,CAACmf,OAAO,CAAC1hB,GAAG,GAAGR,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAAC5gB,GAAG;CACxDyF,MAAAA,QAAQ,EAAEjG,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAAC5gB,GAAG,GAAGR,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAACE,KAAAA;MACvD,CAAA;CACD5K,IAAAA,MAAM,CAACoH,IAAI,CAAC/f,IAAI,CAACqK,KAAK,CAAC,CAAA;CACvBuW,IAAAA,gBAAgB,EAAE,CAAA;KAClB/W,IAAI,CAAC2Z,aAAa,EAAE,CAAA;CACxB,GAAG,CAAC,CAAA;CAEFpW,EAAAA,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAAC+B,aAAa,EAAE,UAAUxB,SAAS,EAAE/gB,IAAI,EAAE;CAC1D,IAAA,IAAM+C,KAAK,GACT/C,IAAI,CAACyP,IAAI,IAAIzP,IAAI,CAACyP,IAAI,CAAC1M,KAAK,IAAI/C,IAAI,CAACyP,IAAI,CAAC1M,KAAK,CAACmB,MAAM,GAClDlE,IAAI,CAACyP,IAAI,CAAC1M,KAAK,GACf/C,IAAI,CAACgQ,IAAI,CAACjN,KAAK,CAAA;CACrB,IAAA,IAAI/C,IAAI,CAAC+C,KAAK,CAACkB,OAAO,EAAE;CACtBnF,MAAAA,OAAO,CAAC0jB,MAAM,CAAC,iCAAiC,EAAExiB,IAAI,CAAC,CAAA;CACvD,MAAA,OAAA;CACD,KAAA;CAED,IAAA,IAAMoI,KAAK,GAAG;CACZP,MAAAA,IAAI,EAAE7H,IAAI,CAACgQ,IAAI,CAACnI,IAAI,IAAI7H,IAAI,CAACyP,IAAI,GAAG,OAAO,GAAG,WAAW,CAAC;CAC1DnC,MAAAA,EAAE,EAAEtN,IAAI,CAACgQ,IAAI,CAAC3C,KAAK;CACnBoV,MAAAA,GAAG,EAAEziB,IAAI,CAACgQ,IAAI,CAACnL,EAAE;OACjB6d,GAAG,EAAE1iB,IAAI,CAACyP,IAAI,GAAGzP,IAAI,CAACyP,IAAI,CAACxR,KAAK,GAAGmC,SAAS;OAC5CsgB,IAAI,EAAE1gB,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAACjhB,KAAK,GAAGuW,MAAM,CAACkH,EAAE;CAC1CyD,MAAAA,OAAO,EAAErhB,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAACE,KAAK,GAAGthB,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAACjhB,KAAK;CAC5D2d,MAAAA,IAAI,EAAE9d,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAAC5gB,GAAG,GAAGR,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAACE,KAAK;CACvDY,MAAAA,OAAO,EAAEliB,IAAI,CAAC+C,KAAK,CAACmf,OAAO,CAAC1hB,GAAG,GAAGR,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAAC5gB,GAAG;CACxDoQ,MAAAA,MAAM,EAAE5Q,IAAI,CAAC+C,KAAK,CAAC4f,SAAS,CAACniB,GAAG,GAAGR,IAAI,CAAC+C,KAAK,CAACmf,OAAO,CAAC1hB,GAAG;CACzDyF,MAAAA,QAAQ,EAAEjG,IAAI,CAAC+C,KAAK,CAAC4f,SAAS,CAACniB,GAAG,GAAGR,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAACE,KAAK;CAC7DsB,MAAAA,EAAE,EAAE7gB,IAAI,CAACoZ,KAAK,CACX,CAAC,GAAGnb,IAAI,CAAC+C,KAAK,CAACoB,KAAK,IAClBnE,IAAI,CAAC+C,KAAK,CAAC4f,SAAS,CAACniB,GAAG,GAAGR,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAACjhB,KAAK,CACvD,CAAA;CAAA;OACD0iB,IAAI,EAAE9gB,IAAI,CAACoZ,KAAK,CAAChQ,GAAG,CAAC2X,iBAAiB,GAAG,IAAI,CAAC;CAAA;CAC9CliB,MAAAA,IAAI,EAAEZ,IAAI,CAAC+C,KAAK,CAACoB,KAAAA;MAClB,CAAA;CACDuS,IAAAA,MAAM,CAACoH,IAAI,CAAC/f,IAAI,CAACqK,KAAK,CAAC,CAAA;CACvBsO,IAAAA,MAAM,CAACqH,OAAO,CAAChgB,IAAI,CAAC;OAClB2iB,IAAI,EAAE9Y,IAAI,CAACiW,WAAW,CAAC/D,GAAG,EAAE,GAAGpD,MAAM,CAACkH,EAAE;OACxCG,OAAO,EAAE3V,KAAK,CAACwa,EAAE;OACjBC,IAAI,EAAEza,KAAK,CAACya,IAAI;CAChB5c,MAAAA,QAAQ,EAAEjG,IAAI,CAACgQ,IAAI,CAAC/J,QAAQ;OAC5BoH,KAAK,EAAEjF,KAAK,CAACkF,EAAAA;CACnB,KAAK,CAAC,CAAA;CACF,IAAA,IAAIoJ,MAAM,CAAC9F,MAAM,CAACrQ,MAAM,KAAK,CAAC,EAAE;CAC9BmW,MAAAA,MAAM,CAAC9F,MAAM,CAAC7S,IAAI,CAAC;CACjB2iB,QAAAA,IAAI,EAAE,CAAC;CACP9P,QAAAA,MAAM,EAAE,CAAC;CACTrI,QAAAA,GAAG,EAAE,CAAA;CACb,OAAO,CAAC,CAAA;CACH,KAAA;CACD2W,IAAAA,aAAa,CAAC/T,GAAG,CAACgU,WAAW,CAAC,CAAA;KAC9BhU,GAAG,CAACgU,WAAW,GAAGvX,IAAI,CAACmb,WAAW,CAAC7G,WAAW,EAAE,GAAG,CAAC,CAAA;CACpDyC,IAAAA,gBAAgB,EAAE,CAAA;KAClB/W,IAAI,CAAC2Z,aAAa,EAAE,CAAA;CACpBpD,IAAAA,eAAe,EAAE,CAAA;CAEjB,IAAA,IAAMkD,OAAO,GAAGrhB,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAACE,KAAK,GAAGthB,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAACjhB,KAAK,CAAA;CACnE,IAAA,IAAM+hB,OAAO,GAAGliB,IAAI,CAAC+C,KAAK,CAACmf,OAAO,CAAC1hB,GAAG,GAAGR,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAAC5gB,GAAG,CAAA;CAC/D,IAAA,IAAMwiB,OAAO,GAAGhjB,IAAI,CAAC+C,KAAK,CAAC4f,SAAS,CAACniB,GAAG,GAAGR,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAACjhB,KAAK,CAAA;CACnE,IAAA,IAAM4d,OAAO,GAAGhc,IAAI,CAACoZ,KAAK,CACvB,CAAC,GAAGnb,IAAI,CAAC+C,KAAK,CAACoB,KAAK,IAClBnE,IAAI,CAAC+C,KAAK,CAAC4f,SAAS,CAACniB,GAAG,GAAGR,IAAI,CAAC+C,KAAK,CAACqe,OAAO,CAACE,KAAK,CAC5D,CAAK,CAAA;KAED,IAAIve,KAAK,CAACkgB,YAAY,EAAE;CACtBlgB,MAAAA,KAAK,CAACmgB,cAAc,GAAGnhB,IAAI,CAACzB,GAAG,CAACyC,KAAK,CAACmgB,cAAc,EAAE7B,OAAO,CAAC,CAAA;CAC9Dte,MAAAA,KAAK,CAACogB,cAAc,GAAGphB,IAAI,CAAC1B,GAAG,CAAC0C,KAAK,CAACogB,cAAc,EAAE9B,OAAO,CAAC,CAAA;CAC9Dte,MAAAA,KAAK,CAACqgB,cAAc,GAAGrhB,IAAI,CAACzB,GAAG,CAACyC,KAAK,CAACqgB,cAAc,EAAEJ,OAAO,CAAC,CAAA;CAC9DjgB,MAAAA,KAAK,CAACsgB,cAAc,GAAGthB,IAAI,CAAC1B,GAAG,CAAC0C,KAAK,CAACsgB,cAAc,EAAEL,OAAO,CAAC,CAAA;CAC9DjgB,MAAAA,KAAK,CAACugB,WAAW,GAAGvhB,IAAI,CAACzB,GAAG,CAACyC,KAAK,CAACugB,WAAW,EAAEvF,OAAO,CAAC,CAAA;CACxDhb,MAAAA,KAAK,CAACwgB,WAAW,GAAGxhB,IAAI,CAAC1B,GAAG,CAAC0C,KAAK,CAACwgB,WAAW,EAAExF,OAAO,CAAC,CAAA;CACxDhb,MAAAA,KAAK,CAACygB,mBAAmB,GAAGzhB,IAAI,CAACzB,GAAG,CAClCyC,KAAK,CAACygB,mBAAmB,EACzBrY,GAAG,CAACmV,gBACZ,CAAO,CAAA;CACDvd,MAAAA,KAAK,CAAC0gB,mBAAmB,GAAG1hB,IAAI,CAAC1B,GAAG,CAClC0C,KAAK,CAAC0gB,mBAAmB,EACzBtY,GAAG,CAACmV,gBACZ,CAAO,CAAA;OACDvd,KAAK,CAACkgB,YAAY,EAAE,CAAA;CAC1B,KAAK,MAAM;CACLlgB,MAAAA,KAAK,CAACmgB,cAAc,GAAGngB,KAAK,CAACogB,cAAc,GAAG9B,OAAO,CAAA;CACrDte,MAAAA,KAAK,CAACqgB,cAAc,GAAGrgB,KAAK,CAACsgB,cAAc,GAAGL,OAAO,CAAA;CACrDjgB,MAAAA,KAAK,CAACugB,WAAW,GAAGvgB,KAAK,CAACwgB,WAAW,GAAGxF,OAAO,CAAA;OAC/Chb,KAAK,CAACkgB,YAAY,GAAG,CAAC,CAAA;OACtBlgB,KAAK,CAAC2gB,iBAAiB,GAAG,CAAC,CAAA;OAC3B3gB,KAAK,CAACygB,mBAAmB,GAAGzgB,KAAK,CAAC0gB,mBAAmB,GACnDtY,GAAG,CAACmV,gBAAgB,CAAA;OACtB,IAAI,CAACqD,UAAU,GAAG,CAAC,CAAA;OACnB,IAAI,CAACC,OAAO,GAAG,CAAC,CAAA;OAChB,IAAI,CAACC,UAAU,GAAG,CAAC,CAAA;OACnB,IAAI,CAACC,UAAU,GAAG,CAAC,CAAA;CACpB,KAAA;KACD/gB,KAAK,CAACghB,eAAe,GAAG1C,OAAO,CAAA;KAC/B,IAAI,CAACsC,UAAU,IAAItC,OAAO,CAAA;CAC1Bte,IAAAA,KAAK,CAACihB,cAAc,GAAGjiB,IAAI,CAACoZ,KAAK,CAAC,IAAI,CAACwI,UAAU,GAAG5gB,KAAK,CAACkgB,YAAY,CAAC,CAAA;KACvElgB,KAAK,CAACkhB,eAAe,GAAGjB,OAAO,CAAA;KAC/B,IAAI,CAACa,UAAU,IAAIb,OAAO,CAAA;KAC1B,IAAI,CAACc,UAAU,IAAI5B,OAAO,CAAA;CAC1Bnf,IAAAA,KAAK,CAACmhB,cAAc,GAAGniB,IAAI,CAACoZ,KAAK,CAAC,IAAI,CAAC0I,UAAU,GAAG9gB,KAAK,CAACkgB,YAAY,CAAC,CAAA;KACvElgB,KAAK,CAACohB,YAAY,GAAGpG,OAAO,CAAA;KAC5B,IAAI,CAAC6F,OAAO,IAAI7F,OAAO,CAAA;CACvBhb,IAAAA,KAAK,CAACqhB,WAAW,GAAGriB,IAAI,CAACoZ,KAAK,CAAC,IAAI,CAACyI,OAAO,GAAG7gB,KAAK,CAACkgB,YAAY,CAAC,CAAA;CACjElgB,IAAAA,KAAK,CAAC2gB,iBAAiB,IAAI1jB,IAAI,CAAC+C,KAAK,CAACoB,KAAK,CAAA;CAC3CpB,IAAAA,KAAK,CAACshB,eAAe,GAAGtiB,IAAI,CAACoZ,KAAK,CAC/B,CAAC,GAAGpY,KAAK,CAAC2gB,iBAAiB,GAAI,IAAI,CAACI,UAC3C,CAAK,CAAA;KACD/gB,KAAK,CAACuhB,aAAa,GAAGviB,IAAI,CAACoZ,KAAK,CAAC,IAAI,CAAC2I,UAAU,CAAC,CAAA;CACjD/gB,IAAAA,KAAK,CAACwhB,oBAAoB,GAAGpZ,GAAG,CAACmV,gBAAgB,CAAA;CACrD,GAAG,CAAC,CAAA;CAEFnV,EAAAA,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAACgE,cAAc,EAAE,UAAUzD,SAAS,EAAE/gB,IAAI,EAAE;CAC3D,IAAA,IAAMoI,KAAK,GAAG;OACZsY,IAAI,EAAE9Y,IAAI,CAACiW,WAAW,CAAC/D,GAAG,EAAE,GAAGpD,MAAM,CAACkH,EAAE;CACxC/V,MAAAA,IAAI,EAAE,gBAAgB;OACtB7L,IAAI,EAAEgE,IAAI,CAACqN,KAAAA;MACZ,CAAA;CACDqJ,IAAAA,MAAM,CAAC7F,KAAK,CAAC9S,IAAI,CAACqK,KAAK,CAAC,CAAA;CACxBuW,IAAAA,gBAAgB,EAAE,CAAA;KAClB/W,IAAI,CAAC2Z,aAAa,EAAE,CAAA;CACpBpD,IAAAA,eAAe,EAAE,CAAA;CACrB,GAAG,CAAC,CAAA;CAEFhT,EAAAA,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAACiE,YAAY,EAAE,UAAU1D,SAAS,EAAE/gB,IAAI,EAAE;CACzD,IAAA,IAAMoI,KAAK,GAAG;OACZsY,IAAI,EAAE9Y,IAAI,CAACiW,WAAW,CAAC/D,GAAG,EAAE,GAAGpD,MAAM,CAACkH,EAAE;CACxC/V,MAAAA,IAAI,EAAE,cAAc;CACpB7L,MAAAA,IAAI,EAAEgE,IAAI,CAACgQ,IAAI,CAACnL,EAAE,GAAG,KAAK,GAAG7E,IAAI,CAACgQ,IAAI,CAAC3C,KAAAA;MACxC,CAAA;CACDqJ,IAAAA,MAAM,CAAC7F,KAAK,CAAC9S,IAAI,CAACqK,KAAK,CAAC,CAAA;CACxBuW,IAAAA,gBAAgB,EAAE,CAAA;KAClB/W,IAAI,CAAC2Z,aAAa,EAAE,CAAA;CACpBpD,IAAAA,eAAe,EAAE,CAAA;CACjBpb,IAAAA,KAAK,CAAC2hB,OAAO,GAAG1kB,IAAI,CAACgQ,IAAI,CAAC0U,OAAO,CAAA;CAEjC,IAAA,IAAMrX,KAAK,GAAGrN,IAAI,CAACgQ,IAAI,CAAC3C,KAAK,CAAA;CAC7B,IAAA,IAAMsX,SAAS,GAAGxZ,GAAG,CAACyZ,gBAAgB,CAAA;CACtC,IAAA,IAAI7hB,KAAK,CAAC8hB,UAAU,KAAKzkB,SAAS,EAAE;OAClC2C,KAAK,CAAC8hB,UAAU,GAAGxX,KAAK,CAAA;CACzB,KAAA;CAEDtK,IAAAA,KAAK,CAAC+hB,mBAAmB,GAAG9kB,IAAI,CAACgQ,IAAI,CAAC+U,eAAe,CAAA;CACrDhiB,IAAAA,KAAK,CAACiiB,SAAS,GAAGhlB,IAAI,CAACgQ,IAAI,CAAC7P,KAAK,CAAA;CAEjC,IAAA,IAAIwkB,SAAS,EAAE;OACb,IAAI5hB,KAAK,CAACkiB,eAAe,EAAE;CACzBliB,QAAAA,KAAK,CAACmiB,YAAY,GAAGnjB,IAAI,CAACzB,GAAG,CAACyC,KAAK,CAACmiB,YAAY,EAAE7X,KAAK,CAAC,CAAA;CACxDtK,QAAAA,KAAK,CAACoiB,YAAY,GAAGpjB,IAAI,CAAC1B,GAAG,CAAC0C,KAAK,CAACoiB,YAAY,EAAE9X,KAAK,CAAC,CAAA;SACxDtK,KAAK,CAACkiB,eAAe,EAAE,CAAA;SACvB,IAAI,IAAI,CAACG,aAAa,IAAI/X,KAAK,KAAKtK,KAAK,CAACsiB,aAAa,EAAE;WACvDtiB,KAAK,CAACuiB,eAAe,EAAE,CAAA;CACxB,SAAA;CACT,OAAO,MAAM;CACLviB,QAAAA,KAAK,CAACmiB,YAAY,GAAGniB,KAAK,CAACoiB,YAAY,GAAG9X,KAAK,CAAA;SAC/CtK,KAAK,CAACuiB,eAAe,GAAG,CAAC,CAAA;SACzBviB,KAAK,CAACkiB,eAAe,GAAG,CAAC,CAAA;SACzB,IAAI,CAACM,YAAY,GAAG,CAAC,CAAA;CACtB,OAAA;OACD,IAAI,CAACA,YAAY,IAAIlY,KAAK,CAAA;CAC1BtK,MAAAA,KAAK,CAACyiB,YAAY,GAChBzjB,IAAI,CAACoZ,KAAK,CAAE,IAAI,GAAG,IAAI,CAACoK,YAAY,GAAIxiB,KAAK,CAACkiB,eAAe,CAAC,GAAG,IAAI,CAAA;OACvEliB,KAAK,CAACsiB,aAAa,GAAGhY,KAAK,CAAA;CACjC,KAAK,MAAM;OACL,IAAItK,KAAK,CAAC0iB,iBAAiB,EAAE;CAC3B1iB,QAAAA,KAAK,CAAC2iB,cAAc,GAAG3jB,IAAI,CAACzB,GAAG,CAACyC,KAAK,CAAC2iB,cAAc,EAAErY,KAAK,CAAC,CAAA;CAC5DtK,QAAAA,KAAK,CAAC4iB,cAAc,GAAG5jB,IAAI,CAAC1B,GAAG,CAAC0C,KAAK,CAAC4iB,cAAc,EAAEtY,KAAK,CAAC,CAAA;SAC5DtK,KAAK,CAAC0iB,iBAAiB,EAAE,CAAA;SACzB,IAAI,CAAC,IAAI,CAACL,aAAa,IAAI/X,KAAK,KAAKtK,KAAK,CAAC6iB,eAAe,EAAE;WAC1D7iB,KAAK,CAAC8iB,iBAAiB,EAAE,CAAA;CAC1B,SAAA;CACT,OAAO,MAAM;CACL9iB,QAAAA,KAAK,CAAC2iB,cAAc,GAAG3iB,KAAK,CAAC4iB,cAAc,GAAGtY,KAAK,CAAA;SACnDtK,KAAK,CAAC8iB,iBAAiB,GAAG,CAAC,CAAA;SAC3B9iB,KAAK,CAAC0iB,iBAAiB,GAAG,CAAC,CAAA;CAC5B,OAAA;OACD1iB,KAAK,CAAC6iB,eAAe,GAAGvY,KAAK,CAAA;CAC9B,KAAA;KACD,IAAI,CAAC+X,aAAa,GAAGT,SAAS,CAAA;CAClC,GAAG,CAAC,CAAA;CAEFxZ,EAAAA,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAACsF,2BAA2B,EAAE,UAAU/E,SAAS,EAAE/gB,IAAI,EAAE;CACxE,IAAA,IAAI+C,KAAK,EAAE;CACT,MAAA,IAAIA,KAAK,CAACgjB,wBAAwB,KAAK3lB,SAAS,EAAE;SAChD2C,KAAK,CAACgjB,wBAAwB,GAAG,CAAC,CAAA;CAC1C,OAAO,MAAM;SACLhjB,KAAK,CAACgjB,wBAAwB,EAAE,CAAA;CACjC,OAAA;CACF,KAAA;CACL,GAAG,CAAC,CAAA;CAEF5a,EAAAA,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAACwF,cAAc,EAAE,UAAUjF,SAAS,EAAE/gB,IAAI,EAAE;CAC3D,IAAA,IAAI,CAAC+C,KAAK,CAACkjB,aAAa,EAAE;OACxBljB,KAAK,CAACkjB,aAAa,GAAG,CAAC,CAAA;OACvB,IAAI,CAACC,gBAAgB,GAAG,CAAC,CAAA;OACzBnjB,KAAK,CAACojB,kBAAkB,GAAG,CAAC,CAAA;CAC7B,KAAA;KACDpjB,KAAK,CAACkjB,aAAa,EAAE,CAAA;CACrB,IAAA,IAAI,CAACC,gBAAgB,IAAIlmB,IAAI,CAAC+C,KAAK,CAACqjB,QAAQ,GAAGpmB,IAAI,CAAC+C,KAAK,CAACsjB,MAAM,CAAA;KAChEtjB,KAAK,CAACojB,kBAAkB,GAAG,IAAI,CAACD,gBAAgB,GAAGnjB,KAAK,CAACkjB,aAAa,CAAA;CAC1E,GAAG,CAAC,CAAA;CAEF9a,EAAAA,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAAC8F,KAAK,EAAE,UAAUvF,SAAS,EAAE/gB,IAAI,EAAE;CAClDlB,IAAAA,OAAO,CAAC+G,IAAI,CAAC,cAAc,EAAE7F,IAAI,CAAC,CAAA;KAClC,QAAQA,IAAI,CAAC4N,OAAO;CAClB,MAAA,KAAK+O,GAAG,CAAC4J,YAAY,CAACC,mBAAmB;SACvC,IAAI;CACFvL,UAAAA,CAAC,CAAC,WAAW,CAAC,CAACC,IAAI,CACjB,uBAAuB,GACrBlb,IAAI,CAACymB,OAAO,CAACtsB,GAAG,GAChB,IAAI,GACJA,GAAG,GACH,6BAA6B,GAC7B6F,IAAI,CAAC0mB,QAAQ,CAACC,IAAI,GAClB,OAAO,GACP3mB,IAAI,CAAC0mB,QAAQ,CAACvoB,IAC5B,CAAW,CAAA;CACD,UAAA,IAAI6B,IAAI,CAAC0mB,QAAQ,CAACC,IAAI,KAAK,CAAC,EAAE;CAC5B1L,YAAAA,CAAC,CAAC,WAAW,CAAC,CAACW,MAAM,CACnB,gNACd,CAAa,CAAA;CACF,WAAA;UACF,CAAC,OAAO5c,GAAG,EAAE;WACZic,CAAC,CAAC,WAAW,CAAC,CAACC,IAAI,CACjB,uBAAuB,GACrBlb,IAAI,CAACymB,OAAO,CAACtsB,GAAG,GAChB,IAAI,GACJA,GAAG,GACH,yBAAyB,GACzB6F,IAAI,CAAC0mB,QAAQ,CAACvoB,IAC5B,CAAW,CAAA;CACF,SAAA;CACD,QAAA,MAAA;CACF,MAAA,KAAKwe,GAAG,CAAC4J,YAAY,CAACK,qBAAqB;SACzCC,QAAQ,CAAC,gCAAgC,CAAC,CAAA;CAC1C,QAAA,MAAA;CACF,MAAA,KAAKlK,GAAG,CAAC4J,YAAY,CAACO,sBAAsB;CAC1CD,QAAAA,QAAQ,CAAC,+BAA+B,GAAG7mB,IAAI,CAAC+mB,MAAM,CAAC,CAAA;CACvD,QAAA,MAAA;CACF,MAAA,KAAKpK,GAAG,CAAC4J,YAAY,CAACS,iBAAiB;CACrCH,QAAAA,QAAQ,CACN,qCAAqC,GAAG7mB,IAAI,CAACqN,KAAK,GAAG,GAAG,GAAGrN,IAAI,CAAC7F,GAC1E,CAAS,CAAA;CACT;CACA;CACQ,QAAA,MAAA;CACF,MAAA,KAAKwiB,GAAG,CAAC4J,YAAY,CAACU,gBAAgB;CACpCJ,QAAAA,QAAQ,CACN,qCAAqC,GACnC7mB,IAAI,CAACymB,OAAO,CAACpZ,KAAK,GAClB,GAAG,GACHrN,IAAI,CAAC7F,GACjB,CAAS,CAAA;CACT;CACA;CACQ,QAAA,MAAA;CACF,MAAA,KAAKwiB,GAAG,CAAC4J,YAAY,CAACW,kBAAkB;CACtCL,QAAAA,QAAQ,CACN,uCAAuC,GACrC7mB,IAAI,CAACymB,OAAO,CAACpZ,KAAK,GAClB,GAAG,GACHrN,IAAI,CAAC7F,GACjB,CAAS,CAAA;CACT;CACA;CACQ,QAAA,MAAA;CACF,MAAA,KAAKwiB,GAAG,CAAC4J,YAAY,CAACY,kBAAkB;CACtCN,QAAAA,QAAQ,CAAC,wCAAwC,GAAG7mB,IAAI,CAACqN,KAAK,CAAC,CAAA;CAC/D,QAAA,MAAA;CACF,MAAA,KAAKsP,GAAG,CAAC4J,YAAY,CAACa,eAAe;SACnCP,QAAQ,CAAC,+BAA+B,GAAG7mB,IAAI,CAACgQ,IAAI,CAAC7V,GAAG,CAAC,CAAA;CACzD,QAAA,MAAA;CACF,MAAA,KAAKwiB,GAAG,CAAC4J,YAAY,CAACc,iBAAiB;SACrCR,QAAQ,CAAC,iCAAiC,GAAG7mB,IAAI,CAACgQ,IAAI,CAAC7V,GAAG,CAAC,CAAA;CAC3D,QAAA,MAAA;CACF,MAAA,KAAKwiB,GAAG,CAAC4J,YAAY,CAACe,uBAAuB;SAC3CT,QAAQ,CAAC,6BAA6B,CAAC,CAAA;CACvC,QAAA,MAAA;CACF,MAAA,KAAKlK,GAAG,CAAC4J,YAAY,CAACgB,kBAAkB;CACtCV,QAAAA,QAAQ,CAAC,mBAAmB,GAAG7mB,IAAI,CAAC+mB,MAAM,CAAC,CAAA;CAC3C,QAAA,MAAA;CACF,MAAA,KAAKpK,GAAG,CAAC4J,YAAY,CAACiB,kBAAkB;CACtCX,QAAAA,QAAQ,CAAC,gBAAgB,GAAG7mB,IAAI,CAAC+mB,MAAM,CAAC,CAAA;CACxC,QAAA,MAAA;CACF,MAAA,KAAKpK,GAAG,CAAC4J,YAAY,CAACkB,cAAc;SAClCZ,QAAQ,CAAC,0BAA0B,GAAG7mB,IAAI,CAACgQ,IAAI,CAAC0X,WAAW,CAACC,GAAG,CAAC,CAAA;CAChE,QAAA,MAAA;CACF,MAAA,KAAKhL,GAAG,CAAC4J,YAAY,CAACqB,gBAAgB;SACpCf,QAAQ,CAAC,4BAA4B,GAAG7mB,IAAI,CAACgQ,IAAI,CAAC0X,WAAW,CAACC,GAAG,CAAC,CAAA;CAClE,QAAA,MAAA;CACF,MAAA,KAAKhL,GAAG,CAAC4J,YAAY,CAACsB,mBAAmB;SACvChB,QAAQ,CAAC,qBAAqB,CAAC,CAAA;CAC/B,QAAA,MAAA;CACF,MAAA,KAAKlK,GAAG,CAAC4J,YAAY,CAACuB,sBAAsB;CAC1CjB,QAAAA,QAAQ,CACN,6BAA6B,GAC3B7mB,IAAI,CAAC+nB,QAAQ,GACb,GAAG,GACH/nB,IAAI,CAACoR,KAAK,CAAC4W,OACvB,CAAS,CAAA;CACD,QAAA,MAAA;CACF,MAAA,KAAKrL,GAAG,CAAC4J,YAAY,CAAC0B,sBAAsB;SAC1CpB,QAAQ,CAAC,wBAAwB,CAAC,CAAA;CAClC,QAAA,MAAA;CACF,MAAA,KAAKlK,GAAG,CAAC4J,YAAY,CAAC2B,oBAAoB;SACxCrB,QAAQ,CAAC,sBAAsB,CAAC,CAAA;CAChC,QAAA,IAAIpN,WAAW,EAAE;WACftO,GAAG,CAACgd,QAAQ,EAAE,CAAA;WACdtX,KAAK,CAACuX,KAAK,EAAE,CAAA;CACd,SAAA;CACD,QAAA,MAAA;CAGH,KAAA;KAED,IAAIpoB,IAAI,CAACqoB,KAAK,EAAE;CACdvpB,MAAAA,OAAO,CAACsS,KAAK,CAAA,gBAAA,GAAkBpR,IAAI,CAAC4N,OAAS,CAAC,CAAA;OAC9C,QAAQ5N,IAAI,CAAC6H,IAAI;CACf,QAAA,KAAK8U,GAAG,CAAC2L,UAAU,CAACC,WAAW;CAC7B1B,UAAAA,QAAQ,CAA4B7mB,0BAAAA,GAAAA,IAAI,CAAC4N,OAAS,CAAC,CAAA;CACnD4a,UAAAA,gBAAgB,EAAE,CAAA;CAClB,UAAA,MAAA;CACF,QAAA,KAAK7L,GAAG,CAAC2L,UAAU,CAACG,aAAa;CAC/B5B,UAAAA,QAAQ,CAA8B7mB,4BAAAA,GAAAA,IAAI,CAAC4N,OAAS,CAAC,CAAA;CACrD,UAAA,MAAA;CACF,QAAA;CACEiZ,UAAAA,QAAQ,CAAqC7mB,mCAAAA,GAAAA,IAAI,CAAC4N,OAAS,CAAC,CAAA;WAC5DzC,GAAG,CAAC8T,OAAO,EAAE,CAAA;CACb,UAAA,MAAA;CACH,OAAA;CACF,KAAA;KACD,IAAI,CAAClc,KAAK,EAAE;OACVA,KAAK,GAAG,EAAE,CAAA;CACX,KAAA;;CAEL;KACI,IAAIA,KAAK,CAAC/C,IAAI,CAAC4N,OAAO,CAAC,KAAKxN,SAAS,EAAE;CACrC2C,MAAAA,KAAK,CAAC/C,IAAI,CAAC4N,OAAO,CAAC,GAAG,CAAC,CAAA;CAC7B,KAAK,MAAM;CACL7K,MAAAA,KAAK,CAAC/C,IAAI,CAAC4N,OAAO,CAAC,IAAI,CAAC,CAAA;CACzB,KAAA;;CAEL;KACI,IAAI5N,IAAI,CAACqoB,KAAK,EAAE;CACd,MAAA,IAAItlB,KAAK,CAAC2lB,UAAU,KAAKtoB,SAAS,EAAE;SAClC2C,KAAK,CAAC2lB,UAAU,GAAG,CAAC,CAAA;CAC5B,OAAO,MAAM;SACL3lB,KAAK,CAAC2lB,UAAU,IAAI,CAAC,CAAA;CACtB,OAAA;CACF,KAAA;CACDzN,IAAAA,CAAC,CAAC,gBAAgB,CAAC,CAAC9c,IAAI,CAAC8X,IAAI,CAACC,SAAS,CAACxY,UAAU,CAACqF,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;CAC3E,GAAG,CAAC,CAAA;CAEFoI,EAAAA,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAACmI,cAAc,EAAE,UAAU5H,SAAS,EAAE/gB,IAAI,EAAE;KAC3DqQ,MAAM,GAAGrQ,IAAI,CAACqQ,MAAM,CAAA;CACxB,GAAG,CAAC,CAAA;CAEFlF,EAAAA,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAACoI,gBAAgB,EAAE,UAAU7H,SAAS,EAAE/gB,IAAI,EAAE;CAC7D,IAAA,IAAIwZ,QAAQ,EAAE;OACZW,QAAQ,CAACna,IAAI,CAAC6H,IAAI,CAAC,CAAC9J,IAAI,CAACiC,IAAI,CAACA,IAAI,CAAC,CAAA;CACpC,KAAA;CACL,GAAG,CAAC,CAAA;CAEFmL,EAAAA,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAACqI,QAAQ,EAAE,UAAU9H,SAAS,EAAE/gB,IAAI,EAAE;CACrD,IAAA,IAAMoI,KAAK,GAAG;OACZsY,IAAI,EAAE9Y,IAAI,CAACiW,WAAW,CAAC/D,GAAG,EAAE,GAAGpD,MAAM,CAACkH,EAAE;CACxC/V,MAAAA,IAAI,EAAE,YAAY;OAClB7L,IAAI,EAAEgE,IAAI,CAAC8oB,cAAc,GAAG,GAAG,GAAG9oB,IAAI,CAAC+oB,cAAAA;MACxC,CAAA;CACDrS,IAAAA,MAAM,CAAC7F,KAAK,CAAC9S,IAAI,CAACqK,KAAK,CAAC,CAAA;CACxBuW,IAAAA,gBAAgB,EAAE,CAAA;CAClB,IAAA,IAAI5b,KAAK,EAAE;CACT,MAAA,IAAIA,KAAK,CAACimB,YAAY,KAAK5oB,SAAS,EAAE;SACpC2C,KAAK,CAACimB,YAAY,GAAG,CAAC,CAAA;CAC9B,OAAO,MAAM;SACLjmB,KAAK,CAACimB,YAAY,EAAE,CAAA;CACrB,OAAA;CAEDjmB,MAAAA,KAAK,CAACkmB,qBAAqB,GAAGjpB,IAAI,CAACkpB,kBAAkB,CAAA;CACtD,KAAA;CACL,GAAG,CAAC,CAAA;CACJ,CAAA;CAEA,SAAS9I,sBAAsBA,CAACvP,KAAK,EAAE;CACrCA,EAAAA,KAAK,CAACc,mBAAmB,CAAC,QAAQ,EAAEwX,gBAAgB,CAAC,CAAA;CACrDtY,EAAAA,KAAK,CAACc,mBAAmB,CAAC,SAAS,EAAEwX,gBAAgB,CAAC,CAAA;CACtDtY,EAAAA,KAAK,CAACc,mBAAmB,CAAC,QAAQ,EAAEwX,gBAAgB,CAAC,CAAA;CACrDtY,EAAAA,KAAK,CAACc,mBAAmB,CAAC,OAAO,EAAEwX,gBAAgB,CAAC,CAAA;CACpDtY,EAAAA,KAAK,CAACc,mBAAmB,CAAC,MAAM,EAAEwX,gBAAgB,CAAC,CAAA;CACnDtY,EAAAA,KAAK,CAACc,mBAAmB,CAAC,SAAS,EAAEwX,gBAAgB,CAAC,CAAA;CACtDtY,EAAAA,KAAK,CAACc,mBAAmB,CAAC,gBAAgB,EAAEwX,gBAAgB,CAAC,CAAA;CAC7DtY,EAAAA,KAAK,CAACc,mBAAmB,CAAC,OAAO,EAAEwX,gBAAgB,CAAC,CAAA;CACpDtY,EAAAA,KAAK,CAACc,mBAAmB,CAAC,SAAS,EAAEwX,gBAAgB,CAAC,CAAA;CACtDtY,EAAAA,KAAK,CAACc,mBAAmB,CAAC,OAAO,EAAEwX,gBAAgB,CAAC,CAAA;CACpDtY,EAAAA,KAAK,CAACc,mBAAmB,CAAC,gBAAgB,EAAEwX,gBAAgB,CAAC,CAAA;CAC7DtY,EAAAA,KAAK,CAACc,mBAAmB,CAAC,YAAY,EAAEwX,gBAAgB,CAAC,CAAA;CACzDtY,EAAAA,KAAK,CAACc,mBAAmB,CAAC,gBAAgB,EAAEwX,gBAAgB,CAAC,CAAA;CAC7DtY,EAAAA,KAAK,CAACc,mBAAmB,CAAC,cAAc,EAAEyX,iBAAiB,CAAC,CAAA;CAC5DvY,EAAAA,KAAK,CAACI,gBAAgB,CAAC,QAAQ,EAAEkY,gBAAgB,CAAC,CAAA;CAClDtY,EAAAA,KAAK,CAACI,gBAAgB,CAAC,SAAS,EAAEkY,gBAAgB,CAAC,CAAA;CACnDtY,EAAAA,KAAK,CAACI,gBAAgB,CAAC,QAAQ,EAAEkY,gBAAgB,CAAC,CAAA;CAClDtY,EAAAA,KAAK,CAACI,gBAAgB,CAAC,OAAO,EAAEkY,gBAAgB,CAAC,CAAA;CACjDtY,EAAAA,KAAK,CAACI,gBAAgB,CAAC,MAAM,EAAEkY,gBAAgB,CAAC,CAAA;CAChDtY,EAAAA,KAAK,CAACI,gBAAgB,CAAC,SAAS,EAAEkY,gBAAgB,CAAC,CAAA;CACnDtY,EAAAA,KAAK,CAACI,gBAAgB,CAAC,gBAAgB,EAAEkY,gBAAgB,CAAC,CAAA;CAC1DtY,EAAAA,KAAK,CAACI,gBAAgB,CAAC,OAAO,EAAEkY,gBAAgB,CAAC,CAAA;CACjDtY,EAAAA,KAAK,CAACI,gBAAgB,CAAC,SAAS,EAAEkY,gBAAgB,CAAC,CAAA;CACnDtY,EAAAA,KAAK,CAACI,gBAAgB,CAAC,OAAO,EAAEkY,gBAAgB,CAAC,CAAA;CACjDtY,EAAAA,KAAK,CAACI,gBAAgB,CAAC,gBAAgB,EAAEkY,gBAAgB,CAAC,CAAA;CAC1DtY,EAAAA,KAAK,CAACI,gBAAgB,CAAC,YAAY,EAAEkY,gBAAgB,CAAC,CAAA;CACtDtY,EAAAA,KAAK,CAACI,gBAAgB,CAAC,gBAAgB,EAAEkY,gBAAgB,CAAC,CAAA;CAC1DtY,EAAAA,KAAK,CAACI,gBAAgB,CAAC,cAAc,EAAEmY,iBAAiB,CAAC,CAAA;CAC3D,CAAA;CAEA,SAAStK,iBAAiBA,GAAG;CAC3B,EAAA,IAAIuK,SAAS,CAACC,SAAS,CAACC,WAAW,EAAE,CAACzX,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;KAC/DsN,SAAS,CACP,uQACN,CAAK,CAAA;CACL,GAAG,MAAM;KACLA,SAAS,CACP,sEACN,CAAK,CAAA;CACF,GAAA;CACH,CAAA;CAEA,SAAS+J,gBAAgBA,CAACK,GAAG,EAAE;GAC7B,IAAIxpB,IAAI,GAAG,EAAE,CAAA;GACb,QAAQwpB,GAAG,CAAC3hB,IAAI;CACd,IAAA,KAAK,gBAAgB;OACnB,IAAI2hB,GAAG,CAAC/uB,MAAM,CAACwL,QAAQ,GAAGgU,YAAY,IAAI,GAAG,EAAE;CACrD;CACQ,QAAA,OAAA;CACD,OAAA;CACDA,MAAAA,YAAY,GAAGuP,GAAG,CAAC/uB,MAAM,CAACwL,QAAQ,CAAA;CAClCjG,MAAAA,IAAI,GAAG+B,IAAI,CAACoZ,KAAK,CAACqO,GAAG,CAAC/uB,MAAM,CAACwL,QAAQ,GAAG,IAAI,CAAC,CAAA;CAC7C,MAAA,MAAA;CACF,IAAA,KAAK,QAAQ;CACXjG,MAAAA,IAAI,GAAGwpB,GAAG,CAAC/uB,MAAM,CAAC2gB,UAAU,GAAG,GAAG,GAAGoO,GAAG,CAAC/uB,MAAM,CAAC4gB,WAAW,CAAA;CAC3DN,MAAAA,YAAY,EAAE,CAAA;CACd,MAAA,MAAA;CACF,IAAA,KAAK,gBAAgB,CAAA;CACrB,IAAA,KAAK,YAAY,CAAA;CACjB,IAAA,KAAK,SAAS,CAAA;CACd,IAAA,KAAK,gBAAgB,CAAA;CACrB,IAAA,KAAK,OAAO,CAAA;CACZ,IAAA,KAAK,SAAS,CAAA;CACd,IAAA,KAAK,QAAQ,CAAA;CACb,IAAA,KAAK,MAAM,CAAA;CACX,IAAA,KAAK,SAAS;CACZf,MAAAA,iBAAiB,GAAGwP,GAAG,CAAC/uB,MAAM,CAAC2Q,WAAW,CAAA;CAC5C,IAAA,KAAK,OAAO,CAAA;CACZ,IAAA,KAAK,SAAS,CAAA;CACd,IAAA,KAAK,SAAS,CAAA;CACd,IAAA,KAAK,OAAO;CACVpL,MAAAA,IAAI,GAAG+B,IAAI,CAACoZ,KAAK,CAACqO,GAAG,CAAC/uB,MAAM,CAAC2Q,WAAW,GAAG,IAAI,CAAC,CAAA;CAChD,MAAA,IAAIoe,GAAG,CAAC3hB,IAAI,KAAK,OAAO,EAAE;CACxB,QAAA,IAAI4hB,QAAQ,CAAA;CACZ,QAAA,IAAMC,UAAU,GAAGF,GAAG,CAAC9X,aAAa,CAACN,KAAK,CAAA;SAC1C,QAAQsY,UAAU,CAAC/C,IAAI;WACrB,KAAK+C,UAAU,CAACC,iBAAiB;CAC/BF,YAAAA,QAAQ,GAAG,gCAAgC,CAAA;CAC3C,YAAA,MAAA;WACF,KAAKC,UAAU,CAACE,gBAAgB;CAC9BH,YAAAA,QAAQ,GACN,4HAA4H,CAAA;CAC9HjB,YAAAA,gBAAgB,EAAE,CAAA;CAClB,YAAA,MAAA;WACF,KAAKkB,UAAU,CAACG,iBAAiB;CAC/BJ,YAAAA,QAAQ,GACN,4DAA4D,CAAA;CAC9D,YAAA,MAAA;WACF,KAAKC,UAAU,CAACI,2BAA2B;CACzCL,YAAAA,QAAQ,GACN,mHAAmH,CAAA;CACrH,YAAA,MAAA;CACH,SAAA;SAED,IAAIC,UAAU,CAAC1B,OAAO,EAAE;CACtByB,UAAAA,QAAQ,IAAI,KAAK,GAAGC,UAAU,CAAC1B,OAAO,CAAA;CACvC,SAAA;SAED5I,SAAS,CAACqK,QAAQ,CAAC,CAAA;CACnB3qB,QAAAA,OAAO,CAACsS,KAAK,CAACqY,QAAQ,CAAC,CAAA;CACxB,OAAA;CACD,MAAA,MAAA;CAGH,GAAA;CAED,EAAA,IAAMrhB,KAAK,GAAG;KACZsY,IAAI,EAAE9Y,IAAI,CAACiW,WAAW,CAAC/D,GAAG,EAAE,GAAGpD,MAAM,CAACkH,EAAE;KACxC/V,IAAI,EAAE2hB,GAAG,CAAC3hB,IAAI;CACd7L,IAAAA,IAAI,EAAEgE,IAAAA;IACP,CAAA;CAED0W,EAAAA,MAAM,CAAC7F,KAAK,CAAC9S,IAAI,CAACqK,KAAK,CAAC,CAAA;CACxB,EAAA,IAAIohB,GAAG,CAAC3hB,IAAI,KAAK,SAAS,EAAE;CAC1BkS,IAAAA,cAAc,GAAGrD,MAAM,CAAC7F,KAAK,CAACtQ,MAAM,GAAG,CAAC,CAAA;CACzC,GAAA;CAED,EAAA,IAAIipB,GAAG,CAAC3hB,IAAI,KAAK,QAAQ,EAAE;CACzB6O,IAAAA,MAAM,CAAC7F,KAAK,CAACkJ,cAAc,CAAC,CAAC9T,QAAQ,GACnCmC,KAAK,CAACsY,IAAI,GAAGhK,MAAM,CAAC7F,KAAK,CAACkJ,cAAc,CAAC,CAAC2G,IAAI,CAAA;CACjD,GAAA;CAED/B,EAAAA,gBAAgB,EAAE,CAAA;CACpB,CAAA;CAEA,SAASyK,iBAAiBA,GAAG;GAC3BrM,YAAY,CAACgN,OAAO,CAClB7R,YAAY,CAACG,MAAM,EACnBpC,IAAI,CAACC,SAAS,CAAC;KACb+G,KAAK,EAAEpM,KAAK,CAACoM,KAAK;KAClB5E,MAAM,EAAExH,KAAK,CAACwH,MAAAA;CACpB,GAAK,CACL,CAAG,CAAA;CACH,CAAA;CAiBA,SAASmQ,gBAAgBA,GAAG;CAC1B,EAAA,IAAInP,gBAAgB,EAAE;KACpB,IAAMS,GAAG,GAAGlS,IAAI,CAACiW,WAAW,CAAC/D,GAAG,EAAE,CAAA;CAClC,IAAA,IACE,CAAClS,IAAI,CAACoW,wBAAwB,IAC9BlE,GAAG,GAAGlS,IAAI,CAACoW,wBAAwB,GAAG,IAAI,EAC1C;OACApW,IAAI,CAACoW,wBAAwB,GAAGpW,IAAI,CAACiW,WAAW,CAAC/D,GAAG,EAAE,CAAA;CACtDmB,MAAAA,CAAC,CAAC,YAAY,CAAC,CAACW,MAAM,CAAC,kCAAkC,CAAC,CAAA;OAC1DzQ,GAAG,CAAC6e,iBAAiB,EAAE,CAAA;CAC7B,KAAK,MAAM;CACL,MAAA,IACE,CAACpiB,IAAI,CAACqW,yBAAyB,IAC/BnE,GAAG,GAAGlS,IAAI,CAACqW,yBAAyB,GAAG,IAAI,EAC3C;SACArW,IAAI,CAACqW,yBAAyB,GAAGrW,IAAI,CAACiW,WAAW,CAAC/D,GAAG,EAAE,CAAA;CACvDmB,QAAAA,CAAC,CAAC,YAAY,CAAC,CAACW,MAAM,CACpB,uDACV,CAAS,CAAA;SACDzQ,GAAG,CAAC8e,cAAc,EAAE,CAAA;SACpB9e,GAAG,CAAC6e,iBAAiB,EAAE,CAAA;CAC/B,OAAO,MAAM;CACL/O,QAAAA,CAAC,CAAC,YAAY,CAAC,CAACW,MAAM,CACpB,qDACV,CAAS,CAAA;CACF,OAAA;CACF,KAAA;CACF,GAAA;CACH,CAAA;CAEA,SAASsO,kBAAkBA,CAACC,CAAC,EAAE;GAC7B,IAAIprB,GAAG,GAAG,EAAE,CAAA;CACZ,EAAA,KAAK,IAAIqD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+nB,CAAC,CAAC5pB,MAAM,EAAE6B,CAAC,EAAE,EAAE;CACjCrD,IAAAA,GAAG,IAAI,GAAG,GAAGorB,CAAC,CAAChqB,KAAK,CAACiC,CAAC,CAAC,GAAG,IAAI,GAAG+nB,CAAC,CAAC3pB,GAAG,CAAC4B,CAAC,CAAC,GAAG,GAAG,CAAA;CAC/CrD,IAAAA,GAAG,IAAI,GAAG,CAAA;CACX,GAAA;CACD,EAAA,OAAOA,GAAG,CAAA;CACZ,CAAA;CAEA,SAASmd,WAAWA,GAAG;CACrB,EAAA,IAAMta,MAAM,GAAGvD,QAAQ,CAACub,aAAa,CAAC,iBAAiB,CAAC,CAAA;CACxD,EAAA,IAAMnY,GAAG,GAAGG,MAAM,CAAC+F,UAAU,CAAC,IAAI,CAAC,CAAA;CACnC,EAAA,IAAMwiB,CAAC,GAAGtZ,KAAK,CAACM,QAAQ,CAAA;CACxB,EAAA,IAAMiZ,WAAW,GAAGC,cAAc,EAAE,CAAA;CACpC,EAAA,IAAIC,iBAAiB,CAAA;CACrB,EAAA,IAAIH,CAAC,EAAE;KACL1oB,GAAG,CAACqC,SAAS,GAAG,OAAO,CAAA;CACvB,IAAA,IAAI,CAAClC,MAAM,CAAC8C,KAAK,IAAI9C,MAAM,CAAC8C,KAAK,KAAKmM,KAAK,CAAC0Z,WAAW,EAAE;CACvD3oB,MAAAA,MAAM,CAAC8C,KAAK,GAAGmM,KAAK,CAAC0Z,WAAW,CAAA;CACjC,KAAA;CACD9oB,IAAAA,GAAG,CAACsC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAEnC,MAAM,CAAC8C,KAAK,EAAE9C,MAAM,CAACyB,MAAM,CAAC,CAAA;CAC/C,IAAA,IAAMkF,GAAG,GAAGsI,KAAK,CAACzF,WAAW,CAAA;KAC7B,IAAIof,SAAS,GAAG,CAAC,CAAA;KACjB/oB,GAAG,CAACqC,SAAS,GAAG,MAAM,CAAA;CACtB,IAAA,KAAK,IAAI1B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+nB,CAAC,CAAC5pB,MAAM,EAAE6B,CAAC,EAAE,EAAE;CACjC,MAAA,IAAMjC,KAAK,GAAIgqB,CAAC,CAAChqB,KAAK,CAACiC,CAAC,CAAC,GAAGgoB,WAAW,GAAIxoB,MAAM,CAAC8C,KAAK,CAAA;CACvD,MAAA,IAAMlE,GAAG,GAAI2pB,CAAC,CAAC3pB,GAAG,CAAC4B,CAAC,CAAC,GAAGgoB,WAAW,GAAIxoB,MAAM,CAAC8C,KAAK,CAAA;CACnDjD,MAAAA,GAAG,CAACsC,QAAQ,CAAC5D,KAAK,EAAE,CAAC,EAAE4B,IAAI,CAAC1B,GAAG,CAAC,CAAC,EAAEG,GAAG,GAAGL,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;CACpD,MAAA,IAAIoI,GAAG,IAAI4hB,CAAC,CAAChqB,KAAK,CAACiC,CAAC,CAAC,IAAImG,GAAG,GAAG4hB,CAAC,CAAC3pB,GAAG,CAAC4B,CAAC,CAAC,EAAE;CAC/C;SACQooB,SAAS,GAAGL,CAAC,CAAC3pB,GAAG,CAAC4B,CAAC,CAAC,GAAGmG,GAAG,CAAA;CAC3B,OAAA;CACF,KAAA;CACL;CACI,IAAA,IACEiiB,SAAS,IAAI,GAAG,IAChB3Z,KAAK,CAACkD,MAAM,KAAK,KAAK,IACtBxL,GAAG,GAAGyR,iBAAiB,GAAG,GAAG,EAC7B;OACA,IAAIC,YAAY,GAAG1R,GAAG,IAAI,GAAG,IAAImO,MAAM,CAACqL,MAAM,KAAK,KAAK,EAAE,CAEzD,MAAM;CACb;CACQ,QAAA,IAAIrI,YAAY,KAAK,CAAC,CAAC,EAAE;WACvB4Q,iBAAiB,GACf1iB,IAAI,CAACiW,WAAW,CAAC/D,GAAG,EAAE,GACtBpD,MAAM,CAACkH,EAAE,GACTlH,MAAM,CAAC7F,KAAK,CAAC6I,YAAY,CAAC,CAACgH,IAAI,CAAA;WACjChK,MAAM,CAAC7F,KAAK,CAAC6I,YAAY,CAAC,CAACzT,QAAQ,GAAGqkB,iBAAiB,CAAA;WACvD5T,MAAM,CAAC7F,KAAK,CAAC6I,YAAY,CAAC,CAAC1d,IAAI,GAAGsuB,iBAAiB,CAAA;CAC7D,SAAS,MAAM;CACL5T,UAAAA,MAAM,CAAC7F,KAAK,CAAC9S,IAAI,CAAC;CAChB8J,YAAAA,IAAI,EAAE,WAAW;aACjB6Y,IAAI,EAAE9Y,IAAI,CAACiW,WAAW,CAAC/D,GAAG,EAAE,GAAGpD,MAAM,CAACkH,EAAAA;CAClD,WAAW,CAAC,CAAA;CACFe,UAAAA,gBAAgB,EAAE,CAAA;CAC5B;CACUjF,UAAAA,YAAY,GAAGhD,MAAM,CAAC7F,KAAK,CAACtQ,MAAM,GAAG,CAAC,CAAA;CACvC,SAAA;CACF,OAAA;CACF,KAAA;KAED,IAAIiqB,SAAS,GAAG,GAAG,IAAI9Q,YAAY,KAAK,CAAC,CAAC,EAAE;OAC1C4Q,iBAAiB,GACf1iB,IAAI,CAACiW,WAAW,CAAC/D,GAAG,EAAE,GAAGpD,MAAM,CAACkH,EAAE,GAAGlH,MAAM,CAAC7F,KAAK,CAAC6I,YAAY,CAAC,CAACgH,IAAI,CAAA;OACtEhK,MAAM,CAAC7F,KAAK,CAAC6I,YAAY,CAAC,CAACzT,QAAQ,GAAGqkB,iBAAiB,CAAA;OACvD5T,MAAM,CAAC7F,KAAK,CAAC6I,YAAY,CAAC,CAAC1d,IAAI,GAAGsuB,iBAAiB,CAAA;CACzD;OACM5Q,YAAY,GAAG,CAAC,CAAC,CAAA;CAClB,KAAA;;CAEL;CACI,IAAA,IAAMtR,KAAK,GAAG;OACZsY,IAAI,EAAE9Y,IAAI,CAACiW,WAAW,CAAC/D,GAAG,EAAE,GAAGpD,MAAM,CAACkH,EAAE;OACxChN,MAAM,EAAE7O,IAAI,CAACoZ,KAAK,CAACqP,SAAS,GAAG,IAAI,CAAC;CACpCjiB,MAAAA,GAAG,EAAExG,IAAI,CAACoZ,KAAK,CAAC5S,GAAG,GAAG,IAAI,CAAA;MAC3B,CAAA;CACD,IAAA,IAAMkiB,SAAS,GAAG/T,MAAM,CAAC9F,MAAM,CAAA;CAC/B,IAAA,IAAM8Z,WAAW,GAAGD,SAAS,CAAClqB,MAAM,CAAA;KACpC,IAAImqB,WAAW,GAAG,CAAC,EAAE;CACnB,MAAA,IAAMC,MAAM,GAAGF,SAAS,CAACC,WAAW,GAAG,CAAC,CAAC,CAAA;CACzC,MAAA,IAAME,MAAM,GAAGH,SAAS,CAACC,WAAW,GAAG,CAAC,CAAC,CAAA;CACzC,MAAA,IAAMG,SAAS,GACb,CAACF,MAAM,CAAC/Z,MAAM,GAAGga,MAAM,CAACha,MAAM,KAAK+Z,MAAM,CAACjK,IAAI,GAAGkK,MAAM,CAAClK,IAAI,CAAC,CAAA;CAC/D,MAAA,IAAMoK,SAAS,GACb,CAACF,MAAM,CAACha,MAAM,GAAGxI,KAAK,CAACwI,MAAM,KAAKga,MAAM,CAAClK,IAAI,GAAGtY,KAAK,CAACsY,IAAI,CAAC,CAAA;CAE7D,MAAA,IAAMqK,SAAS,GAAG,CAACJ,MAAM,CAACpiB,GAAG,GAAGqiB,MAAM,CAACriB,GAAG,KAAKoiB,MAAM,CAACjK,IAAI,GAAGkK,MAAM,CAAClK,IAAI,CAAC,CAAA;CACzE,MAAA,IAAMsK,SAAS,GAAG,CAACJ,MAAM,CAACriB,GAAG,GAAGH,KAAK,CAACG,GAAG,KAAKqiB,MAAM,CAAClK,IAAI,GAAGtY,KAAK,CAACsY,IAAI,CAAC,CAAA;CAC7E;CACM,MAAA,IACE,CAACmK,SAAS,KAAKC,SAAS,IACtB/oB,IAAI,CAACoH,GAAG,CAAC0hB,SAAS,GAAGC,SAAS,GAAG,CAAC,CAAC,IAAI,GAAG,MAC3CC,SAAS,KAAKC,SAAS,IAAIjpB,IAAI,CAACoH,GAAG,CAAC4hB,SAAS,GAAGC,SAAS,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,EACvE;SACAP,SAAS,CAACQ,GAAG,EAAE,CAAA;CAChB,OAAA;CACF,KAAA;CACDvU,IAAAA,MAAM,CAAC9F,MAAM,CAAC7S,IAAI,CAACqK,KAAK,CAAC,CAAA;CACzBuW,IAAAA,gBAAgB,EAAE,CAAA;KAClB/W,IAAI,CAAC2Z,aAAa,EAAE,CAAA;KAEpB,IAAItG,CAAC,CAAC,kBAAkB,CAAC,CAACiQ,EAAE,CAAC,UAAU,CAAC,EAAE;OACxC,IAAInsB,GAAG,GAAgB8R,YAAAA,GAAAA,KAAK,CAAC5K,QAAQ,GAAeikB,cAAAA,GAAAA,kBAAkB,CACpErZ,KAAK,CAACM,QACP,CAAA,GAAA,cAAA,GAAe+Y,kBAAkB,CAChCrZ,KAAK,CAACsa,QACd,CAAO,GAAA,YAAA,GAAajB,kBAAkB,CAACrZ,KAAK,CAACua,MAAM,CAAC,GAAI,IAAA,CAAA;OAClD,IAAIjgB,GAAG,CAAC7D,KAAK,EAAE;CACb,QAAA,KAAK,IAAMO,IAAI,IAAIwI,MAAM,EAAE;CACzBtR,UAAAA,GAAG,IAAkB8I,aAAAA,GAAAA,IAAI,GAAaqiB,YAAAA,GAAAA,kBAAkB,CACtD7Z,MAAM,CAACxI,IAAI,CAAC,CAAC+I,MAAM,CAACO,QACrB,CAAA,GAAI,IAAA,CAAA;CACN,SAAA;CACD,QAAA,IAAMka,oBAAoB,GAAGxa,KAAK,CAACya,uBAAuB,CAAA;CAC1D,QAAA,IACED,oBAAoB,IACpB,OAAOA,oBAAoB,KAAK,OAAOE,QAAQ,EAC/C;WACAxsB,GAAG,IAAA,kBAAA,GACD8R,KAAK,CAACya,uBAAuB,EAAE,CAACE,kBAAkB,GAChD,IAAA,CAAA;WACJzsB,GAAG,IAAA,oBAAA,GACD8R,KAAK,CAACya,uBAAuB,EAAE,CAACG,oBAAoB,GAClD,IAAA,CAAA;CACd,SAAS,MAAM,IAAI5a,KAAK,CAAC6a,uBAAuB,EAAE;CACxC3sB,UAAAA,GAAG,IAAuB8R,kBAAAA,GAAAA,KAAK,CAAC6a,uBAAuB,GAAI,IAAA,CAAA;CAC5D,SAAA;CACF,OAAA;OACD3sB,GAAG,IAAA,iBAAA,GAAsBoM,GAAG,CAACwgB,YAAY,CAAC9kB,OAAO,CAAC,CAAC,CAAC,GAAI,IAAA,CAAA;OACxD9H,GAAG,IAAA,sBAAA,GAA2BoM,GAAG,CAAC2X,iBAAiB,CAACjc,OAAO,CAAC,CAAC,CAAC,GAAI,IAAA,CAAA;OAClE,IAAI6P,MAAM,CAACqL,MAAM,EAAE;SACjBhjB,GAAG,IACD,eAAe,IAAA,iBAAA,GACGoM,GAAG,CAACygB,UAAU,GAAA,IAAA,CAAI,IACfzgB,oBAAAA,GAAAA,GAAG,CAAC0gB,aAAa,CAAChlB,OAAO,CAAC,CAAC,CAAC,GAAA,IAAA,CAAI,IACvCsE,aAAAA,GAAAA,GAAG,CAACkW,OAAO,CAACxa,OAAO,CAAC,CAAC,CAAC,GAAA,IAAA,CAAI,IAC5BsE,WAAAA,GAAAA,GAAG,CAAC2gB,KAAK,CAACjlB,OAAO,CAAC,CAAC,CAAC,GAAwB,wBAAA,CAAA,IAAA,gBAAA,GACvCsE,GAAG,CAAC4gB,iBAAiB,CAACC,WAAW,CAACnlB,OAAO,CACxD,CACD,CAAA,GAAiD,iDAAA,CAAA,IAAA,mBAAA,GAC9BgK,KAAK,CAACob,YAAY,CAACplB,OAAO,CAAC,CAAC,CAAC,GAAI,IAAA,CAAA,CAAA;SACvD,IAAI9D,KAAK,CAAC+hB,mBAAmB,EAAE;CAC7B,UAAA,IAAMoH,UAAU,GACdnpB,KAAK,CAAC+hB,mBAAmB,GACzB,CAACjU,KAAK,CAACzF,WAAW,GAAGrI,KAAK,CAACiiB,SAAS,IAAI,IAAI,CAAA;WAC9CjmB,GAAG,IAAA,uBAAA,GAA4B,IAAI8a,IAAI,CAACqS,UAAU,CAAC,CAACC,WAAW,EAAI,CAAA;WACnE,IAAMC,UAAU,GAAG,CAACvS,IAAI,CAACC,GAAG,EAAE,GAAGoS,UAAU,IAAI,IAAI,CAAA;WACnD,IAAIE,UAAU,GAAG,CAAC,EAAE;CAClBrtB,YAAAA,GAAG,WAASqtB,UAAU,CAACvlB,OAAO,CAAC,CAAC,CAAC,GAAe,eAAA,CAAA;CACjD,WAAA;CACF,SAAA;CACF,OAAA;CAEDoU,MAAAA,CAAC,CAAC,cAAc,CAAC,CAAC9c,IAAI,CAACY,GAAG,CAAC,CAAA;CAC3Bkc,MAAAA,CAAC,CAAC,gBAAgB,CAAC,CAAC9c,IAAI,CAAC8X,IAAI,CAACC,SAAS,CAACxY,UAAU,CAACqF,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;CACxE,KAAA;KAEDtB,GAAG,CAACqC,SAAS,GAAG,MAAM,CAAA;KACtB,IAAMrB,CAAC,GAAIoO,KAAK,CAACzF,WAAW,GAAGgf,WAAW,GAAIxoB,MAAM,CAAC8C,KAAK,CAAA;KAC1DjD,GAAG,CAACsC,QAAQ,CAACtB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;CAC7B,GAAG,MAAM,IAAIhB,GAAG,CAACqC,SAAS,KAAK,OAAO,EAAE;KACpCrC,GAAG,CAACqC,SAAS,GAAG,OAAO,CAAA;CACvBrC,IAAAA,GAAG,CAACsC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAEnC,MAAM,CAAC8C,KAAK,EAAE9C,MAAM,CAACyB,MAAM,CAAC,CAAA;CAChD,GAAA;CACH,CAAA;CAEA,SAAS2d,UAAUA,GAAG;GACpBpZ,IAAI,CAACykB,WAAW,EAAE,CAAA;CAClBpR,EAAAA,CAAC,CAAC,cAAc,CAAC,CAACxO,IAAI,EAAE,CAAA;CACxBwO,EAAAA,CAAC,CAAC,iBAAiB,CAAC,CAACxO,IAAI,EAAE,CAAA;CAC7B,CAAA;CAEA,SAASuS,UAAUA,GAAG;GACpBpX,IAAI,CAAC0kB,WAAW,EAAE,CAAA;CAClBrR,EAAAA,CAAC,CAAC,cAAc,CAAC,CAACvO,IAAI,EAAE,CAAA;CACxBuO,EAAAA,CAAC,CAAC,iBAAiB,CAAC,CAACvO,IAAI,EAAE,CAAA;CAC7B,CAAA;CAEA,SAAS6f,UAAUA,GAAG;CACpB,EAAA,IAAMC,IAAI,GAAGvW,IAAI,CAACC,SAAS,CAACQ,MAAM,CAAC,CAAA;CACnC,EAAA,IAAM+V,UAAU,GAAGC,SAAI,CAACF,IAAI,CAAC,CAAA;CAC/B;GACE,OAAOG,IAAI,CAACF,UAAU,CAAC,CAAA;CACzB,CAAA;CAEA7kB,IAAI,CAACglB,sBAAsB,GAAG,YAAY;CACxC1uB,EAAAA,mBAAmB,CAACquB,UAAU,EAAE,CAAC,CAAA;CACnC,CAAC,CAAA;CAED3kB,IAAI,CAACilB,WAAW,GAAG,YAAY;CAC7B,EAAA,IAAI1yB,GAAG,GAAGkE,QAAQ,CAAC0W,GAAG,CAAA;CACtB5a,EAAAA,GAAG,GAAGA,GAAG,CAAC8K,KAAK,CAAC,CAAC,EAAE9K,GAAG,CAAC2yB,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,cAAc,CAAA;CAC7DllB,EAAAA,IAAI,CAACmlB,IAAI,CAAC5yB,GAAG,EAAE,QAAQ,CAAC,CAAA;CAC1B,CAAC,CAAA;CAED,SAASkkB,oBAAoBA,GAAG;CAC9B,EAAA,IAAIlkB,GAAG,GAAGkE,QAAQ,CAAC0W,GAAG,CAAA;CACtB,EAAA,IAAMiY,GAAG,GAAGT,UAAU,EAAE,CAAA;CACxBpyB,EAAAA,GAAG,GAAGA,GAAG,CAAC8K,KAAK,CAAC,CAAC,EAAE9K,GAAG,CAAC2yB,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,oBAAoB,GAAGE,GAAG,CAAA;CACzEplB,EAAAA,IAAI,CAACmlB,IAAI,CAAC5yB,GAAG,EAAE,QAAQ,CAAC,CAAA;CAC1B,CAAA;CAEA,SAAS+jB,oBAAoBA,CAAC9V,KAAK,EAAE;CACnC,EAAA,IAAMxG,MAAM,GAAGvD,QAAQ,CAACub,aAAa,CAAC,iBAAiB,CAAC,CAAA;CACxD,EAAA,IAAMnf,MAAM,GACT,CAAC2N,KAAK,CAAC2B,OAAO,GAAGnI,MAAM,CAACqrB,UAAU,IAAIrrB,MAAM,CAAC8C,KAAK,GAAI2lB,cAAc,EAAE,CAAA;GACzExZ,KAAK,CAACzF,WAAW,GAAG3Q,MAAM,CAAA;CAC5B,CAAA;CAEA,SAAS4vB,cAAcA,GAAG;CACxB,EAAA,IAAI6C,QAAQ,CAACrc,KAAK,CAAC5K,QAAQ,CAAC,EAAE;KAC5B,OAAO4K,KAAK,CAAC5K,QAAQ,CAAA;CACtB,GAAA;CACD,EAAA,IAAI4K,KAAK,CAACsa,QAAQ,CAAC5qB,MAAM,EAAE;CACzB,IAAA,OAAOsQ,KAAK,CAACsa,QAAQ,CAAC3qB,GAAG,CAACqQ,KAAK,CAACsa,QAAQ,CAAC5qB,MAAM,GAAG,CAAC,CAAC,CAAA;CACrD,GAAA;CACD,EAAA,OAAO,CAAC,CAAA;CACV,CAAA;CAEA,SAAS4sB,kBAAkBA,CAACrvB,GAAG,EAAE8O,MAAM,EAAEwgB,cAAc,EAAEC,WAAW,EAAE;GACpE,IAAMC,WAAW,GAAG,CAAGxvB,GAAG,GAAA,KAAA,EAAMgJ,OAAO,CAAC,iBAAiB,EAAEsmB,cAAc,CAAC,CAAA;GAC1E,IAAMG,MAAM,GAAG3gB,MAAM,CAACP,MAAM,CAAC,UAACmhB,YAAY,EAAEngB,KAAK,EAAK;KACpD,IAAMogB,WAAW,GAAGC,YAAY,CAACrgB,KAAK,CAACiI,KAAK,CAACI,MAAM,CAAC,CAAA;KACpD,IAAI+X,WAAW,IAAID,YAAY,CAAC1b,OAAO,CAAC2b,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE;CAC3DD,MAAAA,YAAY,CAACzvB,IAAI,CAAC0vB,WAAW,CAAC,CAAA;CAC/B,KAAA;CACD,IAAA,OAAOD,YAAY,CAAA;IACpB,EAAE,EAAE,CAAC,CAAA;CACN,EAAA,OACE,iDACEH,WAAW,GAAG,aAAa,GAAG,aAAa,CAC/BC,GAAAA,eAAAA,GAAAA,WAAW,GACzB1gB,kBAAAA,GAAAA,MAAM,CACHgT,GAAG,CAAC,UAACvS,KAAK,EAAEjL,CAAC,EAAK;CACjB,IAAA,IAAMsV,OAAO,GAAGvM,GAAG,CAACrN,GAAG,CAAC,KAAKsE,CAAC,CAAA;CAC9B,IAAA,IAAMurB,OAAO,GAAG,CAAG7vB,GAAG,GAAIsE,GAAAA,GAAAA,CAAC,EAAG0E,OAAO,CAAC,eAAe,EAAEsmB,cAAc,CAAC,CAAA;CACtE,IAAA,IAAMjb,KAAK,GAAGyb,WAAW,CAAChhB,MAAM,CAACxK,CAAC,CAAC,EAAEA,CAAC,EAAEmrB,MAAM,CAAC,CAAA;KAC/C,OACE7V,6CAAAA,IAAAA,OAAO,GAAG,aAAa,GAAG,aAAa,CAC3BiW,GAAAA,eAAAA,GAAAA,OAAO,WAAKxb,KAAK,GAAA,WAAA,CAAA;CACvC,GAAO,CAAC,CACD0N,IAAI,CAAC,EAAE,CAAC,CAAA;CAEf,CAAA;CAEA,SAAS1B,eAAeA,GAAG;CACzB,EAAA,IAAMvR,MAAM,GAAGzB,GAAG,CAACyB,MAAM,CAAA;GACzB,IAAI,CAACA,MAAM,EAAE;CACX,IAAA,OAAA;CACD,GAAA;CAED,EAAA,IAAMihB,gBAAgB,GAAGV,kBAAkB,CACzC,cAAc,EACdvgB,MAAM,EACN,WAAW,EACXzB,GAAG,CAACyZ,gBACR,CAAG,CAAA;CACD,EAAA,IAAMkJ,aAAa,GAAGX,kBAAkB,CACtC,WAAW,EACXvgB,MAAM,EACN,WAAW,EACXzB,GAAG,CAACyZ,gBACR,CAAG,CAAA;CACD,EAAA,IAAMmJ,aAAa,GAAGZ,kBAAkB,CACtC,WAAW,EACXvgB,MAAM,EACN,WAAW,EACXzB,GAAG,CAACyZ,gBACR,CAAG,CAAA;CACD,EAAA,IAAMoJ,YAAY,GAAGb,kBAAkB,CACrC,kBAAkB,EAClBvgB,MAAM,EACN,iEAAiE,EACjEzB,GAAG,CAACmV,gBAAgB,KAAK,CAAC,CAC9B,CAAG,CAAA;GAED,IAAIrF,CAAC,CAAC,sBAAsB,CAAC,CAACC,IAAI,EAAE,KAAK2S,gBAAgB,EAAE;CACzD5S,IAAAA,CAAC,CAAC,sBAAsB,CAAC,CAACC,IAAI,CAAC2S,gBAAgB,CAAC,CAAA;CACjD,GAAA;GAED,IAAI5S,CAAC,CAAC,mBAAmB,CAAC,CAACC,IAAI,EAAE,KAAK4S,aAAa,EAAE;CACnD7S,IAAAA,CAAC,CAAC,mBAAmB,CAAC,CAACC,IAAI,CAAC4S,aAAa,CAAC,CAAA;CAC3C,GAAA;GAED,IAAI7S,CAAC,CAAC,mBAAmB,CAAC,CAACC,IAAI,EAAE,KAAK6S,aAAa,EAAE;CACnD9S,IAAAA,CAAC,CAAC,mBAAmB,CAAC,CAACC,IAAI,CAAC6S,aAAa,CAAC,CAAA;CAC3C,GAAA;GAED,IAAI9S,CAAC,CAAC,sBAAsB,CAAC,CAACC,IAAI,EAAE,KAAK8S,YAAY,EAAE;CACrD/S,IAAAA,CAAC,CAAC,sBAAsB,CAAC,CAACC,IAAI,CAAC8S,YAAY,CAAC,CAAA;CAC7C,GAAA;CACH,CAAA;CAEA,SAASrM,oBAAoBA,GAAG;GAC9B,IAAMsM,cAAc,GAAG,0CAA0C,CAAA;GACjE,IAAMC,aAAa,GAAG,eAAe,CAAA;GACrC,IAAMC,cAAc,GAAG,eAAe,CAAA;GACtC,IAAIC,KAAK,GAAG,EAAE,CAAA;CACd,EAAA,IAAMC,YAAY,GAAGljB,GAAG,CAAC+C,UAAU,CAAA;CACnC,EAAA,IAAM5M,GAAG,GAAG6J,GAAG,CAAC4C,WAAW,CAACxN,MAAM,CAAA;CAClC,EAAA,IAAM4N,KAAK,GAAGhD,GAAG,CAAC4C,WAAW,CAACsgB,YAAY,CAAC,CAAA;GAE3C,KAAK,IAAIjsB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGd,GAAG,EAAEc,CAAC,EAAE,EAAE;CAC5BgsB,IAAAA,KAAK,IAAIH,cAAc,CAAA;KACvB,IAAII,YAAY,KAAKjsB,CAAC,EAAE;CACtBgsB,MAAAA,KAAK,IAAIF,aAAa,CAAA;CAC5B,KAAK,MAAM;CACLE,MAAAA,KAAK,IAAID,cAAc,CAAA;CACxB,KAAA;CAEDC,IAAAA,KAAK,IACH,0BAA0B,GAC1BhsB,CAAC,GACD,IAAI,GACJ+I,GAAG,CAAC4C,WAAW,CAAC3L,CAAC,CAAC,CAACpG,IAAI,GACvB,WAAW,CAAA;CACd,GAAA;CAEDif,EAAAA,CAAC,CAAC,kBAAkB,CAAC,CAAC9c,IAAI,CACxBgQ,KAAK,GAAGA,KAAK,CAACyH,IAAI,IAAIzH,KAAK,CAACnS,IAAI,GAAG,eACvC,CAAG,CAAA;CACDif,EAAAA,CAAC,CAAC,oBAAoB,CAAC,CAACC,IAAI,CAACkT,KAAK,CAAC,CAAA;CACrC,CAAA;CAEA,SAASV,YAAYA,CAACD,WAAW,EAAE;CACjC,EAAA,IAAIA,WAAW,EAAE;CACf,IAAA,OAAOA,WAAW,CACf3mB,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAChCA,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;CAChC,GAAA;CACD,EAAA,OAAO,EAAE,CAAA;CACX,CAAA;CAEA,SAAS8mB,WAAWA,CAACvgB,KAAK,EAAEjL,CAAC,EAAEksB,cAAc,EAAE;GAC7C,IAAMb,WAAW,GAAGC,YAAY,CAACrgB,KAAK,CAACiI,KAAK,CAACI,MAAM,CAAC,CAAA;GACpD,IAAM6Y,aAAa,GAAGlhB,KAAK,CAACrR,IAAI,UAAOqR,KAAK,CAACrR,IAAI,GAAA,MAAA,GAAQ,EAAE,CAAA;CAC3D,EAAA,IAAMwyB,SAAS,GACbf,WAAW,IAAIa,cAAc,CAAC/tB,MAAM,GAAG,CAAC,GAAA,KAAA,GAASktB,WAAW,GAAK,EAAE,CAAA;GACrE,IAAIpgB,KAAK,CAAChK,MAAM,EAAE;CAChB,IAAA,OAAUjB,CAAC,GAAKmsB,IAAAA,GAAAA,aAAa,GAAGlhB,KAAK,CAAChK,MAAM,GAAOtB,MAAAA,GAAAA,IAAI,CAACoZ,KAAK,CAC3D9N,KAAK,CAAC0Q,OAAO,GAAG,IACtB,CAAK,UAAKyQ,SAAS,GAAA,GAAA,CAAA;CAChB,GAAA;GACD,IAAInhB,KAAK,CAAC0Q,OAAO,EAAE;CACjB,IAAA,OAAU3b,CAAC,GAAA,IAAA,GAAKmsB,aAAa,GAAGxsB,IAAI,CAACoZ,KAAK,CACxC9N,KAAK,CAAC0Q,OAAO,GAAG,IACtB,CAAK,UAAKyQ,SAAS,GAAA,GAAA,CAAA;CAChB,GAAA;CACD,EAAA,IAAIA,SAAS,EAAE;CACb,IAAA,OAAUpsB,CAAC,GAAA,IAAA,GAAKmsB,aAAa,GAAGd,WAAW,GAAA,GAAA,CAAA;CAC5C,GAAA;GACD,IAAIpgB,KAAK,CAACrR,IAAI,EAAE;CACd,IAAA,OAAUoG,CAAC,GAAA,IAAA,GAAKiL,KAAK,CAACrR,IAAI,GAAA,GAAA,CAAA;CAC3B,GAAA;CACD,EAAA,OAAA,EAAA,GAAUoG,CAAC,CAAA;CACb,CAAA;CAEA,SAASgX,0BAA0BA,CAACqV,QAAQ,EAAEC,UAAU,EAAE;CACxD,EAAA,OAAO,OAAO/V,UAAU,CAAC8V,QAAQ,CAAC,KAAK,WAAW,GAC9C9V,UAAU,CAAC8V,QAAQ,CAAC,GACpBC,UAAU,CAAA;CAChB,CAAA;CAEA,SAAShW,WAAWA,CAACiW,MAAM,EAAEC,YAAY,EAAE;GACzC,IAAMC,QAAQ,GAAGjnB,IAAI,CAAC6V,QAAQ,CAACqR,MAAM,CAACC,SAAS,CAAC,CAAC,CAAC,CAAA;CAClD,EAAA,IAAMC,aAAa,GAAGH,QAAQ,CAACzR,KAAK,CAAC,GAAG,CAAC,CAAA;CACzC,EAAA,KAAK,IAAIhb,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG4sB,aAAa,CAACzuB,MAAM,EAAE6B,CAAC,EAAE,EAAE;KAC7C,IAAM6sB,cAAc,GAAGD,aAAa,CAAC5sB,CAAC,CAAC,CAACgb,KAAK,CAAC,GAAG,CAAC,CAAA;CAClD,IAAA,IAAI6R,cAAc,CAAC,CAAC,CAAC,KAAKN,MAAM,EAAE;OAChC,OAAOM,cAAc,CAAC,CAAC,CAAC,KAAK,WAAW,GACpC7uB,SAAS,GACT6uB,cAAc,CAAC,CAAC,CAAC,KAAK,OAAO,GAC3B,KAAK,GACLA,cAAc,CAAC,CAAC,CAAC,CAAA;CACxB,KAAA;CACF,GAAA;CACD,EAAA,OAAOL,YAAY,CAAA;CACrB,CAAA;CAEA,SAASxS,mBAAmBA,CAAC8S,SAAS,EAAE;CACtCvW,EAAAA,UAAU,GAAG;CACXQ,IAAAA,eAAe,EAAfA,eAAe;CACfE,IAAAA,gBAAgB,EAAhBA,gBAAgB;CAChBI,IAAAA,WAAW,EAAXA,WAAW;CACXD,IAAAA,QAAQ,EAARA,QAAQ;CACRF,IAAAA,YAAY,EAAZA,YAAY;CACZC,IAAAA,YAAY,EAAZA,YAAAA;IACD,CAAA;CAED,EAAA,IAAIa,wBAAwB,EAAE;CAC5B+U,IAAAA,kBAAkB,EAAE,CAAA;CACrB,GAAA;GAED,IAAMC,oBAAoB,GAAGzC,IAAI,CAAC1W,IAAI,CAACC,SAAS,CAACyC,UAAU,CAAC,CAAC,CAAA;CAC7D,EAAA,IAAM0W,OAAO,GAAGhxB,QAAQ,CAAC0W,GAAG,CAACqI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;GAC1C,IAAMkS,SAAS,GAAGrU,CAAC,CAAC,YAAY,CAAC,CAACrY,GAAG,EAAE,CAAA;GACvC,IAAM2sB,YAAY,GAAMF,OAAO,GAAA,OAAA,GAAQ3S,kBAAkB,CACvD4S,SACJ,CAAG,GAAA,cAAA,GAAeF,oBAAsB,CAAA;GAEtCnU,CAAC,CAAC,kBAAkB,CAAC,CAACC,IAAI,gBAAaqU,YAAY,GAAA,KAAA,GAAKA,YAAY,GAAA,MAAM,CAAC,CAAA;GAC3E,IAAI,CAACL,SAAS,IAAItnB,IAAI,CAAC6V,QAAQ,CAACvI,IAAI,KAAKqa,YAAY,EAAE;KACrD3nB,IAAI,CAAC4nB,OAAO,CAACC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAEF,YAAY,CAAC,CAAA;CACjD,GAAA;CACH,CAAA;CAEA,SAASG,0BAA0BA,CAACtnB,KAAK,EAAE;CACzCgS,EAAAA,wBAAwB,GAAGhS,KAAK,CAAC3N,MAAM,CAAC0hB,OAAO,CAAA;CAC/CY,EAAAA,YAAY,CAACgN,OAAO,CAClB7R,YAAY,CAACC,kBAAkB,EAC/BlC,IAAI,CAACC,SAAS,CAACkE,wBAAwB,CAC3C,CAAG,CAAA;CAED,EAAA,IAAIA,wBAAwB,EAAE;CAC5B+U,IAAAA,kBAAkB,EAAE,CAAA;CACxB,GAAG,MAAM;CACLpS,IAAAA,YAAY,CAAC4S,UAAU,CAACzX,YAAY,CAACE,UAAU,CAAC,CAAA;CACjD,GAAA;CACH,CAAA;CAEA,SAASmH,cAAcA,CAAC5f,OAAO,EAAE;CAC/BA,EAAAA,OAAO,GAAGsb,CAAC,CAACqE,MAAM,CAAC;CAAE1G,IAAAA,KAAK,EAAE,KAAA;IAAO,EAAEjZ,OAAO,IAAI,EAAE,CAAC,CAAA;GACnD,IAAIpB,KAAK,GAAG8b,YAAY,CAACuV,OAAO,CAACC,QAAQ,EAAE,CAAA;GAE3C,IAAIlwB,OAAO,CAACiZ,KAAK,EAAE;KACjB,IAAI;CACFra,MAAAA,KAAK,GAAG0X,IAAI,CAAC2C,KAAK,CAACra,KAAK,CAAC,CAAA;MAC1B,CAAC,OAAOiT,CAAC,EAAE;CACV1S,MAAAA,OAAO,CAAC+G,IAAI,CAAC,+CAA+C,EAAE2L,CAAC,CAAC,CAAA;OAChEjT,KAAK,GAAG,EAAE,CAAA;CACX,KAAA;CACF,GAAA;CAED,EAAA,OAAOA,KAAK,CAAA;CACd,CAAA;CAEA,SAASuxB,qBAAqBA,GAAG;GAC/B,IAAIvxB,KAAK,GAAGwe,YAAY,CAACC,OAAO,CAAC9E,YAAY,CAACE,UAAU,CAAC,CAAA;GACzD,IAAI7Z,KAAK,KAAK,IAAI,EAAE;CAClB,IAAA,OAAOA,KAAK,CAAA;CACb,GAAA;GAED,IAAI;CACFA,IAAAA,KAAK,GAAG0X,IAAI,CAAC2C,KAAK,CAACra,KAAK,CAAC,CAAA;IAC1B,CAAC,OAAOiT,CAAC,EAAE;CACV1S,IAAAA,OAAO,CAAC+G,IAAI,CAAC,mDAAmD,EAAE2L,CAAC,CAAC,CAAA;KACpEjT,KAAK,GAAG,EAAE,CAAA;CACX,GAAA;CAED,EAAA,OAAOA,KAAK,CAAA;CACd,CAAA;CAEA,SAAS4wB,kBAAkBA,GAAG;GAC5BpS,YAAY,CAACgN,OAAO,CAAC7R,YAAY,CAACE,UAAU,EAAEmH,cAAc,EAAE,CAAC,CAAA;CACjE,CAAA;CAEA,SAAShE,iBAAiBA,GAAG;GAC3BlB,YAAY,GAAGzS,IAAI,CAACmoB,GAAG,CAACC,IAAI,CAAC,eAAe,CAAC,CAAA;CAC7C3V,EAAAA,YAAY,CAAC4V,QAAQ,CAAC,kBAAkB,CAAC,CAAA;CACzC5V,EAAAA,YAAY,CAACuV,OAAO,CAACM,OAAO,CAAC,eAAe,CAAC,CAAA;GAE7C,IAAMC,QAAQ,GAAGrX,aAAa,CAAA;CAC9B,EAAA,IAAMsX,sBAAsB,GAC1Bna,IAAI,CAAC2C,KAAK,CAACmE,YAAY,CAACC,OAAO,CAAC9E,YAAY,CAACC,kBAAkB,CAAC,CAAC,KAAK,IAAI,CAAA;CAE5E,EAAA,IAAIiY,sBAAsB,EAAE;KAC1BnV,CAAC,CAACqE,MAAM,CAAC6Q,QAAQ,EAAEL,qBAAqB,EAAE,CAAC,CAAA;CAC5C,GAAA;CAED,EAAA,IAAMO,aAAa,GAAGhyB,QAAQ,CAACub,aAAa,CAAC,qBAAqB,CAAC,CAAA;CACnEyW,EAAAA,aAAa,CAACpf,gBAAgB,CAAC,QAAQ,EAAEye,0BAA0B,CAAC,CAAA;GACpEW,aAAa,CAAClU,OAAO,GAAGiU,sBAAsB,CAAA;CAC9ChW,EAAAA,wBAAwB,GAAGgW,sBAAsB,CAAA;GAEjD5Q,uBAAuB,CAAC2Q,QAAQ,CAAC,CAAA;CACnC,CAAA;CAEA,SAAS3U,kBAAkBA,GAAG;CAC5B,EAAA,IAAM5Z,MAAM,GAAGvD,QAAQ,CAACub,aAAa,CAAC,iBAAiB,CAAC,CAAA;CACxD,EAAA,IAAMha,KAAK,GAAG,IAAIqH,aAAa,CAACrF,MAAM,EAAE;CACtC0uB,IAAAA,UAAU,EAAE,KAAA;CAChB,GAAG,CAAC,CAAA;GAEF7V,cAAc,CAAC1c,IAAI,CAAC,YAAM;KACxB6B,KAAK,CAACiM,MAAM,EAAE,CAAA;CAClB,GAAG,CAAC,CAAA;GAEFjM,KAAK,CAACiM,MAAM,EAAE,CAAA;CAEd,EAAA,OAAOjM,KAAK,CAAA;CACd,CAAA;CAEA,SAASugB,sBAAsBA,CAAChV,GAAG,EAAE;GACnC,IAAM0C,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAIkT,SAAS,EAAE/gB,IAAI,EAAK;CAC9CJ,IAAAA,KAAK,CAACiO,kBAAkB,CAAC7N,IAAI,CAAC4N,OAAO,CAAC,CAAA;IACvC,CAAA;GACD,IAAMmC,cAAc,GAAG,SAAjBA,cAAcA,CAAIgR,SAAS,EAAE/gB,IAAI,EAAK;KAC1C,IAAIA,IAAI,CAAC+C,KAAK,EAAE;CACpB;CACM,MAAA,IAAAwtB,WAAA,GAA0DvwB,IAAI,CAAC+C,KAAK;SAA5DytB,KAAK,GAAAD,WAAA,CAALC,KAAK;SAAEtsB,MAAM,GAAAqsB,WAAA,CAANrsB,MAAM;SAAEC,KAAK,GAAAosB,WAAA,CAALpsB,KAAK;SAAEssB,QAAQ,GAAAF,WAAA,CAARE,QAAQ;SAAEC,MAAM,GAAAH,WAAA,CAANG,MAAM;SAAEC,KAAK,GAAAJ,WAAA,CAALI,KAAK,CAAA;OACrD,IAAIF,QAAQ,IAAIE,KAAK,EAAE;CACrB3wB,QAAAA,IAAI,CAACgQ,IAAI,CAACjN,KAAK,GAAG;CAChBmB,UAAAA,MAAM,EAANA,MAAM;CACNssB,UAAAA,KAAK,EAALA,KAAK;CACLrsB,UAAAA,KAAK,EAALA,KAAK;CACLid,UAAAA,OAAO,EAAE;CACPjhB,YAAAA,KAAK,EAAEswB,QAAQ;CACfnP,YAAAA,KAAK,EAAEoP,MAAM;CACblwB,YAAAA,GAAG,EAAEmwB,KAAAA;CACN,WAAA;UACF,CAAA;CACF,OAAA;CACF,KAAA;CACD/wB,IAAAA,KAAK,CAACmQ,cAAc,CAAC/P,IAAI,CAAC,CAAA;IAC3B,CAAA;CACD,EAAA,IAAM4wB,WAAW,GAAG,SAAdA,WAAWA,GAAS;KACxBhxB,KAAK,CAACkJ,MAAM,EAAE,CAAA;IACf,CAAA;GACDqC,GAAG,CAACqS,EAAE,CACJb,GAAG,CAAC6D,MAAM,CAACqQ,gBAAgB,EAC3B,YAAM;KACJjxB,KAAK,CAAC+L,KAAK,EAAE,CAAA;IACd,EACD/L,KACJ,CAAG,CAAA;CACDuL,EAAAA,GAAG,CAACqS,EAAE,CACJb,GAAG,CAAC6D,MAAM,CAACW,eAAe,EAC1B,UAACJ,SAAS,EAAE/gB,IAAI,EAAK;CACnB,IAAA,IAAQ4M,MAAM,GAAK5M,IAAI,CAAf4M,MAAM,CAAA;CACdhN,IAAAA,KAAK,CAAC+O,UAAU,CAAC,OAAO,CAAC,CAAA;CACzB/O,IAAAA,KAAK,CAAC+O,UAAU,CAAC,YAAY,CAAC,CAAA;CAC9B/O,IAAAA,KAAK,CAAC+O,UAAU,CAAC,eAAe,CAAC,CAAA;CACjC/O,IAAAA,KAAK,CAAC+M,YAAY,CAACC,MAAM,CAAC,CAAA;IAC3B,EACDhN,KACJ,CAAG,CAAA;CACDuL,EAAAA,GAAG,CAACqS,EAAE,CACJb,GAAG,CAAC6D,MAAM,CAACmI,cAAc,EACzB,UAAC5H,SAAS,EAAA+P,IAAA,EAAiB;CAAA,IAAA,IAAbzgB,MAAM,GAAAygB,IAAA,CAANzgB,MAAM,CAAA;KAClBzQ,KAAK,CAACwQ,mBAAmB,CAACC,MAAM,EAAElF,GAAG,CAAC7D,KAAK,CAAC,CAAA;IAC7C,EACD1H,KACJ,CAAG,CAAA;GACDuL,GAAG,CAACqS,EAAE,CACJb,GAAG,CAAC6D,MAAM,CAACK,YAAY,EACvB,YAAM;KACJjhB,KAAK,CAAC8Q,mBAAmB,EAAE,CAAA;IAC5B,EACD9Q,KACJ,CAAG,CAAA;CACDuL,EAAAA,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAACuQ,cAAc,EAAE,UAAChQ,SAAS,EAAAiQ,KAAA,EAAiB;CAAA,IAAA,IAAbpkB,MAAM,GAAAokB,KAAA,CAANpkB,MAAM,CAAA;CACpDhN,IAAAA,KAAK,CAAC+O,UAAU,CAAC,OAAO,CAAC,CAAA;CACzB/O,IAAAA,KAAK,CAAC+M,YAAY,CAACC,MAAM,CAAC,CAAA;CAC9B,GAAG,CAAC,CAAA;CACFzB,EAAAA,GAAG,CAACqS,EAAE,CACJb,GAAG,CAAC6D,MAAM,CAACgE,cAAc,EACzB,UAACzD,SAAS,EAAAkQ,KAAA,EAAgB;CAAA,IAAA,IAAZ5jB,KAAK,GAAA4jB,KAAA,CAAL5jB,KAAK,CAAA;CACjBzN,IAAAA,KAAK,CAAC+O,UAAU,CAAC,OAAO,CAAC,CAAA;KACzB/O,KAAK,CAAC+M,YAAY,CAACxB,GAAG,CAACyB,MAAM,EAAES,KAAK,CAAC,CAAA;IACtC,EACDzN,KACJ,CAAG,CAAA;GACDuL,GAAG,CAACqS,EAAE,CACJb,GAAG,CAAC6D,MAAM,CAAC0Q,aAAa,EACxB,YAAM;CACV;CACA;CACMtxB,IAAAA,KAAK,CAAC+O,UAAU,CAAC,OAAO,CAAC,CAAA;CACzB/O,IAAAA,KAAK,CAAC+M,YAAY,CAACxB,GAAG,CAACyB,MAAM,CAAC,CAAA;IAC/B,EACDhN,KACJ,CAAG,CAAA;CACDuL,EAAAA,GAAG,CAACqS,EAAE,CACJb,GAAG,CAAC6D,MAAM,CAAC2Q,aAAa,EACxB,UAACpQ,SAAS,EAAAqQ,KAAA,EAAkB;CAAA,IAAA,IAAdxjB,OAAO,GAAAwjB,KAAA,CAAPxjB,OAAO,CAAA;CACnBhO,IAAAA,KAAK,CAACiO,kBAAkB,CAACD,OAAO,CAAC,CAAA;IAClC,EACDhO,KACJ,CAAG,CAAA;CAEDuL,EAAAA,GAAG,CAACqS,EAAE,CACJb,GAAG,CAAC6D,MAAM,CAACkB,oBAAoB,EAC/B,UAACX,SAAS,EAAAsQ,KAAA,EAAsB;CAAA,IAAA,IAAlBtjB,WAAW,GAAAsjB,KAAA,CAAXtjB,WAAW,CAAA;CACvBnO,IAAAA,KAAK,CAAC+O,UAAU,CAAC,YAAY,CAAC,CAAA;CAC9B/O,IAAAA,KAAK,CAACkO,iBAAiB,CAACC,WAAW,CAAC,CAAA;IACrC,EACDnO,KACJ,CAAG,CAAA;CACDuL,EAAAA,GAAG,CAACqS,EAAE,CACJb,GAAG,CAAC6D,MAAM,CAAC8Q,uBAAuB,EAClC,UAACvQ,SAAS,EAAAwQ,KAAA,EAAyB;CAAA,IAAA,IAArBC,cAAc,GAAAD,KAAA,CAAdC,cAAc,CAAA;CAC1B5xB,IAAAA,KAAK,CAAC+O,UAAU,CAAC,eAAe,CAAC,CAAA;CACjC/O,IAAAA,KAAK,CAACyO,oBAAoB,CAACmjB,cAAc,CAAC,CAAA;IAC3C,EACD5xB,KACJ,CAAG,CAAA;GAEDuL,GAAG,CAACqS,EAAE,CACJb,GAAG,CAAC6D,MAAM,CAACqB,oBAAoB,EAC/B,UAACd,SAAS,EAAK;CACnB;CACMnhB,IAAAA,KAAK,CAAC+O,UAAU,CAAC,YAAY,CAAC,CAAA;CAC9B/O,IAAAA,KAAK,CAACkO,iBAAiB,CAAC3C,GAAG,CAAC4C,WAAW,CAAC,CAAA;IACzC,EACDnO,KACJ,CAAG,CAAA;GACDuL,GAAG,CAACqS,EAAE,CACJb,GAAG,CAAC6D,MAAM,CAACiR,qBAAqB,EAChC,UAAC1Q,SAAS,EAAK;CACnB;CACMnhB,IAAAA,KAAK,CAAC+O,UAAU,CAAC,eAAe,CAAC,CAAA;CACjC/O,IAAAA,KAAK,CAACyO,oBAAoB,CAAClD,GAAG,CAACqmB,cAAc,CAAC,CAAA;IAC/C,EACD5xB,KACJ,CAAG,CAAA;CACDuL,EAAAA,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAAC8B,kBAAkB,EAAEzU,kBAAkB,EAAEjO,KAAK,CAAC,CAAA;CAChEuL,EAAAA,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAACkR,qBAAqB,EAAE7jB,kBAAkB,EAAEjO,KAAK,CAAC,CAAA;CACnEuL,EAAAA,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAACmR,iBAAiB,EAAE9jB,kBAAkB,EAAEjO,KAAK,CAAC,CAAA;CAC/DuL,EAAAA,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAACoR,WAAW,EAAE7hB,cAAc,EAAEnQ,KAAK,CAAC,CAAA;CACrDuL,EAAAA,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAACqR,WAAW,EAAE9hB,cAAc,EAAEnQ,KAAK,CAAC,CAAA;CACrDuL,EAAAA,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAACiE,YAAY,EAAE1U,cAAc,EAAEnQ,KAAK,CAAC,CAAA;CACtDuL,EAAAA,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAACoI,gBAAgB,EAAEgI,WAAW,EAAEhxB,KAAK,CAAC,CAAA;CACvDuL,EAAAA,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAACsR,eAAe,EAAElB,WAAW,EAAEhxB,KAAK,CAAC,CAAA;CACtDuL,EAAAA,GAAG,CAACqS,EAAE,CAACb,GAAG,CAAC6D,MAAM,CAACuR,cAAc,EAAEnB,WAAW,EAAEhxB,KAAK,CAAC,CAAA;CACvD,CAAA;CAEA,SAAS4f,uBAAuBA,CAAC7hB,GAAG,EAAE;GACpC,IAAM6uB,IAAI,GAAGvW,IAAI,CAACC,SAAS,CAACvY,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;CACzC0c,EAAAA,YAAY,CAACuV,OAAO,CAACoC,QAAQ,CAACxF,IAAI,CAAC,CAAA;CACrC,CAAA;CAEA,SAASjO,sBAAsBA,GAAG;CAChCnC,EAAAA,mBAAmB,EAAE,CAAA;CACrBH,EAAAA,kBAAkB,EAAE,CAAA;CACtB,CAAA;CAEA,SAASmC,UAAUA,CAACvW,IAAI,EAAE;CACxB,EAAA,IAAIsS,QAAQ,CAACtS,IAAI,CAAC,CAACtH,MAAM,EAAE;CACzB,IAAA,IAAM0xB,IAAI,GAAG,IAAIC,IAAI,CAAC,CAACC,WAAW,CAAChY,QAAQ,CAACtS,IAAI,CAAC,CAAC,CAAC,EAAE;CACnDA,MAAAA,IAAI,EAAE,0BAAA;CACZ,KAAK,CAAC,CAAA;CACF,IAAA,IAAMuqB,QAAQ,GAAGvqB,IAAI,GAAG,GAAG,GAAG,IAAIgS,IAAI,EAAE,CAACsS,WAAW,EAAE,GAAG,MAAM,CAAA;CAC/DvkB,IAAAA,IAAI,CAACyqB,MAAM,CAACJ,IAAI,EAAEG,QAAQ,CAAC,CAAA;CAC/B;CACA,GAAG,MAAM,IAAI,CAAC5Y,QAAQ,EAAE;CACpB1a,IAAAA,OAAO,CAACsS,KAAK,CACX,sFACN,CAAK,CAAA;CACF,GAAA;CACH,CAAA;CAEA,SAAS+gB,WAAWA,CAACG,UAAU,EAAE;GAC/B,IAAMC,WAAW,GAAGD,UAAU,CAACjmB,MAAM,CAAC,UAAUmmB,IAAI,EAAEC,GAAG,EAAE;CACzD,IAAA,OAAOD,IAAI,GAAGC,GAAG,CAAClyB,MAAM,CAAA;IACzB,EAAE,CAAC,CAAC,CAAA;CACL,EAAA,IAAM4V,MAAM,GAAG,IAAIuc,UAAU,CAACH,WAAW,CAAC,CAAA;GAC1C,IAAII,MAAM,GAAG,CAAC,CAAA;CACdL,EAAAA,UAAU,CAAC3sB,OAAO,CAAC,UAAU0C,OAAO,EAAE;CACpC8N,IAAAA,MAAM,CAACxB,GAAG,CAACtM,OAAO,EAAEsqB,MAAM,CAAC,CAAA;KAC3BA,MAAM,IAAItqB,OAAO,CAAC9H,MAAM,CAAA;CAC5B,GAAG,CAAC,CAAA;CACF,EAAA,OAAO4V,MAAM,CAAA;CACf,CAAA;CAEA,SAASyc,WAAWA,GAAG;GACrB3X,CAAC,CAAC,eAAe,CAAC,CAAC4X,GAAG,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAA;CAC9C5X,EAAAA,CAAC,CAAC,WAAW,CAAC,CAACvO,IAAI,EAAE,CAAA;CACvB,CAAA;CAEA,SAAS4R,cAAcA,CAACwU,GAAG,EAAE;GAC3BxV,SAAS,CAACwV,GAAG,CAAC,CAAA;CACd,EAAA,IAAMC,UAAU,GAAG9X,CAAC,CAAC,eAAe,CAAC,CAClC+X,OAAO,EAAE,CACTpT,GAAG,CAAC,UAACqT,EAAE,EAAE7wB,CAAC,EAAA;KAAA,OAAM6Y,CAAC,CAAC,GAAG,GAAGA,CAAC,CAACgY,EAAE,CAAC,CAACjzB,IAAI,CAAC,KAAK,CAAC,CAAC,CAACkrB,EAAE,CAAC,UAAU,CAAC,GAAG9oB,CAAC,GAAG,IAAI,CAAA;CAAA,GAAC,CAAC,CACtEsd,MAAM,CAAC,UAACtd,CAAC,EAAA;KAAA,OAAKA,CAAC,KAAK,IAAI,CAAA;IAAC,CAAA,CAAA;CAC5B2a,EAAAA,YAAY,CAACgN,OAAO,CAAC7R,YAAY,CAACI,SAAS,EAAEya,UAAU,CAAClT,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;CACpE,CAAA;CAEA,SAASvC,SAASA,CAACwV,GAAG,EAAEI,gBAAgB,EAAE;GACxC,IAAMC,OAAO,GAAGlY,CAAC,CAAC6X,GAAG,CAAC,CAAC9yB,IAAI,CAAC,KAAK,CAAC,CAAA;CACpC;CACE,EAAA,IAAMozB,eAAe,GACnBF,gBAAgB,IACftrB,IAAI,CAACQ,KAAK,KAAKR,IAAI,CAACQ,KAAK,CAACirB,OAAO,IAAIzrB,IAAI,CAACQ,KAAK,CAACkrB,QAAQ,CAAE,CAAA;GAC7D,IAAI,CAACF,eAAe,EAAE;CACpBR,IAAAA,WAAW,EAAE,CAAA;CACd,GAAA;CACD,EAAA,IAAIQ,eAAe,EAAE;CACnBnY,IAAAA,CAAC,OAAKkY,OAAS,CAAC,CAAC9W,MAAM,EAAE,CAAA;CAC7B,GAAG,MAAM;CACLpB,IAAAA,CAAC,OAAKkY,OAAS,CAAC,CAAC1mB,IAAI,EAAE,CAAA;CACxB,GAAA;GACDwO,CAAC,CAAC6X,GAAG,CAAC,CAACD,GAAG,CACR,kBAAkB,EAClB5X,CAAC,CAAA,GAAA,GAAKkY,OAAS,CAAC,CAACjI,EAAE,CAAC,UAAU,CAAC,GAAG,QAAQ,GAAG,EACjD,CAAG,CAAA;GACD,IAAI,CAACjQ,CAAC,CAAC,kBAAkB,CAAC,CAACiQ,EAAE,CAAC,UAAU,CAAC,EAAE;KACzCtjB,IAAI,CAAC0kB,WAAW,EAAE,CAAA;CACnB,GAAA;CACD,EAAA,IAAInhB,GAAG,EAAE;KACP,IAAI8P,CAAC,CAAC,cAAc,CAAC,CAACiQ,EAAE,CAAC,UAAU,CAAC,EAAE;OACpCtrB,KAAK,CAAC6M,IAAI,EAAE,CAAA;CACZ7M,MAAAA,KAAK,CAACiM,MAAM,CAACjM,KAAK,CAACA,KAAK,CAACI,IAAI,GAAGJ,KAAK,CAACA,KAAK,CAACI,IAAI,CAACD,QAAQ,GAAG,IAAI,CAAC,CAAA;CACvE,KAAK,MAAM;OACLH,KAAK,CAAC8M,IAAI,EAAE,CAAA;CACb,KAAA;CACF,GAAA;CACH,CAAA;CAEA,SAAS6mB,SAASA,CAACC,QAAQ,EAAExL,OAAO,EAAE;CACpC,EAAA,IAAMiL,EAAE,GAAGhY,CAAC,CAAC,GAAG,GAAGuY,QAAQ,CAAC,CAAA;CAC5B,EAAA,IAAIC,OAAO,GAAGR,EAAE,CAAC90B,IAAI,EAAE,CAAA;GACvB,IAAIs1B,OAAO,CAAClzB,MAAM,EAAE;CAClBkzB,IAAAA,OAAO,IAAI,IAAI,CAAA;CAChB,GAAA;GACD,IAAMC,SAAS,GAAG,CAAC7Z,IAAI,CAACC,GAAG,EAAE,GAAG9G,SAAS,IAAI,IAAI,CAAA;CACjD,EAAA,IAAM2gB,UAAU,GAAGD,SAAS,GAAG,KAAK,GAAG1L,OAAO,CAAA;CAC9CyL,EAAAA,OAAO,IAAIE,UAAU,CAAA;CACvB;CACEV,EAAAA,EAAE,CAAC90B,IAAI,CAACs1B,OAAO,CAAC,CAAA;CAChB,EAAA,IAAMprB,OAAO,GAAG4qB,EAAE,CAAC,CAAC,CAAC,CAAA;GACrB5qB,OAAO,CAACurB,SAAS,GAAGvrB,OAAO,CAACwrB,YAAY,GAAGxrB,OAAO,CAACyrB,YAAY,CAAA;CACjE,CAAA;CAEA,SAAS1U,SAASA,CAAC4I,OAAO,EAAE;CAC1BuL,EAAAA,SAAS,CAAC,WAAW,EAAEvL,OAAO,CAAC,CAAA;CACjC,CAAA;CAEA,SAASnB,QAAQA,CAACmB,OAAO,EAAE;CACzBuL,EAAAA,SAAS,CAAC,UAAU,EAAEvL,OAAO,CAAC,CAAA;CAChC;;;;;;","x_google_ignoreList":[1,2,3,4,5,6,8,9]} |