{"version":3,"file":"angular-cache.js","sources":["../node_modules/cachefactory/dist/cachefactory.es2015.js","../src/index.js"],"sourcesContent":["/**\n * CacheFactory\n * @version 1.5.1 - Homepage \n * @copyright (c) 2013-2016 CacheFactory project authors\n * @license MIT \n * @overview CacheFactory is a very simple and useful cache for the browser.\n */\nvar babelHelpers = {};\nbabelHelpers.typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n};\nbabelHelpers;\n\n/**\n * @method bubbleUp\n * @param {array} heap The heap.\n * @param {function} weightFunc The weight function.\n * @param {number} n The index of the element to bubble up.\n */\nvar bubbleUp = function bubbleUp(heap, weightFunc, n) {\n var element = heap[n];\n var weight = weightFunc(element);\n // When at 0, an element can not go up any further.\n while (n > 0) {\n // Compute the parent element's index, and fetch it.\n var parentN = Math.floor((n + 1) / 2) - 1;\n var parent = heap[parentN];\n // If the parent has a lesser weight, things are in order and we\n // are done.\n if (weight >= weightFunc(parent)) {\n break;\n } else {\n heap[parentN] = element;\n heap[n] = parent;\n n = parentN;\n }\n }\n};\n\n/**\n * @method bubbleDown\n * @param {array} heap The heap.\n * @param {function} weightFunc The weight function.\n * @param {number} n The index of the element to sink down.\n */\nvar bubbleDown = function bubbleDown(heap, weightFunc, n) {\n var length = heap.length;\n var node = heap[n];\n var nodeWeight = weightFunc(node);\n\n while (true) {\n var child2N = (n + 1) * 2;\n var child1N = child2N - 1;\n var swap = null;\n if (child1N < length) {\n var child1 = heap[child1N];\n var child1Weight = weightFunc(child1);\n // If the score is less than our node's, we need to swap.\n if (child1Weight < nodeWeight) {\n swap = child1N;\n }\n }\n // Do the same checks for the other child.\n if (child2N < length) {\n var child2 = heap[child2N];\n var child2Weight = weightFunc(child2);\n if (child2Weight < (swap === null ? nodeWeight : weightFunc(heap[child1N]))) {\n swap = child2N;\n }\n }\n\n if (swap === null) {\n break;\n } else {\n heap[n] = heap[swap];\n heap[swap] = node;\n n = swap;\n }\n }\n};\n\nfunction BinaryHeap(weightFunc, compareFunc) {\n if (!weightFunc) {\n weightFunc = function weightFunc(x) {\n return x;\n };\n }\n if (!compareFunc) {\n compareFunc = function compareFunc(x, y) {\n return x === y;\n };\n }\n if (typeof weightFunc !== 'function') {\n throw new Error('BinaryHeap([weightFunc][, compareFunc]): \"weightFunc\" must be a function!');\n }\n if (typeof compareFunc !== 'function') {\n throw new Error('BinaryHeap([weightFunc][, compareFunc]): \"compareFunc\" must be a function!');\n }\n this.weightFunc = weightFunc;\n this.compareFunc = compareFunc;\n this.heap = [];\n}\n\nvar BHProto = BinaryHeap.prototype;\n\nBHProto.push = function (node) {\n this.heap.push(node);\n bubbleUp(this.heap, this.weightFunc, this.heap.length - 1);\n};\n\nBHProto.peek = function () {\n return this.heap[0];\n};\n\nBHProto.pop = function () {\n var front = this.heap[0];\n var end = this.heap.pop();\n if (this.heap.length > 0) {\n this.heap[0] = end;\n bubbleDown(this.heap, this.weightFunc, 0);\n }\n return front;\n};\n\nBHProto.remove = function (node) {\n var length = this.heap.length;\n for (var i = 0; i < length; i++) {\n if (this.compareFunc(this.heap[i], node)) {\n var removed = this.heap[i];\n var end = this.heap.pop();\n if (i !== length - 1) {\n this.heap[i] = end;\n bubbleUp(this.heap, this.weightFunc, i);\n bubbleDown(this.heap, this.weightFunc, i);\n }\n return removed;\n }\n }\n return null;\n};\n\nBHProto.removeAll = function () {\n this.heap = [];\n};\n\nBHProto.size = function () {\n return this.heap.length;\n};\n\nvar _Promise = null;\ntry {\n _Promise = window.Promise;\n} catch (e) {}\n\nvar utils = {\n isNumber: function isNumber(value) {\n return typeof value === 'number';\n },\n isString: function isString(value) {\n return typeof value === 'string';\n },\n isObject: function isObject(value) {\n return value !== null && (typeof value === 'undefined' ? 'undefined' : babelHelpers.typeof(value)) === 'object';\n },\n isFunction: function isFunction(value) {\n return typeof value === 'function';\n },\n fromJson: function fromJson(value) {\n return JSON.parse(value);\n },\n equals: function equals(a, b) {\n return a === b;\n },\n\n\n Promise: _Promise\n};\n\nfunction _keys(collection) {\n var keys = [];\n var key = void 0;\n if (!utils.isObject(collection)) {\n return keys;\n }\n for (key in collection) {\n if (collection.hasOwnProperty(key)) {\n keys.push(key);\n }\n }\n return keys;\n}\n\nfunction _isPromiseLike(value) {\n return value && typeof value.then === 'function';\n}\n\nfunction _stringifyNumber(number) {\n if (utils.isNumber(number)) {\n return number.toString();\n }\n return number;\n}\n\nfunction _keySet(collection) {\n var keySet = {};\n var key = void 0;\n if (!utils.isObject(collection)) {\n return keySet;\n }\n for (key in collection) {\n if (collection.hasOwnProperty(key)) {\n keySet[key] = key;\n }\n }\n return keySet;\n}\n\nvar defaults = {\n capacity: Number.MAX_VALUE,\n maxAge: Number.MAX_VALUE,\n deleteOnExpire: 'none',\n onExpire: null,\n cacheFlushInterval: null,\n recycleFreq: 1000,\n storageMode: 'memory',\n storageImpl: null,\n disabled: false,\n storagePrefix: 'cachefactory.caches.',\n storeOnResolve: false,\n storeOnReject: false\n};\n\nvar caches = {};\n\nfunction createCache(cacheId, options) {\n if (cacheId in caches) {\n throw new Error(cacheId + ' already exists!');\n } else if (!utils.isString(cacheId)) {\n throw new Error('cacheId must be a string!');\n }\n\n var $$data = {};\n var $$promises = {};\n var $$storage = null;\n var $$expiresHeap = new BinaryHeap(function (x) {\n return x.expires;\n }, utils.equals);\n var $$lruHeap = new BinaryHeap(function (x) {\n return x.accessed;\n }, utils.equals);\n\n var cache = caches[cacheId] = {\n\n $$id: cacheId,\n\n destroy: function destroy() {\n clearInterval(this.$$cacheFlushIntervalId);\n clearInterval(this.$$recycleFreqId);\n this.removeAll();\n if ($$storage) {\n $$storage().removeItem(this.$$prefix + '.keys');\n $$storage().removeItem(this.$$prefix);\n }\n $$storage = null;\n $$data = null;\n $$lruHeap = null;\n $$expiresHeap = null;\n this.$$prefix = null;\n delete caches[this.$$id];\n },\n disable: function disable() {\n this.$$disabled = true;\n },\n enable: function enable() {\n delete this.$$disabled;\n },\n get: function get(key, options) {\n var _this2 = this;\n\n if (Array.isArray(key)) {\n var _ret = function () {\n var keys = key;\n var values = [];\n\n keys.forEach(function (key) {\n var value = _this2.get(key, options);\n if (value !== null && value !== undefined) {\n values.push(value);\n }\n });\n\n return {\n v: values\n };\n }();\n\n if ((typeof _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === \"object\") return _ret.v;\n } else {\n key = _stringifyNumber(key);\n\n if (this.$$disabled) {\n return;\n }\n }\n\n options = options || {};\n if (!utils.isString(key)) {\n throw new Error('key must be a string!');\n } else if (options && !utils.isObject(options)) {\n throw new Error('options must be an object!');\n } else if (options.onExpire && !utils.isFunction(options.onExpire)) {\n throw new Error('options.onExpire must be a function!');\n }\n\n var item = void 0;\n\n if ($$storage) {\n if ($$promises[key]) {\n return $$promises[key];\n }\n\n var itemJson = $$storage().getItem(this.$$prefix + '.data.' + key);\n\n if (itemJson) {\n item = utils.fromJson(itemJson);\n } else {\n return;\n }\n } else if (utils.isObject($$data)) {\n if (!(key in $$data)) {\n return;\n }\n\n item = $$data[key];\n }\n\n var value = item.value;\n var now = new Date().getTime();\n\n if ($$storage) {\n $$lruHeap.remove({\n key: key,\n accessed: item.accessed\n });\n item.accessed = now;\n $$lruHeap.push({\n key: key,\n accessed: now\n });\n } else {\n $$lruHeap.remove(item);\n item.accessed = now;\n $$lruHeap.push(item);\n }\n\n if (this.$$deleteOnExpire === 'passive' && 'expires' in item && item.expires < now) {\n this.remove(key);\n\n if (this.$$onExpire) {\n this.$$onExpire(key, item.value, options.onExpire);\n } else if (options.onExpire) {\n options.onExpire.call(this, key, item.value);\n }\n value = undefined;\n } else if ($$storage) {\n $$storage().setItem(this.$$prefix + '.data.' + key, JSON.stringify(item));\n }\n\n return value;\n },\n info: function info(key) {\n if (key) {\n var item = void 0;\n if ($$storage) {\n var itemJson = $$storage().getItem(this.$$prefix + '.data.' + key);\n\n if (itemJson) {\n item = utils.fromJson(itemJson);\n return {\n created: item.created,\n accessed: item.accessed,\n expires: item.expires,\n isExpired: new Date().getTime() - item.created > (item.maxAge || this.$$maxAge)\n };\n } else {\n return undefined;\n }\n } else if (utils.isObject($$data) && key in $$data) {\n item = $$data[key];\n\n return {\n created: item.created,\n accessed: item.accessed,\n expires: item.expires,\n isExpired: new Date().getTime() - item.created > (item.maxAge || this.$$maxAge)\n };\n } else {\n return undefined;\n }\n } else {\n return {\n id: this.$$id,\n capacity: this.$$capacity,\n maxAge: this.$$maxAge,\n deleteOnExpire: this.$$deleteOnExpire,\n onExpire: this.$$onExpire,\n cacheFlushInterval: this.$$cacheFlushInterval,\n recycleFreq: this.$$recycleFreq,\n storageMode: this.$$storageMode,\n storageImpl: $$storage ? $$storage() : undefined,\n disabled: !!this.$$disabled,\n size: $$lruHeap && $$lruHeap.size() || 0\n };\n }\n },\n keys: function keys() {\n if ($$storage) {\n var keysJson = $$storage().getItem(this.$$prefix + '.keys');\n\n if (keysJson) {\n return utils.fromJson(keysJson);\n } else {\n return [];\n }\n } else {\n return _keys($$data);\n }\n },\n keySet: function keySet() {\n if ($$storage) {\n var keysJson = $$storage().getItem(this.$$prefix + '.keys');\n var kSet = {};\n\n if (keysJson) {\n var keys = utils.fromJson(keysJson);\n\n for (var i = 0; i < keys.length; i++) {\n kSet[keys[i]] = keys[i];\n }\n }\n return kSet;\n } else {\n return _keySet($$data);\n }\n },\n put: function put(key, value, options) {\n var _this3 = this;\n\n options || (options = {});\n\n var storeOnResolve = 'storeOnResolve' in options ? !!options.storeOnResolve : this.$$storeOnResolve;\n var storeOnReject = 'storeOnReject' in options ? !!options.storeOnReject : this.$$storeOnReject;\n\n var getHandler = function getHandler(store, isError) {\n return function (v) {\n if (store) {\n delete $$promises[key];\n if (utils.isObject(v) && 'status' in v && 'data' in v) {\n v = [v.status, v.data, v.headers(), v.statusText];\n _this3.put(key, v);\n } else {\n _this3.put(key, v);\n }\n }\n if (isError) {\n if (utils.Promise) {\n return utils.Promise.reject(v);\n } else {\n throw v;\n }\n } else {\n return v;\n }\n };\n };\n\n if (this.$$disabled || !utils.isObject($$data) || value === null || value === undefined) {\n return;\n }\n key = _stringifyNumber(key);\n\n if (!utils.isString(key)) {\n throw new Error('key must be a string!');\n }\n\n var now = new Date().getTime();\n var item = {\n key: key,\n value: _isPromiseLike(value) ? value.then(getHandler(storeOnResolve, false), getHandler(storeOnReject, true)) : value,\n created: options.created === undefined ? now : options.created,\n accessed: options.accessed === undefined ? now : options.accessed\n };\n if (options.maxAge) {\n item.maxAge = options.maxAge;\n }\n\n if (options.expires === undefined) {\n item.expires = item.created + (item.maxAge || this.$$maxAge);\n } else {\n item.expires = options.expires;\n }\n\n if ($$storage) {\n if (_isPromiseLike(item.value)) {\n $$promises[key] = item.value;\n return $$promises[key];\n }\n var keysJson = $$storage().getItem(this.$$prefix + '.keys');\n var keys = keysJson ? utils.fromJson(keysJson) : [];\n var itemJson = $$storage().getItem(this.$$prefix + '.data.' + key);\n\n // Remove existing\n if (itemJson) {\n this.remove(key);\n }\n // Add to expires heap\n $$expiresHeap.push({\n key: key,\n expires: item.expires\n });\n // Add to lru heap\n $$lruHeap.push({\n key: key,\n accessed: item.accessed\n });\n // Set item\n $$storage().setItem(this.$$prefix + '.data.' + key, JSON.stringify(item));\n var exists = false;\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] === key) {\n exists = true;\n break;\n }\n }\n if (!exists) {\n keys.push(key);\n }\n $$storage().setItem(this.$$prefix + '.keys', JSON.stringify(keys));\n } else {\n // Remove existing\n if ($$data[key]) {\n this.remove(key);\n }\n // Add to expires heap\n $$expiresHeap.push(item);\n // Add to lru heap\n $$lruHeap.push(item);\n // Set item\n $$data[key] = item;\n delete $$promises[key];\n }\n\n // Handle exceeded capacity\n if ($$lruHeap.size() > this.$$capacity) {\n this.remove($$lruHeap.peek().key);\n }\n\n return value;\n },\n remove: function remove(key) {\n key += '';\n delete $$promises[key];\n if ($$storage) {\n var itemJson = $$storage().getItem(this.$$prefix + '.data.' + key);\n\n if (itemJson) {\n var item = utils.fromJson(itemJson);\n $$lruHeap.remove({\n key: key,\n accessed: item.accessed\n });\n $$expiresHeap.remove({\n key: key,\n expires: item.expires\n });\n $$storage().removeItem(this.$$prefix + '.data.' + key);\n var keysJson = $$storage().getItem(this.$$prefix + '.keys');\n var keys = keysJson ? utils.fromJson(keysJson) : [];\n var index = keys.indexOf(key);\n\n if (index >= 0) {\n keys.splice(index, 1);\n }\n $$storage().setItem(this.$$prefix + '.keys', JSON.stringify(keys));\n return item.value;\n }\n } else if (utils.isObject($$data)) {\n var value = $$data[key] ? $$data[key].value : undefined;\n $$lruHeap.remove($$data[key]);\n $$expiresHeap.remove($$data[key]);\n $$data[key] = null;\n delete $$data[key];\n return value;\n }\n },\n removeAll: function removeAll() {\n if ($$storage) {\n $$lruHeap.removeAll();\n $$expiresHeap.removeAll();\n var keysJson = $$storage().getItem(this.$$prefix + '.keys');\n\n if (keysJson) {\n var keys = utils.fromJson(keysJson);\n\n for (var i = 0; i < keys.length; i++) {\n this.remove(keys[i]);\n }\n }\n $$storage().setItem(this.$$prefix + '.keys', JSON.stringify([]));\n } else if (utils.isObject($$data)) {\n $$lruHeap.removeAll();\n $$expiresHeap.removeAll();\n for (var key in $$data) {\n $$data[key] = null;\n }\n $$data = {};\n } else {\n $$lruHeap.removeAll();\n $$expiresHeap.removeAll();\n $$data = {};\n }\n $$promises = {};\n },\n removeExpired: function removeExpired() {\n var now = new Date().getTime();\n var expired = {};\n var key = void 0;\n var expiredItem = void 0;\n\n while ((expiredItem = $$expiresHeap.peek()) && expiredItem.expires <= now) {\n expired[expiredItem.key] = expiredItem.value ? expiredItem.value : null;\n $$expiresHeap.pop();\n }\n\n if ($$storage) {\n for (key in expired) {\n var itemJson = $$storage().getItem(this.$$prefix + '.data.' + key);\n if (itemJson) {\n expired[key] = utils.fromJson(itemJson).value;\n this.remove(key);\n }\n }\n } else {\n for (key in expired) {\n this.remove(key);\n }\n }\n\n if (this.$$onExpire) {\n for (key in expired) {\n this.$$onExpire(key, expired[key]);\n }\n }\n\n return expired;\n },\n setCacheFlushInterval: function setCacheFlushInterval(cacheFlushInterval) {\n var _this = this;\n if (cacheFlushInterval === null) {\n delete _this.$$cacheFlushInterval;\n } else if (!utils.isNumber(cacheFlushInterval)) {\n throw new Error('cacheFlushInterval must be a number!');\n } else if (cacheFlushInterval < 0) {\n throw new Error('cacheFlushInterval must be greater than zero!');\n } else if (cacheFlushInterval !== _this.$$cacheFlushInterval) {\n _this.$$cacheFlushInterval = cacheFlushInterval;\n\n clearInterval(_this.$$cacheFlushIntervalId); // eslint-disable-line\n\n _this.$$cacheFlushIntervalId = setInterval(function () {\n _this.removeAll();\n }, _this.$$cacheFlushInterval);\n }\n },\n setCapacity: function setCapacity(capacity) {\n if (capacity === null) {\n delete this.$$capacity;\n } else if (!utils.isNumber(capacity)) {\n throw new Error('capacity must be a number!');\n } else if (capacity < 0) {\n throw new Error('capacity must be greater than zero!');\n } else {\n this.$$capacity = capacity;\n }\n var removed = {};\n while ($$lruHeap.size() > this.$$capacity) {\n removed[$$lruHeap.peek().key] = this.remove($$lruHeap.peek().key);\n }\n return removed;\n },\n setDeleteOnExpire: function setDeleteOnExpire(deleteOnExpire, setRecycleFreq) {\n if (deleteOnExpire === null) {\n delete this.$$deleteOnExpire;\n } else if (!utils.isString(deleteOnExpire)) {\n throw new Error('deleteOnExpire must be a string!');\n } else if (deleteOnExpire !== 'none' && deleteOnExpire !== 'passive' && deleteOnExpire !== 'aggressive') {\n throw new Error('deleteOnExpire must be \"none\", \"passive\" or \"aggressive\"!');\n } else {\n this.$$deleteOnExpire = deleteOnExpire;\n }\n if (setRecycleFreq !== false) {\n this.setRecycleFreq(this.$$recycleFreq);\n }\n },\n setMaxAge: function setMaxAge(maxAge) {\n if (maxAge === null) {\n this.$$maxAge = Number.MAX_VALUE;\n } else if (!utils.isNumber(maxAge)) {\n throw new Error('maxAge must be a number!');\n } else if (maxAge < 0) {\n throw new Error('maxAge must be greater than zero!');\n } else {\n this.$$maxAge = maxAge;\n }\n var i = void 0,\n keys = void 0,\n key = void 0;\n\n $$expiresHeap.removeAll();\n\n if ($$storage) {\n var keysJson = $$storage().getItem(this.$$prefix + '.keys');\n\n keys = keysJson ? utils.fromJson(keysJson) : [];\n\n for (i = 0; i < keys.length; i++) {\n key = keys[i];\n var itemJson = $$storage().getItem(this.$$prefix + '.data.' + key);\n\n if (itemJson) {\n var item = utils.fromJson(itemJson);\n if (this.$$maxAge === Number.MAX_VALUE) {\n item.expires = Number.MAX_VALUE;\n } else {\n item.expires = item.created + (item.maxAge || this.$$maxAge);\n }\n $$expiresHeap.push({\n key: key,\n expires: item.expires\n });\n }\n }\n } else {\n keys = _keys($$data);\n\n for (i = 0; i < keys.length; i++) {\n key = keys[i];\n if (this.$$maxAge === Number.MAX_VALUE) {\n $$data[key].expires = Number.MAX_VALUE;\n } else {\n $$data[key].expires = $$data[key].created + ($$data[key].maxAge || this.$$maxAge);\n }\n $$expiresHeap.push($$data[key]);\n }\n }\n if (this.$$deleteOnExpire === 'aggressive') {\n return this.removeExpired();\n } else {\n return {};\n }\n },\n setOnExpire: function setOnExpire(onExpire) {\n if (onExpire === null) {\n delete this.$$onExpire;\n } else if (!utils.isFunction(onExpire)) {\n throw new Error('onExpire must be a function!');\n } else {\n this.$$onExpire = onExpire;\n }\n },\n setOptions: function setOptions(cacheOptions, strict) {\n cacheOptions = cacheOptions || {};\n strict = !!strict;\n if (!utils.isObject(cacheOptions)) {\n throw new Error('cacheOptions must be an object!');\n }\n\n if ('storagePrefix' in cacheOptions) {\n this.$$storagePrefix = cacheOptions.storagePrefix;\n } else if (strict) {\n this.$$storagePrefix = defaults.storagePrefix;\n }\n\n this.$$prefix = this.$$storagePrefix + this.$$id;\n\n if ('disabled' in cacheOptions) {\n this.$$disabled = !!cacheOptions.disabled;\n } else if (strict) {\n this.$$disabled = defaults.disabled;\n }\n\n if ('deleteOnExpire' in cacheOptions) {\n this.setDeleteOnExpire(cacheOptions.deleteOnExpire, false);\n } else if (strict) {\n this.setDeleteOnExpire(defaults.deleteOnExpire, false);\n }\n\n if ('recycleFreq' in cacheOptions) {\n this.setRecycleFreq(cacheOptions.recycleFreq);\n } else if (strict) {\n this.setRecycleFreq(defaults.recycleFreq);\n }\n\n if ('maxAge' in cacheOptions) {\n this.setMaxAge(cacheOptions.maxAge);\n } else if (strict) {\n this.setMaxAge(defaults.maxAge);\n }\n\n if ('storeOnResolve' in cacheOptions) {\n this.$$storeOnResolve = !!cacheOptions.storeOnResolve;\n } else if (strict) {\n this.$$storeOnResolve = defaults.storeOnResolve;\n }\n\n if ('storeOnReject' in cacheOptions) {\n this.$$storeOnReject = !!cacheOptions.storeOnReject;\n } else if (strict) {\n this.$$storeOnReject = defaults.storeOnReject;\n }\n\n if ('capacity' in cacheOptions) {\n this.setCapacity(cacheOptions.capacity);\n } else if (strict) {\n this.setCapacity(defaults.capacity);\n }\n\n if ('cacheFlushInterval' in cacheOptions) {\n this.setCacheFlushInterval(cacheOptions.cacheFlushInterval);\n } else if (strict) {\n this.setCacheFlushInterval(defaults.cacheFlushInterval);\n }\n\n if ('onExpire' in cacheOptions) {\n this.setOnExpire(cacheOptions.onExpire);\n } else if (strict) {\n this.setOnExpire(defaults.onExpire);\n }\n\n if ('storageMode' in cacheOptions || 'storageImpl' in cacheOptions) {\n this.setStorageMode(cacheOptions.storageMode || defaults.storageMode, cacheOptions.storageImpl || defaults.storageImpl);\n } else if (strict) {\n this.setStorageMode(defaults.storageMode, defaults.storageImpl);\n }\n },\n setRecycleFreq: function setRecycleFreq(recycleFreq) {\n if (recycleFreq === null) {\n delete this.$$recycleFreq;\n } else if (!utils.isNumber(recycleFreq)) {\n throw new Error('recycleFreq must be a number!');\n } else if (recycleFreq < 0) {\n throw new Error('recycleFreq must be greater than zero!');\n } else {\n this.$$recycleFreq = recycleFreq;\n }\n clearInterval(this.$$recycleFreqId);\n if (this.$$deleteOnExpire === 'aggressive') {\n (function (self) {\n self.$$recycleFreqId = setInterval(function () {\n self.removeExpired();\n }, self.$$recycleFreq);\n })(this);\n } else {\n delete this.$$recycleFreqId;\n }\n },\n setStorageMode: function setStorageMode(storageMode, storageImpl) {\n if (!utils.isString(storageMode)) {\n throw new Error('storageMode must be a string!');\n } else if (storageMode !== 'memory' && storageMode !== 'localStorage' && storageMode !== 'sessionStorage') {\n throw new Error('storageMode must be \"memory\", \"localStorage\" or \"sessionStorage\"!');\n }\n\n var prevStorage = $$storage;\n var prevData = $$data;\n var shouldReInsert = false;\n var items = {};\n\n function load(prevStorage, prevData) {\n var keys = this.keys();\n var length = keys.length;\n if (length) {\n var _key = void 0;\n var prevDataIsObject = utils.isObject(prevData);\n for (var i = 0; i < length; i++) {\n _key = keys[i];\n if (prevStorage) {\n var itemJson = prevStorage().getItem(this.$$prefix + '.data.' + _key);\n if (itemJson) {\n items[_key] = utils.fromJson(itemJson);\n }\n } else if (prevDataIsObject) {\n items[_key] = prevData[_key];\n }\n this.remove(_key);\n }\n shouldReInsert = true;\n }\n }\n\n if (!this.$$initializing) {\n load.call(this, prevStorage, prevData);\n }\n\n this.$$storageMode = storageMode;\n\n if (storageImpl) {\n if (!utils.isObject(storageImpl)) {\n throw new Error('storageImpl must be an object!');\n } else if (!('setItem' in storageImpl) || typeof storageImpl.setItem !== 'function') {\n throw new Error('storageImpl must implement \"setItem(key, value)\"!');\n } else if (!('getItem' in storageImpl) || typeof storageImpl.getItem !== 'function') {\n throw new Error('storageImpl must implement \"getItem(key)\"!');\n } else if (!('removeItem' in storageImpl) || typeof storageImpl.removeItem !== 'function') {\n throw new Error('storageImpl must implement \"removeItem(key)\"!');\n }\n $$storage = function $$storage() {\n return storageImpl;\n };\n } else if (this.$$storageMode === 'localStorage') {\n try {\n localStorage.setItem('cachefactory', 'cachefactory');\n localStorage.removeItem('cachefactory');\n $$storage = function $$storage() {\n return localStorage;\n };\n } catch (e) {\n $$storage = null;\n this.$$storageMode = 'memory';\n }\n } else if (this.$$storageMode === 'sessionStorage') {\n try {\n sessionStorage.setItem('cachefactory', 'cachefactory');\n sessionStorage.removeItem('cachefactory');\n $$storage = function $$storage() {\n return sessionStorage;\n };\n } catch (e) {\n $$storage = null;\n this.$$storageMode = 'memory';\n }\n } else {\n $$storage = null;\n this.$$storageMode = 'memory';\n }\n\n if (this.$$initializing) {\n load.call(this, $$storage, $$data);\n }\n\n if (shouldReInsert) {\n var item = void 0;\n for (var key in items) {\n item = items[key];\n this.put(key, item.value, {\n created: item.created,\n accessed: item.accessed,\n expires: item.expires\n });\n }\n }\n },\n touch: function touch(key, options) {\n var _this4 = this;\n\n if (key) {\n var val = this.get(key, {\n onExpire: function onExpire(k, v) {\n return _this4.put(k, v);\n }\n });\n if (val) {\n this.put(key, val, options);\n }\n } else {\n var keys = this.keys();\n for (var i = 0; i < keys.length; i++) {\n this.touch(keys[i], options);\n }\n }\n },\n values: function values() {\n var keys = this.keys();\n var items = [];\n for (var i = 0; i < keys.length; i++) {\n items.push(this.get(keys[i]));\n }\n return items;\n }\n };\n\n cache.$$initializing = true;\n cache.setOptions(options, true);\n cache.$$initializing = false;\n\n return cache;\n}\n\nfunction CacheFactory(cacheId, options) {\n return createCache(cacheId, options);\n}\n\nCacheFactory.createCache = createCache;\nCacheFactory.defaults = defaults;\n\nCacheFactory.info = function () {\n var keys = _keys(caches);\n var info = {\n size: keys.length,\n caches: {}\n };\n for (var opt in defaults) {\n if (defaults.hasOwnProperty(opt)) {\n info[opt] = defaults[opt];\n }\n }\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n info.caches[key] = caches[key].info();\n }\n return info;\n};\n\nCacheFactory.get = function (cacheId) {\n return caches[cacheId];\n};\nCacheFactory.keySet = function () {\n return _keySet(caches);\n};\nCacheFactory.keys = function () {\n return _keys(caches);\n};\nCacheFactory.destroy = function (cacheId) {\n if (caches[cacheId]) {\n caches[cacheId].destroy();\n delete caches[cacheId];\n }\n};\nCacheFactory.destroyAll = function () {\n for (var cacheId in caches) {\n caches[cacheId].destroy();\n }\n caches = {};\n};\nCacheFactory.clearAll = function () {\n for (var cacheId in caches) {\n caches[cacheId].removeAll();\n }\n};\nCacheFactory.removeExpiredFromAll = function () {\n var expired = {};\n for (var cacheId in caches) {\n expired[cacheId] = caches[cacheId].removeExpired();\n }\n return expired;\n};\nCacheFactory.enableAll = function () {\n for (var cacheId in caches) {\n caches[cacheId].$$disabled = false;\n }\n};\nCacheFactory.disableAll = function () {\n for (var cacheId in caches) {\n caches[cacheId].$$disabled = true;\n }\n};\nCacheFactory.touchAll = function () {\n for (var cacheId in caches) {\n caches[cacheId].touch();\n }\n};\n\nCacheFactory.utils = utils;\nCacheFactory.BinaryHeap = BinaryHeap;\n\nexport default CacheFactory;\n//# sourceMappingURL=cachefactory.es2015.js.map","import angular from 'angular'\nimport CacheFactory from '../node_modules/cachefactory/dist/cachefactory.es2015'\n\nCacheFactory.utils.equals = angular.equals\nCacheFactory.utils.isObject = angular.isObject\nCacheFactory.utils.fromJson = angular.fromJson\n\nfunction BinaryHeapProvider () {\n this.$get = function () { return CacheFactory.BinaryHeap }\n}\n\nfunction CacheFactoryProvider () {\n this.defaults = CacheFactory.defaults\n this.defaults.storagePrefix = 'angular-cache.caches.'\n\n this.$get = ['$q', function ($q) {\n CacheFactory.utils.Promise = $q\n return CacheFactory\n }]\n}\n\nangular.module('angular-cache', [])\n .provider('BinaryHeap', BinaryHeapProvider)\n .provider('CacheFactory', CacheFactoryProvider)\n\nexport default 'angular-cache'\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,EAAA,IAAI,eAAe,EAAnB;AACA,EAAA,aAAa,MAAb,GAAsB,OAAO,MAAP,KAAkB,UAAlB,IAAgC,oBAAO,OAAO,QAAd,MAA2B,QAA3D,GAAsE,UAAU,GAAV,EAAe;AACzG,EAAA,gBAAc,GAAd,qDAAc,GAAd;AACD,EAAA,CAFqB,GAElB,UAAU,GAAV,EAAe;AACjB,EAAA,SAAO,OAAO,OAAO,MAAP,KAAkB,UAAzB,IAAuC,IAAI,WAAJ,KAAoB,MAA3D,GAAoE,QAApE,UAAsF,GAAtF,qDAAsF,GAAtF,CAAP;AACD,EAAA,CAJD;AAKA;;;;;;AAQA,EAAA,IAAI,WAAW,SAAS,QAAT,CAAkB,IAAlB,EAAwB,UAAxB,EAAoC,CAApC,EAAuC;AACpD,EAAA,MAAI,UAAU,KAAK,CAAL,CAAd;AACA,EAAA,MAAI,SAAS,WAAW,OAAX,CAAb;;AAEA,EAAA,SAAO,IAAI,CAAX,EAAc;;AAEZ,EAAA,QAAI,UAAU,KAAK,KAAL,CAAW,CAAC,IAAI,CAAL,IAAU,CAArB,IAA0B,CAAxC;AACA,EAAA,QAAI,SAAS,KAAK,OAAL,CAAb;;;AAGA,EAAA,QAAI,UAAU,WAAW,MAAX,CAAd,EAAkC;AAChC,EAAA;AACD,EAAA,KAFD,MAEO;AACL,EAAA,WAAK,OAAL,IAAgB,OAAhB;AACA,EAAA,WAAK,CAAL,IAAU,MAAV;AACA,EAAA,UAAI,OAAJ;AACD,EAAA;AACF,EAAA;AACF,EAAA,CAlBD;;;;;;;;AA0BA,EAAA,IAAI,aAAa,SAAS,UAAT,CAAoB,IAApB,EAA0B,UAA1B,EAAsC,CAAtC,EAAyC;AACxD,EAAA,MAAI,SAAS,KAAK,MAAlB;AACA,EAAA,MAAI,OAAO,KAAK,CAAL,CAAX;AACA,EAAA,MAAI,aAAa,WAAW,IAAX,CAAjB;;AAEA,EAAA,SAAO,IAAP,EAAa;AACX,EAAA,QAAI,UAAU,CAAC,IAAI,CAAL,IAAU,CAAxB;AACA,EAAA,QAAI,UAAU,UAAU,CAAxB;AACA,EAAA,QAAI,OAAO,IAAX;AACA,EAAA,QAAI,UAAU,MAAd,EAAsB;AACpB,EAAA,UAAI,SAAS,KAAK,OAAL,CAAb;AACA,EAAA,UAAI,eAAe,WAAW,MAAX,CAAnB;;AAEA,EAAA,UAAI,eAAe,UAAnB,EAA+B;AAC7B,EAAA,eAAO,OAAP;AACD,EAAA;AACF,EAAA;;AAED,EAAA,QAAI,UAAU,MAAd,EAAsB;AACpB,EAAA,UAAI,SAAS,KAAK,OAAL,CAAb;AACA,EAAA,UAAI,eAAe,WAAW,MAAX,CAAnB;AACA,EAAA,UAAI,gBAAgB,SAAS,IAAT,GAAgB,UAAhB,GAA6B,WAAW,KAAK,OAAL,CAAX,CAA7C,CAAJ,EAA6E;AAC3E,EAAA,eAAO,OAAP;AACD,EAAA;AACF,EAAA;;AAED,EAAA,QAAI,SAAS,IAAb,EAAmB;AACjB,EAAA;AACD,EAAA,KAFD,MAEO;AACL,EAAA,WAAK,CAAL,IAAU,KAAK,IAAL,CAAV;AACA,EAAA,WAAK,IAAL,IAAa,IAAb;AACA,EAAA,UAAI,IAAJ;AACD,EAAA;AACF,EAAA;AACF,EAAA,CAlCD;;AAoCA,EAAA,SAAS,UAAT,CAAoB,UAApB,EAAgC,WAAhC,EAA6C;AAC3C,EAAA,MAAI,CAAC,UAAL,EAAiB;AACf,EAAA,iBAAa,SAAS,UAAT,CAAoB,CAApB,EAAuB;AAClC,EAAA,aAAO,CAAP;AACD,EAAA,KAFD;AAGD,EAAA;AACD,EAAA,MAAI,CAAC,WAAL,EAAkB;AAChB,EAAA,kBAAc,SAAS,WAAT,CAAqB,CAArB,EAAwB,CAAxB,EAA2B;AACvC,EAAA,aAAO,MAAM,CAAb;AACD,EAAA,KAFD;AAGD,EAAA;AACD,EAAA,MAAI,OAAO,UAAP,KAAsB,UAA1B,EAAsC;AACpC,EAAA,UAAM,IAAI,KAAJ,CAAU,2EAAV,CAAN;AACD,EAAA;AACD,EAAA,MAAI,OAAO,WAAP,KAAuB,UAA3B,EAAuC;AACrC,EAAA,UAAM,IAAI,KAAJ,CAAU,4EAAV,CAAN;AACD,EAAA;AACD,EAAA,OAAK,UAAL,GAAkB,UAAlB;AACA,EAAA,OAAK,WAAL,GAAmB,WAAnB;AACA,EAAA,OAAK,IAAL,GAAY,EAAZ;AACD,EAAA;;AAED,EAAA,IAAI,UAAU,WAAW,SAAzB;;AAEA,EAAA,QAAQ,IAAR,GAAe,UAAU,IAAV,EAAgB;AAC7B,EAAA,OAAK,IAAL,CAAU,IAAV,CAAe,IAAf;AACA,EAAA,WAAS,KAAK,IAAd,EAAoB,KAAK,UAAzB,EAAqC,KAAK,IAAL,CAAU,MAAV,GAAmB,CAAxD;AACD,EAAA,CAHD;;AAKA,EAAA,QAAQ,IAAR,GAAe,YAAY;AACzB,EAAA,SAAO,KAAK,IAAL,CAAU,CAAV,CAAP;AACD,EAAA,CAFD;;AAIA,EAAA,QAAQ,GAAR,GAAc,YAAY;AACxB,EAAA,MAAI,QAAQ,KAAK,IAAL,CAAU,CAAV,CAAZ;AACA,EAAA,MAAI,MAAM,KAAK,IAAL,CAAU,GAAV,EAAV;AACA,EAAA,MAAI,KAAK,IAAL,CAAU,MAAV,GAAmB,CAAvB,EAA0B;AACxB,EAAA,SAAK,IAAL,CAAU,CAAV,IAAe,GAAf;AACA,EAAA,eAAW,KAAK,IAAhB,EAAsB,KAAK,UAA3B,EAAuC,CAAvC;AACD,EAAA;AACD,EAAA,SAAO,KAAP;AACD,EAAA,CARD;;AAUA,EAAA,QAAQ,MAAR,GAAiB,UAAU,IAAV,EAAgB;AAC/B,EAAA,MAAI,SAAS,KAAK,IAAL,CAAU,MAAvB;AACA,EAAA,OAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,MAApB,EAA4B,GAA5B,EAAiC;AAC/B,EAAA,QAAI,KAAK,WAAL,CAAiB,KAAK,IAAL,CAAU,CAAV,CAAjB,EAA+B,IAA/B,CAAJ,EAA0C;AACxC,EAAA,UAAI,UAAU,KAAK,IAAL,CAAU,CAAV,CAAd;AACA,EAAA,UAAI,MAAM,KAAK,IAAL,CAAU,GAAV,EAAV;AACA,EAAA,UAAI,MAAM,SAAS,CAAnB,EAAsB;AACpB,EAAA,aAAK,IAAL,CAAU,CAAV,IAAe,GAAf;AACA,EAAA,iBAAS,KAAK,IAAd,EAAoB,KAAK,UAAzB,EAAqC,CAArC;AACA,EAAA,mBAAW,KAAK,IAAhB,EAAsB,KAAK,UAA3B,EAAuC,CAAvC;AACD,EAAA;AACD,EAAA,aAAO,OAAP;AACD,EAAA;AACF,EAAA;AACD,EAAA,SAAO,IAAP;AACD,EAAA,CAfD;;AAiBA,EAAA,QAAQ,SAAR,GAAoB,YAAY;AAC9B,EAAA,OAAK,IAAL,GAAY,EAAZ;AACD,EAAA,CAFD;;AAIA,EAAA,QAAQ,IAAR,GAAe,YAAY;AACzB,EAAA,SAAO,KAAK,IAAL,CAAU,MAAjB;AACD,EAAA,CAFD;;AAIA,EAAA,IAAI,WAAW,IAAf;AACA,EAAA,IAAI;AACF,EAAA,aAAW,OAAO,OAAlB;AACD,EAAA,CAFD,CAEE,OAAO,CAAP,EAAU;;AAEZ,EAAA,IAAI,QAAQ;AACV,EAAA,YAAU,SAAS,QAAT,CAAkB,KAAlB,EAAyB;AACjC,EAAA,WAAO,OAAO,KAAP,KAAiB,QAAxB;AACD,EAAA,GAHS;AAIV,EAAA,YAAU,SAAS,QAAT,CAAkB,KAAlB,EAAyB;AACjC,EAAA,WAAO,OAAO,KAAP,KAAiB,QAAxB;AACD,EAAA,GANS;AAOV,EAAA,YAAU,SAAS,QAAT,CAAkB,KAAlB,EAAyB;AACjC,EAAA,WAAO,UAAU,IAAV,IAAkB,CAAC,OAAO,KAAP,KAAiB,WAAjB,GAA+B,WAA/B,GAA6C,aAAa,MAAb,CAAoB,KAApB,CAA9C,MAA8E,QAAvG;AACD,EAAA,GATS;AAUV,EAAA,cAAY,SAAS,UAAT,CAAoB,KAApB,EAA2B;AACrC,EAAA,WAAO,OAAO,KAAP,KAAiB,UAAxB;AACD,EAAA,GAZS;AAaV,EAAA,YAAU,SAAS,QAAT,CAAkB,KAAlB,EAAyB;AACjC,EAAA,WAAO,KAAK,KAAL,CAAW,KAAX,CAAP;AACD,EAAA,GAfS;AAgBV,EAAA,UAAQ,SAAS,MAAT,CAAgB,CAAhB,EAAmB,CAAnB,EAAsB;AAC5B,EAAA,WAAO,MAAM,CAAb;AACD,EAAA,GAlBS;;AAqBV,EAAA,WAAS;AArBC,EAAA,CAAZ;;AAwBA,EAAA,SAAS,KAAT,CAAe,UAAf,EAA2B;AACzB,EAAA,MAAI,OAAO,EAAX;AACA,EAAA,MAAI,MAAM,KAAK,CAAf;AACA,EAAA,MAAI,CAAC,MAAM,QAAN,CAAe,UAAf,CAAL,EAAiC;AAC/B,EAAA,WAAO,IAAP;AACD,EAAA;AACD,EAAA,OAAK,GAAL,IAAY,UAAZ,EAAwB;AACtB,EAAA,QAAI,WAAW,cAAX,CAA0B,GAA1B,CAAJ,EAAoC;AAClC,EAAA,WAAK,IAAL,CAAU,GAAV;AACD,EAAA;AACF,EAAA;AACD,EAAA,SAAO,IAAP;AACD,EAAA;;AAED,EAAA,SAAS,cAAT,CAAwB,KAAxB,EAA+B;AAC7B,EAAA,SAAO,SAAS,OAAO,MAAM,IAAb,KAAsB,UAAtC;AACD,EAAA;;AAED,EAAA,SAAS,gBAAT,CAA0B,MAA1B,EAAkC;AAChC,EAAA,MAAI,MAAM,QAAN,CAAe,MAAf,CAAJ,EAA4B;AAC1B,EAAA,WAAO,OAAO,QAAP,EAAP;AACD,EAAA;AACD,EAAA,SAAO,MAAP;AACD,EAAA;;AAED,EAAA,SAAS,OAAT,CAAiB,UAAjB,EAA6B;AAC3B,EAAA,MAAI,SAAS,EAAb;AACA,EAAA,MAAI,MAAM,KAAK,CAAf;AACA,EAAA,MAAI,CAAC,MAAM,QAAN,CAAe,UAAf,CAAL,EAAiC;AAC/B,EAAA,WAAO,MAAP;AACD,EAAA;AACD,EAAA,OAAK,GAAL,IAAY,UAAZ,EAAwB;AACtB,EAAA,QAAI,WAAW,cAAX,CAA0B,GAA1B,CAAJ,EAAoC;AAClC,EAAA,aAAO,GAAP,IAAc,GAAd;AACD,EAAA;AACF,EAAA;AACD,EAAA,SAAO,MAAP;AACD,EAAA;;AAED,EAAA,IAAI,WAAW;AACb,EAAA,YAAU,OAAO,SADJ;AAEb,EAAA,UAAQ,OAAO,SAFF;AAGb,EAAA,kBAAgB,MAHH;AAIb,EAAA,YAAU,IAJG;AAKb,EAAA,sBAAoB,IALP;AAMb,EAAA,eAAa,IANA;AAOb,EAAA,eAAa,QAPA;AAQb,EAAA,eAAa,IARA;AASb,EAAA,YAAU,KATG;AAUb,EAAA,iBAAe,sBAVF;AAWb,EAAA,kBAAgB,KAXH;AAYb,EAAA,iBAAe;AAZF,EAAA,CAAf;;AAeA,EAAA,IAAI,SAAS,EAAb;;AAEA,EAAA,SAAS,WAAT,CAAqB,OAArB,EAA8B,OAA9B,EAAuC;AACrC,EAAA,MAAI,WAAW,MAAf,EAAuB;AACrB,EAAA,UAAM,IAAI,KAAJ,CAAU,UAAU,kBAApB,CAAN;AACD,EAAA,GAFD,MAEO,IAAI,CAAC,MAAM,QAAN,CAAe,OAAf,CAAL,EAA8B;AACnC,EAAA,UAAM,IAAI,KAAJ,CAAU,2BAAV,CAAN;AACD,EAAA;;AAED,EAAA,MAAI,SAAS,EAAb;AACA,EAAA,MAAI,aAAa,EAAjB;AACA,EAAA,MAAI,YAAY,IAAhB;AACA,EAAA,MAAI,gBAAgB,IAAI,UAAJ,CAAe,UAAU,CAAV,EAAa;AAC9C,EAAA,WAAO,EAAE,OAAT;AACD,EAAA,GAFmB,EAEjB,MAAM,MAFW,CAApB;AAGA,EAAA,MAAI,YAAY,IAAI,UAAJ,CAAe,UAAU,CAAV,EAAa;AAC1C,EAAA,WAAO,EAAE,QAAT;AACD,EAAA,GAFe,EAEb,MAAM,MAFO,CAAhB;;AAIA,EAAA,MAAI,QAAQ,OAAO,OAAP,IAAkB;;AAE5B,EAAA,UAAM,OAFsB;;AAI5B,EAAA,aAAS,SAAS,OAAT,GAAmB;AAC1B,EAAA,oBAAc,KAAK,sBAAnB;AACA,EAAA,oBAAc,KAAK,eAAnB;AACA,EAAA,WAAK,SAAL;AACA,EAAA,UAAI,SAAJ,EAAe;AACb,EAAA,oBAAY,UAAZ,CAAuB,KAAK,QAAL,GAAgB,OAAvC;AACA,EAAA,oBAAY,UAAZ,CAAuB,KAAK,QAA5B;AACD,EAAA;AACD,EAAA,kBAAY,IAAZ;AACA,EAAA,eAAS,IAAT;AACA,EAAA,kBAAY,IAAZ;AACA,EAAA,sBAAgB,IAAhB;AACA,EAAA,WAAK,QAAL,GAAgB,IAAhB;AACA,EAAA,aAAO,OAAO,KAAK,IAAZ,CAAP;AACD,EAAA,KAlB2B;AAmB5B,EAAA,aAAS,SAAS,OAAT,GAAmB;AAC1B,EAAA,WAAK,UAAL,GAAkB,IAAlB;AACD,EAAA,KArB2B;AAsB5B,EAAA,YAAQ,SAAS,MAAT,GAAkB;AACxB,EAAA,aAAO,KAAK,UAAZ;AACD,EAAA,KAxB2B;AAyB5B,EAAA,SAAK,SAAS,GAAT,CAAa,GAAb,EAAkB,OAAlB,EAA2B;AAC9B,EAAA,UAAI,SAAS,IAAb;;AAEA,EAAA,UAAI,MAAM,OAAN,CAAc,GAAd,CAAJ,EAAwB;AACtB,EAAA,YAAI,OAAO,YAAY;AACrB,EAAA,cAAI,OAAO,GAAX;AACA,EAAA,cAAI,SAAS,EAAb;;AAEA,EAAA,eAAK,OAAL,CAAa,UAAU,GAAV,EAAe;AAC1B,EAAA,gBAAI,QAAQ,OAAO,GAAP,CAAW,GAAX,EAAgB,OAAhB,CAAZ;AACA,EAAA,gBAAI,UAAU,IAAV,IAAkB,UAAU,SAAhC,EAA2C;AACzC,EAAA,qBAAO,IAAP,CAAY,KAAZ;AACD,EAAA;AACF,EAAA,WALD;;AAOA,EAAA,iBAAO;AACL,EAAA,eAAG;AADE,EAAA,WAAP;AAGD,EAAA,SAdU,EAAX;;AAgBA,EAAA,YAAI,CAAC,OAAO,IAAP,KAAgB,WAAhB,GAA8B,WAA9B,GAA4C,aAAa,MAAb,CAAoB,IAApB,CAA7C,MAA4E,QAAhF,EAA0F,OAAO,KAAK,CAAZ;AAC3F,EAAA,OAlBD,MAkBO;AACL,EAAA,cAAM,iBAAiB,GAAjB,CAAN;;AAEA,EAAA,YAAI,KAAK,UAAT,EAAqB;AACnB,EAAA;AACD,EAAA;AACF,EAAA;;AAED,EAAA,gBAAU,WAAW,EAArB;AACA,EAAA,UAAI,CAAC,MAAM,QAAN,CAAe,GAAf,CAAL,EAA0B;AACxB,EAAA,cAAM,IAAI,KAAJ,CAAU,uBAAV,CAAN;AACD,EAAA,OAFD,MAEO,IAAI,WAAW,CAAC,MAAM,QAAN,CAAe,OAAf,CAAhB,EAAyC;AAC9C,EAAA,cAAM,IAAI,KAAJ,CAAU,4BAAV,CAAN;AACD,EAAA,OAFM,MAEA,IAAI,QAAQ,QAAR,IAAoB,CAAC,MAAM,UAAN,CAAiB,QAAQ,QAAzB,CAAzB,EAA6D;AAClE,EAAA,cAAM,IAAI,KAAJ,CAAU,sCAAV,CAAN;AACD,EAAA;;AAED,EAAA,UAAI,OAAO,KAAK,CAAhB;;AAEA,EAAA,UAAI,SAAJ,EAAe;AACb,EAAA,YAAI,WAAW,GAAX,CAAJ,EAAqB;AACnB,EAAA,iBAAO,WAAW,GAAX,CAAP;AACD,EAAA;;AAED,EAAA,YAAI,WAAW,YAAY,OAAZ,CAAoB,KAAK,QAAL,GAAgB,QAAhB,GAA2B,GAA/C,CAAf;;AAEA,EAAA,YAAI,QAAJ,EAAc;AACZ,EAAA,iBAAO,MAAM,QAAN,CAAe,QAAf,CAAP;AACD,EAAA,SAFD,MAEO;AACL,EAAA;AACD,EAAA;AACF,EAAA,OAZD,MAYO,IAAI,MAAM,QAAN,CAAe,MAAf,CAAJ,EAA4B;AACjC,EAAA,YAAI,EAAE,OAAO,MAAT,CAAJ,EAAsB;AACpB,EAAA;AACD,EAAA;;AAED,EAAA,eAAO,OAAO,GAAP,CAAP;AACD,EAAA;;AAED,EAAA,UAAI,QAAQ,KAAK,KAAjB;AACA,EAAA,UAAI,MAAM,IAAI,IAAJ,GAAW,OAAX,EAAV;;AAEA,EAAA,UAAI,SAAJ,EAAe;AACb,EAAA,kBAAU,MAAV,CAAiB;AACf,EAAA,eAAK,GADU;AAEf,EAAA,oBAAU,KAAK;AAFA,EAAA,SAAjB;AAIA,EAAA,aAAK,QAAL,GAAgB,GAAhB;AACA,EAAA,kBAAU,IAAV,CAAe;AACb,EAAA,eAAK,GADQ;AAEb,EAAA,oBAAU;AAFG,EAAA,SAAf;AAID,EAAA,OAVD,MAUO;AACL,EAAA,kBAAU,MAAV,CAAiB,IAAjB;AACA,EAAA,aAAK,QAAL,GAAgB,GAAhB;AACA,EAAA,kBAAU,IAAV,CAAe,IAAf;AACD,EAAA;;AAED,EAAA,UAAI,KAAK,gBAAL,KAA0B,SAA1B,IAAuC,aAAa,IAApD,IAA4D,KAAK,OAAL,GAAe,GAA/E,EAAoF;AAClF,EAAA,aAAK,MAAL,CAAY,GAAZ;;AAEA,EAAA,YAAI,KAAK,UAAT,EAAqB;AACnB,EAAA,eAAK,UAAL,CAAgB,GAAhB,EAAqB,KAAK,KAA1B,EAAiC,QAAQ,QAAzC;AACD,EAAA,SAFD,MAEO,IAAI,QAAQ,QAAZ,EAAsB;AAC3B,EAAA,kBAAQ,QAAR,CAAiB,IAAjB,CAAsB,IAAtB,EAA4B,GAA5B,EAAiC,KAAK,KAAtC;AACD,EAAA;AACD,EAAA,gBAAQ,SAAR;AACD,EAAA,OATD,MASO,IAAI,SAAJ,EAAe;AACpB,EAAA,oBAAY,OAAZ,CAAoB,KAAK,QAAL,GAAgB,QAAhB,GAA2B,GAA/C,EAAoD,KAAK,SAAL,CAAe,IAAf,CAApD;AACD,EAAA;;AAED,EAAA,aAAO,KAAP;AACD,EAAA,KAtH2B;AAuH5B,EAAA,UAAM,SAAS,IAAT,CAAc,GAAd,EAAmB;AACvB,EAAA,UAAI,GAAJ,EAAS;AACP,EAAA,YAAI,OAAO,KAAK,CAAhB;AACA,EAAA,YAAI,SAAJ,EAAe;AACb,EAAA,cAAI,WAAW,YAAY,OAAZ,CAAoB,KAAK,QAAL,GAAgB,QAAhB,GAA2B,GAA/C,CAAf;;AAEA,EAAA,cAAI,QAAJ,EAAc;AACZ,EAAA,mBAAO,MAAM,QAAN,CAAe,QAAf,CAAP;AACA,EAAA,mBAAO;AACL,EAAA,uBAAS,KAAK,OADT;AAEL,EAAA,wBAAU,KAAK,QAFV;AAGL,EAAA,uBAAS,KAAK,OAHT;AAIL,EAAA,yBAAW,IAAI,IAAJ,GAAW,OAAX,KAAuB,KAAK,OAA5B,IAAuC,KAAK,MAAL,IAAe,KAAK,QAA3D;AAJN,EAAA,aAAP;AAMD,EAAA,WARD,MAQO;AACL,EAAA,mBAAO,SAAP;AACD,EAAA;AACF,EAAA,SAdD,MAcO,IAAI,MAAM,QAAN,CAAe,MAAf,KAA0B,OAAO,MAArC,EAA6C;AAClD,EAAA,iBAAO,OAAO,GAAP,CAAP;;AAEA,EAAA,iBAAO;AACL,EAAA,qBAAS,KAAK,OADT;AAEL,EAAA,sBAAU,KAAK,QAFV;AAGL,EAAA,qBAAS,KAAK,OAHT;AAIL,EAAA,uBAAW,IAAI,IAAJ,GAAW,OAAX,KAAuB,KAAK,OAA5B,IAAuC,KAAK,MAAL,IAAe,KAAK,QAA3D;AAJN,EAAA,WAAP;AAMD,EAAA,SATM,MASA;AACL,EAAA,iBAAO,SAAP;AACD,EAAA;AACF,EAAA,OA5BD,MA4BO;AACL,EAAA,eAAO;AACL,EAAA,cAAI,KAAK,IADJ;AAEL,EAAA,oBAAU,KAAK,UAFV;AAGL,EAAA,kBAAQ,KAAK,QAHR;AAIL,EAAA,0BAAgB,KAAK,gBAJhB;AAKL,EAAA,oBAAU,KAAK,UALV;AAML,EAAA,8BAAoB,KAAK,oBANpB;AAOL,EAAA,uBAAa,KAAK,aAPb;AAQL,EAAA,uBAAa,KAAK,aARb;AASL,EAAA,uBAAa,YAAY,WAAZ,GAA0B,SATlC;AAUL,EAAA,oBAAU,CAAC,CAAC,KAAK,UAVZ;AAWL,EAAA,gBAAM,aAAa,UAAU,IAAV,EAAb,IAAiC;AAXlC,EAAA,SAAP;AAaD,EAAA;AACF,EAAA,KAnK2B;AAoK5B,EAAA,UAAM,SAAS,IAAT,GAAgB;AACpB,EAAA,UAAI,SAAJ,EAAe;AACb,EAAA,YAAI,WAAW,YAAY,OAAZ,CAAoB,KAAK,QAAL,GAAgB,OAApC,CAAf;;AAEA,EAAA,YAAI,QAAJ,EAAc;AACZ,EAAA,iBAAO,MAAM,QAAN,CAAe,QAAf,CAAP;AACD,EAAA,SAFD,MAEO;AACL,EAAA,iBAAO,EAAP;AACD,EAAA;AACF,EAAA,OARD,MAQO;AACL,EAAA,eAAO,MAAM,MAAN,CAAP;AACD,EAAA;AACF,EAAA,KAhL2B;AAiL5B,EAAA,YAAQ,SAAS,MAAT,GAAkB;AACxB,EAAA,UAAI,SAAJ,EAAe;AACb,EAAA,YAAI,WAAW,YAAY,OAAZ,CAAoB,KAAK,QAAL,GAAgB,OAApC,CAAf;AACA,EAAA,YAAI,OAAO,EAAX;;AAEA,EAAA,YAAI,QAAJ,EAAc;AACZ,EAAA,cAAI,OAAO,MAAM,QAAN,CAAe,QAAf,CAAX;;AAEA,EAAA,eAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,KAAK,MAAzB,EAAiC,GAAjC,EAAsC;AACpC,EAAA,iBAAK,KAAK,CAAL,CAAL,IAAgB,KAAK,CAAL,CAAhB;AACD,EAAA;AACF,EAAA;AACD,EAAA,eAAO,IAAP;AACD,EAAA,OAZD,MAYO;AACL,EAAA,eAAO,QAAQ,MAAR,CAAP;AACD,EAAA;AACF,EAAA,KAjM2B;AAkM5B,EAAA,SAAK,SAAS,GAAT,CAAa,GAAb,EAAkB,KAAlB,EAAyB,OAAzB,EAAkC;AACrC,EAAA,UAAI,SAAS,IAAb;;AAEA,EAAA,kBAAY,UAAU,EAAtB;;AAEA,EAAA,UAAI,iBAAiB,oBAAoB,OAApB,GAA8B,CAAC,CAAC,QAAQ,cAAxC,GAAyD,KAAK,gBAAnF;AACA,EAAA,UAAI,gBAAgB,mBAAmB,OAAnB,GAA6B,CAAC,CAAC,QAAQ,aAAvC,GAAuD,KAAK,eAAhF;;AAEA,EAAA,UAAI,aAAa,SAAS,UAAT,CAAoB,KAApB,EAA2B,OAA3B,EAAoC;AACnD,EAAA,eAAO,UAAU,CAAV,EAAa;AAClB,EAAA,cAAI,KAAJ,EAAW;AACT,EAAA,mBAAO,WAAW,GAAX,CAAP;AACA,EAAA,gBAAI,MAAM,QAAN,CAAe,CAAf,KAAqB,YAAY,CAAjC,IAAsC,UAAU,CAApD,EAAuD;AACrD,EAAA,kBAAI,CAAC,EAAE,MAAH,EAAW,EAAE,IAAb,EAAmB,EAAE,OAAF,EAAnB,EAAgC,EAAE,UAAlC,CAAJ;AACA,EAAA,qBAAO,GAAP,CAAW,GAAX,EAAgB,CAAhB;AACD,EAAA,aAHD,MAGO;AACL,EAAA,qBAAO,GAAP,CAAW,GAAX,EAAgB,CAAhB;AACD,EAAA;AACF,EAAA;AACD,EAAA,cAAI,OAAJ,EAAa;AACX,EAAA,gBAAI,MAAM,OAAV,EAAmB;AACjB,EAAA,qBAAO,MAAM,OAAN,CAAc,MAAd,CAAqB,CAArB,CAAP;AACD,EAAA,aAFD,MAEO;AACL,EAAA,oBAAM,CAAN;AACD,EAAA;AACF,EAAA,WAND,MAMO;AACL,EAAA,mBAAO,CAAP;AACD,EAAA;AACF,EAAA,SAnBD;AAoBD,EAAA,OArBD;;AAuBA,EAAA,UAAI,KAAK,UAAL,IAAmB,CAAC,MAAM,QAAN,CAAe,MAAf,CAApB,IAA8C,UAAU,IAAxD,IAAgE,UAAU,SAA9E,EAAyF;AACvF,EAAA;AACD,EAAA;AACD,EAAA,YAAM,iBAAiB,GAAjB,CAAN;;AAEA,EAAA,UAAI,CAAC,MAAM,QAAN,CAAe,GAAf,CAAL,EAA0B;AACxB,EAAA,cAAM,IAAI,KAAJ,CAAU,uBAAV,CAAN;AACD,EAAA;;AAED,EAAA,UAAI,MAAM,IAAI,IAAJ,GAAW,OAAX,EAAV;AACA,EAAA,UAAI,OAAO;AACT,EAAA,aAAK,GADI;AAET,EAAA,eAAO,eAAe,KAAf,IAAwB,MAAM,IAAN,CAAW,WAAW,cAAX,EAA2B,KAA3B,CAAX,EAA8C,WAAW,aAAX,EAA0B,IAA1B,CAA9C,CAAxB,GAAyG,KAFvG;AAGT,EAAA,iBAAS,QAAQ,OAAR,KAAoB,SAApB,GAAgC,GAAhC,GAAsC,QAAQ,OAH9C;AAIT,EAAA,kBAAU,QAAQ,QAAR,KAAqB,SAArB,GAAiC,GAAjC,GAAuC,QAAQ;AAJhD,EAAA,OAAX;AAMA,EAAA,UAAI,QAAQ,MAAZ,EAAoB;AAClB,EAAA,aAAK,MAAL,GAAc,QAAQ,MAAtB;AACD,EAAA;;AAED,EAAA,UAAI,QAAQ,OAAR,KAAoB,SAAxB,EAAmC;AACjC,EAAA,aAAK,OAAL,GAAe,KAAK,OAAL,IAAgB,KAAK,MAAL,IAAe,KAAK,QAApC,CAAf;AACD,EAAA,OAFD,MAEO;AACL,EAAA,aAAK,OAAL,GAAe,QAAQ,OAAvB;AACD,EAAA;;AAED,EAAA,UAAI,SAAJ,EAAe;AACb,EAAA,YAAI,eAAe,KAAK,KAApB,CAAJ,EAAgC;AAC9B,EAAA,qBAAW,GAAX,IAAkB,KAAK,KAAvB;AACA,EAAA,iBAAO,WAAW,GAAX,CAAP;AACD,EAAA;AACD,EAAA,YAAI,WAAW,YAAY,OAAZ,CAAoB,KAAK,QAAL,GAAgB,OAApC,CAAf;AACA,EAAA,YAAI,OAAO,WAAW,MAAM,QAAN,CAAe,QAAf,CAAX,GAAsC,EAAjD;AACA,EAAA,YAAI,WAAW,YAAY,OAAZ,CAAoB,KAAK,QAAL,GAAgB,QAAhB,GAA2B,GAA/C,CAAf;;;AAGA,EAAA,YAAI,QAAJ,EAAc;AACZ,EAAA,eAAK,MAAL,CAAY,GAAZ;AACD,EAAA;;AAED,EAAA,sBAAc,IAAd,CAAmB;AACjB,EAAA,eAAK,GADY;AAEjB,EAAA,mBAAS,KAAK;AAFG,EAAA,SAAnB;;AAKA,EAAA,kBAAU,IAAV,CAAe;AACb,EAAA,eAAK,GADQ;AAEb,EAAA,oBAAU,KAAK;AAFF,EAAA,SAAf;;AAKA,EAAA,oBAAY,OAAZ,CAAoB,KAAK,QAAL,GAAgB,QAAhB,GAA2B,GAA/C,EAAoD,KAAK,SAAL,CAAe,IAAf,CAApD;AACA,EAAA,YAAI,SAAS,KAAb;AACA,EAAA,aAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,KAAK,MAAzB,EAAiC,GAAjC,EAAsC;AACpC,EAAA,cAAI,KAAK,CAAL,MAAY,GAAhB,EAAqB;AACnB,EAAA,qBAAS,IAAT;AACA,EAAA;AACD,EAAA;AACF,EAAA;AACD,EAAA,YAAI,CAAC,MAAL,EAAa;AACX,EAAA,eAAK,IAAL,CAAU,GAAV;AACD,EAAA;AACD,EAAA,oBAAY,OAAZ,CAAoB,KAAK,QAAL,GAAgB,OAApC,EAA6C,KAAK,SAAL,CAAe,IAAf,CAA7C;AACD,EAAA,OApCD,MAoCO;;AAEL,EAAA,YAAI,OAAO,GAAP,CAAJ,EAAiB;AACf,EAAA,eAAK,MAAL,CAAY,GAAZ;AACD,EAAA;;AAED,EAAA,sBAAc,IAAd,CAAmB,IAAnB;;AAEA,EAAA,kBAAU,IAAV,CAAe,IAAf;;AAEA,EAAA,eAAO,GAAP,IAAc,IAAd;AACA,EAAA,eAAO,WAAW,GAAX,CAAP;AACD,EAAA;;;AAGD,EAAA,UAAI,UAAU,IAAV,KAAmB,KAAK,UAA5B,EAAwC;AACtC,EAAA,aAAK,MAAL,CAAY,UAAU,IAAV,GAAiB,GAA7B;AACD,EAAA;;AAED,EAAA,aAAO,KAAP;AACD,EAAA,KAnT2B;AAoT5B,EAAA,YAAQ,SAAS,MAAT,CAAgB,GAAhB,EAAqB;AAC3B,EAAA,aAAO,EAAP;AACA,EAAA,aAAO,WAAW,GAAX,CAAP;AACA,EAAA,UAAI,SAAJ,EAAe;AACb,EAAA,YAAI,WAAW,YAAY,OAAZ,CAAoB,KAAK,QAAL,GAAgB,QAAhB,GAA2B,GAA/C,CAAf;;AAEA,EAAA,YAAI,QAAJ,EAAc;AACZ,EAAA,cAAI,OAAO,MAAM,QAAN,CAAe,QAAf,CAAX;AACA,EAAA,oBAAU,MAAV,CAAiB;AACf,EAAA,iBAAK,GADU;AAEf,EAAA,sBAAU,KAAK;AAFA,EAAA,WAAjB;AAIA,EAAA,wBAAc,MAAd,CAAqB;AACnB,EAAA,iBAAK,GADc;AAEnB,EAAA,qBAAS,KAAK;AAFK,EAAA,WAArB;AAIA,EAAA,sBAAY,UAAZ,CAAuB,KAAK,QAAL,GAAgB,QAAhB,GAA2B,GAAlD;AACA,EAAA,cAAI,WAAW,YAAY,OAAZ,CAAoB,KAAK,QAAL,GAAgB,OAApC,CAAf;AACA,EAAA,cAAI,OAAO,WAAW,MAAM,QAAN,CAAe,QAAf,CAAX,GAAsC,EAAjD;AACA,EAAA,cAAI,QAAQ,KAAK,OAAL,CAAa,GAAb,CAAZ;;AAEA,EAAA,cAAI,SAAS,CAAb,EAAgB;AACd,EAAA,iBAAK,MAAL,CAAY,KAAZ,EAAmB,CAAnB;AACD,EAAA;AACD,EAAA,sBAAY,OAAZ,CAAoB,KAAK,QAAL,GAAgB,OAApC,EAA6C,KAAK,SAAL,CAAe,IAAf,CAA7C;AACA,EAAA,iBAAO,KAAK,KAAZ;AACD,EAAA;AACF,EAAA,OAxBD,MAwBO,IAAI,MAAM,QAAN,CAAe,MAAf,CAAJ,EAA4B;AACjC,EAAA,YAAI,QAAQ,OAAO,GAAP,IAAc,OAAO,GAAP,EAAY,KAA1B,GAAkC,SAA9C;AACA,EAAA,kBAAU,MAAV,CAAiB,OAAO,GAAP,CAAjB;AACA,EAAA,sBAAc,MAAd,CAAqB,OAAO,GAAP,CAArB;AACA,EAAA,eAAO,GAAP,IAAc,IAAd;AACA,EAAA,eAAO,OAAO,GAAP,CAAP;AACA,EAAA,eAAO,KAAP;AACD,EAAA;AACF,EAAA,KAvV2B;AAwV5B,EAAA,eAAW,SAAS,SAAT,GAAqB;AAC9B,EAAA,UAAI,SAAJ,EAAe;AACb,EAAA,kBAAU,SAAV;AACA,EAAA,sBAAc,SAAd;AACA,EAAA,YAAI,WAAW,YAAY,OAAZ,CAAoB,KAAK,QAAL,GAAgB,OAApC,CAAf;;AAEA,EAAA,YAAI,QAAJ,EAAc;AACZ,EAAA,cAAI,OAAO,MAAM,QAAN,CAAe,QAAf,CAAX;;AAEA,EAAA,eAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,KAAK,MAAzB,EAAiC,GAAjC,EAAsC;AACpC,EAAA,iBAAK,MAAL,CAAY,KAAK,CAAL,CAAZ;AACD,EAAA;AACF,EAAA;AACD,EAAA,oBAAY,OAAZ,CAAoB,KAAK,QAAL,GAAgB,OAApC,EAA6C,KAAK,SAAL,CAAe,EAAf,CAA7C;AACD,EAAA,OAbD,MAaO,IAAI,MAAM,QAAN,CAAe,MAAf,CAAJ,EAA4B;AACjC,EAAA,kBAAU,SAAV;AACA,EAAA,sBAAc,SAAd;AACA,EAAA,aAAK,IAAI,GAAT,IAAgB,MAAhB,EAAwB;AACtB,EAAA,iBAAO,GAAP,IAAc,IAAd;AACD,EAAA;AACD,EAAA,iBAAS,EAAT;AACD,EAAA,OAPM,MAOA;AACL,EAAA,kBAAU,SAAV;AACA,EAAA,sBAAc,SAAd;AACA,EAAA,iBAAS,EAAT;AACD,EAAA;AACD,EAAA,mBAAa,EAAb;AACD,EAAA,KAnX2B;AAoX5B,EAAA,mBAAe,SAAS,aAAT,GAAyB;AACtC,EAAA,UAAI,MAAM,IAAI,IAAJ,GAAW,OAAX,EAAV;AACA,EAAA,UAAI,UAAU,EAAd;AACA,EAAA,UAAI,MAAM,KAAK,CAAf;AACA,EAAA,UAAI,cAAc,KAAK,CAAvB;;AAEA,EAAA,aAAO,CAAC,cAAc,cAAc,IAAd,EAAf,KAAwC,YAAY,OAAZ,IAAuB,GAAtE,EAA2E;AACzE,EAAA,gBAAQ,YAAY,GAApB,IAA2B,YAAY,KAAZ,GAAoB,YAAY,KAAhC,GAAwC,IAAnE;AACA,EAAA,sBAAc,GAAd;AACD,EAAA;;AAED,EAAA,UAAI,SAAJ,EAAe;AACb,EAAA,aAAK,GAAL,IAAY,OAAZ,EAAqB;AACnB,EAAA,cAAI,WAAW,YAAY,OAAZ,CAAoB,KAAK,QAAL,GAAgB,QAAhB,GAA2B,GAA/C,CAAf;AACA,EAAA,cAAI,QAAJ,EAAc;AACZ,EAAA,oBAAQ,GAAR,IAAe,MAAM,QAAN,CAAe,QAAf,EAAyB,KAAxC;AACA,EAAA,iBAAK,MAAL,CAAY,GAAZ;AACD,EAAA;AACF,EAAA;AACF,EAAA,OARD,MAQO;AACL,EAAA,aAAK,GAAL,IAAY,OAAZ,EAAqB;AACnB,EAAA,eAAK,MAAL,CAAY,GAAZ;AACD,EAAA;AACF,EAAA;;AAED,EAAA,UAAI,KAAK,UAAT,EAAqB;AACnB,EAAA,aAAK,GAAL,IAAY,OAAZ,EAAqB;AACnB,EAAA,eAAK,UAAL,CAAgB,GAAhB,EAAqB,QAAQ,GAAR,CAArB;AACD,EAAA;AACF,EAAA;;AAED,EAAA,aAAO,OAAP;AACD,EAAA,KApZ2B;AAqZ5B,EAAA,2BAAuB,SAAS,qBAAT,CAA+B,kBAA/B,EAAmD;AACxE,EAAA,UAAI,QAAQ,IAAZ;AACA,EAAA,UAAI,uBAAuB,IAA3B,EAAiC;AAC/B,EAAA,eAAO,MAAM,oBAAb;AACD,EAAA,OAFD,MAEO,IAAI,CAAC,MAAM,QAAN,CAAe,kBAAf,CAAL,EAAyC;AAC9C,EAAA,cAAM,IAAI,KAAJ,CAAU,sCAAV,CAAN;AACD,EAAA,OAFM,MAEA,IAAI,qBAAqB,CAAzB,EAA4B;AACjC,EAAA,cAAM,IAAI,KAAJ,CAAU,+CAAV,CAAN;AACD,EAAA,OAFM,MAEA,IAAI,uBAAuB,MAAM,oBAAjC,EAAuD;AAC5D,EAAA,cAAM,oBAAN,GAA6B,kBAA7B;;AAEA,EAAA,sBAAc,MAAM,sBAApB;;AAEA,EAAA,cAAM,sBAAN,GAA+B,YAAY,YAAY;AACrD,EAAA,gBAAM,SAAN;AACD,EAAA,SAF8B,EAE5B,MAAM,oBAFsB,CAA/B;AAGD,EAAA;AACF,EAAA,KAta2B;AAua5B,EAAA,iBAAa,SAAS,WAAT,CAAqB,QAArB,EAA+B;AAC1C,EAAA,UAAI,aAAa,IAAjB,EAAuB;AACrB,EAAA,eAAO,KAAK,UAAZ;AACD,EAAA,OAFD,MAEO,IAAI,CAAC,MAAM,QAAN,CAAe,QAAf,CAAL,EAA+B;AACpC,EAAA,cAAM,IAAI,KAAJ,CAAU,4BAAV,CAAN;AACD,EAAA,OAFM,MAEA,IAAI,WAAW,CAAf,EAAkB;AACvB,EAAA,cAAM,IAAI,KAAJ,CAAU,qCAAV,CAAN;AACD,EAAA,OAFM,MAEA;AACL,EAAA,aAAK,UAAL,GAAkB,QAAlB;AACD,EAAA;AACD,EAAA,UAAI,UAAU,EAAd;AACA,EAAA,aAAO,UAAU,IAAV,KAAmB,KAAK,UAA/B,EAA2C;AACzC,EAAA,gBAAQ,UAAU,IAAV,GAAiB,GAAzB,IAAgC,KAAK,MAAL,CAAY,UAAU,IAAV,GAAiB,GAA7B,CAAhC;AACD,EAAA;AACD,EAAA,aAAO,OAAP;AACD,EAAA,KAtb2B;AAub5B,EAAA,uBAAmB,SAAS,iBAAT,CAA2B,cAA3B,EAA2C,cAA3C,EAA2D;AAC5E,EAAA,UAAI,mBAAmB,IAAvB,EAA6B;AAC3B,EAAA,eAAO,KAAK,gBAAZ;AACD,EAAA,OAFD,MAEO,IAAI,CAAC,MAAM,QAAN,CAAe,cAAf,CAAL,EAAqC;AAC1C,EAAA,cAAM,IAAI,KAAJ,CAAU,kCAAV,CAAN;AACD,EAAA,OAFM,MAEA,IAAI,mBAAmB,MAAnB,IAA6B,mBAAmB,SAAhD,IAA6D,mBAAmB,YAApF,EAAkG;AACvG,EAAA,cAAM,IAAI,KAAJ,CAAU,2DAAV,CAAN;AACD,EAAA,OAFM,MAEA;AACL,EAAA,aAAK,gBAAL,GAAwB,cAAxB;AACD,EAAA;AACD,EAAA,UAAI,mBAAmB,KAAvB,EAA8B;AAC5B,EAAA,aAAK,cAAL,CAAoB,KAAK,aAAzB;AACD,EAAA;AACF,EAAA,KApc2B;AAqc5B,EAAA,eAAW,SAAS,SAAT,CAAmB,MAAnB,EAA2B;AACpC,EAAA,UAAI,WAAW,IAAf,EAAqB;AACnB,EAAA,aAAK,QAAL,GAAgB,OAAO,SAAvB;AACD,EAAA,OAFD,MAEO,IAAI,CAAC,MAAM,QAAN,CAAe,MAAf,CAAL,EAA6B;AAClC,EAAA,cAAM,IAAI,KAAJ,CAAU,0BAAV,CAAN;AACD,EAAA,OAFM,MAEA,IAAI,SAAS,CAAb,EAAgB;AACrB,EAAA,cAAM,IAAI,KAAJ,CAAU,mCAAV,CAAN;AACD,EAAA,OAFM,MAEA;AACL,EAAA,aAAK,QAAL,GAAgB,MAAhB;AACD,EAAA;AACD,EAAA,UAAI,IAAI,KAAK,CAAb;YACI,OAAO,KAAK,CADhB;YAEI,MAAM,KAAK,CAFf;;AAIA,EAAA,oBAAc,SAAd;;AAEA,EAAA,UAAI,SAAJ,EAAe;AACb,EAAA,YAAI,WAAW,YAAY,OAAZ,CAAoB,KAAK,QAAL,GAAgB,OAApC,CAAf;;AAEA,EAAA,eAAO,WAAW,MAAM,QAAN,CAAe,QAAf,CAAX,GAAsC,EAA7C;;AAEA,EAAA,aAAK,IAAI,CAAT,EAAY,IAAI,KAAK,MAArB,EAA6B,GAA7B,EAAkC;AAChC,EAAA,gBAAM,KAAK,CAAL,CAAN;AACA,EAAA,cAAI,WAAW,YAAY,OAAZ,CAAoB,KAAK,QAAL,GAAgB,QAAhB,GAA2B,GAA/C,CAAf;;AAEA,EAAA,cAAI,QAAJ,EAAc;AACZ,EAAA,gBAAI,OAAO,MAAM,QAAN,CAAe,QAAf,CAAX;AACA,EAAA,gBAAI,KAAK,QAAL,KAAkB,OAAO,SAA7B,EAAwC;AACtC,EAAA,mBAAK,OAAL,GAAe,OAAO,SAAtB;AACD,EAAA,aAFD,MAEO;AACL,EAAA,mBAAK,OAAL,GAAe,KAAK,OAAL,IAAgB,KAAK,MAAL,IAAe,KAAK,QAApC,CAAf;AACD,EAAA;AACD,EAAA,0BAAc,IAAd,CAAmB;AACjB,EAAA,mBAAK,GADY;AAEjB,EAAA,uBAAS,KAAK;AAFG,EAAA,aAAnB;AAID,EAAA;AACF,EAAA;AACF,EAAA,OAtBD,MAsBO;AACL,EAAA,eAAO,MAAM,MAAN,CAAP;;AAEA,EAAA,aAAK,IAAI,CAAT,EAAY,IAAI,KAAK,MAArB,EAA6B,GAA7B,EAAkC;AAChC,EAAA,gBAAM,KAAK,CAAL,CAAN;AACA,EAAA,cAAI,KAAK,QAAL,KAAkB,OAAO,SAA7B,EAAwC;AACtC,EAAA,mBAAO,GAAP,EAAY,OAAZ,GAAsB,OAAO,SAA7B;AACD,EAAA,WAFD,MAEO;AACL,EAAA,mBAAO,GAAP,EAAY,OAAZ,GAAsB,OAAO,GAAP,EAAY,OAAZ,IAAuB,OAAO,GAAP,EAAY,MAAZ,IAAsB,KAAK,QAAlD,CAAtB;AACD,EAAA;AACD,EAAA,wBAAc,IAAd,CAAmB,OAAO,GAAP,CAAnB;AACD,EAAA;AACF,EAAA;AACD,EAAA,UAAI,KAAK,gBAAL,KAA0B,YAA9B,EAA4C;AAC1C,EAAA,eAAO,KAAK,aAAL,EAAP;AACD,EAAA,OAFD,MAEO;AACL,EAAA,eAAO,EAAP;AACD,EAAA;AACF,EAAA,KA7f2B;AA8f5B,EAAA,iBAAa,SAAS,WAAT,CAAqB,QAArB,EAA+B;AAC1C,EAAA,UAAI,aAAa,IAAjB,EAAuB;AACrB,EAAA,eAAO,KAAK,UAAZ;AACD,EAAA,OAFD,MAEO,IAAI,CAAC,MAAM,UAAN,CAAiB,QAAjB,CAAL,EAAiC;AACtC,EAAA,cAAM,IAAI,KAAJ,CAAU,8BAAV,CAAN;AACD,EAAA,OAFM,MAEA;AACL,EAAA,aAAK,UAAL,GAAkB,QAAlB;AACD,EAAA;AACF,EAAA,KAtgB2B;AAugB5B,EAAA,gBAAY,SAAS,UAAT,CAAoB,YAApB,EAAkC,MAAlC,EAA0C;AACpD,EAAA,qBAAe,gBAAgB,EAA/B;AACA,EAAA,eAAS,CAAC,CAAC,MAAX;AACA,EAAA,UAAI,CAAC,MAAM,QAAN,CAAe,YAAf,CAAL,EAAmC;AACjC,EAAA,cAAM,IAAI,KAAJ,CAAU,iCAAV,CAAN;AACD,EAAA;;AAED,EAAA,UAAI,mBAAmB,YAAvB,EAAqC;AACnC,EAAA,aAAK,eAAL,GAAuB,aAAa,aAApC;AACD,EAAA,OAFD,MAEO,IAAI,MAAJ,EAAY;AACjB,EAAA,aAAK,eAAL,GAAuB,SAAS,aAAhC;AACD,EAAA;;AAED,EAAA,WAAK,QAAL,GAAgB,KAAK,eAAL,GAAuB,KAAK,IAA5C;;AAEA,EAAA,UAAI,cAAc,YAAlB,EAAgC;AAC9B,EAAA,aAAK,UAAL,GAAkB,CAAC,CAAC,aAAa,QAAjC;AACD,EAAA,OAFD,MAEO,IAAI,MAAJ,EAAY;AACjB,EAAA,aAAK,UAAL,GAAkB,SAAS,QAA3B;AACD,EAAA;;AAED,EAAA,UAAI,oBAAoB,YAAxB,EAAsC;AACpC,EAAA,aAAK,iBAAL,CAAuB,aAAa,cAApC,EAAoD,KAApD;AACD,EAAA,OAFD,MAEO,IAAI,MAAJ,EAAY;AACjB,EAAA,aAAK,iBAAL,CAAuB,SAAS,cAAhC,EAAgD,KAAhD;AACD,EAAA;;AAED,EAAA,UAAI,iBAAiB,YAArB,EAAmC;AACjC,EAAA,aAAK,cAAL,CAAoB,aAAa,WAAjC;AACD,EAAA,OAFD,MAEO,IAAI,MAAJ,EAAY;AACjB,EAAA,aAAK,cAAL,CAAoB,SAAS,WAA7B;AACD,EAAA;;AAED,EAAA,UAAI,YAAY,YAAhB,EAA8B;AAC5B,EAAA,aAAK,SAAL,CAAe,aAAa,MAA5B;AACD,EAAA,OAFD,MAEO,IAAI,MAAJ,EAAY;AACjB,EAAA,aAAK,SAAL,CAAe,SAAS,MAAxB;AACD,EAAA;;AAED,EAAA,UAAI,oBAAoB,YAAxB,EAAsC;AACpC,EAAA,aAAK,gBAAL,GAAwB,CAAC,CAAC,aAAa,cAAvC;AACD,EAAA,OAFD,MAEO,IAAI,MAAJ,EAAY;AACjB,EAAA,aAAK,gBAAL,GAAwB,SAAS,cAAjC;AACD,EAAA;;AAED,EAAA,UAAI,mBAAmB,YAAvB,EAAqC;AACnC,EAAA,aAAK,eAAL,GAAuB,CAAC,CAAC,aAAa,aAAtC;AACD,EAAA,OAFD,MAEO,IAAI,MAAJ,EAAY;AACjB,EAAA,aAAK,eAAL,GAAuB,SAAS,aAAhC;AACD,EAAA;;AAED,EAAA,UAAI,cAAc,YAAlB,EAAgC;AAC9B,EAAA,aAAK,WAAL,CAAiB,aAAa,QAA9B;AACD,EAAA,OAFD,MAEO,IAAI,MAAJ,EAAY;AACjB,EAAA,aAAK,WAAL,CAAiB,SAAS,QAA1B;AACD,EAAA;;AAED,EAAA,UAAI,wBAAwB,YAA5B,EAA0C;AACxC,EAAA,aAAK,qBAAL,CAA2B,aAAa,kBAAxC;AACD,EAAA,OAFD,MAEO,IAAI,MAAJ,EAAY;AACjB,EAAA,aAAK,qBAAL,CAA2B,SAAS,kBAApC;AACD,EAAA;;AAED,EAAA,UAAI,cAAc,YAAlB,EAAgC;AAC9B,EAAA,aAAK,WAAL,CAAiB,aAAa,QAA9B;AACD,EAAA,OAFD,MAEO,IAAI,MAAJ,EAAY;AACjB,EAAA,aAAK,WAAL,CAAiB,SAAS,QAA1B;AACD,EAAA;;AAED,EAAA,UAAI,iBAAiB,YAAjB,IAAiC,iBAAiB,YAAtD,EAAoE;AAClE,EAAA,aAAK,cAAL,CAAoB,aAAa,WAAb,IAA4B,SAAS,WAAzD,EAAsE,aAAa,WAAb,IAA4B,SAAS,WAA3G;AACD,EAAA,OAFD,MAEO,IAAI,MAAJ,EAAY;AACjB,EAAA,aAAK,cAAL,CAAoB,SAAS,WAA7B,EAA0C,SAAS,WAAnD;AACD,EAAA;AACF,EAAA,KAjlB2B;AAklB5B,EAAA,oBAAgB,SAAS,cAAT,CAAwB,WAAxB,EAAqC;AACnD,EAAA,UAAI,gBAAgB,IAApB,EAA0B;AACxB,EAAA,eAAO,KAAK,aAAZ;AACD,EAAA,OAFD,MAEO,IAAI,CAAC,MAAM,QAAN,CAAe,WAAf,CAAL,EAAkC;AACvC,EAAA,cAAM,IAAI,KAAJ,CAAU,+BAAV,CAAN;AACD,EAAA,OAFM,MAEA,IAAI,cAAc,CAAlB,EAAqB;AAC1B,EAAA,cAAM,IAAI,KAAJ,CAAU,wCAAV,CAAN;AACD,EAAA,OAFM,MAEA;AACL,EAAA,aAAK,aAAL,GAAqB,WAArB;AACD,EAAA;AACD,EAAA,oBAAc,KAAK,eAAnB;AACA,EAAA,UAAI,KAAK,gBAAL,KAA0B,YAA9B,EAA4C;AAC1C,EAAA,SAAC,UAAU,IAAV,EAAgB;AACf,EAAA,eAAK,eAAL,GAAuB,YAAY,YAAY;AAC7C,EAAA,iBAAK,aAAL;AACD,EAAA,WAFsB,EAEpB,KAAK,aAFe,CAAvB;AAGD,EAAA,SAJD,EAIG,IAJH;AAKD,EAAA,OAND,MAMO;AACL,EAAA,eAAO,KAAK,eAAZ;AACD,EAAA;AACF,EAAA,KAtmB2B;AAumB5B,EAAA,oBAAgB,SAAS,cAAT,CAAwB,WAAxB,EAAqC,WAArC,EAAkD;AAChE,EAAA,UAAI,CAAC,MAAM,QAAN,CAAe,WAAf,CAAL,EAAkC;AAChC,EAAA,cAAM,IAAI,KAAJ,CAAU,+BAAV,CAAN;AACD,EAAA,OAFD,MAEO,IAAI,gBAAgB,QAAhB,IAA4B,gBAAgB,cAA5C,IAA8D,gBAAgB,gBAAlF,EAAoG;AACzG,EAAA,cAAM,IAAI,KAAJ,CAAU,mEAAV,CAAN;AACD,EAAA;;AAED,EAAA,UAAI,cAAc,SAAlB;AACA,EAAA,UAAI,WAAW,MAAf;AACA,EAAA,UAAI,iBAAiB,KAArB;AACA,EAAA,UAAI,QAAQ,EAAZ;;AAEA,EAAA,eAAS,IAAT,CAAc,WAAd,EAA2B,QAA3B,EAAqC;AACnC,EAAA,YAAI,OAAO,KAAK,IAAL,EAAX;AACA,EAAA,YAAI,SAAS,KAAK,MAAlB;AACA,EAAA,YAAI,MAAJ,EAAY;AACV,EAAA,cAAI,OAAO,KAAK,CAAhB;AACA,EAAA,cAAI,mBAAmB,MAAM,QAAN,CAAe,QAAf,CAAvB;AACA,EAAA,eAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,MAApB,EAA4B,GAA5B,EAAiC;AAC/B,EAAA,mBAAO,KAAK,CAAL,CAAP;AACA,EAAA,gBAAI,WAAJ,EAAiB;AACf,EAAA,kBAAI,WAAW,cAAc,OAAd,CAAsB,KAAK,QAAL,GAAgB,QAAhB,GAA2B,IAAjD,CAAf;AACA,EAAA,kBAAI,QAAJ,EAAc;AACZ,EAAA,sBAAM,IAAN,IAAc,MAAM,QAAN,CAAe,QAAf,CAAd;AACD,EAAA;AACF,EAAA,aALD,MAKO,IAAI,gBAAJ,EAAsB;AAC3B,EAAA,oBAAM,IAAN,IAAc,SAAS,IAAT,CAAd;AACD,EAAA;AACD,EAAA,iBAAK,MAAL,CAAY,IAAZ;AACD,EAAA;AACD,EAAA,2BAAiB,IAAjB;AACD,EAAA;AACF,EAAA;;AAED,EAAA,UAAI,CAAC,KAAK,cAAV,EAA0B;AACxB,EAAA,aAAK,IAAL,CAAU,IAAV,EAAgB,WAAhB,EAA6B,QAA7B;AACD,EAAA;;AAED,EAAA,WAAK,aAAL,GAAqB,WAArB;;AAEA,EAAA,UAAI,WAAJ,EAAiB;AACf,EAAA,YAAI,CAAC,MAAM,QAAN,CAAe,WAAf,CAAL,EAAkC;AAChC,EAAA,gBAAM,IAAI,KAAJ,CAAU,gCAAV,CAAN;AACD,EAAA,SAFD,MAEO,IAAI,EAAE,aAAa,WAAf,KAA+B,OAAO,YAAY,OAAnB,KAA+B,UAAlE,EAA8E;AACnF,EAAA,gBAAM,IAAI,KAAJ,CAAU,mDAAV,CAAN;AACD,EAAA,SAFM,MAEA,IAAI,EAAE,aAAa,WAAf,KAA+B,OAAO,YAAY,OAAnB,KAA+B,UAAlE,EAA8E;AACnF,EAAA,gBAAM,IAAI,KAAJ,CAAU,4CAAV,CAAN;AACD,EAAA,SAFM,MAEA,IAAI,EAAE,gBAAgB,WAAlB,KAAkC,OAAO,YAAY,UAAnB,KAAkC,UAAxE,EAAoF;AACzF,EAAA,gBAAM,IAAI,KAAJ,CAAU,+CAAV,CAAN;AACD,EAAA;AACD,EAAA,oBAAY,SAAS,SAAT,GAAqB;AAC/B,EAAA,iBAAO,WAAP;AACD,EAAA,SAFD;AAGD,EAAA,OAbD,MAaO,IAAI,KAAK,aAAL,KAAuB,cAA3B,EAA2C;AAChD,EAAA,YAAI;AACF,EAAA,uBAAa,OAAb,CAAqB,cAArB,EAAqC,cAArC;AACA,EAAA,uBAAa,UAAb,CAAwB,cAAxB;AACA,EAAA,sBAAY,SAAS,SAAT,GAAqB;AAC/B,EAAA,mBAAO,YAAP;AACD,EAAA,WAFD;AAGD,EAAA,SAND,CAME,OAAO,CAAP,EAAU;AACV,EAAA,sBAAY,IAAZ;AACA,EAAA,eAAK,aAAL,GAAqB,QAArB;AACD,EAAA;AACF,EAAA,OAXM,MAWA,IAAI,KAAK,aAAL,KAAuB,gBAA3B,EAA6C;AAClD,EAAA,YAAI;AACF,EAAA,yBAAe,OAAf,CAAuB,cAAvB,EAAuC,cAAvC;AACA,EAAA,yBAAe,UAAf,CAA0B,cAA1B;AACA,EAAA,sBAAY,SAAS,SAAT,GAAqB;AAC/B,EAAA,mBAAO,cAAP;AACD,EAAA,WAFD;AAGD,EAAA,SAND,CAME,OAAO,CAAP,EAAU;AACV,EAAA,sBAAY,IAAZ;AACA,EAAA,eAAK,aAAL,GAAqB,QAArB;AACD,EAAA;AACF,EAAA,OAXM,MAWA;AACL,EAAA,oBAAY,IAAZ;AACA,EAAA,aAAK,aAAL,GAAqB,QAArB;AACD,EAAA;;AAED,EAAA,UAAI,KAAK,cAAT,EAAyB;AACvB,EAAA,aAAK,IAAL,CAAU,IAAV,EAAgB,SAAhB,EAA2B,MAA3B;AACD,EAAA;;AAED,EAAA,UAAI,cAAJ,EAAoB;AAClB,EAAA,YAAI,OAAO,KAAK,CAAhB;AACA,EAAA,aAAK,IAAI,GAAT,IAAgB,KAAhB,EAAuB;AACrB,EAAA,iBAAO,MAAM,GAAN,CAAP;AACA,EAAA,eAAK,GAAL,CAAS,GAAT,EAAc,KAAK,KAAnB,EAA0B;AACxB,EAAA,qBAAS,KAAK,OADU;AAExB,EAAA,sBAAU,KAAK,QAFS;AAGxB,EAAA,qBAAS,KAAK;AAHU,EAAA,WAA1B;AAKD,EAAA;AACF,EAAA;AACF,EAAA,KAtsB2B;AAusB5B,EAAA,WAAO,SAAS,KAAT,CAAe,GAAf,EAAoB,OAApB,EAA6B;AAClC,EAAA,UAAI,SAAS,IAAb;;AAEA,EAAA,UAAI,GAAJ,EAAS;AACP,EAAA,YAAI,MAAM,KAAK,GAAL,CAAS,GAAT,EAAc;AACtB,EAAA,oBAAU,SAAS,QAAT,CAAkB,CAAlB,EAAqB,CAArB,EAAwB;AAChC,EAAA,mBAAO,OAAO,GAAP,CAAW,CAAX,EAAc,CAAd,CAAP;AACD,EAAA;AAHqB,EAAA,SAAd,CAAV;AAKA,EAAA,YAAI,GAAJ,EAAS;AACP,EAAA,eAAK,GAAL,CAAS,GAAT,EAAc,GAAd,EAAmB,OAAnB;AACD,EAAA;AACF,EAAA,OATD,MASO;AACL,EAAA,YAAI,OAAO,KAAK,IAAL,EAAX;AACA,EAAA,aAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,KAAK,MAAzB,EAAiC,GAAjC,EAAsC;AACpC,EAAA,eAAK,KAAL,CAAW,KAAK,CAAL,CAAX,EAAoB,OAApB;AACD,EAAA;AACF,EAAA;AACF,EAAA,KAztB2B;AA0tB5B,EAAA,YAAQ,SAAS,MAAT,GAAkB;AACxB,EAAA,UAAI,OAAO,KAAK,IAAL,EAAX;AACA,EAAA,UAAI,QAAQ,EAAZ;AACA,EAAA,WAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,KAAK,MAAzB,EAAiC,GAAjC,EAAsC;AACpC,EAAA,cAAM,IAAN,CAAW,KAAK,GAAL,CAAS,KAAK,CAAL,CAAT,CAAX;AACD,EAAA;AACD,EAAA,aAAO,KAAP;AACD,EAAA;AAjuB2B,EAAA,GAA9B;;AAouBA,EAAA,QAAM,cAAN,GAAuB,IAAvB;AACA,EAAA,QAAM,UAAN,CAAiB,OAAjB,EAA0B,IAA1B;AACA,EAAA,QAAM,cAAN,GAAuB,KAAvB;;AAEA,EAAA,SAAO,KAAP;AACD,EAAA;;AAED,EAAA,SAAS,YAAT,CAAsB,OAAtB,EAA+B,OAA/B,EAAwC;AACtC,EAAA,SAAO,YAAY,OAAZ,EAAqB,OAArB,CAAP;AACD,EAAA;;AAED,EAAA,aAAa,WAAb,GAA2B,WAA3B;AACA,EAAA,aAAa,QAAb,GAAwB,QAAxB;;AAEA,EAAA,aAAa,IAAb,GAAoB,YAAY;AAC9B,EAAA,MAAI,OAAO,MAAM,MAAN,CAAX;AACA,EAAA,MAAI,OAAO;AACT,EAAA,UAAM,KAAK,MADF;AAET,EAAA,YAAQ;AAFC,EAAA,GAAX;AAIA,EAAA,OAAK,IAAI,GAAT,IAAgB,QAAhB,EAA0B;AACxB,EAAA,QAAI,SAAS,cAAT,CAAwB,GAAxB,CAAJ,EAAkC;AAChC,EAAA,WAAK,GAAL,IAAY,SAAS,GAAT,CAAZ;AACD,EAAA;AACF,EAAA;AACD,EAAA,OAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,KAAK,MAAzB,EAAiC,GAAjC,EAAsC;AACpC,EAAA,QAAI,MAAM,KAAK,CAAL,CAAV;AACA,EAAA,SAAK,MAAL,CAAY,GAAZ,IAAmB,OAAO,GAAP,EAAY,IAAZ,EAAnB;AACD,EAAA;AACD,EAAA,SAAO,IAAP;AACD,EAAA,CAhBD;;AAkBA,EAAA,aAAa,GAAb,GAAmB,UAAU,OAAV,EAAmB;AACpC,EAAA,SAAO,OAAO,OAAP,CAAP;AACD,EAAA,CAFD;AAGA,EAAA,aAAa,MAAb,GAAsB,YAAY;AAChC,EAAA,SAAO,QAAQ,MAAR,CAAP;AACD,EAAA,CAFD;AAGA,EAAA,aAAa,IAAb,GAAoB,YAAY;AAC9B,EAAA,SAAO,MAAM,MAAN,CAAP;AACD,EAAA,CAFD;AAGA,EAAA,aAAa,OAAb,GAAuB,UAAU,OAAV,EAAmB;AACxC,EAAA,MAAI,OAAO,OAAP,CAAJ,EAAqB;AACnB,EAAA,WAAO,OAAP,EAAgB,OAAhB;AACA,EAAA,WAAO,OAAO,OAAP,CAAP;AACD,EAAA;AACF,EAAA,CALD;AAMA,EAAA,aAAa,UAAb,GAA0B,YAAY;AACpC,EAAA,OAAK,IAAI,OAAT,IAAoB,MAApB,EAA4B;AAC1B,EAAA,WAAO,OAAP,EAAgB,OAAhB;AACD,EAAA;AACD,EAAA,WAAS,EAAT;AACD,EAAA,CALD;AAMA,EAAA,aAAa,QAAb,GAAwB,YAAY;AAClC,EAAA,OAAK,IAAI,OAAT,IAAoB,MAApB,EAA4B;AAC1B,EAAA,WAAO,OAAP,EAAgB,SAAhB;AACD,EAAA;AACF,EAAA,CAJD;AAKA,EAAA,aAAa,oBAAb,GAAoC,YAAY;AAC9C,EAAA,MAAI,UAAU,EAAd;AACA,EAAA,OAAK,IAAI,OAAT,IAAoB,MAApB,EAA4B;AAC1B,EAAA,YAAQ,OAAR,IAAmB,OAAO,OAAP,EAAgB,aAAhB,EAAnB;AACD,EAAA;AACD,EAAA,SAAO,OAAP;AACD,EAAA,CAND;AAOA,EAAA,aAAa,SAAb,GAAyB,YAAY;AACnC,EAAA,OAAK,IAAI,OAAT,IAAoB,MAApB,EAA4B;AAC1B,EAAA,WAAO,OAAP,EAAgB,UAAhB,GAA6B,KAA7B;AACD,EAAA;AACF,EAAA,CAJD;AAKA,EAAA,aAAa,UAAb,GAA0B,YAAY;AACpC,EAAA,OAAK,IAAI,OAAT,IAAoB,MAApB,EAA4B;AAC1B,EAAA,WAAO,OAAP,EAAgB,UAAhB,GAA6B,IAA7B;AACD,EAAA;AACF,EAAA,CAJD;AAKA,EAAA,aAAa,QAAb,GAAwB,YAAY;AAClC,EAAA,OAAK,IAAI,OAAT,IAAoB,MAApB,EAA4B;AAC1B,EAAA,WAAO,OAAP,EAAgB,KAAhB;AACD,EAAA;AACF,EAAA,CAJD;;AAMA,EAAA,aAAa,KAAb,GAAqB,KAArB;AACA,EAAA,aAAa,UAAb,GAA0B,UAA1B;;EChjCA,aAAa,KAAb,CAAmB,MAAnB,GAA4B,QAAQ,MAApC;AACA,EAAA,aAAa,KAAb,CAAmB,QAAnB,GAA8B,QAAQ,QAAtC;AACA,EAAA,aAAa,KAAb,CAAmB,QAAnB,GAA8B,QAAQ,QAAtC;;AAEA,EAAA,SAAS,kBAAT,GAA+B;AAC7B,EAAA,OAAK,IAAL,GAAY,YAAY;AAAE,EAAA,WAAO,aAAa,UAApB;AAAgC,EAAA,GAA1D;AACD,EAAA;;AAED,EAAA,SAAS,oBAAT,GAAiC;AAC/B,EAAA,OAAK,QAAL,GAAgB,aAAa,QAA7B;AACA,EAAA,OAAK,QAAL,CAAc,aAAd,GAA8B,uBAA9B;;AAEA,EAAA,OAAK,IAAL,GAAY,CAAC,IAAD,EAAO,UAAU,EAAV,EAAc;AAC/B,EAAA,iBAAa,KAAb,CAAmB,OAAnB,GAA6B,EAA7B;AACA,EAAA,WAAO,YAAP;AACD,EAAA,GAHW,CAAZ;AAID,EAAA;;AAED,EAAA,QAAQ,MAAR,CAAe,eAAf,EAAgC,EAAhC,EACG,QADH,CACY,YADZ,EAC0B,kBAD1B,EAEG,QAFH,CAEY,cAFZ,EAE4B,oBAF5B;;AAIA,cAAe,eAAf;;;;"}