// ==UserScript==
// @name campus_v2
// @namespace https://greasyfork.org/zh-CN/scripts/483291-campus-v2
// @version 2024-12-12
// @author cmsang
// @description LTDX网课助手
// @icon https://vitejs.dev/logo.svg
// @match *://*campus.chinaunicom.cn/curriculum.html*
// @match *://*campus.chinaunicom.cn/*
// @match *://m.campus.chinaunicom.cn*
// @match *://party.chinaunicom.cn/*ltxfStudyCenterDetailPage.html*
// @require https://npm.elemecdn.com/[email protected]/umd/react.production.min.js
// @require https://npm.elemecdn.com/[email protected]/umd/react-dom.production.min.js
// @grant GM_addStyle
// ==/UserScript==
(t=>{if(typeof GM_addStyle=="function"){GM_addStyle(t);return}const e=document.createElement("style");e.textContent=t,document.head.append(e)})(" .sticky-text{position:sticky;bottom:0;background:#ebffd8;height:30px;z-index:1999;display:inline-flex} ");
(function (React, ReactDOM__default) {
'use strict';
function _interopNamespaceDefault(e) {
const n = Object.create(null, { [Symbol.toStringTag]: { value: 'Module' } });
if (e) {
for (const k in e) {
if (k !== 'default') {
const d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: () => e[k]
});
}
}
}
n.default = e;
return Object.freeze(n);
}
const React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
const ReactDOM__default__namespace = /*#__PURE__*/_interopNamespaceDefault(ReactDOM__default);
var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
function getDefaultExportFromCjs(x) {
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
}
function getAugmentedNamespace(n2) {
if (n2.__esModule)
return n2;
var f2 = n2.default;
if (typeof f2 == "function") {
var a = function a2() {
if (this instanceof a2) {
return Reflect.construct(f2, arguments, this.constructor);
}
return f2.apply(this, arguments);
};
a.prototype = f2.prototype;
} else
a = {};
Object.defineProperty(a, "__esModule", { value: true });
Object.keys(n2).forEach(function(k2) {
var d2 = Object.getOwnPropertyDescriptor(n2, k2);
Object.defineProperty(a, k2, d2.get ? d2 : {
enumerable: true,
get: function() {
return n2[k2];
}
});
});
return a;
}
var jsxRuntime = { exports: {} };
var reactJsxRuntime_production_min = {};
/**
* @license React
* react-jsx-runtime.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
var f$1 = React, k$1 = Symbol.for("react.element"), l$1 = Symbol.for("react.fragment"), m$2 = Object.prototype.hasOwnProperty, n$1 = f$1.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, p$1 = { key: true, ref: true, __self: true, __source: true };
function q$1(c2, a, g2) {
var b2, d2 = {}, e2 = null, h2 = null;
void 0 !== g2 && (e2 = "" + g2);
void 0 !== a.key && (e2 = "" + a.key);
void 0 !== a.ref && (h2 = a.ref);
for (b2 in a)
m$2.call(a, b2) && !p$1.hasOwnProperty(b2) && (d2[b2] = a[b2]);
if (c2 && c2.defaultProps)
for (b2 in a = c2.defaultProps, a)
void 0 === d2[b2] && (d2[b2] = a[b2]);
return { $$typeof: k$1, type: c2, key: e2, ref: h2, props: d2, _owner: n$1.current };
}
reactJsxRuntime_production_min.Fragment = l$1;
reactJsxRuntime_production_min.jsx = q$1;
reactJsxRuntime_production_min.jsxs = q$1;
{
jsxRuntime.exports = reactJsxRuntime_production_min;
}
var jsxRuntimeExports = jsxRuntime.exports;
var client = {};
var m$1 = ReactDOM__default;
{
client.createRoot = m$1.createRoot;
client.hydrateRoot = m$1.hydrateRoot;
}
function bind(fn, thisArg) {
return function wrap() {
return fn.apply(thisArg, arguments);
};
}
const { toString } = Object.prototype;
const { getPrototypeOf } = Object;
const kindOf = ((cache) => (thing) => {
const str = toString.call(thing);
return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());
})(/* @__PURE__ */ Object.create(null));
const kindOfTest = (type4) => {
type4 = type4.toLowerCase();
return (thing) => kindOf(thing) === type4;
};
const typeOfTest = (type4) => (thing) => typeof thing === type4;
const { isArray } = Array;
const isUndefined = typeOfTest("undefined");
function isBuffer(val) {
return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);
}
const isArrayBuffer = kindOfTest("ArrayBuffer");
function isArrayBufferView(val) {
let result;
if (typeof ArrayBuffer !== "undefined" && ArrayBuffer.isView) {
result = ArrayBuffer.isView(val);
} else {
result = val && val.buffer && isArrayBuffer(val.buffer);
}
return result;
}
const isString$1 = typeOfTest("string");
const isFunction = typeOfTest("function");
const isNumber = typeOfTest("number");
const isObject$1 = (thing) => thing !== null && typeof thing === "object";
const isBoolean = (thing) => thing === true || thing === false;
const isPlainObject = (val) => {
if (kindOf(val) !== "object") {
return false;
}
const prototype2 = getPrototypeOf(val);
return (prototype2 === null || prototype2 === Object.prototype || Object.getPrototypeOf(prototype2) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);
};
const isDate = kindOfTest("Date");
const isFile = kindOfTest("File");
const isBlob = kindOfTest("Blob");
const isFileList = kindOfTest("FileList");
const isStream = (val) => isObject$1(val) && isFunction(val.pipe);
const isFormData = (thing) => {
let kind;
return thing && (typeof FormData === "function" && thing instanceof FormData || isFunction(thing.append) && ((kind = kindOf(thing)) === "formdata" || // detect form-data instance
kind === "object" && isFunction(thing.toString) && thing.toString() === "[object FormData]"));
};
const isURLSearchParams = kindOfTest("URLSearchParams");
const trim$1 = (str) => str.trim ? str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "");
function forEach(obj, fn, { allOwnKeys = false } = {}) {
if (obj === null || typeof obj === "undefined") {
return;
}
let i;
let l2;
if (typeof obj !== "object") {
obj = [obj];
}
if (isArray(obj)) {
for (i = 0, l2 = obj.length; i < l2; i++) {
fn.call(null, obj[i], i, obj);
}
} else {
const keys2 = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);
const len = keys2.length;
let key;
for (i = 0; i < len; i++) {
key = keys2[i];
fn.call(null, obj[key], key, obj);
}
}
}
function findKey(obj, key) {
key = key.toLowerCase();
const keys2 = Object.keys(obj);
let i = keys2.length;
let _key;
while (i-- > 0) {
_key = keys2[i];
if (key === _key.toLowerCase()) {
return _key;
}
}
return null;
}
const _global = (() => {
if (typeof globalThis !== "undefined")
return globalThis;
return typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : global;
})();
const isContextDefined = (context) => !isUndefined(context) && context !== _global;
function merge$2() {
const { caseless } = isContextDefined(this) && this || {};
const result = {};
const assignValue = (val, key) => {
const targetKey = caseless && findKey(result, key) || key;
if (isPlainObject(result[targetKey]) && isPlainObject(val)) {
result[targetKey] = merge$2(result[targetKey], val);
} else if (isPlainObject(val)) {
result[targetKey] = merge$2({}, val);
} else if (isArray(val)) {
result[targetKey] = val.slice();
} else {
result[targetKey] = val;
}
};
for (let i = 0, l2 = arguments.length; i < l2; i++) {
arguments[i] && forEach(arguments[i], assignValue);
}
return result;
}
const extend = (a, b2, thisArg, { allOwnKeys } = {}) => {
forEach(b2, (val, key) => {
if (thisArg && isFunction(val)) {
a[key] = bind(val, thisArg);
} else {
a[key] = val;
}
}, { allOwnKeys });
return a;
};
const stripBOM = (content) => {
if (content.charCodeAt(0) === 65279) {
content = content.slice(1);
}
return content;
};
const inherits = (constructor, superConstructor, props, descriptors2) => {
constructor.prototype = Object.create(superConstructor.prototype, descriptors2);
constructor.prototype.constructor = constructor;
Object.defineProperty(constructor, "super", {
value: superConstructor.prototype
});
props && Object.assign(constructor.prototype, props);
};
const toFlatObject = (sourceObj, destObj, filter2, propFilter) => {
let props;
let i;
let prop;
const merged = {};
destObj = destObj || {};
if (sourceObj == null)
return destObj;
do {
props = Object.getOwnPropertyNames(sourceObj);
i = props.length;
while (i-- > 0) {
prop = props[i];
if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {
destObj[prop] = sourceObj[prop];
merged[prop] = true;
}
}
sourceObj = filter2 !== false && getPrototypeOf(sourceObj);
} while (sourceObj && (!filter2 || filter2(sourceObj, destObj)) && sourceObj !== Object.prototype);
return destObj;
};
const endsWith = (str, searchString, position2) => {
str = String(str);
if (position2 === void 0 || position2 > str.length) {
position2 = str.length;
}
position2 -= searchString.length;
const lastIndex = str.indexOf(searchString, position2);
return lastIndex !== -1 && lastIndex === position2;
};
const toArray$4 = (thing) => {
if (!thing)
return null;
if (isArray(thing))
return thing;
let i = thing.length;
if (!isNumber(i))
return null;
const arr = new Array(i);
while (i-- > 0) {
arr[i] = thing[i];
}
return arr;
};
const isTypedArray = ((TypedArray) => {
return (thing) => {
return TypedArray && thing instanceof TypedArray;
};
})(typeof Uint8Array !== "undefined" && getPrototypeOf(Uint8Array));
const forEachEntry = (obj, fn) => {
const generator = obj && obj[Symbol.iterator];
const iterator = generator.call(obj);
let result;
while ((result = iterator.next()) && !result.done) {
const pair = result.value;
fn.call(obj, pair[0], pair[1]);
}
};
const matchAll = (regExp, str) => {
let matches;
const arr = [];
while ((matches = regExp.exec(str)) !== null) {
arr.push(matches);
}
return arr;
};
const isHTMLForm = kindOfTest("HTMLFormElement");
const toCamelCase = (str) => {
return str.toLowerCase().replace(
/[-_\s]([a-z\d])(\w*)/g,
function replacer(m2, p1, p2) {
return p1.toUpperCase() + p2;
}
);
};
const hasOwnProperty = (({ hasOwnProperty: hasOwnProperty2 }) => (obj, prop) => hasOwnProperty2.call(obj, prop))(Object.prototype);
const isRegExp = kindOfTest("RegExp");
const reduceDescriptors = (obj, reducer) => {
const descriptors2 = Object.getOwnPropertyDescriptors(obj);
const reducedDescriptors = {};
forEach(descriptors2, (descriptor, name) => {
let ret;
if ((ret = reducer(descriptor, name, obj)) !== false) {
reducedDescriptors[name] = ret || descriptor;
}
});
Object.defineProperties(obj, reducedDescriptors);
};
const freezeMethods = (obj) => {
reduceDescriptors(obj, (descriptor, name) => {
if (isFunction(obj) && ["arguments", "caller", "callee"].indexOf(name) !== -1) {
return false;
}
const value = obj[name];
if (!isFunction(value))
return;
descriptor.enumerable = false;
if ("writable" in descriptor) {
descriptor.writable = false;
return;
}
if (!descriptor.set) {
descriptor.set = () => {
throw Error("Can not rewrite read-only method '" + name + "'");
};
}
});
};
const toObjectSet = (arrayOrString, delimiter2) => {
const obj = {};
const define = (arr) => {
arr.forEach((value) => {
obj[value] = true;
});
};
isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter2));
return obj;
};
const noop$2 = () => {
};
const toFiniteNumber = (value, defaultValue) => {
value = +value;
return Number.isFinite(value) ? value : defaultValue;
};
const ALPHA = "abcdefghijklmnopqrstuvwxyz";
const DIGIT = "0123456789";
const ALPHABET = {
DIGIT,
ALPHA,
ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT
};
const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {
let str = "";
const { length: length2 } = alphabet;
while (size--) {
str += alphabet[Math.random() * length2 | 0];
}
return str;
};
function isSpecCompliantForm(thing) {
return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === "FormData" && thing[Symbol.iterator]);
}
const toJSONObject = (obj) => {
const stack = new Array(10);
const visit = (source, i) => {
if (isObject$1(source)) {
if (stack.indexOf(source) >= 0) {
return;
}
if (!("toJSON" in source)) {
stack[i] = source;
const target = isArray(source) ? [] : {};
forEach(source, (value, key) => {
const reducedValue = visit(value, i + 1);
!isUndefined(reducedValue) && (target[key] = reducedValue);
});
stack[i] = void 0;
return target;
}
}
return source;
};
return visit(obj, 0);
};
const isAsyncFn = kindOfTest("AsyncFunction");
const isThenable = (thing) => thing && (isObject$1(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);
const utils$1 = {
isArray,
isArrayBuffer,
isBuffer,
isFormData,
isArrayBufferView,
isString: isString$1,
isNumber,
isBoolean,
isObject: isObject$1,
isPlainObject,
isUndefined,
isDate,
isFile,
isBlob,
isRegExp,
isFunction,
isStream,
isURLSearchParams,
isTypedArray,
isFileList,
forEach,
merge: merge$2,
extend,
trim: trim$1,
stripBOM,
inherits,
toFlatObject,
kindOf,
kindOfTest,
endsWith,
toArray: toArray$4,
forEachEntry,
matchAll,
isHTMLForm,
hasOwnProperty,
hasOwnProp: hasOwnProperty,
// an alias to avoid ESLint no-prototype-builtins detection
reduceDescriptors,
freezeMethods,
toObjectSet,
toCamelCase,
noop: noop$2,
toFiniteNumber,
findKey,
global: _global,
isContextDefined,
ALPHABET,
generateString,
isSpecCompliantForm,
toJSONObject,
isAsyncFn,
isThenable
};
function AxiosError(message, code, config, request, response) {
Error.call(this);
if (Error.captureStackTrace) {
Error.captureStackTrace(this, this.constructor);
} else {
this.stack = new Error().stack;
}
this.message = message;
this.name = "AxiosError";
code && (this.code = code);
config && (this.config = config);
request && (this.request = request);
response && (this.response = response);
}
utils$1.inherits(AxiosError, Error, {
toJSON: function toJSON() {
return {
// Standard
message: this.message,
name: this.name,
// Microsoft
description: this.description,
number: this.number,
// Mozilla
fileName: this.fileName,
lineNumber: this.lineNumber,
columnNumber: this.columnNumber,
stack: this.stack,
// Axios
config: utils$1.toJSONObject(this.config),
code: this.code,
status: this.response && this.response.status ? this.response.status : null
};
}
});
const prototype$1 = AxiosError.prototype;
const descriptors = {};
[
"ERR_BAD_OPTION_VALUE",
"ERR_BAD_OPTION",
"ECONNABORTED",
"ETIMEDOUT",
"ERR_NETWORK",
"ERR_FR_TOO_MANY_REDIRECTS",
"ERR_DEPRECATED",
"ERR_BAD_RESPONSE",
"ERR_BAD_REQUEST",
"ERR_CANCELED",
"ERR_NOT_SUPPORT",
"ERR_INVALID_URL"
// eslint-disable-next-line func-names
].forEach((code) => {
descriptors[code] = { value: code };
});
Object.defineProperties(AxiosError, descriptors);
Object.defineProperty(prototype$1, "isAxiosError", { value: true });
AxiosError.from = (error, code, config, request, response, customProps) => {
const axiosError = Object.create(prototype$1);
utils$1.toFlatObject(error, axiosError, function filter2(obj) {
return obj !== Error.prototype;
}, (prop) => {
return prop !== "isAxiosError";
});
AxiosError.call(axiosError, error.message, code, config, request, response);
axiosError.cause = error;
axiosError.name = error.name;
customProps && Object.assign(axiosError, customProps);
return axiosError;
};
const httpAdapter = null;
function isVisitable(thing) {
return utils$1.isPlainObject(thing) || utils$1.isArray(thing);
}
function removeBrackets(key) {
return utils$1.endsWith(key, "[]") ? key.slice(0, -2) : key;
}
function renderKey(path, key, dots) {
if (!path)
return key;
return path.concat(key).map(function each(token2, i) {
token2 = removeBrackets(token2);
return !dots && i ? "[" + token2 + "]" : token2;
}).join(dots ? "." : "");
}
function isFlatArray(arr) {
return utils$1.isArray(arr) && !arr.some(isVisitable);
}
const predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) {
return /^is[A-Z]/.test(prop);
});
function toFormData(obj, formData, options) {
if (!utils$1.isObject(obj)) {
throw new TypeError("target must be an object");
}
formData = formData || new FormData();
options = utils$1.toFlatObject(options, {
metaTokens: true,
dots: false,
indexes: false
}, false, function defined(option, source) {
return !utils$1.isUndefined(source[option]);
});
const metaTokens = options.metaTokens;
const visitor = options.visitor || defaultVisitor;
const dots = options.dots;
const indexes = options.indexes;
const _Blob = options.Blob || typeof Blob !== "undefined" && Blob;
const useBlob = _Blob && utils$1.isSpecCompliantForm(formData);
if (!utils$1.isFunction(visitor)) {
throw new TypeError("visitor must be a function");
}
function convertValue(value) {
if (value === null)
return "";
if (utils$1.isDate(value)) {
return value.toISOString();
}
if (!useBlob && utils$1.isBlob(value)) {
throw new AxiosError("Blob is not supported. Use a Buffer instead.");
}
if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) {
return useBlob && typeof Blob === "function" ? new Blob([value]) : Buffer.from(value);
}
return value;
}
function defaultVisitor(value, key, path) {
let arr = value;
if (value && !path && typeof value === "object") {
if (utils$1.endsWith(key, "{}")) {
key = metaTokens ? key : key.slice(0, -2);
value = JSON.stringify(value);
} else if (utils$1.isArray(value) && isFlatArray(value) || (utils$1.isFileList(value) || utils$1.endsWith(key, "[]")) && (arr = utils$1.toArray(value))) {
key = removeBrackets(key);
arr.forEach(function each(el, index2) {
!(utils$1.isUndefined(el) || el === null) && formData.append(
// eslint-disable-next-line no-nested-ternary
indexes === true ? renderKey([key], index2, dots) : indexes === null ? key : key + "[]",
convertValue(el)
);
});
return false;
}
}
if (isVisitable(value)) {
return true;
}
formData.append(renderKey(path, key, dots), convertValue(value));
return false;
}
const stack = [];
const exposedHelpers = Object.assign(predicates, {
defaultVisitor,
convertValue,
isVisitable
});
function build(value, path) {
if (utils$1.isUndefined(value))
return;
if (stack.indexOf(value) !== -1) {
throw Error("Circular reference detected in " + path.join("."));
}
stack.push(value);
utils$1.forEach(value, function each(el, key) {
const result = !(utils$1.isUndefined(el) || el === null) && visitor.call(
formData,
el,
utils$1.isString(key) ? key.trim() : key,
path,
exposedHelpers
);
if (result === true) {
build(el, path ? path.concat(key) : [key]);
}
});
stack.pop();
}
if (!utils$1.isObject(obj)) {
throw new TypeError("data must be an object");
}
build(obj);
return formData;
}
function encode$1(str) {
const charMap = {
"!": "%21",
"'": "%27",
"(": "%28",
")": "%29",
"~": "%7E",
"%20": "+",
"%00": "\0"
};
return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match2) {
return charMap[match2];
});
}
function AxiosURLSearchParams(params, options) {
this._pairs = [];
params && toFormData(params, this, options);
}
const prototype = AxiosURLSearchParams.prototype;
prototype.append = function append(name, value) {
this._pairs.push([name, value]);
};
prototype.toString = function toString2(encoder) {
const _encode = encoder ? function(value) {
return encoder.call(this, value, encode$1);
} : encode$1;
return this._pairs.map(function each(pair) {
return _encode(pair[0]) + "=" + _encode(pair[1]);
}, "").join("&");
};
function encode(val) {
return encodeURIComponent(val).replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%20/g, "+").replace(/%5B/gi, "[").replace(/%5D/gi, "]");
}
function buildURL(url2, params, options) {
if (!params) {
return url2;
}
const _encode = options && options.encode || encode;
const serializeFn = options && options.serialize;
let serializedParams;
if (serializeFn) {
serializedParams = serializeFn(params, options);
} else {
serializedParams = utils$1.isURLSearchParams(params) ? params.toString() : new AxiosURLSearchParams(params, options).toString(_encode);
}
if (serializedParams) {
const hashmarkIndex = url2.indexOf("#");
if (hashmarkIndex !== -1) {
url2 = url2.slice(0, hashmarkIndex);
}
url2 += (url2.indexOf("?") === -1 ? "?" : "&") + serializedParams;
}
return url2;
}
class InterceptorManager {
constructor() {
this.handlers = [];
}
/**
* Add a new interceptor to the stack
*
* @param {Function} fulfilled The function to handle `then` for a `Promise`
* @param {Function} rejected The function to handle `reject` for a `Promise`
*
* @return {Number} An ID used to remove interceptor later
*/
use(fulfilled, rejected, options) {
this.handlers.push({
fulfilled,
rejected,
synchronous: options ? options.synchronous : false,
runWhen: options ? options.runWhen : null
});
return this.handlers.length - 1;
}
/**
* Remove an interceptor from the stack
*
* @param {Number} id The ID that was returned by `use`
*
* @returns {Boolean} `true` if the interceptor was removed, `false` otherwise
*/
eject(id) {
if (this.handlers[id]) {
this.handlers[id] = null;
}
}
/**
* Clear all interceptors from the stack
*
* @returns {void}
*/
clear() {
if (this.handlers) {
this.handlers = [];
}
}
/**
* Iterate over all the registered interceptors
*
* This method is particularly useful for skipping over any
* interceptors that may have become `null` calling `eject`.
*
* @param {Function} fn The function to call for each interceptor
*
* @returns {void}
*/
forEach(fn) {
utils$1.forEach(this.handlers, function forEachHandler(h2) {
if (h2 !== null) {
fn(h2);
}
});
}
}
const InterceptorManager$1 = InterceptorManager;
const transitionalDefaults = {
silentJSONParsing: true,
forcedJSONParsing: true,
clarifyTimeoutError: false
};
const URLSearchParams$1 = typeof URLSearchParams !== "undefined" ? URLSearchParams : AxiosURLSearchParams;
const FormData$1 = typeof FormData !== "undefined" ? FormData : null;
const Blob$1 = typeof Blob !== "undefined" ? Blob : null;
const platform$1 = {
isBrowser: true,
classes: {
URLSearchParams: URLSearchParams$1,
FormData: FormData$1,
Blob: Blob$1
},
protocols: ["http", "https", "file", "blob", "url", "data"]
};
const hasBrowserEnv = typeof window !== "undefined" && typeof document !== "undefined";
const hasStandardBrowserEnv = ((product) => {
return hasBrowserEnv && ["ReactNative", "NativeScript", "NS"].indexOf(product) < 0;
})(typeof navigator !== "undefined" && navigator.product);
const hasStandardBrowserWebWorkerEnv = (() => {
return typeof WorkerGlobalScope !== "undefined" && // eslint-disable-next-line no-undef
self instanceof WorkerGlobalScope && typeof self.importScripts === "function";
})();
const utils = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
hasBrowserEnv,
hasStandardBrowserEnv,
hasStandardBrowserWebWorkerEnv
}, Symbol.toStringTag, { value: "Module" }));
const platform = {
...utils,
...platform$1
};
function toURLEncodedForm(data, options) {
return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({
visitor: function(value, key, path, helpers) {
if (platform.isNode && utils$1.isBuffer(value)) {
this.append(key, value.toString("base64"));
return false;
}
return helpers.defaultVisitor.apply(this, arguments);
}
}, options));
}
function parsePropPath(name) {
return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map((match2) => {
return match2[0] === "[]" ? "" : match2[1] || match2[0];
});
}
function arrayToObject(arr) {
const obj = {};
const keys2 = Object.keys(arr);
let i;
const len = keys2.length;
let key;
for (i = 0; i < len; i++) {
key = keys2[i];
obj[key] = arr[key];
}
return obj;
}
function formDataToJSON(formData) {
function buildPath(path, value, target, index2) {
let name = path[index2++];
const isNumericKey = Number.isFinite(+name);
const isLast = index2 >= path.length;
name = !name && utils$1.isArray(target) ? target.length : name;
if (isLast) {
if (utils$1.hasOwnProp(target, name)) {
target[name] = [target[name], value];
} else {
target[name] = value;
}
return !isNumericKey;
}
if (!target[name] || !utils$1.isObject(target[name])) {
target[name] = [];
}
const result = buildPath(path, value, target[name], index2);
if (result && utils$1.isArray(target[name])) {
target[name] = arrayToObject(target[name]);
}
return !isNumericKey;
}
if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) {
const obj = {};
utils$1.forEachEntry(formData, (name, value) => {
buildPath(parsePropPath(name), value, obj, 0);
});
return obj;
}
return null;
}
function stringifySafely(rawValue, parser, encoder) {
if (utils$1.isString(rawValue)) {
try {
(parser || JSON.parse)(rawValue);
return utils$1.trim(rawValue);
} catch (e2) {
if (e2.name !== "SyntaxError") {
throw e2;
}
}
}
return (encoder || JSON.stringify)(rawValue);
}
const defaults = {
transitional: transitionalDefaults,
adapter: ["xhr", "http"],
transformRequest: [function transformRequest(data, headers) {
const contentType = headers.getContentType() || "";
const hasJSONContentType = contentType.indexOf("application/json") > -1;
const isObjectPayload = utils$1.isObject(data);
if (isObjectPayload && utils$1.isHTMLForm(data)) {
data = new FormData(data);
}
const isFormData2 = utils$1.isFormData(data);
if (isFormData2) {
if (!hasJSONContentType) {
return data;
}
return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;
}
if (utils$1.isArrayBuffer(data) || utils$1.isBuffer(data) || utils$1.isStream(data) || utils$1.isFile(data) || utils$1.isBlob(data)) {
return data;
}
if (utils$1.isArrayBufferView(data)) {
return data.buffer;
}
if (utils$1.isURLSearchParams(data)) {
headers.setContentType("application/x-www-form-urlencoded;charset=utf-8", false);
return data.toString();
}
let isFileList2;
if (isObjectPayload) {
if (contentType.indexOf("application/x-www-form-urlencoded") > -1) {
return toURLEncodedForm(data, this.formSerializer).toString();
}
if ((isFileList2 = utils$1.isFileList(data)) || contentType.indexOf("multipart/form-data") > -1) {
const _FormData = this.env && this.env.FormData;
return toFormData(
isFileList2 ? { "files[]": data } : data,
_FormData && new _FormData(),
this.formSerializer
);
}
}
if (isObjectPayload || hasJSONContentType) {
headers.setContentType("application/json", false);
return stringifySafely(data);
}
return data;
}],
transformResponse: [function transformResponse(data) {
const transitional2 = this.transitional || defaults.transitional;
const forcedJSONParsing = transitional2 && transitional2.forcedJSONParsing;
const JSONRequested = this.responseType === "json";
if (data && utils$1.isString(data) && (forcedJSONParsing && !this.responseType || JSONRequested)) {
const silentJSONParsing = transitional2 && transitional2.silentJSONParsing;
const strictJSONParsing = !silentJSONParsing && JSONRequested;
try {
return JSON.parse(data);
} catch (e2) {
if (strictJSONParsing) {
if (e2.name === "SyntaxError") {
throw AxiosError.from(e2, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);
}
throw e2;
}
}
}
return data;
}],
/**
* A timeout in milliseconds to abort a request. If set to 0 (default) a
* timeout is not created.
*/
timeout: 0,
xsrfCookieName: "XSRF-TOKEN",
xsrfHeaderName: "X-XSRF-TOKEN",
maxContentLength: -1,
maxBodyLength: -1,
env: {
FormData: platform.classes.FormData,
Blob: platform.classes.Blob
},
validateStatus: function validateStatus(status) {
return status >= 200 && status < 300;
},
headers: {
common: {
"Accept": "application/json, text/plain, */*",
"Content-Type": void 0
}
}
};
utils$1.forEach(["delete", "get", "head", "post", "put", "patch"], (method4) => {
defaults.headers[method4] = {};
});
const defaults$1 = defaults;
const ignoreDuplicateOf = utils$1.toObjectSet([
"age",
"authorization",
"content-length",
"content-type",
"etag",
"expires",
"from",
"host",
"if-modified-since",
"if-unmodified-since",
"last-modified",
"location",
"max-forwards",
"proxy-authorization",
"referer",
"retry-after",
"user-agent"
]);
const parseHeaders = (rawHeaders) => {
const parsed = {};
let key;
let val;
let i;
rawHeaders && rawHeaders.split("\n").forEach(function parser(line2) {
i = line2.indexOf(":");
key = line2.substring(0, i).trim().toLowerCase();
val = line2.substring(i + 1).trim();
if (!key || parsed[key] && ignoreDuplicateOf[key]) {
return;
}
if (key === "set-cookie") {
if (parsed[key]) {
parsed[key].push(val);
} else {
parsed[key] = [val];
}
} else {
parsed[key] = parsed[key] ? parsed[key] + ", " + val : val;
}
});
return parsed;
};
const $internals = Symbol("internals");
function normalizeHeader(header) {
return header && String(header).trim().toLowerCase();
}
function normalizeValue(value) {
if (value === false || value == null) {
return value;
}
return utils$1.isArray(value) ? value.map(normalizeValue) : String(value);
}
function parseTokens(str) {
const tokens = /* @__PURE__ */ Object.create(null);
const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;
let match2;
while (match2 = tokensRE.exec(str)) {
tokens[match2[1]] = match2[2];
}
return tokens;
}
const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());
function matchHeaderValue(context, value, header, filter2, isHeaderNameFilter) {
if (utils$1.isFunction(filter2)) {
return filter2.call(this, value, header);
}
if (isHeaderNameFilter) {
value = header;
}
if (!utils$1.isString(value))
return;
if (utils$1.isString(filter2)) {
return value.indexOf(filter2) !== -1;
}
if (utils$1.isRegExp(filter2)) {
return filter2.test(value);
}
}
function formatHeader(header) {
return header.trim().toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char2, str) => {
return char2.toUpperCase() + str;
});
}
function buildAccessors(obj, header) {
const accessorName = utils$1.toCamelCase(" " + header);
["get", "set", "has"].forEach((methodName) => {
Object.defineProperty(obj, methodName + accessorName, {
value: function(arg1, arg2, arg3) {
return this[methodName].call(this, header, arg1, arg2, arg3);
},
configurable: true
});
});
}
class AxiosHeaders {
constructor(headers) {
headers && this.set(headers);
}
set(header, valueOrRewrite, rewrite) {
const self2 = this;
function setHeader(_value, _header, _rewrite) {
const lHeader = normalizeHeader(_header);
if (!lHeader) {
throw new Error("header name must be a non-empty string");
}
const key = utils$1.findKey(self2, lHeader);
if (!key || self2[key] === void 0 || _rewrite === true || _rewrite === void 0 && self2[key] !== false) {
self2[key || _header] = normalizeValue(_value);
}
}
const setHeaders = (headers, _rewrite) => utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));
if (utils$1.isPlainObject(header) || header instanceof this.constructor) {
setHeaders(header, valueOrRewrite);
} else if (utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {
setHeaders(parseHeaders(header), valueOrRewrite);
} else {
header != null && setHeader(valueOrRewrite, header, rewrite);
}
return this;
}
get(header, parser) {
header = normalizeHeader(header);
if (header) {
const key = utils$1.findKey(this, header);
if (key) {
const value = this[key];
if (!parser) {
return value;
}
if (parser === true) {
return parseTokens(value);
}
if (utils$1.isFunction(parser)) {
return parser.call(this, value, key);
}
if (utils$1.isRegExp(parser)) {
return parser.exec(value);
}
throw new TypeError("parser must be boolean|regexp|function");
}
}
}
has(header, matcher) {
header = normalizeHeader(header);
if (header) {
const key = utils$1.findKey(this, header);
return !!(key && this[key] !== void 0 && (!matcher || matchHeaderValue(this, this[key], key, matcher)));
}
return false;
}
delete(header, matcher) {
const self2 = this;
let deleted = false;
function deleteHeader(_header) {
_header = normalizeHeader(_header);
if (_header) {
const key = utils$1.findKey(self2, _header);
if (key && (!matcher || matchHeaderValue(self2, self2[key], key, matcher))) {
delete self2[key];
deleted = true;
}
}
}
if (utils$1.isArray(header)) {
header.forEach(deleteHeader);
} else {
deleteHeader(header);
}
return deleted;
}
clear(matcher) {
const keys2 = Object.keys(this);
let i = keys2.length;
let deleted = false;
while (i--) {
const key = keys2[i];
if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {
delete this[key];
deleted = true;
}
}
return deleted;
}
normalize(format2) {
const self2 = this;
const headers = {};
utils$1.forEach(this, (value, header) => {
const key = utils$1.findKey(headers, header);
if (key) {
self2[key] = normalizeValue(value);
delete self2[header];
return;
}
const normalized = format2 ? formatHeader(header) : String(header).trim();
if (normalized !== header) {
delete self2[header];
}
self2[normalized] = normalizeValue(value);
headers[normalized] = true;
});
return this;
}
concat(...targets) {
return this.constructor.concat(this, ...targets);
}
toJSON(asStrings) {
const obj = /* @__PURE__ */ Object.create(null);
utils$1.forEach(this, (value, header) => {
value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(", ") : value);
});
return obj;
}
[Symbol.iterator]() {
return Object.entries(this.toJSON())[Symbol.iterator]();
}
toString() {
return Object.entries(this.toJSON()).map(([header, value]) => header + ": " + value).join("\n");
}
get [Symbol.toStringTag]() {
return "AxiosHeaders";
}
static from(thing) {
return thing instanceof this ? thing : new this(thing);
}
static concat(first, ...targets) {
const computed = new this(first);
targets.forEach((target) => computed.set(target));
return computed;
}
static accessor(header) {
const internals = this[$internals] = this[$internals] = {
accessors: {}
};
const accessors = internals.accessors;
const prototype2 = this.prototype;
function defineAccessor(_header) {
const lHeader = normalizeHeader(_header);
if (!accessors[lHeader]) {
buildAccessors(prototype2, _header);
accessors[lHeader] = true;
}
}
utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);
return this;
}
}
AxiosHeaders.accessor(["Content-Type", "Content-Length", "Accept", "Accept-Encoding", "User-Agent", "Authorization"]);
utils$1.reduceDescriptors(AxiosHeaders.prototype, ({ value }, key) => {
let mapped = key[0].toUpperCase() + key.slice(1);
return {
get: () => value,
set(headerValue) {
this[mapped] = headerValue;
}
};
});
utils$1.freezeMethods(AxiosHeaders);
const AxiosHeaders$1 = AxiosHeaders;
function transformData(fns, response) {
const config = this || defaults$1;
const context = response || config;
const headers = AxiosHeaders$1.from(context.headers);
let data = context.data;
utils$1.forEach(fns, function transform(fn) {
data = fn.call(config, data, headers.normalize(), response ? response.status : void 0);
});
headers.normalize();
return data;
}
function isCancel(value) {
return !!(value && value.__CANCEL__);
}
function CanceledError(message, config, request) {
AxiosError.call(this, message == null ? "canceled" : message, AxiosError.ERR_CANCELED, config, request);
this.name = "CanceledError";
}
utils$1.inherits(CanceledError, AxiosError, {
__CANCEL__: true
});
function settle(resolve, reject, response) {
const validateStatus2 = response.config.validateStatus;
if (!response.status || !validateStatus2 || validateStatus2(response.status)) {
resolve(response);
} else {
reject(new AxiosError(
"Request failed with status code " + response.status,
[AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],
response.config,
response.request,
response
));
}
}
const cookies = platform.hasStandardBrowserEnv ? (
// Standard browser envs support document.cookie
{
write(name, value, expires, path, domain, secure) {
const cookie = [name + "=" + encodeURIComponent(value)];
utils$1.isNumber(expires) && cookie.push("expires=" + new Date(expires).toGMTString());
utils$1.isString(path) && cookie.push("path=" + path);
utils$1.isString(domain) && cookie.push("domain=" + domain);
secure === true && cookie.push("secure");
document.cookie = cookie.join("; ");
},
read(name) {
const match2 = document.cookie.match(new RegExp("(^|;\\s*)(" + name + ")=([^;]*)"));
return match2 ? decodeURIComponent(match2[3]) : null;
},
remove(name) {
this.write(name, "", Date.now() - 864e5);
}
}
) : (
// Non-standard browser env (web workers, react-native) lack needed support.
{
write() {
},
read() {
return null;
},
remove() {
}
}
);
function isAbsoluteURL(url2) {
return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url2);
}
function combineURLs(baseURL, relativeURL) {
return relativeURL ? baseURL.replace(/\/?\/$/, "") + "/" + relativeURL.replace(/^\/+/, "") : baseURL;
}
function buildFullPath(baseURL, requestedURL) {
if (baseURL && !isAbsoluteURL(requestedURL)) {
return combineURLs(baseURL, requestedURL);
}
return requestedURL;
}
const isURLSameOrigin = platform.hasStandardBrowserEnv ? (
// Standard browser envs have full support of the APIs needed to test
// whether the request URL is of the same origin as current location.
function standardBrowserEnv() {
const msie = /(msie|trident)/i.test(navigator.userAgent);
const urlParsingNode = document.createElement("a");
let originURL;
function resolveURL(url2) {
let href = url2;
if (msie) {
urlParsingNode.setAttribute("href", href);
href = urlParsingNode.href;
}
urlParsingNode.setAttribute("href", href);
return {
href: urlParsingNode.href,
protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, "") : "",
host: urlParsingNode.host,
search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, "") : "",
hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, "") : "",
hostname: urlParsingNode.hostname,
port: urlParsingNode.port,
pathname: urlParsingNode.pathname.charAt(0) === "/" ? urlParsingNode.pathname : "/" + urlParsingNode.pathname
};
}
originURL = resolveURL(window.location.href);
return function isURLSameOrigin2(requestURL) {
const parsed = utils$1.isString(requestURL) ? resolveURL(requestURL) : requestURL;
return parsed.protocol === originURL.protocol && parsed.host === originURL.host;
};
}()
) : (
// Non standard browser envs (web workers, react-native) lack needed support.
function nonStandardBrowserEnv() {
return function isURLSameOrigin2() {
return true;
};
}()
);
function parseProtocol(url2) {
const match2 = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url2);
return match2 && match2[1] || "";
}
function speedometer(samplesCount, min) {
samplesCount = samplesCount || 10;
const bytes = new Array(samplesCount);
const timestamps = new Array(samplesCount);
let head = 0;
let tail = 0;
let firstSampleTS;
min = min !== void 0 ? min : 1e3;
return function push(chunkLength) {
const now = Date.now();
const startedAt = timestamps[tail];
if (!firstSampleTS) {
firstSampleTS = now;
}
bytes[head] = chunkLength;
timestamps[head] = now;
let i = tail;
let bytesCount = 0;
while (i !== head) {
bytesCount += bytes[i++];
i = i % samplesCount;
}
head = (head + 1) % samplesCount;
if (head === tail) {
tail = (tail + 1) % samplesCount;
}
if (now - firstSampleTS < min) {
return;
}
const passed = startedAt && now - startedAt;
return passed ? Math.round(bytesCount * 1e3 / passed) : void 0;
};
}
function progressEventReducer(listener, isDownloadStream) {
let bytesNotified = 0;
const _speedometer = speedometer(50, 250);
return (e2) => {
const loaded = e2.loaded;
const total = e2.lengthComputable ? e2.total : void 0;
const progressBytes = loaded - bytesNotified;
const rate = _speedometer(progressBytes);
const inRange = loaded <= total;
bytesNotified = loaded;
const data = {
loaded,
total,
progress: total ? loaded / total : void 0,
bytes: progressBytes,
rate: rate ? rate : void 0,
estimated: rate && total && inRange ? (total - loaded) / rate : void 0,
event: e2
};
data[isDownloadStream ? "download" : "upload"] = true;
listener(data);
};
}
const isXHRAdapterSupported = typeof XMLHttpRequest !== "undefined";
const xhrAdapter = isXHRAdapterSupported && function(config) {
return new Promise(function dispatchXhrRequest(resolve, reject) {
let requestData = config.data;
const requestHeaders = AxiosHeaders$1.from(config.headers).normalize();
let { responseType, withXSRFToken } = config;
let onCanceled;
function done() {
if (config.cancelToken) {
config.cancelToken.unsubscribe(onCanceled);
}
if (config.signal) {
config.signal.removeEventListener("abort", onCanceled);
}
}
let contentType;
if (utils$1.isFormData(requestData)) {
if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {
requestHeaders.setContentType(false);
} else if ((contentType = requestHeaders.getContentType()) !== false) {
const [type4, ...tokens] = contentType ? contentType.split(";").map((token2) => token2.trim()).filter(Boolean) : [];
requestHeaders.setContentType([type4 || "multipart/form-data", ...tokens].join("; "));
}
}
let request = new XMLHttpRequest();
if (config.auth) {
const username = config.auth.username || "";
const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : "";
requestHeaders.set("Authorization", "Basic " + btoa(username + ":" + password));
}
const fullPath = buildFullPath(config.baseURL, config.url);
request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);
request.timeout = config.timeout;
function onloadend() {
if (!request) {
return;
}
const responseHeaders = AxiosHeaders$1.from(
"getAllResponseHeaders" in request && request.getAllResponseHeaders()
);
const responseData = !responseType || responseType === "text" || responseType === "json" ? request.responseText : request.response;
const response = {
data: responseData,
status: request.status,
statusText: request.statusText,
headers: responseHeaders,
config,
request
};
settle(function _resolve(value) {
resolve(value);
done();
}, function _reject(err) {
reject(err);
done();
}, response);
request = null;
}
if ("onloadend" in request) {
request.onloadend = onloadend;
} else {
request.onreadystatechange = function handleLoad() {
if (!request || request.readyState !== 4) {
return;
}
if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf("file:") === 0)) {
return;
}
setTimeout(onloadend);
};
}
request.onabort = function handleAbort() {
if (!request) {
return;
}
reject(new AxiosError("Request aborted", AxiosError.ECONNABORTED, config, request));
request = null;
};
request.onerror = function handleError() {
reject(new AxiosError("Network Error", AxiosError.ERR_NETWORK, config, request));
request = null;
};
request.ontimeout = function handleTimeout() {
let timeoutErrorMessage = config.timeout ? "timeout of " + config.timeout + "ms exceeded" : "timeout exceeded";
const transitional2 = config.transitional || transitionalDefaults;
if (config.timeoutErrorMessage) {
timeoutErrorMessage = config.timeoutErrorMessage;
}
reject(new AxiosError(
timeoutErrorMessage,
transitional2.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,
config,
request
));
request = null;
};
if (platform.hasStandardBrowserEnv) {
withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));
if (withXSRFToken || withXSRFToken !== false && isURLSameOrigin(fullPath)) {
const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);
if (xsrfValue) {
requestHeaders.set(config.xsrfHeaderName, xsrfValue);
}
}
}
requestData === void 0 && requestHeaders.setContentType(null);
if ("setRequestHeader" in request) {
utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {
request.setRequestHeader(key, val);
});
}
if (!utils$1.isUndefined(config.withCredentials)) {
request.withCredentials = !!config.withCredentials;
}
if (responseType && responseType !== "json") {
request.responseType = config.responseType;
}
if (typeof config.onDownloadProgress === "function") {
request.addEventListener("progress", progressEventReducer(config.onDownloadProgress, true));
}
if (typeof config.onUploadProgress === "function" && request.upload) {
request.upload.addEventListener("progress", progressEventReducer(config.onUploadProgress));
}
if (config.cancelToken || config.signal) {
onCanceled = (cancel) => {
if (!request) {
return;
}
reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);
request.abort();
request = null;
};
config.cancelToken && config.cancelToken.subscribe(onCanceled);
if (config.signal) {
config.signal.aborted ? onCanceled() : config.signal.addEventListener("abort", onCanceled);
}
}
const protocol = parseProtocol(fullPath);
if (protocol && platform.protocols.indexOf(protocol) === -1) {
reject(new AxiosError("Unsupported protocol " + protocol + ":", AxiosError.ERR_BAD_REQUEST, config));
return;
}
request.send(requestData || null);
});
};
const knownAdapters = {
http: httpAdapter,
xhr: xhrAdapter
};
utils$1.forEach(knownAdapters, (fn, value) => {
if (fn) {
try {
Object.defineProperty(fn, "name", { value });
} catch (e2) {
}
Object.defineProperty(fn, "adapterName", { value });
}
});
const renderReason = (reason) => `- ${reason}`;
const isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false;
const adapters = {
getAdapter: (adapters2) => {
adapters2 = utils$1.isArray(adapters2) ? adapters2 : [adapters2];
const { length: length2 } = adapters2;
let nameOrAdapter;
let adapter;
const rejectedReasons = {};
for (let i = 0; i < length2; i++) {
nameOrAdapter = adapters2[i];
let id;
adapter = nameOrAdapter;
if (!isResolvedHandle(nameOrAdapter)) {
adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];
if (adapter === void 0) {
throw new AxiosError(`Unknown adapter '${id}'`);
}
}
if (adapter) {
break;
}
rejectedReasons[id || "#" + i] = adapter;
}
if (!adapter) {
const reasons = Object.entries(rejectedReasons).map(
([id, state]) => `adapter ${id} ` + (state === false ? "is not supported by the environment" : "is not available in the build")
);
let s = length2 ? reasons.length > 1 ? "since :\n" + reasons.map(renderReason).join("\n") : " " + renderReason(reasons[0]) : "as no adapter specified";
throw new AxiosError(
`There is no suitable adapter to dispatch the request ` + s,
"ERR_NOT_SUPPORT"
);
}
return adapter;
},
adapters: knownAdapters
};
function throwIfCancellationRequested(config) {
if (config.cancelToken) {
config.cancelToken.throwIfRequested();
}
if (config.signal && config.signal.aborted) {
throw new CanceledError(null, config);
}
}
function dispatchRequest(config) {
throwIfCancellationRequested(config);
config.headers = AxiosHeaders$1.from(config.headers);
config.data = transformData.call(
config,
config.transformRequest
);
if (["post", "put", "patch"].indexOf(config.method) !== -1) {
config.headers.setContentType("application/x-www-form-urlencoded", false);
}
const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter);
return adapter(config).then(function onAdapterResolution(response) {
throwIfCancellationRequested(config);
response.data = transformData.call(
config,
config.transformResponse,
response
);
response.headers = AxiosHeaders$1.from(response.headers);
return response;
}, function onAdapterRejection(reason) {
if (!isCancel(reason)) {
throwIfCancellationRequested(config);
if (reason && reason.response) {
reason.response.data = transformData.call(
config,
config.transformResponse,
reason.response
);
reason.response.headers = AxiosHeaders$1.from(reason.response.headers);
}
}
return Promise.reject(reason);
});
}
const headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? thing.toJSON() : thing;
function mergeConfig(config1, config2) {
config2 = config2 || {};
const config = {};
function getMergedValue(target, source, caseless) {
if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) {
return utils$1.merge.call({ caseless }, target, source);
} else if (utils$1.isPlainObject(source)) {
return utils$1.merge({}, source);
} else if (utils$1.isArray(source)) {
return source.slice();
}
return source;
}
function mergeDeepProperties(a, b2, caseless) {
if (!utils$1.isUndefined(b2)) {
return getMergedValue(a, b2, caseless);
} else if (!utils$1.isUndefined(a)) {
return getMergedValue(void 0, a, caseless);
}
}
function valueFromConfig2(a, b2) {
if (!utils$1.isUndefined(b2)) {
return getMergedValue(void 0, b2);
}
}
function defaultToConfig2(a, b2) {
if (!utils$1.isUndefined(b2)) {
return getMergedValue(void 0, b2);
} else if (!utils$1.isUndefined(a)) {
return getMergedValue(void 0, a);
}
}
function mergeDirectKeys(a, b2, prop) {
if (prop in config2) {
return getMergedValue(a, b2);
} else if (prop in config1) {
return getMergedValue(void 0, a);
}
}
const mergeMap = {
url: valueFromConfig2,
method: valueFromConfig2,
data: valueFromConfig2,
baseURL: defaultToConfig2,
transformRequest: defaultToConfig2,
transformResponse: defaultToConfig2,
paramsSerializer: defaultToConfig2,
timeout: defaultToConfig2,
timeoutMessage: defaultToConfig2,
withCredentials: defaultToConfig2,
withXSRFToken: defaultToConfig2,
adapter: defaultToConfig2,
responseType: defaultToConfig2,
xsrfCookieName: defaultToConfig2,
xsrfHeaderName: defaultToConfig2,
onUploadProgress: defaultToConfig2,
onDownloadProgress: defaultToConfig2,
decompress: defaultToConfig2,
maxContentLength: defaultToConfig2,
maxBodyLength: defaultToConfig2,
beforeRedirect: defaultToConfig2,
transport: defaultToConfig2,
httpAgent: defaultToConfig2,
httpsAgent: defaultToConfig2,
cancelToken: defaultToConfig2,
socketPath: defaultToConfig2,
responseEncoding: defaultToConfig2,
validateStatus: mergeDirectKeys,
headers: (a, b2) => mergeDeepProperties(headersToObject(a), headersToObject(b2), true)
};
utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {
const merge2 = mergeMap[prop] || mergeDeepProperties;
const configValue = merge2(config1[prop], config2[prop], prop);
utils$1.isUndefined(configValue) && merge2 !== mergeDirectKeys || (config[prop] = configValue);
});
return config;
}
const VERSION = "1.6.3";
const validators$2 = {};
["object", "boolean", "number", "function", "string", "symbol"].forEach((type4, i) => {
validators$2[type4] = function validator2(thing) {
return typeof thing === type4 || "a" + (i < 1 ? "n " : " ") + type4;
};
});
const deprecatedWarnings = {};
validators$2.transitional = function transitional(validator2, version2, message) {
function formatMessage(opt, desc) {
return "[Axios v" + VERSION + "] Transitional option '" + opt + "'" + desc + (message ? ". " + message : "");
}
return (value, opt, opts) => {
if (validator2 === false) {
throw new AxiosError(
formatMessage(opt, " has been removed" + (version2 ? " in " + version2 : "")),
AxiosError.ERR_DEPRECATED
);
}
if (version2 && !deprecatedWarnings[opt]) {
deprecatedWarnings[opt] = true;
console.warn(
formatMessage(
opt,
" has been deprecated since v" + version2 + " and will be removed in the near future"
)
);
}
return validator2 ? validator2(value, opt, opts) : true;
};
};
function assertOptions(options, schema, allowUnknown) {
if (typeof options !== "object") {
throw new AxiosError("options must be an object", AxiosError.ERR_BAD_OPTION_VALUE);
}
const keys2 = Object.keys(options);
let i = keys2.length;
while (i-- > 0) {
const opt = keys2[i];
const validator2 = schema[opt];
if (validator2) {
const value = options[opt];
const result = value === void 0 || validator2(value, opt, options);
if (result !== true) {
throw new AxiosError("option " + opt + " must be " + result, AxiosError.ERR_BAD_OPTION_VALUE);
}
continue;
}
if (allowUnknown !== true) {
throw new AxiosError("Unknown option " + opt, AxiosError.ERR_BAD_OPTION);
}
}
}
const validator = {
assertOptions,
validators: validators$2
};
const validators$1 = validator.validators;
class Axios {
constructor(instanceConfig) {
this.defaults = instanceConfig;
this.interceptors = {
request: new InterceptorManager$1(),
response: new InterceptorManager$1()
};
}
/**
* Dispatch a request
*
* @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)
* @param {?Object} config
*
* @returns {Promise} The Promise to be fulfilled
*/
request(configOrUrl, config) {
if (typeof configOrUrl === "string") {
config = config || {};
config.url = configOrUrl;
} else {
config = configOrUrl || {};
}
config = mergeConfig(this.defaults, config);
const { transitional: transitional2, paramsSerializer, headers } = config;
if (transitional2 !== void 0) {
validator.assertOptions(transitional2, {
silentJSONParsing: validators$1.transitional(validators$1.boolean),
forcedJSONParsing: validators$1.transitional(validators$1.boolean),
clarifyTimeoutError: validators$1.transitional(validators$1.boolean)
}, false);
}
if (paramsSerializer != null) {
if (utils$1.isFunction(paramsSerializer)) {
config.paramsSerializer = {
serialize: paramsSerializer
};
} else {
validator.assertOptions(paramsSerializer, {
encode: validators$1.function,
serialize: validators$1.function
}, true);
}
}
config.method = (config.method || this.defaults.method || "get").toLowerCase();
let contextHeaders = headers && utils$1.merge(
headers.common,
headers[config.method]
);
headers && utils$1.forEach(
["delete", "get", "head", "post", "put", "patch", "common"],
(method4) => {
delete headers[method4];
}
);
config.headers = AxiosHeaders$1.concat(contextHeaders, headers);
const requestInterceptorChain = [];
let synchronousRequestInterceptors = true;
this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
if (typeof interceptor.runWhen === "function" && interceptor.runWhen(config) === false) {
return;
}
synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;
requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);
});
const responseInterceptorChain = [];
this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);
});
let promise;
let i = 0;
let len;
if (!synchronousRequestInterceptors) {
const chain = [dispatchRequest.bind(this), void 0];
chain.unshift.apply(chain, requestInterceptorChain);
chain.push.apply(chain, responseInterceptorChain);
len = chain.length;
promise = Promise.resolve(config);
while (i < len) {
promise = promise.then(chain[i++], chain[i++]);
}
return promise;
}
len = requestInterceptorChain.length;
let newConfig = config;
i = 0;
while (i < len) {
const onFulfilled = requestInterceptorChain[i++];
const onRejected = requestInterceptorChain[i++];
try {
newConfig = onFulfilled(newConfig);
} catch (error) {
onRejected.call(this, error);
break;
}
}
try {
promise = dispatchRequest.call(this, newConfig);
} catch (error) {
return Promise.reject(error);
}
i = 0;
len = responseInterceptorChain.length;
while (i < len) {
promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);
}
return promise;
}
getUri(config) {
config = mergeConfig(this.defaults, config);
const fullPath = buildFullPath(config.baseURL, config.url);
return buildURL(fullPath, config.params, config.paramsSerializer);
}
}
utils$1.forEach(["delete", "get", "head", "options"], function forEachMethodNoData(method4) {
Axios.prototype[method4] = function(url2, config) {
return this.request(mergeConfig(config || {}, {
method: method4,
url: url2,
data: (config || {}).data
}));
};
});
utils$1.forEach(["post", "put", "patch"], function forEachMethodWithData(method4) {
function generateHTTPMethod(isForm) {
return function httpMethod(url2, data, config) {
return this.request(mergeConfig(config || {}, {
method: method4,
headers: isForm ? {
"Content-Type": "multipart/form-data"
} : {},
url: url2,
data
}));
};
}
Axios.prototype[method4] = generateHTTPMethod();
Axios.prototype[method4 + "Form"] = generateHTTPMethod(true);
});
const Axios$1 = Axios;
class CancelToken {
constructor(executor) {
if (typeof executor !== "function") {
throw new TypeError("executor must be a function.");
}
let resolvePromise;
this.promise = new Promise(function promiseExecutor(resolve) {
resolvePromise = resolve;
});
const token2 = this;
this.promise.then((cancel) => {
if (!token2._listeners)
return;
let i = token2._listeners.length;
while (i-- > 0) {
token2._listeners[i](cancel);
}
token2._listeners = null;
});
this.promise.then = (onfulfilled) => {
let _resolve;
const promise = new Promise((resolve) => {
token2.subscribe(resolve);
_resolve = resolve;
}).then(onfulfilled);
promise.cancel = function reject() {
token2.unsubscribe(_resolve);
};
return promise;
};
executor(function cancel(message, config, request) {
if (token2.reason) {
return;
}
token2.reason = new CanceledError(message, config, request);
resolvePromise(token2.reason);
});
}
/**
* Throws a `CanceledError` if cancellation has been requested.
*/
throwIfRequested() {
if (this.reason) {
throw this.reason;
}
}
/**
* Subscribe to the cancel signal
*/
subscribe(listener) {
if (this.reason) {
listener(this.reason);
return;
}
if (this._listeners) {
this._listeners.push(listener);
} else {
this._listeners = [listener];
}
}
/**
* Unsubscribe from the cancel signal
*/
unsubscribe(listener) {
if (!this._listeners) {
return;
}
const index2 = this._listeners.indexOf(listener);
if (index2 !== -1) {
this._listeners.splice(index2, 1);
}
}
/**
* Returns an object that contains a new `CancelToken` and a function that, when called,
* cancels the `CancelToken`.
*/
static source() {
let cancel;
const token2 = new CancelToken(function executor(c2) {
cancel = c2;
});
return {
token: token2,
cancel
};
}
}
const CancelToken$1 = CancelToken;
function spread(callback) {
return function wrap(arr) {
return callback.apply(null, arr);
};
}
function isAxiosError(payload) {
return utils$1.isObject(payload) && payload.isAxiosError === true;
}
const HttpStatusCode = {
Continue: 100,
SwitchingProtocols: 101,
Processing: 102,
EarlyHints: 103,
Ok: 200,
Created: 201,
Accepted: 202,
NonAuthoritativeInformation: 203,
NoContent: 204,
ResetContent: 205,
PartialContent: 206,
MultiStatus: 207,
AlreadyReported: 208,
ImUsed: 226,
MultipleChoices: 300,
MovedPermanently: 301,
Found: 302,
SeeOther: 303,
NotModified: 304,
UseProxy: 305,
Unused: 306,
TemporaryRedirect: 307,
PermanentRedirect: 308,
BadRequest: 400,
Unauthorized: 401,
PaymentRequired: 402,
Forbidden: 403,
NotFound: 404,
MethodNotAllowed: 405,
NotAcceptable: 406,
ProxyAuthenticationRequired: 407,
RequestTimeout: 408,
Conflict: 409,
Gone: 410,
LengthRequired: 411,
PreconditionFailed: 412,
PayloadTooLarge: 413,
UriTooLong: 414,
UnsupportedMediaType: 415,
RangeNotSatisfiable: 416,
ExpectationFailed: 417,
ImATeapot: 418,
MisdirectedRequest: 421,
UnprocessableEntity: 422,
Locked: 423,
FailedDependency: 424,
TooEarly: 425,
UpgradeRequired: 426,
PreconditionRequired: 428,
TooManyRequests: 429,
RequestHeaderFieldsTooLarge: 431,
UnavailableForLegalReasons: 451,
InternalServerError: 500,
NotImplemented: 501,
BadGateway: 502,
ServiceUnavailable: 503,
GatewayTimeout: 504,
HttpVersionNotSupported: 505,
VariantAlsoNegotiates: 506,
InsufficientStorage: 507,
LoopDetected: 508,
NotExtended: 510,
NetworkAuthenticationRequired: 511
};
Object.entries(HttpStatusCode).forEach(([key, value]) => {
HttpStatusCode[value] = key;
});
const HttpStatusCode$1 = HttpStatusCode;
function createInstance(defaultConfig2) {
const context = new Axios$1(defaultConfig2);
const instance = bind(Axios$1.prototype.request, context);
utils$1.extend(instance, Axios$1.prototype, context, { allOwnKeys: true });
utils$1.extend(instance, context, null, { allOwnKeys: true });
instance.create = function create(instanceConfig) {
return createInstance(mergeConfig(defaultConfig2, instanceConfig));
};
return instance;
}
const axios = createInstance(defaults$1);
axios.Axios = Axios$1;
axios.CanceledError = CanceledError;
axios.CancelToken = CancelToken$1;
axios.isCancel = isCancel;
axios.VERSION = VERSION;
axios.toFormData = toFormData;
axios.AxiosError = AxiosError;
axios.Cancel = axios.CanceledError;
axios.all = function all(promises) {
return Promise.all(promises);
};
axios.spread = spread;
axios.isAxiosError = isAxiosError;
axios.mergeConfig = mergeConfig;
axios.AxiosHeaders = AxiosHeaders$1;
axios.formToJSON = (thing) => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing);
axios.getAdapter = adapters.getAdapter;
axios.HttpStatusCode = HttpStatusCode$1;
axios.default = axios;
const axios$1 = axios;
var cryptoJs = { exports: {} };
function commonjsRequire(path) {
throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');
}
var core = { exports: {} };
const __viteBrowserExternal = {};
const __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
default: __viteBrowserExternal
}, Symbol.toStringTag, { value: "Module" }));
const require$$0 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);
var hasRequiredCore;
function requireCore() {
if (hasRequiredCore)
return core.exports;
hasRequiredCore = 1;
(function(module, exports) {
(function(root, factory) {
{
module.exports = factory();
}
})(commonjsGlobal, function() {
var CryptoJS = CryptoJS || function(Math2, undefined$1) {
var crypto;
if (typeof window !== "undefined" && window.crypto) {
crypto = window.crypto;
}
if (typeof self !== "undefined" && self.crypto) {
crypto = self.crypto;
}
if (typeof globalThis !== "undefined" && globalThis.crypto) {
crypto = globalThis.crypto;
}
if (!crypto && typeof window !== "undefined" && window.msCrypto) {
crypto = window.msCrypto;
}
if (!crypto && typeof commonjsGlobal !== "undefined" && commonjsGlobal.crypto) {
crypto = commonjsGlobal.crypto;
}
if (!crypto && typeof commonjsRequire === "function") {
try {
crypto = require$$0;
} catch (err) {
}
}
var cryptoSecureRandomInt = function() {
if (crypto) {
if (typeof crypto.getRandomValues === "function") {
try {
return crypto.getRandomValues(new Uint32Array(1))[0];
} catch (err) {
}
}
if (typeof crypto.randomBytes === "function") {
try {
return crypto.randomBytes(4).readInt32LE();
} catch (err) {
}
}
}
throw new Error("Native crypto module could not be used to get secure random number.");
};
var create = Object.create || function() {
function F() {
}
return function(obj) {
var subtype;
F.prototype = obj;
subtype = new F();
F.prototype = null;
return subtype;
};
}();
var C = {};
var C_lib = C.lib = {};
var Base = C_lib.Base = function() {
return {
/**
* Creates a new object that inherits from this object.
*
* @param {Object} overrides Properties to copy into the new object.
*
* @return {Object} The new object.
*
* @static
*
* @example
*
* var MyType = CryptoJS.lib.Base.extend({
* field: 'value',
*
* method: function () {
* }
* });
*/
extend: function(overrides) {
var subtype = create(this);
if (overrides) {
subtype.mixIn(overrides);
}
if (!subtype.hasOwnProperty("init") || this.init === subtype.init) {
subtype.init = function() {
subtype.$super.init.apply(this, arguments);
};
}
subtype.init.prototype = subtype;
subtype.$super = this;
return subtype;
},
/**
* Extends this object and runs the init method.
* Arguments to create() will be passed to init().
*
* @return {Object} The new object.
*
* @static
*
* @example
*
* var instance = MyType.create();
*/
create: function() {
var instance = this.extend();
instance.init.apply(instance, arguments);
return instance;
},
/**
* Initializes a newly created object.
* Override this method to add some logic when your objects are created.
*
* @example
*
* var MyType = CryptoJS.lib.Base.extend({
* init: function () {
* // ...
* }
* });
*/
init: function() {
},
/**
* Copies properties into this object.
*
* @param {Object} properties The properties to mix in.
*
* @example
*
* MyType.mixIn({
* field: 'value'
* });
*/
mixIn: function(properties) {
for (var propertyName in properties) {
if (properties.hasOwnProperty(propertyName)) {
this[propertyName] = properties[propertyName];
}
}
if (properties.hasOwnProperty("toString")) {
this.toString = properties.toString;
}
},
/**
* Creates a copy of this object.
*
* @return {Object} The clone.
*
* @example
*
* var clone = instance.clone();
*/
clone: function() {
return this.init.prototype.extend(this);
}
};
}();
var WordArray = C_lib.WordArray = Base.extend({
/**
* Initializes a newly created word array.
*
* @param {Array} words (Optional) An array of 32-bit words.
* @param {number} sigBytes (Optional) The number of significant bytes in the words.
*
* @example
*
* var wordArray = CryptoJS.lib.WordArray.create();
* var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);
* var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);
*/
init: function(words, sigBytes) {
words = this.words = words || [];
if (sigBytes != undefined$1) {
this.sigBytes = sigBytes;
} else {
this.sigBytes = words.length * 4;
}
},
/**
* Converts this word array to a string.
*
* @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex
*
* @return {string} The stringified word array.
*
* @example
*
* var string = wordArray + '';
* var string = wordArray.toString();
* var string = wordArray.toString(CryptoJS.enc.Utf8);
*/
toString: function(encoder) {
return (encoder || Hex2).stringify(this);
},
/**
* Concatenates a word array to this word array.
*
* @param {WordArray} wordArray The word array to append.
*
* @return {WordArray} This word array.
*
* @example
*
* wordArray1.concat(wordArray2);
*/
concat: function(wordArray) {
var thisWords = this.words;
var thatWords = wordArray.words;
var thisSigBytes = this.sigBytes;
var thatSigBytes = wordArray.sigBytes;
this.clamp();
if (thisSigBytes % 4) {
for (var i = 0; i < thatSigBytes; i++) {
var thatByte = thatWords[i >>> 2] >>> 24 - i % 4 * 8 & 255;
thisWords[thisSigBytes + i >>> 2] |= thatByte << 24 - (thisSigBytes + i) % 4 * 8;
}
} else {
for (var j = 0; j < thatSigBytes; j += 4) {
thisWords[thisSigBytes + j >>> 2] = thatWords[j >>> 2];
}
}
this.sigBytes += thatSigBytes;
return this;
},
/**
* Removes insignificant bits.
*
* @example
*
* wordArray.clamp();
*/
clamp: function() {
var words = this.words;
var sigBytes = this.sigBytes;
words[sigBytes >>> 2] &= 4294967295 << 32 - sigBytes % 4 * 8;
words.length = Math2.ceil(sigBytes / 4);
},
/**
* Creates a copy of this word array.
*
* @return {WordArray} The clone.
*
* @example
*
* var clone = wordArray.clone();
*/
clone: function() {
var clone = Base.clone.call(this);
clone.words = this.words.slice(0);
return clone;
},
/**
* Creates a word array filled with random bytes.
*
* @param {number} nBytes The number of random bytes to generate.
*
* @return {WordArray} The random word array.
*
* @static
*
* @example
*
* var wordArray = CryptoJS.lib.WordArray.random(16);
*/
random: function(nBytes) {
var words = [];
for (var i = 0; i < nBytes; i += 4) {
words.push(cryptoSecureRandomInt());
}
return new WordArray.init(words, nBytes);
}
});
var C_enc = C.enc = {};
var Hex2 = C_enc.Hex = {
/**
* Converts a word array to a hex string.
*
* @param {WordArray} wordArray The word array.
*
* @return {string} The hex string.
*
* @static
*
* @example
*
* var hexString = CryptoJS.enc.Hex.stringify(wordArray);
*/
stringify: function(wordArray) {
var words = wordArray.words;
var sigBytes = wordArray.sigBytes;
var hexChars = [];
for (var i = 0; i < sigBytes; i++) {
var bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 255;
hexChars.push((bite >>> 4).toString(16));
hexChars.push((bite & 15).toString(16));
}
return hexChars.join("");
},
/**
* Converts a hex string to a word array.
*
* @param {string} hexStr The hex string.
*
* @return {WordArray} The word array.
*
* @static
*
* @example
*
* var wordArray = CryptoJS.enc.Hex.parse(hexString);
*/
parse: function(hexStr) {
var hexStrLength = hexStr.length;
var words = [];
for (var i = 0; i < hexStrLength; i += 2) {
words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << 24 - i % 8 * 4;
}
return new WordArray.init(words, hexStrLength / 2);
}
};
var Latin1 = C_enc.Latin1 = {
/**
* Converts a word array to a Latin1 string.
*
* @param {WordArray} wordArray The word array.
*
* @return {string} The Latin1 string.
*
* @static
*
* @example
*
* var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);
*/
stringify: function(wordArray) {
var words = wordArray.words;
var sigBytes = wordArray.sigBytes;
var latin1Chars = [];
for (var i = 0; i < sigBytes; i++) {
var bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 255;
latin1Chars.push(String.fromCharCode(bite));
}
return latin1Chars.join("");
},
/**
* Converts a Latin1 string to a word array.
*
* @param {string} latin1Str The Latin1 string.
*
* @return {WordArray} The word array.
*
* @static
*
* @example
*
* var wordArray = CryptoJS.enc.Latin1.parse(latin1String);
*/
parse: function(latin1Str) {
var latin1StrLength = latin1Str.length;
var words = [];
for (var i = 0; i < latin1StrLength; i++) {
words[i >>> 2] |= (latin1Str.charCodeAt(i) & 255) << 24 - i % 4 * 8;
}
return new WordArray.init(words, latin1StrLength);
}
};
var Utf8 = C_enc.Utf8 = {
/**
* Converts a word array to a UTF-8 string.
*
* @param {WordArray} wordArray The word array.
*
* @return {string} The UTF-8 string.
*
* @static
*
* @example
*
* var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);
*/
stringify: function(wordArray) {
try {
return decodeURIComponent(escape(Latin1.stringify(wordArray)));
} catch (e2) {
throw new Error("Malformed UTF-8 data");
}
},
/**
* Converts a UTF-8 string to a word array.
*
* @param {string} utf8Str The UTF-8 string.
*
* @return {WordArray} The word array.
*
* @static
*
* @example
*
* var wordArray = CryptoJS.enc.Utf8.parse(utf8String);
*/
parse: function(utf8Str) {
return Latin1.parse(unescape(encodeURIComponent(utf8Str)));
}
};
var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({
/**
* Resets this block algorithm's data buffer to its initial state.
*
* @example
*
* bufferedBlockAlgorithm.reset();
*/
reset: function() {
this._data = new WordArray.init();
this._nDataBytes = 0;
},
/**
* Adds new data to this block algorithm's buffer.
*
* @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.
*
* @example
*
* bufferedBlockAlgorithm._append('data');
* bufferedBlockAlgorithm._append(wordArray);
*/
_append: function(data) {
if (typeof data == "string") {
data = Utf8.parse(data);
}
this._data.concat(data);
this._nDataBytes += data.sigBytes;
},
/**
* Processes available data blocks.
*
* This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.
*
* @param {boolean} doFlush Whether all blocks and partial blocks should be processed.
*
* @return {WordArray} The processed data.
*
* @example
*
* var processedData = bufferedBlockAlgorithm._process();
* var processedData = bufferedBlockAlgorithm._process(!!'flush');
*/
_process: function(doFlush) {
var processedWords;
var data = this._data;
var dataWords = data.words;
var dataSigBytes = data.sigBytes;
var blockSize = this.blockSize;
var blockSizeBytes = blockSize * 4;
var nBlocksReady = dataSigBytes / blockSizeBytes;
if (doFlush) {
nBlocksReady = Math2.ceil(nBlocksReady);
} else {
nBlocksReady = Math2.max((nBlocksReady | 0) - this._minBufferSize, 0);
}
var nWordsReady = nBlocksReady * blockSize;
var nBytesReady = Math2.min(nWordsReady * 4, dataSigBytes);
if (nWordsReady) {
for (var offset = 0; offset < nWordsReady; offset += blockSize) {
this._doProcessBlock(dataWords, offset);
}
processedWords = dataWords.splice(0, nWordsReady);
data.sigBytes -= nBytesReady;
}
return new WordArray.init(processedWords, nBytesReady);
},
/**
* Creates a copy of this object.
*
* @return {Object} The clone.
*
* @example
*
* var clone = bufferedBlockAlgorithm.clone();
*/
clone: function() {
var clone = Base.clone.call(this);
clone._data = this._data.clone();
return clone;
},
_minBufferSize: 0
});
C_lib.Hasher = BufferedBlockAlgorithm.extend({
/**
* Configuration options.
*/
cfg: Base.extend(),
/**
* Initializes a newly created hasher.
*
* @param {Object} cfg (Optional) The configuration options to use for this hash computation.
*
* @example
*
* var hasher = CryptoJS.algo.SHA256.create();
*/
init: function(cfg) {
this.cfg = this.cfg.extend(cfg);
this.reset();
},
/**
* Resets this hasher to its initial state.
*
* @example
*
* hasher.reset();
*/
reset: function() {
BufferedBlockAlgorithm.reset.call(this);
this._doReset();
},
/**
* Updates this hasher with a message.
*
* @param {WordArray|string} messageUpdate The message to append.
*
* @return {Hasher} This hasher.
*
* @example
*
* hasher.update('message');
* hasher.update(wordArray);
*/
update: function(messageUpdate) {
this._append(messageUpdate);
this._process();
return this;
},
/**
* Finalizes the hash computation.
* Note that the finalize operation is effectively a destructive, read-once operation.
*
* @param {WordArray|string} messageUpdate (Optional) A final message update.
*
* @return {WordArray} The hash.
*
* @example
*
* var hash = hasher.finalize();
* var hash = hasher.finalize('message');
* var hash = hasher.finalize(wordArray);
*/
finalize: function(messageUpdate) {
if (messageUpdate) {
this._append(messageUpdate);
}
var hash = this._doFinalize();
return hash;
},
blockSize: 512 / 32,
/**
* Creates a shortcut function to a hasher's object interface.
*
* @param {Hasher} hasher The hasher to create a helper for.
*
* @return {Function} The shortcut function.
*
* @static
*
* @example
*
* var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);
*/
_createHelper: function(hasher) {
return function(message, cfg) {
return new hasher.init(cfg).finalize(message);
};
},
/**
* Creates a shortcut function to the HMAC's object interface.
*
* @param {Hasher} hasher The hasher to use in this HMAC helper.
*
* @return {Function} The shortcut function.
*
* @static
*
* @example
*
* var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);
*/
_createHmacHelper: function(hasher) {
return function(message, key) {
return new C_algo.HMAC.init(hasher, key).finalize(message);
};
}
});
var C_algo = C.algo = {};
return C;
}(Math);
return CryptoJS;
});
})(core);
return core.exports;
}
var x64Core = { exports: {} };
var hasRequiredX64Core;
function requireX64Core() {
if (hasRequiredX64Core)
return x64Core.exports;
hasRequiredX64Core = 1;
(function(module, exports) {
(function(root, factory) {
{
module.exports = factory(requireCore());
}
})(commonjsGlobal, function(CryptoJS) {
(function(undefined$1) {
var C = CryptoJS;
var C_lib = C.lib;
var Base = C_lib.Base;
var X32WordArray = C_lib.WordArray;
var C_x64 = C.x64 = {};
C_x64.Word = Base.extend({
/**
* Initializes a newly created 64-bit word.
*
* @param {number} high The high 32 bits.
* @param {number} low The low 32 bits.
*
* @example
*
* var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);
*/
init: function(high, low) {
this.high = high;
this.low = low;
}
/**
* Bitwise NOTs this word.
*
* @return {X64Word} A new x64-Word object after negating.
*
* @example
*
* var negated = x64Word.not();
*/
// not: function () {
// var high = ~this.high;
// var low = ~this.low;
// return X64Word.create(high, low);
// },
/**
* Bitwise ANDs this word with the passed word.
*
* @param {X64Word} word The x64-Word to AND with this word.
*
* @return {X64Word} A new x64-Word object after ANDing.
*
* @example
*
* var anded = x64Word.and(anotherX64Word);
*/
// and: function (word) {
// var high = this.high & word.high;
// var low = this.low & word.low;
// return X64Word.create(high, low);
// },
/**
* Bitwise ORs this word with the passed word.
*
* @param {X64Word} word The x64-Word to OR with this word.
*
* @return {X64Word} A new x64-Word object after ORing.
*
* @example
*
* var ored = x64Word.or(anotherX64Word);
*/
// or: function (word) {
// var high = this.high | word.high;
// var low = this.low | word.low;
// return X64Word.create(high, low);
// },
/**
* Bitwise XORs this word with the passed word.
*
* @param {X64Word} word The x64-Word to XOR with this word.
*
* @return {X64Word} A new x64-Word object after XORing.
*
* @example
*
* var xored = x64Word.xor(anotherX64Word);
*/
// xor: function (word) {
// var high = this.high ^ word.high;
// var low = this.low ^ word.low;
// return X64Word.create(high, low);
// },
/**
* Shifts this word n bits to the left.
*
* @param {number} n The number of bits to shift.
*
* @return {X64Word} A new x64-Word object after shifting.
*
* @example
*
* var shifted = x64Word.shiftL(25);
*/
// shiftL: function (n) {
// if (n < 32) {
// var high = (this.high << n) | (this.low >>> (32 - n));
// var low = this.low << n;
// } else {
// var high = this.low << (n - 32);
// var low = 0;
// }
// return X64Word.create(high, low);
// },
/**
* Shifts this word n bits to the right.
*
* @param {number} n The number of bits to shift.
*
* @return {X64Word} A new x64-Word object after shifting.
*
* @example
*
* var shifted = x64Word.shiftR(7);
*/
// shiftR: function (n) {
// if (n < 32) {
// var low = (this.low >>> n) | (this.high << (32 - n));
// var high = this.high >>> n;
// } else {
// var low = this.high >>> (n - 32);
// var high = 0;
// }
// return X64Word.create(high, low);
// },
/**
* Rotates this word n bits to the left.
*
* @param {number} n The number of bits to rotate.
*
* @return {X64Word} A new x64-Word object after rotating.
*
* @example
*
* var rotated = x64Word.rotL(25);
*/
// rotL: function (n) {
// return this.shiftL(n).or(this.shiftR(64 - n));
// },
/**
* Rotates this word n bits to the right.
*
* @param {number} n The number of bits to rotate.
*
* @return {X64Word} A new x64-Word object after rotating.
*
* @example
*
* var rotated = x64Word.rotR(7);
*/
// rotR: function (n) {
// return this.shiftR(n).or(this.shiftL(64 - n));
// },
/**
* Adds this word with the passed word.
*
* @param {X64Word} word The x64-Word to add with this word.
*
* @return {X64Word} A new x64-Word object after adding.
*
* @example
*
* var added = x64Word.add(anotherX64Word);
*/
// add: function (word) {
// var low = (this.low + word.low) | 0;
// var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;
// var high = (this.high + word.high + carry) | 0;
// return X64Word.create(high, low);
// }
});
C_x64.WordArray = Base.extend({
/**
* Initializes a newly created word array.
*
* @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.
* @param {number} sigBytes (Optional) The number of significant bytes in the words.
*
* @example
*
* var wordArray = CryptoJS.x64.WordArray.create();
*
* var wordArray = CryptoJS.x64.WordArray.create([
* CryptoJS.x64.Word.create(0x00010203, 0x04050607),
* CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)
* ]);
*
* var wordArray = CryptoJS.x64.WordArray.create([
* CryptoJS.x64.Word.create(0x00010203, 0x04050607),
* CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)
* ], 10);
*/
init: function(words, sigBytes) {
words = this.words = words || [];
if (sigBytes != undefined$1) {
this.sigBytes = sigBytes;
} else {
this.sigBytes = words.length * 8;
}
},
/**
* Converts this 64-bit word array to a 32-bit word array.
*
* @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.
*
* @example
*
* var x32WordArray = x64WordArray.toX32();
*/
toX32: function() {
var x64Words = this.words;
var x64WordsLength = x64Words.length;
var x32Words = [];
for (var i = 0; i < x64WordsLength; i++) {
var x64Word = x64Words[i];
x32Words.push(x64Word.high);
x32Words.push(x64Word.low);
}
return X32WordArray.create(x32Words, this.sigBytes);
},
/**
* Creates a copy of this word array.
*
* @return {X64WordArray} The clone.
*
* @example
*
* var clone = x64WordArray.clone();
*/
clone: function() {
var clone = Base.clone.call(this);
var words = clone.words = this.words.slice(0);
var wordsLength = words.length;
for (var i = 0; i < wordsLength; i++) {
words[i] = words[i].clone();
}
return clone;
}
});
})();
return CryptoJS;
});
})(x64Core);
return x64Core.exports;
}
var libTypedarrays = { exports: {} };
var hasRequiredLibTypedarrays;
function requireLibTypedarrays() {
if (hasRequiredLibTypedarrays)
return libTypedarrays.exports;
hasRequiredLibTypedarrays = 1;
(function(module, exports) {
(function(root, factory) {
{
module.exports = factory(requireCore());
}
})(commonjsGlobal, function(CryptoJS) {
(function() {
if (typeof ArrayBuffer != "function") {
return;
}
var C = CryptoJS;
var C_lib = C.lib;
var WordArray = C_lib.WordArray;
var superInit = WordArray.init;
var subInit = WordArray.init = function(typedArray) {
if (typedArray instanceof ArrayBuffer) {
typedArray = new Uint8Array(typedArray);
}
if (typedArray instanceof Int8Array || typeof Uint8ClampedArray !== "undefined" && typedArray instanceof Uint8ClampedArray || typedArray instanceof Int16Array || typedArray instanceof Uint16Array || typedArray instanceof Int32Array || typedArray instanceof Uint32Array || typedArray instanceof Float32Array || typedArray instanceof Float64Array) {
typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);
}
if (typedArray instanceof Uint8Array) {
var typedArrayByteLength = typedArray.byteLength;
var words = [];
for (var i = 0; i < typedArrayByteLength; i++) {
words[i >>> 2] |= typedArray[i] << 24 - i % 4 * 8;
}
superInit.call(this, words, typedArrayByteLength);
} else {
superInit.apply(this, arguments);
}
};
subInit.prototype = WordArray;
})();
return CryptoJS.lib.WordArray;
});
})(libTypedarrays);
return libTypedarrays.exports;
}
var encUtf16 = { exports: {} };
var hasRequiredEncUtf16;
function requireEncUtf16() {
if (hasRequiredEncUtf16)
return encUtf16.exports;
hasRequiredEncUtf16 = 1;
(function(module, exports) {
(function(root, factory) {
{
module.exports = factory(requireCore());
}
})(commonjsGlobal, function(CryptoJS) {
(function() {
var C = CryptoJS;
var C_lib = C.lib;
var WordArray = C_lib.WordArray;
var C_enc = C.enc;
C_enc.Utf16 = C_enc.Utf16BE = {
/**
* Converts a word array to a UTF-16 BE string.
*
* @param {WordArray} wordArray The word array.
*
* @return {string} The UTF-16 BE string.
*
* @static
*
* @example
*
* var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);
*/
stringify: function(wordArray) {
var words = wordArray.words;
var sigBytes = wordArray.sigBytes;
var utf16Chars = [];
for (var i = 0; i < sigBytes; i += 2) {
var codePoint = words[i >>> 2] >>> 16 - i % 4 * 8 & 65535;
utf16Chars.push(String.fromCharCode(codePoint));
}
return utf16Chars.join("");
},
/**
* Converts a UTF-16 BE string to a word array.
*
* @param {string} utf16Str The UTF-16 BE string.
*
* @return {WordArray} The word array.
*
* @static
*
* @example
*
* var wordArray = CryptoJS.enc.Utf16.parse(utf16String);
*/
parse: function(utf16Str) {
var utf16StrLength = utf16Str.length;
var words = [];
for (var i = 0; i < utf16StrLength; i++) {
words[i >>> 1] |= utf16Str.charCodeAt(i) << 16 - i % 2 * 16;
}
return WordArray.create(words, utf16StrLength * 2);
}
};
C_enc.Utf16LE = {
/**
* Converts a word array to a UTF-16 LE string.
*
* @param {WordArray} wordArray The word array.
*
* @return {string} The UTF-16 LE string.
*
* @static
*
* @example
*
* var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);
*/
stringify: function(wordArray) {
var words = wordArray.words;
var sigBytes = wordArray.sigBytes;
var utf16Chars = [];
for (var i = 0; i < sigBytes; i += 2) {
var codePoint = swapEndian(words[i >>> 2] >>> 16 - i % 4 * 8 & 65535);
utf16Chars.push(String.fromCharCode(codePoint));
}
return utf16Chars.join("");
},
/**
* Converts a UTF-16 LE string to a word array.
*
* @param {string} utf16Str The UTF-16 LE string.
*
* @return {WordArray} The word array.
*
* @static
*
* @example
*
* var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);
*/
parse: function(utf16Str) {
var utf16StrLength = utf16Str.length;
var words = [];
for (var i = 0; i < utf16StrLength; i++) {
words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << 16 - i % 2 * 16);
}
return WordArray.create(words, utf16StrLength * 2);
}
};
function swapEndian(word) {
return word << 8 & 4278255360 | word >>> 8 & 16711935;
}
})();
return CryptoJS.enc.Utf16;
});
})(encUtf16);
return encUtf16.exports;
}
var encBase64 = { exports: {} };
var hasRequiredEncBase64;
function requireEncBase64() {
if (hasRequiredEncBase64)
return encBase64.exports;
hasRequiredEncBase64 = 1;
(function(module, exports) {
(function(root, factory) {
{
module.exports = factory(requireCore());
}
})(commonjsGlobal, function(CryptoJS) {
(function() {
var C = CryptoJS;
var C_lib = C.lib;
var WordArray = C_lib.WordArray;
var C_enc = C.enc;
C_enc.Base64 = {
/**
* Converts a word array to a Base64 string.
*
* @param {WordArray} wordArray The word array.
*
* @return {string} The Base64 string.
*
* @static
*
* @example
*
* var base64String = CryptoJS.enc.Base64.stringify(wordArray);
*/
stringify: function(wordArray) {
var words = wordArray.words;
var sigBytes = wordArray.sigBytes;
var map = this._map;
wordArray.clamp();
var base64Chars = [];
for (var i = 0; i < sigBytes; i += 3) {
var byte1 = words[i >>> 2] >>> 24 - i % 4 * 8 & 255;
var byte2 = words[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 255;
var byte3 = words[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 255;
var triplet = byte1 << 16 | byte2 << 8 | byte3;
for (var j = 0; j < 4 && i + j * 0.75 < sigBytes; j++) {
base64Chars.push(map.charAt(triplet >>> 6 * (3 - j) & 63));
}
}
var paddingChar = map.charAt(64);
if (paddingChar) {
while (base64Chars.length % 4) {
base64Chars.push(paddingChar);
}
}
return base64Chars.join("");
},
/**
* Converts a Base64 string to a word array.
*
* @param {string} base64Str The Base64 string.
*
* @return {WordArray} The word array.
*
* @static
*
* @example
*
* var wordArray = CryptoJS.enc.Base64.parse(base64String);
*/
parse: function(base64Str) {
var base64StrLength = base64Str.length;
var map = this._map;
var reverseMap = this._reverseMap;
if (!reverseMap) {
reverseMap = this._reverseMap = [];
for (var j = 0; j < map.length; j++) {
reverseMap[map.charCodeAt(j)] = j;
}
}
var paddingChar = map.charAt(64);
if (paddingChar) {
var paddingIndex = base64Str.indexOf(paddingChar);
if (paddingIndex !== -1) {
base64StrLength = paddingIndex;
}
}
return parseLoop(base64Str, base64StrLength, reverseMap);
},
_map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
};
function parseLoop(base64Str, base64StrLength, reverseMap) {
var words = [];
var nBytes = 0;
for (var i = 0; i < base64StrLength; i++) {
if (i % 4) {
var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << i % 4 * 2;
var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> 6 - i % 4 * 2;
var bitsCombined = bits1 | bits2;
words[nBytes >>> 2] |= bitsCombined << 24 - nBytes % 4 * 8;
nBytes++;
}
}
return WordArray.create(words, nBytes);
}
})();
return CryptoJS.enc.Base64;
});
})(encBase64);
return encBase64.exports;
}
var encBase64url = { exports: {} };
var hasRequiredEncBase64url;
function requireEncBase64url() {
if (hasRequiredEncBase64url)
return encBase64url.exports;
hasRequiredEncBase64url = 1;
(function(module, exports) {
(function(root, factory) {
{
module.exports = factory(requireCore());
}
})(commonjsGlobal, function(CryptoJS) {
(function() {
var C = CryptoJS;
var C_lib = C.lib;
var WordArray = C_lib.WordArray;
var C_enc = C.enc;
C_enc.Base64url = {
/**
* Converts a word array to a Base64url string.
*
* @param {WordArray} wordArray The word array.
*
* @param {boolean} urlSafe Whether to use url safe
*
* @return {string} The Base64url string.
*
* @static
*
* @example
*
* var base64String = CryptoJS.enc.Base64url.stringify(wordArray);
*/
stringify: function(wordArray, urlSafe) {
if (urlSafe === void 0) {
urlSafe = true;
}
var words = wordArray.words;
var sigBytes = wordArray.sigBytes;
var map = urlSafe ? this._safe_map : this._map;
wordArray.clamp();
var base64Chars = [];
for (var i = 0; i < sigBytes; i += 3) {
var byte1 = words[i >>> 2] >>> 24 - i % 4 * 8 & 255;
var byte2 = words[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 255;
var byte3 = words[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 255;
var triplet = byte1 << 16 | byte2 << 8 | byte3;
for (var j = 0; j < 4 && i + j * 0.75 < sigBytes; j++) {
base64Chars.push(map.charAt(triplet >>> 6 * (3 - j) & 63));
}
}
var paddingChar = map.charAt(64);
if (paddingChar) {
while (base64Chars.length % 4) {
base64Chars.push(paddingChar);
}
}
return base64Chars.join("");
},
/**
* Converts a Base64url string to a word array.
*
* @param {string} base64Str The Base64url string.
*
* @param {boolean} urlSafe Whether to use url safe
*
* @return {WordArray} The word array.
*
* @static
*
* @example
*
* var wordArray = CryptoJS.enc.Base64url.parse(base64String);
*/
parse: function(base64Str, urlSafe) {
if (urlSafe === void 0) {
urlSafe = true;
}
var base64StrLength = base64Str.length;
var map = urlSafe ? this._safe_map : this._map;
var reverseMap = this._reverseMap;
if (!reverseMap) {
reverseMap = this._reverseMap = [];
for (var j = 0; j < map.length; j++) {
reverseMap[map.charCodeAt(j)] = j;
}
}
var paddingChar = map.charAt(64);
if (paddingChar) {
var paddingIndex = base64Str.indexOf(paddingChar);
if (paddingIndex !== -1) {
base64StrLength = paddingIndex;
}
}
return parseLoop(base64Str, base64StrLength, reverseMap);
},
_map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
_safe_map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"
};
function parseLoop(base64Str, base64StrLength, reverseMap) {
var words = [];
var nBytes = 0;
for (var i = 0; i < base64StrLength; i++) {
if (i % 4) {
var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << i % 4 * 2;
var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> 6 - i % 4 * 2;
var bitsCombined = bits1 | bits2;
words[nBytes >>> 2] |= bitsCombined << 24 - nBytes % 4 * 8;
nBytes++;
}
}
return WordArray.create(words, nBytes);
}
})();
return CryptoJS.enc.Base64url;
});
})(encBase64url);
return encBase64url.exports;
}
var md5 = { exports: {} };
var hasRequiredMd5;
function requireMd5() {
if (hasRequiredMd5)
return md5.exports;
hasRequiredMd5 = 1;
(function(module, exports) {
(function(root, factory) {
{
module.exports = factory(requireCore());
}
})(commonjsGlobal, function(CryptoJS) {
(function(Math2) {
var C = CryptoJS;
var C_lib = C.lib;
var WordArray = C_lib.WordArray;
var Hasher = C_lib.Hasher;
var C_algo = C.algo;
var T = [];
(function() {
for (var i = 0; i < 64; i++) {
T[i] = Math2.abs(Math2.sin(i + 1)) * 4294967296 | 0;
}
})();
var MD5 = C_algo.MD5 = Hasher.extend({
_doReset: function() {
this._hash = new WordArray.init([
1732584193,
4023233417,
2562383102,
271733878
]);
},
_doProcessBlock: function(M, offset) {
for (var i = 0; i < 16; i++) {
var offset_i = offset + i;
var M_offset_i = M[offset_i];
M[offset_i] = (M_offset_i << 8 | M_offset_i >>> 24) & 16711935 | (M_offset_i << 24 | M_offset_i >>> 8) & 4278255360;
}
var H = this._hash.words;
var M_offset_0 = M[offset + 0];
var M_offset_1 = M[offset + 1];
var M_offset_2 = M[offset + 2];
var M_offset_3 = M[offset + 3];
var M_offset_4 = M[offset + 4];
var M_offset_5 = M[offset + 5];
var M_offset_6 = M[offset + 6];
var M_offset_7 = M[offset + 7];
var M_offset_8 = M[offset + 8];
var M_offset_9 = M[offset + 9];
var M_offset_10 = M[offset + 10];
var M_offset_11 = M[offset + 11];
var M_offset_12 = M[offset + 12];
var M_offset_13 = M[offset + 13];
var M_offset_14 = M[offset + 14];
var M_offset_15 = M[offset + 15];
var a = H[0];
var b2 = H[1];
var c2 = H[2];
var d2 = H[3];
a = FF(a, b2, c2, d2, M_offset_0, 7, T[0]);
d2 = FF(d2, a, b2, c2, M_offset_1, 12, T[1]);
c2 = FF(c2, d2, a, b2, M_offset_2, 17, T[2]);
b2 = FF(b2, c2, d2, a, M_offset_3, 22, T[3]);
a = FF(a, b2, c2, d2, M_offset_4, 7, T[4]);
d2 = FF(d2, a, b2, c2, M_offset_5, 12, T[5]);
c2 = FF(c2, d2, a, b2, M_offset_6, 17, T[6]);
b2 = FF(b2, c2, d2, a, M_offset_7, 22, T[7]);
a = FF(a, b2, c2, d2, M_offset_8, 7, T[8]);
d2 = FF(d2, a, b2, c2, M_offset_9, 12, T[9]);
c2 = FF(c2, d2, a, b2, M_offset_10, 17, T[10]);
b2 = FF(b2, c2, d2, a, M_offset_11, 22, T[11]);
a = FF(a, b2, c2, d2, M_offset_12, 7, T[12]);
d2 = FF(d2, a, b2, c2, M_offset_13, 12, T[13]);
c2 = FF(c2, d2, a, b2, M_offset_14, 17, T[14]);
b2 = FF(b2, c2, d2, a, M_offset_15, 22, T[15]);
a = GG(a, b2, c2, d2, M_offset_1, 5, T[16]);
d2 = GG(d2, a, b2, c2, M_offset_6, 9, T[17]);
c2 = GG(c2, d2, a, b2, M_offset_11, 14, T[18]);
b2 = GG(b2, c2, d2, a, M_offset_0, 20, T[19]);
a = GG(a, b2, c2, d2, M_offset_5, 5, T[20]);
d2 = GG(d2, a, b2, c2, M_offset_10, 9, T[21]);
c2 = GG(c2, d2, a, b2, M_offset_15, 14, T[22]);
b2 = GG(b2, c2, d2, a, M_offset_4, 20, T[23]);
a = GG(a, b2, c2, d2, M_offset_9, 5, T[24]);
d2 = GG(d2, a, b2, c2, M_offset_14, 9, T[25]);
c2 = GG(c2, d2, a, b2, M_offset_3, 14, T[26]);
b2 = GG(b2, c2, d2, a, M_offset_8, 20, T[27]);
a = GG(a, b2, c2, d2, M_offset_13, 5, T[28]);
d2 = GG(d2, a, b2, c2, M_offset_2, 9, T[29]);
c2 = GG(c2, d2, a, b2, M_offset_7, 14, T[30]);
b2 = GG(b2, c2, d2, a, M_offset_12, 20, T[31]);
a = HH(a, b2, c2, d2, M_offset_5, 4, T[32]);
d2 = HH(d2, a, b2, c2, M_offset_8, 11, T[33]);
c2 = HH(c2, d2, a, b2, M_offset_11, 16, T[34]);
b2 = HH(b2, c2, d2, a, M_offset_14, 23, T[35]);
a = HH(a, b2, c2, d2, M_offset_1, 4, T[36]);
d2 = HH(d2, a, b2, c2, M_offset_4, 11, T[37]);
c2 = HH(c2, d2, a, b2, M_offset_7, 16, T[38]);
b2 = HH(b2, c2, d2, a, M_offset_10, 23, T[39]);
a = HH(a, b2, c2, d2, M_offset_13, 4, T[40]);
d2 = HH(d2, a, b2, c2, M_offset_0, 11, T[41]);
c2 = HH(c2, d2, a, b2, M_offset_3, 16, T[42]);
b2 = HH(b2, c2, d2, a, M_offset_6, 23, T[43]);
a = HH(a, b2, c2, d2, M_offset_9, 4, T[44]);
d2 = HH(d2, a, b2, c2, M_offset_12, 11, T[45]);
c2 = HH(c2, d2, a, b2, M_offset_15, 16, T[46]);
b2 = HH(b2, c2, d2, a, M_offset_2, 23, T[47]);
a = II(a, b2, c2, d2, M_offset_0, 6, T[48]);
d2 = II(d2, a, b2, c2, M_offset_7, 10, T[49]);
c2 = II(c2, d2, a, b2, M_offset_14, 15, T[50]);
b2 = II(b2, c2, d2, a, M_offset_5, 21, T[51]);
a = II(a, b2, c2, d2, M_offset_12, 6, T[52]);
d2 = II(d2, a, b2, c2, M_offset_3, 10, T[53]);
c2 = II(c2, d2, a, b2, M_offset_10, 15, T[54]);
b2 = II(b2, c2, d2, a, M_offset_1, 21, T[55]);
a = II(a, b2, c2, d2, M_offset_8, 6, T[56]);
d2 = II(d2, a, b2, c2, M_offset_15, 10, T[57]);
c2 = II(c2, d2, a, b2, M_offset_6, 15, T[58]);
b2 = II(b2, c2, d2, a, M_offset_13, 21, T[59]);
a = II(a, b2, c2, d2, M_offset_4, 6, T[60]);
d2 = II(d2, a, b2, c2, M_offset_11, 10, T[61]);
c2 = II(c2, d2, a, b2, M_offset_2, 15, T[62]);
b2 = II(b2, c2, d2, a, M_offset_9, 21, T[63]);
H[0] = H[0] + a | 0;
H[1] = H[1] + b2 | 0;
H[2] = H[2] + c2 | 0;
H[3] = H[3] + d2 | 0;
},
_doFinalize: function() {
var data = this._data;
var dataWords = data.words;
var nBitsTotal = this._nDataBytes * 8;
var nBitsLeft = data.sigBytes * 8;
dataWords[nBitsLeft >>> 5] |= 128 << 24 - nBitsLeft % 32;
var nBitsTotalH = Math2.floor(nBitsTotal / 4294967296);
var nBitsTotalL = nBitsTotal;
dataWords[(nBitsLeft + 64 >>> 9 << 4) + 15] = (nBitsTotalH << 8 | nBitsTotalH >>> 24) & 16711935 | (nBitsTotalH << 24 | nBitsTotalH >>> 8) & 4278255360;
dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = (nBitsTotalL << 8 | nBitsTotalL >>> 24) & 16711935 | (nBitsTotalL << 24 | nBitsTotalL >>> 8) & 4278255360;
data.sigBytes = (dataWords.length + 1) * 4;
this._process();
var hash = this._hash;
var H = hash.words;
for (var i = 0; i < 4; i++) {
var H_i = H[i];
H[i] = (H_i << 8 | H_i >>> 24) & 16711935 | (H_i << 24 | H_i >>> 8) & 4278255360;
}
return hash;
},
clone: function() {
var clone = Hasher.clone.call(this);
clone._hash = this._hash.clone();
return clone;
}
});
function FF(a, b2, c2, d2, x, s, t2) {
var n2 = a + (b2 & c2 | ~b2 & d2) + x + t2;
return (n2 << s | n2 >>> 32 - s) + b2;
}
function GG(a, b2, c2, d2, x, s, t2) {
var n2 = a + (b2 & d2 | c2 & ~d2) + x + t2;
return (n2 << s | n2 >>> 32 - s) + b2;
}
function HH(a, b2, c2, d2, x, s, t2) {
var n2 = a + (b2 ^ c2 ^ d2) + x + t2;
return (n2 << s | n2 >>> 32 - s) + b2;
}
function II(a, b2, c2, d2, x, s, t2) {
var n2 = a + (c2 ^ (b2 | ~d2)) + x + t2;
return (n2 << s | n2 >>> 32 - s) + b2;
}
C.MD5 = Hasher._createHelper(MD5);
C.HmacMD5 = Hasher._createHmacHelper(MD5);
})(Math);
return CryptoJS.MD5;
});
})(md5);
return md5.exports;
}
var sha1 = { exports: {} };
var hasRequiredSha1;
function requireSha1() {
if (hasRequiredSha1)
return sha1.exports;
hasRequiredSha1 = 1;
(function(module, exports) {
(function(root, factory) {
{
module.exports = factory(requireCore());
}
})(commonjsGlobal, function(CryptoJS) {
(function() {
var C = CryptoJS;
var C_lib = C.lib;
var WordArray = C_lib.WordArray;
var Hasher = C_lib.Hasher;
var C_algo = C.algo;
var W = [];
var SHA1 = C_algo.SHA1 = Hasher.extend({
_doReset: function() {
this._hash = new WordArray.init([
1732584193,
4023233417,
2562383102,
271733878,
3285377520
]);
},
_doProcessBlock: function(M, offset) {
var H = this._hash.words;
var a = H[0];
var b2 = H[1];
var c2 = H[2];
var d2 = H[3];
var e2 = H[4];
for (var i = 0; i < 80; i++) {
if (i < 16) {
W[i] = M[offset + i] | 0;
} else {
var n2 = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];
W[i] = n2 << 1 | n2 >>> 31;
}
var t2 = (a << 5 | a >>> 27) + e2 + W[i];
if (i < 20) {
t2 += (b2 & c2 | ~b2 & d2) + 1518500249;
} else if (i < 40) {
t2 += (b2 ^ c2 ^ d2) + 1859775393;
} else if (i < 60) {
t2 += (b2 & c2 | b2 & d2 | c2 & d2) - 1894007588;
} else {
t2 += (b2 ^ c2 ^ d2) - 899497514;
}
e2 = d2;
d2 = c2;
c2 = b2 << 30 | b2 >>> 2;
b2 = a;
a = t2;
}
H[0] = H[0] + a | 0;
H[1] = H[1] + b2 | 0;
H[2] = H[2] + c2 | 0;
H[3] = H[3] + d2 | 0;
H[4] = H[4] + e2 | 0;
},
_doFinalize: function() {
var data = this._data;
var dataWords = data.words;
var nBitsTotal = this._nDataBytes * 8;
var nBitsLeft = data.sigBytes * 8;
dataWords[nBitsLeft >>> 5] |= 128 << 24 - nBitsLeft % 32;
dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = Math.floor(nBitsTotal / 4294967296);
dataWords[(nBitsLeft + 64 >>> 9 << 4) + 15] = nBitsTotal;
data.sigBytes = dataWords.length * 4;
this._process();
return this._hash;
},
clone: function() {
var clone = Hasher.clone.call(this);
clone._hash = this._hash.clone();
return clone;
}
});
C.SHA1 = Hasher._createHelper(SHA1);
C.HmacSHA1 = Hasher._createHmacHelper(SHA1);
})();
return CryptoJS.SHA1;
});
})(sha1);
return sha1.exports;
}
var sha256 = { exports: {} };
var hasRequiredSha256;
function requireSha256() {
if (hasRequiredSha256)
return sha256.exports;
hasRequiredSha256 = 1;
(function(module, exports) {
(function(root, factory) {
{
module.exports = factory(requireCore());
}
})(commonjsGlobal, function(CryptoJS) {
(function(Math2) {
var C = CryptoJS;
var C_lib = C.lib;
var WordArray = C_lib.WordArray;
var Hasher = C_lib.Hasher;
var C_algo = C.algo;
var H = [];
var K = [];
(function() {
function isPrime(n3) {
var sqrtN = Math2.sqrt(n3);
for (var factor = 2; factor <= sqrtN; factor++) {
if (!(n3 % factor)) {
return false;
}
}
return true;
}
function getFractionalBits(n3) {
return (n3 - (n3 | 0)) * 4294967296 | 0;
}
var n2 = 2;
var nPrime = 0;
while (nPrime < 64) {
if (isPrime(n2)) {
if (nPrime < 8) {
H[nPrime] = getFractionalBits(Math2.pow(n2, 1 / 2));
}
K[nPrime] = getFractionalBits(Math2.pow(n2, 1 / 3));
nPrime++;
}
n2++;
}
})();
var W = [];
var SHA256 = C_algo.SHA256 = Hasher.extend({
_doReset: function() {
this._hash = new WordArray.init(H.slice(0));
},
_doProcessBlock: function(M, offset) {
var H2 = this._hash.words;
var a = H2[0];
var b2 = H2[1];
var c2 = H2[2];
var d2 = H2[3];
var e2 = H2[4];
var f2 = H2[5];
var g2 = H2[6];
var h2 = H2[7];
for (var i = 0; i < 64; i++) {
if (i < 16) {
W[i] = M[offset + i] | 0;
} else {
var gamma0x = W[i - 15];
var gamma0 = (gamma0x << 25 | gamma0x >>> 7) ^ (gamma0x << 14 | gamma0x >>> 18) ^ gamma0x >>> 3;
var gamma1x = W[i - 2];
var gamma1 = (gamma1x << 15 | gamma1x >>> 17) ^ (gamma1x << 13 | gamma1x >>> 19) ^ gamma1x >>> 10;
W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];
}
var ch = e2 & f2 ^ ~e2 & g2;
var maj = a & b2 ^ a & c2 ^ b2 & c2;
var sigma0 = (a << 30 | a >>> 2) ^ (a << 19 | a >>> 13) ^ (a << 10 | a >>> 22);
var sigma1 = (e2 << 26 | e2 >>> 6) ^ (e2 << 21 | e2 >>> 11) ^ (e2 << 7 | e2 >>> 25);
var t1 = h2 + sigma1 + ch + K[i] + W[i];
var t2 = sigma0 + maj;
h2 = g2;
g2 = f2;
f2 = e2;
e2 = d2 + t1 | 0;
d2 = c2;
c2 = b2;
b2 = a;
a = t1 + t2 | 0;
}
H2[0] = H2[0] + a | 0;
H2[1] = H2[1] + b2 | 0;
H2[2] = H2[2] + c2 | 0;
H2[3] = H2[3] + d2 | 0;
H2[4] = H2[4] + e2 | 0;
H2[5] = H2[5] + f2 | 0;
H2[6] = H2[6] + g2 | 0;
H2[7] = H2[7] + h2 | 0;
},
_doFinalize: function() {
var data = this._data;
var dataWords = data.words;
var nBitsTotal = this._nDataBytes * 8;
var nBitsLeft = data.sigBytes * 8;
dataWords[nBitsLeft >>> 5] |= 128 << 24 - nBitsLeft % 32;
dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = Math2.floor(nBitsTotal / 4294967296);
dataWords[(nBitsLeft + 64 >>> 9 << 4) + 15] = nBitsTotal;
data.sigBytes = dataWords.length * 4;
this._process();
return this._hash;
},
clone: function() {
var clone = Hasher.clone.call(this);
clone._hash = this._hash.clone();
return clone;
}
});
C.SHA256 = Hasher._createHelper(SHA256);
C.HmacSHA256 = Hasher._createHmacHelper(SHA256);
})(Math);
return CryptoJS.SHA256;
});
})(sha256);
return sha256.exports;
}
var sha224 = { exports: {} };
var hasRequiredSha224;
function requireSha224() {
if (hasRequiredSha224)
return sha224.exports;
hasRequiredSha224 = 1;
(function(module, exports) {
(function(root, factory, undef) {
{
module.exports = factory(requireCore(), requireSha256());
}
})(commonjsGlobal, function(CryptoJS) {
(function() {
var C = CryptoJS;
var C_lib = C.lib;
var WordArray = C_lib.WordArray;
var C_algo = C.algo;
var SHA256 = C_algo.SHA256;
var SHA224 = C_algo.SHA224 = SHA256.extend({
_doReset: function() {
this._hash = new WordArray.init([
3238371032,
914150663,
812702999,
4144912697,
4290775857,
1750603025,
1694076839,
3204075428
]);
},
_doFinalize: function() {
var hash = SHA256._doFinalize.call(this);
hash.sigBytes -= 4;
return hash;
}
});
C.SHA224 = SHA256._createHelper(SHA224);
C.HmacSHA224 = SHA256._createHmacHelper(SHA224);
})();
return CryptoJS.SHA224;
});
})(sha224);
return sha224.exports;
}
var sha512 = { exports: {} };
var hasRequiredSha512;
function requireSha512() {
if (hasRequiredSha512)
return sha512.exports;
hasRequiredSha512 = 1;
(function(module, exports) {
(function(root, factory, undef) {
{
module.exports = factory(requireCore(), requireX64Core());
}
})(commonjsGlobal, function(CryptoJS) {
(function() {
var C = CryptoJS;
var C_lib = C.lib;
var Hasher = C_lib.Hasher;
var C_x64 = C.x64;
var X64Word = C_x64.Word;
var X64WordArray = C_x64.WordArray;
var C_algo = C.algo;
function X64Word_create() {
return X64Word.create.apply(X64Word, arguments);
}
var K = [
X64Word_create(1116352408, 3609767458),
X64Word_create(1899447441, 602891725),
X64Word_create(3049323471, 3964484399),
X64Word_create(3921009573, 2173295548),
X64Word_create(961987163, 4081628472),
X64Word_create(1508970993, 3053834265),
X64Word_create(2453635748, 2937671579),
X64Word_create(2870763221, 3664609560),
X64Word_create(3624381080, 2734883394),
X64Word_create(310598401, 1164996542),
X64Word_create(607225278, 1323610764),
X64Word_create(1426881987, 3590304994),
X64Word_create(1925078388, 4068182383),
X64Word_create(2162078206, 991336113),
X64Word_create(2614888103, 633803317),
X64Word_create(3248222580, 3479774868),
X64Word_create(3835390401, 2666613458),
X64Word_create(4022224774, 944711139),
X64Word_create(264347078, 2341262773),
X64Word_create(604807628, 2007800933),
X64Word_create(770255983, 1495990901),
X64Word_create(1249150122, 1856431235),
X64Word_create(1555081692, 3175218132),
X64Word_create(1996064986, 2198950837),
X64Word_create(2554220882, 3999719339),
X64Word_create(2821834349, 766784016),
X64Word_create(2952996808, 2566594879),
X64Word_create(3210313671, 3203337956),
X64Word_create(3336571891, 1034457026),
X64Word_create(3584528711, 2466948901),
X64Word_create(113926993, 3758326383),
X64Word_create(338241895, 168717936),
X64Word_create(666307205, 1188179964),
X64Word_create(773529912, 1546045734),
X64Word_create(1294757372, 1522805485),
X64Word_create(1396182291, 2643833823),
X64Word_create(1695183700, 2343527390),
X64Word_create(1986661051, 1014477480),
X64Word_create(2177026350, 1206759142),
X64Word_create(2456956037, 344077627),
X64Word_create(2730485921, 1290863460),
X64Word_create(2820302411, 3158454273),
X64Word_create(3259730800, 3505952657),
X64Word_create(3345764771, 106217008),
X64Word_create(3516065817, 3606008344),
X64Word_create(3600352804, 1432725776),
X64Word_create(4094571909, 1467031594),
X64Word_create(275423344, 851169720),
X64Word_create(430227734, 3100823752),
X64Word_create(506948616, 1363258195),
X64Word_create(659060556, 3750685593),
X64Word_create(883997877, 3785050280),
X64Word_create(958139571, 3318307427),
X64Word_create(1322822218, 3812723403),
X64Word_create(1537002063, 2003034995),
X64Word_create(1747873779, 3602036899),
X64Word_create(1955562222, 1575990012),
X64Word_create(2024104815, 1125592928),
X64Word_create(2227730452, 2716904306),
X64Word_create(2361852424, 442776044),
X64Word_create(2428436474, 593698344),
X64Word_create(2756734187, 3733110249),
X64Word_create(3204031479, 2999351573),
X64Word_create(3329325298, 3815920427),
X64Word_create(3391569614, 3928383900),
X64Word_create(3515267271, 566280711),
X64Word_create(3940187606, 3454069534),
X64Word_create(4118630271, 4000239992),
X64Word_create(116418474, 1914138554),
X64Word_create(174292421, 2731055270),
X64Word_create(289380356, 3203993006),
X64Word_create(460393269, 320620315),
X64Word_create(685471733, 587496836),
X64Word_create(852142971, 1086792851),
X64Word_create(1017036298, 365543100),
X64Word_create(1126000580, 2618297676),
X64Word_create(1288033470, 3409855158),
X64Word_create(1501505948, 4234509866),
X64Word_create(1607167915, 987167468),
X64Word_create(1816402316, 1246189591)
];
var W = [];
(function() {
for (var i = 0; i < 80; i++) {
W[i] = X64Word_create();
}
})();
var SHA512 = C_algo.SHA512 = Hasher.extend({
_doReset: function() {
this._hash = new X64WordArray.init([
new X64Word.init(1779033703, 4089235720),
new X64Word.init(3144134277, 2227873595),
new X64Word.init(1013904242, 4271175723),
new X64Word.init(2773480762, 1595750129),
new X64Word.init(1359893119, 2917565137),
new X64Word.init(2600822924, 725511199),
new X64Word.init(528734635, 4215389547),
new X64Word.init(1541459225, 327033209)
]);
},
_doProcessBlock: function(M, offset) {
var H = this._hash.words;
var H0 = H[0];
var H1 = H[1];
var H2 = H[2];
var H3 = H[3];
var H4 = H[4];
var H5 = H[5];
var H6 = H[6];
var H7 = H[7];
var H0h = H0.high;
var H0l = H0.low;
var H1h = H1.high;
var H1l = H1.low;
var H2h = H2.high;
var H2l = H2.low;
var H3h = H3.high;
var H3l = H3.low;
var H4h = H4.high;
var H4l = H4.low;
var H5h = H5.high;
var H5l = H5.low;
var H6h = H6.high;
var H6l = H6.low;
var H7h = H7.high;
var H7l = H7.low;
var ah = H0h;
var al = H0l;
var bh = H1h;
var bl = H1l;
var ch = H2h;
var cl = H2l;
var dh = H3h;
var dl = H3l;
var eh = H4h;
var el = H4l;
var fh = H5h;
var fl = H5l;
var gh = H6h;
var gl = H6l;
var hh = H7h;
var hl = H7l;
for (var i = 0; i < 80; i++) {
var Wil;
var Wih;
var Wi = W[i];
if (i < 16) {
Wih = Wi.high = M[offset + i * 2] | 0;
Wil = Wi.low = M[offset + i * 2 + 1] | 0;
} else {
var gamma0x = W[i - 15];
var gamma0xh = gamma0x.high;
var gamma0xl = gamma0x.low;
var gamma0h = (gamma0xh >>> 1 | gamma0xl << 31) ^ (gamma0xh >>> 8 | gamma0xl << 24) ^ gamma0xh >>> 7;
var gamma0l = (gamma0xl >>> 1 | gamma0xh << 31) ^ (gamma0xl >>> 8 | gamma0xh << 24) ^ (gamma0xl >>> 7 | gamma0xh << 25);
var gamma1x = W[i - 2];
var gamma1xh = gamma1x.high;
var gamma1xl = gamma1x.low;
var gamma1h = (gamma1xh >>> 19 | gamma1xl << 13) ^ (gamma1xh << 3 | gamma1xl >>> 29) ^ gamma1xh >>> 6;
var gamma1l = (gamma1xl >>> 19 | gamma1xh << 13) ^ (gamma1xl << 3 | gamma1xh >>> 29) ^ (gamma1xl >>> 6 | gamma1xh << 26);
var Wi7 = W[i - 7];
var Wi7h = Wi7.high;
var Wi7l = Wi7.low;
var Wi16 = W[i - 16];
var Wi16h = Wi16.high;
var Wi16l = Wi16.low;
Wil = gamma0l + Wi7l;
Wih = gamma0h + Wi7h + (Wil >>> 0 < gamma0l >>> 0 ? 1 : 0);
Wil = Wil + gamma1l;
Wih = Wih + gamma1h + (Wil >>> 0 < gamma1l >>> 0 ? 1 : 0);
Wil = Wil + Wi16l;
Wih = Wih + Wi16h + (Wil >>> 0 < Wi16l >>> 0 ? 1 : 0);
Wi.high = Wih;
Wi.low = Wil;
}
var chh = eh & fh ^ ~eh & gh;
var chl = el & fl ^ ~el & gl;
var majh = ah & bh ^ ah & ch ^ bh & ch;
var majl = al & bl ^ al & cl ^ bl & cl;
var sigma0h = (ah >>> 28 | al << 4) ^ (ah << 30 | al >>> 2) ^ (ah << 25 | al >>> 7);
var sigma0l = (al >>> 28 | ah << 4) ^ (al << 30 | ah >>> 2) ^ (al << 25 | ah >>> 7);
var sigma1h = (eh >>> 14 | el << 18) ^ (eh >>> 18 | el << 14) ^ (eh << 23 | el >>> 9);
var sigma1l = (el >>> 14 | eh << 18) ^ (el >>> 18 | eh << 14) ^ (el << 23 | eh >>> 9);
var Ki = K[i];
var Kih = Ki.high;
var Kil = Ki.low;
var t1l = hl + sigma1l;
var t1h = hh + sigma1h + (t1l >>> 0 < hl >>> 0 ? 1 : 0);
var t1l = t1l + chl;
var t1h = t1h + chh + (t1l >>> 0 < chl >>> 0 ? 1 : 0);
var t1l = t1l + Kil;
var t1h = t1h + Kih + (t1l >>> 0 < Kil >>> 0 ? 1 : 0);
var t1l = t1l + Wil;
var t1h = t1h + Wih + (t1l >>> 0 < Wil >>> 0 ? 1 : 0);
var t2l = sigma0l + majl;
var t2h = sigma0h + majh + (t2l >>> 0 < sigma0l >>> 0 ? 1 : 0);
hh = gh;
hl = gl;
gh = fh;
gl = fl;
fh = eh;
fl = el;
el = dl + t1l | 0;
eh = dh + t1h + (el >>> 0 < dl >>> 0 ? 1 : 0) | 0;
dh = ch;
dl = cl;
ch = bh;
cl = bl;
bh = ah;
bl = al;
al = t1l + t2l | 0;
ah = t1h + t2h + (al >>> 0 < t1l >>> 0 ? 1 : 0) | 0;
}
H0l = H0.low = H0l + al;
H0.high = H0h + ah + (H0l >>> 0 < al >>> 0 ? 1 : 0);
H1l = H1.low = H1l + bl;
H1.high = H1h + bh + (H1l >>> 0 < bl >>> 0 ? 1 : 0);
H2l = H2.low = H2l + cl;
H2.high = H2h + ch + (H2l >>> 0 < cl >>> 0 ? 1 : 0);
H3l = H3.low = H3l + dl;
H3.high = H3h + dh + (H3l >>> 0 < dl >>> 0 ? 1 : 0);
H4l = H4.low = H4l + el;
H4.high = H4h + eh + (H4l >>> 0 < el >>> 0 ? 1 : 0);
H5l = H5.low = H5l + fl;
H5.high = H5h + fh + (H5l >>> 0 < fl >>> 0 ? 1 : 0);
H6l = H6.low = H6l + gl;
H6.high = H6h + gh + (H6l >>> 0 < gl >>> 0 ? 1 : 0);
H7l = H7.low = H7l + hl;
H7.high = H7h + hh + (H7l >>> 0 < hl >>> 0 ? 1 : 0);
},
_doFinalize: function() {
var data = this._data;
var dataWords = data.words;
var nBitsTotal = this._nDataBytes * 8;
var nBitsLeft = data.sigBytes * 8;
dataWords[nBitsLeft >>> 5] |= 128 << 24 - nBitsLeft % 32;
dataWords[(nBitsLeft + 128 >>> 10 << 5) + 30] = Math.floor(nBitsTotal / 4294967296);
dataWords[(nBitsLeft + 128 >>> 10 << 5) + 31] = nBitsTotal;
data.sigBytes = dataWords.length * 4;
this._process();
var hash = this._hash.toX32();
return hash;
},
clone: function() {
var clone = Hasher.clone.call(this);
clone._hash = this._hash.clone();
return clone;
},
blockSize: 1024 / 32
});
C.SHA512 = Hasher._createHelper(SHA512);
C.HmacSHA512 = Hasher._createHmacHelper(SHA512);
})();
return CryptoJS.SHA512;
});
})(sha512);
return sha512.exports;
}
var sha384 = { exports: {} };
var hasRequiredSha384;
function requireSha384() {
if (hasRequiredSha384)
return sha384.exports;
hasRequiredSha384 = 1;
(function(module, exports) {
(function(root, factory, undef) {
{
module.exports = factory(requireCore(), requireX64Core(), requireSha512());
}
})(commonjsGlobal, function(CryptoJS) {
(function() {
var C = CryptoJS;
var C_x64 = C.x64;
var X64Word = C_x64.Word;
var X64WordArray = C_x64.WordArray;
var C_algo = C.algo;
var SHA512 = C_algo.SHA512;
var SHA384 = C_algo.SHA384 = SHA512.extend({
_doReset: function() {
this._hash = new X64WordArray.init([
new X64Word.init(3418070365, 3238371032),
new X64Word.init(1654270250, 914150663),
new X64Word.init(2438529370, 812702999),
new X64Word.init(355462360, 4144912697),
new X64Word.init(1731405415, 4290775857),
new X64Word.init(2394180231, 1750603025),
new X64Word.init(3675008525, 1694076839),
new X64Word.init(1203062813, 3204075428)
]);
},
_doFinalize: function() {
var hash = SHA512._doFinalize.call(this);
hash.sigBytes -= 16;
return hash;
}
});
C.SHA384 = SHA512._createHelper(SHA384);
C.HmacSHA384 = SHA512._createHmacHelper(SHA384);
})();
return CryptoJS.SHA384;
});
})(sha384);
return sha384.exports;
}
var sha3 = { exports: {} };
var hasRequiredSha3;
function requireSha3() {
if (hasRequiredSha3)
return sha3.exports;
hasRequiredSha3 = 1;
(function(module, exports) {
(function(root, factory, undef) {
{
module.exports = factory(requireCore(), requireX64Core());
}
})(commonjsGlobal, function(CryptoJS) {
(function(Math2) {
var C = CryptoJS;
var C_lib = C.lib;
var WordArray = C_lib.WordArray;
var Hasher = C_lib.Hasher;
var C_x64 = C.x64;
var X64Word = C_x64.Word;
var C_algo = C.algo;
var RHO_OFFSETS = [];
var PI_INDEXES = [];
var ROUND_CONSTANTS = [];
(function() {
var x = 1, y = 0;
for (var t2 = 0; t2 < 24; t2++) {
RHO_OFFSETS[x + 5 * y] = (t2 + 1) * (t2 + 2) / 2 % 64;
var newX = y % 5;
var newY = (2 * x + 3 * y) % 5;
x = newX;
y = newY;
}
for (var x = 0; x < 5; x++) {
for (var y = 0; y < 5; y++) {
PI_INDEXES[x + 5 * y] = y + (2 * x + 3 * y) % 5 * 5;
}
}
var LFSR = 1;
for (var i = 0; i < 24; i++) {
var roundConstantMsw = 0;
var roundConstantLsw = 0;
for (var j = 0; j < 7; j++) {
if (LFSR & 1) {
var bitPosition = (1 << j) - 1;
if (bitPosition < 32) {
roundConstantLsw ^= 1 << bitPosition;
} else {
roundConstantMsw ^= 1 << bitPosition - 32;
}
}
if (LFSR & 128) {
LFSR = LFSR << 1 ^ 113;
} else {
LFSR <<= 1;
}
}
ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);
}
})();
var T = [];
(function() {
for (var i = 0; i < 25; i++) {
T[i] = X64Word.create();
}
})();
var SHA3 = C_algo.SHA3 = Hasher.extend({
/**
* Configuration options.
*
* @property {number} outputLength
* The desired number of bits in the output hash.
* Only values permitted are: 224, 256, 384, 512.
* Default: 512
*/
cfg: Hasher.cfg.extend({
outputLength: 512
}),
_doReset: function() {
var state = this._state = [];
for (var i = 0; i < 25; i++) {
state[i] = new X64Word.init();
}
this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;
},
_doProcessBlock: function(M, offset) {
var state = this._state;
var nBlockSizeLanes = this.blockSize / 2;
for (var i = 0; i < nBlockSizeLanes; i++) {
var M2i = M[offset + 2 * i];
var M2i1 = M[offset + 2 * i + 1];
M2i = (M2i << 8 | M2i >>> 24) & 16711935 | (M2i << 24 | M2i >>> 8) & 4278255360;
M2i1 = (M2i1 << 8 | M2i1 >>> 24) & 16711935 | (M2i1 << 24 | M2i1 >>> 8) & 4278255360;
var lane = state[i];
lane.high ^= M2i1;
lane.low ^= M2i;
}
for (var round = 0; round < 24; round++) {
for (var x = 0; x < 5; x++) {
var tMsw = 0, tLsw = 0;
for (var y = 0; y < 5; y++) {
var lane = state[x + 5 * y];
tMsw ^= lane.high;
tLsw ^= lane.low;
}
var Tx = T[x];
Tx.high = tMsw;
Tx.low = tLsw;
}
for (var x = 0; x < 5; x++) {
var Tx4 = T[(x + 4) % 5];
var Tx1 = T[(x + 1) % 5];
var Tx1Msw = Tx1.high;
var Tx1Lsw = Tx1.low;
var tMsw = Tx4.high ^ (Tx1Msw << 1 | Tx1Lsw >>> 31);
var tLsw = Tx4.low ^ (Tx1Lsw << 1 | Tx1Msw >>> 31);
for (var y = 0; y < 5; y++) {
var lane = state[x + 5 * y];
lane.high ^= tMsw;
lane.low ^= tLsw;
}
}
for (var laneIndex = 1; laneIndex < 25; laneIndex++) {
var tMsw;
var tLsw;
var lane = state[laneIndex];
var laneMsw = lane.high;
var laneLsw = lane.low;
var rhoOffset = RHO_OFFSETS[laneIndex];
if (rhoOffset < 32) {
tMsw = laneMsw << rhoOffset | laneLsw >>> 32 - rhoOffset;
tLsw = laneLsw << rhoOffset | laneMsw >>> 32 - rhoOffset;
} else {
tMsw = laneLsw << rhoOffset - 32 | laneMsw >>> 64 - rhoOffset;
tLsw = laneMsw << rhoOffset - 32 | laneLsw >>> 64 - rhoOffset;
}
var TPiLane = T[PI_INDEXES[laneIndex]];
TPiLane.high = tMsw;
TPiLane.low = tLsw;
}
var T0 = T[0];
var state0 = state[0];
T0.high = state0.high;
T0.low = state0.low;
for (var x = 0; x < 5; x++) {
for (var y = 0; y < 5; y++) {
var laneIndex = x + 5 * y;
var lane = state[laneIndex];
var TLane = T[laneIndex];
var Tx1Lane = T[(x + 1) % 5 + 5 * y];
var Tx2Lane = T[(x + 2) % 5 + 5 * y];
lane.high = TLane.high ^ ~Tx1Lane.high & Tx2Lane.high;
lane.low = TLane.low ^ ~Tx1Lane.low & Tx2Lane.low;
}
}
var lane = state[0];
var roundConstant = ROUND_CONSTANTS[round];
lane.high ^= roundConstant.high;
lane.low ^= roundConstant.low;
}
},
_doFinalize: function() {
var data = this._data;
var dataWords = data.words;
this._nDataBytes * 8;
var nBitsLeft = data.sigBytes * 8;
var blockSizeBits = this.blockSize * 32;
dataWords[nBitsLeft >>> 5] |= 1 << 24 - nBitsLeft % 32;
dataWords[(Math2.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits >>> 5) - 1] |= 128;
data.sigBytes = dataWords.length * 4;
this._process();
var state = this._state;
var outputLengthBytes = this.cfg.outputLength / 8;
var outputLengthLanes = outputLengthBytes / 8;
var hashWords = [];
for (var i = 0; i < outputLengthLanes; i++) {
var lane = state[i];
var laneMsw = lane.high;
var laneLsw = lane.low;
laneMsw = (laneMsw << 8 | laneMsw >>> 24) & 16711935 | (laneMsw << 24 | laneMsw >>> 8) & 4278255360;
laneLsw = (laneLsw << 8 | laneLsw >>> 24) & 16711935 | (laneLsw << 24 | laneLsw >>> 8) & 4278255360;
hashWords.push(laneLsw);
hashWords.push(laneMsw);
}
return new WordArray.init(hashWords, outputLengthBytes);
},
clone: function() {
var clone = Hasher.clone.call(this);
var state = clone._state = this._state.slice(0);
for (var i = 0; i < 25; i++) {
state[i] = state[i].clone();
}
return clone;
}
});
C.SHA3 = Hasher._createHelper(SHA3);
C.HmacSHA3 = Hasher._createHmacHelper(SHA3);
})(Math);
return CryptoJS.SHA3;
});
})(sha3);
return sha3.exports;
}
var ripemd160 = { exports: {} };
var hasRequiredRipemd160;
function requireRipemd160() {
if (hasRequiredRipemd160)
return ripemd160.exports;
hasRequiredRipemd160 = 1;
(function(module, exports) {
(function(root, factory) {
{
module.exports = factory(requireCore());
}
})(commonjsGlobal, function(CryptoJS) {
/** @preserve
(c) 2012 by Cédric Mesnil. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
(function(Math2) {
var C = CryptoJS;
var C_lib = C.lib;
var WordArray = C_lib.WordArray;
var Hasher = C_lib.Hasher;
var C_algo = C.algo;
var _zl = WordArray.create([
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
7,
4,
13,
1,
10,
6,
15,
3,
12,
0,
9,
5,
2,
14,
11,
8,
3,
10,
14,
4,
9,
15,
8,
1,
2,
7,
0,
6,
13,
11,
5,
12,
1,
9,
11,
10,
0,
8,
12,
4,
13,
3,
7,
15,
14,
5,
6,
2,
4,
0,
5,
9,
7,
12,
2,
10,
14,
1,
3,
8,
11,
6,
15,
13
]);
var _zr = WordArray.create([
5,
14,
7,
0,
9,
2,
11,
4,
13,
6,
15,
8,
1,
10,
3,
12,
6,
11,
3,
7,
0,
13,
5,
10,
14,
15,
8,
12,
4,
9,
1,
2,
15,
5,
1,
3,
7,
14,
6,
9,
11,
8,
12,
2,
10,
0,
4,
13,
8,
6,
4,
1,
3,
11,
15,
0,
5,
12,
2,
13,
9,
7,
10,
14,
12,
15,
10,
4,
1,
5,
8,
7,
6,
2,
13,
14,
0,
3,
9,
11
]);
var _sl = WordArray.create([
11,
14,
15,
12,
5,
8,
7,
9,
11,
13,
14,
15,
6,
7,
9,
8,
7,
6,
8,
13,
11,
9,
7,
15,
7,
12,
15,
9,
11,
7,
13,
12,
11,
13,
6,
7,
14,
9,
13,
15,
14,
8,
13,
6,
5,
12,
7,
5,
11,
12,
14,
15,
14,
15,
9,
8,
9,
14,
5,
6,
8,
6,
5,
12,
9,
15,
5,
11,
6,
8,
13,
12,
5,
12,
13,
14,
11,
8,
5,
6
]);
var _sr = WordArray.create([
8,
9,
9,
11,
13,
15,
15,
5,
7,
7,
8,
11,
14,
14,
12,
6,
9,
13,
15,
7,
12,
8,
9,
11,
7,
7,
12,
7,
6,
15,
13,
11,
9,
7,
15,
11,
8,
6,
6,
14,
12,
13,
5,
14,
13,
13,
7,
5,
15,
5,
8,
11,
14,
14,
6,
14,
6,
9,
12,
9,
12,
5,
15,
8,
8,
5,
12,
9,
12,
5,
14,
6,
8,
13,
6,
5,
15,
13,
11,
11
]);
var _hl = WordArray.create([0, 1518500249, 1859775393, 2400959708, 2840853838]);
var _hr = WordArray.create([1352829926, 1548603684, 1836072691, 2053994217, 0]);
var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({
_doReset: function() {
this._hash = WordArray.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]);
},
_doProcessBlock: function(M, offset) {
for (var i = 0; i < 16; i++) {
var offset_i = offset + i;
var M_offset_i = M[offset_i];
M[offset_i] = (M_offset_i << 8 | M_offset_i >>> 24) & 16711935 | (M_offset_i << 24 | M_offset_i >>> 8) & 4278255360;
}
var H = this._hash.words;
var hl = _hl.words;
var hr = _hr.words;
var zl = _zl.words;
var zr = _zr.words;
var sl = _sl.words;
var sr = _sr.words;
var al, bl, cl, dl, el;
var ar, br, cr, dr, er;
ar = al = H[0];
br = bl = H[1];
cr = cl = H[2];
dr = dl = H[3];
er = el = H[4];
var t2;
for (var i = 0; i < 80; i += 1) {
t2 = al + M[offset + zl[i]] | 0;
if (i < 16) {
t2 += f1(bl, cl, dl) + hl[0];
} else if (i < 32) {
t2 += f2(bl, cl, dl) + hl[1];
} else if (i < 48) {
t2 += f3(bl, cl, dl) + hl[2];
} else if (i < 64) {
t2 += f4(bl, cl, dl) + hl[3];
} else {
t2 += f5(bl, cl, dl) + hl[4];
}
t2 = t2 | 0;
t2 = rotl(t2, sl[i]);
t2 = t2 + el | 0;
al = el;
el = dl;
dl = rotl(cl, 10);
cl = bl;
bl = t2;
t2 = ar + M[offset + zr[i]] | 0;
if (i < 16) {
t2 += f5(br, cr, dr) + hr[0];
} else if (i < 32) {
t2 += f4(br, cr, dr) + hr[1];
} else if (i < 48) {
t2 += f3(br, cr, dr) + hr[2];
} else if (i < 64) {
t2 += f2(br, cr, dr) + hr[3];
} else {
t2 += f1(br, cr, dr) + hr[4];
}
t2 = t2 | 0;
t2 = rotl(t2, sr[i]);
t2 = t2 + er | 0;
ar = er;
er = dr;
dr = rotl(cr, 10);
cr = br;
br = t2;
}
t2 = H[1] + cl + dr | 0;
H[1] = H[2] + dl + er | 0;
H[2] = H[3] + el + ar | 0;
H[3] = H[4] + al + br | 0;
H[4] = H[0] + bl + cr | 0;
H[0] = t2;
},
_doFinalize: function() {
var data = this._data;
var dataWords = data.words;
var nBitsTotal = this._nDataBytes * 8;
var nBitsLeft = data.sigBytes * 8;
dataWords[nBitsLeft >>> 5] |= 128 << 24 - nBitsLeft % 32;
dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = (nBitsTotal << 8 | nBitsTotal >>> 24) & 16711935 | (nBitsTotal << 24 | nBitsTotal >>> 8) & 4278255360;
data.sigBytes = (dataWords.length + 1) * 4;
this._process();
var hash = this._hash;
var H = hash.words;
for (var i = 0; i < 5; i++) {
var H_i = H[i];
H[i] = (H_i << 8 | H_i >>> 24) & 16711935 | (H_i << 24 | H_i >>> 8) & 4278255360;
}
return hash;
},
clone: function() {
var clone = Hasher.clone.call(this);
clone._hash = this._hash.clone();
return clone;
}
});
function f1(x, y, z) {
return x ^ y ^ z;
}
function f2(x, y, z) {
return x & y | ~x & z;
}
function f3(x, y, z) {
return (x | ~y) ^ z;
}
function f4(x, y, z) {
return x & z | y & ~z;
}
function f5(x, y, z) {
return x ^ (y | ~z);
}
function rotl(x, n2) {
return x << n2 | x >>> 32 - n2;
}
C.RIPEMD160 = Hasher._createHelper(RIPEMD160);
C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);
})();
return CryptoJS.RIPEMD160;
});
})(ripemd160);
return ripemd160.exports;
}
var hmac = { exports: {} };
var hasRequiredHmac;
function requireHmac() {
if (hasRequiredHmac)
return hmac.exports;
hasRequiredHmac = 1;
(function(module, exports) {
(function(root, factory) {
{
module.exports = factory(requireCore());
}
})(commonjsGlobal, function(CryptoJS) {
(function() {
var C = CryptoJS;
var C_lib = C.lib;
var Base = C_lib.Base;
var C_enc = C.enc;
var Utf8 = C_enc.Utf8;
var C_algo = C.algo;
C_algo.HMAC = Base.extend({
/**
* Initializes a newly created HMAC.
*
* @param {Hasher} hasher The hash algorithm to use.
* @param {WordArray|string} key The secret key.
*
* @example
*
* var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);
*/
init: function(hasher, key) {
hasher = this._hasher = new hasher.init();
if (typeof key == "string") {
key = Utf8.parse(key);
}
var hasherBlockSize = hasher.blockSize;
var hasherBlockSizeBytes = hasherBlockSize * 4;
if (key.sigBytes > hasherBlockSizeBytes) {
key = hasher.finalize(key);
}
key.clamp();
var oKey = this._oKey = key.clone();
var iKey = this._iKey = key.clone();
var oKeyWords = oKey.words;
var iKeyWords = iKey.words;
for (var i = 0; i < hasherBlockSize; i++) {
oKeyWords[i] ^= 1549556828;
iKeyWords[i] ^= 909522486;
}
oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;
this.reset();
},
/**
* Resets this HMAC to its initial state.
*
* @example
*
* hmacHasher.reset();
*/
reset: function() {
var hasher = this._hasher;
hasher.reset();
hasher.update(this._iKey);
},
/**
* Updates this HMAC with a message.
*
* @param {WordArray|string} messageUpdate The message to append.
*
* @return {HMAC} This HMAC instance.
*
* @example
*
* hmacHasher.update('message');
* hmacHasher.update(wordArray);
*/
update: function(messageUpdate) {
this._hasher.update(messageUpdate);
return this;
},
/**
* Finalizes the HMAC computation.
* Note that the finalize operation is effectively a destructive, read-once operation.
*
* @param {WordArray|string} messageUpdate (Optional) A final message update.
*
* @return {WordArray} The HMAC.
*
* @example
*
* var hmac = hmacHasher.finalize();
* var hmac = hmacHasher.finalize('message');
* var hmac = hmacHasher.finalize(wordArray);
*/
finalize: function(messageUpdate) {
var hasher = this._hasher;
var innerHash = hasher.finalize(messageUpdate);
hasher.reset();
var hmac2 = hasher.finalize(this._oKey.clone().concat(innerHash));
return hmac2;
}
});
})();
});
})(hmac);
return hmac.exports;
}
var pbkdf2 = { exports: {} };
var hasRequiredPbkdf2;
function requirePbkdf2() {
if (hasRequiredPbkdf2)
return pbkdf2.exports;
hasRequiredPbkdf2 = 1;
(function(module, exports) {
(function(root, factory, undef) {
{
module.exports = factory(requireCore(), requireSha256(), requireHmac());
}
})(commonjsGlobal, function(CryptoJS) {
(function() {
var C = CryptoJS;
var C_lib = C.lib;
var Base = C_lib.Base;
var WordArray = C_lib.WordArray;
var C_algo = C.algo;
var SHA256 = C_algo.SHA256;
var HMAC = C_algo.HMAC;
var PBKDF2 = C_algo.PBKDF2 = Base.extend({
/**
* Configuration options.
*
* @property {number} keySize The key size in words to generate. Default: 4 (128 bits)
* @property {Hasher} hasher The hasher to use. Default: SHA256
* @property {number} iterations The number of iterations to perform. Default: 250000
*/
cfg: Base.extend({
keySize: 128 / 32,
hasher: SHA256,
iterations: 25e4
}),
/**
* Initializes a newly created key derivation function.
*
* @param {Object} cfg (Optional) The configuration options to use for the derivation.
*
* @example
*
* var kdf = CryptoJS.algo.PBKDF2.create();
* var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });
* var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });
*/
init: function(cfg) {
this.cfg = this.cfg.extend(cfg);
},
/**
* Computes the Password-Based Key Derivation Function 2.
*
* @param {WordArray|string} password The password.
* @param {WordArray|string} salt A salt.
*
* @return {WordArray} The derived key.
*
* @example
*
* var key = kdf.compute(password, salt);
*/
compute: function(password, salt) {
var cfg = this.cfg;
var hmac2 = HMAC.create(cfg.hasher, password);
var derivedKey = WordArray.create();
var blockIndex = WordArray.create([1]);
var derivedKeyWords = derivedKey.words;
var blockIndexWords = blockIndex.words;
var keySize = cfg.keySize;
var iterations = cfg.iterations;
while (derivedKeyWords.length < keySize) {
var block = hmac2.update(salt).finalize(blockIndex);
hmac2.reset();
var blockWords = block.words;
var blockWordsLength = blockWords.length;
var intermediate = block;
for (var i = 1; i < iterations; i++) {
intermediate = hmac2.finalize(intermediate);
hmac2.reset();
var intermediateWords = intermediate.words;
for (var j = 0; j < blockWordsLength; j++) {
blockWords[j] ^= intermediateWords[j];
}
}
derivedKey.concat(block);
blockIndexWords[0]++;
}
derivedKey.sigBytes = keySize * 4;
return derivedKey;
}
});
C.PBKDF2 = function(password, salt, cfg) {
return PBKDF2.create(cfg).compute(password, salt);
};
})();
return CryptoJS.PBKDF2;
});
})(pbkdf2);
return pbkdf2.exports;
}
var evpkdf = { exports: {} };
var hasRequiredEvpkdf;
function requireEvpkdf() {
if (hasRequiredEvpkdf)
return evpkdf.exports;
hasRequiredEvpkdf = 1;
(function(module, exports) {
(function(root, factory, undef) {
{
module.exports = factory(requireCore(), requireSha1(), requireHmac());
}
})(commonjsGlobal, function(CryptoJS) {
(function() {
var C = CryptoJS;
var C_lib = C.lib;
var Base = C_lib.Base;
var WordArray = C_lib.WordArray;
var C_algo = C.algo;
var MD5 = C_algo.MD5;
var EvpKDF = C_algo.EvpKDF = Base.extend({
/**
* Configuration options.
*
* @property {number} keySize The key size in words to generate. Default: 4 (128 bits)
* @property {Hasher} hasher The hash algorithm to use. Default: MD5
* @property {number} iterations The number of iterations to perform. Default: 1
*/
cfg: Base.extend({
keySize: 128 / 32,
hasher: MD5,
iterations: 1
}),
/**
* Initializes a newly created key derivation function.
*
* @param {Object} cfg (Optional) The configuration options to use for the derivation.
*
* @example
*
* var kdf = CryptoJS.algo.EvpKDF.create();
* var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });
* var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });
*/
init: function(cfg) {
this.cfg = this.cfg.extend(cfg);
},
/**
* Derives a key from a password.
*
* @param {WordArray|string} password The password.
* @param {WordArray|string} salt A salt.
*
* @return {WordArray} The derived key.
*
* @example
*
* var key = kdf.compute(password, salt);
*/
compute: function(password, salt) {
var block;
var cfg = this.cfg;
var hasher = cfg.hasher.create();
var derivedKey = WordArray.create();
var derivedKeyWords = derivedKey.words;
var keySize = cfg.keySize;
var iterations = cfg.iterations;
while (derivedKeyWords.length < keySize) {
if (block) {
hasher.update(block);
}
block = hasher.update(password).finalize(salt);
hasher.reset();
for (var i = 1; i < iterations; i++) {
block = hasher.finalize(block);
hasher.reset();
}
derivedKey.concat(block);
}
derivedKey.sigBytes = keySize * 4;
return derivedKey;
}
});
C.EvpKDF = function(password, salt, cfg) {
return EvpKDF.create(cfg).compute(password, salt);
};
})();
return CryptoJS.EvpKDF;
});
})(evpkdf);
return evpkdf.exports;
}
var cipherCore = { exports: {} };
var hasRequiredCipherCore;
function requireCipherCore() {
if (hasRequiredCipherCore)
return cipherCore.exports;
hasRequiredCipherCore = 1;
(function(module, exports) {
(function(root, factory, undef) {
{
module.exports = factory(requireCore(), requireEvpkdf());
}
})(commonjsGlobal, function(CryptoJS) {
CryptoJS.lib.Cipher || function(undefined$1) {
var C = CryptoJS;
var C_lib = C.lib;
var Base = C_lib.Base;
var WordArray = C_lib.WordArray;
var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;
var C_enc = C.enc;
C_enc.Utf8;
var Base642 = C_enc.Base64;
var C_algo = C.algo;
var EvpKDF = C_algo.EvpKDF;
var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({
/**
* Configuration options.
*
* @property {WordArray} iv The IV to use for this operation.
*/
cfg: Base.extend(),
/**
* Creates this cipher in encryption mode.
*
* @param {WordArray} key The key.
* @param {Object} cfg (Optional) The configuration options to use for this operation.
*
* @return {Cipher} A cipher instance.
*
* @static
*
* @example
*
* var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });
*/
createEncryptor: function(key, cfg) {
return this.create(this._ENC_XFORM_MODE, key, cfg);
},
/**
* Creates this cipher in decryption mode.
*
* @param {WordArray} key The key.
* @param {Object} cfg (Optional) The configuration options to use for this operation.
*
* @return {Cipher} A cipher instance.
*
* @static
*
* @example
*
* var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });
*/
createDecryptor: function(key, cfg) {
return this.create(this._DEC_XFORM_MODE, key, cfg);
},
/**
* Initializes a newly created cipher.
*
* @param {number} xformMode Either the encryption or decryption transormation mode constant.
* @param {WordArray} key The key.
* @param {Object} cfg (Optional) The configuration options to use for this operation.
*
* @example
*
* var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });
*/
init: function(xformMode, key, cfg) {
this.cfg = this.cfg.extend(cfg);
this._xformMode = xformMode;
this._key = key;
this.reset();
},
/**
* Resets this cipher to its initial state.
*
* @example
*
* cipher.reset();
*/
reset: function() {
BufferedBlockAlgorithm.reset.call(this);
this._doReset();
},
/**
* Adds data to be encrypted or decrypted.
*
* @param {WordArray|string} dataUpdate The data to encrypt or decrypt.
*
* @return {WordArray} The data after processing.
*
* @example
*
* var encrypted = cipher.process('data');
* var encrypted = cipher.process(wordArray);
*/
process: function(dataUpdate) {
this._append(dataUpdate);
return this._process();
},
/**
* Finalizes the encryption or decryption process.
* Note that the finalize operation is effectively a destructive, read-once operation.
*
* @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.
*
* @return {WordArray} The data after final processing.
*
* @example
*
* var encrypted = cipher.finalize();
* var encrypted = cipher.finalize('data');
* var encrypted = cipher.finalize(wordArray);
*/
finalize: function(dataUpdate) {
if (dataUpdate) {
this._append(dataUpdate);
}
var finalProcessedData = this._doFinalize();
return finalProcessedData;
},
keySize: 128 / 32,
ivSize: 128 / 32,
_ENC_XFORM_MODE: 1,
_DEC_XFORM_MODE: 2,
/**
* Creates shortcut functions to a cipher's object interface.
*
* @param {Cipher} cipher The cipher to create a helper for.
*
* @return {Object} An object with encrypt and decrypt shortcut functions.
*
* @static
*
* @example
*
* var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);
*/
_createHelper: function() {
function selectCipherStrategy(key) {
if (typeof key == "string") {
return PasswordBasedCipher;
} else {
return SerializableCipher;
}
}
return function(cipher) {
return {
encrypt: function(message, key, cfg) {
return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);
},
decrypt: function(ciphertext, key, cfg) {
return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);
}
};
};
}()
});
C_lib.StreamCipher = Cipher.extend({
_doFinalize: function() {
var finalProcessedBlocks = this._process(true);
return finalProcessedBlocks;
},
blockSize: 1
});
var C_mode = C.mode = {};
var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({
/**
* Creates this mode for encryption.
*
* @param {Cipher} cipher A block cipher instance.
* @param {Array} iv The IV words.
*
* @static
*
* @example
*
* var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);
*/
createEncryptor: function(cipher, iv) {
return this.Encryptor.create(cipher, iv);
},
/**
* Creates this mode for decryption.
*
* @param {Cipher} cipher A block cipher instance.
* @param {Array} iv The IV words.
*
* @static
*
* @example
*
* var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);
*/
createDecryptor: function(cipher, iv) {
return this.Decryptor.create(cipher, iv);
},
/**
* Initializes a newly created mode.
*
* @param {Cipher} cipher A block cipher instance.
* @param {Array} iv The IV words.
*
* @example
*
* var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);
*/
init: function(cipher, iv) {
this._cipher = cipher;
this._iv = iv;
}
});
var CBC = C_mode.CBC = function() {
var CBC2 = BlockCipherMode.extend();
CBC2.Encryptor = CBC2.extend({
/**
* Processes the data block at offset.
*
* @param {Array} words The data words to operate on.
* @param {number} offset The offset where the block starts.
*
* @example
*
* mode.processBlock(data.words, offset);
*/
processBlock: function(words, offset) {
var cipher = this._cipher;
var blockSize = cipher.blockSize;
xorBlock.call(this, words, offset, blockSize);
cipher.encryptBlock(words, offset);
this._prevBlock = words.slice(offset, offset + blockSize);
}
});
CBC2.Decryptor = CBC2.extend({
/**
* Processes the data block at offset.
*
* @param {Array} words The data words to operate on.
* @param {number} offset The offset where the block starts.
*
* @example
*
* mode.processBlock(data.words, offset);
*/
processBlock: function(words, offset) {
var cipher = this._cipher;
var blockSize = cipher.blockSize;
var thisBlock = words.slice(offset, offset + blockSize);
cipher.decryptBlock(words, offset);
xorBlock.call(this, words, offset, blockSize);
this._prevBlock = thisBlock;
}
});
function xorBlock(words, offset, blockSize) {
var block;
var iv = this._iv;
if (iv) {
block = iv;
this._iv = undefined$1;
} else {
block = this._prevBlock;
}
for (var i = 0; i < blockSize; i++) {
words[offset + i] ^= block[i];
}
}
return CBC2;
}();
var C_pad = C.pad = {};
var Pkcs7 = C_pad.Pkcs7 = {
/**
* Pads data using the algorithm defined in PKCS #5/7.
*
* @param {WordArray} data The data to pad.
* @param {number} blockSize The multiple that the data should be padded to.
*
* @static
*
* @example
*
* CryptoJS.pad.Pkcs7.pad(wordArray, 4);
*/
pad: function(data, blockSize) {
var blockSizeBytes = blockSize * 4;
var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;
var paddingWord = nPaddingBytes << 24 | nPaddingBytes << 16 | nPaddingBytes << 8 | nPaddingBytes;
var paddingWords = [];
for (var i = 0; i < nPaddingBytes; i += 4) {
paddingWords.push(paddingWord);
}
var padding = WordArray.create(paddingWords, nPaddingBytes);
data.concat(padding);
},
/**
* Unpads data that had been padded using the algorithm defined in PKCS #5/7.
*
* @param {WordArray} data The data to unpad.
*
* @static
*
* @example
*
* CryptoJS.pad.Pkcs7.unpad(wordArray);
*/
unpad: function(data) {
var nPaddingBytes = data.words[data.sigBytes - 1 >>> 2] & 255;
data.sigBytes -= nPaddingBytes;
}
};
C_lib.BlockCipher = Cipher.extend({
/**
* Configuration options.
*
* @property {Mode} mode The block mode to use. Default: CBC
* @property {Padding} padding The padding strategy to use. Default: Pkcs7
*/
cfg: Cipher.cfg.extend({
mode: CBC,
padding: Pkcs7
}),
reset: function() {
var modeCreator;
Cipher.reset.call(this);
var cfg = this.cfg;
var iv = cfg.iv;
var mode = cfg.mode;
if (this._xformMode == this._ENC_XFORM_MODE) {
modeCreator = mode.createEncryptor;
} else {
modeCreator = mode.createDecryptor;
this._minBufferSize = 1;
}
if (this._mode && this._mode.__creator == modeCreator) {
this._mode.init(this, iv && iv.words);
} else {
this._mode = modeCreator.call(mode, this, iv && iv.words);
this._mode.__creator = modeCreator;
}
},
_doProcessBlock: function(words, offset) {
this._mode.processBlock(words, offset);
},
_doFinalize: function() {
var finalProcessedBlocks;
var padding = this.cfg.padding;
if (this._xformMode == this._ENC_XFORM_MODE) {
padding.pad(this._data, this.blockSize);
finalProcessedBlocks = this._process(true);
} else {
finalProcessedBlocks = this._process(true);
padding.unpad(finalProcessedBlocks);
}
return finalProcessedBlocks;
},
blockSize: 128 / 32
});
var CipherParams = C_lib.CipherParams = Base.extend({
/**
* Initializes a newly created cipher params object.
*
* @param {Object} cipherParams An object with any of the possible cipher parameters.
*
* @example
*
* var cipherParams = CryptoJS.lib.CipherParams.create({
* ciphertext: ciphertextWordArray,
* key: keyWordArray,
* iv: ivWordArray,
* salt: saltWordArray,
* algorithm: CryptoJS.algo.AES,
* mode: CryptoJS.mode.CBC,
* padding: CryptoJS.pad.PKCS7,
* blockSize: 4,
* formatter: CryptoJS.format.OpenSSL
* });
*/
init: function(cipherParams) {
this.mixIn(cipherParams);
},
/**
* Converts this cipher params object to a string.
*
* @param {Format} formatter (Optional) The formatting strategy to use.
*
* @return {string} The stringified cipher params.
*
* @throws Error If neither the formatter nor the default formatter is set.
*
* @example
*
* var string = cipherParams + '';
* var string = cipherParams.toString();
* var string = cipherParams.toString(CryptoJS.format.OpenSSL);
*/
toString: function(formatter) {
return (formatter || this.formatter).stringify(this);
}
});
var C_format = C.format = {};
var OpenSSLFormatter = C_format.OpenSSL = {
/**
* Converts a cipher params object to an OpenSSL-compatible string.
*
* @param {CipherParams} cipherParams The cipher params object.
*
* @return {string} The OpenSSL-compatible string.
*
* @static
*
* @example
*
* var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);
*/
stringify: function(cipherParams) {
var wordArray;
var ciphertext = cipherParams.ciphertext;
var salt = cipherParams.salt;
if (salt) {
wordArray = WordArray.create([1398893684, 1701076831]).concat(salt).concat(ciphertext);
} else {
wordArray = ciphertext;
}
return wordArray.toString(Base642);
},
/**
* Converts an OpenSSL-compatible string to a cipher params object.
*
* @param {string} openSSLStr The OpenSSL-compatible string.
*
* @return {CipherParams} The cipher params object.
*
* @static
*
* @example
*
* var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);
*/
parse: function(openSSLStr) {
var salt;
var ciphertext = Base642.parse(openSSLStr);
var ciphertextWords = ciphertext.words;
if (ciphertextWords[0] == 1398893684 && ciphertextWords[1] == 1701076831) {
salt = WordArray.create(ciphertextWords.slice(2, 4));
ciphertextWords.splice(0, 4);
ciphertext.sigBytes -= 16;
}
return CipherParams.create({ ciphertext, salt });
}
};
var SerializableCipher = C_lib.SerializableCipher = Base.extend({
/**
* Configuration options.
*
* @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL
*/
cfg: Base.extend({
format: OpenSSLFormatter
}),
/**
* Encrypts a message.
*
* @param {Cipher} cipher The cipher algorithm to use.
* @param {WordArray|string} message The message to encrypt.
* @param {WordArray} key The key.
* @param {Object} cfg (Optional) The configuration options to use for this operation.
*
* @return {CipherParams} A cipher params object.
*
* @static
*
* @example
*
* var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);
* var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });
* var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });
*/
encrypt: function(cipher, message, key, cfg) {
cfg = this.cfg.extend(cfg);
var encryptor = cipher.createEncryptor(key, cfg);
var ciphertext = encryptor.finalize(message);
var cipherCfg = encryptor.cfg;
return CipherParams.create({
ciphertext,
key,
iv: cipherCfg.iv,
algorithm: cipher,
mode: cipherCfg.mode,
padding: cipherCfg.padding,
blockSize: cipher.blockSize,
formatter: cfg.format
});
},
/**
* Decrypts serialized ciphertext.
*
* @param {Cipher} cipher The cipher algorithm to use.
* @param {CipherParams|string} ciphertext The ciphertext to decrypt.
* @param {WordArray} key The key.
* @param {Object} cfg (Optional) The configuration options to use for this operation.
*
* @return {WordArray} The plaintext.
*
* @static
*
* @example
*
* var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });
* var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });
*/
decrypt: function(cipher, ciphertext, key, cfg) {
cfg = this.cfg.extend(cfg);
ciphertext = this._parse(ciphertext, cfg.format);
var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);
return plaintext;
},
/**
* Converts serialized ciphertext to CipherParams,
* else assumed CipherParams already and returns ciphertext unchanged.
*
* @param {CipherParams|string} ciphertext The ciphertext.
* @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.
*
* @return {CipherParams} The unserialized ciphertext.
*
* @static
*
* @example
*
* var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);
*/
_parse: function(ciphertext, format2) {
if (typeof ciphertext == "string") {
return format2.parse(ciphertext, this);
} else {
return ciphertext;
}
}
});
var C_kdf = C.kdf = {};
var OpenSSLKdf = C_kdf.OpenSSL = {
/**
* Derives a key and IV from a password.
*
* @param {string} password The password to derive from.
* @param {number} keySize The size in words of the key to generate.
* @param {number} ivSize The size in words of the IV to generate.
* @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.
*
* @return {CipherParams} A cipher params object with the key, IV, and salt.
*
* @static
*
* @example
*
* var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);
* var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');
*/
execute: function(password, keySize, ivSize, salt, hasher) {
if (!salt) {
salt = WordArray.random(64 / 8);
}
if (!hasher) {
var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);
} else {
var key = EvpKDF.create({ keySize: keySize + ivSize, hasher }).compute(password, salt);
}
var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);
key.sigBytes = keySize * 4;
return CipherParams.create({ key, iv, salt });
}
};
var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({
/**
* Configuration options.
*
* @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL
*/
cfg: SerializableCipher.cfg.extend({
kdf: OpenSSLKdf
}),
/**
* Encrypts a message using a password.
*
* @param {Cipher} cipher The cipher algorithm to use.
* @param {WordArray|string} message The message to encrypt.
* @param {string} password The password.
* @param {Object} cfg (Optional) The configuration options to use for this operation.
*
* @return {CipherParams} A cipher params object.
*
* @static
*
* @example
*
* var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');
* var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });
*/
encrypt: function(cipher, message, password, cfg) {
cfg = this.cfg.extend(cfg);
var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, cfg.salt, cfg.hasher);
cfg.iv = derivedParams.iv;
var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);
ciphertext.mixIn(derivedParams);
return ciphertext;
},
/**
* Decrypts serialized ciphertext using a password.
*
* @param {Cipher} cipher The cipher algorithm to use.
* @param {CipherParams|string} ciphertext The ciphertext to decrypt.
* @param {string} password The password.
* @param {Object} cfg (Optional) The configuration options to use for this operation.
*
* @return {WordArray} The plaintext.
*
* @static
*
* @example
*
* var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });
* var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });
*/
decrypt: function(cipher, ciphertext, password, cfg) {
cfg = this.cfg.extend(cfg);
ciphertext = this._parse(ciphertext, cfg.format);
var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt, cfg.hasher);
cfg.iv = derivedParams.iv;
var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);
return plaintext;
}
});
}();
});
})(cipherCore);
return cipherCore.exports;
}
var modeCfb = { exports: {} };
var hasRequiredModeCfb;
function requireModeCfb() {
if (hasRequiredModeCfb)
return modeCfb.exports;
hasRequiredModeCfb = 1;
(function(module, exports) {
(function(root, factory, undef) {
{
module.exports = factory(requireCore(), requireCipherCore());
}
})(commonjsGlobal, function(CryptoJS) {
CryptoJS.mode.CFB = function() {
var CFB = CryptoJS.lib.BlockCipherMode.extend();
CFB.Encryptor = CFB.extend({
processBlock: function(words, offset) {
var cipher = this._cipher;
var blockSize = cipher.blockSize;
generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);
this._prevBlock = words.slice(offset, offset + blockSize);
}
});
CFB.Decryptor = CFB.extend({
processBlock: function(words, offset) {
var cipher = this._cipher;
var blockSize = cipher.blockSize;
var thisBlock = words.slice(offset, offset + blockSize);
generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);
this._prevBlock = thisBlock;
}
});
function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {
var keystream;
var iv = this._iv;
if (iv) {
keystream = iv.slice(0);
this._iv = void 0;
} else {
keystream = this._prevBlock;
}
cipher.encryptBlock(keystream, 0);
for (var i = 0; i < blockSize; i++) {
words[offset + i] ^= keystream[i];
}
}
return CFB;
}();
return CryptoJS.mode.CFB;
});
})(modeCfb);
return modeCfb.exports;
}
var modeCtr = { exports: {} };
var hasRequiredModeCtr;
function requireModeCtr() {
if (hasRequiredModeCtr)
return modeCtr.exports;
hasRequiredModeCtr = 1;
(function(module, exports) {
(function(root, factory, undef) {
{
module.exports = factory(requireCore(), requireCipherCore());
}
})(commonjsGlobal, function(CryptoJS) {
CryptoJS.mode.CTR = function() {
var CTR = CryptoJS.lib.BlockCipherMode.extend();
var Encryptor = CTR.Encryptor = CTR.extend({
processBlock: function(words, offset) {
var cipher = this._cipher;
var blockSize = cipher.blockSize;
var iv = this._iv;
var counter = this._counter;
if (iv) {
counter = this._counter = iv.slice(0);
this._iv = void 0;
}
var keystream = counter.slice(0);
cipher.encryptBlock(keystream, 0);
counter[blockSize - 1] = counter[blockSize - 1] + 1 | 0;
for (var i = 0; i < blockSize; i++) {
words[offset + i] ^= keystream[i];
}
}
});
CTR.Decryptor = Encryptor;
return CTR;
}();
return CryptoJS.mode.CTR;
});
})(modeCtr);
return modeCtr.exports;
}
var modeCtrGladman = { exports: {} };
var hasRequiredModeCtrGladman;
function requireModeCtrGladman() {
if (hasRequiredModeCtrGladman)
return modeCtrGladman.exports;
hasRequiredModeCtrGladman = 1;
(function(module, exports) {
(function(root, factory, undef) {
{
module.exports = factory(requireCore(), requireCipherCore());
}
})(commonjsGlobal, function(CryptoJS) {
/** @preserve
* Counter block mode compatible with Dr Brian Gladman fileenc.c
* derived from CryptoJS.mode.CTR
* Jan Hruby [email protected]
*/
CryptoJS.mode.CTRGladman = function() {
var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();
function incWord(word) {
if ((word >> 24 & 255) === 255) {
var b1 = word >> 16 & 255;
var b2 = word >> 8 & 255;
var b3 = word & 255;
if (b1 === 255) {
b1 = 0;
if (b2 === 255) {
b2 = 0;
if (b3 === 255) {
b3 = 0;
} else {
++b3;
}
} else {
++b2;
}
} else {
++b1;
}
word = 0;
word += b1 << 16;
word += b2 << 8;
word += b3;
} else {
word += 1 << 24;
}
return word;
}
function incCounter(counter) {
if ((counter[0] = incWord(counter[0])) === 0) {
counter[1] = incWord(counter[1]);
}
return counter;
}
var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({
processBlock: function(words, offset) {
var cipher = this._cipher;
var blockSize = cipher.blockSize;
var iv = this._iv;
var counter = this._counter;
if (iv) {
counter = this._counter = iv.slice(0);
this._iv = void 0;
}
incCounter(counter);
var keystream = counter.slice(0);
cipher.encryptBlock(keystream, 0);
for (var i = 0; i < blockSize; i++) {
words[offset + i] ^= keystream[i];
}
}
});
CTRGladman.Decryptor = Encryptor;
return CTRGladman;
}();
return CryptoJS.mode.CTRGladman;
});
})(modeCtrGladman);
return modeCtrGladman.exports;
}
var modeOfb = { exports: {} };
var hasRequiredModeOfb;
function requireModeOfb() {
if (hasRequiredModeOfb)
return modeOfb.exports;
hasRequiredModeOfb = 1;
(function(module, exports) {
(function(root, factory, undef) {
{
module.exports = factory(requireCore(), requireCipherCore());
}
})(commonjsGlobal, function(CryptoJS) {
CryptoJS.mode.OFB = function() {
var OFB = CryptoJS.lib.BlockCipherMode.extend();
var Encryptor = OFB.Encryptor = OFB.extend({
processBlock: function(words, offset) {
var cipher = this._cipher;
var blockSize = cipher.blockSize;
var iv = this._iv;
var keystream = this._keystream;
if (iv) {
keystream = this._keystream = iv.slice(0);
this._iv = void 0;
}
cipher.encryptBlock(keystream, 0);
for (var i = 0; i < blockSize; i++) {
words[offset + i] ^= keystream[i];
}
}
});
OFB.Decryptor = Encryptor;
return OFB;
}();
return CryptoJS.mode.OFB;
});
})(modeOfb);
return modeOfb.exports;
}
var modeEcb = { exports: {} };
var hasRequiredModeEcb;
function requireModeEcb() {
if (hasRequiredModeEcb)
return modeEcb.exports;
hasRequiredModeEcb = 1;
(function(module, exports) {
(function(root, factory, undef) {
{
module.exports = factory(requireCore(), requireCipherCore());
}
})(commonjsGlobal, function(CryptoJS) {
CryptoJS.mode.ECB = function() {
var ECB = CryptoJS.lib.BlockCipherMode.extend();
ECB.Encryptor = ECB.extend({
processBlock: function(words, offset) {
this._cipher.encryptBlock(words, offset);
}
});
ECB.Decryptor = ECB.extend({
processBlock: function(words, offset) {
this._cipher.decryptBlock(words, offset);
}
});
return ECB;
}();
return CryptoJS.mode.ECB;
});
})(modeEcb);
return modeEcb.exports;
}
var padAnsix923 = { exports: {} };
var hasRequiredPadAnsix923;
function requirePadAnsix923() {
if (hasRequiredPadAnsix923)
return padAnsix923.exports;
hasRequiredPadAnsix923 = 1;
(function(module, exports) {
(function(root, factory, undef) {
{
module.exports = factory(requireCore(), requireCipherCore());
}
})(commonjsGlobal, function(CryptoJS) {
CryptoJS.pad.AnsiX923 = {
pad: function(data, blockSize) {
var dataSigBytes = data.sigBytes;
var blockSizeBytes = blockSize * 4;
var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;
var lastBytePos = dataSigBytes + nPaddingBytes - 1;
data.clamp();
data.words[lastBytePos >>> 2] |= nPaddingBytes << 24 - lastBytePos % 4 * 8;
data.sigBytes += nPaddingBytes;
},
unpad: function(data) {
var nPaddingBytes = data.words[data.sigBytes - 1 >>> 2] & 255;
data.sigBytes -= nPaddingBytes;
}
};
return CryptoJS.pad.Ansix923;
});
})(padAnsix923);
return padAnsix923.exports;
}
var padIso10126 = { exports: {} };
var hasRequiredPadIso10126;
function requirePadIso10126() {
if (hasRequiredPadIso10126)
return padIso10126.exports;
hasRequiredPadIso10126 = 1;
(function(module, exports) {
(function(root, factory, undef) {
{
module.exports = factory(requireCore(), requireCipherCore());
}
})(commonjsGlobal, function(CryptoJS) {
CryptoJS.pad.Iso10126 = {
pad: function(data, blockSize) {
var blockSizeBytes = blockSize * 4;
var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;
data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));
},
unpad: function(data) {
var nPaddingBytes = data.words[data.sigBytes - 1 >>> 2] & 255;
data.sigBytes -= nPaddingBytes;
}
};
return CryptoJS.pad.Iso10126;
});
})(padIso10126);
return padIso10126.exports;
}
var padIso97971 = { exports: {} };
var hasRequiredPadIso97971;
function requirePadIso97971() {
if (hasRequiredPadIso97971)
return padIso97971.exports;
hasRequiredPadIso97971 = 1;
(function(module, exports) {
(function(root, factory, undef) {
{
module.exports = factory(requireCore(), requireCipherCore());
}
})(commonjsGlobal, function(CryptoJS) {
CryptoJS.pad.Iso97971 = {
pad: function(data, blockSize) {
data.concat(CryptoJS.lib.WordArray.create([2147483648], 1));
CryptoJS.pad.ZeroPadding.pad(data, blockSize);
},
unpad: function(data) {
CryptoJS.pad.ZeroPadding.unpad(data);
data.sigBytes--;
}
};
return CryptoJS.pad.Iso97971;
});
})(padIso97971);
return padIso97971.exports;
}
var padZeropadding = { exports: {} };
var hasRequiredPadZeropadding;
function requirePadZeropadding() {
if (hasRequiredPadZeropadding)
return padZeropadding.exports;
hasRequiredPadZeropadding = 1;
(function(module, exports) {
(function(root, factory, undef) {
{
module.exports = factory(requireCore(), requireCipherCore());
}
})(commonjsGlobal, function(CryptoJS) {
CryptoJS.pad.ZeroPadding = {
pad: function(data, blockSize) {
var blockSizeBytes = blockSize * 4;
data.clamp();
data.sigBytes += blockSizeBytes - (data.sigBytes % blockSizeBytes || blockSizeBytes);
},
unpad: function(data) {
var dataWords = data.words;
var i = data.sigBytes - 1;
for (var i = data.sigBytes - 1; i >= 0; i--) {
if (dataWords[i >>> 2] >>> 24 - i % 4 * 8 & 255) {
data.sigBytes = i + 1;
break;
}
}
}
};
return CryptoJS.pad.ZeroPadding;
});
})(padZeropadding);
return padZeropadding.exports;
}
var padNopadding = { exports: {} };
var hasRequiredPadNopadding;
function requirePadNopadding() {
if (hasRequiredPadNopadding)
return padNopadding.exports;
hasRequiredPadNopadding = 1;
(function(module, exports) {
(function(root, factory, undef) {
{
module.exports = factory(requireCore(), requireCipherCore());
}
})(commonjsGlobal, function(CryptoJS) {
CryptoJS.pad.NoPadding = {
pad: function() {
},
unpad: function() {
}
};
return CryptoJS.pad.NoPadding;
});
})(padNopadding);
return padNopadding.exports;
}
var formatHex = { exports: {} };
var hasRequiredFormatHex;
function requireFormatHex() {
if (hasRequiredFormatHex)
return formatHex.exports;
hasRequiredFormatHex = 1;
(function(module, exports) {
(function(root, factory, undef) {
{
module.exports = factory(requireCore(), requireCipherCore());
}
})(commonjsGlobal, function(CryptoJS) {
(function(undefined$1) {
var C = CryptoJS;
var C_lib = C.lib;
var CipherParams = C_lib.CipherParams;
var C_enc = C.enc;
var Hex2 = C_enc.Hex;
var C_format = C.format;
C_format.Hex = {
/**
* Converts the ciphertext of a cipher params object to a hexadecimally encoded string.
*
* @param {CipherParams} cipherParams The cipher params object.
*
* @return {string} The hexadecimally encoded string.
*
* @static
*
* @example
*
* var hexString = CryptoJS.format.Hex.stringify(cipherParams);
*/
stringify: function(cipherParams) {
return cipherParams.ciphertext.toString(Hex2);
},
/**
* Converts a hexadecimally encoded ciphertext string to a cipher params object.
*
* @param {string} input The hexadecimally encoded string.
*
* @return {CipherParams} The cipher params object.
*
* @static
*
* @example
*
* var cipherParams = CryptoJS.format.Hex.parse(hexString);
*/
parse: function(input) {
var ciphertext = Hex2.parse(input);
return CipherParams.create({ ciphertext });
}
};
})();
return CryptoJS.format.Hex;
});
})(formatHex);
return formatHex.exports;
}
var aes = { exports: {} };
var hasRequiredAes;
function requireAes() {
if (hasRequiredAes)
return aes.exports;
hasRequiredAes = 1;
(function(module, exports) {
(function(root, factory, undef) {
{
module.exports = factory(requireCore(), requireEncBase64(), requireMd5(), requireEvpkdf(), requireCipherCore());
}
})(commonjsGlobal, function(CryptoJS) {
(function() {
var C = CryptoJS;
var C_lib = C.lib;
var BlockCipher = C_lib.BlockCipher;
var C_algo = C.algo;
var SBOX = [];
var INV_SBOX = [];
var SUB_MIX_0 = [];
var SUB_MIX_1 = [];
var SUB_MIX_2 = [];
var SUB_MIX_3 = [];
var INV_SUB_MIX_0 = [];
var INV_SUB_MIX_1 = [];
var INV_SUB_MIX_2 = [];
var INV_SUB_MIX_3 = [];
(function() {
var d2 = [];
for (var i = 0; i < 256; i++) {
if (i < 128) {
d2[i] = i << 1;
} else {
d2[i] = i << 1 ^ 283;
}
}
var x = 0;
var xi = 0;
for (var i = 0; i < 256; i++) {
var sx = xi ^ xi << 1 ^ xi << 2 ^ xi << 3 ^ xi << 4;
sx = sx >>> 8 ^ sx & 255 ^ 99;
SBOX[x] = sx;
INV_SBOX[sx] = x;
var x2 = d2[x];
var x4 = d2[x2];
var x8 = d2[x4];
var t2 = d2[sx] * 257 ^ sx * 16843008;
SUB_MIX_0[x] = t2 << 24 | t2 >>> 8;
SUB_MIX_1[x] = t2 << 16 | t2 >>> 16;
SUB_MIX_2[x] = t2 << 8 | t2 >>> 24;
SUB_MIX_3[x] = t2;
var t2 = x8 * 16843009 ^ x4 * 65537 ^ x2 * 257 ^ x * 16843008;
INV_SUB_MIX_0[sx] = t2 << 24 | t2 >>> 8;
INV_SUB_MIX_1[sx] = t2 << 16 | t2 >>> 16;
INV_SUB_MIX_2[sx] = t2 << 8 | t2 >>> 24;
INV_SUB_MIX_3[sx] = t2;
if (!x) {
x = xi = 1;
} else {
x = x2 ^ d2[d2[d2[x8 ^ x2]]];
xi ^= d2[d2[xi]];
}
}
})();
var RCON = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54];
var AES = C_algo.AES = BlockCipher.extend({
_doReset: function() {
var t2;
if (this._nRounds && this._keyPriorReset === this._key) {
return;
}
var key = this._keyPriorReset = this._key;
var keyWords = key.words;
var keySize = key.sigBytes / 4;
var nRounds = this._nRounds = keySize + 6;
var ksRows = (nRounds + 1) * 4;
var keySchedule = this._keySchedule = [];
for (var ksRow = 0; ksRow < ksRows; ksRow++) {
if (ksRow < keySize) {
keySchedule[ksRow] = keyWords[ksRow];
} else {
t2 = keySchedule[ksRow - 1];
if (!(ksRow % keySize)) {
t2 = t2 << 8 | t2 >>> 24;
t2 = SBOX[t2 >>> 24] << 24 | SBOX[t2 >>> 16 & 255] << 16 | SBOX[t2 >>> 8 & 255] << 8 | SBOX[t2 & 255];
t2 ^= RCON[ksRow / keySize | 0] << 24;
} else if (keySize > 6 && ksRow % keySize == 4) {
t2 = SBOX[t2 >>> 24] << 24 | SBOX[t2 >>> 16 & 255] << 16 | SBOX[t2 >>> 8 & 255] << 8 | SBOX[t2 & 255];
}
keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t2;
}
}
var invKeySchedule = this._invKeySchedule = [];
for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {
var ksRow = ksRows - invKsRow;
if (invKsRow % 4) {
var t2 = keySchedule[ksRow];
} else {
var t2 = keySchedule[ksRow - 4];
}
if (invKsRow < 4 || ksRow <= 4) {
invKeySchedule[invKsRow] = t2;
} else {
invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t2 >>> 24]] ^ INV_SUB_MIX_1[SBOX[t2 >>> 16 & 255]] ^ INV_SUB_MIX_2[SBOX[t2 >>> 8 & 255]] ^ INV_SUB_MIX_3[SBOX[t2 & 255]];
}
}
},
encryptBlock: function(M, offset) {
this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);
},
decryptBlock: function(M, offset) {
var t2 = M[offset + 1];
M[offset + 1] = M[offset + 3];
M[offset + 3] = t2;
this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);
var t2 = M[offset + 1];
M[offset + 1] = M[offset + 3];
M[offset + 3] = t2;
},
_doCryptBlock: function(M, offset, keySchedule, SUB_MIX_02, SUB_MIX_12, SUB_MIX_22, SUB_MIX_32, SBOX2) {
var nRounds = this._nRounds;
var s0 = M[offset] ^ keySchedule[0];
var s1 = M[offset + 1] ^ keySchedule[1];
var s2 = M[offset + 2] ^ keySchedule[2];
var s3 = M[offset + 3] ^ keySchedule[3];
var ksRow = 4;
for (var round = 1; round < nRounds; round++) {
var t0 = SUB_MIX_02[s0 >>> 24] ^ SUB_MIX_12[s1 >>> 16 & 255] ^ SUB_MIX_22[s2 >>> 8 & 255] ^ SUB_MIX_32[s3 & 255] ^ keySchedule[ksRow++];
var t1 = SUB_MIX_02[s1 >>> 24] ^ SUB_MIX_12[s2 >>> 16 & 255] ^ SUB_MIX_22[s3 >>> 8 & 255] ^ SUB_MIX_32[s0 & 255] ^ keySchedule[ksRow++];
var t2 = SUB_MIX_02[s2 >>> 24] ^ SUB_MIX_12[s3 >>> 16 & 255] ^ SUB_MIX_22[s0 >>> 8 & 255] ^ SUB_MIX_32[s1 & 255] ^ keySchedule[ksRow++];
var t3 = SUB_MIX_02[s3 >>> 24] ^ SUB_MIX_12[s0 >>> 16 & 255] ^ SUB_MIX_22[s1 >>> 8 & 255] ^ SUB_MIX_32[s2 & 255] ^ keySchedule[ksRow++];
s0 = t0;
s1 = t1;
s2 = t2;
s3 = t3;
}
var t0 = (SBOX2[s0 >>> 24] << 24 | SBOX2[s1 >>> 16 & 255] << 16 | SBOX2[s2 >>> 8 & 255] << 8 | SBOX2[s3 & 255]) ^ keySchedule[ksRow++];
var t1 = (SBOX2[s1 >>> 24] << 24 | SBOX2[s2 >>> 16 & 255] << 16 | SBOX2[s3 >>> 8 & 255] << 8 | SBOX2[s0 & 255]) ^ keySchedule[ksRow++];
var t2 = (SBOX2[s2 >>> 24] << 24 | SBOX2[s3 >>> 16 & 255] << 16 | SBOX2[s0 >>> 8 & 255] << 8 | SBOX2[s1 & 255]) ^ keySchedule[ksRow++];
var t3 = (SBOX2[s3 >>> 24] << 24 | SBOX2[s0 >>> 16 & 255] << 16 | SBOX2[s1 >>> 8 & 255] << 8 | SBOX2[s2 & 255]) ^ keySchedule[ksRow++];
M[offset] = t0;
M[offset + 1] = t1;
M[offset + 2] = t2;
M[offset + 3] = t3;
},
keySize: 256 / 32
});
C.AES = BlockCipher._createHelper(AES);
})();
return CryptoJS.AES;
});
})(aes);
return aes.exports;
}
var tripledes = { exports: {} };
var hasRequiredTripledes;
function requireTripledes() {
if (hasRequiredTripledes)
return tripledes.exports;
hasRequiredTripledes = 1;
(function(module, exports) {
(function(root, factory, undef) {
{
module.exports = factory(requireCore(), requireEncBase64(), requireMd5(), requireEvpkdf(), requireCipherCore());
}
})(commonjsGlobal, function(CryptoJS) {
(function() {
var C = CryptoJS;
var C_lib = C.lib;
var WordArray = C_lib.WordArray;
var BlockCipher = C_lib.BlockCipher;
var C_algo = C.algo;
var PC1 = [
57,
49,
41,
33,
25,
17,
9,
1,
58,
50,
42,
34,
26,
18,
10,
2,
59,
51,
43,
35,
27,
19,
11,
3,
60,
52,
44,
36,
63,
55,
47,
39,
31,
23,
15,
7,
62,
54,
46,
38,
30,
22,
14,
6,
61,
53,
45,
37,
29,
21,
13,
5,
28,
20,
12,
4
];
var PC2 = [
14,
17,
11,
24,
1,
5,
3,
28,
15,
6,
21,
10,
23,
19,
12,
4,
26,
8,
16,
7,
27,
20,
13,
2,
41,
52,
31,
37,
47,
55,
30,
40,
51,
45,
33,
48,
44,
49,
39,
56,
34,
53,
46,
42,
50,
36,
29,
32
];
var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];
var SBOX_P = [
{
0: 8421888,
268435456: 32768,
536870912: 8421378,
805306368: 2,
1073741824: 512,
1342177280: 8421890,
1610612736: 8389122,
1879048192: 8388608,
2147483648: 514,
2415919104: 8389120,
2684354560: 33280,
2952790016: 8421376,
3221225472: 32770,
3489660928: 8388610,
3758096384: 0,
4026531840: 33282,
134217728: 0,
402653184: 8421890,
671088640: 33282,
939524096: 32768,
1207959552: 8421888,
1476395008: 512,
1744830464: 8421378,
2013265920: 2,
2281701376: 8389120,
2550136832: 33280,
2818572288: 8421376,
3087007744: 8389122,
3355443200: 8388610,
3623878656: 32770,
3892314112: 514,
4160749568: 8388608,
1: 32768,
268435457: 2,
536870913: 8421888,
805306369: 8388608,
1073741825: 8421378,
1342177281: 33280,
1610612737: 512,
1879048193: 8389122,
2147483649: 8421890,
2415919105: 8421376,
2684354561: 8388610,
2952790017: 33282,
3221225473: 514,
3489660929: 8389120,
3758096385: 32770,
4026531841: 0,
134217729: 8421890,
402653185: 8421376,
671088641: 8388608,
939524097: 512,
1207959553: 32768,
1476395009: 8388610,
1744830465: 2,
2013265921: 33282,
2281701377: 32770,
2550136833: 8389122,
2818572289: 514,
3087007745: 8421888,
3355443201: 8389120,
3623878657: 0,
3892314113: 33280,
4160749569: 8421378
},
{
0: 1074282512,
16777216: 16384,
33554432: 524288,
50331648: 1074266128,
67108864: 1073741840,
83886080: 1074282496,
100663296: 1073758208,
117440512: 16,
134217728: 540672,
150994944: 1073758224,
167772160: 1073741824,
184549376: 540688,
201326592: 524304,
218103808: 0,
234881024: 16400,
251658240: 1074266112,
8388608: 1073758208,
25165824: 540688,
41943040: 16,
58720256: 1073758224,
75497472: 1074282512,
92274688: 1073741824,
109051904: 524288,
125829120: 1074266128,
142606336: 524304,
159383552: 0,
176160768: 16384,
192937984: 1074266112,
209715200: 1073741840,
226492416: 540672,
243269632: 1074282496,
260046848: 16400,
268435456: 0,
285212672: 1074266128,
301989888: 1073758224,
318767104: 1074282496,
335544320: 1074266112,
352321536: 16,
369098752: 540688,
385875968: 16384,
402653184: 16400,
419430400: 524288,
436207616: 524304,
452984832: 1073741840,
469762048: 540672,
486539264: 1073758208,
503316480: 1073741824,
520093696: 1074282512,
276824064: 540688,
293601280: 524288,
310378496: 1074266112,
327155712: 16384,
343932928: 1073758208,
360710144: 1074282512,
377487360: 16,
394264576: 1073741824,
411041792: 1074282496,
427819008: 1073741840,
444596224: 1073758224,
461373440: 524304,
478150656: 0,
494927872: 16400,
511705088: 1074266128,
528482304: 540672
},
{
0: 260,
1048576: 0,
2097152: 67109120,
3145728: 65796,
4194304: 65540,
5242880: 67108868,
6291456: 67174660,
7340032: 67174400,
8388608: 67108864,
9437184: 67174656,
10485760: 65792,
11534336: 67174404,
12582912: 67109124,
13631488: 65536,
14680064: 4,
15728640: 256,
524288: 67174656,
1572864: 67174404,
2621440: 0,
3670016: 67109120,
4718592: 67108868,
5767168: 65536,
6815744: 65540,
7864320: 260,
8912896: 4,
9961472: 256,
11010048: 67174400,
12058624: 65796,
13107200: 65792,
14155776: 67109124,
15204352: 67174660,
16252928: 67108864,
16777216: 67174656,
17825792: 65540,
18874368: 65536,
19922944: 67109120,
20971520: 256,
22020096: 67174660,
23068672: 67108868,
24117248: 0,
25165824: 67109124,
26214400: 67108864,
27262976: 4,
28311552: 65792,
29360128: 67174400,
30408704: 260,
31457280: 65796,
32505856: 67174404,
17301504: 67108864,
18350080: 260,
19398656: 67174656,
20447232: 0,
21495808: 65540,
22544384: 67109120,
23592960: 256,
24641536: 67174404,
25690112: 65536,
26738688: 67174660,
27787264: 65796,
28835840: 67108868,
29884416: 67109124,
30932992: 67174400,
31981568: 4,
33030144: 65792
},
{
0: 2151682048,
65536: 2147487808,
131072: 4198464,
196608: 2151677952,
262144: 0,
327680: 4198400,
393216: 2147483712,
458752: 4194368,
524288: 2147483648,
589824: 4194304,
655360: 64,
720896: 2147487744,
786432: 2151678016,
851968: 4160,
917504: 4096,
983040: 2151682112,
32768: 2147487808,
98304: 64,
163840: 2151678016,
229376: 2147487744,
294912: 4198400,
360448: 2151682112,
425984: 0,
491520: 2151677952,
557056: 4096,
622592: 2151682048,
688128: 4194304,
753664: 4160,
819200: 2147483648,
884736: 4194368,
950272: 4198464,
1015808: 2147483712,
1048576: 4194368,
1114112: 4198400,
1179648: 2147483712,
1245184: 0,
1310720: 4160,
1376256: 2151678016,
1441792: 2151682048,
1507328: 2147487808,
1572864: 2151682112,
1638400: 2147483648,
1703936: 2151677952,
1769472: 4198464,
1835008: 2147487744,
1900544: 4194304,
1966080: 64,
2031616: 4096,
1081344: 2151677952,
1146880: 2151682112,
1212416: 0,
1277952: 4198400,
1343488: 4194368,
1409024: 2147483648,
1474560: 2147487808,
1540096: 64,
1605632: 2147483712,
1671168: 4096,
1736704: 2147487744,
1802240: 2151678016,
1867776: 4160,
1933312: 2151682048,
1998848: 4194304,
2064384: 4198464
},
{
0: 128,
4096: 17039360,
8192: 262144,
12288: 536870912,
16384: 537133184,
20480: 16777344,
24576: 553648256,
28672: 262272,
32768: 16777216,
36864: 537133056,
40960: 536871040,
45056: 553910400,
49152: 553910272,
53248: 0,
57344: 17039488,
61440: 553648128,
2048: 17039488,
6144: 553648256,
10240: 128,
14336: 17039360,
18432: 262144,
22528: 537133184,
26624: 553910272,
30720: 536870912,
34816: 537133056,
38912: 0,
43008: 553910400,
47104: 16777344,
51200: 536871040,
55296: 553648128,
59392: 16777216,
63488: 262272,
65536: 262144,
69632: 128,
73728: 536870912,
77824: 553648256,
81920: 16777344,
86016: 553910272,
90112: 537133184,
94208: 16777216,
98304: 553910400,
102400: 553648128,
106496: 17039360,
110592: 537133056,
114688: 262272,
118784: 536871040,
122880: 0,
126976: 17039488,
67584: 553648256,
71680: 16777216,
75776: 17039360,
79872: 537133184,
83968: 536870912,
88064: 17039488,
92160: 128,
96256: 553910272,
100352: 262272,
104448: 553910400,
108544: 0,
112640: 553648128,
116736: 16777344,
120832: 262144,
124928: 537133056,
129024: 536871040
},
{
0: 268435464,
256: 8192,
512: 270532608,
768: 270540808,
1024: 268443648,
1280: 2097152,
1536: 2097160,
1792: 268435456,
2048: 0,
2304: 268443656,
2560: 2105344,
2816: 8,
3072: 270532616,
3328: 2105352,
3584: 8200,
3840: 270540800,
128: 270532608,
384: 270540808,
640: 8,
896: 2097152,
1152: 2105352,
1408: 268435464,
1664: 268443648,
1920: 8200,
2176: 2097160,
2432: 8192,
2688: 268443656,
2944: 270532616,
3200: 0,
3456: 270540800,
3712: 2105344,
3968: 268435456,
4096: 268443648,
4352: 270532616,
4608: 270540808,
4864: 8200,
5120: 2097152,
5376: 268435456,
5632: 268435464,
5888: 2105344,
6144: 2105352,
6400: 0,
6656: 8,
6912: 270532608,
7168: 8192,
7424: 268443656,
7680: 270540800,
7936: 2097160,
4224: 8,
4480: 2105344,
4736: 2097152,
4992: 268435464,
5248: 268443648,
5504: 8200,
5760: 270540808,
6016: 270532608,
6272: 270540800,
6528: 270532616,
6784: 8192,
7040: 2105352,
7296: 2097160,
7552: 0,
7808: 268435456,
8064: 268443656
},
{
0: 1048576,
16: 33555457,
32: 1024,
48: 1049601,
64: 34604033,
80: 0,
96: 1,
112: 34603009,
128: 33555456,
144: 1048577,
160: 33554433,
176: 34604032,
192: 34603008,
208: 1025,
224: 1049600,
240: 33554432,
8: 34603009,
24: 0,
40: 33555457,
56: 34604032,
72: 1048576,
88: 33554433,
104: 33554432,
120: 1025,
136: 1049601,
152: 33555456,
168: 34603008,
184: 1048577,
200: 1024,
216: 34604033,
232: 1,
248: 1049600,
256: 33554432,
272: 1048576,
288: 33555457,
304: 34603009,
320: 1048577,
336: 33555456,
352: 34604032,
368: 1049601,
384: 1025,
400: 34604033,
416: 1049600,
432: 1,
448: 0,
464: 34603008,
480: 33554433,
496: 1024,
264: 1049600,
280: 33555457,
296: 34603009,
312: 1,
328: 33554432,
344: 1048576,
360: 1025,
376: 34604032,
392: 33554433,
408: 34603008,
424: 0,
440: 34604033,
456: 1049601,
472: 1024,
488: 33555456,
504: 1048577
},
{
0: 134219808,
1: 131072,
2: 134217728,
3: 32,
4: 131104,
5: 134350880,
6: 134350848,
7: 2048,
8: 134348800,
9: 134219776,
10: 133120,
11: 134348832,
12: 2080,
13: 0,
14: 134217760,
15: 133152,
2147483648: 2048,
2147483649: 134350880,
2147483650: 134219808,
2147483651: 134217728,
2147483652: 134348800,
2147483653: 133120,
2147483654: 133152,
2147483655: 32,
2147483656: 134217760,
2147483657: 2080,
2147483658: 131104,
2147483659: 134350848,
2147483660: 0,
2147483661: 134348832,
2147483662: 134219776,
2147483663: 131072,
16: 133152,
17: 134350848,
18: 32,
19: 2048,
20: 134219776,
21: 134217760,
22: 134348832,
23: 131072,
24: 0,
25: 131104,
26: 134348800,
27: 134219808,
28: 134350880,
29: 133120,
30: 2080,
31: 134217728,
2147483664: 131072,
2147483665: 2048,
2147483666: 134348832,
2147483667: 133152,
2147483668: 32,
2147483669: 134348800,
2147483670: 134217728,
2147483671: 134219808,
2147483672: 134350880,
2147483673: 134217760,
2147483674: 134219776,
2147483675: 0,
2147483676: 133120,
2147483677: 2080,
2147483678: 131104,
2147483679: 134350848
}
];
var SBOX_MASK = [
4160749569,
528482304,
33030144,
2064384,
129024,
8064,
504,
2147483679
];
var DES = C_algo.DES = BlockCipher.extend({
_doReset: function() {
var key = this._key;
var keyWords = key.words;
var keyBits = [];
for (var i = 0; i < 56; i++) {
var keyBitPos = PC1[i] - 1;
keyBits[i] = keyWords[keyBitPos >>> 5] >>> 31 - keyBitPos % 32 & 1;
}
var subKeys = this._subKeys = [];
for (var nSubKey = 0; nSubKey < 16; nSubKey++) {
var subKey = subKeys[nSubKey] = [];
var bitShift = BIT_SHIFTS[nSubKey];
for (var i = 0; i < 24; i++) {
subKey[i / 6 | 0] |= keyBits[(PC2[i] - 1 + bitShift) % 28] << 31 - i % 6;
subKey[4 + (i / 6 | 0)] |= keyBits[28 + (PC2[i + 24] - 1 + bitShift) % 28] << 31 - i % 6;
}
subKey[0] = subKey[0] << 1 | subKey[0] >>> 31;
for (var i = 1; i < 7; i++) {
subKey[i] = subKey[i] >>> (i - 1) * 4 + 3;
}
subKey[7] = subKey[7] << 5 | subKey[7] >>> 27;
}
var invSubKeys = this._invSubKeys = [];
for (var i = 0; i < 16; i++) {
invSubKeys[i] = subKeys[15 - i];
}
},
encryptBlock: function(M, offset) {
this._doCryptBlock(M, offset, this._subKeys);
},
decryptBlock: function(M, offset) {
this._doCryptBlock(M, offset, this._invSubKeys);
},
_doCryptBlock: function(M, offset, subKeys) {
this._lBlock = M[offset];
this._rBlock = M[offset + 1];
exchangeLR.call(this, 4, 252645135);
exchangeLR.call(this, 16, 65535);
exchangeRL.call(this, 2, 858993459);
exchangeRL.call(this, 8, 16711935);
exchangeLR.call(this, 1, 1431655765);
for (var round = 0; round < 16; round++) {
var subKey = subKeys[round];
var lBlock = this._lBlock;
var rBlock = this._rBlock;
var f2 = 0;
for (var i = 0; i < 8; i++) {
f2 |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];
}
this._lBlock = rBlock;
this._rBlock = lBlock ^ f2;
}
var t2 = this._lBlock;
this._lBlock = this._rBlock;
this._rBlock = t2;
exchangeLR.call(this, 1, 1431655765);
exchangeRL.call(this, 8, 16711935);
exchangeRL.call(this, 2, 858993459);
exchangeLR.call(this, 16, 65535);
exchangeLR.call(this, 4, 252645135);
M[offset] = this._lBlock;
M[offset + 1] = this._rBlock;
},
keySize: 64 / 32,
ivSize: 64 / 32,
blockSize: 64 / 32
});
function exchangeLR(offset, mask) {
var t2 = (this._lBlock >>> offset ^ this._rBlock) & mask;
this._rBlock ^= t2;
this._lBlock ^= t2 << offset;
}
function exchangeRL(offset, mask) {
var t2 = (this._rBlock >>> offset ^ this._lBlock) & mask;
this._lBlock ^= t2;
this._rBlock ^= t2 << offset;
}
C.DES = BlockCipher._createHelper(DES);
var TripleDES = C_algo.TripleDES = BlockCipher.extend({
_doReset: function() {
var key = this._key;
var keyWords = key.words;
if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {
throw new Error("Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.");
}
var key1 = keyWords.slice(0, 2);
var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);
var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);
this._des1 = DES.createEncryptor(WordArray.create(key1));
this._des2 = DES.createEncryptor(WordArray.create(key2));
this._des3 = DES.createEncryptor(WordArray.create(key3));
},
encryptBlock: function(M, offset) {
this._des1.encryptBlock(M, offset);
this._des2.decryptBlock(M, offset);
this._des3.encryptBlock(M, offset);
},
decryptBlock: function(M, offset) {
this._des3.decryptBlock(M, offset);
this._des2.encryptBlock(M, offset);
this._des1.decryptBlock(M, offset);
},
keySize: 192 / 32,
ivSize: 64 / 32,
blockSize: 64 / 32
});
C.TripleDES = BlockCipher._createHelper(TripleDES);
})();
return CryptoJS.TripleDES;
});
})(tripledes);
return tripledes.exports;
}
var rc4 = { exports: {} };
var hasRequiredRc4;
function requireRc4() {
if (hasRequiredRc4)
return rc4.exports;
hasRequiredRc4 = 1;
(function(module, exports) {
(function(root, factory, undef) {
{
module.exports = factory(requireCore(), requireEncBase64(), requireMd5(), requireEvpkdf(), requireCipherCore());
}
})(commonjsGlobal, function(CryptoJS) {
(function() {
var C = CryptoJS;
var C_lib = C.lib;
var StreamCipher = C_lib.StreamCipher;
var C_algo = C.algo;
var RC4 = C_algo.RC4 = StreamCipher.extend({
_doReset: function() {
var key = this._key;
var keyWords = key.words;
var keySigBytes = key.sigBytes;
var S = this._S = [];
for (var i = 0; i < 256; i++) {
S[i] = i;
}
for (var i = 0, j = 0; i < 256; i++) {
var keyByteIndex = i % keySigBytes;
var keyByte = keyWords[keyByteIndex >>> 2] >>> 24 - keyByteIndex % 4 * 8 & 255;
j = (j + S[i] + keyByte) % 256;
var t2 = S[i];
S[i] = S[j];
S[j] = t2;
}
this._i = this._j = 0;
},
_doProcessBlock: function(M, offset) {
M[offset] ^= generateKeystreamWord.call(this);
},
keySize: 256 / 32,
ivSize: 0
});
function generateKeystreamWord() {
var S = this._S;
var i = this._i;
var j = this._j;
var keystreamWord = 0;
for (var n2 = 0; n2 < 4; n2++) {
i = (i + 1) % 256;
j = (j + S[i]) % 256;
var t2 = S[i];
S[i] = S[j];
S[j] = t2;
keystreamWord |= S[(S[i] + S[j]) % 256] << 24 - n2 * 8;
}
this._i = i;
this._j = j;
return keystreamWord;
}
C.RC4 = StreamCipher._createHelper(RC4);
var RC4Drop = C_algo.RC4Drop = RC4.extend({
/**
* Configuration options.
*
* @property {number} drop The number of keystream words to drop. Default 192
*/
cfg: RC4.cfg.extend({
drop: 192
}),
_doReset: function() {
RC4._doReset.call(this);
for (var i = this.cfg.drop; i > 0; i--) {
generateKeystreamWord.call(this);
}
}
});
C.RC4Drop = StreamCipher._createHelper(RC4Drop);
})();
return CryptoJS.RC4;
});
})(rc4);
return rc4.exports;
}
var rabbit = { exports: {} };
var hasRequiredRabbit;
function requireRabbit() {
if (hasRequiredRabbit)
return rabbit.exports;
hasRequiredRabbit = 1;
(function(module, exports) {
(function(root, factory, undef) {
{
module.exports = factory(requireCore(), requireEncBase64(), requireMd5(), requireEvpkdf(), requireCipherCore());
}
})(commonjsGlobal, function(CryptoJS) {
(function() {
var C = CryptoJS;
var C_lib = C.lib;
var StreamCipher = C_lib.StreamCipher;
var C_algo = C.algo;
var S = [];
var C_ = [];
var G = [];
var Rabbit = C_algo.Rabbit = StreamCipher.extend({
_doReset: function() {
var K = this._key.words;
var iv = this.cfg.iv;
for (var i = 0; i < 4; i++) {
K[i] = (K[i] << 8 | K[i] >>> 24) & 16711935 | (K[i] << 24 | K[i] >>> 8) & 4278255360;
}
var X = this._X = [
K[0],
K[3] << 16 | K[2] >>> 16,
K[1],
K[0] << 16 | K[3] >>> 16,
K[2],
K[1] << 16 | K[0] >>> 16,
K[3],
K[2] << 16 | K[1] >>> 16
];
var C2 = this._C = [
K[2] << 16 | K[2] >>> 16,
K[0] & 4294901760 | K[1] & 65535,
K[3] << 16 | K[3] >>> 16,
K[1] & 4294901760 | K[2] & 65535,
K[0] << 16 | K[0] >>> 16,
K[2] & 4294901760 | K[3] & 65535,
K[1] << 16 | K[1] >>> 16,
K[3] & 4294901760 | K[0] & 65535
];
this._b = 0;
for (var i = 0; i < 4; i++) {
nextState.call(this);
}
for (var i = 0; i < 8; i++) {
C2[i] ^= X[i + 4 & 7];
}
if (iv) {
var IV = iv.words;
var IV_0 = IV[0];
var IV_1 = IV[1];
var i0 = (IV_0 << 8 | IV_0 >>> 24) & 16711935 | (IV_0 << 24 | IV_0 >>> 8) & 4278255360;
var i2 = (IV_1 << 8 | IV_1 >>> 24) & 16711935 | (IV_1 << 24 | IV_1 >>> 8) & 4278255360;
var i1 = i0 >>> 16 | i2 & 4294901760;
var i3 = i2 << 16 | i0 & 65535;
C2[0] ^= i0;
C2[1] ^= i1;
C2[2] ^= i2;
C2[3] ^= i3;
C2[4] ^= i0;
C2[5] ^= i1;
C2[6] ^= i2;
C2[7] ^= i3;
for (var i = 0; i < 4; i++) {
nextState.call(this);
}
}
},
_doProcessBlock: function(M, offset) {
var X = this._X;
nextState.call(this);
S[0] = X[0] ^ X[5] >>> 16 ^ X[3] << 16;
S[1] = X[2] ^ X[7] >>> 16 ^ X[5] << 16;
S[2] = X[4] ^ X[1] >>> 16 ^ X[7] << 16;
S[3] = X[6] ^ X[3] >>> 16 ^ X[1] << 16;
for (var i = 0; i < 4; i++) {
S[i] = (S[i] << 8 | S[i] >>> 24) & 16711935 | (S[i] << 24 | S[i] >>> 8) & 4278255360;
M[offset + i] ^= S[i];
}
},
blockSize: 128 / 32,
ivSize: 64 / 32
});
function nextState() {
var X = this._X;
var C2 = this._C;
for (var i = 0; i < 8; i++) {
C_[i] = C2[i];
}
C2[0] = C2[0] + 1295307597 + this._b | 0;
C2[1] = C2[1] + 3545052371 + (C2[0] >>> 0 < C_[0] >>> 0 ? 1 : 0) | 0;
C2[2] = C2[2] + 886263092 + (C2[1] >>> 0 < C_[1] >>> 0 ? 1 : 0) | 0;
C2[3] = C2[3] + 1295307597 + (C2[2] >>> 0 < C_[2] >>> 0 ? 1 : 0) | 0;
C2[4] = C2[4] + 3545052371 + (C2[3] >>> 0 < C_[3] >>> 0 ? 1 : 0) | 0;
C2[5] = C2[5] + 886263092 + (C2[4] >>> 0 < C_[4] >>> 0 ? 1 : 0) | 0;
C2[6] = C2[6] + 1295307597 + (C2[5] >>> 0 < C_[5] >>> 0 ? 1 : 0) | 0;
C2[7] = C2[7] + 3545052371 + (C2[6] >>> 0 < C_[6] >>> 0 ? 1 : 0) | 0;
this._b = C2[7] >>> 0 < C_[7] >>> 0 ? 1 : 0;
for (var i = 0; i < 8; i++) {
var gx = X[i] + C2[i];
var ga = gx & 65535;
var gb = gx >>> 16;
var gh = ((ga * ga >>> 17) + ga * gb >>> 15) + gb * gb;
var gl = ((gx & 4294901760) * gx | 0) + ((gx & 65535) * gx | 0);
G[i] = gh ^ gl;
}
X[0] = G[0] + (G[7] << 16 | G[7] >>> 16) + (G[6] << 16 | G[6] >>> 16) | 0;
X[1] = G[1] + (G[0] << 8 | G[0] >>> 24) + G[7] | 0;
X[2] = G[2] + (G[1] << 16 | G[1] >>> 16) + (G[0] << 16 | G[0] >>> 16) | 0;
X[3] = G[3] + (G[2] << 8 | G[2] >>> 24) + G[1] | 0;
X[4] = G[4] + (G[3] << 16 | G[3] >>> 16) + (G[2] << 16 | G[2] >>> 16) | 0;
X[5] = G[5] + (G[4] << 8 | G[4] >>> 24) + G[3] | 0;
X[6] = G[6] + (G[5] << 16 | G[5] >>> 16) + (G[4] << 16 | G[4] >>> 16) | 0;
X[7] = G[7] + (G[6] << 8 | G[6] >>> 24) + G[5] | 0;
}
C.Rabbit = StreamCipher._createHelper(Rabbit);
})();
return CryptoJS.Rabbit;
});
})(rabbit);
return rabbit.exports;
}
var rabbitLegacy = { exports: {} };
var hasRequiredRabbitLegacy;
function requireRabbitLegacy() {
if (hasRequiredRabbitLegacy)
return rabbitLegacy.exports;
hasRequiredRabbitLegacy = 1;
(function(module, exports) {
(function(root, factory, undef) {
{
module.exports = factory(requireCore(), requireEncBase64(), requireMd5(), requireEvpkdf(), requireCipherCore());
}
})(commonjsGlobal, function(CryptoJS) {
(function() {
var C = CryptoJS;
var C_lib = C.lib;
var StreamCipher = C_lib.StreamCipher;
var C_algo = C.algo;
var S = [];
var C_ = [];
var G = [];
var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({
_doReset: function() {
var K = this._key.words;
var iv = this.cfg.iv;
var X = this._X = [
K[0],
K[3] << 16 | K[2] >>> 16,
K[1],
K[0] << 16 | K[3] >>> 16,
K[2],
K[1] << 16 | K[0] >>> 16,
K[3],
K[2] << 16 | K[1] >>> 16
];
var C2 = this._C = [
K[2] << 16 | K[2] >>> 16,
K[0] & 4294901760 | K[1] & 65535,
K[3] << 16 | K[3] >>> 16,
K[1] & 4294901760 | K[2] & 65535,
K[0] << 16 | K[0] >>> 16,
K[2] & 4294901760 | K[3] & 65535,
K[1] << 16 | K[1] >>> 16,
K[3] & 4294901760 | K[0] & 65535
];
this._b = 0;
for (var i = 0; i < 4; i++) {
nextState.call(this);
}
for (var i = 0; i < 8; i++) {
C2[i] ^= X[i + 4 & 7];
}
if (iv) {
var IV = iv.words;
var IV_0 = IV[0];
var IV_1 = IV[1];
var i0 = (IV_0 << 8 | IV_0 >>> 24) & 16711935 | (IV_0 << 24 | IV_0 >>> 8) & 4278255360;
var i2 = (IV_1 << 8 | IV_1 >>> 24) & 16711935 | (IV_1 << 24 | IV_1 >>> 8) & 4278255360;
var i1 = i0 >>> 16 | i2 & 4294901760;
var i3 = i2 << 16 | i0 & 65535;
C2[0] ^= i0;
C2[1] ^= i1;
C2[2] ^= i2;
C2[3] ^= i3;
C2[4] ^= i0;
C2[5] ^= i1;
C2[6] ^= i2;
C2[7] ^= i3;
for (var i = 0; i < 4; i++) {
nextState.call(this);
}
}
},
_doProcessBlock: function(M, offset) {
var X = this._X;
nextState.call(this);
S[0] = X[0] ^ X[5] >>> 16 ^ X[3] << 16;
S[1] = X[2] ^ X[7] >>> 16 ^ X[5] << 16;
S[2] = X[4] ^ X[1] >>> 16 ^ X[7] << 16;
S[3] = X[6] ^ X[3] >>> 16 ^ X[1] << 16;
for (var i = 0; i < 4; i++) {
S[i] = (S[i] << 8 | S[i] >>> 24) & 16711935 | (S[i] << 24 | S[i] >>> 8) & 4278255360;
M[offset + i] ^= S[i];
}
},
blockSize: 128 / 32,
ivSize: 64 / 32
});
function nextState() {
var X = this._X;
var C2 = this._C;
for (var i = 0; i < 8; i++) {
C_[i] = C2[i];
}
C2[0] = C2[0] + 1295307597 + this._b | 0;
C2[1] = C2[1] + 3545052371 + (C2[0] >>> 0 < C_[0] >>> 0 ? 1 : 0) | 0;
C2[2] = C2[2] + 886263092 + (C2[1] >>> 0 < C_[1] >>> 0 ? 1 : 0) | 0;
C2[3] = C2[3] + 1295307597 + (C2[2] >>> 0 < C_[2] >>> 0 ? 1 : 0) | 0;
C2[4] = C2[4] + 3545052371 + (C2[3] >>> 0 < C_[3] >>> 0 ? 1 : 0) | 0;
C2[5] = C2[5] + 886263092 + (C2[4] >>> 0 < C_[4] >>> 0 ? 1 : 0) | 0;
C2[6] = C2[6] + 1295307597 + (C2[5] >>> 0 < C_[5] >>> 0 ? 1 : 0) | 0;
C2[7] = C2[7] + 3545052371 + (C2[6] >>> 0 < C_[6] >>> 0 ? 1 : 0) | 0;
this._b = C2[7] >>> 0 < C_[7] >>> 0 ? 1 : 0;
for (var i = 0; i < 8; i++) {
var gx = X[i] + C2[i];
var ga = gx & 65535;
var gb = gx >>> 16;
var gh = ((ga * ga >>> 17) + ga * gb >>> 15) + gb * gb;
var gl = ((gx & 4294901760) * gx | 0) + ((gx & 65535) * gx | 0);
G[i] = gh ^ gl;
}
X[0] = G[0] + (G[7] << 16 | G[7] >>> 16) + (G[6] << 16 | G[6] >>> 16) | 0;
X[1] = G[1] + (G[0] << 8 | G[0] >>> 24) + G[7] | 0;
X[2] = G[2] + (G[1] << 16 | G[1] >>> 16) + (G[0] << 16 | G[0] >>> 16) | 0;
X[3] = G[3] + (G[2] << 8 | G[2] >>> 24) + G[1] | 0;
X[4] = G[4] + (G[3] << 16 | G[3] >>> 16) + (G[2] << 16 | G[2] >>> 16) | 0;
X[5] = G[5] + (G[4] << 8 | G[4] >>> 24) + G[3] | 0;
X[6] = G[6] + (G[5] << 16 | G[5] >>> 16) + (G[4] << 16 | G[4] >>> 16) | 0;
X[7] = G[7] + (G[6] << 8 | G[6] >>> 24) + G[5] | 0;
}
C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);
})();
return CryptoJS.RabbitLegacy;
});
})(rabbitLegacy);
return rabbitLegacy.exports;
}
var blowfish = { exports: {} };
var hasRequiredBlowfish;
function requireBlowfish() {
if (hasRequiredBlowfish)
return blowfish.exports;
hasRequiredBlowfish = 1;
(function(module, exports) {
(function(root, factory, undef) {
{
module.exports = factory(requireCore(), requireEncBase64(), requireMd5(), requireEvpkdf(), requireCipherCore());
}
})(commonjsGlobal, function(CryptoJS) {
(function() {
var C = CryptoJS;
var C_lib = C.lib;
var BlockCipher = C_lib.BlockCipher;
var C_algo = C.algo;
const N = 16;
const ORIG_P = [
608135816,
2242054355,
320440878,
57701188,
2752067618,
698298832,
137296536,
3964562569,
1160258022,
953160567,
3193202383,
887688300,
3232508343,
3380367581,
1065670069,
3041331479,
2450970073,
2306472731
];
const ORIG_S = [
[
3509652390,
2564797868,
805139163,
3491422135,
3101798381,
1780907670,
3128725573,
4046225305,
614570311,
3012652279,
134345442,
2240740374,
1667834072,
1901547113,
2757295779,
4103290238,
227898511,
1921955416,
1904987480,
2182433518,
2069144605,
3260701109,
2620446009,
720527379,
3318853667,
677414384,
3393288472,
3101374703,
2390351024,
1614419982,
1822297739,
2954791486,
3608508353,
3174124327,
2024746970,
1432378464,
3864339955,
2857741204,
1464375394,
1676153920,
1439316330,
715854006,
3033291828,
289532110,
2706671279,
2087905683,
3018724369,
1668267050,
732546397,
1947742710,
3462151702,
2609353502,
2950085171,
1814351708,
2050118529,
680887927,
999245976,
1800124847,
3300911131,
1713906067,
1641548236,
4213287313,
1216130144,
1575780402,
4018429277,
3917837745,
3693486850,
3949271944,
596196993,
3549867205,
258830323,
2213823033,
772490370,
2760122372,
1774776394,
2652871518,
566650946,
4142492826,
1728879713,
2882767088,
1783734482,
3629395816,
2517608232,
2874225571,
1861159788,
326777828,
3124490320,
2130389656,
2716951837,
967770486,
1724537150,
2185432712,
2364442137,
1164943284,
2105845187,
998989502,
3765401048,
2244026483,
1075463327,
1455516326,
1322494562,
910128902,
469688178,
1117454909,
936433444,
3490320968,
3675253459,
1240580251,
122909385,
2157517691,
634681816,
4142456567,
3825094682,
3061402683,
2540495037,
79693498,
3249098678,
1084186820,
1583128258,
426386531,
1761308591,
1047286709,
322548459,
995290223,
1845252383,
2603652396,
3431023940,
2942221577,
3202600964,
3727903485,
1712269319,
422464435,
3234572375,
1170764815,
3523960633,
3117677531,
1434042557,
442511882,
3600875718,
1076654713,
1738483198,
4213154764,
2393238008,
3677496056,
1014306527,
4251020053,
793779912,
2902807211,
842905082,
4246964064,
1395751752,
1040244610,
2656851899,
3396308128,
445077038,
3742853595,
3577915638,
679411651,
2892444358,
2354009459,
1767581616,
3150600392,
3791627101,
3102740896,
284835224,
4246832056,
1258075500,
768725851,
2589189241,
3069724005,
3532540348,
1274779536,
3789419226,
2764799539,
1660621633,
3471099624,
4011903706,
913787905,
3497959166,
737222580,
2514213453,
2928710040,
3937242737,
1804850592,
3499020752,
2949064160,
2386320175,
2390070455,
2415321851,
4061277028,
2290661394,
2416832540,
1336762016,
1754252060,
3520065937,
3014181293,
791618072,
3188594551,
3933548030,
2332172193,
3852520463,
3043980520,
413987798,
3465142937,
3030929376,
4245938359,
2093235073,
3534596313,
375366246,
2157278981,
2479649556,
555357303,
3870105701,
2008414854,
3344188149,
4221384143,
3956125452,
2067696032,
3594591187,
2921233993,
2428461,
544322398,
577241275,
1471733935,
610547355,
4027169054,
1432588573,
1507829418,
2025931657,
3646575487,
545086370,
48609733,
2200306550,
1653985193,
298326376,
1316178497,
3007786442,
2064951626,
458293330,
2589141269,
3591329599,
3164325604,
727753846,
2179363840,
146436021,
1461446943,
4069977195,
705550613,
3059967265,
3887724982,
4281599278,
3313849956,
1404054877,
2845806497,
146425753,
1854211946
],
[
1266315497,
3048417604,
3681880366,
3289982499,
290971e4,
1235738493,
2632868024,
2414719590,
3970600049,
1771706367,
1449415276,
3266420449,
422970021,
1963543593,
2690192192,
3826793022,
1062508698,
1531092325,
1804592342,
2583117782,
2714934279,
4024971509,
1294809318,
4028980673,
1289560198,
2221992742,
1669523910,
35572830,
157838143,
1052438473,
1016535060,
1802137761,
1753167236,
1386275462,
3080475397,
2857371447,
1040679964,
2145300060,
2390574316,
1461121720,
2956646967,
4031777805,
4028374788,
33600511,
2920084762,
1018524850,
629373528,
3691585981,
3515945977,
2091462646,
2486323059,
586499841,
988145025,
935516892,
3367335476,
2599673255,
2839830854,
265290510,
3972581182,
2759138881,
3795373465,
1005194799,
847297441,
406762289,
1314163512,
1332590856,
1866599683,
4127851711,
750260880,
613907577,
1450815602,
3165620655,
3734664991,
3650291728,
3012275730,
3704569646,
1427272223,
778793252,
1343938022,
2676280711,
2052605720,
1946737175,
3164576444,
3914038668,
3967478842,
3682934266,
1661551462,
3294938066,
4011595847,
840292616,
3712170807,
616741398,
312560963,
711312465,
1351876610,
322626781,
1910503582,
271666773,
2175563734,
1594956187,
70604529,
3617834859,
1007753275,
1495573769,
4069517037,
2549218298,
2663038764,
504708206,
2263041392,
3941167025,
2249088522,
1514023603,
1998579484,
1312622330,
694541497,
2582060303,
2151582166,
1382467621,
776784248,
2618340202,
3323268794,
2497899128,
2784771155,
503983604,
4076293799,
907881277,
423175695,
432175456,
1378068232,
4145222326,
3954048622,
3938656102,
3820766613,
2793130115,
2977904593,
26017576,
3274890735,
3194772133,
1700274565,
1756076034,
4006520079,
3677328699,
720338349,
1533947780,
354530856,
688349552,
3973924725,
1637815568,
332179504,
3949051286,
53804574,
2852348879,
3044236432,
1282449977,
3583942155,
3416972820,
4006381244,
1617046695,
2628476075,
3002303598,
1686838959,
431878346,
2686675385,
1700445008,
1080580658,
1009431731,
832498133,
3223435511,
2605976345,
2271191193,
2516031870,
1648197032,
4164389018,
2548247927,
300782431,
375919233,
238389289,
3353747414,
2531188641,
2019080857,
1475708069,
455242339,
2609103871,
448939670,
3451063019,
1395535956,
2413381860,
1841049896,
1491858159,
885456874,
4264095073,
4001119347,
1565136089,
3898914787,
1108368660,
540939232,
1173283510,
2745871338,
3681308437,
4207628240,
3343053890,
4016749493,
1699691293,
1103962373,
3625875870,
2256883143,
3830138730,
1031889488,
3479347698,
1535977030,
4236805024,
3251091107,
2132092099,
1774941330,
1199868427,
1452454533,
157007616,
2904115357,
342012276,
595725824,
1480756522,
206960106,
497939518,
591360097,
863170706,
2375253569,
3596610801,
1814182875,
2094937945,
3421402208,
1082520231,
3463918190,
2785509508,
435703966,
3908032597,
1641649973,
2842273706,
3305899714,
1510255612,
2148256476,
2655287854,
3276092548,
4258621189,
236887753,
3681803219,
274041037,
1734335097,
3815195456,
3317970021,
1899903192,
1026095262,
4050517792,
356393447,
2410691914,
3873677099,
3682840055
],
[
3913112168,
2491498743,
4132185628,
2489919796,
1091903735,
1979897079,
3170134830,
3567386728,
3557303409,
857797738,
1136121015,
1342202287,
507115054,
2535736646,
337727348,
3213592640,
1301675037,
2528481711,
1895095763,
1721773893,
3216771564,
62756741,
2142006736,
835421444,
2531993523,
1442658625,
3659876326,
2882144922,
676362277,
1392781812,
170690266,
3921047035,
1759253602,
3611846912,
1745797284,
664899054,
1329594018,
3901205900,
3045908486,
2062866102,
2865634940,
3543621612,
3464012697,
1080764994,
553557557,
3656615353,
3996768171,
991055499,
499776247,
1265440854,
648242737,
3940784050,
980351604,
3713745714,
1749149687,
3396870395,
4211799374,
3640570775,
1161844396,
3125318951,
1431517754,
545492359,
4268468663,
3499529547,
1437099964,
2702547544,
3433638243,
2581715763,
2787789398,
1060185593,
1593081372,
2418618748,
4260947970,
69676912,
2159744348,
86519011,
2512459080,
3838209314,
1220612927,
3339683548,
133810670,
1090789135,
1078426020,
1569222167,
845107691,
3583754449,
4072456591,
1091646820,
628848692,
1613405280,
3757631651,
526609435,
236106946,
48312990,
2942717905,
3402727701,
1797494240,
859738849,
992217954,
4005476642,
2243076622,
3870952857,
3732016268,
765654824,
3490871365,
2511836413,
1685915746,
3888969200,
1414112111,
2273134842,
3281911079,
4080962846,
172450625,
2569994100,
980381355,
4109958455,
2819808352,
2716589560,
2568741196,
3681446669,
3329971472,
1835478071,
660984891,
3704678404,
4045999559,
3422617507,
3040415634,
1762651403,
1719377915,
3470491036,
2693910283,
3642056355,
3138596744,
1364962596,
2073328063,
1983633131,
926494387,
3423689081,
2150032023,
4096667949,
1749200295,
3328846651,
309677260,
2016342300,
1779581495,
3079819751,
111262694,
1274766160,
443224088,
298511866,
1025883608,
3806446537,
1145181785,
168956806,
3641502830,
3584813610,
1689216846,
3666258015,
3200248200,
1692713982,
2646376535,
4042768518,
1618508792,
1610833997,
3523052358,
4130873264,
2001055236,
3610705100,
2202168115,
4028541809,
2961195399,
1006657119,
2006996926,
3186142756,
1430667929,
3210227297,
1314452623,
4074634658,
4101304120,
2273951170,
1399257539,
3367210612,
3027628629,
1190975929,
2062231137,
2333990788,
2221543033,
2438960610,
1181637006,
548689776,
2362791313,
3372408396,
3104550113,
3145860560,
296247880,
1970579870,
3078560182,
3769228297,
1714227617,
3291629107,
3898220290,
166772364,
1251581989,
493813264,
448347421,
195405023,
2709975567,
677966185,
3703036547,
1463355134,
2715995803,
1338867538,
1343315457,
2802222074,
2684532164,
233230375,
2599980071,
2000651841,
3277868038,
1638401717,
4028070440,
3237316320,
6314154,
819756386,
300326615,
590932579,
1405279636,
3267499572,
3150704214,
2428286686,
3959192993,
3461946742,
1862657033,
1266418056,
963775037,
2089974820,
2263052895,
1917689273,
448879540,
3550394620,
3981727096,
150775221,
3627908307,
1303187396,
508620638,
2975983352,
2726630617,
1817252668,
1876281319,
1457606340,
908771278,
3720792119,
3617206836,
2455994898,
1729034894,
1080033504
],
[
976866871,
3556439503,
2881648439,
1522871579,
1555064734,
1336096578,
3548522304,
2579274686,
3574697629,
3205460757,
3593280638,
3338716283,
3079412587,
564236357,
2993598910,
1781952180,
1464380207,
3163844217,
3332601554,
1699332808,
1393555694,
1183702653,
3581086237,
1288719814,
691649499,
2847557200,
2895455976,
3193889540,
2717570544,
1781354906,
1676643554,
2592534050,
3230253752,
1126444790,
2770207658,
2633158820,
2210423226,
2615765581,
2414155088,
3127139286,
673620729,
2805611233,
1269405062,
4015350505,
3341807571,
4149409754,
1057255273,
2012875353,
2162469141,
2276492801,
2601117357,
993977747,
3918593370,
2654263191,
753973209,
36408145,
2530585658,
25011837,
3520020182,
2088578344,
530523599,
2918365339,
1524020338,
1518925132,
3760827505,
3759777254,
1202760957,
3985898139,
3906192525,
674977740,
4174734889,
2031300136,
2019492241,
3983892565,
4153806404,
3822280332,
352677332,
2297720250,
60907813,
90501309,
3286998549,
1016092578,
2535922412,
2839152426,
457141659,
509813237,
4120667899,
652014361,
1966332200,
2975202805,
55981186,
2327461051,
676427537,
3255491064,
2882294119,
3433927263,
1307055953,
942726286,
933058658,
2468411793,
3933900994,
4215176142,
1361170020,
2001714738,
2830558078,
3274259782,
1222529897,
1679025792,
2729314320,
3714953764,
1770335741,
151462246,
3013232138,
1682292957,
1483529935,
471910574,
1539241949,
458788160,
3436315007,
1807016891,
3718408830,
978976581,
1043663428,
3165965781,
1927990952,
4200891579,
2372276910,
3208408903,
3533431907,
1412390302,
2931980059,
4132332400,
1947078029,
3881505623,
4168226417,
2941484381,
1077988104,
1320477388,
886195818,
18198404,
3786409e3,
2509781533,
112762804,
3463356488,
1866414978,
891333506,
18488651,
661792760,
1628790961,
3885187036,
3141171499,
876946877,
2693282273,
1372485963,
791857591,
2686433993,
3759982718,
3167212022,
3472953795,
2716379847,
445679433,
3561995674,
3504004811,
3574258232,
54117162,
3331405415,
2381918588,
3769707343,
4154350007,
1140177722,
4074052095,
668550556,
3214352940,
367459370,
261225585,
2610173221,
4209349473,
3468074219,
3265815641,
314222801,
3066103646,
3808782860,
282218597,
3406013506,
3773591054,
379116347,
1285071038,
846784868,
2669647154,
3771962079,
3550491691,
2305946142,
453669953,
1268987020,
3317592352,
3279303384,
3744833421,
2610507566,
3859509063,
266596637,
3847019092,
517658769,
3462560207,
3443424879,
370717030,
4247526661,
2224018117,
4143653529,
4112773975,
2788324899,
2477274417,
1456262402,
2901442914,
1517677493,
1846949527,
2295493580,
3734397586,
2176403920,
1280348187,
1908823572,
3871786941,
846861322,
1172426758,
3287448474,
3383383037,
1655181056,
3139813346,
901632758,
1897031941,
2986607138,
3066810236,
3447102507,
1393639104,
373351379,
950779232,
625454576,
3124240540,
4148612726,
2007998917,
544563296,
2244738638,
2330496472,
2058025392,
1291430526,
424198748,
50039436,
29584100,
3605783033,
2429876329,
2791104160,
1057563949,
3255363231,
3075367218,
3463963227,
1469046755,
985887462
]
];
var BLOWFISH_CTX = {
pbox: [],
sbox: []
};
function F(ctx, x) {
let a = x >> 24 & 255;
let b2 = x >> 16 & 255;
let c2 = x >> 8 & 255;
let d2 = x & 255;
let y = ctx.sbox[0][a] + ctx.sbox[1][b2];
y = y ^ ctx.sbox[2][c2];
y = y + ctx.sbox[3][d2];
return y;
}
function BlowFish_Encrypt(ctx, left, right) {
let Xl = left;
let Xr = right;
let temp;
for (let i = 0; i < N; ++i) {
Xl = Xl ^ ctx.pbox[i];
Xr = F(ctx, Xl) ^ Xr;
temp = Xl;
Xl = Xr;
Xr = temp;
}
temp = Xl;
Xl = Xr;
Xr = temp;
Xr = Xr ^ ctx.pbox[N];
Xl = Xl ^ ctx.pbox[N + 1];
return { left: Xl, right: Xr };
}
function BlowFish_Decrypt(ctx, left, right) {
let Xl = left;
let Xr = right;
let temp;
for (let i = N + 1; i > 1; --i) {
Xl = Xl ^ ctx.pbox[i];
Xr = F(ctx, Xl) ^ Xr;
temp = Xl;
Xl = Xr;
Xr = temp;
}
temp = Xl;
Xl = Xr;
Xr = temp;
Xr = Xr ^ ctx.pbox[1];
Xl = Xl ^ ctx.pbox[0];
return { left: Xl, right: Xr };
}
function BlowFishInit(ctx, key, keysize) {
for (let Row = 0; Row < 4; Row++) {
ctx.sbox[Row] = [];
for (let Col = 0; Col < 256; Col++) {
ctx.sbox[Row][Col] = ORIG_S[Row][Col];
}
}
let keyIndex = 0;
for (let index2 = 0; index2 < N + 2; index2++) {
ctx.pbox[index2] = ORIG_P[index2] ^ key[keyIndex];
keyIndex++;
if (keyIndex >= keysize) {
keyIndex = 0;
}
}
let Data1 = 0;
let Data2 = 0;
let res = 0;
for (let i = 0; i < N + 2; i += 2) {
res = BlowFish_Encrypt(ctx, Data1, Data2);
Data1 = res.left;
Data2 = res.right;
ctx.pbox[i] = Data1;
ctx.pbox[i + 1] = Data2;
}
for (let i = 0; i < 4; i++) {
for (let j = 0; j < 256; j += 2) {
res = BlowFish_Encrypt(ctx, Data1, Data2);
Data1 = res.left;
Data2 = res.right;
ctx.sbox[i][j] = Data1;
ctx.sbox[i][j + 1] = Data2;
}
}
return true;
}
var Blowfish = C_algo.Blowfish = BlockCipher.extend({
_doReset: function() {
if (this._keyPriorReset === this._key) {
return;
}
var key = this._keyPriorReset = this._key;
var keyWords = key.words;
var keySize = key.sigBytes / 4;
BlowFishInit(BLOWFISH_CTX, keyWords, keySize);
},
encryptBlock: function(M, offset) {
var res = BlowFish_Encrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);
M[offset] = res.left;
M[offset + 1] = res.right;
},
decryptBlock: function(M, offset) {
var res = BlowFish_Decrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);
M[offset] = res.left;
M[offset + 1] = res.right;
},
blockSize: 64 / 32,
keySize: 128 / 32,
ivSize: 64 / 32
});
C.Blowfish = BlockCipher._createHelper(Blowfish);
})();
return CryptoJS.Blowfish;
});
})(blowfish);
return blowfish.exports;
}
(function(module, exports) {
(function(root, factory, undef) {
{
module.exports = factory(requireCore(), requireX64Core(), requireLibTypedarrays(), requireEncUtf16(), requireEncBase64(), requireEncBase64url(), requireMd5(), requireSha1(), requireSha256(), requireSha224(), requireSha512(), requireSha384(), requireSha3(), requireRipemd160(), requireHmac(), requirePbkdf2(), requireEvpkdf(), requireCipherCore(), requireModeCfb(), requireModeCtr(), requireModeCtrGladman(), requireModeOfb(), requireModeEcb(), requirePadAnsix923(), requirePadIso10126(), requirePadIso97971(), requirePadZeropadding(), requirePadNopadding(), requireFormatHex(), requireAes(), requireTripledes(), requireRc4(), requireRabbit(), requireRabbitLegacy(), requireBlowfish());
}
})(commonjsGlobal, function(CryptoJS) {
return CryptoJS;
});
})(cryptoJs);
var cryptoJsExports = cryptoJs.exports;
var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz";
function int2char(n2) {
return BI_RM.charAt(n2);
}
function op_and(x, y) {
return x & y;
}
function op_or(x, y) {
return x | y;
}
function op_xor(x, y) {
return x ^ y;
}
function op_andnot(x, y) {
return x & ~y;
}
function lbit(x) {
if (x == 0) {
return -1;
}
var r = 0;
if ((x & 65535) == 0) {
x >>= 16;
r += 16;
}
if ((x & 255) == 0) {
x >>= 8;
r += 8;
}
if ((x & 15) == 0) {
x >>= 4;
r += 4;
}
if ((x & 3) == 0) {
x >>= 2;
r += 2;
}
if ((x & 1) == 0) {
++r;
}
return r;
}
function cbit(x) {
var r = 0;
while (x != 0) {
x &= x - 1;
++r;
}
return r;
}
var b64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var b64pad = "=";
function hex2b64(h2) {
var i;
var c2;
var ret = "";
for (i = 0; i + 3 <= h2.length; i += 3) {
c2 = parseInt(h2.substring(i, i + 3), 16);
ret += b64map.charAt(c2 >> 6) + b64map.charAt(c2 & 63);
}
if (i + 1 == h2.length) {
c2 = parseInt(h2.substring(i, i + 1), 16);
ret += b64map.charAt(c2 << 2);
} else if (i + 2 == h2.length) {
c2 = parseInt(h2.substring(i, i + 2), 16);
ret += b64map.charAt(c2 >> 2) + b64map.charAt((c2 & 3) << 4);
}
while ((ret.length & 3) > 0) {
ret += b64pad;
}
return ret;
}
function b64tohex(s) {
var ret = "";
var i;
var k2 = 0;
var slop = 0;
for (i = 0; i < s.length; ++i) {
if (s.charAt(i) == b64pad) {
break;
}
var v2 = b64map.indexOf(s.charAt(i));
if (v2 < 0) {
continue;
}
if (k2 == 0) {
ret += int2char(v2 >> 2);
slop = v2 & 3;
k2 = 1;
} else if (k2 == 1) {
ret += int2char(slop << 2 | v2 >> 4);
slop = v2 & 15;
k2 = 2;
} else if (k2 == 2) {
ret += int2char(slop);
ret += int2char(v2 >> 2);
slop = v2 & 3;
k2 = 3;
} else {
ret += int2char(slop << 2 | v2 >> 4);
ret += int2char(v2 & 15);
k2 = 0;
}
}
if (k2 == 1) {
ret += int2char(slop << 2);
}
return ret;
}
var decoder$1;
var Hex = {
decode: function(a) {
var i;
if (decoder$1 === void 0) {
var hex2 = "0123456789ABCDEF";
var ignore2 = " \f\n\r \u2028\u2029";
decoder$1 = {};
for (i = 0; i < 16; ++i) {
decoder$1[hex2.charAt(i)] = i;
}
hex2 = hex2.toLowerCase();
for (i = 10; i < 16; ++i) {
decoder$1[hex2.charAt(i)] = i;
}
for (i = 0; i < ignore2.length; ++i) {
decoder$1[ignore2.charAt(i)] = -1;
}
}
var out = [];
var bits = 0;
var char_count = 0;
for (i = 0; i < a.length; ++i) {
var c2 = a.charAt(i);
if (c2 == "=") {
break;
}
c2 = decoder$1[c2];
if (c2 == -1) {
continue;
}
if (c2 === void 0) {
throw new Error("Illegal character at offset " + i);
}
bits |= c2;
if (++char_count >= 2) {
out[out.length] = bits;
bits = 0;
char_count = 0;
} else {
bits <<= 4;
}
}
if (char_count) {
throw new Error("Hex encoding incomplete: 4 bits missing");
}
return out;
}
};
var decoder;
var Base64 = {
decode: function(a) {
var i;
if (decoder === void 0) {
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var ignore2 = "= \f\n\r \u2028\u2029";
decoder = /* @__PURE__ */ Object.create(null);
for (i = 0; i < 64; ++i) {
decoder[b64.charAt(i)] = i;
}
decoder["-"] = 62;
decoder["_"] = 63;
for (i = 0; i < ignore2.length; ++i) {
decoder[ignore2.charAt(i)] = -1;
}
}
var out = [];
var bits = 0;
var char_count = 0;
for (i = 0; i < a.length; ++i) {
var c2 = a.charAt(i);
if (c2 == "=") {
break;
}
c2 = decoder[c2];
if (c2 == -1) {
continue;
}
if (c2 === void 0) {
throw new Error("Illegal character at offset " + i);
}
bits |= c2;
if (++char_count >= 4) {
out[out.length] = bits >> 16;
out[out.length] = bits >> 8 & 255;
out[out.length] = bits & 255;
bits = 0;
char_count = 0;
} else {
bits <<= 6;
}
}
switch (char_count) {
case 1:
throw new Error("Base64 encoding incomplete: at least 2 bits missing");
case 2:
out[out.length] = bits >> 10;
break;
case 3:
out[out.length] = bits >> 16;
out[out.length] = bits >> 8 & 255;
break;
}
return out;
},
re: /-----BEGIN [^-]+-----([A-Za-z0-9+\/=\s]+)-----END [^-]+-----|begin-base64[^\n]+\n([A-Za-z0-9+\/=\s]+)====/,
unarmor: function(a) {
var m2 = Base64.re.exec(a);
if (m2) {
if (m2[1]) {
a = m2[1];
} else if (m2[2]) {
a = m2[2];
} else {
throw new Error("RegExp out of sync");
}
}
return Base64.decode(a);
}
};
var max = 1e13;
var Int10 = (
/** @class */
function() {
function Int102(value) {
this.buf = [+value || 0];
}
Int102.prototype.mulAdd = function(m2, c2) {
var b2 = this.buf;
var l2 = b2.length;
var i;
var t2;
for (i = 0; i < l2; ++i) {
t2 = b2[i] * m2 + c2;
if (t2 < max) {
c2 = 0;
} else {
c2 = 0 | t2 / max;
t2 -= c2 * max;
}
b2[i] = t2;
}
if (c2 > 0) {
b2[i] = c2;
}
};
Int102.prototype.sub = function(c2) {
var b2 = this.buf;
var l2 = b2.length;
var i;
var t2;
for (i = 0; i < l2; ++i) {
t2 = b2[i] - c2;
if (t2 < 0) {
t2 += max;
c2 = 1;
} else {
c2 = 0;
}
b2[i] = t2;
}
while (b2[b2.length - 1] === 0) {
b2.pop();
}
};
Int102.prototype.toString = function(base) {
if ((base || 10) != 10) {
throw new Error("only base 10 is supported");
}
var b2 = this.buf;
var s = b2[b2.length - 1].toString();
for (var i = b2.length - 2; i >= 0; --i) {
s += (max + b2[i]).toString().substring(1);
}
return s;
};
Int102.prototype.valueOf = function() {
var b2 = this.buf;
var v2 = 0;
for (var i = b2.length - 1; i >= 0; --i) {
v2 = v2 * max + b2[i];
}
return v2;
};
Int102.prototype.simplify = function() {
var b2 = this.buf;
return b2.length == 1 ? b2[0] : this;
};
return Int102;
}()
);
var ellipsis = "…";
var reTimeS = /^(\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/;
var reTimeL = /^(\d\d\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/;
function stringCut(str, len) {
if (str.length > len) {
str = str.substring(0, len) + ellipsis;
}
return str;
}
var Stream = (
/** @class */
function() {
function Stream2(enc, pos) {
this.hexDigits = "0123456789ABCDEF";
if (enc instanceof Stream2) {
this.enc = enc.enc;
this.pos = enc.pos;
} else {
this.enc = enc;
this.pos = pos;
}
}
Stream2.prototype.get = function(pos) {
if (pos === void 0) {
pos = this.pos++;
}
if (pos >= this.enc.length) {
throw new Error("Requesting byte offset ".concat(pos, " on a stream of length ").concat(this.enc.length));
}
return "string" === typeof this.enc ? this.enc.charCodeAt(pos) : this.enc[pos];
};
Stream2.prototype.hexByte = function(b2) {
return this.hexDigits.charAt(b2 >> 4 & 15) + this.hexDigits.charAt(b2 & 15);
};
Stream2.prototype.hexDump = function(start, end, raw) {
var s = "";
for (var i = start; i < end; ++i) {
s += this.hexByte(this.get(i));
if (raw !== true) {
switch (i & 15) {
case 7:
s += " ";
break;
case 15:
s += "\n";
break;
default:
s += " ";
}
}
}
return s;
};
Stream2.prototype.isASCII = function(start, end) {
for (var i = start; i < end; ++i) {
var c2 = this.get(i);
if (c2 < 32 || c2 > 176) {
return false;
}
}
return true;
};
Stream2.prototype.parseStringISO = function(start, end) {
var s = "";
for (var i = start; i < end; ++i) {
s += String.fromCharCode(this.get(i));
}
return s;
};
Stream2.prototype.parseStringUTF = function(start, end) {
var s = "";
for (var i = start; i < end; ) {
var c2 = this.get(i++);
if (c2 < 128) {
s += String.fromCharCode(c2);
} else if (c2 > 191 && c2 < 224) {
s += String.fromCharCode((c2 & 31) << 6 | this.get(i++) & 63);
} else {
s += String.fromCharCode((c2 & 15) << 12 | (this.get(i++) & 63) << 6 | this.get(i++) & 63);
}
}
return s;
};
Stream2.prototype.parseStringBMP = function(start, end) {
var str = "";
var hi;
var lo;
for (var i = start; i < end; ) {
hi = this.get(i++);
lo = this.get(i++);
str += String.fromCharCode(hi << 8 | lo);
}
return str;
};
Stream2.prototype.parseTime = function(start, end, shortYear) {
var s = this.parseStringISO(start, end);
var m2 = (shortYear ? reTimeS : reTimeL).exec(s);
if (!m2) {
return "Unrecognized time: " + s;
}
if (shortYear) {
m2[1] = +m2[1];
m2[1] += +m2[1] < 70 ? 2e3 : 1900;
}
s = m2[1] + "-" + m2[2] + "-" + m2[3] + " " + m2[4];
if (m2[5]) {
s += ":" + m2[5];
if (m2[6]) {
s += ":" + m2[6];
if (m2[7]) {
s += "." + m2[7];
}
}
}
if (m2[8]) {
s += " UTC";
if (m2[8] != "Z") {
s += m2[8];
if (m2[9]) {
s += ":" + m2[9];
}
}
}
return s;
};
Stream2.prototype.parseInteger = function(start, end) {
var v2 = this.get(start);
var neg = v2 > 127;
var pad = neg ? 255 : 0;
var len;
var s = "";
while (v2 == pad && ++start < end) {
v2 = this.get(start);
}
len = end - start;
if (len === 0) {
return neg ? -1 : 0;
}
if (len > 4) {
s = v2;
len <<= 3;
while (((+s ^ pad) & 128) == 0) {
s = +s << 1;
--len;
}
s = "(" + len + " bit)\n";
}
if (neg) {
v2 = v2 - 256;
}
var n2 = new Int10(v2);
for (var i = start + 1; i < end; ++i) {
n2.mulAdd(256, this.get(i));
}
return s + n2.toString();
};
Stream2.prototype.parseBitString = function(start, end, maxLength) {
var unusedBit = this.get(start);
var lenBit = (end - start - 1 << 3) - unusedBit;
var intro = "(" + lenBit + " bit)\n";
var s = "";
for (var i = start + 1; i < end; ++i) {
var b2 = this.get(i);
var skip = i == end - 1 ? unusedBit : 0;
for (var j = 7; j >= skip; --j) {
s += b2 >> j & 1 ? "1" : "0";
}
if (s.length > maxLength) {
return intro + stringCut(s, maxLength);
}
}
return intro + s;
};
Stream2.prototype.parseOctetString = function(start, end, maxLength) {
if (this.isASCII(start, end)) {
return stringCut(this.parseStringISO(start, end), maxLength);
}
var len = end - start;
var s = "(" + len + " byte)\n";
maxLength /= 2;
if (len > maxLength) {
end = start + maxLength;
}
for (var i = start; i < end; ++i) {
s += this.hexByte(this.get(i));
}
if (len > maxLength) {
s += ellipsis;
}
return s;
};
Stream2.prototype.parseOID = function(start, end, maxLength) {
var s = "";
var n2 = new Int10();
var bits = 0;
for (var i = start; i < end; ++i) {
var v2 = this.get(i);
n2.mulAdd(128, v2 & 127);
bits += 7;
if (!(v2 & 128)) {
if (s === "") {
n2 = n2.simplify();
if (n2 instanceof Int10) {
n2.sub(80);
s = "2." + n2.toString();
} else {
var m2 = n2 < 80 ? n2 < 40 ? 0 : 1 : 2;
s = m2 + "." + (n2 - m2 * 40);
}
} else {
s += "." + n2.toString();
}
if (s.length > maxLength) {
return stringCut(s, maxLength);
}
n2 = new Int10();
bits = 0;
}
}
if (bits > 0) {
s += ".incomplete";
}
return s;
};
return Stream2;
}()
);
var ASN1 = (
/** @class */
function() {
function ASN12(stream, header, length2, tag, sub) {
if (!(tag instanceof ASN1Tag)) {
throw new Error("Invalid tag value.");
}
this.stream = stream;
this.header = header;
this.length = length2;
this.tag = tag;
this.sub = sub;
}
ASN12.prototype.typeName = function() {
switch (this.tag.tagClass) {
case 0:
switch (this.tag.tagNumber) {
case 0:
return "EOC";
case 1:
return "BOOLEAN";
case 2:
return "INTEGER";
case 3:
return "BIT_STRING";
case 4:
return "OCTET_STRING";
case 5:
return "NULL";
case 6:
return "OBJECT_IDENTIFIER";
case 7:
return "ObjectDescriptor";
case 8:
return "EXTERNAL";
case 9:
return "REAL";
case 10:
return "ENUMERATED";
case 11:
return "EMBEDDED_PDV";
case 12:
return "UTF8String";
case 16:
return "SEQUENCE";
case 17:
return "SET";
case 18:
return "NumericString";
case 19:
return "PrintableString";
case 20:
return "TeletexString";
case 21:
return "VideotexString";
case 22:
return "IA5String";
case 23:
return "UTCTime";
case 24:
return "GeneralizedTime";
case 25:
return "GraphicString";
case 26:
return "VisibleString";
case 27:
return "GeneralString";
case 28:
return "UniversalString";
case 30:
return "BMPString";
}
return "Universal_" + this.tag.tagNumber.toString();
case 1:
return "Application_" + this.tag.tagNumber.toString();
case 2:
return "[" + this.tag.tagNumber.toString() + "]";
case 3:
return "Private_" + this.tag.tagNumber.toString();
}
};
ASN12.prototype.content = function(maxLength) {
if (this.tag === void 0) {
return null;
}
if (maxLength === void 0) {
maxLength = Infinity;
}
var content = this.posContent();
var len = Math.abs(this.length);
if (!this.tag.isUniversal()) {
if (this.sub !== null) {
return "(" + this.sub.length + " elem)";
}
return this.stream.parseOctetString(content, content + len, maxLength);
}
switch (this.tag.tagNumber) {
case 1:
return this.stream.get(content) === 0 ? "false" : "true";
case 2:
return this.stream.parseInteger(content, content + len);
case 3:
return this.sub ? "(" + this.sub.length + " elem)" : this.stream.parseBitString(content, content + len, maxLength);
case 4:
return this.sub ? "(" + this.sub.length + " elem)" : this.stream.parseOctetString(content, content + len, maxLength);
case 6:
return this.stream.parseOID(content, content + len, maxLength);
case 16:
case 17:
if (this.sub !== null) {
return "(" + this.sub.length + " elem)";
} else {
return "(no elem)";
}
case 12:
return stringCut(this.stream.parseStringUTF(content, content + len), maxLength);
case 18:
case 19:
case 20:
case 21:
case 22:
case 26:
return stringCut(this.stream.parseStringISO(content, content + len), maxLength);
case 30:
return stringCut(this.stream.parseStringBMP(content, content + len), maxLength);
case 23:
case 24:
return this.stream.parseTime(content, content + len, this.tag.tagNumber == 23);
}
return null;
};
ASN12.prototype.toString = function() {
return this.typeName() + "@" + this.stream.pos + "[header:" + this.header + ",length:" + this.length + ",sub:" + (this.sub === null ? "null" : this.sub.length) + "]";
};
ASN12.prototype.toPrettyString = function(indent) {
if (indent === void 0) {
indent = "";
}
var s = indent + this.typeName() + " @" + this.stream.pos;
if (this.length >= 0) {
s += "+";
}
s += this.length;
if (this.tag.tagConstructed) {
s += " (constructed)";
} else if (this.tag.isUniversal() && (this.tag.tagNumber == 3 || this.tag.tagNumber == 4) && this.sub !== null) {
s += " (encapsulates)";
}
s += "\n";
if (this.sub !== null) {
indent += " ";
for (var i = 0, max2 = this.sub.length; i < max2; ++i) {
s += this.sub[i].toPrettyString(indent);
}
}
return s;
};
ASN12.prototype.posStart = function() {
return this.stream.pos;
};
ASN12.prototype.posContent = function() {
return this.stream.pos + this.header;
};
ASN12.prototype.posEnd = function() {
return this.stream.pos + this.header + Math.abs(this.length);
};
ASN12.prototype.toHexString = function() {
return this.stream.hexDump(this.posStart(), this.posEnd(), true);
};
ASN12.decodeLength = function(stream) {
var buf = stream.get();
var len = buf & 127;
if (len == buf) {
return len;
}
if (len > 6) {
throw new Error("Length over 48 bits not supported at position " + (stream.pos - 1));
}
if (len === 0) {
return null;
}
buf = 0;
for (var i = 0; i < len; ++i) {
buf = buf * 256 + stream.get();
}
return buf;
};
ASN12.prototype.getHexStringValue = function() {
var hexString = this.toHexString();
var offset = this.header * 2;
var length2 = this.length * 2;
return hexString.substr(offset, length2);
};
ASN12.decode = function(str) {
var stream;
if (!(str instanceof Stream)) {
stream = new Stream(str, 0);
} else {
stream = str;
}
var streamStart = new Stream(stream);
var tag = new ASN1Tag(stream);
var len = ASN12.decodeLength(stream);
var start = stream.pos;
var header = start - streamStart.pos;
var sub = null;
var getSub = function() {
var ret = [];
if (len !== null) {
var end = start + len;
while (stream.pos < end) {
ret[ret.length] = ASN12.decode(stream);
}
if (stream.pos != end) {
throw new Error("Content size is not correct for container starting at offset " + start);
}
} else {
try {
for (; ; ) {
var s = ASN12.decode(stream);
if (s.tag.isEOC()) {
break;
}
ret[ret.length] = s;
}
len = start - stream.pos;
} catch (e2) {
throw new Error("Exception while decoding undefined length content: " + e2);
}
}
return ret;
};
if (tag.tagConstructed) {
sub = getSub();
} else if (tag.isUniversal() && (tag.tagNumber == 3 || tag.tagNumber == 4)) {
try {
if (tag.tagNumber == 3) {
if (stream.get() != 0) {
throw new Error("BIT STRINGs with unused bits cannot encapsulate.");
}
}
sub = getSub();
for (var i = 0; i < sub.length; ++i) {
if (sub[i].tag.isEOC()) {
throw new Error("EOC is not supposed to be actual content.");
}
}
} catch (e2) {
sub = null;
}
}
if (sub === null) {
if (len === null) {
throw new Error("We can't skip over an invalid tag with undefined length at offset " + start);
}
stream.pos = start + Math.abs(len);
}
return new ASN12(streamStart, header, len, tag, sub);
};
return ASN12;
}()
);
var ASN1Tag = (
/** @class */
function() {
function ASN1Tag2(stream) {
var buf = stream.get();
this.tagClass = buf >> 6;
this.tagConstructed = (buf & 32) !== 0;
this.tagNumber = buf & 31;
if (this.tagNumber == 31) {
var n2 = new Int10();
do {
buf = stream.get();
n2.mulAdd(128, buf & 127);
} while (buf & 128);
this.tagNumber = n2.simplify();
}
}
ASN1Tag2.prototype.isUniversal = function() {
return this.tagClass === 0;
};
ASN1Tag2.prototype.isEOC = function() {
return this.tagClass === 0 && this.tagNumber === 0;
};
return ASN1Tag2;
}()
);
var dbits;
var canary = 244837814094590;
var j_lm = (canary & 16777215) == 15715070;
var lowprimes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997];
var lplim = (1 << 26) / lowprimes[lowprimes.length - 1];
var BigInteger = (
/** @class */
function() {
function BigInteger2(a, b2, c2) {
if (a != null) {
if ("number" == typeof a) {
this.fromNumber(a, b2, c2);
} else if (b2 == null && "string" != typeof a) {
this.fromString(a, 256);
} else {
this.fromString(a, b2);
}
}
}
BigInteger2.prototype.toString = function(b2) {
if (this.s < 0) {
return "-" + this.negate().toString(b2);
}
var k2;
if (b2 == 16) {
k2 = 4;
} else if (b2 == 8) {
k2 = 3;
} else if (b2 == 2) {
k2 = 1;
} else if (b2 == 32) {
k2 = 5;
} else if (b2 == 4) {
k2 = 2;
} else {
return this.toRadix(b2);
}
var km = (1 << k2) - 1;
var d2;
var m2 = false;
var r = "";
var i = this.t;
var p2 = this.DB - i * this.DB % k2;
if (i-- > 0) {
if (p2 < this.DB && (d2 = this[i] >> p2) > 0) {
m2 = true;
r = int2char(d2);
}
while (i >= 0) {
if (p2 < k2) {
d2 = (this[i] & (1 << p2) - 1) << k2 - p2;
d2 |= this[--i] >> (p2 += this.DB - k2);
} else {
d2 = this[i] >> (p2 -= k2) & km;
if (p2 <= 0) {
p2 += this.DB;
--i;
}
}
if (d2 > 0) {
m2 = true;
}
if (m2) {
r += int2char(d2);
}
}
}
return m2 ? r : "0";
};
BigInteger2.prototype.negate = function() {
var r = nbi();
BigInteger2.ZERO.subTo(this, r);
return r;
};
BigInteger2.prototype.abs = function() {
return this.s < 0 ? this.negate() : this;
};
BigInteger2.prototype.compareTo = function(a) {
var r = this.s - a.s;
if (r != 0) {
return r;
}
var i = this.t;
r = i - a.t;
if (r != 0) {
return this.s < 0 ? -r : r;
}
while (--i >= 0) {
if ((r = this[i] - a[i]) != 0) {
return r;
}
}
return 0;
};
BigInteger2.prototype.bitLength = function() {
if (this.t <= 0) {
return 0;
}
return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ this.s & this.DM);
};
BigInteger2.prototype.mod = function(a) {
var r = nbi();
this.abs().divRemTo(a, null, r);
if (this.s < 0 && r.compareTo(BigInteger2.ZERO) > 0) {
a.subTo(r, r);
}
return r;
};
BigInteger2.prototype.modPowInt = function(e2, m2) {
var z;
if (e2 < 256 || m2.isEven()) {
z = new Classic(m2);
} else {
z = new Montgomery(m2);
}
return this.exp(e2, z);
};
BigInteger2.prototype.clone = function() {
var r = nbi();
this.copyTo(r);
return r;
};
BigInteger2.prototype.intValue = function() {
if (this.s < 0) {
if (this.t == 1) {
return this[0] - this.DV;
} else if (this.t == 0) {
return -1;
}
} else if (this.t == 1) {
return this[0];
} else if (this.t == 0) {
return 0;
}
return (this[1] & (1 << 32 - this.DB) - 1) << this.DB | this[0];
};
BigInteger2.prototype.byteValue = function() {
return this.t == 0 ? this.s : this[0] << 24 >> 24;
};
BigInteger2.prototype.shortValue = function() {
return this.t == 0 ? this.s : this[0] << 16 >> 16;
};
BigInteger2.prototype.signum = function() {
if (this.s < 0) {
return -1;
} else if (this.t <= 0 || this.t == 1 && this[0] <= 0) {
return 0;
} else {
return 1;
}
};
BigInteger2.prototype.toByteArray = function() {
var i = this.t;
var r = [];
r[0] = this.s;
var p2 = this.DB - i * this.DB % 8;
var d2;
var k2 = 0;
if (i-- > 0) {
if (p2 < this.DB && (d2 = this[i] >> p2) != (this.s & this.DM) >> p2) {
r[k2++] = d2 | this.s << this.DB - p2;
}
while (i >= 0) {
if (p2 < 8) {
d2 = (this[i] & (1 << p2) - 1) << 8 - p2;
d2 |= this[--i] >> (p2 += this.DB - 8);
} else {
d2 = this[i] >> (p2 -= 8) & 255;
if (p2 <= 0) {
p2 += this.DB;
--i;
}
}
if ((d2 & 128) != 0) {
d2 |= -256;
}
if (k2 == 0 && (this.s & 128) != (d2 & 128)) {
++k2;
}
if (k2 > 0 || d2 != this.s) {
r[k2++] = d2;
}
}
}
return r;
};
BigInteger2.prototype.equals = function(a) {
return this.compareTo(a) == 0;
};
BigInteger2.prototype.min = function(a) {
return this.compareTo(a) < 0 ? this : a;
};
BigInteger2.prototype.max = function(a) {
return this.compareTo(a) > 0 ? this : a;
};
BigInteger2.prototype.and = function(a) {
var r = nbi();
this.bitwiseTo(a, op_and, r);
return r;
};
BigInteger2.prototype.or = function(a) {
var r = nbi();
this.bitwiseTo(a, op_or, r);
return r;
};
BigInteger2.prototype.xor = function(a) {
var r = nbi();
this.bitwiseTo(a, op_xor, r);
return r;
};
BigInteger2.prototype.andNot = function(a) {
var r = nbi();
this.bitwiseTo(a, op_andnot, r);
return r;
};
BigInteger2.prototype.not = function() {
var r = nbi();
for (var i = 0; i < this.t; ++i) {
r[i] = this.DM & ~this[i];
}
r.t = this.t;
r.s = ~this.s;
return r;
};
BigInteger2.prototype.shiftLeft = function(n2) {
var r = nbi();
if (n2 < 0) {
this.rShiftTo(-n2, r);
} else {
this.lShiftTo(n2, r);
}
return r;
};
BigInteger2.prototype.shiftRight = function(n2) {
var r = nbi();
if (n2 < 0) {
this.lShiftTo(-n2, r);
} else {
this.rShiftTo(n2, r);
}
return r;
};
BigInteger2.prototype.getLowestSetBit = function() {
for (var i = 0; i < this.t; ++i) {
if (this[i] != 0) {
return i * this.DB + lbit(this[i]);
}
}
if (this.s < 0) {
return this.t * this.DB;
}
return -1;
};
BigInteger2.prototype.bitCount = function() {
var r = 0;
var x = this.s & this.DM;
for (var i = 0; i < this.t; ++i) {
r += cbit(this[i] ^ x);
}
return r;
};
BigInteger2.prototype.testBit = function(n2) {
var j = Math.floor(n2 / this.DB);
if (j >= this.t) {
return this.s != 0;
}
return (this[j] & 1 << n2 % this.DB) != 0;
};
BigInteger2.prototype.setBit = function(n2) {
return this.changeBit(n2, op_or);
};
BigInteger2.prototype.clearBit = function(n2) {
return this.changeBit(n2, op_andnot);
};
BigInteger2.prototype.flipBit = function(n2) {
return this.changeBit(n2, op_xor);
};
BigInteger2.prototype.add = function(a) {
var r = nbi();
this.addTo(a, r);
return r;
};
BigInteger2.prototype.subtract = function(a) {
var r = nbi();
this.subTo(a, r);
return r;
};
BigInteger2.prototype.multiply = function(a) {
var r = nbi();
this.multiplyTo(a, r);
return r;
};
BigInteger2.prototype.divide = function(a) {
var r = nbi();
this.divRemTo(a, r, null);
return r;
};
BigInteger2.prototype.remainder = function(a) {
var r = nbi();
this.divRemTo(a, null, r);
return r;
};
BigInteger2.prototype.divideAndRemainder = function(a) {
var q2 = nbi();
var r = nbi();
this.divRemTo(a, q2, r);
return [q2, r];
};
BigInteger2.prototype.modPow = function(e2, m2) {
var i = e2.bitLength();
var k2;
var r = nbv(1);
var z;
if (i <= 0) {
return r;
} else if (i < 18) {
k2 = 1;
} else if (i < 48) {
k2 = 3;
} else if (i < 144) {
k2 = 4;
} else if (i < 768) {
k2 = 5;
} else {
k2 = 6;
}
if (i < 8) {
z = new Classic(m2);
} else if (m2.isEven()) {
z = new Barrett(m2);
} else {
z = new Montgomery(m2);
}
var g2 = [];
var n2 = 3;
var k1 = k2 - 1;
var km = (1 << k2) - 1;
g2[1] = z.convert(this);
if (k2 > 1) {
var g22 = nbi();
z.sqrTo(g2[1], g22);
while (n2 <= km) {
g2[n2] = nbi();
z.mulTo(g22, g2[n2 - 2], g2[n2]);
n2 += 2;
}
}
var j = e2.t - 1;
var w;
var is1 = true;
var r2 = nbi();
var t2;
i = nbits(e2[j]) - 1;
while (j >= 0) {
if (i >= k1) {
w = e2[j] >> i - k1 & km;
} else {
w = (e2[j] & (1 << i + 1) - 1) << k1 - i;
if (j > 0) {
w |= e2[j - 1] >> this.DB + i - k1;
}
}
n2 = k2;
while ((w & 1) == 0) {
w >>= 1;
--n2;
}
if ((i -= n2) < 0) {
i += this.DB;
--j;
}
if (is1) {
g2[w].copyTo(r);
is1 = false;
} else {
while (n2 > 1) {
z.sqrTo(r, r2);
z.sqrTo(r2, r);
n2 -= 2;
}
if (n2 > 0) {
z.sqrTo(r, r2);
} else {
t2 = r;
r = r2;
r2 = t2;
}
z.mulTo(r2, g2[w], r);
}
while (j >= 0 && (e2[j] & 1 << i) == 0) {
z.sqrTo(r, r2);
t2 = r;
r = r2;
r2 = t2;
if (--i < 0) {
i = this.DB - 1;
--j;
}
}
}
return z.revert(r);
};
BigInteger2.prototype.modInverse = function(m2) {
var ac = m2.isEven();
if (this.isEven() && ac || m2.signum() == 0) {
return BigInteger2.ZERO;
}
var u2 = m2.clone();
var v2 = this.clone();
var a = nbv(1);
var b2 = nbv(0);
var c2 = nbv(0);
var d2 = nbv(1);
while (u2.signum() != 0) {
while (u2.isEven()) {
u2.rShiftTo(1, u2);
if (ac) {
if (!a.isEven() || !b2.isEven()) {
a.addTo(this, a);
b2.subTo(m2, b2);
}
a.rShiftTo(1, a);
} else if (!b2.isEven()) {
b2.subTo(m2, b2);
}
b2.rShiftTo(1, b2);
}
while (v2.isEven()) {
v2.rShiftTo(1, v2);
if (ac) {
if (!c2.isEven() || !d2.isEven()) {
c2.addTo(this, c2);
d2.subTo(m2, d2);
}
c2.rShiftTo(1, c2);
} else if (!d2.isEven()) {
d2.subTo(m2, d2);
}
d2.rShiftTo(1, d2);
}
if (u2.compareTo(v2) >= 0) {
u2.subTo(v2, u2);
if (ac) {
a.subTo(c2, a);
}
b2.subTo(d2, b2);
} else {
v2.subTo(u2, v2);
if (ac) {
c2.subTo(a, c2);
}
d2.subTo(b2, d2);
}
}
if (v2.compareTo(BigInteger2.ONE) != 0) {
return BigInteger2.ZERO;
}
if (d2.compareTo(m2) >= 0) {
return d2.subtract(m2);
}
if (d2.signum() < 0) {
d2.addTo(m2, d2);
} else {
return d2;
}
if (d2.signum() < 0) {
return d2.add(m2);
} else {
return d2;
}
};
BigInteger2.prototype.pow = function(e2) {
return this.exp(e2, new NullExp());
};
BigInteger2.prototype.gcd = function(a) {
var x = this.s < 0 ? this.negate() : this.clone();
var y = a.s < 0 ? a.negate() : a.clone();
if (x.compareTo(y) < 0) {
var t2 = x;
x = y;
y = t2;
}
var i = x.getLowestSetBit();
var g2 = y.getLowestSetBit();
if (g2 < 0) {
return x;
}
if (i < g2) {
g2 = i;
}
if (g2 > 0) {
x.rShiftTo(g2, x);
y.rShiftTo(g2, y);
}
while (x.signum() > 0) {
if ((i = x.getLowestSetBit()) > 0) {
x.rShiftTo(i, x);
}
if ((i = y.getLowestSetBit()) > 0) {
y.rShiftTo(i, y);
}
if (x.compareTo(y) >= 0) {
x.subTo(y, x);
x.rShiftTo(1, x);
} else {
y.subTo(x, y);
y.rShiftTo(1, y);
}
}
if (g2 > 0) {
y.lShiftTo(g2, y);
}
return y;
};
BigInteger2.prototype.isProbablePrime = function(t2) {
var i;
var x = this.abs();
if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {
for (i = 0; i < lowprimes.length; ++i) {
if (x[0] == lowprimes[i]) {
return true;
}
}
return false;
}
if (x.isEven()) {
return false;
}
i = 1;
while (i < lowprimes.length) {
var m2 = lowprimes[i];
var j = i + 1;
while (j < lowprimes.length && m2 < lplim) {
m2 *= lowprimes[j++];
}
m2 = x.modInt(m2);
while (i < j) {
if (m2 % lowprimes[i++] == 0) {
return false;
}
}
}
return x.millerRabin(t2);
};
BigInteger2.prototype.copyTo = function(r) {
for (var i = this.t - 1; i >= 0; --i) {
r[i] = this[i];
}
r.t = this.t;
r.s = this.s;
};
BigInteger2.prototype.fromInt = function(x) {
this.t = 1;
this.s = x < 0 ? -1 : 0;
if (x > 0) {
this[0] = x;
} else if (x < -1) {
this[0] = x + this.DV;
} else {
this.t = 0;
}
};
BigInteger2.prototype.fromString = function(s, b2) {
var k2;
if (b2 == 16) {
k2 = 4;
} else if (b2 == 8) {
k2 = 3;
} else if (b2 == 256) {
k2 = 8;
} else if (b2 == 2) {
k2 = 1;
} else if (b2 == 32) {
k2 = 5;
} else if (b2 == 4) {
k2 = 2;
} else {
this.fromRadix(s, b2);
return;
}
this.t = 0;
this.s = 0;
var i = s.length;
var mi = false;
var sh = 0;
while (--i >= 0) {
var x = k2 == 8 ? +s[i] & 255 : intAt(s, i);
if (x < 0) {
if (s.charAt(i) == "-") {
mi = true;
}
continue;
}
mi = false;
if (sh == 0) {
this[this.t++] = x;
} else if (sh + k2 > this.DB) {
this[this.t - 1] |= (x & (1 << this.DB - sh) - 1) << sh;
this[this.t++] = x >> this.DB - sh;
} else {
this[this.t - 1] |= x << sh;
}
sh += k2;
if (sh >= this.DB) {
sh -= this.DB;
}
}
if (k2 == 8 && (+s[0] & 128) != 0) {
this.s = -1;
if (sh > 0) {
this[this.t - 1] |= (1 << this.DB - sh) - 1 << sh;
}
}
this.clamp();
if (mi) {
BigInteger2.ZERO.subTo(this, this);
}
};
BigInteger2.prototype.clamp = function() {
var c2 = this.s & this.DM;
while (this.t > 0 && this[this.t - 1] == c2) {
--this.t;
}
};
BigInteger2.prototype.dlShiftTo = function(n2, r) {
var i;
for (i = this.t - 1; i >= 0; --i) {
r[i + n2] = this[i];
}
for (i = n2 - 1; i >= 0; --i) {
r[i] = 0;
}
r.t = this.t + n2;
r.s = this.s;
};
BigInteger2.prototype.drShiftTo = function(n2, r) {
for (var i = n2; i < this.t; ++i) {
r[i - n2] = this[i];
}
r.t = Math.max(this.t - n2, 0);
r.s = this.s;
};
BigInteger2.prototype.lShiftTo = function(n2, r) {
var bs = n2 % this.DB;
var cbs = this.DB - bs;
var bm = (1 << cbs) - 1;
var ds = Math.floor(n2 / this.DB);
var c2 = this.s << bs & this.DM;
for (var i = this.t - 1; i >= 0; --i) {
r[i + ds + 1] = this[i] >> cbs | c2;
c2 = (this[i] & bm) << bs;
}
for (var i = ds - 1; i >= 0; --i) {
r[i] = 0;
}
r[ds] = c2;
r.t = this.t + ds + 1;
r.s = this.s;
r.clamp();
};
BigInteger2.prototype.rShiftTo = function(n2, r) {
r.s = this.s;
var ds = Math.floor(n2 / this.DB);
if (ds >= this.t) {
r.t = 0;
return;
}
var bs = n2 % this.DB;
var cbs = this.DB - bs;
var bm = (1 << bs) - 1;
r[0] = this[ds] >> bs;
for (var i = ds + 1; i < this.t; ++i) {
r[i - ds - 1] |= (this[i] & bm) << cbs;
r[i - ds] = this[i] >> bs;
}
if (bs > 0) {
r[this.t - ds - 1] |= (this.s & bm) << cbs;
}
r.t = this.t - ds;
r.clamp();
};
BigInteger2.prototype.subTo = function(a, r) {
var i = 0;
var c2 = 0;
var m2 = Math.min(a.t, this.t);
while (i < m2) {
c2 += this[i] - a[i];
r[i++] = c2 & this.DM;
c2 >>= this.DB;
}
if (a.t < this.t) {
c2 -= a.s;
while (i < this.t) {
c2 += this[i];
r[i++] = c2 & this.DM;
c2 >>= this.DB;
}
c2 += this.s;
} else {
c2 += this.s;
while (i < a.t) {
c2 -= a[i];
r[i++] = c2 & this.DM;
c2 >>= this.DB;
}
c2 -= a.s;
}
r.s = c2 < 0 ? -1 : 0;
if (c2 < -1) {
r[i++] = this.DV + c2;
} else if (c2 > 0) {
r[i++] = c2;
}
r.t = i;
r.clamp();
};
BigInteger2.prototype.multiplyTo = function(a, r) {
var x = this.abs();
var y = a.abs();
var i = x.t;
r.t = i + y.t;
while (--i >= 0) {
r[i] = 0;
}
for (i = 0; i < y.t; ++i) {
r[i + x.t] = x.am(0, y[i], r, i, 0, x.t);
}
r.s = 0;
r.clamp();
if (this.s != a.s) {
BigInteger2.ZERO.subTo(r, r);
}
};
BigInteger2.prototype.squareTo = function(r) {
var x = this.abs();
var i = r.t = 2 * x.t;
while (--i >= 0) {
r[i] = 0;
}
for (i = 0; i < x.t - 1; ++i) {
var c2 = x.am(i, x[i], r, 2 * i, 0, 1);
if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c2, x.t - i - 1)) >= x.DV) {
r[i + x.t] -= x.DV;
r[i + x.t + 1] = 1;
}
}
if (r.t > 0) {
r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1);
}
r.s = 0;
r.clamp();
};
BigInteger2.prototype.divRemTo = function(m2, q2, r) {
var pm = m2.abs();
if (pm.t <= 0) {
return;
}
var pt = this.abs();
if (pt.t < pm.t) {
if (q2 != null) {
q2.fromInt(0);
}
if (r != null) {
this.copyTo(r);
}
return;
}
if (r == null) {
r = nbi();
}
var y = nbi();
var ts = this.s;
var ms = m2.s;
var nsh = this.DB - nbits(pm[pm.t - 1]);
if (nsh > 0) {
pm.lShiftTo(nsh, y);
pt.lShiftTo(nsh, r);
} else {
pm.copyTo(y);
pt.copyTo(r);
}
var ys = y.t;
var y0 = y[ys - 1];
if (y0 == 0) {
return;
}
var yt = y0 * (1 << this.F1) + (ys > 1 ? y[ys - 2] >> this.F2 : 0);
var d1 = this.FV / yt;
var d2 = (1 << this.F1) / yt;
var e2 = 1 << this.F2;
var i = r.t;
var j = i - ys;
var t2 = q2 == null ? nbi() : q2;
y.dlShiftTo(j, t2);
if (r.compareTo(t2) >= 0) {
r[r.t++] = 1;
r.subTo(t2, r);
}
BigInteger2.ONE.dlShiftTo(ys, t2);
t2.subTo(y, y);
while (y.t < ys) {
y[y.t++] = 0;
}
while (--j >= 0) {
var qd = r[--i] == y0 ? this.DM : Math.floor(r[i] * d1 + (r[i - 1] + e2) * d2);
if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) {
y.dlShiftTo(j, t2);
r.subTo(t2, r);
while (r[i] < --qd) {
r.subTo(t2, r);
}
}
}
if (q2 != null) {
r.drShiftTo(ys, q2);
if (ts != ms) {
BigInteger2.ZERO.subTo(q2, q2);
}
}
r.t = ys;
r.clamp();
if (nsh > 0) {
r.rShiftTo(nsh, r);
}
if (ts < 0) {
BigInteger2.ZERO.subTo(r, r);
}
};
BigInteger2.prototype.invDigit = function() {
if (this.t < 1) {
return 0;
}
var x = this[0];
if ((x & 1) == 0) {
return 0;
}
var y = x & 3;
y = y * (2 - (x & 15) * y) & 15;
y = y * (2 - (x & 255) * y) & 255;
y = y * (2 - ((x & 65535) * y & 65535)) & 65535;
y = y * (2 - x * y % this.DV) % this.DV;
return y > 0 ? this.DV - y : -y;
};
BigInteger2.prototype.isEven = function() {
return (this.t > 0 ? this[0] & 1 : this.s) == 0;
};
BigInteger2.prototype.exp = function(e2, z) {
if (e2 > 4294967295 || e2 < 1) {
return BigInteger2.ONE;
}
var r = nbi();
var r2 = nbi();
var g2 = z.convert(this);
var i = nbits(e2) - 1;
g2.copyTo(r);
while (--i >= 0) {
z.sqrTo(r, r2);
if ((e2 & 1 << i) > 0) {
z.mulTo(r2, g2, r);
} else {
var t2 = r;
r = r2;
r2 = t2;
}
}
return z.revert(r);
};
BigInteger2.prototype.chunkSize = function(r) {
return Math.floor(Math.LN2 * this.DB / Math.log(r));
};
BigInteger2.prototype.toRadix = function(b2) {
if (b2 == null) {
b2 = 10;
}
if (this.signum() == 0 || b2 < 2 || b2 > 36) {
return "0";
}
var cs = this.chunkSize(b2);
var a = Math.pow(b2, cs);
var d2 = nbv(a);
var y = nbi();
var z = nbi();
var r = "";
this.divRemTo(d2, y, z);
while (y.signum() > 0) {
r = (a + z.intValue()).toString(b2).substr(1) + r;
y.divRemTo(d2, y, z);
}
return z.intValue().toString(b2) + r;
};
BigInteger2.prototype.fromRadix = function(s, b2) {
this.fromInt(0);
if (b2 == null) {
b2 = 10;
}
var cs = this.chunkSize(b2);
var d2 = Math.pow(b2, cs);
var mi = false;
var j = 0;
var w = 0;
for (var i = 0; i < s.length; ++i) {
var x = intAt(s, i);
if (x < 0) {
if (s.charAt(i) == "-" && this.signum() == 0) {
mi = true;
}
continue;
}
w = b2 * w + x;
if (++j >= cs) {
this.dMultiply(d2);
this.dAddOffset(w, 0);
j = 0;
w = 0;
}
}
if (j > 0) {
this.dMultiply(Math.pow(b2, j));
this.dAddOffset(w, 0);
}
if (mi) {
BigInteger2.ZERO.subTo(this, this);
}
};
BigInteger2.prototype.fromNumber = function(a, b2, c2) {
if ("number" == typeof b2) {
if (a < 2) {
this.fromInt(1);
} else {
this.fromNumber(a, c2);
if (!this.testBit(a - 1)) {
this.bitwiseTo(BigInteger2.ONE.shiftLeft(a - 1), op_or, this);
}
if (this.isEven()) {
this.dAddOffset(1, 0);
}
while (!this.isProbablePrime(b2)) {
this.dAddOffset(2, 0);
if (this.bitLength() > a) {
this.subTo(BigInteger2.ONE.shiftLeft(a - 1), this);
}
}
}
} else {
var x = [];
var t2 = a & 7;
x.length = (a >> 3) + 1;
b2.nextBytes(x);
if (t2 > 0) {
x[0] &= (1 << t2) - 1;
} else {
x[0] = 0;
}
this.fromString(x, 256);
}
};
BigInteger2.prototype.bitwiseTo = function(a, op, r) {
var i;
var f2;
var m2 = Math.min(a.t, this.t);
for (i = 0; i < m2; ++i) {
r[i] = op(this[i], a[i]);
}
if (a.t < this.t) {
f2 = a.s & this.DM;
for (i = m2; i < this.t; ++i) {
r[i] = op(this[i], f2);
}
r.t = this.t;
} else {
f2 = this.s & this.DM;
for (i = m2; i < a.t; ++i) {
r[i] = op(f2, a[i]);
}
r.t = a.t;
}
r.s = op(this.s, a.s);
r.clamp();
};
BigInteger2.prototype.changeBit = function(n2, op) {
var r = BigInteger2.ONE.shiftLeft(n2);
this.bitwiseTo(r, op, r);
return r;
};
BigInteger2.prototype.addTo = function(a, r) {
var i = 0;
var c2 = 0;
var m2 = Math.min(a.t, this.t);
while (i < m2) {
c2 += this[i] + a[i];
r[i++] = c2 & this.DM;
c2 >>= this.DB;
}
if (a.t < this.t) {
c2 += a.s;
while (i < this.t) {
c2 += this[i];
r[i++] = c2 & this.DM;
c2 >>= this.DB;
}
c2 += this.s;
} else {
c2 += this.s;
while (i < a.t) {
c2 += a[i];
r[i++] = c2 & this.DM;
c2 >>= this.DB;
}
c2 += a.s;
}
r.s = c2 < 0 ? -1 : 0;
if (c2 > 0) {
r[i++] = c2;
} else if (c2 < -1) {
r[i++] = this.DV + c2;
}
r.t = i;
r.clamp();
};
BigInteger2.prototype.dMultiply = function(n2) {
this[this.t] = this.am(0, n2 - 1, this, 0, 0, this.t);
++this.t;
this.clamp();
};
BigInteger2.prototype.dAddOffset = function(n2, w) {
if (n2 == 0) {
return;
}
while (this.t <= w) {
this[this.t++] = 0;
}
this[w] += n2;
while (this[w] >= this.DV) {
this[w] -= this.DV;
if (++w >= this.t) {
this[this.t++] = 0;
}
++this[w];
}
};
BigInteger2.prototype.multiplyLowerTo = function(a, n2, r) {
var i = Math.min(this.t + a.t, n2);
r.s = 0;
r.t = i;
while (i > 0) {
r[--i] = 0;
}
for (var j = r.t - this.t; i < j; ++i) {
r[i + this.t] = this.am(0, a[i], r, i, 0, this.t);
}
for (var j = Math.min(a.t, n2); i < j; ++i) {
this.am(0, a[i], r, i, 0, n2 - i);
}
r.clamp();
};
BigInteger2.prototype.multiplyUpperTo = function(a, n2, r) {
--n2;
var i = r.t = this.t + a.t - n2;
r.s = 0;
while (--i >= 0) {
r[i] = 0;
}
for (i = Math.max(n2 - this.t, 0); i < a.t; ++i) {
r[this.t + i - n2] = this.am(n2 - i, a[i], r, 0, 0, this.t + i - n2);
}
r.clamp();
r.drShiftTo(1, r);
};
BigInteger2.prototype.modInt = function(n2) {
if (n2 <= 0) {
return 0;
}
var d2 = this.DV % n2;
var r = this.s < 0 ? n2 - 1 : 0;
if (this.t > 0) {
if (d2 == 0) {
r = this[0] % n2;
} else {
for (var i = this.t - 1; i >= 0; --i) {
r = (d2 * r + this[i]) % n2;
}
}
}
return r;
};
BigInteger2.prototype.millerRabin = function(t2) {
var n1 = this.subtract(BigInteger2.ONE);
var k2 = n1.getLowestSetBit();
if (k2 <= 0) {
return false;
}
var r = n1.shiftRight(k2);
t2 = t2 + 1 >> 1;
if (t2 > lowprimes.length) {
t2 = lowprimes.length;
}
var a = nbi();
for (var i = 0; i < t2; ++i) {
a.fromInt(lowprimes[Math.floor(Math.random() * lowprimes.length)]);
var y = a.modPow(r, this);
if (y.compareTo(BigInteger2.ONE) != 0 && y.compareTo(n1) != 0) {
var j = 1;
while (j++ < k2 && y.compareTo(n1) != 0) {
y = y.modPowInt(2, this);
if (y.compareTo(BigInteger2.ONE) == 0) {
return false;
}
}
if (y.compareTo(n1) != 0) {
return false;
}
}
}
return true;
};
BigInteger2.prototype.square = function() {
var r = nbi();
this.squareTo(r);
return r;
};
BigInteger2.prototype.gcda = function(a, callback) {
var x = this.s < 0 ? this.negate() : this.clone();
var y = a.s < 0 ? a.negate() : a.clone();
if (x.compareTo(y) < 0) {
var t2 = x;
x = y;
y = t2;
}
var i = x.getLowestSetBit();
var g2 = y.getLowestSetBit();
if (g2 < 0) {
callback(x);
return;
}
if (i < g2) {
g2 = i;
}
if (g2 > 0) {
x.rShiftTo(g2, x);
y.rShiftTo(g2, y);
}
var gcda1 = function() {
if ((i = x.getLowestSetBit()) > 0) {
x.rShiftTo(i, x);
}
if ((i = y.getLowestSetBit()) > 0) {
y.rShiftTo(i, y);
}
if (x.compareTo(y) >= 0) {
x.subTo(y, x);
x.rShiftTo(1, x);
} else {
y.subTo(x, y);
y.rShiftTo(1, y);
}
if (!(x.signum() > 0)) {
if (g2 > 0) {
y.lShiftTo(g2, y);
}
setTimeout(function() {
callback(y);
}, 0);
} else {
setTimeout(gcda1, 0);
}
};
setTimeout(gcda1, 10);
};
BigInteger2.prototype.fromNumberAsync = function(a, b2, c2, callback) {
if ("number" == typeof b2) {
if (a < 2) {
this.fromInt(1);
} else {
this.fromNumber(a, c2);
if (!this.testBit(a - 1)) {
this.bitwiseTo(BigInteger2.ONE.shiftLeft(a - 1), op_or, this);
}
if (this.isEven()) {
this.dAddOffset(1, 0);
}
var bnp_1 = this;
var bnpfn1_1 = function() {
bnp_1.dAddOffset(2, 0);
if (bnp_1.bitLength() > a) {
bnp_1.subTo(BigInteger2.ONE.shiftLeft(a - 1), bnp_1);
}
if (bnp_1.isProbablePrime(b2)) {
setTimeout(function() {
callback();
}, 0);
} else {
setTimeout(bnpfn1_1, 0);
}
};
setTimeout(bnpfn1_1, 0);
}
} else {
var x = [];
var t2 = a & 7;
x.length = (a >> 3) + 1;
b2.nextBytes(x);
if (t2 > 0) {
x[0] &= (1 << t2) - 1;
} else {
x[0] = 0;
}
this.fromString(x, 256);
}
};
return BigInteger2;
}()
);
var NullExp = (
/** @class */
function() {
function NullExp2() {
}
NullExp2.prototype.convert = function(x) {
return x;
};
NullExp2.prototype.revert = function(x) {
return x;
};
NullExp2.prototype.mulTo = function(x, y, r) {
x.multiplyTo(y, r);
};
NullExp2.prototype.sqrTo = function(x, r) {
x.squareTo(r);
};
return NullExp2;
}()
);
var Classic = (
/** @class */
function() {
function Classic2(m2) {
this.m = m2;
}
Classic2.prototype.convert = function(x) {
if (x.s < 0 || x.compareTo(this.m) >= 0) {
return x.mod(this.m);
} else {
return x;
}
};
Classic2.prototype.revert = function(x) {
return x;
};
Classic2.prototype.reduce = function(x) {
x.divRemTo(this.m, null, x);
};
Classic2.prototype.mulTo = function(x, y, r) {
x.multiplyTo(y, r);
this.reduce(r);
};
Classic2.prototype.sqrTo = function(x, r) {
x.squareTo(r);
this.reduce(r);
};
return Classic2;
}()
);
var Montgomery = (
/** @class */
function() {
function Montgomery2(m2) {
this.m = m2;
this.mp = m2.invDigit();
this.mpl = this.mp & 32767;
this.mph = this.mp >> 15;
this.um = (1 << m2.DB - 15) - 1;
this.mt2 = 2 * m2.t;
}
Montgomery2.prototype.convert = function(x) {
var r = nbi();
x.abs().dlShiftTo(this.m.t, r);
r.divRemTo(this.m, null, r);
if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) {
this.m.subTo(r, r);
}
return r;
};
Montgomery2.prototype.revert = function(x) {
var r = nbi();
x.copyTo(r);
this.reduce(r);
return r;
};
Montgomery2.prototype.reduce = function(x) {
while (x.t <= this.mt2) {
x[x.t++] = 0;
}
for (var i = 0; i < this.m.t; ++i) {
var j = x[i] & 32767;
var u0 = j * this.mpl + ((j * this.mph + (x[i] >> 15) * this.mpl & this.um) << 15) & x.DM;
j = i + this.m.t;
x[j] += this.m.am(0, u0, x, i, 0, this.m.t);
while (x[j] >= x.DV) {
x[j] -= x.DV;
x[++j]++;
}
}
x.clamp();
x.drShiftTo(this.m.t, x);
if (x.compareTo(this.m) >= 0) {
x.subTo(this.m, x);
}
};
Montgomery2.prototype.mulTo = function(x, y, r) {
x.multiplyTo(y, r);
this.reduce(r);
};
Montgomery2.prototype.sqrTo = function(x, r) {
x.squareTo(r);
this.reduce(r);
};
return Montgomery2;
}()
);
var Barrett = (
/** @class */
function() {
function Barrett2(m2) {
this.m = m2;
this.r2 = nbi();
this.q3 = nbi();
BigInteger.ONE.dlShiftTo(2 * m2.t, this.r2);
this.mu = this.r2.divide(m2);
}
Barrett2.prototype.convert = function(x) {
if (x.s < 0 || x.t > 2 * this.m.t) {
return x.mod(this.m);
} else if (x.compareTo(this.m) < 0) {
return x;
} else {
var r = nbi();
x.copyTo(r);
this.reduce(r);
return r;
}
};
Barrett2.prototype.revert = function(x) {
return x;
};
Barrett2.prototype.reduce = function(x) {
x.drShiftTo(this.m.t - 1, this.r2);
if (x.t > this.m.t + 1) {
x.t = this.m.t + 1;
x.clamp();
}
this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3);
this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2);
while (x.compareTo(this.r2) < 0) {
x.dAddOffset(1, this.m.t + 1);
}
x.subTo(this.r2, x);
while (x.compareTo(this.m) >= 0) {
x.subTo(this.m, x);
}
};
Barrett2.prototype.mulTo = function(x, y, r) {
x.multiplyTo(y, r);
this.reduce(r);
};
Barrett2.prototype.sqrTo = function(x, r) {
x.squareTo(r);
this.reduce(r);
};
return Barrett2;
}()
);
function nbi() {
return new BigInteger(null);
}
function parseBigInt(str, r) {
return new BigInteger(str, r);
}
var inBrowser = typeof navigator !== "undefined";
if (inBrowser && j_lm && navigator.appName == "Microsoft Internet Explorer") {
BigInteger.prototype.am = function am2(i, x, w, j, c2, n2) {
var xl = x & 32767;
var xh = x >> 15;
while (--n2 >= 0) {
var l2 = this[i] & 32767;
var h2 = this[i++] >> 15;
var m2 = xh * l2 + h2 * xl;
l2 = xl * l2 + ((m2 & 32767) << 15) + w[j] + (c2 & 1073741823);
c2 = (l2 >>> 30) + (m2 >>> 15) + xh * h2 + (c2 >>> 30);
w[j++] = l2 & 1073741823;
}
return c2;
};
dbits = 30;
} else if (inBrowser && j_lm && navigator.appName != "Netscape") {
BigInteger.prototype.am = function am1(i, x, w, j, c2, n2) {
while (--n2 >= 0) {
var v2 = x * this[i++] + w[j] + c2;
c2 = Math.floor(v2 / 67108864);
w[j++] = v2 & 67108863;
}
return c2;
};
dbits = 26;
} else {
BigInteger.prototype.am = function am3(i, x, w, j, c2, n2) {
var xl = x & 16383;
var xh = x >> 14;
while (--n2 >= 0) {
var l2 = this[i] & 16383;
var h2 = this[i++] >> 14;
var m2 = xh * l2 + h2 * xl;
l2 = xl * l2 + ((m2 & 16383) << 14) + w[j] + c2;
c2 = (l2 >> 28) + (m2 >> 14) + xh * h2;
w[j++] = l2 & 268435455;
}
return c2;
};
dbits = 28;
}
BigInteger.prototype.DB = dbits;
BigInteger.prototype.DM = (1 << dbits) - 1;
BigInteger.prototype.DV = 1 << dbits;
var BI_FP = 52;
BigInteger.prototype.FV = Math.pow(2, BI_FP);
BigInteger.prototype.F1 = BI_FP - dbits;
BigInteger.prototype.F2 = 2 * dbits - BI_FP;
var BI_RC = [];
var rr;
var vv;
rr = "0".charCodeAt(0);
for (vv = 0; vv <= 9; ++vv) {
BI_RC[rr++] = vv;
}
rr = "a".charCodeAt(0);
for (vv = 10; vv < 36; ++vv) {
BI_RC[rr++] = vv;
}
rr = "A".charCodeAt(0);
for (vv = 10; vv < 36; ++vv) {
BI_RC[rr++] = vv;
}
function intAt(s, i) {
var c2 = BI_RC[s.charCodeAt(i)];
return c2 == null ? -1 : c2;
}
function nbv(i) {
var r = nbi();
r.fromInt(i);
return r;
}
function nbits(x) {
var r = 1;
var t2;
if ((t2 = x >>> 16) != 0) {
x = t2;
r += 16;
}
if ((t2 = x >> 8) != 0) {
x = t2;
r += 8;
}
if ((t2 = x >> 4) != 0) {
x = t2;
r += 4;
}
if ((t2 = x >> 2) != 0) {
x = t2;
r += 2;
}
if ((t2 = x >> 1) != 0) {
x = t2;
r += 1;
}
return r;
}
BigInteger.ZERO = nbv(0);
BigInteger.ONE = nbv(1);
var Arcfour = (
/** @class */
function() {
function Arcfour2() {
this.i = 0;
this.j = 0;
this.S = [];
}
Arcfour2.prototype.init = function(key) {
var i;
var j;
var t2;
for (i = 0; i < 256; ++i) {
this.S[i] = i;
}
j = 0;
for (i = 0; i < 256; ++i) {
j = j + this.S[i] + key[i % key.length] & 255;
t2 = this.S[i];
this.S[i] = this.S[j];
this.S[j] = t2;
}
this.i = 0;
this.j = 0;
};
Arcfour2.prototype.next = function() {
var t2;
this.i = this.i + 1 & 255;
this.j = this.j + this.S[this.i] & 255;
t2 = this.S[this.i];
this.S[this.i] = this.S[this.j];
this.S[this.j] = t2;
return this.S[t2 + this.S[this.i] & 255];
};
return Arcfour2;
}()
);
function prng_newstate() {
return new Arcfour();
}
var rng_psize = 256;
var rng_state;
var rng_pool = null;
var rng_pptr;
if (rng_pool == null) {
rng_pool = [];
rng_pptr = 0;
var t$1 = void 0;
if (typeof window !== "undefined" && window.crypto && window.crypto.getRandomValues) {
var z = new Uint32Array(256);
window.crypto.getRandomValues(z);
for (t$1 = 0; t$1 < z.length; ++t$1) {
rng_pool[rng_pptr++] = z[t$1] & 255;
}
}
var count = 0;
var onMouseMoveListener_1 = function(ev) {
count = count || 0;
if (count >= 256 || rng_pptr >= rng_psize) {
if (window.removeEventListener) {
window.removeEventListener("mousemove", onMouseMoveListener_1, false);
} else if (window.detachEvent) {
window.detachEvent("onmousemove", onMouseMoveListener_1);
}
return;
}
try {
var mouseCoordinates = ev.x + ev.y;
rng_pool[rng_pptr++] = mouseCoordinates & 255;
count += 1;
} catch (e2) {
}
};
if (typeof window !== "undefined") {
if (window.addEventListener) {
window.addEventListener("mousemove", onMouseMoveListener_1, false);
} else if (window.attachEvent) {
window.attachEvent("onmousemove", onMouseMoveListener_1);
}
}
}
function rng_get_byte() {
if (rng_state == null) {
rng_state = prng_newstate();
while (rng_pptr < rng_psize) {
var random = Math.floor(65536 * Math.random());
rng_pool[rng_pptr++] = random & 255;
}
rng_state.init(rng_pool);
for (rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr) {
rng_pool[rng_pptr] = 0;
}
rng_pptr = 0;
}
return rng_state.next();
}
var SecureRandom = (
/** @class */
function() {
function SecureRandom2() {
}
SecureRandom2.prototype.nextBytes = function(ba) {
for (var i = 0; i < ba.length; ++i) {
ba[i] = rng_get_byte();
}
};
return SecureRandom2;
}()
);
function pkcs1pad1(s, n2) {
if (n2 < s.length + 22) {
console.error("Message too long for RSA");
return null;
}
var len = n2 - s.length - 6;
var filler = "";
for (var f2 = 0; f2 < len; f2 += 2) {
filler += "ff";
}
var m2 = "0001" + filler + "00" + s;
return parseBigInt(m2, 16);
}
function pkcs1pad2(s, n2) {
if (n2 < s.length + 11) {
console.error("Message too long for RSA");
return null;
}
var ba = [];
var i = s.length - 1;
while (i >= 0 && n2 > 0) {
var c2 = s.charCodeAt(i--);
if (c2 < 128) {
ba[--n2] = c2;
} else if (c2 > 127 && c2 < 2048) {
ba[--n2] = c2 & 63 | 128;
ba[--n2] = c2 >> 6 | 192;
} else {
ba[--n2] = c2 & 63 | 128;
ba[--n2] = c2 >> 6 & 63 | 128;
ba[--n2] = c2 >> 12 | 224;
}
}
ba[--n2] = 0;
var rng = new SecureRandom();
var x = [];
while (n2 > 2) {
x[0] = 0;
while (x[0] == 0) {
rng.nextBytes(x);
}
ba[--n2] = x[0];
}
ba[--n2] = 2;
ba[--n2] = 0;
return new BigInteger(ba);
}
var RSAKey = (
/** @class */
function() {
function RSAKey2() {
this.n = null;
this.e = 0;
this.d = null;
this.p = null;
this.q = null;
this.dmp1 = null;
this.dmq1 = null;
this.coeff = null;
}
RSAKey2.prototype.doPublic = function(x) {
return x.modPowInt(this.e, this.n);
};
RSAKey2.prototype.doPrivate = function(x) {
if (this.p == null || this.q == null) {
return x.modPow(this.d, this.n);
}
var xp = x.mod(this.p).modPow(this.dmp1, this.p);
var xq = x.mod(this.q).modPow(this.dmq1, this.q);
while (xp.compareTo(xq) < 0) {
xp = xp.add(this.p);
}
return xp.subtract(xq).multiply(this.coeff).mod(this.p).multiply(this.q).add(xq);
};
RSAKey2.prototype.setPublic = function(N, E) {
if (N != null && E != null && N.length > 0 && E.length > 0) {
this.n = parseBigInt(N, 16);
this.e = parseInt(E, 16);
} else {
console.error("Invalid RSA public key");
}
};
RSAKey2.prototype.encrypt = function(text) {
var maxLength = this.n.bitLength() + 7 >> 3;
var m2 = pkcs1pad2(text, maxLength);
if (m2 == null) {
return null;
}
var c2 = this.doPublic(m2);
if (c2 == null) {
return null;
}
var h2 = c2.toString(16);
var length2 = h2.length;
for (var i = 0; i < maxLength * 2 - length2; i++) {
h2 = "0" + h2;
}
return h2;
};
RSAKey2.prototype.setPrivate = function(N, E, D) {
if (N != null && E != null && N.length > 0 && E.length > 0) {
this.n = parseBigInt(N, 16);
this.e = parseInt(E, 16);
this.d = parseBigInt(D, 16);
} else {
console.error("Invalid RSA private key");
}
};
RSAKey2.prototype.setPrivateEx = function(N, E, D, P, Q, DP, DQ, C) {
if (N != null && E != null && N.length > 0 && E.length > 0) {
this.n = parseBigInt(N, 16);
this.e = parseInt(E, 16);
this.d = parseBigInt(D, 16);
this.p = parseBigInt(P, 16);
this.q = parseBigInt(Q, 16);
this.dmp1 = parseBigInt(DP, 16);
this.dmq1 = parseBigInt(DQ, 16);
this.coeff = parseBigInt(C, 16);
} else {
console.error("Invalid RSA private key");
}
};
RSAKey2.prototype.generate = function(B, E) {
var rng = new SecureRandom();
var qs = B >> 1;
this.e = parseInt(E, 16);
var ee = new BigInteger(E, 16);
for (; ; ) {
for (; ; ) {
this.p = new BigInteger(B - qs, 1, rng);
if (this.p.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) == 0 && this.p.isProbablePrime(10)) {
break;
}
}
for (; ; ) {
this.q = new BigInteger(qs, 1, rng);
if (this.q.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) == 0 && this.q.isProbablePrime(10)) {
break;
}
}
if (this.p.compareTo(this.q) <= 0) {
var t2 = this.p;
this.p = this.q;
this.q = t2;
}
var p1 = this.p.subtract(BigInteger.ONE);
var q1 = this.q.subtract(BigInteger.ONE);
var phi = p1.multiply(q1);
if (phi.gcd(ee).compareTo(BigInteger.ONE) == 0) {
this.n = this.p.multiply(this.q);
this.d = ee.modInverse(phi);
this.dmp1 = this.d.mod(p1);
this.dmq1 = this.d.mod(q1);
this.coeff = this.q.modInverse(this.p);
break;
}
}
};
RSAKey2.prototype.decrypt = function(ctext) {
var c2 = parseBigInt(ctext, 16);
var m2 = this.doPrivate(c2);
if (m2 == null) {
return null;
}
return pkcs1unpad2(m2, this.n.bitLength() + 7 >> 3);
};
RSAKey2.prototype.generateAsync = function(B, E, callback) {
var rng = new SecureRandom();
var qs = B >> 1;
this.e = parseInt(E, 16);
var ee = new BigInteger(E, 16);
var rsa = this;
var loop1 = function() {
var loop4 = function() {
if (rsa.p.compareTo(rsa.q) <= 0) {
var t2 = rsa.p;
rsa.p = rsa.q;
rsa.q = t2;
}
var p1 = rsa.p.subtract(BigInteger.ONE);
var q1 = rsa.q.subtract(BigInteger.ONE);
var phi = p1.multiply(q1);
if (phi.gcd(ee).compareTo(BigInteger.ONE) == 0) {
rsa.n = rsa.p.multiply(rsa.q);
rsa.d = ee.modInverse(phi);
rsa.dmp1 = rsa.d.mod(p1);
rsa.dmq1 = rsa.d.mod(q1);
rsa.coeff = rsa.q.modInverse(rsa.p);
setTimeout(function() {
callback();
}, 0);
} else {
setTimeout(loop1, 0);
}
};
var loop3 = function() {
rsa.q = nbi();
rsa.q.fromNumberAsync(qs, 1, rng, function() {
rsa.q.subtract(BigInteger.ONE).gcda(ee, function(r) {
if (r.compareTo(BigInteger.ONE) == 0 && rsa.q.isProbablePrime(10)) {
setTimeout(loop4, 0);
} else {
setTimeout(loop3, 0);
}
});
});
};
var loop2 = function() {
rsa.p = nbi();
rsa.p.fromNumberAsync(B - qs, 1, rng, function() {
rsa.p.subtract(BigInteger.ONE).gcda(ee, function(r) {
if (r.compareTo(BigInteger.ONE) == 0 && rsa.p.isProbablePrime(10)) {
setTimeout(loop3, 0);
} else {
setTimeout(loop2, 0);
}
});
});
};
setTimeout(loop2, 0);
};
setTimeout(loop1, 0);
};
RSAKey2.prototype.sign = function(text, digestMethod, digestName) {
var header = getDigestHeader(digestName);
var digest = header + digestMethod(text).toString();
var m2 = pkcs1pad1(digest, this.n.bitLength() / 4);
if (m2 == null) {
return null;
}
var c2 = this.doPrivate(m2);
if (c2 == null) {
return null;
}
var h2 = c2.toString(16);
if ((h2.length & 1) == 0) {
return h2;
} else {
return "0" + h2;
}
};
RSAKey2.prototype.verify = function(text, signature, digestMethod) {
var c2 = parseBigInt(signature, 16);
var m2 = this.doPublic(c2);
if (m2 == null) {
return null;
}
var unpadded = m2.toString(16).replace(/^1f+00/, "");
var digest = removeDigestHeader(unpadded);
return digest == digestMethod(text).toString();
};
return RSAKey2;
}()
);
function pkcs1unpad2(d2, n2) {
var b2 = d2.toByteArray();
var i = 0;
while (i < b2.length && b2[i] == 0) {
++i;
}
if (b2.length - i != n2 - 1 || b2[i] != 2) {
return null;
}
++i;
while (b2[i] != 0) {
if (++i >= b2.length) {
return null;
}
}
var ret = "";
while (++i < b2.length) {
var c2 = b2[i] & 255;
if (c2 < 128) {
ret += String.fromCharCode(c2);
} else if (c2 > 191 && c2 < 224) {
ret += String.fromCharCode((c2 & 31) << 6 | b2[i + 1] & 63);
++i;
} else {
ret += String.fromCharCode((c2 & 15) << 12 | (b2[i + 1] & 63) << 6 | b2[i + 2] & 63);
i += 2;
}
}
return ret;
}
var DIGEST_HEADERS = {
md2: "3020300c06082a864886f70d020205000410",
md5: "3020300c06082a864886f70d020505000410",
sha1: "3021300906052b0e03021a05000414",
sha224: "302d300d06096086480165030402040500041c",
sha256: "3031300d060960864801650304020105000420",
sha384: "3041300d060960864801650304020205000430",
sha512: "3051300d060960864801650304020305000440",
ripemd160: "3021300906052b2403020105000414"
};
function getDigestHeader(name) {
return DIGEST_HEADERS[name] || "";
}
function removeDigestHeader(str) {
for (var name_1 in DIGEST_HEADERS) {
if (DIGEST_HEADERS.hasOwnProperty(name_1)) {
var header = DIGEST_HEADERS[name_1];
var len = header.length;
if (str.substr(0, len) == header) {
return str.substr(len);
}
}
}
return str;
}
/*!
Copyright (c) 2011, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.com/yui/license.html
version: 2.9.0
*/
var YAHOO = {};
YAHOO.lang = {
/**
* Utility to set up the prototype, constructor and superclass properties to
* support an inheritance strategy that can chain constructors and methods.
* Static members will not be inherited.
*
* @method extend
* @static
* @param {Function} subc the object to modify
* @param {Function} superc the object to inherit
* @param {Object} overrides additional properties/methods to add to the
* subclass prototype. These will override the
* matching items obtained from the superclass
* if present.
*/
extend: function(subc, superc, overrides) {
if (!superc || !subc) {
throw new Error("YAHOO.lang.extend failed, please check that all dependencies are included.");
}
var F = function() {
};
F.prototype = superc.prototype;
subc.prototype = new F();
subc.prototype.constructor = subc;
subc.superclass = superc.prototype;
if (superc.prototype.constructor == Object.prototype.constructor) {
superc.prototype.constructor = superc;
}
if (overrides) {
var i;
for (i in overrides) {
subc.prototype[i] = overrides[i];
}
var _IEEnumFix = function() {
}, ADD = ["toString", "valueOf"];
try {
if (/MSIE/.test(navigator.userAgent)) {
_IEEnumFix = function(r, s) {
for (i = 0; i < ADD.length; i = i + 1) {
var fname = ADD[i], f2 = s[fname];
if (typeof f2 === "function" && f2 != Object.prototype[fname]) {
r[fname] = f2;
}
}
};
}
} catch (ex) {
}
_IEEnumFix(subc.prototype, overrides);
}
}
};
/**
* @fileOverview
* @name asn1-1.0.js
* @author Kenji Urushima [email protected]
* @version asn1 1.0.13 (2017-Jun-02)
* @since jsrsasign 2.1
* @license <a href="https://kjur.github.io/jsrsasign/license/">MIT License</a>
*/
var KJUR = {};
if (typeof KJUR.asn1 == "undefined" || !KJUR.asn1)
KJUR.asn1 = {};
KJUR.asn1.ASN1Util = new function() {
this.integerToByteHex = function(i) {
var h2 = i.toString(16);
if (h2.length % 2 == 1)
h2 = "0" + h2;
return h2;
};
this.bigIntToMinTwosComplementsHex = function(bigIntegerValue) {
var h2 = bigIntegerValue.toString(16);
if (h2.substr(0, 1) != "-") {
if (h2.length % 2 == 1) {
h2 = "0" + h2;
} else {
if (!h2.match(/^[0-7]/)) {
h2 = "00" + h2;
}
}
} else {
var hPos = h2.substr(1);
var xorLen = hPos.length;
if (xorLen % 2 == 1) {
xorLen += 1;
} else {
if (!h2.match(/^[0-7]/)) {
xorLen += 2;
}
}
var hMask = "";
for (var i = 0; i < xorLen; i++) {
hMask += "f";
}
var biMask = new BigInteger(hMask, 16);
var biNeg = biMask.xor(bigIntegerValue).add(BigInteger.ONE);
h2 = biNeg.toString(16).replace(/^-/, "");
}
return h2;
};
this.getPEMStringFromHex = function(dataHex, pemHeader) {
return hextopem(dataHex, pemHeader);
};
this.newObject = function(param) {
var _KJUR = KJUR, _KJUR_asn1 = _KJUR.asn1, _DERBoolean = _KJUR_asn1.DERBoolean, _DERInteger = _KJUR_asn1.DERInteger, _DERBitString = _KJUR_asn1.DERBitString, _DEROctetString = _KJUR_asn1.DEROctetString, _DERNull = _KJUR_asn1.DERNull, _DERObjectIdentifier = _KJUR_asn1.DERObjectIdentifier, _DEREnumerated = _KJUR_asn1.DEREnumerated, _DERUTF8String = _KJUR_asn1.DERUTF8String, _DERNumericString = _KJUR_asn1.DERNumericString, _DERPrintableString = _KJUR_asn1.DERPrintableString, _DERTeletexString = _KJUR_asn1.DERTeletexString, _DERIA5String = _KJUR_asn1.DERIA5String, _DERUTCTime = _KJUR_asn1.DERUTCTime, _DERGeneralizedTime = _KJUR_asn1.DERGeneralizedTime, _DERSequence = _KJUR_asn1.DERSequence, _DERSet = _KJUR_asn1.DERSet, _DERTaggedObject = _KJUR_asn1.DERTaggedObject, _newObject = _KJUR_asn1.ASN1Util.newObject;
var keys2 = Object.keys(param);
if (keys2.length != 1)
throw "key of param shall be only one.";
var key = keys2[0];
if (":bool:int:bitstr:octstr:null:oid:enum:utf8str:numstr:prnstr:telstr:ia5str:utctime:gentime:seq:set:tag:".indexOf(":" + key + ":") == -1)
throw "undefined key: " + key;
if (key == "bool")
return new _DERBoolean(param[key]);
if (key == "int")
return new _DERInteger(param[key]);
if (key == "bitstr")
return new _DERBitString(param[key]);
if (key == "octstr")
return new _DEROctetString(param[key]);
if (key == "null")
return new _DERNull(param[key]);
if (key == "oid")
return new _DERObjectIdentifier(param[key]);
if (key == "enum")
return new _DEREnumerated(param[key]);
if (key == "utf8str")
return new _DERUTF8String(param[key]);
if (key == "numstr")
return new _DERNumericString(param[key]);
if (key == "prnstr")
return new _DERPrintableString(param[key]);
if (key == "telstr")
return new _DERTeletexString(param[key]);
if (key == "ia5str")
return new _DERIA5String(param[key]);
if (key == "utctime")
return new _DERUTCTime(param[key]);
if (key == "gentime")
return new _DERGeneralizedTime(param[key]);
if (key == "seq") {
var paramList = param[key];
var a = [];
for (var i = 0; i < paramList.length; i++) {
var asn1Obj = _newObject(paramList[i]);
a.push(asn1Obj);
}
return new _DERSequence({ "array": a });
}
if (key == "set") {
var paramList = param[key];
var a = [];
for (var i = 0; i < paramList.length; i++) {
var asn1Obj = _newObject(paramList[i]);
a.push(asn1Obj);
}
return new _DERSet({ "array": a });
}
if (key == "tag") {
var tagParam = param[key];
if (Object.prototype.toString.call(tagParam) === "[object Array]" && tagParam.length == 3) {
var obj = _newObject(tagParam[2]);
return new _DERTaggedObject({
tag: tagParam[0],
explicit: tagParam[1],
obj
});
} else {
var newParam = {};
if (tagParam.explicit !== void 0)
newParam.explicit = tagParam.explicit;
if (tagParam.tag !== void 0)
newParam.tag = tagParam.tag;
if (tagParam.obj === void 0)
throw "obj shall be specified for 'tag'.";
newParam.obj = _newObject(tagParam.obj);
return new _DERTaggedObject(newParam);
}
}
};
this.jsonToASN1HEX = function(param) {
var asn1Obj = this.newObject(param);
return asn1Obj.getEncodedHex();
};
}();
KJUR.asn1.ASN1Util.oidHexToInt = function(hex2) {
var s = "";
var i01 = parseInt(hex2.substr(0, 2), 16);
var i0 = Math.floor(i01 / 40);
var i1 = i01 % 40;
var s = i0 + "." + i1;
var binbuf = "";
for (var i = 2; i < hex2.length; i += 2) {
var value = parseInt(hex2.substr(i, 2), 16);
var bin = ("00000000" + value.toString(2)).slice(-8);
binbuf = binbuf + bin.substr(1, 7);
if (bin.substr(0, 1) == "0") {
var bi = new BigInteger(binbuf, 2);
s = s + "." + bi.toString(10);
binbuf = "";
}
}
return s;
};
KJUR.asn1.ASN1Util.oidIntToHex = function(oidString) {
var itox = function(i2) {
var h3 = i2.toString(16);
if (h3.length == 1)
h3 = "0" + h3;
return h3;
};
var roidtox = function(roid) {
var h3 = "";
var bi = new BigInteger(roid, 10);
var b2 = bi.toString(2);
var padLen = 7 - b2.length % 7;
if (padLen == 7)
padLen = 0;
var bPad = "";
for (var i2 = 0; i2 < padLen; i2++)
bPad += "0";
b2 = bPad + b2;
for (var i2 = 0; i2 < b2.length - 1; i2 += 7) {
var b8 = b2.substr(i2, 7);
if (i2 != b2.length - 7)
b8 = "1" + b8;
h3 += itox(parseInt(b8, 2));
}
return h3;
};
if (!oidString.match(/^[0-9.]+$/)) {
throw "malformed oid string: " + oidString;
}
var h2 = "";
var a = oidString.split(".");
var i0 = parseInt(a[0]) * 40 + parseInt(a[1]);
h2 += itox(i0);
a.splice(0, 2);
for (var i = 0; i < a.length; i++) {
h2 += roidtox(a[i]);
}
return h2;
};
KJUR.asn1.ASN1Object = function() {
var hV = "";
this.getLengthHexFromValue = function() {
if (typeof this.hV == "undefined" || this.hV == null) {
throw "this.hV is null or undefined.";
}
if (this.hV.length % 2 == 1) {
throw "value hex must be even length: n=" + hV.length + ",v=" + this.hV;
}
var n2 = this.hV.length / 2;
var hN = n2.toString(16);
if (hN.length % 2 == 1) {
hN = "0" + hN;
}
if (n2 < 128) {
return hN;
} else {
var hNlen = hN.length / 2;
if (hNlen > 15) {
throw "ASN.1 length too long to represent by 8x: n = " + n2.toString(16);
}
var head = 128 + hNlen;
return head.toString(16) + hN;
}
};
this.getEncodedHex = function() {
if (this.hTLV == null || this.isModified) {
this.hV = this.getFreshValueHex();
this.hL = this.getLengthHexFromValue();
this.hTLV = this.hT + this.hL + this.hV;
this.isModified = false;
}
return this.hTLV;
};
this.getValueHex = function() {
this.getEncodedHex();
return this.hV;
};
this.getFreshValueHex = function() {
return "";
};
};
KJUR.asn1.DERAbstractString = function(params) {
KJUR.asn1.DERAbstractString.superclass.constructor.call(this);
this.getString = function() {
return this.s;
};
this.setString = function(newS) {
this.hTLV = null;
this.isModified = true;
this.s = newS;
this.hV = stohex(this.s);
};
this.setStringHex = function(newHexString) {
this.hTLV = null;
this.isModified = true;
this.s = null;
this.hV = newHexString;
};
this.getFreshValueHex = function() {
return this.hV;
};
if (typeof params != "undefined") {
if (typeof params == "string") {
this.setString(params);
} else if (typeof params["str"] != "undefined") {
this.setString(params["str"]);
} else if (typeof params["hex"] != "undefined") {
this.setStringHex(params["hex"]);
}
}
};
YAHOO.lang.extend(KJUR.asn1.DERAbstractString, KJUR.asn1.ASN1Object);
KJUR.asn1.DERAbstractTime = function(params) {
KJUR.asn1.DERAbstractTime.superclass.constructor.call(this);
this.localDateToUTC = function(d2) {
utc = d2.getTime() + d2.getTimezoneOffset() * 6e4;
var utcDate = new Date(utc);
return utcDate;
};
this.formatDate = function(dateObject, type4, withMillis) {
var pad = this.zeroPadding;
var d2 = this.localDateToUTC(dateObject);
var year = String(d2.getFullYear());
if (type4 == "utc")
year = year.substr(2, 2);
var month = pad(String(d2.getMonth() + 1), 2);
var day = pad(String(d2.getDate()), 2);
var hour = pad(String(d2.getHours()), 2);
var min = pad(String(d2.getMinutes()), 2);
var sec = pad(String(d2.getSeconds()), 2);
var s = year + month + day + hour + min + sec;
if (withMillis === true) {
var millis = d2.getMilliseconds();
if (millis != 0) {
var sMillis = pad(String(millis), 3);
sMillis = sMillis.replace(/[0]+$/, "");
s = s + "." + sMillis;
}
}
return s + "Z";
};
this.zeroPadding = function(s, len) {
if (s.length >= len)
return s;
return new Array(len - s.length + 1).join("0") + s;
};
this.getString = function() {
return this.s;
};
this.setString = function(newS) {
this.hTLV = null;
this.isModified = true;
this.s = newS;
this.hV = stohex(newS);
};
this.setByDateValue = function(year, month, day, hour, min, sec) {
var dateObject = new Date(Date.UTC(year, month - 1, day, hour, min, sec, 0));
this.setByDate(dateObject);
};
this.getFreshValueHex = function() {
return this.hV;
};
};
YAHOO.lang.extend(KJUR.asn1.DERAbstractTime, KJUR.asn1.ASN1Object);
KJUR.asn1.DERAbstractStructured = function(params) {
KJUR.asn1.DERAbstractString.superclass.constructor.call(this);
this.setByASN1ObjectArray = function(asn1ObjectArray) {
this.hTLV = null;
this.isModified = true;
this.asn1Array = asn1ObjectArray;
};
this.appendASN1Object = function(asn1Object) {
this.hTLV = null;
this.isModified = true;
this.asn1Array.push(asn1Object);
};
this.asn1Array = new Array();
if (typeof params != "undefined") {
if (typeof params["array"] != "undefined") {
this.asn1Array = params["array"];
}
}
};
YAHOO.lang.extend(KJUR.asn1.DERAbstractStructured, KJUR.asn1.ASN1Object);
KJUR.asn1.DERBoolean = function() {
KJUR.asn1.DERBoolean.superclass.constructor.call(this);
this.hT = "01";
this.hTLV = "0101ff";
};
YAHOO.lang.extend(KJUR.asn1.DERBoolean, KJUR.asn1.ASN1Object);
KJUR.asn1.DERInteger = function(params) {
KJUR.asn1.DERInteger.superclass.constructor.call(this);
this.hT = "02";
this.setByBigInteger = function(bigIntegerValue) {
this.hTLV = null;
this.isModified = true;
this.hV = KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(bigIntegerValue);
};
this.setByInteger = function(intValue) {
var bi = new BigInteger(String(intValue), 10);
this.setByBigInteger(bi);
};
this.setValueHex = function(newHexString) {
this.hV = newHexString;
};
this.getFreshValueHex = function() {
return this.hV;
};
if (typeof params != "undefined") {
if (typeof params["bigint"] != "undefined") {
this.setByBigInteger(params["bigint"]);
} else if (typeof params["int"] != "undefined") {
this.setByInteger(params["int"]);
} else if (typeof params == "number") {
this.setByInteger(params);
} else if (typeof params["hex"] != "undefined") {
this.setValueHex(params["hex"]);
}
}
};
YAHOO.lang.extend(KJUR.asn1.DERInteger, KJUR.asn1.ASN1Object);
KJUR.asn1.DERBitString = function(params) {
if (params !== void 0 && typeof params.obj !== "undefined") {
var o = KJUR.asn1.ASN1Util.newObject(params.obj);
params.hex = "00" + o.getEncodedHex();
}
KJUR.asn1.DERBitString.superclass.constructor.call(this);
this.hT = "03";
this.setHexValueIncludingUnusedBits = function(newHexStringIncludingUnusedBits) {
this.hTLV = null;
this.isModified = true;
this.hV = newHexStringIncludingUnusedBits;
};
this.setUnusedBitsAndHexValue = function(unusedBits, hValue) {
if (unusedBits < 0 || 7 < unusedBits) {
throw "unused bits shall be from 0 to 7: u = " + unusedBits;
}
var hUnusedBits = "0" + unusedBits;
this.hTLV = null;
this.isModified = true;
this.hV = hUnusedBits + hValue;
};
this.setByBinaryString = function(binaryString) {
binaryString = binaryString.replace(/0+$/, "");
var unusedBits = 8 - binaryString.length % 8;
if (unusedBits == 8)
unusedBits = 0;
for (var i = 0; i <= unusedBits; i++) {
binaryString += "0";
}
var h2 = "";
for (var i = 0; i < binaryString.length - 1; i += 8) {
var b2 = binaryString.substr(i, 8);
var x = parseInt(b2, 2).toString(16);
if (x.length == 1)
x = "0" + x;
h2 += x;
}
this.hTLV = null;
this.isModified = true;
this.hV = "0" + unusedBits + h2;
};
this.setByBooleanArray = function(booleanArray) {
var s = "";
for (var i = 0; i < booleanArray.length; i++) {
if (booleanArray[i] == true) {
s += "1";
} else {
s += "0";
}
}
this.setByBinaryString(s);
};
this.newFalseArray = function(nLength) {
var a = new Array(nLength);
for (var i = 0; i < nLength; i++) {
a[i] = false;
}
return a;
};
this.getFreshValueHex = function() {
return this.hV;
};
if (typeof params != "undefined") {
if (typeof params == "string" && params.toLowerCase().match(/^[0-9a-f]+$/)) {
this.setHexValueIncludingUnusedBits(params);
} else if (typeof params["hex"] != "undefined") {
this.setHexValueIncludingUnusedBits(params["hex"]);
} else if (typeof params["bin"] != "undefined") {
this.setByBinaryString(params["bin"]);
} else if (typeof params["array"] != "undefined") {
this.setByBooleanArray(params["array"]);
}
}
};
YAHOO.lang.extend(KJUR.asn1.DERBitString, KJUR.asn1.ASN1Object);
KJUR.asn1.DEROctetString = function(params) {
if (params !== void 0 && typeof params.obj !== "undefined") {
var o = KJUR.asn1.ASN1Util.newObject(params.obj);
params.hex = o.getEncodedHex();
}
KJUR.asn1.DEROctetString.superclass.constructor.call(this, params);
this.hT = "04";
};
YAHOO.lang.extend(KJUR.asn1.DEROctetString, KJUR.asn1.DERAbstractString);
KJUR.asn1.DERNull = function() {
KJUR.asn1.DERNull.superclass.constructor.call(this);
this.hT = "05";
this.hTLV = "0500";
};
YAHOO.lang.extend(KJUR.asn1.DERNull, KJUR.asn1.ASN1Object);
KJUR.asn1.DERObjectIdentifier = function(params) {
var itox = function(i) {
var h2 = i.toString(16);
if (h2.length == 1)
h2 = "0" + h2;
return h2;
};
var roidtox = function(roid) {
var h2 = "";
var bi = new BigInteger(roid, 10);
var b2 = bi.toString(2);
var padLen = 7 - b2.length % 7;
if (padLen == 7)
padLen = 0;
var bPad = "";
for (var i = 0; i < padLen; i++)
bPad += "0";
b2 = bPad + b2;
for (var i = 0; i < b2.length - 1; i += 7) {
var b8 = b2.substr(i, 7);
if (i != b2.length - 7)
b8 = "1" + b8;
h2 += itox(parseInt(b8, 2));
}
return h2;
};
KJUR.asn1.DERObjectIdentifier.superclass.constructor.call(this);
this.hT = "06";
this.setValueHex = function(newHexString) {
this.hTLV = null;
this.isModified = true;
this.s = null;
this.hV = newHexString;
};
this.setValueOidString = function(oidString) {
if (!oidString.match(/^[0-9.]+$/)) {
throw "malformed oid string: " + oidString;
}
var h2 = "";
var a = oidString.split(".");
var i0 = parseInt(a[0]) * 40 + parseInt(a[1]);
h2 += itox(i0);
a.splice(0, 2);
for (var i = 0; i < a.length; i++) {
h2 += roidtox(a[i]);
}
this.hTLV = null;
this.isModified = true;
this.s = null;
this.hV = h2;
};
this.setValueName = function(oidName) {
var oid = KJUR.asn1.x509.OID.name2oid(oidName);
if (oid !== "") {
this.setValueOidString(oid);
} else {
throw "DERObjectIdentifier oidName undefined: " + oidName;
}
};
this.getFreshValueHex = function() {
return this.hV;
};
if (params !== void 0) {
if (typeof params === "string") {
if (params.match(/^[0-2].[0-9.]+$/)) {
this.setValueOidString(params);
} else {
this.setValueName(params);
}
} else if (params.oid !== void 0) {
this.setValueOidString(params.oid);
} else if (params.hex !== void 0) {
this.setValueHex(params.hex);
} else if (params.name !== void 0) {
this.setValueName(params.name);
}
}
};
YAHOO.lang.extend(KJUR.asn1.DERObjectIdentifier, KJUR.asn1.ASN1Object);
KJUR.asn1.DEREnumerated = function(params) {
KJUR.asn1.DEREnumerated.superclass.constructor.call(this);
this.hT = "0a";
this.setByBigInteger = function(bigIntegerValue) {
this.hTLV = null;
this.isModified = true;
this.hV = KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(bigIntegerValue);
};
this.setByInteger = function(intValue) {
var bi = new BigInteger(String(intValue), 10);
this.setByBigInteger(bi);
};
this.setValueHex = function(newHexString) {
this.hV = newHexString;
};
this.getFreshValueHex = function() {
return this.hV;
};
if (typeof params != "undefined") {
if (typeof params["int"] != "undefined") {
this.setByInteger(params["int"]);
} else if (typeof params == "number") {
this.setByInteger(params);
} else if (typeof params["hex"] != "undefined") {
this.setValueHex(params["hex"]);
}
}
};
YAHOO.lang.extend(KJUR.asn1.DEREnumerated, KJUR.asn1.ASN1Object);
KJUR.asn1.DERUTF8String = function(params) {
KJUR.asn1.DERUTF8String.superclass.constructor.call(this, params);
this.hT = "0c";
};
YAHOO.lang.extend(KJUR.asn1.DERUTF8String, KJUR.asn1.DERAbstractString);
KJUR.asn1.DERNumericString = function(params) {
KJUR.asn1.DERNumericString.superclass.constructor.call(this, params);
this.hT = "12";
};
YAHOO.lang.extend(KJUR.asn1.DERNumericString, KJUR.asn1.DERAbstractString);
KJUR.asn1.DERPrintableString = function(params) {
KJUR.asn1.DERPrintableString.superclass.constructor.call(this, params);
this.hT = "13";
};
YAHOO.lang.extend(KJUR.asn1.DERPrintableString, KJUR.asn1.DERAbstractString);
KJUR.asn1.DERTeletexString = function(params) {
KJUR.asn1.DERTeletexString.superclass.constructor.call(this, params);
this.hT = "14";
};
YAHOO.lang.extend(KJUR.asn1.DERTeletexString, KJUR.asn1.DERAbstractString);
KJUR.asn1.DERIA5String = function(params) {
KJUR.asn1.DERIA5String.superclass.constructor.call(this, params);
this.hT = "16";
};
YAHOO.lang.extend(KJUR.asn1.DERIA5String, KJUR.asn1.DERAbstractString);
KJUR.asn1.DERUTCTime = function(params) {
KJUR.asn1.DERUTCTime.superclass.constructor.call(this, params);
this.hT = "17";
this.setByDate = function(dateObject) {
this.hTLV = null;
this.isModified = true;
this.date = dateObject;
this.s = this.formatDate(this.date, "utc");
this.hV = stohex(this.s);
};
this.getFreshValueHex = function() {
if (typeof this.date == "undefined" && typeof this.s == "undefined") {
this.date = /* @__PURE__ */ new Date();
this.s = this.formatDate(this.date, "utc");
this.hV = stohex(this.s);
}
return this.hV;
};
if (params !== void 0) {
if (params.str !== void 0) {
this.setString(params.str);
} else if (typeof params == "string" && params.match(/^[0-9]{12}Z$/)) {
this.setString(params);
} else if (params.hex !== void 0) {
this.setStringHex(params.hex);
} else if (params.date !== void 0) {
this.setByDate(params.date);
}
}
};
YAHOO.lang.extend(KJUR.asn1.DERUTCTime, KJUR.asn1.DERAbstractTime);
KJUR.asn1.DERGeneralizedTime = function(params) {
KJUR.asn1.DERGeneralizedTime.superclass.constructor.call(this, params);
this.hT = "18";
this.withMillis = false;
this.setByDate = function(dateObject) {
this.hTLV = null;
this.isModified = true;
this.date = dateObject;
this.s = this.formatDate(this.date, "gen", this.withMillis);
this.hV = stohex(this.s);
};
this.getFreshValueHex = function() {
if (this.date === void 0 && this.s === void 0) {
this.date = /* @__PURE__ */ new Date();
this.s = this.formatDate(this.date, "gen", this.withMillis);
this.hV = stohex(this.s);
}
return this.hV;
};
if (params !== void 0) {
if (params.str !== void 0) {
this.setString(params.str);
} else if (typeof params == "string" && params.match(/^[0-9]{14}Z$/)) {
this.setString(params);
} else if (params.hex !== void 0) {
this.setStringHex(params.hex);
} else if (params.date !== void 0) {
this.setByDate(params.date);
}
if (params.millis === true) {
this.withMillis = true;
}
}
};
YAHOO.lang.extend(KJUR.asn1.DERGeneralizedTime, KJUR.asn1.DERAbstractTime);
KJUR.asn1.DERSequence = function(params) {
KJUR.asn1.DERSequence.superclass.constructor.call(this, params);
this.hT = "30";
this.getFreshValueHex = function() {
var h2 = "";
for (var i = 0; i < this.asn1Array.length; i++) {
var asn1Obj = this.asn1Array[i];
h2 += asn1Obj.getEncodedHex();
}
this.hV = h2;
return this.hV;
};
};
YAHOO.lang.extend(KJUR.asn1.DERSequence, KJUR.asn1.DERAbstractStructured);
KJUR.asn1.DERSet = function(params) {
KJUR.asn1.DERSet.superclass.constructor.call(this, params);
this.hT = "31";
this.sortFlag = true;
this.getFreshValueHex = function() {
var a = new Array();
for (var i = 0; i < this.asn1Array.length; i++) {
var asn1Obj = this.asn1Array[i];
a.push(asn1Obj.getEncodedHex());
}
if (this.sortFlag == true)
a.sort();
this.hV = a.join("");
return this.hV;
};
if (typeof params != "undefined") {
if (typeof params.sortflag != "undefined" && params.sortflag == false)
this.sortFlag = false;
}
};
YAHOO.lang.extend(KJUR.asn1.DERSet, KJUR.asn1.DERAbstractStructured);
KJUR.asn1.DERTaggedObject = function(params) {
KJUR.asn1.DERTaggedObject.superclass.constructor.call(this);
this.hT = "a0";
this.hV = "";
this.isExplicit = true;
this.asn1Object = null;
this.setASN1Object = function(isExplicitFlag, tagNoHex, asn1Object) {
this.hT = tagNoHex;
this.isExplicit = isExplicitFlag;
this.asn1Object = asn1Object;
if (this.isExplicit) {
this.hV = this.asn1Object.getEncodedHex();
this.hTLV = null;
this.isModified = true;
} else {
this.hV = null;
this.hTLV = asn1Object.getEncodedHex();
this.hTLV = this.hTLV.replace(/^../, tagNoHex);
this.isModified = false;
}
};
this.getFreshValueHex = function() {
return this.hV;
};
if (typeof params != "undefined") {
if (typeof params["tag"] != "undefined") {
this.hT = params["tag"];
}
if (typeof params["explicit"] != "undefined") {
this.isExplicit = params["explicit"];
}
if (typeof params["obj"] != "undefined") {
this.asn1Object = params["obj"];
this.setASN1Object(this.isExplicit, this.hT, this.asn1Object);
}
}
};
YAHOO.lang.extend(KJUR.asn1.DERTaggedObject, KJUR.asn1.ASN1Object);
var __extends = globalThis && globalThis.__extends || function() {
var extendStatics = function(d2, b2) {
extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
d3.__proto__ = b3;
} || function(d3, b3) {
for (var p2 in b3)
if (Object.prototype.hasOwnProperty.call(b3, p2))
d3[p2] = b3[p2];
};
return extendStatics(d2, b2);
};
return function(d2, b2) {
if (typeof b2 !== "function" && b2 !== null)
throw new TypeError("Class extends value " + String(b2) + " is not a constructor or null");
extendStatics(d2, b2);
function __() {
this.constructor = d2;
}
d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
};
}();
var JSEncryptRSAKey = (
/** @class */
function(_super) {
__extends(JSEncryptRSAKey2, _super);
function JSEncryptRSAKey2(key) {
var _this = _super.call(this) || this;
if (key) {
if (typeof key === "string") {
_this.parseKey(key);
} else if (JSEncryptRSAKey2.hasPrivateKeyProperty(key) || JSEncryptRSAKey2.hasPublicKeyProperty(key)) {
_this.parsePropertiesFrom(key);
}
}
return _this;
}
JSEncryptRSAKey2.prototype.parseKey = function(pem) {
try {
var modulus = 0;
var public_exponent = 0;
var reHex = /^\s*(?:[0-9A-Fa-f][0-9A-Fa-f]\s*)+$/;
var der = reHex.test(pem) ? Hex.decode(pem) : Base64.unarmor(pem);
var asn1 = ASN1.decode(der);
if (asn1.sub.length === 3) {
asn1 = asn1.sub[2].sub[0];
}
if (asn1.sub.length === 9) {
modulus = asn1.sub[1].getHexStringValue();
this.n = parseBigInt(modulus, 16);
public_exponent = asn1.sub[2].getHexStringValue();
this.e = parseInt(public_exponent, 16);
var private_exponent = asn1.sub[3].getHexStringValue();
this.d = parseBigInt(private_exponent, 16);
var prime1 = asn1.sub[4].getHexStringValue();
this.p = parseBigInt(prime1, 16);
var prime2 = asn1.sub[5].getHexStringValue();
this.q = parseBigInt(prime2, 16);
var exponent1 = asn1.sub[6].getHexStringValue();
this.dmp1 = parseBigInt(exponent1, 16);
var exponent2 = asn1.sub[7].getHexStringValue();
this.dmq1 = parseBigInt(exponent2, 16);
var coefficient = asn1.sub[8].getHexStringValue();
this.coeff = parseBigInt(coefficient, 16);
} else if (asn1.sub.length === 2) {
if (asn1.sub[0].sub) {
var bit_string = asn1.sub[1];
var sequence = bit_string.sub[0];
modulus = sequence.sub[0].getHexStringValue();
this.n = parseBigInt(modulus, 16);
public_exponent = sequence.sub[1].getHexStringValue();
this.e = parseInt(public_exponent, 16);
} else {
modulus = asn1.sub[0].getHexStringValue();
this.n = parseBigInt(modulus, 16);
public_exponent = asn1.sub[1].getHexStringValue();
this.e = parseInt(public_exponent, 16);
}
} else {
return false;
}
return true;
} catch (ex) {
return false;
}
};
JSEncryptRSAKey2.prototype.getPrivateBaseKey = function() {
var options = {
array: [
new KJUR.asn1.DERInteger({ int: 0 }),
new KJUR.asn1.DERInteger({ bigint: this.n }),
new KJUR.asn1.DERInteger({ int: this.e }),
new KJUR.asn1.DERInteger({ bigint: this.d }),
new KJUR.asn1.DERInteger({ bigint: this.p }),
new KJUR.asn1.DERInteger({ bigint: this.q }),
new KJUR.asn1.DERInteger({ bigint: this.dmp1 }),
new KJUR.asn1.DERInteger({ bigint: this.dmq1 }),
new KJUR.asn1.DERInteger({ bigint: this.coeff })
]
};
var seq = new KJUR.asn1.DERSequence(options);
return seq.getEncodedHex();
};
JSEncryptRSAKey2.prototype.getPrivateBaseKeyB64 = function() {
return hex2b64(this.getPrivateBaseKey());
};
JSEncryptRSAKey2.prototype.getPublicBaseKey = function() {
var first_sequence = new KJUR.asn1.DERSequence({
array: [
new KJUR.asn1.DERObjectIdentifier({ oid: "1.2.840.113549.1.1.1" }),
new KJUR.asn1.DERNull()
]
});
var second_sequence = new KJUR.asn1.DERSequence({
array: [
new KJUR.asn1.DERInteger({ bigint: this.n }),
new KJUR.asn1.DERInteger({ int: this.e })
]
});
var bit_string = new KJUR.asn1.DERBitString({
hex: "00" + second_sequence.getEncodedHex()
});
var seq = new KJUR.asn1.DERSequence({
array: [first_sequence, bit_string]
});
return seq.getEncodedHex();
};
JSEncryptRSAKey2.prototype.getPublicBaseKeyB64 = function() {
return hex2b64(this.getPublicBaseKey());
};
JSEncryptRSAKey2.wordwrap = function(str, width) {
width = width || 64;
if (!str) {
return str;
}
var regex = "(.{1," + width + "})( +|$\n?)|(.{1," + width + "})";
return str.match(RegExp(regex, "g")).join("\n");
};
JSEncryptRSAKey2.prototype.getPrivateKey = function() {
var key = "-----BEGIN RSA PRIVATE KEY-----\n";
key += JSEncryptRSAKey2.wordwrap(this.getPrivateBaseKeyB64()) + "\n";
key += "-----END RSA PRIVATE KEY-----";
return key;
};
JSEncryptRSAKey2.prototype.getPublicKey = function() {
var key = "-----BEGIN PUBLIC KEY-----\n";
key += JSEncryptRSAKey2.wordwrap(this.getPublicBaseKeyB64()) + "\n";
key += "-----END PUBLIC KEY-----";
return key;
};
JSEncryptRSAKey2.hasPublicKeyProperty = function(obj) {
obj = obj || {};
return obj.hasOwnProperty("n") && obj.hasOwnProperty("e");
};
JSEncryptRSAKey2.hasPrivateKeyProperty = function(obj) {
obj = obj || {};
return obj.hasOwnProperty("n") && obj.hasOwnProperty("e") && obj.hasOwnProperty("d") && obj.hasOwnProperty("p") && obj.hasOwnProperty("q") && obj.hasOwnProperty("dmp1") && obj.hasOwnProperty("dmq1") && obj.hasOwnProperty("coeff");
};
JSEncryptRSAKey2.prototype.parsePropertiesFrom = function(obj) {
this.n = obj.n;
this.e = obj.e;
if (obj.hasOwnProperty("d")) {
this.d = obj.d;
this.p = obj.p;
this.q = obj.q;
this.dmp1 = obj.dmp1;
this.dmq1 = obj.dmq1;
this.coeff = obj.coeff;
}
};
return JSEncryptRSAKey2;
}(RSAKey)
);
var _a;
var version$2 = typeof process !== "undefined" ? (_a = process.env) === null || _a === void 0 ? void 0 : _a.npm_package_version : void 0;
var JSEncrypt = (
/** @class */
function() {
function JSEncrypt2(options) {
if (options === void 0) {
options = {};
}
options = options || {};
this.default_key_size = options.default_key_size ? parseInt(options.default_key_size, 10) : 1024;
this.default_public_exponent = options.default_public_exponent || "010001";
this.log = options.log || false;
this.key = null;
}
JSEncrypt2.prototype.setKey = function(key) {
if (this.log && this.key) {
console.warn("A key was already set, overriding existing.");
}
this.key = new JSEncryptRSAKey(key);
};
JSEncrypt2.prototype.setPrivateKey = function(privkey) {
this.setKey(privkey);
};
JSEncrypt2.prototype.setPublicKey = function(pubkey) {
this.setKey(pubkey);
};
JSEncrypt2.prototype.decrypt = function(str) {
try {
return this.getKey().decrypt(b64tohex(str));
} catch (ex) {
return false;
}
};
JSEncrypt2.prototype.encrypt = function(str) {
try {
return hex2b64(this.getKey().encrypt(str));
} catch (ex) {
return false;
}
};
JSEncrypt2.prototype.sign = function(str, digestMethod, digestName) {
try {
return hex2b64(this.getKey().sign(str, digestMethod, digestName));
} catch (ex) {
return false;
}
};
JSEncrypt2.prototype.verify = function(str, signature, digestMethod) {
try {
return this.getKey().verify(str, b64tohex(signature), digestMethod);
} catch (ex) {
return false;
}
};
JSEncrypt2.prototype.getKey = function(cb) {
if (!this.key) {
this.key = new JSEncryptRSAKey();
if (cb && {}.toString.call(cb) === "[object Function]") {
this.key.generateAsync(this.default_key_size, this.default_public_exponent, cb);
return;
}
this.key.generate(this.default_key_size, this.default_public_exponent);
}
return this.key;
};
JSEncrypt2.prototype.getPrivateKey = function() {
return this.getKey().getPrivateKey();
};
JSEncrypt2.prototype.getPrivateKeyB64 = function() {
return this.getKey().getPrivateBaseKeyB64();
};
JSEncrypt2.prototype.getPublicKey = function() {
return this.getKey().getPublicKey();
};
JSEncrypt2.prototype.getPublicKeyB64 = function() {
return this.getKey().getPublicBaseKeyB64();
};
JSEncrypt2.version = version$2;
return JSEncrypt2;
}()
);
const generateTimestamp = () => {
return (/* @__PURE__ */ new Date()).getTime().toString().slice(0, 10);
};
function generateRandomString(length2) {
const characters2 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
let result = "";
for (let i = 0; i < length2; i++) {
const randomIndex = Math.floor(Math.random() * characters2.length);
result += characters2[randomIndex];
}
return result;
}
const pKey = `-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAooxomrujIP9vcxxNmS+Q1xxnaoxAfluwFvDR3+G+p84QMsePXDD67cLjJ+7n+79u2xoG7fVvDnzHDW+X5D/0/Dv9ajUaBpFQl3jqKwRiP3Lrx08seYzWIWDGHEjurbZrWGHRJNdoM7tEQPdPZftZC6iOm7kSjDIDiuqaIh9g3hqFSVQ5r15Dvae6qtREo1nDWKsf3tH6nkvVD2pIh3TBJUoGdfbPqnw/tNvzhwOX9tg7NjhZ8Yet1ctVt297G5HCwPSIBjhUKEtLYLk/8scPrzXnQpAU05m5WnHfDhfvvG2xoVXckveNvZhv6lvxTZqRkUBOI1pU16U9Tz4aDpCU7QIDAQAB
-----END PUBLIC KEY-----`;
function encryptByRSA(message, publicKey = pKey) {
var encrypt = new JSEncrypt();
encrypt.setPublicKey(publicKey);
var dd = encrypt.encrypt(message);
return dd;
}
function sleep(time) {
return new Promise(function(resolve) {
setTimeout(resolve, time);
});
}
function postWithSign(url2, param_data) {
const param = {
...param_data,
token: localStorage.getItem("t"),
companyId: localStorage.getItem("companyId") || 0,
from: "WEB",
organizationId: localStorage.getItem("organizationId") || 0,
timestamp: generateTimestamp(),
randomStr: generateRandomString(32)
};
const sorted_keys = Object.keys(param).sort();
const queryStr = sorted_keys.map((key) => key + "=" + param[key]).join("&") + "&";
const md5_data = cryptoJsExports.MD5(queryStr).toString();
const sign = encryptByRSA(md5_data);
param.sign = sign;
return axios$1({
url: url2,
method: "POST",
params: param
});
}
function getMyAreaInfoCourse(page = 1, subjectId = "", status = "1", pageSize = 8) {
const url2 = "https://app.campus.chinaunicom.cn/app/themeColumn/getMyAreaInfoCourse";
const param = {
id: window.location.hash.split("=")[1].split("&")[0],
subjectId,
status,
name: "",
currentPage: page,
pageSize: pageSize.toString(),
total: "0"
};
return postWithSign(url2, param);
}
function getMyAreaInfoResourceLibGroup() {
const url2 = "https://app.campus.chinaunicom.cn/app/themeColumn/getMyAreaInfoResourceLibGroup";
const param = {
parentLibGroupId: 0,
id: window.location.hash.split("=")[1].split("&")[0],
parentLibType: "COURSE"
};
return postWithSign(url2, param);
}
function info(cid = null) {
const url2 = "https://app.campus.chinaunicom.cn/app/course/info";
const param = {
courseId: cid || JSON.parse(localStorage.getItem("playtimeData")).courseId
};
return postWithSign(url2, param);
}
function playtimeV2(k_data) {
const url2 = "https://app.campus.chinaunicom.cn/app/course/playtimeV2";
return postWithSign(url2, k_data);
}
function VideoPanel({ show }) {
const [entityData, setEntityData] = React.useState({
courseNode: [],
kpointList: [],
course: {
id: ""
}
});
React.useEffect(() => {
show && fetchVideoList();
}, [show]);
const fetchVideoList = () => {
return info().then((res) => {
console.log(res.data);
setEntityData(res.data.entity);
});
};
const handleSubmit = async (kpointId, playedTime) => {
console.log(playedTime);
const node2 = entityData.courseNode.filter((i) => i.kpointId == kpointId)[0];
const courseTime = node2.courseSeconds + node2.courseMinutes * 60;
const step = 179;
for (let i = playedTime + step; i <= courseTime + step; i += step) {
const n2 = {
courseId: entityData.course.id,
type: "playback",
kpointId,
studyTime: i,
breakpoint: 1,
accrualType: 0
};
let a = await playtimeV2(n2).then(
(res) => {
return res.data.entity < 100;
},
(error) => {
console.log(error);
return false;
}
);
if (!a) {
break;
}
}
return fetchVideoList();
};
return /* @__PURE__ */ jsxRuntimeExports.jsx(
"div",
{
className: "el-popover cbg_feedbackPoppver",
style: {
width: 400,
maxHeight: 500,
overflow: "auto",
position: "fixed",
bottom: 80,
right: 20,
transformOrigin: "right center",
zIndex: 2016,
display: show ? "" : "none"
},
children: entityData.kpointList.map((item) => {
let kps = [item];
if (item.childKpointList && item.childKpointList.length > 0) {
kps = item.childKpointList;
}
return kps.map((i) => /* @__PURE__ */ jsxRuntimeExports.jsx(VideoItem, { item: i, onSubmit: handleSubmit }, i.id));
})
}
);
}
function VideoItem({ item, onSubmit }) {
const [loading, setLoading] = React.useState(false);
const handleClick = (kid) => {
setLoading(true);
onSubmit(kid, playedTime()).then(
() => {
setLoading(false);
},
(error) => {
alert(error);
setLoading(false);
}
);
};
const playedTime = () => {
if (item.userPlayTime && item.userPlayTime > 0)
return item.userPlayTime;
if (item.userKopintPlayTime && item.userKopintPlayTime > 0)
return item.userKopintPlayTime;
return 0;
};
const buttonRender = (item2) => {
const { progress, id } = item2;
if (progress < 100) {
return /* @__PURE__ */ jsxRuntimeExports.jsx(
"button",
{
className: `el-button el-button--primary el-button--small ${loading ? "is-loading" : ""}`,
onClick: () => handleClick(id),
disabled: loading,
children: loading ? "修改中" : "修改"
}
);
} else {
return /* @__PURE__ */ jsxRuntimeExports.jsx("button", { className: "el-button el-button--success el-button--small is-disabled", children: "已完成" });
}
};
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "el-row", style: { marginBottom: 10 }, children: [
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "el-col-20", children: [
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "el-col-24", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: item.name }) }),
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "el-col-12", children: [
"kpoint:",
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: item.id })
] }),
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "el-col-12", children: [
"进度:",
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { children: [
item.progress,
"%"
] })
] })
] }),
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "el-col-4", children: buttonRender(item) })
] });
}
var classnames = { exports: {} };
/*!
Copyright (c) 2018 Jed Watson.
Licensed under the MIT License (MIT), see
http://jedwatson.github.io/classnames
*/
(function(module) {
(function() {
var hasOwn = {}.hasOwnProperty;
function classNames2() {
var classes = "";
for (var i = 0; i < arguments.length; i++) {
var arg = arguments[i];
if (arg) {
classes = appendClass(classes, parseValue(arg));
}
}
return classes;
}
function parseValue(arg) {
if (typeof arg === "string" || typeof arg === "number") {
return arg;
}
if (typeof arg !== "object") {
return "";
}
if (Array.isArray(arg)) {
return classNames2.apply(null, arg);
}
if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes("[native code]")) {
return arg.toString();
}
var classes = "";
for (var key in arg) {
if (hasOwn.call(arg, key) && arg[key]) {
classes = appendClass(classes, key);
}
}
return classes;
}
function appendClass(value, newClass) {
if (!newClass) {
return value;
}
if (value) {
return value + " " + newClass;
}
return value + newClass;
}
if (module.exports) {
classNames2.default = classNames2;
module.exports = classNames2;
} else {
window.classNames = classNames2;
}
})();
})(classnames);
var classnamesExports = classnames.exports;
const classNames = /* @__PURE__ */ getDefaultExportFromCjs(classnamesExports);
function _extends$1() {
_extends$1 = Object.assign ? Object.assign.bind() : function(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
return _extends$1.apply(this, arguments);
}
var reactIs = { exports: {} };
var reactIs_production_min = {};
/**
* @license React
* react-is.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
var b = Symbol.for("react.element"), c = Symbol.for("react.portal"), d = Symbol.for("react.fragment"), e = Symbol.for("react.strict_mode"), f = Symbol.for("react.profiler"), g = Symbol.for("react.provider"), h = Symbol.for("react.context"), k = Symbol.for("react.server_context"), l = Symbol.for("react.forward_ref"), m = Symbol.for("react.suspense"), n = Symbol.for("react.suspense_list"), p = Symbol.for("react.memo"), q = Symbol.for("react.lazy"), t = Symbol.for("react.offscreen"), u;
u = Symbol.for("react.module.reference");
function v(a) {
if ("object" === typeof a && null !== a) {
var r = a.$$typeof;
switch (r) {
case b:
switch (a = a.type, a) {
case d:
case f:
case e:
case m:
case n:
return a;
default:
switch (a = a && a.$$typeof, a) {
case k:
case h:
case l:
case q:
case p:
case g:
return a;
default:
return r;
}
}
case c:
return r;
}
}
}
reactIs_production_min.ContextConsumer = h;
reactIs_production_min.ContextProvider = g;
reactIs_production_min.Element = b;
reactIs_production_min.ForwardRef = l;
reactIs_production_min.Fragment = d;
reactIs_production_min.Lazy = q;
reactIs_production_min.Memo = p;
reactIs_production_min.Portal = c;
reactIs_production_min.Profiler = f;
reactIs_production_min.StrictMode = e;
reactIs_production_min.Suspense = m;
reactIs_production_min.SuspenseList = n;
reactIs_production_min.isAsyncMode = function() {
return false;
};
reactIs_production_min.isConcurrentMode = function() {
return false;
};
reactIs_production_min.isContextConsumer = function(a) {
return v(a) === h;
};
reactIs_production_min.isContextProvider = function(a) {
return v(a) === g;
};
reactIs_production_min.isElement = function(a) {
return "object" === typeof a && null !== a && a.$$typeof === b;
};
reactIs_production_min.isForwardRef = function(a) {
return v(a) === l;
};
reactIs_production_min.isFragment = function(a) {
return v(a) === d;
};
reactIs_production_min.isLazy = function(a) {
return v(a) === q;
};
reactIs_production_min.isMemo = function(a) {
return v(a) === p;
};
reactIs_production_min.isPortal = function(a) {
return v(a) === c;
};
reactIs_production_min.isProfiler = function(a) {
return v(a) === f;
};
reactIs_production_min.isStrictMode = function(a) {
return v(a) === e;
};
reactIs_production_min.isSuspense = function(a) {
return v(a) === m;
};
reactIs_production_min.isSuspenseList = function(a) {
return v(a) === n;
};
reactIs_production_min.isValidElementType = function(a) {
return "string" === typeof a || "function" === typeof a || a === d || a === f || a === e || a === m || a === n || a === t || "object" === typeof a && null !== a && (a.$$typeof === q || a.$$typeof === p || a.$$typeof === g || a.$$typeof === h || a.$$typeof === l || a.$$typeof === u || void 0 !== a.getModuleId) ? true : false;
};
reactIs_production_min.typeOf = v;
{
reactIs.exports = reactIs_production_min;
}
var reactIsExports = reactIs.exports;
function toArray$3(children) {
var option = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
var ret = [];
React.Children.forEach(children, function(child) {
if ((child === void 0 || child === null) && !option.keepEmpty) {
return;
}
if (Array.isArray(child)) {
ret = ret.concat(toArray$3(child));
} else if (reactIsExports.isFragment(child) && child.props) {
ret = ret.concat(toArray$3(child.props.children, option));
} else {
ret.push(child);
}
});
return ret;
}
var warned = {};
var preMessage = function preMessage2(fn) {
};
function warning$2(valid, message) {
}
function note(valid, message) {
}
function resetWarned() {
warned = {};
}
function call(method4, valid, message) {
if (!valid && !warned[message]) {
method4(false, message);
warned[message] = true;
}
}
function warningOnce(valid, message) {
call(warning$2, valid, message);
}
function noteOnce(valid, message) {
call(note, valid, message);
}
warningOnce.preMessage = preMessage;
warningOnce.resetWarned = resetWarned;
warningOnce.noteOnce = noteOnce;
function _typeof(o) {
"@babel/helpers - typeof";
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) {
return typeof o2;
} : function(o2) {
return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2;
}, _typeof(o);
}
function toPrimitive(t2, r) {
if ("object" != _typeof(t2) || !t2)
return t2;
var e2 = t2[Symbol.toPrimitive];
if (void 0 !== e2) {
var i = e2.call(t2, r || "default");
if ("object" != _typeof(i))
return i;
throw new TypeError("@@toPrimitive must return a primitive value.");
}
return ("string" === r ? String : Number)(t2);
}
function toPropertyKey(t2) {
var i = toPrimitive(t2, "string");
return "symbol" == _typeof(i) ? i : String(i);
}
function _defineProperty(obj, key, value) {
key = toPropertyKey(key);
if (key in obj) {
Object.defineProperty(obj, key, {
value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function ownKeys(e2, r) {
var t2 = Object.keys(e2);
if (Object.getOwnPropertySymbols) {
var o = Object.getOwnPropertySymbols(e2);
r && (o = o.filter(function(r2) {
return Object.getOwnPropertyDescriptor(e2, r2).enumerable;
})), t2.push.apply(t2, o);
}
return t2;
}
function _objectSpread2(e2) {
for (var r = 1; r < arguments.length; r++) {
var t2 = null != arguments[r] ? arguments[r] : {};
r % 2 ? ownKeys(Object(t2), true).forEach(function(r2) {
_defineProperty(e2, r2, t2[r2]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e2, Object.getOwnPropertyDescriptors(t2)) : ownKeys(Object(t2)).forEach(function(r2) {
Object.defineProperty(e2, r2, Object.getOwnPropertyDescriptor(t2, r2));
});
}
return e2;
}
function isDOM(node2) {
return node2 instanceof HTMLElement || node2 instanceof SVGElement;
}
function findDOMNode(node2) {
if (isDOM(node2)) {
return node2;
}
if (node2 instanceof React.Component) {
return ReactDOM__default.findDOMNode(node2);
}
return null;
}
function useMemo(getValue2, condition, shouldUpdate) {
var cacheRef = React__namespace.useRef({});
if (!("value" in cacheRef.current) || shouldUpdate(cacheRef.current.condition, condition)) {
cacheRef.current.value = getValue2();
cacheRef.current.condition = condition;
}
return cacheRef.current.value;
}
function fillRef(ref, node2) {
if (typeof ref === "function") {
ref(node2);
} else if (_typeof(ref) === "object" && ref && "current" in ref) {
ref.current = node2;
}
}
function composeRef() {
for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {
refs[_key] = arguments[_key];
}
var refList = refs.filter(function(ref) {
return ref;
});
if (refList.length <= 1) {
return refList[0];
}
return function(node2) {
refs.forEach(function(ref) {
fillRef(ref, node2);
});
};
}
function useComposeRef() {
for (var _len2 = arguments.length, refs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
refs[_key2] = arguments[_key2];
}
return useMemo(function() {
return composeRef.apply(void 0, refs);
}, refs, function(prev2, next2) {
return prev2.length !== next2.length || prev2.every(function(ref, i) {
return ref !== next2[i];
});
});
}
function supportRef(nodeOrComponent) {
var _type$prototype, _nodeOrComponent$prot;
var type4 = reactIsExports.isMemo(nodeOrComponent) ? nodeOrComponent.type.type : nodeOrComponent.type;
if (typeof type4 === "function" && !((_type$prototype = type4.prototype) !== null && _type$prototype !== void 0 && _type$prototype.render)) {
return false;
}
if (typeof nodeOrComponent === "function" && !((_nodeOrComponent$prot = nodeOrComponent.prototype) !== null && _nodeOrComponent$prot !== void 0 && _nodeOrComponent$prot.render)) {
return false;
}
return true;
}
var CollectionContext = /* @__PURE__ */ React__namespace.createContext(null);
function Collection(_ref) {
var children = _ref.children, onBatchResize = _ref.onBatchResize;
var resizeIdRef = React__namespace.useRef(0);
var resizeInfosRef = React__namespace.useRef([]);
var onCollectionResize = React__namespace.useContext(CollectionContext);
var onResize2 = React__namespace.useCallback(function(size, element, data) {
resizeIdRef.current += 1;
var currentId = resizeIdRef.current;
resizeInfosRef.current.push({
size,
element,
data
});
Promise.resolve().then(function() {
if (currentId === resizeIdRef.current) {
onBatchResize === null || onBatchResize === void 0 || onBatchResize(resizeInfosRef.current);
resizeInfosRef.current = [];
}
});
onCollectionResize === null || onCollectionResize === void 0 || onCollectionResize(size, element, data);
}, [onBatchResize, onCollectionResize]);
return /* @__PURE__ */ React__namespace.createElement(CollectionContext.Provider, {
value: onResize2
}, children);
}
var MapShim = function() {
if (typeof Map !== "undefined") {
return Map;
}
function getIndex(arr, key) {
var result = -1;
arr.some(function(entry, index2) {
if (entry[0] === key) {
result = index2;
return true;
}
return false;
});
return result;
}
return (
/** @class */
function() {
function class_1() {
this.__entries__ = [];
}
Object.defineProperty(class_1.prototype, "size", {
/**
* @returns {boolean}
*/
get: function() {
return this.__entries__.length;
},
enumerable: true,
configurable: true
});
class_1.prototype.get = function(key) {
var index2 = getIndex(this.__entries__, key);
var entry = this.__entries__[index2];
return entry && entry[1];
};
class_1.prototype.set = function(key, value) {
var index2 = getIndex(this.__entries__, key);
if (~index2) {
this.__entries__[index2][1] = value;
} else {
this.__entries__.push([key, value]);
}
};
class_1.prototype.delete = function(key) {
var entries = this.__entries__;
var index2 = getIndex(entries, key);
if (~index2) {
entries.splice(index2, 1);
}
};
class_1.prototype.has = function(key) {
return !!~getIndex(this.__entries__, key);
};
class_1.prototype.clear = function() {
this.__entries__.splice(0);
};
class_1.prototype.forEach = function(callback, ctx) {
if (ctx === void 0) {
ctx = null;
}
for (var _i = 0, _a2 = this.__entries__; _i < _a2.length; _i++) {
var entry = _a2[_i];
callback.call(ctx, entry[1], entry[0]);
}
};
return class_1;
}()
);
}();
var isBrowser = typeof window !== "undefined" && typeof document !== "undefined" && window.document === document;
var global$1 = function() {
if (typeof global !== "undefined" && global.Math === Math) {
return global;
}
if (typeof self !== "undefined" && self.Math === Math) {
return self;
}
if (typeof window !== "undefined" && window.Math === Math) {
return window;
}
return Function("return this")();
}();
var requestAnimationFrame$1 = function() {
if (typeof requestAnimationFrame === "function") {
return requestAnimationFrame.bind(global$1);
}
return function(callback) {
return setTimeout(function() {
return callback(Date.now());
}, 1e3 / 60);
};
}();
var trailingTimeout = 2;
function throttle(callback, delay) {
var leadingCall = false, trailingCall = false, lastCallTime = 0;
function resolvePending() {
if (leadingCall) {
leadingCall = false;
callback();
}
if (trailingCall) {
proxy();
}
}
function timeoutCallback() {
requestAnimationFrame$1(resolvePending);
}
function proxy() {
var timeStamp = Date.now();
if (leadingCall) {
if (timeStamp - lastCallTime < trailingTimeout) {
return;
}
trailingCall = true;
} else {
leadingCall = true;
trailingCall = false;
setTimeout(timeoutCallback, delay);
}
lastCallTime = timeStamp;
}
return proxy;
}
var REFRESH_DELAY = 20;
var transitionKeys = ["top", "right", "bottom", "left", "width", "height", "size", "weight"];
var mutationObserverSupported = typeof MutationObserver !== "undefined";
var ResizeObserverController = (
/** @class */
function() {
function ResizeObserverController2() {
this.connected_ = false;
this.mutationEventsAdded_ = false;
this.mutationsObserver_ = null;
this.observers_ = [];
this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);
this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);
}
ResizeObserverController2.prototype.addObserver = function(observer) {
if (!~this.observers_.indexOf(observer)) {
this.observers_.push(observer);
}
if (!this.connected_) {
this.connect_();
}
};
ResizeObserverController2.prototype.removeObserver = function(observer) {
var observers2 = this.observers_;
var index2 = observers2.indexOf(observer);
if (~index2) {
observers2.splice(index2, 1);
}
if (!observers2.length && this.connected_) {
this.disconnect_();
}
};
ResizeObserverController2.prototype.refresh = function() {
var changesDetected = this.updateObservers_();
if (changesDetected) {
this.refresh();
}
};
ResizeObserverController2.prototype.updateObservers_ = function() {
var activeObservers = this.observers_.filter(function(observer) {
return observer.gatherActive(), observer.hasActive();
});
activeObservers.forEach(function(observer) {
return observer.broadcastActive();
});
return activeObservers.length > 0;
};
ResizeObserverController2.prototype.connect_ = function() {
if (!isBrowser || this.connected_) {
return;
}
document.addEventListener("transitionend", this.onTransitionEnd_);
window.addEventListener("resize", this.refresh);
if (mutationObserverSupported) {
this.mutationsObserver_ = new MutationObserver(this.refresh);
this.mutationsObserver_.observe(document, {
attributes: true,
childList: true,
characterData: true,
subtree: true
});
} else {
document.addEventListener("DOMSubtreeModified", this.refresh);
this.mutationEventsAdded_ = true;
}
this.connected_ = true;
};
ResizeObserverController2.prototype.disconnect_ = function() {
if (!isBrowser || !this.connected_) {
return;
}
document.removeEventListener("transitionend", this.onTransitionEnd_);
window.removeEventListener("resize", this.refresh);
if (this.mutationsObserver_) {
this.mutationsObserver_.disconnect();
}
if (this.mutationEventsAdded_) {
document.removeEventListener("DOMSubtreeModified", this.refresh);
}
this.mutationsObserver_ = null;
this.mutationEventsAdded_ = false;
this.connected_ = false;
};
ResizeObserverController2.prototype.onTransitionEnd_ = function(_a2) {
var _b = _a2.propertyName, propertyName = _b === void 0 ? "" : _b;
var isReflowProperty = transitionKeys.some(function(key) {
return !!~propertyName.indexOf(key);
});
if (isReflowProperty) {
this.refresh();
}
};
ResizeObserverController2.getInstance = function() {
if (!this.instance_) {
this.instance_ = new ResizeObserverController2();
}
return this.instance_;
};
ResizeObserverController2.instance_ = null;
return ResizeObserverController2;
}()
);
var defineConfigurable = function(target, props) {
for (var _i = 0, _a2 = Object.keys(props); _i < _a2.length; _i++) {
var key = _a2[_i];
Object.defineProperty(target, key, {
value: props[key],
enumerable: false,
writable: false,
configurable: true
});
}
return target;
};
var getWindowOf = function(target) {
var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;
return ownerGlobal || global$1;
};
var emptyRect = createRectInit(0, 0, 0, 0);
function toFloat(value) {
return parseFloat(value) || 0;
}
function getBordersSize(styles) {
var positions = [];
for (var _i = 1; _i < arguments.length; _i++) {
positions[_i - 1] = arguments[_i];
}
return positions.reduce(function(size, position2) {
var value = styles["border-" + position2 + "-width"];
return size + toFloat(value);
}, 0);
}
function getPaddings(styles) {
var positions = ["top", "right", "bottom", "left"];
var paddings = {};
for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {
var position2 = positions_1[_i];
var value = styles["padding-" + position2];
paddings[position2] = toFloat(value);
}
return paddings;
}
function getSVGContentRect(target) {
var bbox = target.getBBox();
return createRectInit(0, 0, bbox.width, bbox.height);
}
function getHTMLElementContentRect(target) {
var clientWidth = target.clientWidth, clientHeight = target.clientHeight;
if (!clientWidth && !clientHeight) {
return emptyRect;
}
var styles = getWindowOf(target).getComputedStyle(target);
var paddings = getPaddings(styles);
var horizPad = paddings.left + paddings.right;
var vertPad = paddings.top + paddings.bottom;
var width = toFloat(styles.width), height = toFloat(styles.height);
if (styles.boxSizing === "border-box") {
if (Math.round(width + horizPad) !== clientWidth) {
width -= getBordersSize(styles, "left", "right") + horizPad;
}
if (Math.round(height + vertPad) !== clientHeight) {
height -= getBordersSize(styles, "top", "bottom") + vertPad;
}
}
if (!isDocumentElement(target)) {
var vertScrollbar = Math.round(width + horizPad) - clientWidth;
var horizScrollbar = Math.round(height + vertPad) - clientHeight;
if (Math.abs(vertScrollbar) !== 1) {
width -= vertScrollbar;
}
if (Math.abs(horizScrollbar) !== 1) {
height -= horizScrollbar;
}
}
return createRectInit(paddings.left, paddings.top, width, height);
}
var isSVGGraphicsElement = function() {
if (typeof SVGGraphicsElement !== "undefined") {
return function(target) {
return target instanceof getWindowOf(target).SVGGraphicsElement;
};
}
return function(target) {
return target instanceof getWindowOf(target).SVGElement && typeof target.getBBox === "function";
};
}();
function isDocumentElement(target) {
return target === getWindowOf(target).document.documentElement;
}
function getContentRect(target) {
if (!isBrowser) {
return emptyRect;
}
if (isSVGGraphicsElement(target)) {
return getSVGContentRect(target);
}
return getHTMLElementContentRect(target);
}
function createReadOnlyRect(_a2) {
var x = _a2.x, y = _a2.y, width = _a2.width, height = _a2.height;
var Constr = typeof DOMRectReadOnly !== "undefined" ? DOMRectReadOnly : Object;
var rect = Object.create(Constr.prototype);
defineConfigurable(rect, {
x,
y,
width,
height,
top: y,
right: x + width,
bottom: height + y,
left: x
});
return rect;
}
function createRectInit(x, y, width, height) {
return { x, y, width, height };
}
var ResizeObservation = (
/** @class */
function() {
function ResizeObservation2(target) {
this.broadcastWidth = 0;
this.broadcastHeight = 0;
this.contentRect_ = createRectInit(0, 0, 0, 0);
this.target = target;
}
ResizeObservation2.prototype.isActive = function() {
var rect = getContentRect(this.target);
this.contentRect_ = rect;
return rect.width !== this.broadcastWidth || rect.height !== this.broadcastHeight;
};
ResizeObservation2.prototype.broadcastRect = function() {
var rect = this.contentRect_;
this.broadcastWidth = rect.width;
this.broadcastHeight = rect.height;
return rect;
};
return ResizeObservation2;
}()
);
var ResizeObserverEntry = (
/** @class */
function() {
function ResizeObserverEntry2(target, rectInit) {
var contentRect = createReadOnlyRect(rectInit);
defineConfigurable(this, { target, contentRect });
}
return ResizeObserverEntry2;
}()
);
var ResizeObserverSPI = (
/** @class */
function() {
function ResizeObserverSPI2(callback, controller, callbackCtx) {
this.activeObservations_ = [];
this.observations_ = new MapShim();
if (typeof callback !== "function") {
throw new TypeError("The callback provided as parameter 1 is not a function.");
}
this.callback_ = callback;
this.controller_ = controller;
this.callbackCtx_ = callbackCtx;
}
ResizeObserverSPI2.prototype.observe = function(target) {
if (!arguments.length) {
throw new TypeError("1 argument required, but only 0 present.");
}
if (typeof Element === "undefined" || !(Element instanceof Object)) {
return;
}
if (!(target instanceof getWindowOf(target).Element)) {
throw new TypeError('parameter 1 is not of type "Element".');
}
var observations = this.observations_;
if (observations.has(target)) {
return;
}
observations.set(target, new ResizeObservation(target));
this.controller_.addObserver(this);
this.controller_.refresh();
};
ResizeObserverSPI2.prototype.unobserve = function(target) {
if (!arguments.length) {
throw new TypeError("1 argument required, but only 0 present.");
}
if (typeof Element === "undefined" || !(Element instanceof Object)) {
return;
}
if (!(target instanceof getWindowOf(target).Element)) {
throw new TypeError('parameter 1 is not of type "Element".');
}
var observations = this.observations_;
if (!observations.has(target)) {
return;
}
observations.delete(target);
if (!observations.size) {
this.controller_.removeObserver(this);
}
};
ResizeObserverSPI2.prototype.disconnect = function() {
this.clearActive();
this.observations_.clear();
this.controller_.removeObserver(this);
};
ResizeObserverSPI2.prototype.gatherActive = function() {
var _this = this;
this.clearActive();
this.observations_.forEach(function(observation) {
if (observation.isActive()) {
_this.activeObservations_.push(observation);
}
});
};
ResizeObserverSPI2.prototype.broadcastActive = function() {
if (!this.hasActive()) {
return;
}
var ctx = this.callbackCtx_;
var entries = this.activeObservations_.map(function(observation) {
return new ResizeObserverEntry(observation.target, observation.broadcastRect());
});
this.callback_.call(ctx, entries, ctx);
this.clearActive();
};
ResizeObserverSPI2.prototype.clearActive = function() {
this.activeObservations_.splice(0);
};
ResizeObserverSPI2.prototype.hasActive = function() {
return this.activeObservations_.length > 0;
};
return ResizeObserverSPI2;
}()
);
var observers = typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : new MapShim();
var ResizeObserver$2 = (
/** @class */
function() {
function ResizeObserver2(callback) {
if (!(this instanceof ResizeObserver2)) {
throw new TypeError("Cannot call a class as a function.");
}
if (!arguments.length) {
throw new TypeError("1 argument required, but only 0 present.");
}
var controller = ResizeObserverController.getInstance();
var observer = new ResizeObserverSPI(callback, controller, this);
observers.set(this, observer);
}
return ResizeObserver2;
}()
);
[
"observe",
"unobserve",
"disconnect"
].forEach(function(method4) {
ResizeObserver$2.prototype[method4] = function() {
var _a2;
return (_a2 = observers.get(this))[method4].apply(_a2, arguments);
};
});
var index = function() {
if (typeof global$1.ResizeObserver !== "undefined") {
return global$1.ResizeObserver;
}
return ResizeObserver$2;
}();
var elementListeners = /* @__PURE__ */ new Map();
function onResize(entities) {
entities.forEach(function(entity) {
var _elementListeners$get;
var target = entity.target;
(_elementListeners$get = elementListeners.get(target)) === null || _elementListeners$get === void 0 || _elementListeners$get.forEach(function(listener) {
return listener(target);
});
});
}
var resizeObserver = new index(onResize);
function observe(element, callback) {
if (!elementListeners.has(element)) {
elementListeners.set(element, /* @__PURE__ */ new Set());
resizeObserver.observe(element);
}
elementListeners.get(element).add(callback);
}
function unobserve(element, callback) {
if (elementListeners.has(element)) {
elementListeners.get(element).delete(callback);
if (!elementListeners.get(element).size) {
resizeObserver.unobserve(element);
elementListeners.delete(element);
}
}
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor)
descriptor.writable = true;
Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps)
_defineProperties(Constructor.prototype, protoProps);
if (staticProps)
_defineProperties(Constructor, staticProps);
Object.defineProperty(Constructor, "prototype", {
writable: false
});
return Constructor;
}
function _setPrototypeOf$1(o, p2) {
_setPrototypeOf$1 = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p3) {
o2.__proto__ = p3;
return o2;
};
return _setPrototypeOf$1(o, p2);
}
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
Object.defineProperty(subClass, "prototype", {
writable: false
});
if (superClass)
_setPrototypeOf$1(subClass, superClass);
}
function _getPrototypeOf$1(o) {
_getPrototypeOf$1 = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf2(o2) {
return o2.__proto__ || Object.getPrototypeOf(o2);
};
return _getPrototypeOf$1(o);
}
function _isNativeReflectConstruct$1() {
if (typeof Reflect === "undefined" || !Reflect.construct)
return false;
if (Reflect.construct.sham)
return false;
if (typeof Proxy === "function")
return true;
try {
Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
}));
return true;
} catch (e2) {
return false;
}
}
function _assertThisInitialized(self2) {
if (self2 === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self2;
}
function _possibleConstructorReturn(self2, call2) {
if (call2 && (_typeof(call2) === "object" || typeof call2 === "function")) {
return call2;
} else if (call2 !== void 0) {
throw new TypeError("Derived constructors may only return object or undefined");
}
return _assertThisInitialized(self2);
}
function _createSuper(Derived) {
var hasNativeReflectConstruct = _isNativeReflectConstruct$1();
return function _createSuperInternal() {
var Super = _getPrototypeOf$1(Derived), result;
if (hasNativeReflectConstruct) {
var NewTarget = _getPrototypeOf$1(this).constructor;
result = Reflect.construct(Super, arguments, NewTarget);
} else {
result = Super.apply(this, arguments);
}
return _possibleConstructorReturn(this, result);
};
}
var DomWrapper$1 = /* @__PURE__ */ function(_React$Component) {
_inherits(DomWrapper2, _React$Component);
var _super = _createSuper(DomWrapper2);
function DomWrapper2() {
_classCallCheck(this, DomWrapper2);
return _super.apply(this, arguments);
}
_createClass(DomWrapper2, [{
key: "render",
value: function render2() {
return this.props.children;
}
}]);
return DomWrapper2;
}(React__namespace.Component);
function SingleObserver(props, ref) {
var children = props.children, disabled = props.disabled;
var elementRef = React__namespace.useRef(null);
var wrapperRef = React__namespace.useRef(null);
var onCollectionResize = React__namespace.useContext(CollectionContext);
var isRenderProps = typeof children === "function";
var mergedChildren = isRenderProps ? children(elementRef) : children;
var sizeRef = React__namespace.useRef({
width: -1,
height: -1,
offsetWidth: -1,
offsetHeight: -1
});
var canRef = !isRenderProps && /* @__PURE__ */ React__namespace.isValidElement(mergedChildren) && supportRef(mergedChildren);
var originRef = canRef ? mergedChildren.ref : null;
var mergedRef = useComposeRef(originRef, elementRef);
var getDom = function getDom2() {
var _elementRef$current;
return findDOMNode(elementRef.current) || // Support `nativeElement` format
(elementRef.current && _typeof(elementRef.current) === "object" ? findDOMNode((_elementRef$current = elementRef.current) === null || _elementRef$current === void 0 ? void 0 : _elementRef$current.nativeElement) : null) || findDOMNode(wrapperRef.current);
};
React__namespace.useImperativeHandle(ref, function() {
return getDom();
});
var propsRef = React__namespace.useRef(props);
propsRef.current = props;
var onInternalResize = React__namespace.useCallback(function(target) {
var _propsRef$current = propsRef.current, onResize2 = _propsRef$current.onResize, data = _propsRef$current.data;
var _target$getBoundingCl = target.getBoundingClientRect(), width = _target$getBoundingCl.width, height = _target$getBoundingCl.height;
var offsetWidth = target.offsetWidth, offsetHeight = target.offsetHeight;
var fixedWidth = Math.floor(width);
var fixedHeight = Math.floor(height);
if (sizeRef.current.width !== fixedWidth || sizeRef.current.height !== fixedHeight || sizeRef.current.offsetWidth !== offsetWidth || sizeRef.current.offsetHeight !== offsetHeight) {
var size = {
width: fixedWidth,
height: fixedHeight,
offsetWidth,
offsetHeight
};
sizeRef.current = size;
var mergedOffsetWidth = offsetWidth === Math.round(width) ? width : offsetWidth;
var mergedOffsetHeight = offsetHeight === Math.round(height) ? height : offsetHeight;
var sizeInfo = _objectSpread2(_objectSpread2({}, size), {}, {
offsetWidth: mergedOffsetWidth,
offsetHeight: mergedOffsetHeight
});
onCollectionResize === null || onCollectionResize === void 0 || onCollectionResize(sizeInfo, target, data);
if (onResize2) {
Promise.resolve().then(function() {
onResize2(sizeInfo, target);
});
}
}
}, []);
React__namespace.useEffect(function() {
var currentElement = getDom();
if (currentElement && !disabled) {
observe(currentElement, onInternalResize);
}
return function() {
return unobserve(currentElement, onInternalResize);
};
}, [elementRef.current, disabled]);
return /* @__PURE__ */ React__namespace.createElement(DomWrapper$1, {
ref: wrapperRef
}, canRef ? /* @__PURE__ */ React__namespace.cloneElement(mergedChildren, {
ref: mergedRef
}) : mergedChildren);
}
var RefSingleObserver = /* @__PURE__ */ React__namespace.forwardRef(SingleObserver);
var INTERNAL_PREFIX_KEY = "rc-observer-key";
function ResizeObserver$1(props, ref) {
var children = props.children;
var childNodes = typeof children === "function" ? [children] : toArray$3(children);
return childNodes.map(function(child, index2) {
var key = (child === null || child === void 0 ? void 0 : child.key) || "".concat(INTERNAL_PREFIX_KEY, "-").concat(index2);
return /* @__PURE__ */ React__namespace.createElement(RefSingleObserver, _extends$1({}, props, {
key,
ref: index2 === 0 ? ref : void 0
}), child);
});
}
var RefResizeObserver = /* @__PURE__ */ React__namespace.forwardRef(ResizeObserver$1);
RefResizeObserver.Collection = Collection;
function omit(obj, fields) {
var clone = _objectSpread2({}, obj);
if (Array.isArray(fields)) {
fields.forEach(function(key) {
delete clone[key];
});
}
return clone;
}
function _arrayLikeToArray(arr, len) {
if (len == null || len > arr.length)
len = arr.length;
for (var i = 0, arr2 = new Array(len); i < len; i++)
arr2[i] = arr[i];
return arr2;
}
function _arrayWithoutHoles(arr) {
if (Array.isArray(arr))
return _arrayLikeToArray(arr);
}
function _iterableToArray(iter) {
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null)
return Array.from(iter);
}
function _unsupportedIterableToArray(o, minLen) {
if (!o)
return;
if (typeof o === "string")
return _arrayLikeToArray(o, minLen);
var n2 = Object.prototype.toString.call(o).slice(8, -1);
if (n2 === "Object" && o.constructor)
n2 = o.constructor.name;
if (n2 === "Map" || n2 === "Set")
return Array.from(o);
if (n2 === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n2))
return _arrayLikeToArray(o, minLen);
}
function _nonIterableSpread() {
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _toConsumableArray(arr) {
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
}
var raf = function raf2(callback) {
return +setTimeout(callback, 16);
};
var caf = function caf2(num) {
return clearTimeout(num);
};
if (typeof window !== "undefined" && "requestAnimationFrame" in window) {
raf = function raf3(callback) {
return window.requestAnimationFrame(callback);
};
caf = function caf3(handle) {
return window.cancelAnimationFrame(handle);
};
}
var rafUUID = 0;
var rafIds = /* @__PURE__ */ new Map();
function cleanup(id) {
rafIds.delete(id);
}
var wrapperRaf = function wrapperRaf2(callback) {
var times = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1;
rafUUID += 1;
var id = rafUUID;
function callRef(leftTimes) {
if (leftTimes === 0) {
cleanup(id);
callback();
} else {
var realId = raf(function() {
callRef(leftTimes - 1);
});
rafIds.set(id, realId);
}
}
callRef(times);
return id;
};
wrapperRaf.cancel = function(id) {
var realId = rafIds.get(id);
cleanup(id);
return caf(realId);
};
function _arrayWithHoles(arr) {
if (Array.isArray(arr))
return arr;
}
function _iterableToArrayLimit(r, l2) {
var t2 = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
if (null != t2) {
var e2, n2, i, u2, a = [], f2 = true, o = false;
try {
if (i = (t2 = t2.call(r)).next, 0 === l2) {
if (Object(t2) !== t2)
return;
f2 = false;
} else
for (; !(f2 = (e2 = i.call(t2)).done) && (a.push(e2.value), a.length !== l2); f2 = true)
;
} catch (r2) {
o = true, n2 = r2;
} finally {
try {
if (!f2 && null != t2["return"] && (u2 = t2["return"](), Object(u2) !== u2))
return;
} finally {
if (o)
throw n2;
}
}
return a;
}
}
function _nonIterableRest() {
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _slicedToArray(arr, i) {
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
}
function murmur2(str) {
var h2 = 0;
var k2, i = 0, len = str.length;
for (; len >= 4; ++i, len -= 4) {
k2 = str.charCodeAt(i) & 255 | (str.charCodeAt(++i) & 255) << 8 | (str.charCodeAt(++i) & 255) << 16 | (str.charCodeAt(++i) & 255) << 24;
k2 = /* Math.imul(k, m): */
(k2 & 65535) * 1540483477 + ((k2 >>> 16) * 59797 << 16);
k2 ^= /* k >>> r: */
k2 >>> 24;
h2 = /* Math.imul(k, m): */
(k2 & 65535) * 1540483477 + ((k2 >>> 16) * 59797 << 16) ^ /* Math.imul(h, m): */
(h2 & 65535) * 1540483477 + ((h2 >>> 16) * 59797 << 16);
}
switch (len) {
case 3:
h2 ^= (str.charCodeAt(i + 2) & 255) << 16;
case 2:
h2 ^= (str.charCodeAt(i + 1) & 255) << 8;
case 1:
h2 ^= str.charCodeAt(i) & 255;
h2 = /* Math.imul(h, m): */
(h2 & 65535) * 1540483477 + ((h2 >>> 16) * 59797 << 16);
}
h2 ^= h2 >>> 13;
h2 = /* Math.imul(h, m): */
(h2 & 65535) * 1540483477 + ((h2 >>> 16) * 59797 << 16);
return ((h2 ^ h2 >>> 15) >>> 0).toString(36);
}
function canUseDom() {
return !!(typeof window !== "undefined" && window.document && window.document.createElement);
}
function contains(root, n2) {
if (!root) {
return false;
}
if (root.contains) {
return root.contains(n2);
}
var node2 = n2;
while (node2) {
if (node2 === root) {
return true;
}
node2 = node2.parentNode;
}
return false;
}
var APPEND_ORDER = "data-rc-order";
var APPEND_PRIORITY = "data-rc-priority";
var MARK_KEY = "rc-util-key";
var containerCache = /* @__PURE__ */ new Map();
function getMark() {
var _ref = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, mark = _ref.mark;
if (mark) {
return mark.startsWith("data-") ? mark : "data-".concat(mark);
}
return MARK_KEY;
}
function getContainer(option) {
if (option.attachTo) {
return option.attachTo;
}
var head = document.querySelector("head");
return head || document.body;
}
function getOrder(prepend) {
if (prepend === "queue") {
return "prependQueue";
}
return prepend ? "prepend" : "append";
}
function findStyles(container) {
return Array.from((containerCache.get(container) || container).children).filter(function(node2) {
return node2.tagName === "STYLE";
});
}
function injectCSS(css) {
var option = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
if (!canUseDom()) {
return null;
}
var csp = option.csp, prepend = option.prepend, _option$priority = option.priority, priority = _option$priority === void 0 ? 0 : _option$priority;
var mergedOrder = getOrder(prepend);
var isPrependQueue = mergedOrder === "prependQueue";
var styleNode = document.createElement("style");
styleNode.setAttribute(APPEND_ORDER, mergedOrder);
if (isPrependQueue && priority) {
styleNode.setAttribute(APPEND_PRIORITY, "".concat(priority));
}
if (csp !== null && csp !== void 0 && csp.nonce) {
styleNode.nonce = csp === null || csp === void 0 ? void 0 : csp.nonce;
}
styleNode.innerHTML = css;
var container = getContainer(option);
var firstChild = container.firstChild;
if (prepend) {
if (isPrependQueue) {
var existStyle = findStyles(container).filter(function(node2) {
if (!["prepend", "prependQueue"].includes(node2.getAttribute(APPEND_ORDER))) {
return false;
}
var nodePriority = Number(node2.getAttribute(APPEND_PRIORITY) || 0);
return priority >= nodePriority;
});
if (existStyle.length) {
container.insertBefore(styleNode, existStyle[existStyle.length - 1].nextSibling);
return styleNode;
}
}
container.insertBefore(styleNode, firstChild);
} else {
container.appendChild(styleNode);
}
return styleNode;
}
function findExistNode(key) {
var option = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
var container = getContainer(option);
return findStyles(container).find(function(node2) {
return node2.getAttribute(getMark(option)) === key;
});
}
function removeCSS(key) {
var option = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
var existNode = findExistNode(key, option);
if (existNode) {
var container = getContainer(option);
container.removeChild(existNode);
}
}
function syncRealContainer(container, option) {
var cachedRealContainer = containerCache.get(container);
if (!cachedRealContainer || !contains(document, cachedRealContainer)) {
var placeholderStyle = injectCSS("", option);
var parentNode = placeholderStyle.parentNode;
containerCache.set(container, parentNode);
container.removeChild(placeholderStyle);
}
}
function updateCSS(css, key) {
var option = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
var container = getContainer(option);
syncRealContainer(container, option);
var existNode = findExistNode(key, option);
if (existNode) {
var _option$csp, _option$csp2;
if ((_option$csp = option.csp) !== null && _option$csp !== void 0 && _option$csp.nonce && existNode.nonce !== ((_option$csp2 = option.csp) === null || _option$csp2 === void 0 ? void 0 : _option$csp2.nonce)) {
var _option$csp3;
existNode.nonce = (_option$csp3 = option.csp) === null || _option$csp3 === void 0 ? void 0 : _option$csp3.nonce;
}
if (existNode.innerHTML !== css) {
existNode.innerHTML = css;
}
return existNode;
}
var newNode = injectCSS(css, option);
newNode.setAttribute(getMark(option), key);
return newNode;
}
function _objectWithoutPropertiesLoose(source, excluded) {
if (source == null)
return {};
var target = {};
var sourceKeys = Object.keys(source);
var key, i;
for (i = 0; i < sourceKeys.length; i++) {
key = sourceKeys[i];
if (excluded.indexOf(key) >= 0)
continue;
target[key] = source[key];
}
return target;
}
function _objectWithoutProperties(source, excluded) {
if (source == null)
return {};
var target = _objectWithoutPropertiesLoose(source, excluded);
var key, i;
if (Object.getOwnPropertySymbols) {
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
for (i = 0; i < sourceSymbolKeys.length; i++) {
key = sourceSymbolKeys[i];
if (excluded.indexOf(key) >= 0)
continue;
if (!Object.prototype.propertyIsEnumerable.call(source, key))
continue;
target[key] = source[key];
}
}
return target;
}
function isEqual(obj1, obj2) {
var shallow = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
var refSet = /* @__PURE__ */ new Set();
function deepEqual(a, b2) {
var level = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 1;
var circular = refSet.has(a);
warningOnce(!circular, "Warning: There may be circular references");
if (circular) {
return false;
}
if (a === b2) {
return true;
}
if (shallow && level > 1) {
return false;
}
refSet.add(a);
var newLevel = level + 1;
if (Array.isArray(a)) {
if (!Array.isArray(b2) || a.length !== b2.length) {
return false;
}
for (var i = 0; i < a.length; i++) {
if (!deepEqual(a[i], b2[i], newLevel)) {
return false;
}
}
return true;
}
if (a && b2 && _typeof(a) === "object" && _typeof(b2) === "object") {
var keys2 = Object.keys(a);
if (keys2.length !== Object.keys(b2).length) {
return false;
}
return keys2.every(function(key) {
return deepEqual(a[key], b2[key], newLevel);
});
}
return false;
}
return deepEqual(obj1, obj2);
}
var SPLIT$1 = "%";
var Entity = /* @__PURE__ */ function() {
function Entity2(instanceId) {
_classCallCheck(this, Entity2);
_defineProperty(this, "instanceId", void 0);
_defineProperty(this, "cache", /* @__PURE__ */ new Map());
this.instanceId = instanceId;
}
_createClass(Entity2, [{
key: "get",
value: function get2(keys2) {
return this.cache.get(keys2.join(SPLIT$1)) || null;
}
}, {
key: "update",
value: function update(keys2, valueFn) {
var path = keys2.join(SPLIT$1);
var prevValue = this.cache.get(path);
var nextValue = valueFn(prevValue);
if (nextValue === null) {
this.cache.delete(path);
} else {
this.cache.set(path, nextValue);
}
}
}]);
return Entity2;
}();
var ATTR_TOKEN = "data-token-hash";
var ATTR_MARK = "data-css-hash";
var CSS_IN_JS_INSTANCE = "__cssinjs_instance__";
function createCache() {
var cssinjsInstanceId = Math.random().toString(12).slice(2);
if (typeof document !== "undefined" && document.head && document.body) {
var styles = document.body.querySelectorAll("style[".concat(ATTR_MARK, "]")) || [];
var firstChild = document.head.firstChild;
Array.from(styles).forEach(function(style2) {
style2[CSS_IN_JS_INSTANCE] = style2[CSS_IN_JS_INSTANCE] || cssinjsInstanceId;
if (style2[CSS_IN_JS_INSTANCE] === cssinjsInstanceId) {
document.head.insertBefore(style2, firstChild);
}
});
var styleHash = {};
Array.from(document.querySelectorAll("style[".concat(ATTR_MARK, "]"))).forEach(function(style2) {
var hash = style2.getAttribute(ATTR_MARK);
if (styleHash[hash]) {
if (style2[CSS_IN_JS_INSTANCE] === cssinjsInstanceId) {
var _style$parentNode;
(_style$parentNode = style2.parentNode) === null || _style$parentNode === void 0 || _style$parentNode.removeChild(style2);
}
} else {
styleHash[hash] = true;
}
});
}
return new Entity(cssinjsInstanceId);
}
var StyleContext = /* @__PURE__ */ React__namespace.createContext({
hashPriority: "low",
cache: createCache(),
defaultCache: true
});
const StyleContext$1 = StyleContext;
function sameDerivativeOption(left, right) {
if (left.length !== right.length) {
return false;
}
for (var i = 0; i < left.length; i++) {
if (left[i] !== right[i]) {
return false;
}
}
return true;
}
var ThemeCache = /* @__PURE__ */ function() {
function ThemeCache2() {
_classCallCheck(this, ThemeCache2);
_defineProperty(this, "cache", void 0);
_defineProperty(this, "keys", void 0);
_defineProperty(this, "cacheCallTimes", void 0);
this.cache = /* @__PURE__ */ new Map();
this.keys = [];
this.cacheCallTimes = 0;
}
_createClass(ThemeCache2, [{
key: "size",
value: function size() {
return this.keys.length;
}
}, {
key: "internalGet",
value: function internalGet(derivativeOption) {
var _cache2, _cache3;
var updateCallTimes = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
var cache = {
map: this.cache
};
derivativeOption.forEach(function(derivative2) {
if (!cache) {
cache = void 0;
} else {
var _cache;
cache = (_cache = cache) === null || _cache === void 0 || (_cache = _cache.map) === null || _cache === void 0 ? void 0 : _cache.get(derivative2);
}
});
if ((_cache2 = cache) !== null && _cache2 !== void 0 && _cache2.value && updateCallTimes) {
cache.value[1] = this.cacheCallTimes++;
}
return (_cache3 = cache) === null || _cache3 === void 0 ? void 0 : _cache3.value;
}
}, {
key: "get",
value: function get2(derivativeOption) {
var _this$internalGet;
return (_this$internalGet = this.internalGet(derivativeOption, true)) === null || _this$internalGet === void 0 ? void 0 : _this$internalGet[0];
}
}, {
key: "has",
value: function has(derivativeOption) {
return !!this.internalGet(derivativeOption);
}
}, {
key: "set",
value: function set2(derivativeOption, value) {
var _this = this;
if (!this.has(derivativeOption)) {
if (this.size() + 1 > ThemeCache2.MAX_CACHE_SIZE + ThemeCache2.MAX_CACHE_OFFSET) {
var _this$keys$reduce = this.keys.reduce(function(result, key) {
var _result = _slicedToArray(result, 2), callTimes = _result[1];
if (_this.internalGet(key)[1] < callTimes) {
return [key, _this.internalGet(key)[1]];
}
return result;
}, [this.keys[0], this.cacheCallTimes]), _this$keys$reduce2 = _slicedToArray(_this$keys$reduce, 1), targetKey = _this$keys$reduce2[0];
this.delete(targetKey);
}
this.keys.push(derivativeOption);
}
var cache = this.cache;
derivativeOption.forEach(function(derivative2, index2) {
if (index2 === derivativeOption.length - 1) {
cache.set(derivative2, {
value: [value, _this.cacheCallTimes++]
});
} else {
var cacheValue = cache.get(derivative2);
if (!cacheValue) {
cache.set(derivative2, {
map: /* @__PURE__ */ new Map()
});
} else if (!cacheValue.map) {
cacheValue.map = /* @__PURE__ */ new Map();
}
cache = cache.get(derivative2).map;
}
});
}
}, {
key: "deleteByPath",
value: function deleteByPath(currentCache, derivatives) {
var cache = currentCache.get(derivatives[0]);
if (derivatives.length === 1) {
var _cache$value;
if (!cache.map) {
currentCache.delete(derivatives[0]);
} else {
currentCache.set(derivatives[0], {
map: cache.map
});
}
return (_cache$value = cache.value) === null || _cache$value === void 0 ? void 0 : _cache$value[0];
}
var result = this.deleteByPath(cache.map, derivatives.slice(1));
if ((!cache.map || cache.map.size === 0) && !cache.value) {
currentCache.delete(derivatives[0]);
}
return result;
}
}, {
key: "delete",
value: function _delete(derivativeOption) {
if (this.has(derivativeOption)) {
this.keys = this.keys.filter(function(item) {
return !sameDerivativeOption(item, derivativeOption);
});
return this.deleteByPath(this.cache, derivativeOption);
}
return void 0;
}
}]);
return ThemeCache2;
}();
_defineProperty(ThemeCache, "MAX_CACHE_SIZE", 20);
_defineProperty(ThemeCache, "MAX_CACHE_OFFSET", 5);
var uuid$3 = 0;
var Theme = /* @__PURE__ */ function() {
function Theme2(derivatives) {
_classCallCheck(this, Theme2);
_defineProperty(this, "derivatives", void 0);
_defineProperty(this, "id", void 0);
this.derivatives = Array.isArray(derivatives) ? derivatives : [derivatives];
this.id = uuid$3;
if (derivatives.length === 0) {
warning$2(derivatives.length > 0);
}
uuid$3 += 1;
}
_createClass(Theme2, [{
key: "getDerivativeToken",
value: function getDerivativeToken(token2) {
return this.derivatives.reduce(function(result, derivative2) {
return derivative2(token2, result);
}, void 0);
}
}]);
return Theme2;
}();
var cacheThemes = new ThemeCache();
function createTheme(derivatives) {
var derivativeArr = Array.isArray(derivatives) ? derivatives : [derivatives];
if (!cacheThemes.has(derivativeArr)) {
cacheThemes.set(derivativeArr, new Theme(derivativeArr));
}
return cacheThemes.get(derivativeArr);
}
var resultCache = /* @__PURE__ */ new WeakMap();
var RESULT_VALUE = {};
function memoResult(callback, deps) {
var current = resultCache;
for (var i = 0; i < deps.length; i += 1) {
var dep = deps[i];
if (!current.has(dep)) {
current.set(dep, /* @__PURE__ */ new WeakMap());
}
current = current.get(dep);
}
if (!current.has(RESULT_VALUE)) {
current.set(RESULT_VALUE, callback());
}
return current.get(RESULT_VALUE);
}
var flattenTokenCache = /* @__PURE__ */ new WeakMap();
function flattenToken(token2) {
var str = flattenTokenCache.get(token2) || "";
if (!str) {
Object.keys(token2).forEach(function(key) {
var value = token2[key];
str += key;
if (value instanceof Theme) {
str += value.id;
} else if (value && _typeof(value) === "object") {
str += flattenToken(value);
} else {
str += value;
}
});
flattenTokenCache.set(token2, str);
}
return str;
}
function token2key(token2, salt) {
return murmur2("".concat(salt, "_").concat(flattenToken(token2)));
}
var randomSelectorKey = "random-".concat(Date.now(), "-").concat(Math.random()).replace(/\./g, "");
var checkContent = "_bAmBoO_";
function supportSelector(styleStr, handleElement, supportCheck) {
if (canUseDom()) {
var _getComputedStyle$con, _ele$parentNode;
updateCSS(styleStr, randomSelectorKey);
var _ele = document.createElement("div");
_ele.style.position = "fixed";
_ele.style.left = "0";
_ele.style.top = "0";
handleElement === null || handleElement === void 0 || handleElement(_ele);
document.body.appendChild(_ele);
var support = supportCheck ? supportCheck(_ele) : (_getComputedStyle$con = getComputedStyle(_ele).content) === null || _getComputedStyle$con === void 0 ? void 0 : _getComputedStyle$con.includes(checkContent);
(_ele$parentNode = _ele.parentNode) === null || _ele$parentNode === void 0 || _ele$parentNode.removeChild(_ele);
removeCSS(randomSelectorKey);
return support;
}
return false;
}
var canLayer = void 0;
function supportLayer() {
if (canLayer === void 0) {
canLayer = supportSelector("@layer ".concat(randomSelectorKey, " { .").concat(randomSelectorKey, ' { content: "').concat(checkContent, '"!important; } }'), function(ele) {
ele.className = randomSelectorKey;
});
}
return canLayer;
}
var isClientSide = canUseDom();
function unit$1(num) {
if (typeof num === "number") {
return "".concat(num, "px");
}
return num;
}
function toStyleStr(style2, tokenKey, styleId) {
var _objectSpread2$1;
var customizeAttrs = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};
var plain = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : false;
if (plain) {
return style2;
}
var attrs = _objectSpread2(_objectSpread2({}, customizeAttrs), {}, (_objectSpread2$1 = {}, _defineProperty(_objectSpread2$1, ATTR_TOKEN, tokenKey), _defineProperty(_objectSpread2$1, ATTR_MARK, styleId), _objectSpread2$1));
var attrStr = Object.keys(attrs).map(function(attr) {
var val = attrs[attr];
return val ? "".concat(attr, '="').concat(val, '"') : null;
}).filter(function(v2) {
return v2;
}).join(" ");
return "<style ".concat(attrStr, ">").concat(style2, "</style>");
}
var token2CSSVar = function token2CSSVar2(token2) {
var prefix = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "";
return "--".concat(prefix ? "".concat(prefix, "-") : "").concat(token2).replace(/([a-z0-9])([A-Z])/g, "$1-$2").replace(/([A-Z]+)([A-Z][a-z0-9]+)/g, "$1-$2").replace(/([a-z])([A-Z0-9])/g, "$1-$2").toLowerCase();
};
var serializeCSSVar = function serializeCSSVar2(cssVars, hashId, options) {
if (!Object.keys(cssVars).length) {
return "";
}
return ".".concat(hashId).concat(options !== null && options !== void 0 && options.scope ? ".".concat(options.scope) : "", "{").concat(Object.entries(cssVars).map(function(_ref) {
var _ref2 = _slicedToArray(_ref, 2), key = _ref2[0], value = _ref2[1];
return "".concat(key, ":").concat(value, ";");
}).join(""), "}");
};
var transformToken = function transformToken2(token2, themeKey, config) {
var cssVars = {};
var result = {};
Object.entries(token2).forEach(function(_ref3) {
var _config$preserve, _config$ignore;
var _ref4 = _slicedToArray(_ref3, 2), key = _ref4[0], value = _ref4[1];
if (config !== null && config !== void 0 && (_config$preserve = config.preserve) !== null && _config$preserve !== void 0 && _config$preserve[key]) {
result[key] = value;
} else if ((typeof value === "string" || typeof value === "number") && !(config !== null && config !== void 0 && (_config$ignore = config.ignore) !== null && _config$ignore !== void 0 && _config$ignore[key])) {
var _config$unitless;
var cssVar = token2CSSVar(key, config === null || config === void 0 ? void 0 : config.prefix);
cssVars[cssVar] = typeof value === "number" && !(config !== null && config !== void 0 && (_config$unitless = config.unitless) !== null && _config$unitless !== void 0 && _config$unitless[key]) ? "".concat(value, "px") : String(value);
result[key] = "var(".concat(cssVar, ")");
}
});
return [result, serializeCSSVar(cssVars, themeKey, {
scope: config === null || config === void 0 ? void 0 : config.scope
})];
};
var useInternalLayoutEffect = canUseDom() ? React__namespace.useLayoutEffect : React__namespace.useEffect;
var useLayoutEffect$1 = function useLayoutEffect(callback, deps) {
var firstMountRef = React__namespace.useRef(true);
useInternalLayoutEffect(function() {
return callback(firstMountRef.current);
}, deps);
useInternalLayoutEffect(function() {
firstMountRef.current = false;
return function() {
firstMountRef.current = true;
};
}, []);
};
var useLayoutUpdateEffect = function useLayoutUpdateEffect2(callback, deps) {
useLayoutEffect$1(function(firstMount) {
if (!firstMount) {
return callback();
}
}, deps);
};
var fullClone$3 = _objectSpread2({}, React__namespace);
var useInsertionEffect$1 = fullClone$3.useInsertionEffect;
var useInsertionEffectPolyfill = function useInsertionEffectPolyfill2(renderEffect, effect, deps) {
React__namespace.useMemo(renderEffect, deps);
useLayoutEffect$1(function() {
return effect(true);
}, deps);
};
var useCompatibleInsertionEffect = useInsertionEffect$1 ? function(renderEffect, effect, deps) {
return useInsertionEffect$1(function() {
renderEffect();
return effect();
}, deps);
} : useInsertionEffectPolyfill;
const useCompatibleInsertionEffect$1 = useCompatibleInsertionEffect;
var fullClone$2 = _objectSpread2({}, React__namespace);
var useInsertionEffect = fullClone$2.useInsertionEffect;
var useCleanupRegister = function useCleanupRegister2(deps) {
var effectCleanups = [];
var cleanupFlag = false;
function register2(fn) {
if (cleanupFlag) {
return;
}
effectCleanups.push(fn);
}
React__namespace.useEffect(function() {
cleanupFlag = false;
return function() {
cleanupFlag = true;
if (effectCleanups.length) {
effectCleanups.forEach(function(fn) {
return fn();
});
}
};
}, deps);
return register2;
};
var useRun = function useRun2() {
return function(fn) {
fn();
};
};
var useEffectCleanupRegister = typeof useInsertionEffect !== "undefined" ? useCleanupRegister : useRun;
const useEffectCleanupRegister$1 = useEffectCleanupRegister;
function useGlobalCache(prefix, keyPath, cacheFn, onCacheRemove, onCacheEffect) {
var _React$useContext = React__namespace.useContext(StyleContext$1), globalCache = _React$useContext.cache;
var fullPath = [prefix].concat(_toConsumableArray(keyPath));
var deps = fullPath.join("_");
var register2 = useEffectCleanupRegister$1([deps]);
var buildCache = function buildCache2(updater) {
globalCache.update(fullPath, function(prevCache) {
var _ref = prevCache || [void 0, void 0], _ref2 = _slicedToArray(_ref, 2), _ref2$ = _ref2[0], times = _ref2$ === void 0 ? 0 : _ref2$, cache = _ref2[1];
var tmpCache = cache;
var mergedCache = tmpCache || cacheFn();
var data = [times, mergedCache];
return updater ? updater(data) : data;
});
};
React__namespace.useMemo(
function() {
buildCache();
},
/* eslint-disable react-hooks/exhaustive-deps */
[deps]
/* eslint-enable */
);
var cacheEntity = globalCache.get(fullPath);
var cacheContent = cacheEntity[1];
useCompatibleInsertionEffect$1(function() {
onCacheEffect === null || onCacheEffect === void 0 || onCacheEffect(cacheContent);
}, function(polyfill) {
buildCache(function(_ref3) {
var _ref4 = _slicedToArray(_ref3, 2), times = _ref4[0], cache = _ref4[1];
if (polyfill && times === 0) {
onCacheEffect === null || onCacheEffect === void 0 || onCacheEffect(cacheContent);
}
return [times + 1, cache];
});
return function() {
globalCache.update(fullPath, function(prevCache) {
var _ref5 = prevCache || [], _ref6 = _slicedToArray(_ref5, 2), _ref6$ = _ref6[0], times = _ref6$ === void 0 ? 0 : _ref6$, cache = _ref6[1];
var nextCount = times - 1;
if (nextCount === 0) {
register2(function() {
if (polyfill || !globalCache.get(fullPath)) {
onCacheRemove === null || onCacheRemove === void 0 || onCacheRemove(cache, false);
}
});
return null;
}
return [times - 1, cache];
});
};
}, [deps]);
return cacheContent;
}
var EMPTY_OVERRIDE = {};
var hashPrefix = "css";
var tokenKeys = /* @__PURE__ */ new Map();
function recordCleanToken(tokenKey) {
tokenKeys.set(tokenKey, (tokenKeys.get(tokenKey) || 0) + 1);
}
function removeStyleTags(key, instanceId) {
if (typeof document !== "undefined") {
var styles = document.querySelectorAll("style[".concat(ATTR_TOKEN, '="').concat(key, '"]'));
styles.forEach(function(style2) {
if (style2[CSS_IN_JS_INSTANCE] === instanceId) {
var _style$parentNode;
(_style$parentNode = style2.parentNode) === null || _style$parentNode === void 0 || _style$parentNode.removeChild(style2);
}
});
}
}
var TOKEN_THRESHOLD = 0;
function cleanTokenStyle(tokenKey, instanceId) {
tokenKeys.set(tokenKey, (tokenKeys.get(tokenKey) || 0) - 1);
var tokenKeyList = Array.from(tokenKeys.keys());
var cleanableKeyList = tokenKeyList.filter(function(key) {
var count = tokenKeys.get(key) || 0;
return count <= 0;
});
if (tokenKeyList.length - cleanableKeyList.length > TOKEN_THRESHOLD) {
cleanableKeyList.forEach(function(key) {
removeStyleTags(key, instanceId);
tokenKeys.delete(key);
});
}
}
var getComputedToken$1 = function getComputedToken(originToken, overrideToken, theme, format2) {
var derivativeToken = theme.getDerivativeToken(originToken);
var mergedDerivativeToken = _objectSpread2(_objectSpread2({}, derivativeToken), overrideToken);
if (format2) {
mergedDerivativeToken = format2(mergedDerivativeToken);
}
return mergedDerivativeToken;
};
var TOKEN_PREFIX = "token";
function useCacheToken(theme, tokens) {
var option = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
var _useContext = React.useContext(StyleContext$1), instanceId = _useContext.cache.instanceId, container = _useContext.container;
var _option$salt = option.salt, salt = _option$salt === void 0 ? "" : _option$salt, _option$override = option.override, override = _option$override === void 0 ? EMPTY_OVERRIDE : _option$override, formatToken2 = option.formatToken, compute = option.getComputedToken, cssVar = option.cssVar;
var mergedToken = memoResult(function() {
return Object.assign.apply(Object, [{}].concat(_toConsumableArray(tokens)));
}, tokens);
var tokenStr = flattenToken(mergedToken);
var overrideTokenStr = flattenToken(override);
var cssVarStr = cssVar ? flattenToken(cssVar) : "";
var cachedToken = useGlobalCache(TOKEN_PREFIX, [salt, theme.id, tokenStr, overrideTokenStr, cssVarStr], function() {
var _cssVar$key;
var mergedDerivativeToken = compute ? compute(mergedToken, override, theme) : getComputedToken$1(mergedToken, override, theme, formatToken2);
var actualToken = _objectSpread2({}, mergedDerivativeToken);
var cssVarsStr = "";
if (!!cssVar) {
var _transformToken = transformToken(mergedDerivativeToken, cssVar.key, {
prefix: cssVar.prefix,
ignore: cssVar.ignore,
unitless: cssVar.unitless,
preserve: cssVar.preserve
});
var _transformToken2 = _slicedToArray(_transformToken, 2);
mergedDerivativeToken = _transformToken2[0];
cssVarsStr = _transformToken2[1];
}
var tokenKey = token2key(mergedDerivativeToken, salt);
mergedDerivativeToken._tokenKey = tokenKey;
actualToken._tokenKey = token2key(actualToken, salt);
var themeKey = (_cssVar$key = cssVar === null || cssVar === void 0 ? void 0 : cssVar.key) !== null && _cssVar$key !== void 0 ? _cssVar$key : tokenKey;
mergedDerivativeToken._themeKey = themeKey;
recordCleanToken(themeKey);
var hashId = "".concat(hashPrefix, "-").concat(murmur2(tokenKey));
mergedDerivativeToken._hashId = hashId;
return [mergedDerivativeToken, hashId, actualToken, cssVarsStr, (cssVar === null || cssVar === void 0 ? void 0 : cssVar.key) || ""];
}, function(cache) {
cleanTokenStyle(cache[0]._themeKey, instanceId);
}, function(_ref) {
var _ref2 = _slicedToArray(_ref, 4), token2 = _ref2[0], cssVarsStr = _ref2[3];
if (cssVar && cssVarsStr) {
var style2 = updateCSS(cssVarsStr, murmur2("css-variables-".concat(token2._themeKey)), {
mark: ATTR_MARK,
prepend: "queue",
attachTo: container,
priority: -999
});
style2[CSS_IN_JS_INSTANCE] = instanceId;
style2.setAttribute(ATTR_TOKEN, token2._themeKey);
}
});
return cachedToken;
}
var extract$2 = function extract(cache, effectStyles, options) {
var _cache = _slicedToArray(cache, 5), realToken = _cache[2], styleStr = _cache[3], cssVarKey = _cache[4];
var _ref3 = options || {}, plain = _ref3.plain;
if (!styleStr) {
return null;
}
var styleId = realToken._tokenKey;
var order = -999;
var sharedAttrs = {
"data-rc-order": "prependQueue",
"data-rc-priority": "".concat(order)
};
var styleText = toStyleStr(styleStr, cssVarKey, styleId, sharedAttrs, plain);
return [order, styleId, styleText];
};
var unitlessKeys = {
animationIterationCount: 1,
borderImageOutset: 1,
borderImageSlice: 1,
borderImageWidth: 1,
boxFlex: 1,
boxFlexGroup: 1,
boxOrdinalGroup: 1,
columnCount: 1,
columns: 1,
flex: 1,
flexGrow: 1,
flexPositive: 1,
flexShrink: 1,
flexNegative: 1,
flexOrder: 1,
gridRow: 1,
gridRowEnd: 1,
gridRowSpan: 1,
gridRowStart: 1,
gridColumn: 1,
gridColumnEnd: 1,
gridColumnSpan: 1,
gridColumnStart: 1,
msGridRow: 1,
msGridRowSpan: 1,
msGridColumn: 1,
msGridColumnSpan: 1,
fontWeight: 1,
lineHeight: 1,
opacity: 1,
order: 1,
orphans: 1,
tabSize: 1,
widows: 1,
zIndex: 1,
zoom: 1,
WebkitLineClamp: 1,
// SVG-related properties
fillOpacity: 1,
floodOpacity: 1,
stopOpacity: 1,
strokeDasharray: 1,
strokeDashoffset: 1,
strokeMiterlimit: 1,
strokeOpacity: 1,
strokeWidth: 1
};
var COMMENT = "comm";
var RULESET = "rule";
var DECLARATION = "decl";
var IMPORT = "@import";
var KEYFRAMES = "@keyframes";
var LAYER = "@layer";
var abs = Math.abs;
var from = String.fromCharCode;
function trim(value) {
return value.trim();
}
function replace(value, pattern4, replacement) {
return value.replace(pattern4, replacement);
}
function indexof(value, search, position2) {
return value.indexOf(search, position2);
}
function charat(value, index2) {
return value.charCodeAt(index2) | 0;
}
function substr(value, begin, end) {
return value.slice(begin, end);
}
function strlen(value) {
return value.length;
}
function sizeof(value) {
return value.length;
}
function append2(value, array4) {
return array4.push(value), value;
}
var line = 1;
var column = 1;
var length = 0;
var position = 0;
var character = 0;
var characters = "";
function node(value, root, parent, type4, props, children, length2, siblings) {
return { value, root, parent, type: type4, props, children, line, column, length: length2, return: "", siblings };
}
function char() {
return character;
}
function prev() {
character = position > 0 ? charat(characters, --position) : 0;
if (column--, character === 10)
column = 1, line--;
return character;
}
function next() {
character = position < length ? charat(characters, position++) : 0;
if (column++, character === 10)
column = 1, line++;
return character;
}
function peek() {
return charat(characters, position);
}
function caret() {
return position;
}
function slice(begin, end) {
return substr(characters, begin, end);
}
function token(type4) {
switch (type4) {
case 0:
case 9:
case 10:
case 13:
case 32:
return 5;
case 33:
case 43:
case 44:
case 47:
case 62:
case 64:
case 126:
case 59:
case 123:
case 125:
return 4;
case 58:
return 3;
case 34:
case 39:
case 40:
case 91:
return 2;
case 41:
case 93:
return 1;
}
return 0;
}
function alloc(value) {
return line = column = 1, length = strlen(characters = value), position = 0, [];
}
function dealloc(value) {
return characters = "", value;
}
function delimit(type4) {
return trim(slice(position - 1, delimiter(type4 === 91 ? type4 + 2 : type4 === 40 ? type4 + 1 : type4)));
}
function whitespace$1(type4) {
while (character = peek())
if (character < 33)
next();
else
break;
return token(type4) > 2 || token(character) > 3 ? "" : " ";
}
function escaping(index2, count) {
while (--count && next())
if (character < 48 || character > 102 || character > 57 && character < 65 || character > 70 && character < 97)
break;
return slice(index2, caret() + (count < 6 && peek() == 32 && next() == 32));
}
function delimiter(type4) {
while (next())
switch (character) {
case type4:
return position;
case 34:
case 39:
if (type4 !== 34 && type4 !== 39)
delimiter(character);
break;
case 40:
if (type4 === 41)
delimiter(type4);
break;
case 92:
next();
break;
}
return position;
}
function commenter(type4, index2) {
while (next())
if (type4 + character === 47 + 10)
break;
else if (type4 + character === 42 + 42 && peek() === 47)
break;
return "/*" + slice(index2, position - 1) + "*" + from(type4 === 47 ? type4 : next());
}
function identifier(index2) {
while (!token(peek()))
next();
return slice(index2, position);
}
function compile(value) {
return dealloc(parse("", null, null, null, [""], value = alloc(value), 0, [0], value));
}
function parse(value, root, parent, rule, rules2, rulesets, pseudo, points, declarations) {
var index2 = 0;
var offset = 0;
var length2 = pseudo;
var atrule = 0;
var property = 0;
var previous = 0;
var variable = 1;
var scanning = 1;
var ampersand = 1;
var character2 = 0;
var type4 = "";
var props = rules2;
var children = rulesets;
var reference = rule;
var characters2 = type4;
while (scanning)
switch (previous = character2, character2 = next()) {
case 40:
if (previous != 108 && charat(characters2, length2 - 1) == 58) {
if (indexof(characters2 += replace(delimit(character2), "&", "&\f"), "&\f", abs(index2 ? points[index2 - 1] : 0)) != -1)
ampersand = -1;
break;
}
case 34:
case 39:
case 91:
characters2 += delimit(character2);
break;
case 9:
case 10:
case 13:
case 32:
characters2 += whitespace$1(previous);
break;
case 92:
characters2 += escaping(caret() - 1, 7);
continue;
case 47:
switch (peek()) {
case 42:
case 47:
append2(comment(commenter(next(), caret()), root, parent, declarations), declarations);
break;
default:
characters2 += "/";
}
break;
case 123 * variable:
points[index2++] = strlen(characters2) * ampersand;
case 125 * variable:
case 59:
case 0:
switch (character2) {
case 0:
case 125:
scanning = 0;
case 59 + offset:
if (ampersand == -1)
characters2 = replace(characters2, /\f/g, "");
if (property > 0 && strlen(characters2) - length2)
append2(property > 32 ? declaration(characters2 + ";", rule, parent, length2 - 1, declarations) : declaration(replace(characters2, " ", "") + ";", rule, parent, length2 - 2, declarations), declarations);
break;
case 59:
characters2 += ";";
default:
append2(reference = ruleset(characters2, root, parent, index2, offset, rules2, points, type4, props = [], children = [], length2, rulesets), rulesets);
if (character2 === 123)
if (offset === 0)
parse(characters2, root, reference, reference, props, rulesets, length2, points, children);
else
switch (atrule === 99 && charat(characters2, 3) === 110 ? 100 : atrule) {
case 100:
case 108:
case 109:
case 115:
parse(value, reference, reference, rule && append2(ruleset(value, reference, reference, 0, 0, rules2, points, type4, rules2, props = [], length2, children), children), rules2, children, length2, points, rule ? props : children);
break;
default:
parse(characters2, reference, reference, reference, [""], children, 0, points, children);
}
}
index2 = offset = property = 0, variable = ampersand = 1, type4 = characters2 = "", length2 = pseudo;
break;
case 58:
length2 = 1 + strlen(characters2), property = previous;
default:
if (variable < 1) {
if (character2 == 123)
--variable;
else if (character2 == 125 && variable++ == 0 && prev() == 125)
continue;
}
switch (characters2 += from(character2), character2 * variable) {
case 38:
ampersand = offset > 0 ? 1 : (characters2 += "\f", -1);
break;
case 44:
points[index2++] = (strlen(characters2) - 1) * ampersand, ampersand = 1;
break;
case 64:
if (peek() === 45)
characters2 += delimit(next());
atrule = peek(), offset = length2 = strlen(type4 = characters2 += identifier(caret())), character2++;
break;
case 45:
if (previous === 45 && strlen(characters2) == 2)
variable = 0;
}
}
return rulesets;
}
function ruleset(value, root, parent, index2, offset, rules2, points, type4, props, children, length2, siblings) {
var post = offset - 1;
var rule = offset === 0 ? rules2 : [""];
var size = sizeof(rule);
for (var i = 0, j = 0, k2 = 0; i < index2; ++i)
for (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)
if (z = trim(j > 0 ? rule[x] + " " + y : replace(y, /&\f/g, rule[x])))
props[k2++] = z;
return node(value, root, parent, offset === 0 ? RULESET : type4, props, children, length2, siblings);
}
function comment(value, root, parent, siblings) {
return node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0, siblings);
}
function declaration(value, root, parent, length2, siblings) {
return node(value, root, parent, DECLARATION, substr(value, 0, length2), substr(value, length2 + 1, -1), length2, siblings);
}
function serialize(children, callback) {
var output = "";
for (var i = 0; i < children.length; i++)
output += callback(children[i], i, children, callback) || "";
return output;
}
function stringify$1(element, index2, children, callback) {
switch (element.type) {
case LAYER:
if (element.children.length)
break;
case IMPORT:
case DECLARATION:
return element.return = element.return || element.value;
case COMMENT:
return "";
case KEYFRAMES:
return element.return = element.value + "{" + serialize(element.children, callback) + "}";
case RULESET:
if (!strlen(element.value = element.props.join(",")))
return "";
}
return strlen(children = serialize(element.children, callback)) ? element.return = element.value + "{" + children + "}" : "";
}
var ATTR_CACHE_MAP = "data-ant-cssinjs-cache-path";
var CSS_FILE_STYLE = "_FILE_STYLE__";
var cachePathMap;
var fromCSSFile = true;
function prepare() {
if (!cachePathMap) {
cachePathMap = {};
if (canUseDom()) {
var div = document.createElement("div");
div.className = ATTR_CACHE_MAP;
div.style.position = "fixed";
div.style.visibility = "hidden";
div.style.top = "-9999px";
document.body.appendChild(div);
var content = getComputedStyle(div).content || "";
content = content.replace(/^"/, "").replace(/"$/, "");
content.split(";").forEach(function(item) {
var _item$split = item.split(":"), _item$split2 = _slicedToArray(_item$split, 2), path = _item$split2[0], hash = _item$split2[1];
cachePathMap[path] = hash;
});
var inlineMapStyle = document.querySelector("style[".concat(ATTR_CACHE_MAP, "]"));
if (inlineMapStyle) {
var _inlineMapStyle$paren;
fromCSSFile = false;
(_inlineMapStyle$paren = inlineMapStyle.parentNode) === null || _inlineMapStyle$paren === void 0 || _inlineMapStyle$paren.removeChild(inlineMapStyle);
}
document.body.removeChild(div);
}
}
}
function existPath(path) {
prepare();
return !!cachePathMap[path];
}
function getStyleAndHash(path) {
var hash = cachePathMap[path];
var styleStr = null;
if (hash && canUseDom()) {
if (fromCSSFile) {
styleStr = CSS_FILE_STYLE;
} else {
var _style = document.querySelector("style[".concat(ATTR_MARK, '="').concat(cachePathMap[path], '"]'));
if (_style) {
styleStr = _style.innerHTML;
} else {
delete cachePathMap[path];
}
}
}
return [styleStr, hash];
}
var SKIP_CHECK = "_skip_check_";
var MULTI_VALUE = "_multi_value_";
function normalizeStyle(styleStr) {
var serialized = serialize(compile(styleStr), stringify$1);
return serialized.replace(/\{%%%\:[^;];}/g, ";");
}
function isCompoundCSSProperty(value) {
return _typeof(value) === "object" && value && (SKIP_CHECK in value || MULTI_VALUE in value);
}
function injectSelectorHash(key, hashId, hashPriority) {
if (!hashId) {
return key;
}
var hashClassName = ".".concat(hashId);
var hashSelector = hashPriority === "low" ? ":where(".concat(hashClassName, ")") : hashClassName;
var keys2 = key.split(",").map(function(k2) {
var _firstPath$match;
var fullPath = k2.trim().split(/\s+/);
var firstPath = fullPath[0] || "";
var htmlElement = ((_firstPath$match = firstPath.match(/^\w+/)) === null || _firstPath$match === void 0 ? void 0 : _firstPath$match[0]) || "";
firstPath = "".concat(htmlElement).concat(hashSelector).concat(firstPath.slice(htmlElement.length));
return [firstPath].concat(_toConsumableArray(fullPath.slice(1))).join(" ");
});
return keys2.join(",");
}
var parseStyle = function parseStyle2(interpolation) {
var config = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
var _ref = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {
root: true,
parentSelectors: []
}, root = _ref.root, injectHash = _ref.injectHash, parentSelectors = _ref.parentSelectors;
var hashId = config.hashId, layer = config.layer;
config.path;
var hashPriority = config.hashPriority, _config$transformers = config.transformers, transformers = _config$transformers === void 0 ? [] : _config$transformers;
config.linters;
var styleStr = "";
var effectStyle = {};
function parseKeyframes(keyframes) {
var animationName = keyframes.getName(hashId);
if (!effectStyle[animationName]) {
var _parseStyle = parseStyle2(keyframes.style, config, {
root: false,
parentSelectors
}), _parseStyle2 = _slicedToArray(_parseStyle, 1), _parsedStr = _parseStyle2[0];
effectStyle[animationName] = "@keyframes ".concat(keyframes.getName(hashId)).concat(_parsedStr);
}
}
function flattenList(list) {
var fullList = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
list.forEach(function(item) {
if (Array.isArray(item)) {
flattenList(item, fullList);
} else if (item) {
fullList.push(item);
}
});
return fullList;
}
var flattenStyleList = flattenList(Array.isArray(interpolation) ? interpolation : [interpolation]);
flattenStyleList.forEach(function(originStyle) {
var style2 = typeof originStyle === "string" && !root ? {} : originStyle;
if (typeof style2 === "string") {
styleStr += "".concat(style2, "\n");
} else if (style2._keyframe) {
parseKeyframes(style2);
} else {
var mergedStyle = transformers.reduce(function(prev2, trans) {
var _trans$visit;
return (trans === null || trans === void 0 || (_trans$visit = trans.visit) === null || _trans$visit === void 0 ? void 0 : _trans$visit.call(trans, prev2)) || prev2;
}, style2);
Object.keys(mergedStyle).forEach(function(key) {
var value = mergedStyle[key];
if (_typeof(value) === "object" && value && (key !== "animationName" || !value._keyframe) && !isCompoundCSSProperty(value)) {
var subInjectHash = false;
var mergedKey = key.trim();
var nextRoot = false;
if ((root || injectHash) && hashId) {
if (mergedKey.startsWith("@")) {
subInjectHash = true;
} else {
mergedKey = injectSelectorHash(key, hashId, hashPriority);
}
} else if (root && !hashId && (mergedKey === "&" || mergedKey === "")) {
mergedKey = "";
nextRoot = true;
}
var _parseStyle3 = parseStyle2(value, config, {
root: nextRoot,
injectHash: subInjectHash,
parentSelectors: [].concat(_toConsumableArray(parentSelectors), [mergedKey])
}), _parseStyle4 = _slicedToArray(_parseStyle3, 2), _parsedStr2 = _parseStyle4[0], childEffectStyle = _parseStyle4[1];
effectStyle = _objectSpread2(_objectSpread2({}, effectStyle), childEffectStyle);
styleStr += "".concat(mergedKey).concat(_parsedStr2);
} else {
let appendStyle = function(cssKey, cssValue) {
var styleName = cssKey.replace(/[A-Z]/g, function(match2) {
return "-".concat(match2.toLowerCase());
});
var formatValue = cssValue;
if (!unitlessKeys[cssKey] && typeof formatValue === "number" && formatValue !== 0) {
formatValue = "".concat(formatValue, "px");
}
if (cssKey === "animationName" && cssValue !== null && cssValue !== void 0 && cssValue._keyframe) {
parseKeyframes(cssValue);
formatValue = cssValue.getName(hashId);
}
styleStr += "".concat(styleName, ":").concat(formatValue, ";");
};
var _value;
var actualValue = (_value = value === null || value === void 0 ? void 0 : value.value) !== null && _value !== void 0 ? _value : value;
if (_typeof(value) === "object" && value !== null && value !== void 0 && value[MULTI_VALUE] && Array.isArray(actualValue)) {
actualValue.forEach(function(item) {
appendStyle(key, item);
});
} else {
appendStyle(key, actualValue);
}
}
});
}
});
if (!root) {
styleStr = "{".concat(styleStr, "}");
} else if (layer && supportLayer()) {
var layerCells = layer.split(",");
var layerName = layerCells[layerCells.length - 1].trim();
styleStr = "@layer ".concat(layerName, " {").concat(styleStr, "}");
if (layerCells.length > 1) {
styleStr = "@layer ".concat(layer, "{%%%:%}").concat(styleStr);
}
}
return [styleStr, effectStyle];
};
function uniqueHash(path, styleStr) {
return murmur2("".concat(path.join("%")).concat(styleStr));
}
function Empty$3() {
return null;
}
var STYLE_PREFIX = "style";
function useStyleRegister(info2, styleFn) {
var token2 = info2.token, path = info2.path, hashId = info2.hashId, layer = info2.layer, nonce = info2.nonce, clientOnly = info2.clientOnly, _info$order = info2.order, order = _info$order === void 0 ? 0 : _info$order;
var _React$useContext = React__namespace.useContext(StyleContext$1), autoClear = _React$useContext.autoClear;
_React$useContext.mock;
var defaultCache = _React$useContext.defaultCache, hashPriority = _React$useContext.hashPriority, container = _React$useContext.container, ssrInline = _React$useContext.ssrInline, transformers = _React$useContext.transformers, linters = _React$useContext.linters, cache = _React$useContext.cache;
var tokenKey = token2._tokenKey;
var fullPath = [tokenKey].concat(_toConsumableArray(path));
var isMergedClientSide = isClientSide;
var _useGlobalCache = useGlobalCache(
STYLE_PREFIX,
fullPath,
// Create cache if needed
function() {
var cachePath = fullPath.join("|");
if (existPath(cachePath)) {
var _getStyleAndHash = getStyleAndHash(cachePath), _getStyleAndHash2 = _slicedToArray(_getStyleAndHash, 2), inlineCacheStyleStr = _getStyleAndHash2[0], styleHash = _getStyleAndHash2[1];
if (inlineCacheStyleStr) {
return [inlineCacheStyleStr, tokenKey, styleHash, {}, clientOnly, order];
}
}
var styleObj = styleFn();
var _parseStyle5 = parseStyle(styleObj, {
hashId,
hashPriority,
layer,
path: path.join("-"),
transformers,
linters
}), _parseStyle6 = _slicedToArray(_parseStyle5, 2), parsedStyle = _parseStyle6[0], effectStyle = _parseStyle6[1];
var styleStr = normalizeStyle(parsedStyle);
var styleId = uniqueHash(fullPath, styleStr);
return [styleStr, tokenKey, styleId, effectStyle, clientOnly, order];
},
// Remove cache if no need
function(_ref2, fromHMR) {
var _ref3 = _slicedToArray(_ref2, 3), styleId = _ref3[2];
if ((fromHMR || autoClear) && isClientSide) {
removeCSS(styleId, {
mark: ATTR_MARK
});
}
},
// Effect: Inject style here
function(_ref4) {
var _ref5 = _slicedToArray(_ref4, 4), styleStr = _ref5[0];
_ref5[1];
var styleId = _ref5[2], effectStyle = _ref5[3];
if (isMergedClientSide && styleStr !== CSS_FILE_STYLE) {
var mergedCSSConfig = {
mark: ATTR_MARK,
prepend: "queue",
attachTo: container,
priority: order
};
var nonceStr = typeof nonce === "function" ? nonce() : nonce;
if (nonceStr) {
mergedCSSConfig.csp = {
nonce: nonceStr
};
}
var style2 = updateCSS(styleStr, styleId, mergedCSSConfig);
style2[CSS_IN_JS_INSTANCE] = cache.instanceId;
style2.setAttribute(ATTR_TOKEN, tokenKey);
Object.keys(effectStyle).forEach(function(effectKey) {
updateCSS(normalizeStyle(effectStyle[effectKey]), "_effect-".concat(effectKey), mergedCSSConfig);
});
}
}
), _useGlobalCache2 = _slicedToArray(_useGlobalCache, 3), cachedStyleStr = _useGlobalCache2[0], cachedTokenKey = _useGlobalCache2[1], cachedStyleId = _useGlobalCache2[2];
return function(node2) {
var styleNode;
if (!ssrInline || isMergedClientSide || !defaultCache) {
styleNode = /* @__PURE__ */ React__namespace.createElement(Empty$3, null);
} else {
var _ref6;
styleNode = /* @__PURE__ */ React__namespace.createElement("style", _extends$1({}, (_ref6 = {}, _defineProperty(_ref6, ATTR_TOKEN, cachedTokenKey), _defineProperty(_ref6, ATTR_MARK, cachedStyleId), _ref6), {
dangerouslySetInnerHTML: {
__html: cachedStyleStr
}
}));
}
return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, styleNode, node2);
};
}
var extract$1 = function extract2(cache, effectStyles, options) {
var _cache = _slicedToArray(cache, 6), styleStr = _cache[0], tokenKey = _cache[1], styleId = _cache[2], effectStyle = _cache[3], clientOnly = _cache[4], order = _cache[5];
var _ref7 = options || {}, plain = _ref7.plain;
if (clientOnly) {
return null;
}
var keyStyleText = styleStr;
var sharedAttrs = {
"data-rc-order": "prependQueue",
"data-rc-priority": "".concat(order)
};
keyStyleText = toStyleStr(styleStr, tokenKey, styleId, sharedAttrs, plain);
if (effectStyle) {
Object.keys(effectStyle).forEach(function(effectKey) {
if (!effectStyles[effectKey]) {
effectStyles[effectKey] = true;
var effectStyleStr = normalizeStyle(effectStyle[effectKey]);
keyStyleText += toStyleStr(effectStyleStr, tokenKey, "_effect-".concat(effectKey), sharedAttrs, plain);
}
});
}
return [order, styleId, keyStyleText];
};
var CSS_VAR_PREFIX = "cssVar";
var useCSSVarRegister = function useCSSVarRegister2(config, fn) {
var key = config.key, prefix = config.prefix, unitless2 = config.unitless, ignore2 = config.ignore, token2 = config.token, _config$scope = config.scope, scope = _config$scope === void 0 ? "" : _config$scope;
var _useContext = React.useContext(StyleContext$1), instanceId = _useContext.cache.instanceId, container = _useContext.container;
var tokenKey = token2._tokenKey;
var stylePath = [].concat(_toConsumableArray(config.path), [key, scope, tokenKey]);
var cache = useGlobalCache(CSS_VAR_PREFIX, stylePath, function() {
var originToken = fn();
var _transformToken = transformToken(originToken, key, {
prefix,
unitless: unitless2,
ignore: ignore2,
scope
}), _transformToken2 = _slicedToArray(_transformToken, 2), mergedToken = _transformToken2[0], cssVarsStr = _transformToken2[1];
var styleId = uniqueHash(stylePath, cssVarsStr);
return [mergedToken, cssVarsStr, styleId, key];
}, function(_ref) {
var _ref2 = _slicedToArray(_ref, 3), styleId = _ref2[2];
if (isClientSide) {
removeCSS(styleId, {
mark: ATTR_MARK
});
}
}, function(_ref3) {
var _ref4 = _slicedToArray(_ref3, 3), cssVarsStr = _ref4[1], styleId = _ref4[2];
if (!cssVarsStr) {
return;
}
var style2 = updateCSS(cssVarsStr, styleId, {
mark: ATTR_MARK,
prepend: "queue",
attachTo: container,
priority: -999
});
style2[CSS_IN_JS_INSTANCE] = instanceId;
style2.setAttribute(ATTR_TOKEN, key);
});
return cache;
};
var extract3 = function extract4(cache, effectStyles, options) {
var _cache = _slicedToArray(cache, 4), styleStr = _cache[1], styleId = _cache[2], cssVarKey = _cache[3];
var _ref5 = options || {}, plain = _ref5.plain;
if (!styleStr) {
return null;
}
var order = -999;
var sharedAttrs = {
"data-rc-order": "prependQueue",
"data-rc-priority": "".concat(order)
};
var styleText = toStyleStr(styleStr, cssVarKey, styleId, sharedAttrs, plain);
return [order, styleId, styleText];
};
var _ExtractStyleFns;
_ExtractStyleFns = {}, _defineProperty(_ExtractStyleFns, STYLE_PREFIX, extract$1), _defineProperty(_ExtractStyleFns, TOKEN_PREFIX, extract$2), _defineProperty(_ExtractStyleFns, CSS_VAR_PREFIX, extract3);
var Keyframe = /* @__PURE__ */ function() {
function Keyframe2(name, style2) {
_classCallCheck(this, Keyframe2);
_defineProperty(this, "name", void 0);
_defineProperty(this, "style", void 0);
_defineProperty(this, "_keyframe", true);
this.name = name;
this.style = style2;
}
_createClass(Keyframe2, [{
key: "getName",
value: function getName() {
var hashId = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "";
return hashId ? "".concat(hashId, "-").concat(this.name) : this.name;
}
}]);
return Keyframe2;
}();
function noSplit(list) {
list.notSplit = true;
return list;
}
({
// Inset
inset: ["top", "right", "bottom", "left"],
insetBlock: ["top", "bottom"],
insetBlockStart: ["top"],
insetBlockEnd: ["bottom"],
insetInline: ["left", "right"],
insetInlineStart: ["left"],
insetInlineEnd: ["right"],
// Margin
marginBlock: ["marginTop", "marginBottom"],
marginBlockStart: ["marginTop"],
marginBlockEnd: ["marginBottom"],
marginInline: ["marginLeft", "marginRight"],
marginInlineStart: ["marginLeft"],
marginInlineEnd: ["marginRight"],
// Padding
paddingBlock: ["paddingTop", "paddingBottom"],
paddingBlockStart: ["paddingTop"],
paddingBlockEnd: ["paddingBottom"],
paddingInline: ["paddingLeft", "paddingRight"],
paddingInlineStart: ["paddingLeft"],
paddingInlineEnd: ["paddingRight"],
// Border
borderBlock: noSplit(["borderTop", "borderBottom"]),
borderBlockStart: noSplit(["borderTop"]),
borderBlockEnd: noSplit(["borderBottom"]),
borderInline: noSplit(["borderLeft", "borderRight"]),
borderInlineStart: noSplit(["borderLeft"]),
borderInlineEnd: noSplit(["borderRight"]),
// Border width
borderBlockWidth: ["borderTopWidth", "borderBottomWidth"],
borderBlockStartWidth: ["borderTopWidth"],
borderBlockEndWidth: ["borderBottomWidth"],
borderInlineWidth: ["borderLeftWidth", "borderRightWidth"],
borderInlineStartWidth: ["borderLeftWidth"],
borderInlineEndWidth: ["borderRightWidth"],
// Border style
borderBlockStyle: ["borderTopStyle", "borderBottomStyle"],
borderBlockStartStyle: ["borderTopStyle"],
borderBlockEndStyle: ["borderBottomStyle"],
borderInlineStyle: ["borderLeftStyle", "borderRightStyle"],
borderInlineStartStyle: ["borderLeftStyle"],
borderInlineEndStyle: ["borderRightStyle"],
// Border color
borderBlockColor: ["borderTopColor", "borderBottomColor"],
borderBlockStartColor: ["borderTopColor"],
borderBlockEndColor: ["borderBottomColor"],
borderInlineColor: ["borderLeftColor", "borderRightColor"],
borderInlineStartColor: ["borderLeftColor"],
borderInlineEndColor: ["borderRightColor"],
// Border radius
borderStartStartRadius: ["borderTopLeftRadius"],
borderStartEndRadius: ["borderTopRightRadius"],
borderEndStartRadius: ["borderBottomLeftRadius"],
borderEndEndRadius: ["borderBottomRightRadius"]
});
var IconContext = /* @__PURE__ */ React.createContext({});
const Context$2 = IconContext;
function _toArray(arr) {
return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest();
}
function get(entity, path) {
var current = entity;
for (var i = 0; i < path.length; i += 1) {
if (current === null || current === void 0) {
return void 0;
}
current = current[path[i]];
}
return current;
}
function internalSet(entity, paths, value, removeIfUndefined) {
if (!paths.length) {
return value;
}
var _paths = _toArray(paths), path = _paths[0], restPath = _paths.slice(1);
var clone;
if (!entity && typeof path === "number") {
clone = [];
} else if (Array.isArray(entity)) {
clone = _toConsumableArray(entity);
} else {
clone = _objectSpread2({}, entity);
}
if (removeIfUndefined && value === void 0 && restPath.length === 1) {
delete clone[path][restPath[0]];
} else {
clone[path] = internalSet(clone[path], restPath, value, removeIfUndefined);
}
return clone;
}
function set(entity, paths, value) {
var removeIfUndefined = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false;
if (paths.length && removeIfUndefined && value === void 0 && !get(entity, paths.slice(0, -1))) {
return entity;
}
return internalSet(entity, paths, value, removeIfUndefined);
}
function isObject(obj) {
return _typeof(obj) === "object" && obj !== null && Object.getPrototypeOf(obj) === Object.prototype;
}
function createEmpty(source) {
return Array.isArray(source) ? [] : {};
}
var keys = typeof Reflect === "undefined" ? Object.keys : Reflect.ownKeys;
function merge$1() {
for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {
sources[_key] = arguments[_key];
}
var clone = createEmpty(sources[0]);
sources.forEach(function(src) {
function internalMerge(path, parentLoopSet) {
var loopSet = new Set(parentLoopSet);
var value = get(src, path);
var isArr = Array.isArray(value);
if (isArr || isObject(value)) {
if (!loopSet.has(value)) {
loopSet.add(value);
var originValue = get(clone, path);
if (isArr) {
clone = set(clone, path, []);
} else if (!originValue || _typeof(originValue) !== "object") {
clone = set(clone, path, createEmpty(value));
}
keys(value).forEach(function(key) {
internalMerge([].concat(_toConsumableArray(path), [key]), loopSet);
});
}
} else {
clone = set(clone, path, value);
}
}
internalMerge([]);
});
return clone;
}
const WarningContext = /* @__PURE__ */ React__namespace.createContext({});
const ValidateMessagesContext = /* @__PURE__ */ React.createContext(void 0);
var locale$4 = {
// Options
items_per_page: "/ page",
jump_to: "Go to",
jump_to_confirm: "confirm",
page: "Page",
// Pagination
prev_page: "Previous Page",
next_page: "Next Page",
prev_5: "Previous 5 Pages",
next_5: "Next 5 Pages",
prev_3: "Previous 3 Pages",
next_3: "Next 3 Pages",
page_size: "Page Size"
};
var locale$3 = {
locale: "en_US",
today: "Today",
now: "Now",
backToToday: "Back to today",
ok: "OK",
clear: "Clear",
month: "Month",
year: "Year",
timeSelect: "select time",
dateSelect: "select date",
weekSelect: "Choose a week",
monthSelect: "Choose a month",
yearSelect: "Choose a year",
decadeSelect: "Choose a decade",
yearFormat: "YYYY",
dateFormat: "M/D/YYYY",
dayFormat: "D",
dateTimeFormat: "M/D/YYYY HH:mm:ss",
monthBeforeYear: true,
previousMonth: "Previous month (PageUp)",
nextMonth: "Next month (PageDown)",
previousYear: "Last year (Control + left)",
nextYear: "Next year (Control + right)",
previousDecade: "Last decade",
nextDecade: "Next decade",
previousCentury: "Last century",
nextCentury: "Next century"
};
const locale$2 = {
placeholder: "Select time",
rangePlaceholder: ["Start time", "End time"]
};
const TimePicker = locale$2;
const locale$1 = {
lang: Object.assign({
placeholder: "Select date",
yearPlaceholder: "Select year",
quarterPlaceholder: "Select quarter",
monthPlaceholder: "Select month",
weekPlaceholder: "Select week",
rangePlaceholder: ["Start date", "End date"],
rangeYearPlaceholder: ["Start year", "End year"],
rangeQuarterPlaceholder: ["Start quarter", "End quarter"],
rangeMonthPlaceholder: ["Start month", "End month"],
rangeWeekPlaceholder: ["Start week", "End week"]
}, locale$3),
timePickerLocale: Object.assign({}, TimePicker)
};
const enUS = locale$1;
const typeTemplate$1 = "${label} is not a valid ${type}";
const localeValues = {
locale: "en",
Pagination: locale$4,
DatePicker: enUS,
TimePicker,
Calendar: enUS,
global: {
placeholder: "Please select"
},
Table: {
filterTitle: "Filter menu",
filterConfirm: "OK",
filterReset: "Reset",
filterEmptyText: "No filters",
filterCheckall: "Select all items",
filterSearchPlaceholder: "Search in filters",
emptyText: "No data",
selectAll: "Select current page",
selectInvert: "Invert current page",
selectNone: "Clear all data",
selectionAll: "Select all data",
sortTitle: "Sort",
expand: "Expand row",
collapse: "Collapse row",
triggerDesc: "Click to sort descending",
triggerAsc: "Click to sort ascending",
cancelSort: "Click to cancel sorting"
},
Tour: {
Next: "Next",
Previous: "Previous",
Finish: "Finish"
},
Modal: {
okText: "OK",
cancelText: "Cancel",
justOkText: "OK"
},
Popconfirm: {
okText: "OK",
cancelText: "Cancel"
},
Transfer: {
titles: ["", ""],
searchPlaceholder: "Search here",
itemUnit: "item",
itemsUnit: "items",
remove: "Remove",
selectCurrent: "Select current page",
removeCurrent: "Remove current page",
selectAll: "Select all data",
removeAll: "Remove all data",
selectInvert: "Invert current page"
},
Upload: {
uploading: "Uploading...",
removeFile: "Remove file",
uploadError: "Upload error",
previewFile: "Preview file",
downloadFile: "Download file"
},
Empty: {
description: "No data"
},
Icon: {
icon: "icon"
},
Text: {
edit: "Edit",
copy: "Copy",
copied: "Copied",
expand: "Expand"
},
PageHeader: {
back: "Back"
},
Form: {
optional: "(optional)",
defaultValidateMessages: {
default: "Field validation error for ${label}",
required: "Please enter ${label}",
enum: "${label} must be one of [${enum}]",
whitespace: "${label} cannot be a blank character",
date: {
format: "${label} date format is invalid",
parse: "${label} cannot be converted to a date",
invalid: "${label} is an invalid date"
},
types: {
string: typeTemplate$1,
method: typeTemplate$1,
array: typeTemplate$1,
object: typeTemplate$1,
number: typeTemplate$1,
date: typeTemplate$1,
boolean: typeTemplate$1,
integer: typeTemplate$1,
float: typeTemplate$1,
regexp: typeTemplate$1,
email: typeTemplate$1,
url: typeTemplate$1,
hex: typeTemplate$1
},
string: {
len: "${label} must be ${len} characters",
min: "${label} must be at least ${min} characters",
max: "${label} must be up to ${max} characters",
range: "${label} must be between ${min}-${max} characters"
},
number: {
len: "${label} must be equal to ${len}",
min: "${label} must be minimum ${min}",
max: "${label} must be maximum ${max}",
range: "${label} must be between ${min}-${max}"
},
array: {
len: "Must be ${len} ${label}",
min: "At least ${min} ${label}",
max: "At most ${max} ${label}",
range: "The amount of ${label} must be between ${min}-${max}"
},
pattern: {
mismatch: "${label} does not match the pattern ${pattern}"
}
}
},
Image: {
preview: "Preview"
},
QRCode: {
expired: "QR code expired",
refresh: "Refresh"
},
ColorPicker: {
presetEmpty: "Empty"
}
};
const defaultLocale = localeValues;
Object.assign({}, defaultLocale.Modal);
let localeList = [];
const generateLocale = () => localeList.reduce((merged, locale2) => Object.assign(Object.assign({}, merged), locale2), defaultLocale.Modal);
function changeConfirmLocale(newLocale) {
if (newLocale) {
const cloneLocale = Object.assign({}, newLocale);
localeList.push(cloneLocale);
generateLocale();
return () => {
localeList = localeList.filter((locale2) => locale2 !== cloneLocale);
generateLocale();
};
}
Object.assign({}, defaultLocale.Modal);
}
const LocaleContext = /* @__PURE__ */ React.createContext(void 0);
const LocaleContext$1 = LocaleContext;
const useLocale = (componentName, defaultLocale$1) => {
const fullLocale = React__namespace.useContext(LocaleContext$1);
const getLocale = React__namespace.useMemo(() => {
var _a2;
const locale2 = defaultLocale$1 || defaultLocale[componentName];
const localeFromContext = (_a2 = fullLocale === null || fullLocale === void 0 ? void 0 : fullLocale[componentName]) !== null && _a2 !== void 0 ? _a2 : {};
return Object.assign(Object.assign({}, typeof locale2 === "function" ? locale2() : locale2), localeFromContext || {});
}, [componentName, defaultLocale$1, fullLocale]);
const getLocaleCode = React__namespace.useMemo(() => {
const localeCode = fullLocale === null || fullLocale === void 0 ? void 0 : fullLocale.locale;
if ((fullLocale === null || fullLocale === void 0 ? void 0 : fullLocale.exist) && !localeCode) {
return defaultLocale.locale;
}
return localeCode;
}, [fullLocale]);
return [getLocale, getLocaleCode];
};
const useLocale$1 = useLocale;
const ANT_MARK = "internalMark";
const LocaleProvider = (props) => {
const {
locale: locale2 = {},
children,
_ANT_MARK__
} = props;
React__namespace.useEffect(() => {
const clearLocale = changeConfirmLocale(locale2 && locale2.Modal);
return clearLocale;
}, [locale2]);
const getMemoizedContextValue = React__namespace.useMemo(() => Object.assign(Object.assign({}, locale2), {
exist: true
}), [locale2]);
return /* @__PURE__ */ React__namespace.createElement(LocaleContext$1.Provider, {
value: getMemoizedContextValue
}, children);
};
const LocaleProvider$1 = LocaleProvider;
function bound01(n2, max2) {
if (isOnePointZero(n2)) {
n2 = "100%";
}
var isPercent = isPercentage(n2);
n2 = max2 === 360 ? n2 : Math.min(max2, Math.max(0, parseFloat(n2)));
if (isPercent) {
n2 = parseInt(String(n2 * max2), 10) / 100;
}
if (Math.abs(n2 - max2) < 1e-6) {
return 1;
}
if (max2 === 360) {
n2 = (n2 < 0 ? n2 % max2 + max2 : n2 % max2) / parseFloat(String(max2));
} else {
n2 = n2 % max2 / parseFloat(String(max2));
}
return n2;
}
function clamp01(val) {
return Math.min(1, Math.max(0, val));
}
function isOnePointZero(n2) {
return typeof n2 === "string" && n2.indexOf(".") !== -1 && parseFloat(n2) === 1;
}
function isPercentage(n2) {
return typeof n2 === "string" && n2.indexOf("%") !== -1;
}
function boundAlpha(a) {
a = parseFloat(a);
if (isNaN(a) || a < 0 || a > 1) {
a = 1;
}
return a;
}
function convertToPercentage(n2) {
if (n2 <= 1) {
return "".concat(Number(n2) * 100, "%");
}
return n2;
}
function pad2(c2) {
return c2.length === 1 ? "0" + c2 : String(c2);
}
function rgbToRgb(r, g2, b2) {
return {
r: bound01(r, 255) * 255,
g: bound01(g2, 255) * 255,
b: bound01(b2, 255) * 255
};
}
function rgbToHsl(r, g2, b2) {
r = bound01(r, 255);
g2 = bound01(g2, 255);
b2 = bound01(b2, 255);
var max2 = Math.max(r, g2, b2);
var min = Math.min(r, g2, b2);
var h2 = 0;
var s = 0;
var l2 = (max2 + min) / 2;
if (max2 === min) {
s = 0;
h2 = 0;
} else {
var d2 = max2 - min;
s = l2 > 0.5 ? d2 / (2 - max2 - min) : d2 / (max2 + min);
switch (max2) {
case r:
h2 = (g2 - b2) / d2 + (g2 < b2 ? 6 : 0);
break;
case g2:
h2 = (b2 - r) / d2 + 2;
break;
case b2:
h2 = (r - g2) / d2 + 4;
break;
}
h2 /= 6;
}
return { h: h2, s, l: l2 };
}
function hue2rgb(p2, q2, t2) {
if (t2 < 0) {
t2 += 1;
}
if (t2 > 1) {
t2 -= 1;
}
if (t2 < 1 / 6) {
return p2 + (q2 - p2) * (6 * t2);
}
if (t2 < 1 / 2) {
return q2;
}
if (t2 < 2 / 3) {
return p2 + (q2 - p2) * (2 / 3 - t2) * 6;
}
return p2;
}
function hslToRgb(h2, s, l2) {
var r;
var g2;
var b2;
h2 = bound01(h2, 360);
s = bound01(s, 100);
l2 = bound01(l2, 100);
if (s === 0) {
g2 = l2;
b2 = l2;
r = l2;
} else {
var q2 = l2 < 0.5 ? l2 * (1 + s) : l2 + s - l2 * s;
var p2 = 2 * l2 - q2;
r = hue2rgb(p2, q2, h2 + 1 / 3);
g2 = hue2rgb(p2, q2, h2);
b2 = hue2rgb(p2, q2, h2 - 1 / 3);
}
return { r: r * 255, g: g2 * 255, b: b2 * 255 };
}
function rgbToHsv(r, g2, b2) {
r = bound01(r, 255);
g2 = bound01(g2, 255);
b2 = bound01(b2, 255);
var max2 = Math.max(r, g2, b2);
var min = Math.min(r, g2, b2);
var h2 = 0;
var v2 = max2;
var d2 = max2 - min;
var s = max2 === 0 ? 0 : d2 / max2;
if (max2 === min) {
h2 = 0;
} else {
switch (max2) {
case r:
h2 = (g2 - b2) / d2 + (g2 < b2 ? 6 : 0);
break;
case g2:
h2 = (b2 - r) / d2 + 2;
break;
case b2:
h2 = (r - g2) / d2 + 4;
break;
}
h2 /= 6;
}
return { h: h2, s, v: v2 };
}
function hsvToRgb(h2, s, v2) {
h2 = bound01(h2, 360) * 6;
s = bound01(s, 100);
v2 = bound01(v2, 100);
var i = Math.floor(h2);
var f2 = h2 - i;
var p2 = v2 * (1 - s);
var q2 = v2 * (1 - f2 * s);
var t2 = v2 * (1 - (1 - f2) * s);
var mod = i % 6;
var r = [v2, q2, p2, p2, t2, v2][mod];
var g2 = [t2, v2, v2, q2, p2, p2][mod];
var b2 = [p2, p2, t2, v2, v2, q2][mod];
return { r: r * 255, g: g2 * 255, b: b2 * 255 };
}
function rgbToHex(r, g2, b2, allow3Char) {
var hex2 = [
pad2(Math.round(r).toString(16)),
pad2(Math.round(g2).toString(16)),
pad2(Math.round(b2).toString(16))
];
if (allow3Char && hex2[0].startsWith(hex2[0].charAt(1)) && hex2[1].startsWith(hex2[1].charAt(1)) && hex2[2].startsWith(hex2[2].charAt(1))) {
return hex2[0].charAt(0) + hex2[1].charAt(0) + hex2[2].charAt(0);
}
return hex2.join("");
}
function rgbaToHex(r, g2, b2, a, allow4Char) {
var hex2 = [
pad2(Math.round(r).toString(16)),
pad2(Math.round(g2).toString(16)),
pad2(Math.round(b2).toString(16)),
pad2(convertDecimalToHex(a))
];
if (allow4Char && hex2[0].startsWith(hex2[0].charAt(1)) && hex2[1].startsWith(hex2[1].charAt(1)) && hex2[2].startsWith(hex2[2].charAt(1)) && hex2[3].startsWith(hex2[3].charAt(1))) {
return hex2[0].charAt(0) + hex2[1].charAt(0) + hex2[2].charAt(0) + hex2[3].charAt(0);
}
return hex2.join("");
}
function convertDecimalToHex(d2) {
return Math.round(parseFloat(d2) * 255).toString(16);
}
function convertHexToDecimal(h2) {
return parseIntFromHex(h2) / 255;
}
function parseIntFromHex(val) {
return parseInt(val, 16);
}
function numberInputToObject(color) {
return {
r: color >> 16,
g: (color & 65280) >> 8,
b: color & 255
};
}
var names = {
aliceblue: "#f0f8ff",
antiquewhite: "#faebd7",
aqua: "#00ffff",
aquamarine: "#7fffd4",
azure: "#f0ffff",
beige: "#f5f5dc",
bisque: "#ffe4c4",
black: "#000000",
blanchedalmond: "#ffebcd",
blue: "#0000ff",
blueviolet: "#8a2be2",
brown: "#a52a2a",
burlywood: "#deb887",
cadetblue: "#5f9ea0",
chartreuse: "#7fff00",
chocolate: "#d2691e",
coral: "#ff7f50",
cornflowerblue: "#6495ed",
cornsilk: "#fff8dc",
crimson: "#dc143c",
cyan: "#00ffff",
darkblue: "#00008b",
darkcyan: "#008b8b",
darkgoldenrod: "#b8860b",
darkgray: "#a9a9a9",
darkgreen: "#006400",
darkgrey: "#a9a9a9",
darkkhaki: "#bdb76b",
darkmagenta: "#8b008b",
darkolivegreen: "#556b2f",
darkorange: "#ff8c00",
darkorchid: "#9932cc",
darkred: "#8b0000",
darksalmon: "#e9967a",
darkseagreen: "#8fbc8f",
darkslateblue: "#483d8b",
darkslategray: "#2f4f4f",
darkslategrey: "#2f4f4f",
darkturquoise: "#00ced1",
darkviolet: "#9400d3",
deeppink: "#ff1493",
deepskyblue: "#00bfff",
dimgray: "#696969",
dimgrey: "#696969",
dodgerblue: "#1e90ff",
firebrick: "#b22222",
floralwhite: "#fffaf0",
forestgreen: "#228b22",
fuchsia: "#ff00ff",
gainsboro: "#dcdcdc",
ghostwhite: "#f8f8ff",
goldenrod: "#daa520",
gold: "#ffd700",
gray: "#808080",
green: "#008000",
greenyellow: "#adff2f",
grey: "#808080",
honeydew: "#f0fff0",
hotpink: "#ff69b4",
indianred: "#cd5c5c",
indigo: "#4b0082",
ivory: "#fffff0",
khaki: "#f0e68c",
lavenderblush: "#fff0f5",
lavender: "#e6e6fa",
lawngreen: "#7cfc00",
lemonchiffon: "#fffacd",
lightblue: "#add8e6",
lightcoral: "#f08080",
lightcyan: "#e0ffff",
lightgoldenrodyellow: "#fafad2",
lightgray: "#d3d3d3",
lightgreen: "#90ee90",
lightgrey: "#d3d3d3",
lightpink: "#ffb6c1",
lightsalmon: "#ffa07a",
lightseagreen: "#20b2aa",
lightskyblue: "#87cefa",
lightslategray: "#778899",
lightslategrey: "#778899",
lightsteelblue: "#b0c4de",
lightyellow: "#ffffe0",
lime: "#00ff00",
limegreen: "#32cd32",
linen: "#faf0e6",
magenta: "#ff00ff",
maroon: "#800000",
mediumaquamarine: "#66cdaa",
mediumblue: "#0000cd",
mediumorchid: "#ba55d3",
mediumpurple: "#9370db",
mediumseagreen: "#3cb371",
mediumslateblue: "#7b68ee",
mediumspringgreen: "#00fa9a",
mediumturquoise: "#48d1cc",
mediumvioletred: "#c71585",
midnightblue: "#191970",
mintcream: "#f5fffa",
mistyrose: "#ffe4e1",
moccasin: "#ffe4b5",
navajowhite: "#ffdead",
navy: "#000080",
oldlace: "#fdf5e6",
olive: "#808000",
olivedrab: "#6b8e23",
orange: "#ffa500",
orangered: "#ff4500",
orchid: "#da70d6",
palegoldenrod: "#eee8aa",
palegreen: "#98fb98",
paleturquoise: "#afeeee",
palevioletred: "#db7093",
papayawhip: "#ffefd5",
peachpuff: "#ffdab9",
peru: "#cd853f",
pink: "#ffc0cb",
plum: "#dda0dd",
powderblue: "#b0e0e6",
purple: "#800080",
rebeccapurple: "#663399",
red: "#ff0000",
rosybrown: "#bc8f8f",
royalblue: "#4169e1",
saddlebrown: "#8b4513",
salmon: "#fa8072",
sandybrown: "#f4a460",
seagreen: "#2e8b57",
seashell: "#fff5ee",
sienna: "#a0522d",
silver: "#c0c0c0",
skyblue: "#87ceeb",
slateblue: "#6a5acd",
slategray: "#708090",
slategrey: "#708090",
snow: "#fffafa",
springgreen: "#00ff7f",
steelblue: "#4682b4",
tan: "#d2b48c",
teal: "#008080",
thistle: "#d8bfd8",
tomato: "#ff6347",
turquoise: "#40e0d0",
violet: "#ee82ee",
wheat: "#f5deb3",
white: "#ffffff",
whitesmoke: "#f5f5f5",
yellow: "#ffff00",
yellowgreen: "#9acd32"
};
function inputToRGB(color) {
var rgb = { r: 0, g: 0, b: 0 };
var a = 1;
var s = null;
var v2 = null;
var l2 = null;
var ok = false;
var format2 = false;
if (typeof color === "string") {
color = stringInputToObject(color);
}
if (typeof color === "object") {
if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {
rgb = rgbToRgb(color.r, color.g, color.b);
ok = true;
format2 = String(color.r).substr(-1) === "%" ? "prgb" : "rgb";
} else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {
s = convertToPercentage(color.s);
v2 = convertToPercentage(color.v);
rgb = hsvToRgb(color.h, s, v2);
ok = true;
format2 = "hsv";
} else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {
s = convertToPercentage(color.s);
l2 = convertToPercentage(color.l);
rgb = hslToRgb(color.h, s, l2);
ok = true;
format2 = "hsl";
}
if (Object.prototype.hasOwnProperty.call(color, "a")) {
a = color.a;
}
}
a = boundAlpha(a);
return {
ok,
format: color.format || format2,
r: Math.min(255, Math.max(rgb.r, 0)),
g: Math.min(255, Math.max(rgb.g, 0)),
b: Math.min(255, Math.max(rgb.b, 0)),
a
};
}
var CSS_INTEGER = "[-\\+]?\\d+%?";
var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?";
var CSS_UNIT = "(?:".concat(CSS_NUMBER, ")|(?:").concat(CSS_INTEGER, ")");
var PERMISSIVE_MATCH3 = "[\\s|\\(]+(".concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")\\s*\\)?");
var PERMISSIVE_MATCH4 = "[\\s|\\(]+(".concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")\\s*\\)?");
var matchers = {
CSS_UNIT: new RegExp(CSS_UNIT),
rgb: new RegExp("rgb" + PERMISSIVE_MATCH3),
rgba: new RegExp("rgba" + PERMISSIVE_MATCH4),
hsl: new RegExp("hsl" + PERMISSIVE_MATCH3),
hsla: new RegExp("hsla" + PERMISSIVE_MATCH4),
hsv: new RegExp("hsv" + PERMISSIVE_MATCH3),
hsva: new RegExp("hsva" + PERMISSIVE_MATCH4),
hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,
hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/
};
function stringInputToObject(color) {
color = color.trim().toLowerCase();
if (color.length === 0) {
return false;
}
var named = false;
if (names[color]) {
color = names[color];
named = true;
} else if (color === "transparent") {
return { r: 0, g: 0, b: 0, a: 0, format: "name" };
}
var match2 = matchers.rgb.exec(color);
if (match2) {
return { r: match2[1], g: match2[2], b: match2[3] };
}
match2 = matchers.rgba.exec(color);
if (match2) {
return { r: match2[1], g: match2[2], b: match2[3], a: match2[4] };
}
match2 = matchers.hsl.exec(color);
if (match2) {
return { h: match2[1], s: match2[2], l: match2[3] };
}
match2 = matchers.hsla.exec(color);
if (match2) {
return { h: match2[1], s: match2[2], l: match2[3], a: match2[4] };
}
match2 = matchers.hsv.exec(color);
if (match2) {
return { h: match2[1], s: match2[2], v: match2[3] };
}
match2 = matchers.hsva.exec(color);
if (match2) {
return { h: match2[1], s: match2[2], v: match2[3], a: match2[4] };
}
match2 = matchers.hex8.exec(color);
if (match2) {
return {
r: parseIntFromHex(match2[1]),
g: parseIntFromHex(match2[2]),
b: parseIntFromHex(match2[3]),
a: convertHexToDecimal(match2[4]),
format: named ? "name" : "hex8"
};
}
match2 = matchers.hex6.exec(color);
if (match2) {
return {
r: parseIntFromHex(match2[1]),
g: parseIntFromHex(match2[2]),
b: parseIntFromHex(match2[3]),
format: named ? "name" : "hex"
};
}
match2 = matchers.hex4.exec(color);
if (match2) {
return {
r: parseIntFromHex(match2[1] + match2[1]),
g: parseIntFromHex(match2[2] + match2[2]),
b: parseIntFromHex(match2[3] + match2[3]),
a: convertHexToDecimal(match2[4] + match2[4]),
format: named ? "name" : "hex8"
};
}
match2 = matchers.hex3.exec(color);
if (match2) {
return {
r: parseIntFromHex(match2[1] + match2[1]),
g: parseIntFromHex(match2[2] + match2[2]),
b: parseIntFromHex(match2[3] + match2[3]),
format: named ? "name" : "hex"
};
}
return false;
}
function isValidCSSUnit(color) {
return Boolean(matchers.CSS_UNIT.exec(String(color)));
}
var TinyColor = (
/** @class */
function() {
function TinyColor2(color, opts) {
if (color === void 0) {
color = "";
}
if (opts === void 0) {
opts = {};
}
var _a2;
if (color instanceof TinyColor2) {
return color;
}
if (typeof color === "number") {
color = numberInputToObject(color);
}
this.originalInput = color;
var rgb = inputToRGB(color);
this.originalInput = color;
this.r = rgb.r;
this.g = rgb.g;
this.b = rgb.b;
this.a = rgb.a;
this.roundA = Math.round(100 * this.a) / 100;
this.format = (_a2 = opts.format) !== null && _a2 !== void 0 ? _a2 : rgb.format;
this.gradientType = opts.gradientType;
if (this.r < 1) {
this.r = Math.round(this.r);
}
if (this.g < 1) {
this.g = Math.round(this.g);
}
if (this.b < 1) {
this.b = Math.round(this.b);
}
this.isValid = rgb.ok;
}
TinyColor2.prototype.isDark = function() {
return this.getBrightness() < 128;
};
TinyColor2.prototype.isLight = function() {
return !this.isDark();
};
TinyColor2.prototype.getBrightness = function() {
var rgb = this.toRgb();
return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1e3;
};
TinyColor2.prototype.getLuminance = function() {
var rgb = this.toRgb();
var R;
var G;
var B;
var RsRGB = rgb.r / 255;
var GsRGB = rgb.g / 255;
var BsRGB = rgb.b / 255;
if (RsRGB <= 0.03928) {
R = RsRGB / 12.92;
} else {
R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);
}
if (GsRGB <= 0.03928) {
G = GsRGB / 12.92;
} else {
G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);
}
if (BsRGB <= 0.03928) {
B = BsRGB / 12.92;
} else {
B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);
}
return 0.2126 * R + 0.7152 * G + 0.0722 * B;
};
TinyColor2.prototype.getAlpha = function() {
return this.a;
};
TinyColor2.prototype.setAlpha = function(alpha) {
this.a = boundAlpha(alpha);
this.roundA = Math.round(100 * this.a) / 100;
return this;
};
TinyColor2.prototype.isMonochrome = function() {
var s = this.toHsl().s;
return s === 0;
};
TinyColor2.prototype.toHsv = function() {
var hsv = rgbToHsv(this.r, this.g, this.b);
return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this.a };
};
TinyColor2.prototype.toHsvString = function() {
var hsv = rgbToHsv(this.r, this.g, this.b);
var h2 = Math.round(hsv.h * 360);
var s = Math.round(hsv.s * 100);
var v2 = Math.round(hsv.v * 100);
return this.a === 1 ? "hsv(".concat(h2, ", ").concat(s, "%, ").concat(v2, "%)") : "hsva(".concat(h2, ", ").concat(s, "%, ").concat(v2, "%, ").concat(this.roundA, ")");
};
TinyColor2.prototype.toHsl = function() {
var hsl = rgbToHsl(this.r, this.g, this.b);
return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this.a };
};
TinyColor2.prototype.toHslString = function() {
var hsl = rgbToHsl(this.r, this.g, this.b);
var h2 = Math.round(hsl.h * 360);
var s = Math.round(hsl.s * 100);
var l2 = Math.round(hsl.l * 100);
return this.a === 1 ? "hsl(".concat(h2, ", ").concat(s, "%, ").concat(l2, "%)") : "hsla(".concat(h2, ", ").concat(s, "%, ").concat(l2, "%, ").concat(this.roundA, ")");
};
TinyColor2.prototype.toHex = function(allow3Char) {
if (allow3Char === void 0) {
allow3Char = false;
}
return rgbToHex(this.r, this.g, this.b, allow3Char);
};
TinyColor2.prototype.toHexString = function(allow3Char) {
if (allow3Char === void 0) {
allow3Char = false;
}
return "#" + this.toHex(allow3Char);
};
TinyColor2.prototype.toHex8 = function(allow4Char) {
if (allow4Char === void 0) {
allow4Char = false;
}
return rgbaToHex(this.r, this.g, this.b, this.a, allow4Char);
};
TinyColor2.prototype.toHex8String = function(allow4Char) {
if (allow4Char === void 0) {
allow4Char = false;
}
return "#" + this.toHex8(allow4Char);
};
TinyColor2.prototype.toHexShortString = function(allowShortChar) {
if (allowShortChar === void 0) {
allowShortChar = false;
}
return this.a === 1 ? this.toHexString(allowShortChar) : this.toHex8String(allowShortChar);
};
TinyColor2.prototype.toRgb = function() {
return {
r: Math.round(this.r),
g: Math.round(this.g),
b: Math.round(this.b),
a: this.a
};
};
TinyColor2.prototype.toRgbString = function() {
var r = Math.round(this.r);
var g2 = Math.round(this.g);
var b2 = Math.round(this.b);
return this.a === 1 ? "rgb(".concat(r, ", ").concat(g2, ", ").concat(b2, ")") : "rgba(".concat(r, ", ").concat(g2, ", ").concat(b2, ", ").concat(this.roundA, ")");
};
TinyColor2.prototype.toPercentageRgb = function() {
var fmt = function(x) {
return "".concat(Math.round(bound01(x, 255) * 100), "%");
};
return {
r: fmt(this.r),
g: fmt(this.g),
b: fmt(this.b),
a: this.a
};
};
TinyColor2.prototype.toPercentageRgbString = function() {
var rnd = function(x) {
return Math.round(bound01(x, 255) * 100);
};
return this.a === 1 ? "rgb(".concat(rnd(this.r), "%, ").concat(rnd(this.g), "%, ").concat(rnd(this.b), "%)") : "rgba(".concat(rnd(this.r), "%, ").concat(rnd(this.g), "%, ").concat(rnd(this.b), "%, ").concat(this.roundA, ")");
};
TinyColor2.prototype.toName = function() {
if (this.a === 0) {
return "transparent";
}
if (this.a < 1) {
return false;
}
var hex2 = "#" + rgbToHex(this.r, this.g, this.b, false);
for (var _i = 0, _a2 = Object.entries(names); _i < _a2.length; _i++) {
var _b = _a2[_i], key = _b[0], value = _b[1];
if (hex2 === value) {
return key;
}
}
return false;
};
TinyColor2.prototype.toString = function(format2) {
var formatSet = Boolean(format2);
format2 = format2 !== null && format2 !== void 0 ? format2 : this.format;
var formattedString = false;
var hasAlpha = this.a < 1 && this.a >= 0;
var needsAlphaFormat = !formatSet && hasAlpha && (format2.startsWith("hex") || format2 === "name");
if (needsAlphaFormat) {
if (format2 === "name" && this.a === 0) {
return this.toName();
}
return this.toRgbString();
}
if (format2 === "rgb") {
formattedString = this.toRgbString();
}
if (format2 === "prgb") {
formattedString = this.toPercentageRgbString();
}
if (format2 === "hex" || format2 === "hex6") {
formattedString = this.toHexString();
}
if (format2 === "hex3") {
formattedString = this.toHexString(true);
}
if (format2 === "hex4") {
formattedString = this.toHex8String(true);
}
if (format2 === "hex8") {
formattedString = this.toHex8String();
}
if (format2 === "name") {
formattedString = this.toName();
}
if (format2 === "hsl") {
formattedString = this.toHslString();
}
if (format2 === "hsv") {
formattedString = this.toHsvString();
}
return formattedString || this.toHexString();
};
TinyColor2.prototype.toNumber = function() {
return (Math.round(this.r) << 16) + (Math.round(this.g) << 8) + Math.round(this.b);
};
TinyColor2.prototype.clone = function() {
return new TinyColor2(this.toString());
};
TinyColor2.prototype.lighten = function(amount) {
if (amount === void 0) {
amount = 10;
}
var hsl = this.toHsl();
hsl.l += amount / 100;
hsl.l = clamp01(hsl.l);
return new TinyColor2(hsl);
};
TinyColor2.prototype.brighten = function(amount) {
if (amount === void 0) {
amount = 10;
}
var rgb = this.toRgb();
rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));
rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));
rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));
return new TinyColor2(rgb);
};
TinyColor2.prototype.darken = function(amount) {
if (amount === void 0) {
amount = 10;
}
var hsl = this.toHsl();
hsl.l -= amount / 100;
hsl.l = clamp01(hsl.l);
return new TinyColor2(hsl);
};
TinyColor2.prototype.tint = function(amount) {
if (amount === void 0) {
amount = 10;
}
return this.mix("white", amount);
};
TinyColor2.prototype.shade = function(amount) {
if (amount === void 0) {
amount = 10;
}
return this.mix("black", amount);
};
TinyColor2.prototype.desaturate = function(amount) {
if (amount === void 0) {
amount = 10;
}
var hsl = this.toHsl();
hsl.s -= amount / 100;
hsl.s = clamp01(hsl.s);
return new TinyColor2(hsl);
};
TinyColor2.prototype.saturate = function(amount) {
if (amount === void 0) {
amount = 10;
}
var hsl = this.toHsl();
hsl.s += amount / 100;
hsl.s = clamp01(hsl.s);
return new TinyColor2(hsl);
};
TinyColor2.prototype.greyscale = function() {
return this.desaturate(100);
};
TinyColor2.prototype.spin = function(amount) {
var hsl = this.toHsl();
var hue = (hsl.h + amount) % 360;
hsl.h = hue < 0 ? 360 + hue : hue;
return new TinyColor2(hsl);
};
TinyColor2.prototype.mix = function(color, amount) {
if (amount === void 0) {
amount = 50;
}
var rgb1 = this.toRgb();
var rgb2 = new TinyColor2(color).toRgb();
var p2 = amount / 100;
var rgba = {
r: (rgb2.r - rgb1.r) * p2 + rgb1.r,
g: (rgb2.g - rgb1.g) * p2 + rgb1.g,
b: (rgb2.b - rgb1.b) * p2 + rgb1.b,
a: (rgb2.a - rgb1.a) * p2 + rgb1.a
};
return new TinyColor2(rgba);
};
TinyColor2.prototype.analogous = function(results, slices) {
if (results === void 0) {
results = 6;
}
if (slices === void 0) {
slices = 30;
}
var hsl = this.toHsl();
var part = 360 / slices;
var ret = [this];
for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results; ) {
hsl.h = (hsl.h + part) % 360;
ret.push(new TinyColor2(hsl));
}
return ret;
};
TinyColor2.prototype.complement = function() {
var hsl = this.toHsl();
hsl.h = (hsl.h + 180) % 360;
return new TinyColor2(hsl);
};
TinyColor2.prototype.monochromatic = function(results) {
if (results === void 0) {
results = 6;
}
var hsv = this.toHsv();
var h2 = hsv.h;
var s = hsv.s;
var v2 = hsv.v;
var res = [];
var modification = 1 / results;
while (results--) {
res.push(new TinyColor2({ h: h2, s, v: v2 }));
v2 = (v2 + modification) % 1;
}
return res;
};
TinyColor2.prototype.splitcomplement = function() {
var hsl = this.toHsl();
var h2 = hsl.h;
return [
this,
new TinyColor2({ h: (h2 + 72) % 360, s: hsl.s, l: hsl.l }),
new TinyColor2({ h: (h2 + 216) % 360, s: hsl.s, l: hsl.l })
];
};
TinyColor2.prototype.onBackground = function(background) {
var fg = this.toRgb();
var bg = new TinyColor2(background).toRgb();
var alpha = fg.a + bg.a * (1 - fg.a);
return new TinyColor2({
r: (fg.r * fg.a + bg.r * bg.a * (1 - fg.a)) / alpha,
g: (fg.g * fg.a + bg.g * bg.a * (1 - fg.a)) / alpha,
b: (fg.b * fg.a + bg.b * bg.a * (1 - fg.a)) / alpha,
a: alpha
});
};
TinyColor2.prototype.triad = function() {
return this.polyad(3);
};
TinyColor2.prototype.tetrad = function() {
return this.polyad(4);
};
TinyColor2.prototype.polyad = function(n2) {
var hsl = this.toHsl();
var h2 = hsl.h;
var result = [this];
var increment = 360 / n2;
for (var i = 1; i < n2; i++) {
result.push(new TinyColor2({ h: (h2 + i * increment) % 360, s: hsl.s, l: hsl.l }));
}
return result;
};
TinyColor2.prototype.equals = function(color) {
return this.toRgbString() === new TinyColor2(color).toRgbString();
};
return TinyColor2;
}()
);
var hueStep = 2;
var saturationStep = 0.16;
var saturationStep2 = 0.05;
var brightnessStep1 = 0.05;
var brightnessStep2 = 0.15;
var lightColorCount = 5;
var darkColorCount = 4;
var darkColorMap = [{
index: 7,
opacity: 0.15
}, {
index: 6,
opacity: 0.25
}, {
index: 5,
opacity: 0.3
}, {
index: 5,
opacity: 0.45
}, {
index: 5,
opacity: 0.65
}, {
index: 5,
opacity: 0.85
}, {
index: 4,
opacity: 0.9
}, {
index: 3,
opacity: 0.95
}, {
index: 2,
opacity: 0.97
}, {
index: 1,
opacity: 0.98
}];
function toHsv(_ref) {
var r = _ref.r, g2 = _ref.g, b2 = _ref.b;
var hsv = rgbToHsv(r, g2, b2);
return {
h: hsv.h * 360,
s: hsv.s,
v: hsv.v
};
}
function toHex(_ref2) {
var r = _ref2.r, g2 = _ref2.g, b2 = _ref2.b;
return "#".concat(rgbToHex(r, g2, b2, false));
}
function mix(rgb1, rgb2, amount) {
var p2 = amount / 100;
var rgb = {
r: (rgb2.r - rgb1.r) * p2 + rgb1.r,
g: (rgb2.g - rgb1.g) * p2 + rgb1.g,
b: (rgb2.b - rgb1.b) * p2 + rgb1.b
};
return rgb;
}
function getHue(hsv, i, light) {
var hue;
if (Math.round(hsv.h) >= 60 && Math.round(hsv.h) <= 240) {
hue = light ? Math.round(hsv.h) - hueStep * i : Math.round(hsv.h) + hueStep * i;
} else {
hue = light ? Math.round(hsv.h) + hueStep * i : Math.round(hsv.h) - hueStep * i;
}
if (hue < 0) {
hue += 360;
} else if (hue >= 360) {
hue -= 360;
}
return hue;
}
function getSaturation(hsv, i, light) {
if (hsv.h === 0 && hsv.s === 0) {
return hsv.s;
}
var saturation;
if (light) {
saturation = hsv.s - saturationStep * i;
} else if (i === darkColorCount) {
saturation = hsv.s + saturationStep;
} else {
saturation = hsv.s + saturationStep2 * i;
}
if (saturation > 1) {
saturation = 1;
}
if (light && i === lightColorCount && saturation > 0.1) {
saturation = 0.1;
}
if (saturation < 0.06) {
saturation = 0.06;
}
return Number(saturation.toFixed(2));
}
function getValue$1(hsv, i, light) {
var value;
if (light) {
value = hsv.v + brightnessStep1 * i;
} else {
value = hsv.v - brightnessStep2 * i;
}
if (value > 1) {
value = 1;
}
return Number(value.toFixed(2));
}
function generate$1(color) {
var opts = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
var patterns = [];
var pColor = inputToRGB(color);
for (var i = lightColorCount; i > 0; i -= 1) {
var hsv = toHsv(pColor);
var colorString = toHex(inputToRGB({
h: getHue(hsv, i, true),
s: getSaturation(hsv, i, true),
v: getValue$1(hsv, i, true)
}));
patterns.push(colorString);
}
patterns.push(toHex(pColor));
for (var _i = 1; _i <= darkColorCount; _i += 1) {
var _hsv = toHsv(pColor);
var _colorString = toHex(inputToRGB({
h: getHue(_hsv, _i),
s: getSaturation(_hsv, _i),
v: getValue$1(_hsv, _i)
}));
patterns.push(_colorString);
}
if (opts.theme === "dark") {
return darkColorMap.map(function(_ref3) {
var index2 = _ref3.index, opacity = _ref3.opacity;
var darkColorString = toHex(mix(inputToRGB(opts.backgroundColor || "#141414"), inputToRGB(patterns[index2]), opacity * 100));
return darkColorString;
});
}
return patterns;
}
var presetPrimaryColors = {
red: "#F5222D",
volcano: "#FA541C",
orange: "#FA8C16",
gold: "#FAAD14",
yellow: "#FADB14",
lime: "#A0D911",
green: "#52C41A",
cyan: "#13C2C2",
blue: "#1677FF",
geekblue: "#2F54EB",
purple: "#722ED1",
magenta: "#EB2F96",
grey: "#666666"
};
var presetPalettes = {};
var presetDarkPalettes = {};
Object.keys(presetPrimaryColors).forEach(function(key) {
presetPalettes[key] = generate$1(presetPrimaryColors[key]);
presetPalettes[key].primary = presetPalettes[key][5];
presetDarkPalettes[key] = generate$1(presetPrimaryColors[key], {
theme: "dark",
backgroundColor: "#141414"
});
presetDarkPalettes[key].primary = presetDarkPalettes[key][5];
});
var blue = presetPalettes.blue;
const genControlHeight = (token2) => {
const {
controlHeight
} = token2;
return {
controlHeightSM: controlHeight * 0.75,
controlHeightXS: controlHeight * 0.5,
controlHeightLG: controlHeight * 1.25
};
};
const genControlHeight$1 = genControlHeight;
function genSizeMapToken(token2) {
const {
sizeUnit,
sizeStep
} = token2;
return {
sizeXXL: sizeUnit * (sizeStep + 8),
// 48
sizeXL: sizeUnit * (sizeStep + 4),
// 32
sizeLG: sizeUnit * (sizeStep + 2),
// 24
sizeMD: sizeUnit * (sizeStep + 1),
// 20
sizeMS: sizeUnit * sizeStep,
// 16
size: sizeUnit * sizeStep,
// 16
sizeSM: sizeUnit * (sizeStep - 1),
// 12
sizeXS: sizeUnit * (sizeStep - 2),
// 8
sizeXXS: sizeUnit * (sizeStep - 3)
// 4
};
}
const defaultPresetColors = {
blue: "#1677ff",
purple: "#722ED1",
cyan: "#13C2C2",
green: "#52C41A",
magenta: "#EB2F96",
pink: "#eb2f96",
red: "#F5222D",
orange: "#FA8C16",
yellow: "#FADB14",
volcano: "#FA541C",
geekblue: "#2F54EB",
gold: "#FAAD14",
lime: "#A0D911"
};
const seedToken = Object.assign(Object.assign({}, defaultPresetColors), {
// Color
colorPrimary: "#1677ff",
colorSuccess: "#52c41a",
colorWarning: "#faad14",
colorError: "#ff4d4f",
colorInfo: "#1677ff",
colorLink: "",
colorTextBase: "",
colorBgBase: "",
// Font
fontFamily: `-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,
'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',
'Noto Color Emoji'`,
fontFamilyCode: `'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace`,
fontSize: 14,
// Line
lineWidth: 1,
lineType: "solid",
// Motion
motionUnit: 0.1,
motionBase: 0,
motionEaseOutCirc: "cubic-bezier(0.08, 0.82, 0.17, 1)",
motionEaseInOutCirc: "cubic-bezier(0.78, 0.14, 0.15, 0.86)",
motionEaseOut: "cubic-bezier(0.215, 0.61, 0.355, 1)",
motionEaseInOut: "cubic-bezier(0.645, 0.045, 0.355, 1)",
motionEaseOutBack: "cubic-bezier(0.12, 0.4, 0.29, 1.46)",
motionEaseInBack: "cubic-bezier(0.71, -0.46, 0.88, 0.6)",
motionEaseInQuint: "cubic-bezier(0.755, 0.05, 0.855, 0.06)",
motionEaseOutQuint: "cubic-bezier(0.23, 1, 0.32, 1)",
// Radius
borderRadius: 6,
// Size
sizeUnit: 4,
sizeStep: 4,
sizePopupArrow: 16,
// Control Base
controlHeight: 32,
// zIndex
zIndexBase: 0,
zIndexPopupBase: 1e3,
// Image
opacityImage: 1,
// Wireframe
wireframe: false,
// Motion
motion: true
});
const seedToken$1 = seedToken;
function genColorMapToken(seed, _ref) {
let {
generateColorPalettes: generateColorPalettes2,
generateNeutralColorPalettes: generateNeutralColorPalettes2
} = _ref;
const {
colorSuccess: colorSuccessBase,
colorWarning: colorWarningBase,
colorError: colorErrorBase,
colorInfo: colorInfoBase,
colorPrimary: colorPrimaryBase,
colorBgBase,
colorTextBase
} = seed;
const primaryColors = generateColorPalettes2(colorPrimaryBase);
const successColors = generateColorPalettes2(colorSuccessBase);
const warningColors = generateColorPalettes2(colorWarningBase);
const errorColors = generateColorPalettes2(colorErrorBase);
const infoColors = generateColorPalettes2(colorInfoBase);
const neutralColors = generateNeutralColorPalettes2(colorBgBase, colorTextBase);
const colorLink = seed.colorLink || seed.colorInfo;
const linkColors = generateColorPalettes2(colorLink);
return Object.assign(Object.assign({}, neutralColors), {
colorPrimaryBg: primaryColors[1],
colorPrimaryBgHover: primaryColors[2],
colorPrimaryBorder: primaryColors[3],
colorPrimaryBorderHover: primaryColors[4],
colorPrimaryHover: primaryColors[5],
colorPrimary: primaryColors[6],
colorPrimaryActive: primaryColors[7],
colorPrimaryTextHover: primaryColors[8],
colorPrimaryText: primaryColors[9],
colorPrimaryTextActive: primaryColors[10],
colorSuccessBg: successColors[1],
colorSuccessBgHover: successColors[2],
colorSuccessBorder: successColors[3],
colorSuccessBorderHover: successColors[4],
colorSuccessHover: successColors[4],
colorSuccess: successColors[6],
colorSuccessActive: successColors[7],
colorSuccessTextHover: successColors[8],
colorSuccessText: successColors[9],
colorSuccessTextActive: successColors[10],
colorErrorBg: errorColors[1],
colorErrorBgHover: errorColors[2],
colorErrorBorder: errorColors[3],
colorErrorBorderHover: errorColors[4],
colorErrorHover: errorColors[5],
colorError: errorColors[6],
colorErrorActive: errorColors[7],
colorErrorTextHover: errorColors[8],
colorErrorText: errorColors[9],
colorErrorTextActive: errorColors[10],
colorWarningBg: warningColors[1],
colorWarningBgHover: warningColors[2],
colorWarningBorder: warningColors[3],
colorWarningBorderHover: warningColors[4],
colorWarningHover: warningColors[4],
colorWarning: warningColors[6],
colorWarningActive: warningColors[7],
colorWarningTextHover: warningColors[8],
colorWarningText: warningColors[9],
colorWarningTextActive: warningColors[10],
colorInfoBg: infoColors[1],
colorInfoBgHover: infoColors[2],
colorInfoBorder: infoColors[3],
colorInfoBorderHover: infoColors[4],
colorInfoHover: infoColors[4],
colorInfo: infoColors[6],
colorInfoActive: infoColors[7],
colorInfoTextHover: infoColors[8],
colorInfoText: infoColors[9],
colorInfoTextActive: infoColors[10],
colorLinkHover: linkColors[4],
colorLink: linkColors[6],
colorLinkActive: linkColors[7],
colorBgMask: new TinyColor("#000").setAlpha(0.45).toRgbString(),
colorWhite: "#fff"
});
}
const genRadius = (radiusBase) => {
let radiusLG = radiusBase;
let radiusSM = radiusBase;
let radiusXS = radiusBase;
let radiusOuter = radiusBase;
if (radiusBase < 6 && radiusBase >= 5) {
radiusLG = radiusBase + 1;
} else if (radiusBase < 16 && radiusBase >= 6) {
radiusLG = radiusBase + 2;
} else if (radiusBase >= 16) {
radiusLG = 16;
}
if (radiusBase < 7 && radiusBase >= 5) {
radiusSM = 4;
} else if (radiusBase < 8 && radiusBase >= 7) {
radiusSM = 5;
} else if (radiusBase < 14 && radiusBase >= 8) {
radiusSM = 6;
} else if (radiusBase < 16 && radiusBase >= 14) {
radiusSM = 7;
} else if (radiusBase >= 16) {
radiusSM = 8;
}
if (radiusBase < 6 && radiusBase >= 2) {
radiusXS = 1;
} else if (radiusBase >= 6) {
radiusXS = 2;
}
if (radiusBase > 4 && radiusBase < 8) {
radiusOuter = 4;
} else if (radiusBase >= 8) {
radiusOuter = 6;
}
return {
borderRadius: radiusBase,
borderRadiusXS: radiusXS,
borderRadiusSM: radiusSM,
borderRadiusLG: radiusLG,
borderRadiusOuter: radiusOuter
};
};
const genRadius$1 = genRadius;
function genCommonMapToken(token2) {
const {
motionUnit,
motionBase,
borderRadius,
lineWidth
} = token2;
return Object.assign({
// motion
motionDurationFast: `${(motionBase + motionUnit).toFixed(1)}s`,
motionDurationMid: `${(motionBase + motionUnit * 2).toFixed(1)}s`,
motionDurationSlow: `${(motionBase + motionUnit * 3).toFixed(1)}s`,
// line
lineWidthBold: lineWidth + 1
}, genRadius$1(borderRadius));
}
const getAlphaColor$1 = (baseColor, alpha) => new TinyColor(baseColor).setAlpha(alpha).toRgbString();
const getSolidColor = (baseColor, brightness) => {
const instance = new TinyColor(baseColor);
return instance.darken(brightness).toHexString();
};
const generateColorPalettes = (baseColor) => {
const colors = generate$1(baseColor);
return {
1: colors[0],
2: colors[1],
3: colors[2],
4: colors[3],
5: colors[4],
6: colors[5],
7: colors[6],
8: colors[4],
9: colors[5],
10: colors[6]
// 8: colors[7],
// 9: colors[8],
// 10: colors[9],
};
};
const generateNeutralColorPalettes = (bgBaseColor, textBaseColor) => {
const colorBgBase = bgBaseColor || "#fff";
const colorTextBase = textBaseColor || "#000";
return {
colorBgBase,
colorTextBase,
colorText: getAlphaColor$1(colorTextBase, 0.88),
colorTextSecondary: getAlphaColor$1(colorTextBase, 0.65),
colorTextTertiary: getAlphaColor$1(colorTextBase, 0.45),
colorTextQuaternary: getAlphaColor$1(colorTextBase, 0.25),
colorFill: getAlphaColor$1(colorTextBase, 0.15),
colorFillSecondary: getAlphaColor$1(colorTextBase, 0.06),
colorFillTertiary: getAlphaColor$1(colorTextBase, 0.04),
colorFillQuaternary: getAlphaColor$1(colorTextBase, 0.02),
colorBgLayout: getSolidColor(colorBgBase, 4),
colorBgContainer: getSolidColor(colorBgBase, 0),
colorBgElevated: getSolidColor(colorBgBase, 0),
colorBgSpotlight: getAlphaColor$1(colorTextBase, 0.85),
colorBgBlur: "transparent",
colorBorder: getSolidColor(colorBgBase, 15),
colorBorderSecondary: getSolidColor(colorBgBase, 6)
};
};
function getFontSizes(base) {
const fontSizes = new Array(10).fill(null).map((_, index2) => {
const i = index2 - 1;
const baseSize = base * Math.pow(2.71828, i / 5);
const intSize = index2 > 1 ? Math.floor(baseSize) : Math.ceil(baseSize);
return Math.floor(intSize / 2) * 2;
});
fontSizes[1] = base;
return fontSizes.map((size) => {
const height = size + 8;
return {
size,
lineHeight: height / size
};
});
}
const genFontMapToken = (fontSize) => {
const fontSizePairs = getFontSizes(fontSize);
const fontSizes = fontSizePairs.map((pair) => pair.size);
const lineHeights = fontSizePairs.map((pair) => pair.lineHeight);
const fontSizeMD = fontSizes[1];
const fontSizeSM = fontSizes[0];
const fontSizeLG = fontSizes[2];
const lineHeight = lineHeights[1];
const lineHeightSM = lineHeights[0];
const lineHeightLG = lineHeights[2];
return {
fontSizeSM,
fontSize: fontSizeMD,
fontSizeLG,
fontSizeXL: fontSizes[3],
fontSizeHeading1: fontSizes[6],
fontSizeHeading2: fontSizes[5],
fontSizeHeading3: fontSizes[4],
fontSizeHeading4: fontSizes[3],
fontSizeHeading5: fontSizes[2],
lineHeight,
lineHeightLG,
lineHeightSM,
fontHeight: Math.round(lineHeight * fontSizeMD),
fontHeightLG: Math.round(lineHeightLG * fontSizeLG),
fontHeightSM: Math.round(lineHeightSM * fontSizeSM),
lineHeightHeading1: lineHeights[6],
lineHeightHeading2: lineHeights[5],
lineHeightHeading3: lineHeights[4],
lineHeightHeading4: lineHeights[3],
lineHeightHeading5: lineHeights[2]
};
};
const genFontMapToken$1 = genFontMapToken;
function derivative(token2) {
const colorPalettes = Object.keys(defaultPresetColors).map((colorKey) => {
const colors = generate$1(token2[colorKey]);
return new Array(10).fill(1).reduce((prev2, _, i) => {
prev2[`${colorKey}-${i + 1}`] = colors[i];
prev2[`${colorKey}${i + 1}`] = colors[i];
return prev2;
}, {});
}).reduce((prev2, cur) => {
prev2 = Object.assign(Object.assign({}, prev2), cur);
return prev2;
}, {});
return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, token2), colorPalettes), genColorMapToken(token2, {
generateColorPalettes,
generateNeutralColorPalettes
})), genFontMapToken$1(token2.fontSize)), genSizeMapToken(token2)), genControlHeight$1(token2)), genCommonMapToken(token2));
}
const defaultTheme = createTheme(derivative);
const defaultConfig = {
token: seedToken$1,
override: {
override: seedToken$1
},
hashed: true
};
const DesignTokenContext = /* @__PURE__ */ React.createContext(defaultConfig);
const defaultIconPrefixCls = "anticon";
const defaultGetPrefixCls = (suffixCls, customizePrefixCls) => {
if (customizePrefixCls) {
return customizePrefixCls;
}
return suffixCls ? `ant-${suffixCls}` : "ant";
};
const ConfigContext = /* @__PURE__ */ React__namespace.createContext({
// We provide a default function for Context without provider
getPrefixCls: defaultGetPrefixCls,
iconPrefixCls: defaultIconPrefixCls
});
const dynamicStyleMark = `-ant-${Date.now()}-${Math.random()}`;
function getStyle(globalPrefixCls2, theme) {
const variables = {};
const formatColor = (color, updater) => {
let clone = color.clone();
clone = (updater === null || updater === void 0 ? void 0 : updater(clone)) || clone;
return clone.toRgbString();
};
const fillColor = (colorVal, type4) => {
const baseColor = new TinyColor(colorVal);
const colorPalettes = generate$1(baseColor.toRgbString());
variables[`${type4}-color`] = formatColor(baseColor);
variables[`${type4}-color-disabled`] = colorPalettes[1];
variables[`${type4}-color-hover`] = colorPalettes[4];
variables[`${type4}-color-active`] = colorPalettes[6];
variables[`${type4}-color-outline`] = baseColor.clone().setAlpha(0.2).toRgbString();
variables[`${type4}-color-deprecated-bg`] = colorPalettes[0];
variables[`${type4}-color-deprecated-border`] = colorPalettes[2];
};
if (theme.primaryColor) {
fillColor(theme.primaryColor, "primary");
const primaryColor = new TinyColor(theme.primaryColor);
const primaryColors = generate$1(primaryColor.toRgbString());
primaryColors.forEach((color, index2) => {
variables[`primary-${index2 + 1}`] = color;
});
variables["primary-color-deprecated-l-35"] = formatColor(primaryColor, (c2) => c2.lighten(35));
variables["primary-color-deprecated-l-20"] = formatColor(primaryColor, (c2) => c2.lighten(20));
variables["primary-color-deprecated-t-20"] = formatColor(primaryColor, (c2) => c2.tint(20));
variables["primary-color-deprecated-t-50"] = formatColor(primaryColor, (c2) => c2.tint(50));
variables["primary-color-deprecated-f-12"] = formatColor(primaryColor, (c2) => c2.setAlpha(c2.getAlpha() * 0.12));
const primaryActiveColor = new TinyColor(primaryColors[0]);
variables["primary-color-active-deprecated-f-30"] = formatColor(primaryActiveColor, (c2) => c2.setAlpha(c2.getAlpha() * 0.3));
variables["primary-color-active-deprecated-d-02"] = formatColor(primaryActiveColor, (c2) => c2.darken(2));
}
if (theme.successColor) {
fillColor(theme.successColor, "success");
}
if (theme.warningColor) {
fillColor(theme.warningColor, "warning");
}
if (theme.errorColor) {
fillColor(theme.errorColor, "error");
}
if (theme.infoColor) {
fillColor(theme.infoColor, "info");
}
const cssList = Object.keys(variables).map((key) => `--${globalPrefixCls2}-${key}: ${variables[key]};`);
return `
:root {
${cssList.join("\n")}
}
`.trim();
}
function registerTheme(globalPrefixCls2, theme) {
const style2 = getStyle(globalPrefixCls2, theme);
if (canUseDom()) {
updateCSS(style2, `${dynamicStyleMark}-dynamic-theme`);
}
}
const DisabledContext = /* @__PURE__ */ React__namespace.createContext(false);
const DisabledContextProvider = (_ref) => {
let {
children,
disabled
} = _ref;
const originDisabled = React__namespace.useContext(DisabledContext);
return /* @__PURE__ */ React__namespace.createElement(DisabledContext.Provider, {
value: disabled !== null && disabled !== void 0 ? disabled : originDisabled
}, children);
};
const DisabledContext$1 = DisabledContext;
const SizeContext = /* @__PURE__ */ React__namespace.createContext(void 0);
const SizeContextProvider = (_ref) => {
let {
children,
size
} = _ref;
const originSize = React__namespace.useContext(SizeContext);
return /* @__PURE__ */ React__namespace.createElement(SizeContext.Provider, {
value: size || originSize
}, children);
};
const SizeContext$1 = SizeContext;
function useConfig() {
const componentDisabled = React.useContext(DisabledContext$1);
const componentSize = React.useContext(SizeContext$1);
return {
componentDisabled,
componentSize
};
}
const version$1 = "5.12.5";
function isStableColor(color) {
return color >= 0 && color <= 255;
}
function getAlphaColor(frontColor, backgroundColor) {
const {
r: fR,
g: fG,
b: fB,
a: originAlpha
} = new TinyColor(frontColor).toRgb();
if (originAlpha < 1) {
return frontColor;
}
const {
r: bR,
g: bG,
b: bB
} = new TinyColor(backgroundColor).toRgb();
for (let fA = 0.01; fA <= 1; fA += 0.01) {
const r = Math.round((fR - bR * (1 - fA)) / fA);
const g2 = Math.round((fG - bG * (1 - fA)) / fA);
const b2 = Math.round((fB - bB * (1 - fA)) / fA);
if (isStableColor(r) && isStableColor(g2) && isStableColor(b2)) {
return new TinyColor({
r,
g: g2,
b: b2,
a: Math.round(fA * 100) / 100
}).toRgbString();
}
}
return new TinyColor({
r: fR,
g: fG,
b: fB,
a: 1
}).toRgbString();
}
var __rest$7 = globalThis && globalThis.__rest || function(s, e2) {
var t2 = {};
for (var p2 in s)
if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0)
t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i]))
t2[p2[i]] = s[p2[i]];
}
return t2;
};
function formatToken(derivativeToken) {
const {
override
} = derivativeToken, restToken = __rest$7(derivativeToken, ["override"]);
const overrideTokens = Object.assign({}, override);
Object.keys(seedToken$1).forEach((token2) => {
delete overrideTokens[token2];
});
const mergedToken = Object.assign(Object.assign({}, restToken), overrideTokens);
const screenXS = 480;
const screenSM = 576;
const screenMD = 768;
const screenLG = 992;
const screenXL = 1200;
const screenXXL = 1600;
if (mergedToken.motion === false) {
const fastDuration = "0s";
mergedToken.motionDurationFast = fastDuration;
mergedToken.motionDurationMid = fastDuration;
mergedToken.motionDurationSlow = fastDuration;
}
const aliasToken = Object.assign(Object.assign(Object.assign({}, mergedToken), {
// ============== Background ============== //
colorFillContent: mergedToken.colorFillSecondary,
colorFillContentHover: mergedToken.colorFill,
colorFillAlter: mergedToken.colorFillQuaternary,
colorBgContainerDisabled: mergedToken.colorFillTertiary,
// ============== Split ============== //
colorBorderBg: mergedToken.colorBgContainer,
colorSplit: getAlphaColor(mergedToken.colorBorderSecondary, mergedToken.colorBgContainer),
// ============== Text ============== //
colorTextPlaceholder: mergedToken.colorTextQuaternary,
colorTextDisabled: mergedToken.colorTextQuaternary,
colorTextHeading: mergedToken.colorText,
colorTextLabel: mergedToken.colorTextSecondary,
colorTextDescription: mergedToken.colorTextTertiary,
colorTextLightSolid: mergedToken.colorWhite,
colorHighlight: mergedToken.colorError,
colorBgTextHover: mergedToken.colorFillSecondary,
colorBgTextActive: mergedToken.colorFill,
colorIcon: mergedToken.colorTextTertiary,
colorIconHover: mergedToken.colorText,
colorErrorOutline: getAlphaColor(mergedToken.colorErrorBg, mergedToken.colorBgContainer),
colorWarningOutline: getAlphaColor(mergedToken.colorWarningBg, mergedToken.colorBgContainer),
// Font
fontSizeIcon: mergedToken.fontSizeSM,
// Line
lineWidthFocus: mergedToken.lineWidth * 4,
// Control
lineWidth: mergedToken.lineWidth,
controlOutlineWidth: mergedToken.lineWidth * 2,
// Checkbox size and expand icon size
controlInteractiveSize: mergedToken.controlHeight / 2,
controlItemBgHover: mergedToken.colorFillTertiary,
controlItemBgActive: mergedToken.colorPrimaryBg,
controlItemBgActiveHover: mergedToken.colorPrimaryBgHover,
controlItemBgActiveDisabled: mergedToken.colorFill,
controlTmpOutline: mergedToken.colorFillQuaternary,
controlOutline: getAlphaColor(mergedToken.colorPrimaryBg, mergedToken.colorBgContainer),
lineType: mergedToken.lineType,
borderRadius: mergedToken.borderRadius,
borderRadiusXS: mergedToken.borderRadiusXS,
borderRadiusSM: mergedToken.borderRadiusSM,
borderRadiusLG: mergedToken.borderRadiusLG,
fontWeightStrong: 600,
opacityLoading: 0.65,
linkDecoration: "none",
linkHoverDecoration: "none",
linkFocusDecoration: "none",
controlPaddingHorizontal: 12,
controlPaddingHorizontalSM: 8,
paddingXXS: mergedToken.sizeXXS,
paddingXS: mergedToken.sizeXS,
paddingSM: mergedToken.sizeSM,
padding: mergedToken.size,
paddingMD: mergedToken.sizeMD,
paddingLG: mergedToken.sizeLG,
paddingXL: mergedToken.sizeXL,
paddingContentHorizontalLG: mergedToken.sizeLG,
paddingContentVerticalLG: mergedToken.sizeMS,
paddingContentHorizontal: mergedToken.sizeMS,
paddingContentVertical: mergedToken.sizeSM,
paddingContentHorizontalSM: mergedToken.size,
paddingContentVerticalSM: mergedToken.sizeXS,
marginXXS: mergedToken.sizeXXS,
marginXS: mergedToken.sizeXS,
marginSM: mergedToken.sizeSM,
margin: mergedToken.size,
marginMD: mergedToken.sizeMD,
marginLG: mergedToken.sizeLG,
marginXL: mergedToken.sizeXL,
marginXXL: mergedToken.sizeXXL,
boxShadow: `
0 6px 16px 0 rgba(0, 0, 0, 0.08),
0 3px 6px -4px rgba(0, 0, 0, 0.12),
0 9px 28px 8px rgba(0, 0, 0, 0.05)
`,
boxShadowSecondary: `
0 6px 16px 0 rgba(0, 0, 0, 0.08),
0 3px 6px -4px rgba(0, 0, 0, 0.12),
0 9px 28px 8px rgba(0, 0, 0, 0.05)
`,
boxShadowTertiary: `
0 1px 2px 0 rgba(0, 0, 0, 0.03),
0 1px 6px -1px rgba(0, 0, 0, 0.02),
0 2px 4px 0 rgba(0, 0, 0, 0.02)
`,
screenXS,
screenXSMin: screenXS,
screenXSMax: screenSM - 1,
screenSM,
screenSMMin: screenSM,
screenSMMax: screenMD - 1,
screenMD,
screenMDMin: screenMD,
screenMDMax: screenLG - 1,
screenLG,
screenLGMin: screenLG,
screenLGMax: screenXL - 1,
screenXL,
screenXLMin: screenXL,
screenXLMax: screenXXL - 1,
screenXXL,
screenXXLMin: screenXXL,
boxShadowPopoverArrow: "2px 2px 5px rgba(0, 0, 0, 0.05)",
boxShadowCard: `
0 1px 2px -2px ${new TinyColor("rgba(0, 0, 0, 0.16)").toRgbString()},
0 3px 6px 0 ${new TinyColor("rgba(0, 0, 0, 0.12)").toRgbString()},
0 5px 12px 4px ${new TinyColor("rgba(0, 0, 0, 0.09)").toRgbString()}
`,
boxShadowDrawerRight: `
-6px 0 16px 0 rgba(0, 0, 0, 0.08),
-3px 0 6px -4px rgba(0, 0, 0, 0.12),
-9px 0 28px 8px rgba(0, 0, 0, 0.05)
`,
boxShadowDrawerLeft: `
6px 0 16px 0 rgba(0, 0, 0, 0.08),
3px 0 6px -4px rgba(0, 0, 0, 0.12),
9px 0 28px 8px rgba(0, 0, 0, 0.05)
`,
boxShadowDrawerUp: `
0 6px 16px 0 rgba(0, 0, 0, 0.08),
0 3px 6px -4px rgba(0, 0, 0, 0.12),
0 9px 28px 8px rgba(0, 0, 0, 0.05)
`,
boxShadowDrawerDown: `
0 -6px 16px 0 rgba(0, 0, 0, 0.08),
0 -3px 6px -4px rgba(0, 0, 0, 0.12),
0 -9px 28px 8px rgba(0, 0, 0, 0.05)
`,
boxShadowTabsOverflowLeft: "inset 10px 0 8px -8px rgba(0, 0, 0, 0.08)",
boxShadowTabsOverflowRight: "inset -10px 0 8px -8px rgba(0, 0, 0, 0.08)",
boxShadowTabsOverflowTop: "inset 0 10px 8px -8px rgba(0, 0, 0, 0.08)",
boxShadowTabsOverflowBottom: "inset 0 -10px 8px -8px rgba(0, 0, 0, 0.08)"
}), overrideTokens);
return aliasToken;
}
var __rest$6 = globalThis && globalThis.__rest || function(s, e2) {
var t2 = {};
for (var p2 in s)
if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0)
t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i]))
t2[p2[i]] = s[p2[i]];
}
return t2;
};
const unitless = {
lineHeight: true,
lineHeightSM: true,
lineHeightLG: true,
lineHeightHeading1: true,
lineHeightHeading2: true,
lineHeightHeading3: true,
lineHeightHeading4: true,
lineHeightHeading5: true,
opacityLoading: true,
fontWeightStrong: true,
zIndexPopupBase: true,
zIndexBase: true
};
const ignore = {
size: true,
sizeSM: true,
sizeLG: true,
sizeMD: true,
sizeXS: true,
sizeXXS: true,
sizeMS: true,
sizeXL: true,
sizeXXL: true,
sizeUnit: true,
sizeStep: true,
motionBase: true,
motionUnit: true
};
const preserve = {
screenXS: true,
screenXSMin: true,
screenXSMax: true,
screenSM: true,
screenSMMin: true,
screenSMMax: true,
screenMD: true,
screenMDMin: true,
screenMDMax: true,
screenLG: true,
screenLGMin: true,
screenLGMax: true,
screenXL: true,
screenXLMin: true,
screenXLMax: true,
screenXXL: true,
screenXXLMin: true
};
const getComputedToken2 = (originToken, overrideToken, theme) => {
const derivativeToken = theme.getDerivativeToken(originToken);
const {
override
} = overrideToken, components = __rest$6(overrideToken, ["override"]);
let mergedDerivativeToken = Object.assign(Object.assign({}, derivativeToken), {
override
});
mergedDerivativeToken = formatToken(mergedDerivativeToken);
if (components) {
Object.entries(components).forEach((_ref) => {
let [key, value] = _ref;
const {
theme: componentTheme
} = value, componentTokens = __rest$6(value, ["theme"]);
let mergedComponentToken = componentTokens;
if (componentTheme) {
mergedComponentToken = getComputedToken2(Object.assign(Object.assign({}, mergedDerivativeToken), componentTokens), {
override: componentTokens
}, componentTheme);
}
mergedDerivativeToken[key] = mergedComponentToken;
});
}
return mergedDerivativeToken;
};
function useToken() {
const {
token: rootDesignToken,
hashed,
theme,
override,
cssVar
} = React.useContext(DesignTokenContext);
const salt = `${version$1}-${hashed || ""}`;
const mergedTheme = theme || defaultTheme;
const [token2, hashId, realToken] = useCacheToken(mergedTheme, [seedToken$1, rootDesignToken], {
salt,
override,
getComputedToken: getComputedToken2,
// formatToken will not be consumed after 1.15.0 with getComputedToken.
// But token will break if @ant-design/cssinjs is under 1.15.0 without it
formatToken,
cssVar: cssVar && {
prefix: cssVar.prefix,
key: cssVar.key,
unitless,
ignore,
preserve
}
});
return [mergedTheme, realToken, hashed ? hashId : "", token2, cssVar];
}
function useEvent(callback) {
var fnRef = React__namespace.useRef();
fnRef.current = callback;
var memoFn = React__namespace.useCallback(function() {
var _fnRef$current;
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return (_fnRef$current = fnRef.current) === null || _fnRef$current === void 0 ? void 0 : _fnRef$current.call.apply(_fnRef$current, [fnRef].concat(args));
}, []);
return memoFn;
}
function useSafeState(defaultValue) {
var destroyRef = React__namespace.useRef(false);
var _React$useState = React__namespace.useState(defaultValue), _React$useState2 = _slicedToArray(_React$useState, 2), value = _React$useState2[0], setValue = _React$useState2[1];
React__namespace.useEffect(function() {
destroyRef.current = false;
return function() {
destroyRef.current = true;
};
}, []);
function safeSetState(updater, ignoreDestroy) {
if (ignoreDestroy && destroyRef.current) {
return;
}
setValue(updater);
}
return [value, safeSetState];
}
function hasValue$1(value) {
return value !== void 0;
}
function useMergedState(defaultStateValue, option) {
var _ref = option || {}, defaultValue = _ref.defaultValue, value = _ref.value, onChange = _ref.onChange, postState = _ref.postState;
var _useState = useSafeState(function() {
if (hasValue$1(value)) {
return value;
} else if (hasValue$1(defaultValue)) {
return typeof defaultValue === "function" ? defaultValue() : defaultValue;
} else {
return typeof defaultStateValue === "function" ? defaultStateValue() : defaultStateValue;
}
}), _useState2 = _slicedToArray(_useState, 2), innerValue = _useState2[0], setInnerValue = _useState2[1];
var mergedValue = value !== void 0 ? value : innerValue;
var postMergedValue = postState ? postState(mergedValue) : mergedValue;
var onChangeFn = useEvent(onChange);
var _useState3 = useSafeState([mergedValue]), _useState4 = _slicedToArray(_useState3, 2), prevValue = _useState4[0], setPrevValue = _useState4[1];
useLayoutUpdateEffect(function() {
var prev2 = prevValue[0];
if (innerValue !== prev2) {
onChangeFn(innerValue, prev2);
}
}, [prevValue]);
useLayoutUpdateEffect(function() {
if (!hasValue$1(value)) {
setInnerValue(value);
}
}, [value]);
var triggerChange = useEvent(function(updater, ignoreDestroy) {
setInnerValue(updater, ignoreDestroy);
setPrevValue([mergedValue], ignoreDestroy);
});
return [postMergedValue, triggerChange];
}
const textEllipsis = {
overflow: "hidden",
whiteSpace: "nowrap",
textOverflow: "ellipsis"
};
const resetComponent = function(token2) {
let needInheritFontFamily = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
return {
boxSizing: "border-box",
margin: 0,
padding: 0,
color: token2.colorText,
fontSize: token2.fontSize,
// font-variant: @font-variant-base;
lineHeight: token2.lineHeight,
listStyle: "none",
// font-feature-settings: @font-feature-settings-base;
fontFamily: needInheritFontFamily ? "inherit" : token2.fontFamily
};
};
const resetIcon = () => ({
display: "inline-flex",
alignItems: "center",
color: "inherit",
fontStyle: "normal",
lineHeight: 0,
textAlign: "center",
textTransform: "none",
// for SVG icon, see https://blog.prototypr.io/align-svg-icons-to-text-and-say-goodbye-to-font-icons-d44b3d7b26b4
verticalAlign: "-0.125em",
textRendering: "optimizeLegibility",
"-webkit-font-smoothing": "antialiased",
"-moz-osx-font-smoothing": "grayscale",
"> *": {
lineHeight: 1
},
svg: {
display: "inline-block"
}
});
const clearFix = () => ({
// https://github.com/ant-design/ant-design/issues/21301#issuecomment-583955229
"&::before": {
display: "table",
content: '""'
},
"&::after": {
// https://github.com/ant-design/ant-design/issues/21864
display: "table",
clear: "both",
content: '""'
}
});
const genLinkStyle = (token2) => ({
a: {
color: token2.colorLink,
textDecoration: token2.linkDecoration,
backgroundColor: "transparent",
// remove the gray background on active links in IE 10.
outline: "none",
cursor: "pointer",
transition: `color ${token2.motionDurationSlow}`,
"-webkit-text-decoration-skip": "objects",
// remove gaps in links underline in iOS 8+ and Safari 8+.
"&:hover": {
color: token2.colorLinkHover
},
"&:active": {
color: token2.colorLinkActive
},
[`&:active,
&:hover`]: {
textDecoration: token2.linkHoverDecoration,
outline: 0
},
// https://github.com/ant-design/ant-design/issues/22503
"&:focus": {
textDecoration: token2.linkFocusDecoration,
outline: 0
},
"&[disabled]": {
color: token2.colorTextDisabled,
cursor: "not-allowed"
}
}
});
const genCommonStyle = (token2, componentPrefixCls) => {
const {
fontFamily,
fontSize
} = token2;
const rootPrefixSelector = `[class^="${componentPrefixCls}"], [class*=" ${componentPrefixCls}"]`;
return {
[rootPrefixSelector]: {
fontFamily,
fontSize,
boxSizing: "border-box",
"&::before, &::after": {
boxSizing: "border-box"
},
[rootPrefixSelector]: {
boxSizing: "border-box",
"&::before, &::after": {
boxSizing: "border-box"
}
}
}
};
};
const genFocusOutline = (token2) => ({
outline: `${unit$1(token2.lineWidthFocus)} solid ${token2.colorPrimaryBorder}`,
outlineOffset: 1,
transition: "outline-offset 0s, outline 0s"
});
const genFocusStyle = (token2) => ({
"&:focus-visible": Object.assign({}, genFocusOutline(token2))
});
let AbstractCalculator = /* @__PURE__ */ _createClass(function AbstractCalculator2() {
_classCallCheck(this, AbstractCalculator2);
});
const AbstractCalculator$1 = AbstractCalculator;
let NumCalculator = /* @__PURE__ */ function(_AbstractCalculator) {
_inherits(NumCalculator2, _AbstractCalculator);
var _super = _createSuper(NumCalculator2);
function NumCalculator2(num) {
var _this;
_classCallCheck(this, NumCalculator2);
_this = _super.call(this);
_this.result = 0;
if (num instanceof NumCalculator2) {
_this.result = num.result;
} else if (typeof num === "number") {
_this.result = num;
}
return _this;
}
_createClass(NumCalculator2, [{
key: "add",
value: function add(num) {
if (num instanceof NumCalculator2) {
this.result += num.result;
} else if (typeof num === "number") {
this.result += num;
}
return this;
}
}, {
key: "sub",
value: function sub(num) {
if (num instanceof NumCalculator2) {
this.result -= num.result;
} else if (typeof num === "number") {
this.result -= num;
}
return this;
}
}, {
key: "mul",
value: function mul(num) {
if (num instanceof NumCalculator2) {
this.result *= num.result;
} else if (typeof num === "number") {
this.result *= num;
}
return this;
}
}, {
key: "div",
value: function div(num) {
if (num instanceof NumCalculator2) {
this.result /= num.result;
} else if (typeof num === "number") {
this.result /= num;
}
return this;
}
}, {
key: "equal",
value: function equal() {
return this.result;
}
}]);
return NumCalculator2;
}(AbstractCalculator$1);
const CALC_UNIT = "CALC_UNIT";
function unit(value) {
if (typeof value === "number") {
return `${value}${CALC_UNIT}`;
}
return value;
}
let CSSCalculator = /* @__PURE__ */ function(_AbstractCalculator) {
_inherits(CSSCalculator2, _AbstractCalculator);
var _super = _createSuper(CSSCalculator2);
function CSSCalculator2(num) {
var _this;
_classCallCheck(this, CSSCalculator2);
_this = _super.call(this);
_this.result = "";
if (num instanceof CSSCalculator2) {
_this.result = `(${num.result})`;
} else if (typeof num === "number") {
_this.result = unit(num);
} else if (typeof num === "string") {
_this.result = num;
}
return _this;
}
_createClass(CSSCalculator2, [{
key: "add",
value: function add(num) {
if (num instanceof CSSCalculator2) {
this.result = `${this.result} + ${num.getResult()}`;
} else if (typeof num === "number" || typeof num === "string") {
this.result = `${this.result} + ${unit(num)}`;
}
this.lowPriority = true;
return this;
}
}, {
key: "sub",
value: function sub(num) {
if (num instanceof CSSCalculator2) {
this.result = `${this.result} - ${num.getResult()}`;
} else if (typeof num === "number" || typeof num === "string") {
this.result = `${this.result} - ${unit(num)}`;
}
this.lowPriority = true;
return this;
}
}, {
key: "mul",
value: function mul(num) {
if (this.lowPriority) {
this.result = `(${this.result})`;
}
if (num instanceof CSSCalculator2) {
this.result = `${this.result} * ${num.getResult(true)}`;
} else if (typeof num === "number" || typeof num === "string") {
this.result = `${this.result} * ${num}`;
}
this.lowPriority = false;
return this;
}
}, {
key: "div",
value: function div(num) {
if (this.lowPriority) {
this.result = `(${this.result})`;
}
if (num instanceof CSSCalculator2) {
this.result = `${this.result} / ${num.getResult(true)}`;
} else if (typeof num === "number" || typeof num === "string") {
this.result = `${this.result} / ${num}`;
}
this.lowPriority = false;
return this;
}
}, {
key: "getResult",
value: function getResult(force) {
return this.lowPriority || force ? `(${this.result})` : this.result;
}
}, {
key: "equal",
value: function equal(options) {
const {
unit: cssUnit = true
} = options || {};
const regexp4 = new RegExp(`${CALC_UNIT}`, "g");
this.result = this.result.replace(regexp4, cssUnit ? "px" : "");
if (typeof this.lowPriority !== "undefined") {
return `calc(${this.result})`;
}
return this.result;
}
}]);
return CSSCalculator2;
}(AbstractCalculator$1);
const genCalc = (type4) => {
const Calculator = type4 === "css" ? CSSCalculator : NumCalculator;
return (num) => new Calculator(num);
};
const genCalc$1 = genCalc;
function genMaxMin(type4) {
if (type4 === "js") {
return {
max: Math.max,
min: Math.min
};
}
return {
max: function() {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return `max(${args.map((value) => unit$1(value)).join(",")})`;
},
min: function() {
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
return `min(${args.map((value) => unit$1(value)).join(",")})`;
}
};
}
const enableStatistic = typeof CSSINJS_STATISTIC !== "undefined";
let recording = true;
function merge() {
for (var _len = arguments.length, objs = new Array(_len), _key = 0; _key < _len; _key++) {
objs[_key] = arguments[_key];
}
if (!enableStatistic) {
return Object.assign.apply(Object, [{}].concat(objs));
}
recording = false;
const ret = {};
objs.forEach((obj) => {
const keys2 = Object.keys(obj);
keys2.forEach((key) => {
Object.defineProperty(ret, key, {
configurable: true,
enumerable: true,
get: () => obj[key]
});
});
});
recording = true;
return ret;
}
const statistic = {};
function noop$1() {
}
function statisticToken(token2) {
let tokenKeys2;
let proxy = token2;
let flush = noop$1;
if (enableStatistic && typeof Proxy !== "undefined") {
tokenKeys2 = /* @__PURE__ */ new Set();
proxy = new Proxy(token2, {
get(obj, prop) {
if (recording) {
tokenKeys2.add(prop);
}
return obj[prop];
}
});
flush = (componentName, componentToken) => {
var _a2;
statistic[componentName] = {
global: Array.from(tokenKeys2),
component: Object.assign(Object.assign({}, (_a2 = statistic[componentName]) === null || _a2 === void 0 ? void 0 : _a2.component), componentToken)
};
};
}
return {
token: proxy,
keys: tokenKeys2,
flush
};
}
const useResetIconStyle = (iconPrefixCls, csp) => {
const [theme, token2] = useToken();
return useStyleRegister({
theme,
token: token2,
hashId: "",
path: ["ant-design-icons", iconPrefixCls],
nonce: () => csp === null || csp === void 0 ? void 0 : csp.nonce
}, () => [{
[`.${iconPrefixCls}`]: Object.assign(Object.assign({}, resetIcon()), {
[`.${iconPrefixCls} .${iconPrefixCls}-icon`]: {
display: "block"
}
})
}]);
};
const useStyle$4 = useResetIconStyle;
const getDefaultComponentToken = (component, token2, getDefaultToken) => {
var _a2;
if (typeof getDefaultToken === "function") {
return getDefaultToken(merge(token2, (_a2 = token2[component]) !== null && _a2 !== void 0 ? _a2 : {}));
}
return getDefaultToken !== null && getDefaultToken !== void 0 ? getDefaultToken : {};
};
const getComponentToken = (component, token2, defaultToken, options) => {
const customToken = Object.assign({}, token2[component]);
if (options === null || options === void 0 ? void 0 : options.deprecatedTokens) {
const {
deprecatedTokens
} = options;
deprecatedTokens.forEach((_ref) => {
let [oldTokenKey, newTokenKey] = _ref;
var _a2;
if ((customToken === null || customToken === void 0 ? void 0 : customToken[oldTokenKey]) || (customToken === null || customToken === void 0 ? void 0 : customToken[newTokenKey])) {
(_a2 = customToken[newTokenKey]) !== null && _a2 !== void 0 ? _a2 : customToken[newTokenKey] = customToken === null || customToken === void 0 ? void 0 : customToken[oldTokenKey];
}
});
}
let mergedToken = Object.assign(Object.assign({}, defaultToken), customToken);
if (options === null || options === void 0 ? void 0 : options.format) {
mergedToken = options.format(mergedToken);
}
Object.keys(mergedToken).forEach((key) => {
if (mergedToken[key] === token2[key]) {
delete mergedToken[key];
}
});
return mergedToken;
};
const getCompVarPrefix = (component, prefix) => `${[prefix, component.replace(/([A-Z]+)([A-Z][a-z]+)/g, "$1-$2").replace(/([a-z])([A-Z])/g, "$1-$2")].filter(Boolean).join("-")}`;
function genComponentStyleHook(componentName, styleFn, getDefaultToken) {
let options = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};
const cells = Array.isArray(componentName) ? componentName : [componentName, componentName];
const [component] = cells;
const concatComponent = cells.join("-");
return (prefixCls) => {
const [theme, realToken, hashId, token2, cssVar] = useToken();
const {
getPrefixCls,
iconPrefixCls,
csp
} = React.useContext(ConfigContext);
const rootPrefixCls = getPrefixCls();
const type4 = cssVar ? "css" : "js";
const calc = genCalc$1(type4);
const {
max: max2,
min
} = genMaxMin(type4);
const sharedConfig = {
theme,
token: token2,
hashId,
nonce: () => csp === null || csp === void 0 ? void 0 : csp.nonce,
clientOnly: options.clientOnly,
// antd is always at top of styles
order: options.order || -999
};
useStyleRegister(Object.assign(Object.assign({}, sharedConfig), {
clientOnly: false,
path: ["Shared", rootPrefixCls]
}), () => [{
// Link
"&": genLinkStyle(token2)
}]);
useStyle$4(iconPrefixCls, csp);
const wrapSSR = useStyleRegister(Object.assign(Object.assign({}, sharedConfig), {
path: [concatComponent, prefixCls, iconPrefixCls]
}), () => {
if (options.injectStyle === false) {
return [];
}
const {
token: proxyToken,
flush
} = statisticToken(token2);
const defaultComponentToken = getDefaultComponentToken(component, realToken, getDefaultToken);
const componentCls = `.${prefixCls}`;
const componentToken = getComponentToken(component, realToken, defaultComponentToken, {
deprecatedTokens: options.deprecatedTokens,
format: options.format
});
if (cssVar) {
Object.keys(defaultComponentToken).forEach((key) => {
defaultComponentToken[key] = `var(${token2CSSVar(key, getCompVarPrefix(component, cssVar.prefix))})`;
});
}
const mergedToken = merge(proxyToken, {
componentCls,
prefixCls,
iconCls: `.${iconPrefixCls}`,
antCls: `.${rootPrefixCls}`,
calc,
max: max2,
min
}, cssVar ? defaultComponentToken : componentToken);
const styleInterpolation = styleFn(mergedToken, {
hashId,
prefixCls,
rootPrefixCls,
iconPrefixCls
});
flush(component, componentToken);
return [options.resetStyle === false ? null : genCommonStyle(mergedToken, prefixCls), styleInterpolation];
});
return [wrapSSR, hashId];
};
}
const genSubStyleComponent = (componentName, styleFn, getDefaultToken, options) => {
const useStyle2 = genComponentStyleHook(componentName, styleFn, getDefaultToken, Object.assign({
resetStyle: false,
// Sub Style should default after root one
order: -998
}, options));
const StyledComponent = (_ref2) => {
let {
prefixCls
} = _ref2;
useStyle2(prefixCls);
return null;
};
return StyledComponent;
};
const genCSSVarRegister = (component, getDefaultToken, options) => {
function prefixToken(key) {
return `${component}${key.slice(0, 1).toUpperCase()}${key.slice(1)}`;
}
const {
unitless: originUnitless = {},
injectStyle = true
} = options !== null && options !== void 0 ? options : {};
const compUnitless = {
[prefixToken("zIndexPopup")]: true
};
Object.keys(originUnitless).forEach((key) => {
compUnitless[prefixToken(key)] = originUnitless[key];
});
const CSSVarRegister = (_ref3) => {
let {
rootCls,
cssVar
} = _ref3;
const [, realToken] = useToken();
useCSSVarRegister({
path: [component],
prefix: cssVar.prefix,
key: cssVar === null || cssVar === void 0 ? void 0 : cssVar.key,
unitless: Object.assign(Object.assign({}, unitless), compUnitless),
ignore,
token: realToken,
scope: rootCls
}, () => {
const defaultToken = getDefaultComponentToken(component, realToken, getDefaultToken);
const componentToken = getComponentToken(component, realToken, defaultToken, {
format: options === null || options === void 0 ? void 0 : options.format,
deprecatedTokens: options === null || options === void 0 ? void 0 : options.deprecatedTokens
});
Object.keys(defaultToken).forEach((key) => {
componentToken[prefixToken(key)] = componentToken[key];
delete componentToken[key];
});
return componentToken;
});
return null;
};
const useCSSVar = (rootCls) => {
const [, , , , cssVar] = useToken();
return [(node2) => injectStyle && cssVar ? /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(CSSVarRegister, {
rootCls,
cssVar,
component
}), node2) : node2, cssVar === null || cssVar === void 0 ? void 0 : cssVar.key];
};
return useCSSVar;
};
const genStyleHooks = (component, styleFn, getDefaultToken, options) => {
const useStyle2 = genComponentStyleHook(component, styleFn, getDefaultToken, options);
const useCSSVar = genCSSVarRegister(Array.isArray(component) ? component[0] : component, getDefaultToken, options);
return function(prefixCls) {
let rootCls = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : prefixCls;
const [, hashId] = useStyle2(prefixCls);
const [wrapCSSVar, cssVarCls] = useCSSVar(rootCls);
return [wrapCSSVar, hashId, cssVarCls];
};
};
const fullClone$1 = Object.assign({}, React__namespace);
const {
useId: useId$2
} = fullClone$1;
const useEmptyId = () => "";
const useThemeKey = typeof useId$2 === "undefined" ? useEmptyId : useId$2;
const useThemeKey$1 = useThemeKey;
function useTheme(theme, parentTheme) {
const themeConfig = theme || {};
const parentThemeConfig = themeConfig.inherit === false || !parentTheme ? defaultConfig : parentTheme;
const themeKey = useThemeKey$1();
return useMemo(() => {
var _a2, _b;
if (!theme) {
return parentTheme;
}
const mergedComponents = Object.assign({}, parentThemeConfig.components);
Object.keys(theme.components || {}).forEach((componentName) => {
mergedComponents[componentName] = Object.assign(Object.assign({}, mergedComponents[componentName]), theme.components[componentName]);
});
const cssVarKey = `css-var-${themeKey.replace(/:/g, "")}`;
const mergedCssVar = ((_a2 = themeConfig.cssVar) !== null && _a2 !== void 0 ? _a2 : parentThemeConfig.cssVar) && Object.assign(Object.assign(Object.assign({
prefix: "ant"
}, typeof parentThemeConfig.cssVar === "object" ? parentThemeConfig.cssVar : {}), typeof themeConfig.cssVar === "object" ? themeConfig.cssVar : {}), {
key: typeof themeConfig.cssVar === "object" && ((_b = themeConfig.cssVar) === null || _b === void 0 ? void 0 : _b.key) || cssVarKey
});
return Object.assign(Object.assign(Object.assign({}, parentThemeConfig), themeConfig), {
token: Object.assign(Object.assign({}, parentThemeConfig.token), themeConfig.token),
components: mergedComponents,
cssVar: mergedCssVar
});
}, [themeConfig, parentThemeConfig], (prev2, next2) => prev2.some((prevTheme, index2) => {
const nextTheme = next2[index2];
return !isEqual(prevTheme, nextTheme, true);
}));
}
var _excluded$g = ["children"];
var Context$1 = /* @__PURE__ */ React__namespace.createContext({});
function MotionProvider(_ref) {
var children = _ref.children, props = _objectWithoutProperties(_ref, _excluded$g);
return /* @__PURE__ */ React__namespace.createElement(Context$1.Provider, {
value: props
}, children);
}
var DomWrapper = /* @__PURE__ */ function(_React$Component) {
_inherits(DomWrapper2, _React$Component);
var _super = _createSuper(DomWrapper2);
function DomWrapper2() {
_classCallCheck(this, DomWrapper2);
return _super.apply(this, arguments);
}
_createClass(DomWrapper2, [{
key: "render",
value: function render2() {
return this.props.children;
}
}]);
return DomWrapper2;
}(React__namespace.Component);
var STATUS_NONE = "none";
var STATUS_APPEAR = "appear";
var STATUS_ENTER = "enter";
var STATUS_LEAVE = "leave";
var STEP_NONE = "none";
var STEP_PREPARE = "prepare";
var STEP_START = "start";
var STEP_ACTIVE = "active";
var STEP_ACTIVATED = "end";
var STEP_PREPARED = "prepared";
function makePrefixMap(styleProp, eventName) {
var prefixes = {};
prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();
prefixes["Webkit".concat(styleProp)] = "webkit".concat(eventName);
prefixes["Moz".concat(styleProp)] = "moz".concat(eventName);
prefixes["ms".concat(styleProp)] = "MS".concat(eventName);
prefixes["O".concat(styleProp)] = "o".concat(eventName.toLowerCase());
return prefixes;
}
function getVendorPrefixes(domSupport, win) {
var prefixes = {
animationend: makePrefixMap("Animation", "AnimationEnd"),
transitionend: makePrefixMap("Transition", "TransitionEnd")
};
if (domSupport) {
if (!("AnimationEvent" in win)) {
delete prefixes.animationend.animation;
}
if (!("TransitionEvent" in win)) {
delete prefixes.transitionend.transition;
}
}
return prefixes;
}
var vendorPrefixes = getVendorPrefixes(canUseDom(), typeof window !== "undefined" ? window : {});
var style = {};
if (canUseDom()) {
var _document$createEleme = document.createElement("div");
style = _document$createEleme.style;
}
var prefixedEventNames = {};
function getVendorPrefixedEventName(eventName) {
if (prefixedEventNames[eventName]) {
return prefixedEventNames[eventName];
}
var prefixMap = vendorPrefixes[eventName];
if (prefixMap) {
var stylePropList = Object.keys(prefixMap);
var len = stylePropList.length;
for (var i = 0; i < len; i += 1) {
var styleProp = stylePropList[i];
if (Object.prototype.hasOwnProperty.call(prefixMap, styleProp) && styleProp in style) {
prefixedEventNames[eventName] = prefixMap[styleProp];
return prefixedEventNames[eventName];
}
}
}
return "";
}
var internalAnimationEndName = getVendorPrefixedEventName("animationend");
var internalTransitionEndName = getVendorPrefixedEventName("transitionend");
var supportTransition = !!(internalAnimationEndName && internalTransitionEndName);
var animationEndName = internalAnimationEndName || "animationend";
var transitionEndName = internalTransitionEndName || "transitionend";
function getTransitionName$1(transitionName, transitionType) {
if (!transitionName)
return null;
if (_typeof(transitionName) === "object") {
var type4 = transitionType.replace(/-\w/g, function(match2) {
return match2[1].toUpperCase();
});
return transitionName[type4];
}
return "".concat(transitionName, "-").concat(transitionType);
}
const useDomMotionEvents = function(callback) {
var cacheElementRef = React.useRef();
var callbackRef = React.useRef(callback);
callbackRef.current = callback;
var onInternalMotionEnd = React__namespace.useCallback(function(event) {
callbackRef.current(event);
}, []);
function removeMotionEvents(element) {
if (element) {
element.removeEventListener(transitionEndName, onInternalMotionEnd);
element.removeEventListener(animationEndName, onInternalMotionEnd);
}
}
function patchMotionEvents(element) {
if (cacheElementRef.current && cacheElementRef.current !== element) {
removeMotionEvents(cacheElementRef.current);
}
if (element && element !== cacheElementRef.current) {
element.addEventListener(transitionEndName, onInternalMotionEnd);
element.addEventListener(animationEndName, onInternalMotionEnd);
cacheElementRef.current = element;
}
}
React__namespace.useEffect(function() {
return function() {
removeMotionEvents(cacheElementRef.current);
};
}, []);
return [patchMotionEvents, removeMotionEvents];
};
var useIsomorphicLayoutEffect = canUseDom() ? React.useLayoutEffect : React.useEffect;
const useNextFrame = function() {
var nextFrameRef = React__namespace.useRef(null);
function cancelNextFrame() {
wrapperRaf.cancel(nextFrameRef.current);
}
function nextFrame(callback) {
var delay = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 2;
cancelNextFrame();
var nextFrameId = wrapperRaf(function() {
if (delay <= 1) {
callback({
isCanceled: function isCanceled() {
return nextFrameId !== nextFrameRef.current;
}
});
} else {
nextFrame(callback, delay - 1);
}
});
nextFrameRef.current = nextFrameId;
}
React__namespace.useEffect(function() {
return function() {
cancelNextFrame();
};
}, []);
return [nextFrame, cancelNextFrame];
};
var FULL_STEP_QUEUE = [STEP_PREPARE, STEP_START, STEP_ACTIVE, STEP_ACTIVATED];
var SIMPLE_STEP_QUEUE = [STEP_PREPARE, STEP_PREPARED];
var SkipStep = false;
var DoStep = true;
function isActive(step) {
return step === STEP_ACTIVE || step === STEP_ACTIVATED;
}
const useStepQueue = function(status, prepareOnly, callback) {
var _useState = useSafeState(STEP_NONE), _useState2 = _slicedToArray(_useState, 2), step = _useState2[0], setStep = _useState2[1];
var _useNextFrame = useNextFrame(), _useNextFrame2 = _slicedToArray(_useNextFrame, 2), nextFrame = _useNextFrame2[0], cancelNextFrame = _useNextFrame2[1];
function startQueue() {
setStep(STEP_PREPARE, true);
}
var STEP_QUEUE = prepareOnly ? SIMPLE_STEP_QUEUE : FULL_STEP_QUEUE;
useIsomorphicLayoutEffect(function() {
if (step !== STEP_NONE && step !== STEP_ACTIVATED) {
var index2 = STEP_QUEUE.indexOf(step);
var nextStep = STEP_QUEUE[index2 + 1];
var result = callback(step);
if (result === SkipStep) {
setStep(nextStep, true);
} else if (nextStep) {
nextFrame(function(info2) {
function doNext() {
if (info2.isCanceled())
return;
setStep(nextStep, true);
}
if (result === true) {
doNext();
} else {
Promise.resolve(result).then(doNext);
}
});
}
}
}, [status, step]);
React__namespace.useEffect(function() {
return function() {
cancelNextFrame();
};
}, []);
return [startQueue, step];
};
function useStatus(supportMotion, visible, getElement, _ref) {
var _ref$motionEnter = _ref.motionEnter, motionEnter = _ref$motionEnter === void 0 ? true : _ref$motionEnter, _ref$motionAppear = _ref.motionAppear, motionAppear = _ref$motionAppear === void 0 ? true : _ref$motionAppear, _ref$motionLeave = _ref.motionLeave, motionLeave = _ref$motionLeave === void 0 ? true : _ref$motionLeave, motionDeadline = _ref.motionDeadline, motionLeaveImmediately = _ref.motionLeaveImmediately, onAppearPrepare = _ref.onAppearPrepare, onEnterPrepare = _ref.onEnterPrepare, onLeavePrepare = _ref.onLeavePrepare, onAppearStart = _ref.onAppearStart, onEnterStart = _ref.onEnterStart, onLeaveStart = _ref.onLeaveStart, onAppearActive = _ref.onAppearActive, onEnterActive = _ref.onEnterActive, onLeaveActive = _ref.onLeaveActive, onAppearEnd = _ref.onAppearEnd, onEnterEnd = _ref.onEnterEnd, onLeaveEnd = _ref.onLeaveEnd, onVisibleChanged = _ref.onVisibleChanged;
var _useState = useSafeState(), _useState2 = _slicedToArray(_useState, 2), asyncVisible = _useState2[0], setAsyncVisible = _useState2[1];
var _useState3 = useSafeState(STATUS_NONE), _useState4 = _slicedToArray(_useState3, 2), status = _useState4[0], setStatus = _useState4[1];
var _useState5 = useSafeState(null), _useState6 = _slicedToArray(_useState5, 2), style2 = _useState6[0], setStyle = _useState6[1];
var mountedRef = React.useRef(false);
var deadlineRef = React.useRef(null);
function getDomElement() {
return getElement();
}
var activeRef = React.useRef(false);
function updateMotionEndStatus() {
setStatus(STATUS_NONE, true);
setStyle(null, true);
}
function onInternalMotionEnd(event) {
var element = getDomElement();
if (event && !event.deadline && event.target !== element) {
return;
}
var currentActive = activeRef.current;
var canEnd;
if (status === STATUS_APPEAR && currentActive) {
canEnd = onAppearEnd === null || onAppearEnd === void 0 ? void 0 : onAppearEnd(element, event);
} else if (status === STATUS_ENTER && currentActive) {
canEnd = onEnterEnd === null || onEnterEnd === void 0 ? void 0 : onEnterEnd(element, event);
} else if (status === STATUS_LEAVE && currentActive) {
canEnd = onLeaveEnd === null || onLeaveEnd === void 0 ? void 0 : onLeaveEnd(element, event);
}
if (status !== STATUS_NONE && currentActive && canEnd !== false) {
updateMotionEndStatus();
}
}
var _useDomMotionEvents = useDomMotionEvents(onInternalMotionEnd), _useDomMotionEvents2 = _slicedToArray(_useDomMotionEvents, 1), patchMotionEvents = _useDomMotionEvents2[0];
var getEventHandlers = function getEventHandlers2(targetStatus) {
var _ref2, _ref3, _ref4;
switch (targetStatus) {
case STATUS_APPEAR:
return _ref2 = {}, _defineProperty(_ref2, STEP_PREPARE, onAppearPrepare), _defineProperty(_ref2, STEP_START, onAppearStart), _defineProperty(_ref2, STEP_ACTIVE, onAppearActive), _ref2;
case STATUS_ENTER:
return _ref3 = {}, _defineProperty(_ref3, STEP_PREPARE, onEnterPrepare), _defineProperty(_ref3, STEP_START, onEnterStart), _defineProperty(_ref3, STEP_ACTIVE, onEnterActive), _ref3;
case STATUS_LEAVE:
return _ref4 = {}, _defineProperty(_ref4, STEP_PREPARE, onLeavePrepare), _defineProperty(_ref4, STEP_START, onLeaveStart), _defineProperty(_ref4, STEP_ACTIVE, onLeaveActive), _ref4;
default:
return {};
}
};
var eventHandlers = React__namespace.useMemo(function() {
return getEventHandlers(status);
}, [status]);
var _useStepQueue = useStepQueue(status, !supportMotion, function(newStep) {
if (newStep === STEP_PREPARE) {
var onPrepare = eventHandlers[STEP_PREPARE];
if (!onPrepare) {
return SkipStep;
}
return onPrepare(getDomElement());
}
if (step in eventHandlers) {
var _eventHandlers$step;
setStyle(((_eventHandlers$step = eventHandlers[step]) === null || _eventHandlers$step === void 0 ? void 0 : _eventHandlers$step.call(eventHandlers, getDomElement(), null)) || null);
}
if (step === STEP_ACTIVE) {
patchMotionEvents(getDomElement());
if (motionDeadline > 0) {
clearTimeout(deadlineRef.current);
deadlineRef.current = setTimeout(function() {
onInternalMotionEnd({
deadline: true
});
}, motionDeadline);
}
}
if (step === STEP_PREPARED) {
updateMotionEndStatus();
}
return DoStep;
}), _useStepQueue2 = _slicedToArray(_useStepQueue, 2), startStep = _useStepQueue2[0], step = _useStepQueue2[1];
var active = isActive(step);
activeRef.current = active;
useIsomorphicLayoutEffect(function() {
setAsyncVisible(visible);
var isMounted = mountedRef.current;
mountedRef.current = true;
var nextStatus;
if (!isMounted && visible && motionAppear) {
nextStatus = STATUS_APPEAR;
}
if (isMounted && visible && motionEnter) {
nextStatus = STATUS_ENTER;
}
if (isMounted && !visible && motionLeave || !isMounted && motionLeaveImmediately && !visible && motionLeave) {
nextStatus = STATUS_LEAVE;
}
var nextEventHandlers = getEventHandlers(nextStatus);
if (nextStatus && (supportMotion || nextEventHandlers[STEP_PREPARE])) {
setStatus(nextStatus);
startStep();
} else {
setStatus(STATUS_NONE);
}
}, [visible]);
React.useEffect(function() {
if (
// Cancel appear
status === STATUS_APPEAR && !motionAppear || // Cancel enter
status === STATUS_ENTER && !motionEnter || // Cancel leave
status === STATUS_LEAVE && !motionLeave
) {
setStatus(STATUS_NONE);
}
}, [motionAppear, motionEnter, motionLeave]);
React.useEffect(function() {
return function() {
mountedRef.current = false;
clearTimeout(deadlineRef.current);
};
}, []);
var firstMountChangeRef = React__namespace.useRef(false);
React.useEffect(function() {
if (asyncVisible) {
firstMountChangeRef.current = true;
}
if (asyncVisible !== void 0 && status === STATUS_NONE) {
if (firstMountChangeRef.current || asyncVisible) {
onVisibleChanged === null || onVisibleChanged === void 0 ? void 0 : onVisibleChanged(asyncVisible);
}
firstMountChangeRef.current = true;
}
}, [asyncVisible, status]);
var mergedStyle = style2;
if (eventHandlers[STEP_PREPARE] && step === STEP_START) {
mergedStyle = _objectSpread2({
transition: "none"
}, mergedStyle);
}
return [status, step, mergedStyle, asyncVisible !== null && asyncVisible !== void 0 ? asyncVisible : visible];
}
function genCSSMotion(config) {
var transitionSupport = config;
if (_typeof(config) === "object") {
transitionSupport = config.transitionSupport;
}
function isSupportTransition(props, contextMotion) {
return !!(props.motionName && transitionSupport && contextMotion !== false);
}
var CSSMotion2 = /* @__PURE__ */ React__namespace.forwardRef(function(props, ref) {
var _props$visible = props.visible, visible = _props$visible === void 0 ? true : _props$visible, _props$removeOnLeave = props.removeOnLeave, removeOnLeave = _props$removeOnLeave === void 0 ? true : _props$removeOnLeave, forceRender = props.forceRender, children = props.children, motionName = props.motionName, leavedClassName = props.leavedClassName, eventProps = props.eventProps;
var _React$useContext = React__namespace.useContext(Context$1), contextMotion = _React$useContext.motion;
var supportMotion = isSupportTransition(props, contextMotion);
var nodeRef = React.useRef();
var wrapperNodeRef = React.useRef();
function getDomElement() {
try {
return nodeRef.current instanceof HTMLElement ? nodeRef.current : findDOMNode(wrapperNodeRef.current);
} catch (e2) {
return null;
}
}
var _useStatus = useStatus(supportMotion, visible, getDomElement, props), _useStatus2 = _slicedToArray(_useStatus, 4), status = _useStatus2[0], statusStep = _useStatus2[1], statusStyle = _useStatus2[2], mergedVisible = _useStatus2[3];
var renderedRef = React__namespace.useRef(mergedVisible);
if (mergedVisible) {
renderedRef.current = true;
}
var setNodeRef = React__namespace.useCallback(function(node2) {
nodeRef.current = node2;
fillRef(ref, node2);
}, [ref]);
var motionChildren;
var mergedProps = _objectSpread2(_objectSpread2({}, eventProps), {}, {
visible
});
if (!children) {
motionChildren = null;
} else if (status === STATUS_NONE) {
if (mergedVisible) {
motionChildren = children(_objectSpread2({}, mergedProps), setNodeRef);
} else if (!removeOnLeave && renderedRef.current && leavedClassName) {
motionChildren = children(_objectSpread2(_objectSpread2({}, mergedProps), {}, {
className: leavedClassName
}), setNodeRef);
} else if (forceRender || !removeOnLeave && !leavedClassName) {
motionChildren = children(_objectSpread2(_objectSpread2({}, mergedProps), {}, {
style: {
display: "none"
}
}), setNodeRef);
} else {
motionChildren = null;
}
} else {
var _classNames;
var statusSuffix;
if (statusStep === STEP_PREPARE) {
statusSuffix = "prepare";
} else if (isActive(statusStep)) {
statusSuffix = "active";
} else if (statusStep === STEP_START) {
statusSuffix = "start";
}
var motionCls = getTransitionName$1(motionName, "".concat(status, "-").concat(statusSuffix));
motionChildren = children(_objectSpread2(_objectSpread2({}, mergedProps), {}, {
className: classNames(getTransitionName$1(motionName, status), (_classNames = {}, _defineProperty(_classNames, motionCls, motionCls && statusSuffix), _defineProperty(_classNames, motionName, typeof motionName === "string"), _classNames)),
style: statusStyle
}), setNodeRef);
}
if (/* @__PURE__ */ React__namespace.isValidElement(motionChildren) && supportRef(motionChildren)) {
var _ref = motionChildren, originNodeRef = _ref.ref;
if (!originNodeRef) {
motionChildren = /* @__PURE__ */ React__namespace.cloneElement(motionChildren, {
ref: setNodeRef
});
}
}
return /* @__PURE__ */ React__namespace.createElement(DomWrapper, {
ref: wrapperNodeRef
}, motionChildren);
});
CSSMotion2.displayName = "CSSMotion";
return CSSMotion2;
}
const CSSMotion = genCSSMotion(supportTransition);
var STATUS_ADD = "add";
var STATUS_KEEP = "keep";
var STATUS_REMOVE = "remove";
var STATUS_REMOVED = "removed";
function wrapKeyToObject(key) {
var keyObj;
if (key && _typeof(key) === "object" && "key" in key) {
keyObj = key;
} else {
keyObj = {
key
};
}
return _objectSpread2(_objectSpread2({}, keyObj), {}, {
key: String(keyObj.key)
});
}
function parseKeys() {
var keys2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
return keys2.map(wrapKeyToObject);
}
function diffKeys() {
var prevKeys = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
var currentKeys = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
var list = [];
var currentIndex = 0;
var currentLen = currentKeys.length;
var prevKeyObjects = parseKeys(prevKeys);
var currentKeyObjects = parseKeys(currentKeys);
prevKeyObjects.forEach(function(keyObj) {
var hit = false;
for (var i = currentIndex; i < currentLen; i += 1) {
var currentKeyObj = currentKeyObjects[i];
if (currentKeyObj.key === keyObj.key) {
if (currentIndex < i) {
list = list.concat(currentKeyObjects.slice(currentIndex, i).map(function(obj) {
return _objectSpread2(_objectSpread2({}, obj), {}, {
status: STATUS_ADD
});
}));
currentIndex = i;
}
list.push(_objectSpread2(_objectSpread2({}, currentKeyObj), {}, {
status: STATUS_KEEP
}));
currentIndex += 1;
hit = true;
break;
}
}
if (!hit) {
list.push(_objectSpread2(_objectSpread2({}, keyObj), {}, {
status: STATUS_REMOVE
}));
}
});
if (currentIndex < currentLen) {
list = list.concat(currentKeyObjects.slice(currentIndex).map(function(obj) {
return _objectSpread2(_objectSpread2({}, obj), {}, {
status: STATUS_ADD
});
}));
}
var keys2 = {};
list.forEach(function(_ref) {
var key = _ref.key;
keys2[key] = (keys2[key] || 0) + 1;
});
var duplicatedKeys = Object.keys(keys2).filter(function(key) {
return keys2[key] > 1;
});
duplicatedKeys.forEach(function(matchKey) {
list = list.filter(function(_ref2) {
var key = _ref2.key, status = _ref2.status;
return key !== matchKey || status !== STATUS_REMOVE;
});
list.forEach(function(node2) {
if (node2.key === matchKey) {
node2.status = STATUS_KEEP;
}
});
});
return list;
}
var _excluded$f = ["component", "children", "onVisibleChanged", "onAllRemoved"], _excluded2$2 = ["status"];
var MOTION_PROP_NAMES = ["eventProps", "visible", "children", "motionName", "motionAppear", "motionEnter", "motionLeave", "motionLeaveImmediately", "motionDeadline", "removeOnLeave", "leavedClassName", "onAppearPrepare", "onAppearStart", "onAppearActive", "onAppearEnd", "onEnterStart", "onEnterActive", "onEnterEnd", "onLeaveStart", "onLeaveActive", "onLeaveEnd"];
function genCSSMotionList(transitionSupport) {
var CSSMotion$1 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : CSSMotion;
var CSSMotionList = /* @__PURE__ */ function(_React$Component) {
_inherits(CSSMotionList2, _React$Component);
var _super = _createSuper(CSSMotionList2);
function CSSMotionList2() {
var _this;
_classCallCheck(this, CSSMotionList2);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _super.call.apply(_super, [this].concat(args));
_defineProperty(_assertThisInitialized(_this), "state", {
keyEntities: []
});
_defineProperty(_assertThisInitialized(_this), "removeKey", function(removeKey) {
var keyEntities = _this.state.keyEntities;
var nextKeyEntities = keyEntities.map(function(entity) {
if (entity.key !== removeKey)
return entity;
return _objectSpread2(_objectSpread2({}, entity), {}, {
status: STATUS_REMOVED
});
});
_this.setState({
keyEntities: nextKeyEntities
});
return nextKeyEntities.filter(function(_ref) {
var status = _ref.status;
return status !== STATUS_REMOVED;
}).length;
});
return _this;
}
_createClass(CSSMotionList2, [{
key: "render",
value: function render2() {
var _this2 = this;
var keyEntities = this.state.keyEntities;
var _this$props = this.props, component = _this$props.component, children = _this$props.children, _onVisibleChanged = _this$props.onVisibleChanged, onAllRemoved = _this$props.onAllRemoved, restProps = _objectWithoutProperties(_this$props, _excluded$f);
var Component = component || React__namespace.Fragment;
var motionProps = {};
MOTION_PROP_NAMES.forEach(function(prop) {
motionProps[prop] = restProps[prop];
delete restProps[prop];
});
delete restProps.keys;
return /* @__PURE__ */ React__namespace.createElement(Component, restProps, keyEntities.map(function(_ref2, index2) {
var status = _ref2.status, eventProps = _objectWithoutProperties(_ref2, _excluded2$2);
var visible = status === STATUS_ADD || status === STATUS_KEEP;
return /* @__PURE__ */ React__namespace.createElement(CSSMotion$1, _extends$1({}, motionProps, {
key: eventProps.key,
visible,
eventProps,
onVisibleChanged: function onVisibleChanged(changedVisible) {
_onVisibleChanged === null || _onVisibleChanged === void 0 ? void 0 : _onVisibleChanged(changedVisible, {
key: eventProps.key
});
if (!changedVisible) {
var restKeysCount = _this2.removeKey(eventProps.key);
if (restKeysCount === 0 && onAllRemoved) {
onAllRemoved();
}
}
}
}), function(props, ref) {
return children(_objectSpread2(_objectSpread2({}, props), {}, {
index: index2
}), ref);
});
}));
}
}], [{
key: "getDerivedStateFromProps",
value: function getDerivedStateFromProps(_ref3, _ref4) {
var keys2 = _ref3.keys;
var keyEntities = _ref4.keyEntities;
var parsedKeyObjects = parseKeys(keys2);
var mixedKeyEntities = diffKeys(keyEntities, parsedKeyObjects);
return {
keyEntities: mixedKeyEntities.filter(function(entity) {
var prevEntity = keyEntities.find(function(_ref5) {
var key = _ref5.key;
return entity.key === key;
});
if (prevEntity && prevEntity.status === STATUS_REMOVED && entity.status === STATUS_REMOVE) {
return false;
}
return true;
})
};
}
}]);
return CSSMotionList2;
}(React__namespace.Component);
_defineProperty(CSSMotionList, "defaultProps", {
component: "div"
});
return CSSMotionList;
}
genCSSMotionList(supportTransition);
function MotionWrapper(props) {
const {
children
} = props;
const [, token2] = useToken();
const {
motion
} = token2;
const needWrapMotionProviderRef = React__namespace.useRef(false);
needWrapMotionProviderRef.current = needWrapMotionProviderRef.current || motion === false;
if (needWrapMotionProviderRef.current) {
return /* @__PURE__ */ React__namespace.createElement(MotionProvider, {
motion
}, children);
}
return children;
}
const PropWarning = () => null;
var __rest$5 = globalThis && globalThis.__rest || function(s, e2) {
var t2 = {};
for (var p2 in s)
if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0)
t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i]))
t2[p2[i]] = s[p2[i]];
}
return t2;
};
const PASSED_PROPS = ["getTargetContainer", "getPopupContainer", "renderEmpty", "pageHeader", "input", "pagination", "form", "select", "button"];
const defaultPrefixCls = "ant";
let globalPrefixCls;
function getGlobalPrefixCls() {
return globalPrefixCls || defaultPrefixCls;
}
function isLegacyTheme(theme) {
return Object.keys(theme).some((key) => key.endsWith("Color"));
}
const setGlobalConfig = (_ref) => {
let {
prefixCls,
iconPrefixCls,
theme
} = _ref;
if (prefixCls !== void 0) {
globalPrefixCls = prefixCls;
}
if (theme) {
if (isLegacyTheme(theme)) {
registerTheme(getGlobalPrefixCls(), theme);
}
}
};
const ProviderChildren = (props) => {
const {
children,
csp: customCsp,
autoInsertSpaceInButton,
alert: alert2,
anchor,
form,
locale: locale2,
componentSize,
direction,
space,
virtual,
dropdownMatchSelectWidth,
popupMatchSelectWidth,
popupOverflow,
legacyLocale,
parentContext,
iconPrefixCls: customIconPrefixCls,
theme,
componentDisabled,
segmented,
statistic: statistic2,
spin,
calendar,
carousel,
cascader,
collapse,
typography,
checkbox,
descriptions,
divider,
drawer,
skeleton,
steps,
image,
layout,
list,
mentions,
modal,
progress,
result,
slider,
breadcrumb,
menu,
pagination,
input,
empty,
badge,
radio,
rate,
switch: SWITCH,
transfer,
avatar,
message,
tag,
table,
card,
tabs,
timeline,
timePicker,
upload,
notification,
tree,
colorPicker,
datePicker,
rangePicker,
flex,
wave,
dropdown,
warning: warningConfig
} = props;
const getPrefixCls = React__namespace.useCallback((suffixCls, customizePrefixCls) => {
const {
prefixCls
} = props;
if (customizePrefixCls) {
return customizePrefixCls;
}
const mergedPrefixCls = prefixCls || parentContext.getPrefixCls("");
return suffixCls ? `${mergedPrefixCls}-${suffixCls}` : mergedPrefixCls;
}, [parentContext.getPrefixCls, props.prefixCls]);
const iconPrefixCls = customIconPrefixCls || parentContext.iconPrefixCls || defaultIconPrefixCls;
const csp = customCsp || parentContext.csp;
useStyle$4(iconPrefixCls, csp);
const mergedTheme = useTheme(theme, parentContext.theme);
const baseConfig = {
csp,
autoInsertSpaceInButton,
alert: alert2,
anchor,
locale: locale2 || legacyLocale,
direction,
space,
virtual,
popupMatchSelectWidth: popupMatchSelectWidth !== null && popupMatchSelectWidth !== void 0 ? popupMatchSelectWidth : dropdownMatchSelectWidth,
popupOverflow,
getPrefixCls,
iconPrefixCls,
theme: mergedTheme,
segmented,
statistic: statistic2,
spin,
calendar,
carousel,
cascader,
collapse,
typography,
checkbox,
descriptions,
divider,
drawer,
skeleton,
steps,
image,
input,
layout,
list,
mentions,
modal,
progress,
result,
slider,
breadcrumb,
menu,
pagination,
empty,
badge,
radio,
rate,
switch: SWITCH,
transfer,
avatar,
message,
tag,
table,
card,
tabs,
timeline,
timePicker,
upload,
notification,
tree,
colorPicker,
datePicker,
rangePicker,
flex,
wave,
dropdown,
warning: warningConfig
};
const config = Object.assign({}, parentContext);
Object.keys(baseConfig).forEach((key) => {
if (baseConfig[key] !== void 0) {
config[key] = baseConfig[key];
}
});
PASSED_PROPS.forEach((propName) => {
const propValue = props[propName];
if (propValue) {
config[propName] = propValue;
}
});
const memoedConfig = useMemo(() => config, config, (prevConfig, currentConfig) => {
const prevKeys = Object.keys(prevConfig);
const currentKeys = Object.keys(currentConfig);
return prevKeys.length !== currentKeys.length || prevKeys.some((key) => prevConfig[key] !== currentConfig[key]);
});
const memoIconContextValue = React__namespace.useMemo(() => ({
prefixCls: iconPrefixCls,
csp
}), [iconPrefixCls, csp]);
let childNode = /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, /* @__PURE__ */ React__namespace.createElement(PropWarning, {
dropdownMatchSelectWidth
}), children);
const validateMessages = React__namespace.useMemo(() => {
var _a2, _b, _c, _d;
return merge$1(((_a2 = defaultLocale.Form) === null || _a2 === void 0 ? void 0 : _a2.defaultValidateMessages) || {}, ((_c = (_b = memoedConfig.locale) === null || _b === void 0 ? void 0 : _b.Form) === null || _c === void 0 ? void 0 : _c.defaultValidateMessages) || {}, ((_d = memoedConfig.form) === null || _d === void 0 ? void 0 : _d.validateMessages) || {}, (form === null || form === void 0 ? void 0 : form.validateMessages) || {});
}, [memoedConfig, form === null || form === void 0 ? void 0 : form.validateMessages]);
if (Object.keys(validateMessages).length > 0) {
childNode = /* @__PURE__ */ React__namespace.createElement(ValidateMessagesContext.Provider, {
value: validateMessages
}, childNode);
}
if (locale2) {
childNode = /* @__PURE__ */ React__namespace.createElement(LocaleProvider$1, {
locale: locale2,
_ANT_MARK__: ANT_MARK
}, childNode);
}
if (iconPrefixCls || csp) {
childNode = /* @__PURE__ */ React__namespace.createElement(Context$2.Provider, {
value: memoIconContextValue
}, childNode);
}
if (componentSize) {
childNode = /* @__PURE__ */ React__namespace.createElement(SizeContextProvider, {
size: componentSize
}, childNode);
}
childNode = /* @__PURE__ */ React__namespace.createElement(MotionWrapper, null, childNode);
const memoTheme = React__namespace.useMemo(() => {
const _a2 = mergedTheme || {}, {
algorithm,
token: token2,
components,
cssVar
} = _a2, rest = __rest$5(_a2, ["algorithm", "token", "components", "cssVar"]);
const themeObj = algorithm && (!Array.isArray(algorithm) || algorithm.length > 0) ? createTheme(algorithm) : defaultTheme;
const parsedComponents = {};
Object.entries(components || {}).forEach((_ref2) => {
let [componentName, componentToken] = _ref2;
const parsedToken = Object.assign({}, componentToken);
if ("algorithm" in parsedToken) {
if (parsedToken.algorithm === true) {
parsedToken.theme = themeObj;
} else if (Array.isArray(parsedToken.algorithm) || typeof parsedToken.algorithm === "function") {
parsedToken.theme = createTheme(parsedToken.algorithm);
}
delete parsedToken.algorithm;
}
parsedComponents[componentName] = parsedToken;
});
const mergedToken = Object.assign(Object.assign({}, seedToken$1), token2);
return Object.assign(Object.assign({}, rest), {
theme: themeObj,
token: mergedToken,
components: parsedComponents,
override: Object.assign({
override: mergedToken
}, parsedComponents),
cssVar
});
}, [mergedTheme]);
if (theme) {
childNode = /* @__PURE__ */ React__namespace.createElement(DesignTokenContext.Provider, {
value: memoTheme
}, childNode);
}
if (memoedConfig.warning) {
childNode = /* @__PURE__ */ React__namespace.createElement(WarningContext.Provider, {
value: memoedConfig.warning
}, childNode);
}
if (componentDisabled !== void 0) {
childNode = /* @__PURE__ */ React__namespace.createElement(DisabledContextProvider, {
disabled: componentDisabled
}, childNode);
}
return /* @__PURE__ */ React__namespace.createElement(ConfigContext.Provider, {
value: memoedConfig
}, childNode);
};
const ConfigProvider = (props) => {
const context = React__namespace.useContext(ConfigContext);
const antLocale = React__namespace.useContext(LocaleContext$1);
return /* @__PURE__ */ React__namespace.createElement(ProviderChildren, Object.assign({
parentContext: context,
legacyLocale: antLocale
}, props));
};
ConfigProvider.ConfigContext = ConfigContext;
ConfigProvider.SizeContext = SizeContext$1;
ConfigProvider.config = setGlobalConfig;
ConfigProvider.useConfig = useConfig;
Object.defineProperty(ConfigProvider, "SizeContext", {
get: () => {
return SizeContext$1;
}
});
function getRoot(ele) {
var _ele$getRootNode;
return ele === null || ele === void 0 || (_ele$getRootNode = ele.getRootNode) === null || _ele$getRootNode === void 0 ? void 0 : _ele$getRootNode.call(ele);
}
function inShadow(ele) {
return getRoot(ele) instanceof ShadowRoot;
}
function getShadowRoot(ele) {
return inShadow(ele) ? getRoot(ele) : null;
}
function camelCase(input) {
return input.replace(/-(.)/g, function(match2, g2) {
return g2.toUpperCase();
});
}
function warning$1(valid, message) {
warningOnce(valid, "[@ant-design/icons] ".concat(message));
}
function isIconDefinition(target) {
return _typeof(target) === "object" && typeof target.name === "string" && typeof target.theme === "string" && (_typeof(target.icon) === "object" || typeof target.icon === "function");
}
function normalizeAttrs() {
var attrs = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
return Object.keys(attrs).reduce(function(acc, key) {
var val = attrs[key];
switch (key) {
case "class":
acc.className = val;
delete acc.class;
break;
default:
delete acc[key];
acc[camelCase(key)] = val;
}
return acc;
}, {});
}
function generate(node2, key, rootProps) {
if (!rootProps) {
return /* @__PURE__ */ React.createElement(node2.tag, _objectSpread2({
key
}, normalizeAttrs(node2.attrs)), (node2.children || []).map(function(child, index2) {
return generate(child, "".concat(key, "-").concat(node2.tag, "-").concat(index2));
}));
}
return /* @__PURE__ */ React.createElement(node2.tag, _objectSpread2(_objectSpread2({
key
}, normalizeAttrs(node2.attrs)), rootProps), (node2.children || []).map(function(child, index2) {
return generate(child, "".concat(key, "-").concat(node2.tag, "-").concat(index2));
}));
}
function getSecondaryColor(primaryColor) {
return generate$1(primaryColor)[0];
}
function normalizeTwoToneColors(twoToneColor) {
if (!twoToneColor) {
return [];
}
return Array.isArray(twoToneColor) ? twoToneColor : [twoToneColor];
}
var iconStyles = "\n.anticon {\n display: inline-block;\n color: inherit;\n font-style: normal;\n line-height: 0;\n text-align: center;\n text-transform: none;\n vertical-align: -0.125em;\n text-rendering: optimizeLegibility;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.anticon > * {\n line-height: 1;\n}\n\n.anticon svg {\n display: inline-block;\n}\n\n.anticon::before {\n display: none;\n}\n\n.anticon .anticon-icon {\n display: block;\n}\n\n.anticon[tabindex] {\n cursor: pointer;\n}\n\n.anticon-spin::before,\n.anticon-spin {\n display: inline-block;\n -webkit-animation: loadingCircle 1s infinite linear;\n animation: loadingCircle 1s infinite linear;\n}\n\n@-webkit-keyframes loadingCircle {\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes loadingCircle {\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n";
var useInsertStyles = function useInsertStyles2(eleRef) {
var _useContext = React.useContext(Context$2), csp = _useContext.csp, prefixCls = _useContext.prefixCls;
var mergedStyleStr = iconStyles;
if (prefixCls) {
mergedStyleStr = mergedStyleStr.replace(/anticon/g, prefixCls);
}
React.useEffect(function() {
var ele = eleRef.current;
var shadowRoot = getShadowRoot(ele);
updateCSS(mergedStyleStr, "@ant-design-icons", {
prepend: true,
csp,
attachTo: shadowRoot
});
}, []);
};
var _excluded$e = ["icon", "className", "onClick", "style", "primaryColor", "secondaryColor"];
var twoToneColorPalette = {
primaryColor: "#333",
secondaryColor: "#E6E6E6",
calculated: false
};
function setTwoToneColors(_ref) {
var primaryColor = _ref.primaryColor, secondaryColor = _ref.secondaryColor;
twoToneColorPalette.primaryColor = primaryColor;
twoToneColorPalette.secondaryColor = secondaryColor || getSecondaryColor(primaryColor);
twoToneColorPalette.calculated = !!secondaryColor;
}
function getTwoToneColors() {
return _objectSpread2({}, twoToneColorPalette);
}
var IconBase = function IconBase2(props) {
var icon2 = props.icon, className = props.className, onClick = props.onClick, style2 = props.style, primaryColor = props.primaryColor, secondaryColor = props.secondaryColor, restProps = _objectWithoutProperties(props, _excluded$e);
var svgRef = React__namespace.useRef();
var colors = twoToneColorPalette;
if (primaryColor) {
colors = {
primaryColor,
secondaryColor: secondaryColor || getSecondaryColor(primaryColor)
};
}
useInsertStyles(svgRef);
warning$1(isIconDefinition(icon2), "icon should be icon definiton, but got ".concat(icon2));
if (!isIconDefinition(icon2)) {
return null;
}
var target = icon2;
if (target && typeof target.icon === "function") {
target = _objectSpread2(_objectSpread2({}, target), {}, {
icon: target.icon(colors.primaryColor, colors.secondaryColor)
});
}
return generate(target.icon, "svg-".concat(target.name), _objectSpread2(_objectSpread2({
className,
onClick,
style: style2,
"data-icon": target.name,
width: "1em",
height: "1em",
fill: "currentColor",
"aria-hidden": "true"
}, restProps), {}, {
ref: svgRef
}));
};
IconBase.displayName = "IconReact";
IconBase.getTwoToneColors = getTwoToneColors;
IconBase.setTwoToneColors = setTwoToneColors;
const ReactIcon = IconBase;
function setTwoToneColor(twoToneColor) {
var _normalizeTwoToneColo = normalizeTwoToneColors(twoToneColor), _normalizeTwoToneColo2 = _slicedToArray(_normalizeTwoToneColo, 2), primaryColor = _normalizeTwoToneColo2[0], secondaryColor = _normalizeTwoToneColo2[1];
return ReactIcon.setTwoToneColors({
primaryColor,
secondaryColor
});
}
function getTwoToneColor() {
var colors = ReactIcon.getTwoToneColors();
if (!colors.calculated) {
return colors.primaryColor;
}
return [colors.primaryColor, colors.secondaryColor];
}
var _excluded$d = ["className", "icon", "spin", "rotate", "tabIndex", "onClick", "twoToneColor"];
setTwoToneColor(blue.primary);
var Icon = /* @__PURE__ */ React__namespace.forwardRef(function(props, ref) {
var _classNames;
var className = props.className, icon2 = props.icon, spin = props.spin, rotate = props.rotate, tabIndex = props.tabIndex, onClick = props.onClick, twoToneColor = props.twoToneColor, restProps = _objectWithoutProperties(props, _excluded$d);
var _React$useContext = React__namespace.useContext(Context$2), _React$useContext$pre = _React$useContext.prefixCls, prefixCls = _React$useContext$pre === void 0 ? "anticon" : _React$useContext$pre, rootClassName = _React$useContext.rootClassName;
var classString = classNames(rootClassName, prefixCls, (_classNames = {}, _defineProperty(_classNames, "".concat(prefixCls, "-").concat(icon2.name), !!icon2.name), _defineProperty(_classNames, "".concat(prefixCls, "-spin"), !!spin || icon2.name === "loading"), _classNames), className);
var iconTabIndex = tabIndex;
if (iconTabIndex === void 0 && onClick) {
iconTabIndex = -1;
}
var svgStyle = rotate ? {
msTransform: "rotate(".concat(rotate, "deg)"),
transform: "rotate(".concat(rotate, "deg)")
} : void 0;
var _normalizeTwoToneColo = normalizeTwoToneColors(twoToneColor), _normalizeTwoToneColo2 = _slicedToArray(_normalizeTwoToneColo, 2), primaryColor = _normalizeTwoToneColo2[0], secondaryColor = _normalizeTwoToneColo2[1];
return /* @__PURE__ */ React__namespace.createElement("span", _extends$1({
role: "img",
"aria-label": icon2.name
}, restProps, {
ref,
tabIndex: iconTabIndex,
onClick,
className: classString
}), /* @__PURE__ */ React__namespace.createElement(ReactIcon, {
icon: icon2,
primaryColor,
secondaryColor,
style: svgStyle
}));
});
Icon.displayName = "AntdIcon";
Icon.getTwoToneColor = getTwoToneColor;
Icon.setTwoToneColor = setTwoToneColor;
const AntdIcon = Icon;
var CloseCircleFilled$2 = { "icon": { "tag": "svg", "attrs": { "fill-rule": "evenodd", "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64zm127.98 274.82h-.04l-.08.06L512 466.75 384.14 338.88c-.04-.05-.06-.06-.08-.06a.12.12 0 00-.07 0c-.03 0-.05.01-.09.05l-45.02 45.02a.2.2 0 00-.05.09.12.12 0 000 .07v.02a.27.27 0 00.06.06L466.75 512 338.88 639.86c-.05.04-.06.06-.06.08a.12.12 0 000 .07c0 .03.01.05.05.09l45.02 45.02a.2.2 0 00.09.05.12.12 0 00.07 0c.02 0 .04-.01.08-.05L512 557.25l127.86 127.87c.04.04.06.05.08.05a.12.12 0 00.07 0c.03 0 .05-.01.09-.05l45.02-45.02a.2.2 0 00.05-.09.12.12 0 000-.07v-.02a.27.27 0 00-.05-.06L557.25 512l127.87-127.86c.04-.04.05-.06.05-.08a.12.12 0 000-.07c0-.03-.01-.05-.05-.09l-45.02-45.02a.2.2 0 00-.09-.05.12.12 0 00-.07 0z" } }] }, "name": "close-circle", "theme": "filled" };
const CloseCircleFilledSvg = CloseCircleFilled$2;
var CloseCircleFilled = function CloseCircleFilled2(props, ref) {
return /* @__PURE__ */ React__namespace.createElement(AntdIcon, _extends$1({}, props, {
ref,
icon: CloseCircleFilledSvg
}));
};
const CloseCircleFilled$1 = /* @__PURE__ */ React__namespace.forwardRef(CloseCircleFilled);
var CloseOutlined$2 = { "icon": { "tag": "svg", "attrs": { "fill-rule": "evenodd", "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M799.86 166.31c.02 0 .04.02.08.06l57.69 57.7c.04.03.05.05.06.08a.12.12 0 010 .06c0 .03-.02.05-.06.09L569.93 512l287.7 287.7c.04.04.05.06.06.09a.12.12 0 010 .07c0 .02-.02.04-.06.08l-57.7 57.69c-.03.04-.05.05-.07.06a.12.12 0 01-.07 0c-.03 0-.05-.02-.09-.06L512 569.93l-287.7 287.7c-.04.04-.06.05-.09.06a.12.12 0 01-.07 0c-.02 0-.04-.02-.08-.06l-57.69-57.7c-.04-.03-.05-.05-.06-.07a.12.12 0 010-.07c0-.03.02-.05.06-.09L454.07 512l-287.7-287.7c-.04-.04-.05-.06-.06-.09a.12.12 0 010-.07c0-.02.02-.04.06-.08l57.7-57.69c.03-.04.05-.05.07-.06a.12.12 0 01.07 0c.03 0 .05.02.09.06L512 454.07l287.7-287.7c.04-.04.06-.05.09-.06a.12.12 0 01.07 0z" } }] }, "name": "close", "theme": "outlined" };
const CloseOutlinedSvg = CloseOutlined$2;
var CloseOutlined = function CloseOutlined2(props, ref) {
return /* @__PURE__ */ React__namespace.createElement(AntdIcon, _extends$1({}, props, {
ref,
icon: CloseOutlinedSvg
}));
};
const CloseOutlined$1 = /* @__PURE__ */ React__namespace.forwardRef(CloseOutlined);
var attributes = "accept acceptCharset accessKey action allowFullScreen allowTransparency\n alt async autoComplete autoFocus autoPlay capture cellPadding cellSpacing challenge\n charSet checked classID className colSpan cols content contentEditable contextMenu\n controls coords crossOrigin data dateTime default defer dir disabled download draggable\n encType form formAction formEncType formMethod formNoValidate formTarget frameBorder\n headers height hidden high href hrefLang htmlFor httpEquiv icon id inputMode integrity\n is keyParams keyType kind label lang list loop low manifest marginHeight marginWidth max maxLength media\n mediaGroup method min minLength multiple muted name noValidate nonce open\n optimum pattern placeholder poster preload radioGroup readOnly rel required\n reversed role rowSpan rows sandbox scope scoped scrolling seamless selected\n shape size sizes span spellCheck src srcDoc srcLang srcSet start step style\n summary tabIndex target title type useMap value width wmode wrap";
var eventsName = "onCopy onCut onPaste onCompositionEnd onCompositionStart onCompositionUpdate onKeyDown\n onKeyPress onKeyUp onFocus onBlur onChange onInput onSubmit onClick onContextMenu onDoubleClick\n onDrag onDragEnd onDragEnter onDragExit onDragLeave onDragOver onDragStart onDrop onMouseDown\n onMouseEnter onMouseLeave onMouseMove onMouseOut onMouseOver onMouseUp onSelect onTouchCancel\n onTouchEnd onTouchMove onTouchStart onScroll onWheel onAbort onCanPlay onCanPlayThrough\n onDurationChange onEmptied onEncrypted onEnded onError onLoadedData onLoadedMetadata\n onLoadStart onPause onPlay onPlaying onProgress onRateChange onSeeked onSeeking onStalled onSuspend onTimeUpdate onVolumeChange onWaiting onLoad onError";
var propList = "".concat(attributes, " ").concat(eventsName).split(/[\s\n]+/);
var ariaPrefix = "aria-";
var dataPrefix = "data-";
function match(key, prefix) {
return key.indexOf(prefix) === 0;
}
function pickAttrs(props) {
var ariaOnly = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
var mergedConfig;
if (ariaOnly === false) {
mergedConfig = {
aria: true,
data: true,
attr: true
};
} else if (ariaOnly === true) {
mergedConfig = {
aria: true
};
} else {
mergedConfig = _objectSpread2({}, ariaOnly);
}
var attrs = {};
Object.keys(props).forEach(function(key) {
if (
// Aria
mergedConfig.aria && (key === "role" || match(key, ariaPrefix)) || // Data
mergedConfig.data && match(key, dataPrefix) || // Attr
mergedConfig.attr && propList.includes(key)
) {
attrs[key] = props[key];
}
});
return attrs;
}
const {
isValidElement
} = React__namespace;
function isFragment(child) {
return child && isValidElement(child) && child.type === React__namespace.Fragment;
}
function replaceElement(element, replacement, props) {
if (!isValidElement(element)) {
return replacement;
}
return /* @__PURE__ */ React__namespace.cloneElement(element, typeof props === "function" ? props(element.props || {}) : props);
}
function cloneElement(element, props) {
return replaceElement(element, element, props);
}
const useCSSVarCls = (prefixCls) => {
const [, , , , cssVar] = useToken();
return cssVar ? `${prefixCls}-css-var` : "";
};
const useCSSVarCls$1 = useCSSVarCls;
var KeyCode = {
/**
* MAC_ENTER
*/
MAC_ENTER: 3,
/**
* BACKSPACE
*/
BACKSPACE: 8,
/**
* TAB
*/
TAB: 9,
/**
* NUMLOCK on FF/Safari Mac
*/
NUM_CENTER: 12,
// NUMLOCK on FF/Safari Mac
/**
* ENTER
*/
ENTER: 13,
/**
* SHIFT
*/
SHIFT: 16,
/**
* CTRL
*/
CTRL: 17,
/**
* ALT
*/
ALT: 18,
/**
* PAUSE
*/
PAUSE: 19,
/**
* CAPS_LOCK
*/
CAPS_LOCK: 20,
/**
* ESC
*/
ESC: 27,
/**
* SPACE
*/
SPACE: 32,
/**
* PAGE_UP
*/
PAGE_UP: 33,
// also NUM_NORTH_EAST
/**
* PAGE_DOWN
*/
PAGE_DOWN: 34,
// also NUM_SOUTH_EAST
/**
* END
*/
END: 35,
// also NUM_SOUTH_WEST
/**
* HOME
*/
HOME: 36,
// also NUM_NORTH_WEST
/**
* LEFT
*/
LEFT: 37,
// also NUM_WEST
/**
* UP
*/
UP: 38,
// also NUM_NORTH
/**
* RIGHT
*/
RIGHT: 39,
// also NUM_EAST
/**
* DOWN
*/
DOWN: 40,
// also NUM_SOUTH
/**
* PRINT_SCREEN
*/
PRINT_SCREEN: 44,
/**
* INSERT
*/
INSERT: 45,
// also NUM_INSERT
/**
* DELETE
*/
DELETE: 46,
// also NUM_DELETE
/**
* ZERO
*/
ZERO: 48,
/**
* ONE
*/
ONE: 49,
/**
* TWO
*/
TWO: 50,
/**
* THREE
*/
THREE: 51,
/**
* FOUR
*/
FOUR: 52,
/**
* FIVE
*/
FIVE: 53,
/**
* SIX
*/
SIX: 54,
/**
* SEVEN
*/
SEVEN: 55,
/**
* EIGHT
*/
EIGHT: 56,
/**
* NINE
*/
NINE: 57,
/**
* QUESTION_MARK
*/
QUESTION_MARK: 63,
// needs localization
/**
* A
*/
A: 65,
/**
* B
*/
B: 66,
/**
* C
*/
C: 67,
/**
* D
*/
D: 68,
/**
* E
*/
E: 69,
/**
* F
*/
F: 70,
/**
* G
*/
G: 71,
/**
* H
*/
H: 72,
/**
* I
*/
I: 73,
/**
* J
*/
J: 74,
/**
* K
*/
K: 75,
/**
* L
*/
L: 76,
/**
* M
*/
M: 77,
/**
* N
*/
N: 78,
/**
* O
*/
O: 79,
/**
* P
*/
P: 80,
/**
* Q
*/
Q: 81,
/**
* R
*/
R: 82,
/**
* S
*/
S: 83,
/**
* T
*/
T: 84,
/**
* U
*/
U: 85,
/**
* V
*/
V: 86,
/**
* W
*/
W: 87,
/**
* X
*/
X: 88,
/**
* Y
*/
Y: 89,
/**
* Z
*/
Z: 90,
/**
* META
*/
META: 91,
// WIN_KEY_LEFT
/**
* WIN_KEY_RIGHT
*/
WIN_KEY_RIGHT: 92,
/**
* CONTEXT_MENU
*/
CONTEXT_MENU: 93,
/**
* NUM_ZERO
*/
NUM_ZERO: 96,
/**
* NUM_ONE
*/
NUM_ONE: 97,
/**
* NUM_TWO
*/
NUM_TWO: 98,
/**
* NUM_THREE
*/
NUM_THREE: 99,
/**
* NUM_FOUR
*/
NUM_FOUR: 100,
/**
* NUM_FIVE
*/
NUM_FIVE: 101,
/**
* NUM_SIX
*/
NUM_SIX: 102,
/**
* NUM_SEVEN
*/
NUM_SEVEN: 103,
/**
* NUM_EIGHT
*/
NUM_EIGHT: 104,
/**
* NUM_NINE
*/
NUM_NINE: 105,
/**
* NUM_MULTIPLY
*/
NUM_MULTIPLY: 106,
/**
* NUM_PLUS
*/
NUM_PLUS: 107,
/**
* NUM_MINUS
*/
NUM_MINUS: 109,
/**
* NUM_PERIOD
*/
NUM_PERIOD: 110,
/**
* NUM_DIVISION
*/
NUM_DIVISION: 111,
/**
* F1
*/
F1: 112,
/**
* F2
*/
F2: 113,
/**
* F3
*/
F3: 114,
/**
* F4
*/
F4: 115,
/**
* F5
*/
F5: 116,
/**
* F6
*/
F6: 117,
/**
* F7
*/
F7: 118,
/**
* F8
*/
F8: 119,
/**
* F9
*/
F9: 120,
/**
* F10
*/
F10: 121,
/**
* F11
*/
F11: 122,
/**
* F12
*/
F12: 123,
/**
* NUMLOCK
*/
NUMLOCK: 144,
/**
* SEMICOLON
*/
SEMICOLON: 186,
// needs localization
/**
* DASH
*/
DASH: 189,
// needs localization
/**
* EQUALS
*/
EQUALS: 187,
// needs localization
/**
* COMMA
*/
COMMA: 188,
// needs localization
/**
* PERIOD
*/
PERIOD: 190,
// needs localization
/**
* SLASH
*/
SLASH: 191,
// needs localization
/**
* APOSTROPHE
*/
APOSTROPHE: 192,
// needs localization
/**
* SINGLE_QUOTE
*/
SINGLE_QUOTE: 222,
// needs localization
/**
* OPEN_SQUARE_BRACKET
*/
OPEN_SQUARE_BRACKET: 219,
// needs localization
/**
* BACKSLASH
*/
BACKSLASH: 220,
// needs localization
/**
* CLOSE_SQUARE_BRACKET
*/
CLOSE_SQUARE_BRACKET: 221,
// needs localization
/**
* WIN_KEY
*/
WIN_KEY: 224,
/**
* MAC_FF_META
*/
MAC_FF_META: 224,
// Firefox (Gecko) fires this for the meta key instead of 91
/**
* WIN_IME
*/
WIN_IME: 229,
// ======================== Function ========================
/**
* whether text and modified key is entered at the same time.
*/
isTextModifyingKeyEvent: function isTextModifyingKeyEvent(e2) {
var keyCode = e2.keyCode;
if (e2.altKey && !e2.ctrlKey || e2.metaKey || // Function keys don't generate text
keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12) {
return false;
}
switch (keyCode) {
case KeyCode.ALT:
case KeyCode.CAPS_LOCK:
case KeyCode.CONTEXT_MENU:
case KeyCode.CTRL:
case KeyCode.DOWN:
case KeyCode.END:
case KeyCode.ESC:
case KeyCode.HOME:
case KeyCode.INSERT:
case KeyCode.LEFT:
case KeyCode.MAC_FF_META:
case KeyCode.META:
case KeyCode.NUMLOCK:
case KeyCode.NUM_CENTER:
case KeyCode.PAGE_DOWN:
case KeyCode.PAGE_UP:
case KeyCode.PAUSE:
case KeyCode.PRINT_SCREEN:
case KeyCode.RIGHT:
case KeyCode.SHIFT:
case KeyCode.UP:
case KeyCode.WIN_KEY:
case KeyCode.WIN_KEY_RIGHT:
return false;
default:
return true;
}
},
/**
* whether character is entered.
*/
isCharacterKey: function isCharacterKey(keyCode) {
if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) {
return true;
}
if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) {
return true;
}
if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) {
return true;
}
if (window.navigator.userAgent.indexOf("WebKit") !== -1 && keyCode === 0) {
return true;
}
switch (keyCode) {
case KeyCode.SPACE:
case KeyCode.QUESTION_MARK:
case KeyCode.NUM_PLUS:
case KeyCode.NUM_MINUS:
case KeyCode.NUM_PERIOD:
case KeyCode.NUM_DIVISION:
case KeyCode.SEMICOLON:
case KeyCode.DASH:
case KeyCode.EQUALS:
case KeyCode.COMMA:
case KeyCode.PERIOD:
case KeyCode.SLASH:
case KeyCode.APOSTROPHE:
case KeyCode.SINGLE_QUOTE:
case KeyCode.OPEN_SQUARE_BRACKET:
case KeyCode.BACKSLASH:
case KeyCode.CLOSE_SQUARE_BRACKET:
return true;
default:
return false;
}
}
};
var LoadingOutlined$2 = { "icon": { "tag": "svg", "attrs": { "viewBox": "0 0 1024 1024", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z" } }] }, "name": "loading", "theme": "outlined" };
const LoadingOutlinedSvg = LoadingOutlined$2;
var LoadingOutlined = function LoadingOutlined2(props, ref) {
return /* @__PURE__ */ React__namespace.createElement(AntdIcon, _extends$1({}, props, {
ref,
icon: LoadingOutlinedSvg
}));
};
const LoadingOutlined$1 = /* @__PURE__ */ React__namespace.forwardRef(LoadingOutlined);
const zIndexContext = /* @__PURE__ */ React.createContext(void 0);
const zIndexContext$1 = zIndexContext;
const CONTAINER_OFFSET = 100;
const CONTAINER_OFFSET_MAX_COUNT = 10;
const CONTAINER_MAX_OFFSET = CONTAINER_OFFSET * CONTAINER_OFFSET_MAX_COUNT;
const containerBaseZIndexOffset = {
Modal: CONTAINER_OFFSET,
Drawer: CONTAINER_OFFSET,
Popover: CONTAINER_OFFSET,
Popconfirm: CONTAINER_OFFSET,
Tooltip: CONTAINER_OFFSET,
Tour: CONTAINER_OFFSET
};
const consumerBaseZIndexOffset = {
SelectLike: 50,
Dropdown: 50,
DatePicker: 50,
Menu: 50,
ImagePreview: 1
};
function isContainerType(type4) {
return type4 in containerBaseZIndexOffset;
}
function useZIndex(componentType, customZIndex) {
const [, token2] = useToken();
const parentZIndex = React.useContext(zIndexContext$1);
const isContainer = isContainerType(componentType);
if (customZIndex !== void 0) {
return [customZIndex, customZIndex];
}
let zIndex = parentZIndex !== null && parentZIndex !== void 0 ? parentZIndex : 0;
if (isContainer) {
zIndex += // Use preset token zIndex by default but not stack when has parent container
(parentZIndex ? 0 : token2.zIndexPopupBase) + // Container offset
containerBaseZIndexOffset[componentType];
zIndex = Math.min(zIndex, token2.zIndexPopupBase + CONTAINER_MAX_OFFSET);
} else {
zIndex += consumerBaseZIndexOffset[componentType];
}
return [parentZIndex === void 0 ? customZIndex : zIndex, zIndex];
}
function _regeneratorRuntime() {
_regeneratorRuntime = function _regeneratorRuntime2() {
return e2;
};
var t2, e2 = {}, r = Object.prototype, n2 = r.hasOwnProperty, o = Object.defineProperty || function(t3, e3, r2) {
t3[e3] = r2.value;
}, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c2 = i.asyncIterator || "@@asyncIterator", u2 = i.toStringTag || "@@toStringTag";
function define(t3, e3, r2) {
return Object.defineProperty(t3, e3, {
value: r2,
enumerable: true,
configurable: true,
writable: true
}), t3[e3];
}
try {
define({}, "");
} catch (t3) {
define = function define2(t4, e3, r2) {
return t4[e3] = r2;
};
}
function wrap(t3, e3, r2, n3) {
var i2 = e3 && e3.prototype instanceof Generator ? e3 : Generator, a2 = Object.create(i2.prototype), c3 = new Context2(n3 || []);
return o(a2, "_invoke", {
value: makeInvokeMethod(t3, r2, c3)
}), a2;
}
function tryCatch(t3, e3, r2) {
try {
return {
type: "normal",
arg: t3.call(e3, r2)
};
} catch (t4) {
return {
type: "throw",
arg: t4
};
}
}
e2.wrap = wrap;
var h2 = "suspendedStart", l2 = "suspendedYield", f2 = "executing", s = "completed", y = {};
function Generator() {
}
function GeneratorFunction() {
}
function GeneratorFunctionPrototype() {
}
var p2 = {};
define(p2, a, function() {
return this;
});
var d2 = Object.getPrototypeOf, v2 = d2 && d2(d2(values([])));
v2 && v2 !== r && n2.call(v2, a) && (p2 = v2);
var g2 = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p2);
function defineIteratorMethods(t3) {
["next", "throw", "return"].forEach(function(e3) {
define(t3, e3, function(t4) {
return this._invoke(e3, t4);
});
});
}
function AsyncIterator(t3, e3) {
function invoke(r3, o2, i2, a2) {
var c3 = tryCatch(t3[r3], t3, o2);
if ("throw" !== c3.type) {
var u3 = c3.arg, h3 = u3.value;
return h3 && "object" == _typeof(h3) && n2.call(h3, "__await") ? e3.resolve(h3.__await).then(function(t4) {
invoke("next", t4, i2, a2);
}, function(t4) {
invoke("throw", t4, i2, a2);
}) : e3.resolve(h3).then(function(t4) {
u3.value = t4, i2(u3);
}, function(t4) {
return invoke("throw", t4, i2, a2);
});
}
a2(c3.arg);
}
var r2;
o(this, "_invoke", {
value: function value(t4, n3) {
function callInvokeWithMethodAndArg() {
return new e3(function(e4, r3) {
invoke(t4, n3, e4, r3);
});
}
return r2 = r2 ? r2.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
}
});
}
function makeInvokeMethod(e3, r2, n3) {
var o2 = h2;
return function(i2, a2) {
if (o2 === f2)
throw new Error("Generator is already running");
if (o2 === s) {
if ("throw" === i2)
throw a2;
return {
value: t2,
done: true
};
}
for (n3.method = i2, n3.arg = a2; ; ) {
var c3 = n3.delegate;
if (c3) {
var u3 = maybeInvokeDelegate(c3, n3);
if (u3) {
if (u3 === y)
continue;
return u3;
}
}
if ("next" === n3.method)
n3.sent = n3._sent = n3.arg;
else if ("throw" === n3.method) {
if (o2 === h2)
throw o2 = s, n3.arg;
n3.dispatchException(n3.arg);
} else
"return" === n3.method && n3.abrupt("return", n3.arg);
o2 = f2;
var p3 = tryCatch(e3, r2, n3);
if ("normal" === p3.type) {
if (o2 = n3.done ? s : l2, p3.arg === y)
continue;
return {
value: p3.arg,
done: n3.done
};
}
"throw" === p3.type && (o2 = s, n3.method = "throw", n3.arg = p3.arg);
}
};
}
function maybeInvokeDelegate(e3, r2) {
var n3 = r2.method, o2 = e3.iterator[n3];
if (o2 === t2)
return r2.delegate = null, "throw" === n3 && e3.iterator["return"] && (r2.method = "return", r2.arg = t2, maybeInvokeDelegate(e3, r2), "throw" === r2.method) || "return" !== n3 && (r2.method = "throw", r2.arg = new TypeError("The iterator does not provide a '" + n3 + "' method")), y;
var i2 = tryCatch(o2, e3.iterator, r2.arg);
if ("throw" === i2.type)
return r2.method = "throw", r2.arg = i2.arg, r2.delegate = null, y;
var a2 = i2.arg;
return a2 ? a2.done ? (r2[e3.resultName] = a2.value, r2.next = e3.nextLoc, "return" !== r2.method && (r2.method = "next", r2.arg = t2), r2.delegate = null, y) : a2 : (r2.method = "throw", r2.arg = new TypeError("iterator result is not an object"), r2.delegate = null, y);
}
function pushTryEntry(t3) {
var e3 = {
tryLoc: t3[0]
};
1 in t3 && (e3.catchLoc = t3[1]), 2 in t3 && (e3.finallyLoc = t3[2], e3.afterLoc = t3[3]), this.tryEntries.push(e3);
}
function resetTryEntry(t3) {
var e3 = t3.completion || {};
e3.type = "normal", delete e3.arg, t3.completion = e3;
}
function Context2(t3) {
this.tryEntries = [{
tryLoc: "root"
}], t3.forEach(pushTryEntry, this), this.reset(true);
}
function values(e3) {
if (e3 || "" === e3) {
var r2 = e3[a];
if (r2)
return r2.call(e3);
if ("function" == typeof e3.next)
return e3;
if (!isNaN(e3.length)) {
var o2 = -1, i2 = function next2() {
for (; ++o2 < e3.length; )
if (n2.call(e3, o2))
return next2.value = e3[o2], next2.done = false, next2;
return next2.value = t2, next2.done = true, next2;
};
return i2.next = i2;
}
}
throw new TypeError(_typeof(e3) + " is not iterable");
}
return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g2, "constructor", {
value: GeneratorFunctionPrototype,
configurable: true
}), o(GeneratorFunctionPrototype, "constructor", {
value: GeneratorFunction,
configurable: true
}), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u2, "GeneratorFunction"), e2.isGeneratorFunction = function(t3) {
var e3 = "function" == typeof t3 && t3.constructor;
return !!e3 && (e3 === GeneratorFunction || "GeneratorFunction" === (e3.displayName || e3.name));
}, e2.mark = function(t3) {
return Object.setPrototypeOf ? Object.setPrototypeOf(t3, GeneratorFunctionPrototype) : (t3.__proto__ = GeneratorFunctionPrototype, define(t3, u2, "GeneratorFunction")), t3.prototype = Object.create(g2), t3;
}, e2.awrap = function(t3) {
return {
__await: t3
};
}, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c2, function() {
return this;
}), e2.AsyncIterator = AsyncIterator, e2.async = function(t3, r2, n3, o2, i2) {
void 0 === i2 && (i2 = Promise);
var a2 = new AsyncIterator(wrap(t3, r2, n3, o2), i2);
return e2.isGeneratorFunction(r2) ? a2 : a2.next().then(function(t4) {
return t4.done ? t4.value : a2.next();
});
}, defineIteratorMethods(g2), define(g2, u2, "Generator"), define(g2, a, function() {
return this;
}), define(g2, "toString", function() {
return "[object Generator]";
}), e2.keys = function(t3) {
var e3 = Object(t3), r2 = [];
for (var n3 in e3)
r2.push(n3);
return r2.reverse(), function next2() {
for (; r2.length; ) {
var t4 = r2.pop();
if (t4 in e3)
return next2.value = t4, next2.done = false, next2;
}
return next2.done = true, next2;
};
}, e2.values = values, Context2.prototype = {
constructor: Context2,
reset: function reset(e3) {
if (this.prev = 0, this.next = 0, this.sent = this._sent = t2, this.done = false, this.delegate = null, this.method = "next", this.arg = t2, this.tryEntries.forEach(resetTryEntry), !e3)
for (var r2 in this)
"t" === r2.charAt(0) && n2.call(this, r2) && !isNaN(+r2.slice(1)) && (this[r2] = t2);
},
stop: function stop() {
this.done = true;
var t3 = this.tryEntries[0].completion;
if ("throw" === t3.type)
throw t3.arg;
return this.rval;
},
dispatchException: function dispatchException(e3) {
if (this.done)
throw e3;
var r2 = this;
function handle(n3, o3) {
return a2.type = "throw", a2.arg = e3, r2.next = n3, o3 && (r2.method = "next", r2.arg = t2), !!o3;
}
for (var o2 = this.tryEntries.length - 1; o2 >= 0; --o2) {
var i2 = this.tryEntries[o2], a2 = i2.completion;
if ("root" === i2.tryLoc)
return handle("end");
if (i2.tryLoc <= this.prev) {
var c3 = n2.call(i2, "catchLoc"), u3 = n2.call(i2, "finallyLoc");
if (c3 && u3) {
if (this.prev < i2.catchLoc)
return handle(i2.catchLoc, true);
if (this.prev < i2.finallyLoc)
return handle(i2.finallyLoc);
} else if (c3) {
if (this.prev < i2.catchLoc)
return handle(i2.catchLoc, true);
} else {
if (!u3)
throw new Error("try statement without catch or finally");
if (this.prev < i2.finallyLoc)
return handle(i2.finallyLoc);
}
}
}
},
abrupt: function abrupt(t3, e3) {
for (var r2 = this.tryEntries.length - 1; r2 >= 0; --r2) {
var o2 = this.tryEntries[r2];
if (o2.tryLoc <= this.prev && n2.call(o2, "finallyLoc") && this.prev < o2.finallyLoc) {
var i2 = o2;
break;
}
}
i2 && ("break" === t3 || "continue" === t3) && i2.tryLoc <= e3 && e3 <= i2.finallyLoc && (i2 = null);
var a2 = i2 ? i2.completion : {};
return a2.type = t3, a2.arg = e3, i2 ? (this.method = "next", this.next = i2.finallyLoc, y) : this.complete(a2);
},
complete: function complete(t3, e3) {
if ("throw" === t3.type)
throw t3.arg;
return "break" === t3.type || "continue" === t3.type ? this.next = t3.arg : "return" === t3.type ? (this.rval = this.arg = t3.arg, this.method = "return", this.next = "end") : "normal" === t3.type && e3 && (this.next = e3), y;
},
finish: function finish(t3) {
for (var e3 = this.tryEntries.length - 1; e3 >= 0; --e3) {
var r2 = this.tryEntries[e3];
if (r2.finallyLoc === t3)
return this.complete(r2.completion, r2.afterLoc), resetTryEntry(r2), y;
}
},
"catch": function _catch(t3) {
for (var e3 = this.tryEntries.length - 1; e3 >= 0; --e3) {
var r2 = this.tryEntries[e3];
if (r2.tryLoc === t3) {
var n3 = r2.completion;
if ("throw" === n3.type) {
var o2 = n3.arg;
resetTryEntry(r2);
}
return o2;
}
}
throw new Error("illegal catch attempt");
},
delegateYield: function delegateYield(e3, r2, n3) {
return this.delegate = {
iterator: values(e3),
resultName: r2,
nextLoc: n3
}, "next" === this.method && (this.arg = t2), y;
}
}, e2;
}
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
try {
var info2 = gen[key](arg);
var value = info2.value;
} catch (error) {
reject(error);
return;
}
if (info2.done) {
resolve(value);
} else {
Promise.resolve(value).then(_next, _throw);
}
}
function _asyncToGenerator(fn) {
return function() {
var self2 = this, args = arguments;
return new Promise(function(resolve, reject) {
var gen = fn.apply(self2, args);
function _next(value) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
}
function _throw(err) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
}
_next(void 0);
});
};
}
var fullClone = _objectSpread2({}, ReactDOM__default__namespace);
var version = fullClone.version, reactRender = fullClone.render, unmountComponentAtNode = fullClone.unmountComponentAtNode;
var createRoot;
try {
var mainVersion = Number((version || "").split(".")[0]);
if (mainVersion >= 18) {
createRoot = fullClone.createRoot;
}
} catch (e2) {
}
function toggleWarning(skip) {
var __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = fullClone.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
if (__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED && _typeof(__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED) === "object") {
__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.usingClientEntryPoint = skip;
}
}
var MARK = "__rc_react_root__";
function modernRender(node2, container) {
toggleWarning(true);
var root = container[MARK] || createRoot(container);
toggleWarning(false);
root.render(node2);
container[MARK] = root;
}
function legacyRender(node2, container) {
reactRender(node2, container);
}
function render(node2, container) {
if (createRoot) {
modernRender(node2, container);
return;
}
legacyRender(node2, container);
}
function modernUnmount(_x) {
return _modernUnmount.apply(this, arguments);
}
function _modernUnmount() {
_modernUnmount = _asyncToGenerator(/* @__PURE__ */ _regeneratorRuntime().mark(function _callee(container) {
return _regeneratorRuntime().wrap(function _callee$(_context) {
while (1)
switch (_context.prev = _context.next) {
case 0:
return _context.abrupt("return", Promise.resolve().then(function() {
var _container$MARK;
(_container$MARK = container[MARK]) === null || _container$MARK === void 0 || _container$MARK.unmount();
delete container[MARK];
}));
case 1:
case "end":
return _context.stop();
}
}, _callee);
}));
return _modernUnmount.apply(this, arguments);
}
function legacyUnmount(container) {
unmountComponentAtNode(container);
}
function unmount(_x2) {
return _unmount.apply(this, arguments);
}
function _unmount() {
_unmount = _asyncToGenerator(/* @__PURE__ */ _regeneratorRuntime().mark(function _callee2(container) {
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
while (1)
switch (_context2.prev = _context2.next) {
case 0:
if (!(createRoot !== void 0)) {
_context2.next = 2;
break;
}
return _context2.abrupt("return", modernUnmount(container));
case 2:
legacyUnmount(container);
case 3:
case "end":
return _context2.stop();
}
}, _callee2);
}));
return _unmount.apply(this, arguments);
}
const getTransitionName = (rootPrefixCls, motion, transitionName) => {
if (transitionName !== void 0) {
return transitionName;
}
return `${rootPrefixCls}-${motion}`;
};
const isVisible = function(element) {
if (!element) {
return false;
}
if (element instanceof Element) {
if (element.offsetParent) {
return true;
}
if (element.getBBox) {
var _getBBox = element.getBBox(), width = _getBBox.width, height = _getBBox.height;
if (width || height) {
return true;
}
}
if (element.getBoundingClientRect) {
var _element$getBoundingC = element.getBoundingClientRect(), _width = _element$getBoundingC.width, _height = _element$getBoundingC.height;
if (_width || _height) {
return true;
}
}
}
return false;
};
const genWaveStyle = (token2) => {
const {
componentCls,
colorPrimary
} = token2;
return {
[componentCls]: {
position: "absolute",
background: "transparent",
pointerEvents: "none",
boxSizing: "border-box",
color: `var(--wave-color, ${colorPrimary})`,
boxShadow: `0 0 0 0 currentcolor`,
opacity: 0.2,
// =================== Motion ===================
"&.wave-motion-appear": {
transition: [`box-shadow 0.4s ${token2.motionEaseOutCirc}`, `opacity 2s ${token2.motionEaseOutCirc}`].join(","),
"&-active": {
boxShadow: `0 0 0 6px currentcolor`,
opacity: 0
},
"&.wave-quick": {
transition: [`box-shadow 0.3s ${token2.motionEaseInOut}`, `opacity 0.35s ${token2.motionEaseInOut}`].join(",")
}
}
}
};
};
const useStyle$3 = genComponentStyleHook("Wave", (token2) => [genWaveStyle(token2)]);
function isNotGrey(color) {
const match2 = (color || "").match(/rgba?\((\d*), (\d*), (\d*)(, [\d.]*)?\)/);
if (match2 && match2[1] && match2[2] && match2[3]) {
return !(match2[1] === match2[2] && match2[2] === match2[3]);
}
return true;
}
function isValidWaveColor(color) {
return color && color !== "#fff" && color !== "#ffffff" && color !== "rgb(255, 255, 255)" && color !== "rgba(255, 255, 255, 1)" && isNotGrey(color) && !/rgba\((?:\d*, ){3}0\)/.test(color) && // any transparent rgba color
color !== "transparent";
}
function getTargetWaveColor(node2) {
const {
borderTopColor,
borderColor,
backgroundColor
} = getComputedStyle(node2);
if (isValidWaveColor(borderTopColor)) {
return borderTopColor;
}
if (isValidWaveColor(borderColor)) {
return borderColor;
}
if (isValidWaveColor(backgroundColor)) {
return backgroundColor;
}
return null;
}
const TARGET_CLS = "ant-wave-target";
function validateNum(value) {
return Number.isNaN(value) ? 0 : value;
}
const WaveEffect = (props) => {
const {
className,
target,
component
} = props;
const divRef = React__namespace.useRef(null);
const [color, setWaveColor] = React__namespace.useState(null);
const [borderRadius, setBorderRadius] = React__namespace.useState([]);
const [left, setLeft] = React__namespace.useState(0);
const [top, setTop] = React__namespace.useState(0);
const [width, setWidth] = React__namespace.useState(0);
const [height, setHeight] = React__namespace.useState(0);
const [enabled, setEnabled] = React__namespace.useState(false);
const waveStyle = {
left,
top,
width,
height,
borderRadius: borderRadius.map((radius) => `${radius}px`).join(" ")
};
if (color) {
waveStyle["--wave-color"] = color;
}
function syncPos() {
const nodeStyle = getComputedStyle(target);
setWaveColor(getTargetWaveColor(target));
const isStatic = nodeStyle.position === "static";
const {
borderLeftWidth,
borderTopWidth
} = nodeStyle;
setLeft(isStatic ? target.offsetLeft : validateNum(-parseFloat(borderLeftWidth)));
setTop(isStatic ? target.offsetTop : validateNum(-parseFloat(borderTopWidth)));
setWidth(target.offsetWidth);
setHeight(target.offsetHeight);
const {
borderTopLeftRadius,
borderTopRightRadius,
borderBottomLeftRadius,
borderBottomRightRadius
} = nodeStyle;
setBorderRadius([borderTopLeftRadius, borderTopRightRadius, borderBottomRightRadius, borderBottomLeftRadius].map((radius) => validateNum(parseFloat(radius))));
}
React__namespace.useEffect(() => {
if (target) {
const id = wrapperRaf(() => {
syncPos();
setEnabled(true);
});
let resizeObserver2;
if (typeof ResizeObserver !== "undefined") {
resizeObserver2 = new ResizeObserver(syncPos);
resizeObserver2.observe(target);
}
return () => {
wrapperRaf.cancel(id);
resizeObserver2 === null || resizeObserver2 === void 0 ? void 0 : resizeObserver2.disconnect();
};
}
}, []);
if (!enabled) {
return null;
}
const isSmallComponent = (component === "Checkbox" || component === "Radio") && (target === null || target === void 0 ? void 0 : target.classList.contains(TARGET_CLS));
return /* @__PURE__ */ React__namespace.createElement(CSSMotion, {
visible: true,
motionAppear: true,
motionName: "wave-motion",
motionDeadline: 5e3,
onAppearEnd: (_, event) => {
var _a2;
if (event.deadline || event.propertyName === "opacity") {
const holder = (_a2 = divRef.current) === null || _a2 === void 0 ? void 0 : _a2.parentElement;
unmount(holder).then(() => {
holder === null || holder === void 0 ? void 0 : holder.remove();
});
}
return false;
}
}, (_ref) => {
let {
className: motionClassName
} = _ref;
return /* @__PURE__ */ React__namespace.createElement("div", {
ref: divRef,
className: classNames(className, {
"wave-quick": isSmallComponent
}, motionClassName),
style: waveStyle
});
});
};
const showWaveEffect = (target, info2) => {
var _a2;
const {
component
} = info2;
if (component === "Checkbox" && !((_a2 = target.querySelector("input")) === null || _a2 === void 0 ? void 0 : _a2.checked)) {
return;
}
const holder = document.createElement("div");
holder.style.position = "absolute";
holder.style.left = "0px";
holder.style.top = "0px";
target === null || target === void 0 ? void 0 : target.insertBefore(holder, target === null || target === void 0 ? void 0 : target.firstChild);
render(/* @__PURE__ */ React__namespace.createElement(WaveEffect, Object.assign({}, info2, {
target
})), holder);
};
const showWaveEffect$1 = showWaveEffect;
function useWave(nodeRef, className, component) {
const {
wave
} = React__namespace.useContext(ConfigContext);
const [, token2, hashId] = useToken();
const showWave = useEvent((event) => {
const node2 = nodeRef.current;
if ((wave === null || wave === void 0 ? void 0 : wave.disabled) || !node2) {
return;
}
const targetNode = node2.querySelector(`.${TARGET_CLS}`) || node2;
const {
showEffect
} = wave || {};
(showEffect || showWaveEffect$1)(targetNode, {
className,
token: token2,
component,
event,
hashId
});
});
const rafId = React__namespace.useRef();
const showDebounceWave = (event) => {
wrapperRaf.cancel(rafId.current);
rafId.current = wrapperRaf(() => {
showWave(event);
});
};
return showDebounceWave;
}
const Wave = (props) => {
const {
children,
disabled,
component
} = props;
const {
getPrefixCls
} = React.useContext(ConfigContext);
const containerRef = React.useRef(null);
const prefixCls = getPrefixCls("wave");
const [, hashId] = useStyle$3(prefixCls);
const showWave = useWave(containerRef, classNames(prefixCls, hashId), component);
React.useEffect(() => {
const node2 = containerRef.current;
if (!node2 || node2.nodeType !== 1 || disabled) {
return;
}
const onClick = (e2) => {
if (!isVisible(e2.target) || // No need wave
!node2.getAttribute || node2.getAttribute("disabled") || node2.disabled || node2.className.includes("disabled") || node2.className.includes("-leave")) {
return;
}
showWave(e2);
};
node2.addEventListener("click", onClick, true);
return () => {
node2.removeEventListener("click", onClick, true);
};
}, [disabled]);
if (!/* @__PURE__ */ React.isValidElement(children)) {
return children !== null && children !== void 0 ? children : null;
}
const ref = supportRef(children) ? composeRef(children.ref, containerRef) : containerRef;
return cloneElement(children, {
ref
});
};
const Wave$1 = Wave;
const useSize = (customSize) => {
const size = React.useContext(SizeContext$1);
const mergedSize = React.useMemo(() => {
if (!customSize) {
return size;
}
if (typeof customSize === "string") {
return customSize !== null && customSize !== void 0 ? customSize : size;
}
if (customSize instanceof Function) {
return customSize(size);
}
return size;
}, [customSize, size]);
return mergedSize;
};
const useSize$1 = useSize;
const SpaceCompactItemContext = /* @__PURE__ */ React__namespace.createContext(null);
const useCompactItemContext = (prefixCls, direction) => {
const compactItemContext = React__namespace.useContext(SpaceCompactItemContext);
const compactItemClassnames = React__namespace.useMemo(() => {
if (!compactItemContext) {
return "";
}
const {
compactDirection,
isFirstItem,
isLastItem
} = compactItemContext;
const separator = compactDirection === "vertical" ? "-vertical-" : "-";
return classNames(`${prefixCls}-compact${separator}item`, {
[`${prefixCls}-compact${separator}first-item`]: isFirstItem,
[`${prefixCls}-compact${separator}last-item`]: isLastItem,
[`${prefixCls}-compact${separator}item-rtl`]: direction === "rtl"
});
}, [prefixCls, direction, compactItemContext]);
return {
compactSize: compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.compactSize,
compactDirection: compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.compactDirection,
compactItemClassnames
};
};
var __rest$4 = globalThis && globalThis.__rest || function(s, e2) {
var t2 = {};
for (var p2 in s)
if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0)
t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i]))
t2[p2[i]] = s[p2[i]];
}
return t2;
};
const GroupSizeContext = /* @__PURE__ */ React__namespace.createContext(void 0);
const ButtonGroup = (props) => {
const {
getPrefixCls,
direction
} = React__namespace.useContext(ConfigContext);
const {
prefixCls: customizePrefixCls,
size,
className
} = props, others = __rest$4(props, ["prefixCls", "size", "className"]);
const prefixCls = getPrefixCls("btn-group", customizePrefixCls);
const [, , hashId] = useToken();
let sizeCls = "";
switch (size) {
case "large":
sizeCls = "lg";
break;
case "small":
sizeCls = "sm";
break;
}
const classes = classNames(prefixCls, {
[`${prefixCls}-${sizeCls}`]: sizeCls,
[`${prefixCls}-rtl`]: direction === "rtl"
}, className, hashId);
return /* @__PURE__ */ React__namespace.createElement(GroupSizeContext.Provider, {
value: size
}, /* @__PURE__ */ React__namespace.createElement("div", Object.assign({}, others, {
className: classes
})));
};
const Group = ButtonGroup;
const rxTwoCNChar = /^[\u4e00-\u9fa5]{2}$/;
const isTwoCNChar = rxTwoCNChar.test.bind(rxTwoCNChar);
function isString(str) {
return typeof str === "string";
}
function isUnBorderedButtonType(type4) {
return type4 === "text" || type4 === "link";
}
function splitCNCharsBySpace(child, needInserted) {
if (child === null || child === void 0) {
return;
}
const SPACE = needInserted ? " " : "";
if (typeof child !== "string" && typeof child !== "number" && isString(child.type) && isTwoCNChar(child.props.children)) {
return cloneElement(child, {
children: child.props.children.split("").join(SPACE)
});
}
if (isString(child)) {
return isTwoCNChar(child) ? /* @__PURE__ */ React.createElement("span", null, child.split("").join(SPACE)) : /* @__PURE__ */ React.createElement("span", null, child);
}
if (isFragment(child)) {
return /* @__PURE__ */ React.createElement("span", null, child);
}
return child;
}
function spaceChildren(children, needInserted) {
let isPrevChildPure = false;
const childList = [];
React.Children.forEach(children, (child) => {
const type4 = typeof child;
const isCurrentChildPure = type4 === "string" || type4 === "number";
if (isPrevChildPure && isCurrentChildPure) {
const lastIndex = childList.length - 1;
const lastChild = childList[lastIndex];
childList[lastIndex] = `${lastChild}${child}`;
} else {
childList.push(child);
}
isPrevChildPure = isCurrentChildPure;
});
return React.Children.map(childList, (child) => splitCNCharsBySpace(child, needInserted));
}
const IconWrapper = /* @__PURE__ */ React.forwardRef((props, ref) => {
const {
className,
style: style2,
children,
prefixCls
} = props;
const iconWrapperCls = classNames(`${prefixCls}-icon`, className);
return /* @__PURE__ */ React.createElement("span", {
ref,
className: iconWrapperCls,
style: style2
}, children);
});
const IconWrapper$1 = IconWrapper;
const InnerLoadingIcon = /* @__PURE__ */ React.forwardRef((_ref, ref) => {
let {
prefixCls,
className,
style: style2,
iconClassName
} = _ref;
const mergedIconCls = classNames(`${prefixCls}-loading-icon`, className);
return /* @__PURE__ */ React.createElement(IconWrapper$1, {
prefixCls,
className: mergedIconCls,
style: style2,
ref
}, /* @__PURE__ */ React.createElement(LoadingOutlined$1, {
className: iconClassName
}));
});
const getCollapsedWidth = () => ({
width: 0,
opacity: 0,
transform: "scale(0)"
});
const getRealWidth = (node2) => ({
width: node2.scrollWidth,
opacity: 1,
transform: "scale(1)"
});
const LoadingIcon = (props) => {
const {
prefixCls,
loading,
existIcon,
className,
style: style2
} = props;
const visible = !!loading;
if (existIcon) {
return /* @__PURE__ */ React.createElement(InnerLoadingIcon, {
prefixCls,
className,
style: style2
});
}
return /* @__PURE__ */ React.createElement(CSSMotion, {
visible,
// We do not really use this motionName
motionName: `${prefixCls}-loading-icon-motion`,
motionLeave: visible,
removeOnLeave: true,
onAppearStart: getCollapsedWidth,
onAppearActive: getRealWidth,
onEnterStart: getCollapsedWidth,
onEnterActive: getRealWidth,
onLeaveStart: getRealWidth,
onLeaveActive: getCollapsedWidth
}, (_ref2, ref) => {
let {
className: motionCls,
style: motionStyle
} = _ref2;
return /* @__PURE__ */ React.createElement(InnerLoadingIcon, {
prefixCls,
className,
style: Object.assign(Object.assign({}, style2), motionStyle),
ref,
iconClassName: motionCls
});
});
};
const LoadingIcon$1 = LoadingIcon;
const genButtonBorderStyle = (buttonTypeCls, borderColor) => ({
// Border
[`> span, > ${buttonTypeCls}`]: {
"&:not(:last-child)": {
[`&, & > ${buttonTypeCls}`]: {
"&:not(:disabled)": {
borderInlineEndColor: borderColor
}
}
},
"&:not(:first-child)": {
[`&, & > ${buttonTypeCls}`]: {
"&:not(:disabled)": {
borderInlineStartColor: borderColor
}
}
}
}
});
const genGroupStyle$1 = (token2) => {
const {
componentCls,
fontSize,
lineWidth,
groupBorderColor,
colorErrorHover
} = token2;
return {
[`${componentCls}-group`]: [
{
position: "relative",
display: "inline-flex",
// Border
[`> span, > ${componentCls}`]: {
"&:not(:last-child)": {
[`&, & > ${componentCls}`]: {
borderStartEndRadius: 0,
borderEndEndRadius: 0
}
},
"&:not(:first-child)": {
marginInlineStart: token2.calc(lineWidth).mul(-1).equal(),
[`&, & > ${componentCls}`]: {
borderStartStartRadius: 0,
borderEndStartRadius: 0
}
}
},
[componentCls]: {
position: "relative",
zIndex: 1,
[`&:hover,
&:focus,
&:active`]: {
zIndex: 2
},
"&[disabled]": {
zIndex: 0
}
},
[`${componentCls}-icon-only`]: {
fontSize
}
},
// Border Color
genButtonBorderStyle(`${componentCls}-primary`, groupBorderColor),
genButtonBorderStyle(`${componentCls}-danger`, colorErrorHover)
]
};
};
const genGroupStyle$2 = genGroupStyle$1;
const genSharedButtonStyle = (token2) => {
const {
componentCls,
iconCls,
fontWeight
} = token2;
return {
[componentCls]: {
outline: "none",
position: "relative",
display: "inline-block",
fontWeight,
whiteSpace: "nowrap",
textAlign: "center",
backgroundImage: "none",
background: "transparent",
border: `${unit$1(token2.lineWidth)} ${token2.lineType} transparent`,
cursor: "pointer",
transition: `all ${token2.motionDurationMid} ${token2.motionEaseInOut}`,
userSelect: "none",
touchAction: "manipulation",
lineHeight: token2.lineHeight,
color: token2.colorText,
"&:disabled > *": {
pointerEvents: "none"
},
"> span": {
display: "inline-block"
},
[`${componentCls}-icon`]: {
lineHeight: 0
},
// Leave a space between icon and text.
[`> ${iconCls} + span, > span + ${iconCls}`]: {
marginInlineStart: token2.marginXS
},
[`&:not(${componentCls}-icon-only) > ${componentCls}-icon`]: {
[`&${componentCls}-loading-icon, &:not(:last-child)`]: {
marginInlineEnd: token2.marginXS
}
},
"> a": {
color: "currentColor"
},
"&:not(:disabled)": Object.assign({}, genFocusStyle(token2)),
[`&${componentCls}-two-chinese-chars::first-letter`]: {
letterSpacing: "0.34em"
},
[`&${componentCls}-two-chinese-chars > *:not(${iconCls})`]: {
marginInlineEnd: "-0.34em",
letterSpacing: "0.34em"
},
// make `btn-icon-only` not too narrow
[`&-icon-only${componentCls}-compact-item`]: {
flex: "none"
}
}
};
};
const genHoverActiveButtonStyle = (btnCls, hoverStyle, activeStyle) => ({
[`&:not(:disabled):not(${btnCls}-disabled)`]: {
"&:hover": hoverStyle,
"&:active": activeStyle
}
});
const genCircleButtonStyle = (token2) => ({
minWidth: token2.controlHeight,
paddingInlineStart: 0,
paddingInlineEnd: 0,
borderRadius: "50%"
});
const genRoundButtonStyle = (token2) => ({
borderRadius: token2.controlHeight,
paddingInlineStart: token2.calc(token2.controlHeight).div(2).equal(),
paddingInlineEnd: token2.calc(token2.controlHeight).div(2).equal()
});
const genDisabledStyle$1 = (token2) => ({
cursor: "not-allowed",
borderColor: token2.borderColorDisabled,
color: token2.colorTextDisabled,
background: token2.colorBgContainerDisabled,
boxShadow: "none"
});
const genGhostButtonStyle = (btnCls, background, textColor, borderColor, textColorDisabled, borderColorDisabled, hoverStyle, activeStyle) => ({
[`&${btnCls}-background-ghost`]: Object.assign(Object.assign({
color: textColor || void 0,
background,
borderColor: borderColor || void 0,
boxShadow: "none"
}, genHoverActiveButtonStyle(btnCls, Object.assign({
background
}, hoverStyle), Object.assign({
background
}, activeStyle))), {
"&:disabled": {
cursor: "not-allowed",
color: textColorDisabled || void 0,
borderColor: borderColorDisabled || void 0
}
})
});
const genSolidDisabledButtonStyle = (token2) => ({
[`&:disabled, &${token2.componentCls}-disabled`]: Object.assign({}, genDisabledStyle$1(token2))
});
const genSolidButtonStyle = (token2) => Object.assign({}, genSolidDisabledButtonStyle(token2));
const genPureDisabledButtonStyle = (token2) => ({
[`&:disabled, &${token2.componentCls}-disabled`]: {
cursor: "not-allowed",
color: token2.colorTextDisabled
}
});
const genDefaultButtonStyle = (token2) => Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, genSolidButtonStyle(token2)), {
background: token2.defaultBg,
borderColor: token2.defaultBorderColor,
color: token2.defaultColor,
boxShadow: token2.defaultShadow
}), genHoverActiveButtonStyle(token2.componentCls, {
color: token2.colorPrimaryHover,
borderColor: token2.colorPrimaryHover
}, {
color: token2.colorPrimaryActive,
borderColor: token2.colorPrimaryActive
})), genGhostButtonStyle(token2.componentCls, token2.ghostBg, token2.defaultGhostColor, token2.defaultGhostBorderColor, token2.colorTextDisabled, token2.colorBorder)), {
[`&${token2.componentCls}-dangerous`]: Object.assign(Object.assign(Object.assign({
color: token2.colorError,
borderColor: token2.colorError
}, genHoverActiveButtonStyle(token2.componentCls, {
color: token2.colorErrorHover,
borderColor: token2.colorErrorBorderHover
}, {
color: token2.colorErrorActive,
borderColor: token2.colorErrorActive
})), genGhostButtonStyle(token2.componentCls, token2.ghostBg, token2.colorError, token2.colorError, token2.colorTextDisabled, token2.colorBorder)), genSolidDisabledButtonStyle(token2))
});
const genPrimaryButtonStyle = (token2) => Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, genSolidButtonStyle(token2)), {
color: token2.primaryColor,
background: token2.colorPrimary,
boxShadow: token2.primaryShadow
}), genHoverActiveButtonStyle(token2.componentCls, {
color: token2.colorTextLightSolid,
background: token2.colorPrimaryHover
}, {
color: token2.colorTextLightSolid,
background: token2.colorPrimaryActive
})), genGhostButtonStyle(token2.componentCls, token2.ghostBg, token2.colorPrimary, token2.colorPrimary, token2.colorTextDisabled, token2.colorBorder, {
color: token2.colorPrimaryHover,
borderColor: token2.colorPrimaryHover
}, {
color: token2.colorPrimaryActive,
borderColor: token2.colorPrimaryActive
})), {
[`&${token2.componentCls}-dangerous`]: Object.assign(Object.assign(Object.assign({
background: token2.colorError,
boxShadow: token2.dangerShadow,
color: token2.dangerColor
}, genHoverActiveButtonStyle(token2.componentCls, {
background: token2.colorErrorHover
}, {
background: token2.colorErrorActive
})), genGhostButtonStyle(token2.componentCls, token2.ghostBg, token2.colorError, token2.colorError, token2.colorTextDisabled, token2.colorBorder, {
color: token2.colorErrorHover,
borderColor: token2.colorErrorHover
}, {
color: token2.colorErrorActive,
borderColor: token2.colorErrorActive
})), genSolidDisabledButtonStyle(token2))
});
const genDashedButtonStyle = (token2) => Object.assign(Object.assign({}, genDefaultButtonStyle(token2)), {
borderStyle: "dashed"
});
const genLinkButtonStyle = (token2) => Object.assign(Object.assign(Object.assign({
color: token2.colorLink
}, genHoverActiveButtonStyle(token2.componentCls, {
color: token2.colorLinkHover,
background: token2.linkHoverBg
}, {
color: token2.colorLinkActive
})), genPureDisabledButtonStyle(token2)), {
[`&${token2.componentCls}-dangerous`]: Object.assign(Object.assign({
color: token2.colorError
}, genHoverActiveButtonStyle(token2.componentCls, {
color: token2.colorErrorHover
}, {
color: token2.colorErrorActive
})), genPureDisabledButtonStyle(token2))
});
const genTextButtonStyle = (token2) => Object.assign(Object.assign(Object.assign({}, genHoverActiveButtonStyle(token2.componentCls, {
color: token2.colorText,
background: token2.textHoverBg
}, {
color: token2.colorText,
background: token2.colorBgTextActive
})), genPureDisabledButtonStyle(token2)), {
[`&${token2.componentCls}-dangerous`]: Object.assign(Object.assign({
color: token2.colorError
}, genPureDisabledButtonStyle(token2)), genHoverActiveButtonStyle(token2.componentCls, {
color: token2.colorErrorHover,
background: token2.colorErrorBg
}, {
color: token2.colorErrorHover,
background: token2.colorErrorBg
}))
});
const genTypeButtonStyle = (token2) => {
const {
componentCls
} = token2;
return {
[`${componentCls}-default`]: genDefaultButtonStyle(token2),
[`${componentCls}-primary`]: genPrimaryButtonStyle(token2),
[`${componentCls}-dashed`]: genDashedButtonStyle(token2),
[`${componentCls}-link`]: genLinkButtonStyle(token2),
[`${componentCls}-text`]: genTextButtonStyle(token2),
[`${componentCls}-ghost`]: genGhostButtonStyle(token2.componentCls, token2.ghostBg, token2.colorBgContainer, token2.colorBgContainer, token2.colorTextDisabled, token2.colorBorder)
};
};
const genSizeButtonStyle = function(token2) {
let sizePrefixCls = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "";
const {
componentCls,
controlHeight,
fontSize,
borderRadius,
buttonPaddingHorizontal,
iconCls,
buttonPaddingVertical
} = token2;
const iconOnlyCls = `${componentCls}-icon-only`;
return [
// Size
{
[`${componentCls}${sizePrefixCls}`]: {
fontSize,
height: controlHeight,
padding: `${unit$1(buttonPaddingVertical)} ${unit$1(buttonPaddingHorizontal)}`,
borderRadius,
[`&${iconOnlyCls}`]: {
width: controlHeight,
paddingInlineStart: 0,
paddingInlineEnd: 0,
[`&${componentCls}-round`]: {
width: "auto"
},
[iconCls]: {
fontSize: token2.buttonIconOnlyFontSize
}
},
// Loading
[`&${componentCls}-loading`]: {
opacity: token2.opacityLoading,
cursor: "default"
},
[`${componentCls}-loading-icon`]: {
transition: `width ${token2.motionDurationSlow} ${token2.motionEaseInOut}, opacity ${token2.motionDurationSlow} ${token2.motionEaseInOut}`
}
}
},
// Shape - patch prefixCls again to override solid border radius style
{
[`${componentCls}${componentCls}-circle${sizePrefixCls}`]: genCircleButtonStyle(token2)
},
{
[`${componentCls}${componentCls}-round${sizePrefixCls}`]: genRoundButtonStyle(token2)
}
];
};
const genSizeBaseButtonStyle = (token2) => genSizeButtonStyle(merge(token2, {
fontSize: token2.contentFontSize
}));
const genSizeSmallButtonStyle = (token2) => {
const smallToken = merge(token2, {
controlHeight: token2.controlHeightSM,
fontSize: token2.contentFontSizeSM,
padding: token2.paddingXS,
buttonPaddingHorizontal: token2.paddingInlineSM,
buttonPaddingVertical: token2.paddingBlockSM,
borderRadius: token2.borderRadiusSM,
buttonIconOnlyFontSize: token2.onlyIconSizeSM
});
return genSizeButtonStyle(smallToken, `${token2.componentCls}-sm`);
};
const genSizeLargeButtonStyle = (token2) => {
const largeToken = merge(token2, {
controlHeight: token2.controlHeightLG,
fontSize: token2.contentFontSizeLG,
buttonPaddingHorizontal: token2.paddingInlineLG,
buttonPaddingVertical: token2.paddingBlockLG,
borderRadius: token2.borderRadiusLG,
buttonIconOnlyFontSize: token2.onlyIconSizeLG
});
return genSizeButtonStyle(largeToken, `${token2.componentCls}-lg`);
};
const genBlockButtonStyle = (token2) => {
const {
componentCls
} = token2;
return {
[componentCls]: {
[`&${componentCls}-block`]: {
width: "100%"
}
}
};
};
const prepareToken$1 = (token2) => {
const {
paddingInline,
onlyIconSize,
paddingBlock
} = token2;
const buttonToken = merge(token2, {
buttonPaddingHorizontal: paddingInline,
buttonPaddingVertical: paddingBlock,
buttonIconOnlyFontSize: onlyIconSize
});
return buttonToken;
};
const prepareComponentToken$2 = (token2) => {
const contentFontSize = token2.fontSize;
const contentFontSizeSM = token2.fontSize;
const contentFontSizeLG = token2.fontSizeLG;
return {
fontWeight: 400,
defaultShadow: `0 ${token2.controlOutlineWidth}px 0 ${token2.controlTmpOutline}`,
primaryShadow: `0 ${token2.controlOutlineWidth}px 0 ${token2.controlOutline}`,
dangerShadow: `0 ${token2.controlOutlineWidth}px 0 ${token2.colorErrorOutline}`,
primaryColor: token2.colorTextLightSolid,
dangerColor: token2.colorTextLightSolid,
borderColorDisabled: token2.colorBorder,
defaultGhostColor: token2.colorBgContainer,
ghostBg: "transparent",
defaultGhostBorderColor: token2.colorBgContainer,
paddingInline: token2.paddingContentHorizontal - token2.lineWidth,
paddingInlineLG: token2.paddingContentHorizontal - token2.lineWidth,
paddingInlineSM: 8 - token2.lineWidth,
paddingBlock: Math.max((token2.controlHeight - contentFontSize * token2.lineHeight) / 2 - token2.lineWidth, 0),
paddingBlockSM: Math.max((token2.controlHeightSM - contentFontSizeSM * token2.lineHeight) / 2 - token2.lineWidth, 0),
paddingBlockLG: Math.max((token2.controlHeightLG - contentFontSizeLG * token2.lineHeight) / 2 - token2.lineWidth, 0),
onlyIconSize: token2.fontSizeLG,
onlyIconSizeSM: token2.fontSizeLG - 2,
onlyIconSizeLG: token2.fontSizeLG + 2,
groupBorderColor: token2.colorPrimaryHover,
linkHoverBg: "transparent",
textHoverBg: token2.colorBgTextHover,
defaultColor: token2.colorText,
defaultBg: token2.colorBgContainer,
defaultBorderColor: token2.colorBorder,
defaultBorderColorDisabled: token2.colorBorder,
contentFontSize,
contentFontSizeSM,
contentFontSizeLG
};
};
const useStyle$2 = genStyleHooks("Button", (token2) => {
const buttonToken = prepareToken$1(token2);
return [
// Shared
genSharedButtonStyle(buttonToken),
// Size
genSizeSmallButtonStyle(buttonToken),
genSizeBaseButtonStyle(buttonToken),
genSizeLargeButtonStyle(buttonToken),
// Block
genBlockButtonStyle(buttonToken),
// Group (type, ghost, danger, loading)
genTypeButtonStyle(buttonToken),
// Button Group
genGroupStyle$2(buttonToken)
];
}, prepareComponentToken$2, {
unitless: {
fontWeight: true
}
});
function compactItemBorder(token2, parentCls, options) {
const {
focusElCls,
focus,
borderElCls
} = options;
const childCombinator = borderElCls ? "> *" : "";
const hoverEffects = ["hover", focus ? "focus" : null, "active"].filter(Boolean).map((n2) => `&:${n2} ${childCombinator}`).join(",");
return {
[`&-item:not(${parentCls}-last-item)`]: {
marginInlineEnd: token2.calc(token2.lineWidth).mul(-1).equal()
},
"&-item": Object.assign(Object.assign({
[hoverEffects]: {
zIndex: 2
}
}, focusElCls ? {
[`&${focusElCls}`]: {
zIndex: 2
}
} : {}), {
[`&[disabled] ${childCombinator}`]: {
zIndex: 0
}
})
};
}
function compactItemBorderRadius(prefixCls, parentCls, options) {
const {
borderElCls
} = options;
const childCombinator = borderElCls ? `> ${borderElCls}` : "";
return {
[`&-item:not(${parentCls}-first-item):not(${parentCls}-last-item) ${childCombinator}`]: {
borderRadius: 0
},
[`&-item:not(${parentCls}-last-item)${parentCls}-first-item`]: {
[`& ${childCombinator}, &${prefixCls}-sm ${childCombinator}, &${prefixCls}-lg ${childCombinator}`]: {
borderStartEndRadius: 0,
borderEndEndRadius: 0
}
},
[`&-item:not(${parentCls}-first-item)${parentCls}-last-item`]: {
[`& ${childCombinator}, &${prefixCls}-sm ${childCombinator}, &${prefixCls}-lg ${childCombinator}`]: {
borderStartStartRadius: 0,
borderEndStartRadius: 0
}
}
};
}
function genCompactItemStyle(token2) {
let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {
focus: true
};
const {
componentCls
} = token2;
const compactCls = `${componentCls}-compact`;
return {
[compactCls]: Object.assign(Object.assign({}, compactItemBorder(token2, compactCls, options)), compactItemBorderRadius(componentCls, compactCls, options))
};
}
function compactItemVerticalBorder(token2, parentCls) {
return {
// border collapse
[`&-item:not(${parentCls}-last-item)`]: {
marginBottom: token2.calc(token2.lineWidth).mul(-1).equal()
},
"&-item": {
"&:hover,&:focus,&:active": {
zIndex: 2
},
"&[disabled]": {
zIndex: 0
}
}
};
}
function compactItemBorderVerticalRadius(prefixCls, parentCls) {
return {
[`&-item:not(${parentCls}-first-item):not(${parentCls}-last-item)`]: {
borderRadius: 0
},
[`&-item${parentCls}-first-item:not(${parentCls}-last-item)`]: {
[`&, &${prefixCls}-sm, &${prefixCls}-lg`]: {
borderEndEndRadius: 0,
borderEndStartRadius: 0
}
},
[`&-item${parentCls}-last-item:not(${parentCls}-first-item)`]: {
[`&, &${prefixCls}-sm, &${prefixCls}-lg`]: {
borderStartStartRadius: 0,
borderStartEndRadius: 0
}
}
};
}
function genCompactItemVerticalStyle(token2) {
const compactCls = `${token2.componentCls}-compact-vertical`;
return {
[compactCls]: Object.assign(Object.assign({}, compactItemVerticalBorder(token2, compactCls)), compactItemBorderVerticalRadius(token2.componentCls, compactCls))
};
}
const genButtonCompactStyle = (token2) => {
const {
componentCls,
calc
} = token2;
return {
[componentCls]: {
// Special styles for Primary Button
[`&-compact-item${componentCls}-primary`]: {
[`&:not([disabled]) + ${componentCls}-compact-item${componentCls}-primary:not([disabled])`]: {
position: "relative",
"&:before": {
position: "absolute",
top: calc(token2.lineWidth).mul(-1).equal(),
insetInlineStart: calc(token2.lineWidth).mul(-1).equal(),
display: "inline-block",
width: token2.lineWidth,
height: `calc(100% + ${unit$1(token2.lineWidth)} * 2)`,
backgroundColor: token2.colorPrimaryHover,
content: '""'
}
}
},
// Special styles for Primary Button
"&-compact-vertical-item": {
[`&${componentCls}-primary`]: {
[`&:not([disabled]) + ${componentCls}-compact-vertical-item${componentCls}-primary:not([disabled])`]: {
position: "relative",
"&:before": {
position: "absolute",
top: calc(token2.lineWidth).mul(-1).equal(),
insetInlineStart: calc(token2.lineWidth).mul(-1).equal(),
display: "inline-block",
width: `calc(100% + ${unit$1(token2.lineWidth)} * 2)`,
height: token2.lineWidth,
backgroundColor: token2.colorPrimaryHover,
content: '""'
}
}
}
}
}
};
};
const CompactCmp = genSubStyleComponent(["Button", "compact"], (token2) => {
const buttonToken = prepareToken$1(token2);
return [
// Space Compact
genCompactItemStyle(buttonToken),
genCompactItemVerticalStyle(buttonToken),
genButtonCompactStyle(buttonToken)
];
}, prepareComponentToken$2);
var __rest$3 = globalThis && globalThis.__rest || function(s, e2) {
var t2 = {};
for (var p2 in s)
if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0)
t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i]))
t2[p2[i]] = s[p2[i]];
}
return t2;
};
function getLoadingConfig(loading) {
if (typeof loading === "object" && loading) {
let delay = loading === null || loading === void 0 ? void 0 : loading.delay;
delay = !Number.isNaN(delay) && typeof delay === "number" ? delay : 0;
return {
loading: delay <= 0,
delay
};
}
return {
loading: !!loading,
delay: 0
};
}
const InternalButton = (props, ref) => {
var _a2, _b;
const {
loading = false,
prefixCls: customizePrefixCls,
type: type4 = "default",
danger,
shape = "default",
size: customizeSize,
styles,
disabled: customDisabled,
className,
rootClassName,
children,
icon: icon2,
ghost = false,
block = false,
// React does not recognize the `htmlType` prop on a DOM element. Here we pick it out of `rest`.
htmlType = "button",
classNames: customClassNames,
style: customStyle = {}
} = props, rest = __rest$3(props, ["loading", "prefixCls", "type", "danger", "shape", "size", "styles", "disabled", "className", "rootClassName", "children", "icon", "ghost", "block", "htmlType", "classNames", "style"]);
const {
getPrefixCls,
autoInsertSpaceInButton,
direction,
button
} = React.useContext(ConfigContext);
const prefixCls = getPrefixCls("btn", customizePrefixCls);
const [wrapCSSVar, hashId, cssVarCls] = useStyle$2(prefixCls);
const disabled = React.useContext(DisabledContext$1);
const mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;
const groupSize = React.useContext(GroupSizeContext);
const loadingOrDelay = React.useMemo(() => getLoadingConfig(loading), [loading]);
const [innerLoading, setLoading] = React.useState(loadingOrDelay.loading);
const [hasTwoCNChar, setHasTwoCNChar] = React.useState(false);
const internalRef = /* @__PURE__ */ React.createRef();
const buttonRef = composeRef(ref, internalRef);
const needInserted = React.Children.count(children) === 1 && !icon2 && !isUnBorderedButtonType(type4);
React.useEffect(() => {
let delayTimer = null;
if (loadingOrDelay.delay > 0) {
delayTimer = setTimeout(() => {
delayTimer = null;
setLoading(true);
}, loadingOrDelay.delay);
} else {
setLoading(loadingOrDelay.loading);
}
function cleanupTimer() {
if (delayTimer) {
clearTimeout(delayTimer);
delayTimer = null;
}
}
return cleanupTimer;
}, [loadingOrDelay]);
React.useEffect(() => {
if (!buttonRef || !buttonRef.current || autoInsertSpaceInButton === false) {
return;
}
const buttonText = buttonRef.current.textContent;
if (needInserted && isTwoCNChar(buttonText)) {
if (!hasTwoCNChar) {
setHasTwoCNChar(true);
}
} else if (hasTwoCNChar) {
setHasTwoCNChar(false);
}
}, [buttonRef]);
const handleClick = (e2) => {
const {
onClick
} = props;
if (innerLoading || mergedDisabled) {
e2.preventDefault();
return;
}
onClick === null || onClick === void 0 ? void 0 : onClick(e2);
};
const autoInsertSpace = autoInsertSpaceInButton !== false;
const {
compactSize,
compactItemClassnames
} = useCompactItemContext(prefixCls, direction);
const sizeClassNameMap = {
large: "lg",
small: "sm",
middle: void 0
};
const sizeFullName = useSize$1((ctxSize) => {
var _a3, _b2;
return (_b2 = (_a3 = customizeSize !== null && customizeSize !== void 0 ? customizeSize : compactSize) !== null && _a3 !== void 0 ? _a3 : groupSize) !== null && _b2 !== void 0 ? _b2 : ctxSize;
});
const sizeCls = sizeFullName ? sizeClassNameMap[sizeFullName] || "" : "";
const iconType = innerLoading ? "loading" : icon2;
const linkButtonRestProps = omit(rest, ["navigate"]);
const classes = classNames(prefixCls, hashId, cssVarCls, {
[`${prefixCls}-${shape}`]: shape !== "default" && shape,
[`${prefixCls}-${type4}`]: type4,
[`${prefixCls}-${sizeCls}`]: sizeCls,
[`${prefixCls}-icon-only`]: !children && children !== 0 && !!iconType,
[`${prefixCls}-background-ghost`]: ghost && !isUnBorderedButtonType(type4),
[`${prefixCls}-loading`]: innerLoading,
[`${prefixCls}-two-chinese-chars`]: hasTwoCNChar && autoInsertSpace && !innerLoading,
[`${prefixCls}-block`]: block,
[`${prefixCls}-dangerous`]: !!danger,
[`${prefixCls}-rtl`]: direction === "rtl"
}, compactItemClassnames, className, rootClassName, button === null || button === void 0 ? void 0 : button.className);
const fullStyle = Object.assign(Object.assign({}, button === null || button === void 0 ? void 0 : button.style), customStyle);
const iconClasses = classNames(customClassNames === null || customClassNames === void 0 ? void 0 : customClassNames.icon, (_a2 = button === null || button === void 0 ? void 0 : button.classNames) === null || _a2 === void 0 ? void 0 : _a2.icon);
const iconStyle = Object.assign(Object.assign({}, (styles === null || styles === void 0 ? void 0 : styles.icon) || {}), ((_b = button === null || button === void 0 ? void 0 : button.styles) === null || _b === void 0 ? void 0 : _b.icon) || {});
const iconNode = icon2 && !innerLoading ? /* @__PURE__ */ React.createElement(IconWrapper$1, {
prefixCls,
className: iconClasses,
style: iconStyle
}, icon2) : /* @__PURE__ */ React.createElement(LoadingIcon$1, {
existIcon: !!icon2,
prefixCls,
loading: !!innerLoading
});
const kids = children || children === 0 ? spaceChildren(children, needInserted && autoInsertSpace) : null;
if (linkButtonRestProps.href !== void 0) {
return wrapCSSVar(/* @__PURE__ */ React.createElement("a", Object.assign({}, linkButtonRestProps, {
className: classNames(classes, {
[`${prefixCls}-disabled`]: mergedDisabled
}),
href: mergedDisabled ? void 0 : linkButtonRestProps.href,
style: fullStyle,
onClick: handleClick,
ref: buttonRef,
tabIndex: mergedDisabled ? -1 : 0
}), iconNode, kids));
}
let buttonNode = /* @__PURE__ */ React.createElement("button", Object.assign({}, rest, {
type: htmlType,
className: classes,
style: fullStyle,
onClick: handleClick,
disabled: mergedDisabled,
ref: buttonRef
}), iconNode, kids, compactItemClassnames && /* @__PURE__ */ React.createElement(CompactCmp, {
key: "compact",
prefixCls
}));
if (!isUnBorderedButtonType(type4)) {
buttonNode = /* @__PURE__ */ React.createElement(Wave$1, {
component: "Button",
disabled: !!innerLoading
}, buttonNode);
}
return wrapCSSVar(buttonNode);
};
const Button = /* @__PURE__ */ React.forwardRef(InternalButton);
Button.Group = Group;
Button.__ANT_BUTTON = true;
const Button$1 = Button;
var OrderContext = /* @__PURE__ */ React__namespace.createContext(null);
var EMPTY_LIST = [];
function useDom(render2, debug) {
var _React$useState = React__namespace.useState(function() {
if (!canUseDom()) {
return null;
}
var defaultEle = document.createElement("div");
return defaultEle;
}), _React$useState2 = _slicedToArray(_React$useState, 1), ele = _React$useState2[0];
var appendedRef = React__namespace.useRef(false);
var queueCreate = React__namespace.useContext(OrderContext);
var _React$useState3 = React__namespace.useState(EMPTY_LIST), _React$useState4 = _slicedToArray(_React$useState3, 2), queue = _React$useState4[0], setQueue = _React$useState4[1];
var mergedQueueCreate = queueCreate || (appendedRef.current ? void 0 : function(appendFn) {
setQueue(function(origin) {
var newQueue = [appendFn].concat(_toConsumableArray(origin));
return newQueue;
});
});
function append3() {
if (!ele.parentElement) {
document.body.appendChild(ele);
}
appendedRef.current = true;
}
function cleanup2() {
var _ele$parentElement;
(_ele$parentElement = ele.parentElement) === null || _ele$parentElement === void 0 ? void 0 : _ele$parentElement.removeChild(ele);
appendedRef.current = false;
}
useLayoutEffect$1(function() {
if (render2) {
if (queueCreate) {
queueCreate(append3);
} else {
append3();
}
} else {
cleanup2();
}
return cleanup2;
}, [render2]);
useLayoutEffect$1(function() {
if (queue.length) {
queue.forEach(function(appendFn) {
return appendFn();
});
setQueue(EMPTY_LIST);
}
}, [queue]);
return [ele, mergedQueueCreate];
}
var cached;
function getScrollBarSize(fresh) {
if (typeof document === "undefined") {
return 0;
}
if (fresh || cached === void 0) {
var inner = document.createElement("div");
inner.style.width = "100%";
inner.style.height = "200px";
var outer = document.createElement("div");
var outerStyle = outer.style;
outerStyle.position = "absolute";
outerStyle.top = "0";
outerStyle.left = "0";
outerStyle.pointerEvents = "none";
outerStyle.visibility = "hidden";
outerStyle.width = "200px";
outerStyle.height = "150px";
outerStyle.overflow = "hidden";
outer.appendChild(inner);
document.body.appendChild(outer);
var widthContained = inner.offsetWidth;
outer.style.overflow = "scroll";
var widthScroll = inner.offsetWidth;
if (widthContained === widthScroll) {
widthScroll = outer.clientWidth;
}
document.body.removeChild(outer);
cached = widthContained - widthScroll;
}
return cached;
}
function ensureSize(str) {
var match2 = str.match(/^(.*)px$/);
var value = Number(match2 === null || match2 === void 0 ? void 0 : match2[1]);
return Number.isNaN(value) ? getScrollBarSize() : value;
}
function getTargetScrollBarSize(target) {
if (typeof document === "undefined" || !target || !(target instanceof Element)) {
return {
width: 0,
height: 0
};
}
var _getComputedStyle = getComputedStyle(target, "::-webkit-scrollbar"), width = _getComputedStyle.width, height = _getComputedStyle.height;
return {
width: ensureSize(width),
height: ensureSize(height)
};
}
function isBodyOverflowing() {
return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth;
}
var UNIQUE_ID = "rc-util-locker-".concat(Date.now());
var uuid$2 = 0;
function useScrollLocker(lock) {
var mergedLock = !!lock;
var _React$useState = React__namespace.useState(function() {
uuid$2 += 1;
return "".concat(UNIQUE_ID, "_").concat(uuid$2);
}), _React$useState2 = _slicedToArray(_React$useState, 1), id = _React$useState2[0];
useLayoutEffect$1(function() {
if (mergedLock) {
var scrollbarSize = getTargetScrollBarSize(document.body).width;
var isOverflow = isBodyOverflowing();
updateCSS("\nhtml body {\n overflow-y: hidden;\n ".concat(isOverflow ? "width: calc(100% - ".concat(scrollbarSize, "px);") : "", "\n}"), id);
} else {
removeCSS(id);
}
return function() {
removeCSS(id);
};
}, [mergedLock, id]);
}
var inline = false;
function inlineMock(nextInline) {
if (typeof nextInline === "boolean") {
inline = nextInline;
}
return inline;
}
var getPortalContainer = function getPortalContainer2(getContainer2) {
if (getContainer2 === false) {
return false;
}
if (!canUseDom() || !getContainer2) {
return null;
}
if (typeof getContainer2 === "string") {
return document.querySelector(getContainer2);
}
if (typeof getContainer2 === "function") {
return getContainer2();
}
return getContainer2;
};
var Portal = /* @__PURE__ */ React__namespace.forwardRef(function(props, ref) {
var open = props.open, autoLock = props.autoLock, getContainer2 = props.getContainer;
props.debug;
var _props$autoDestroy = props.autoDestroy, autoDestroy = _props$autoDestroy === void 0 ? true : _props$autoDestroy, children = props.children;
var _React$useState = React__namespace.useState(open), _React$useState2 = _slicedToArray(_React$useState, 2), shouldRender = _React$useState2[0], setShouldRender = _React$useState2[1];
var mergedRender = shouldRender || open;
React__namespace.useEffect(function() {
if (autoDestroy || open) {
setShouldRender(open);
}
}, [open, autoDestroy]);
var _React$useState3 = React__namespace.useState(function() {
return getPortalContainer(getContainer2);
}), _React$useState4 = _slicedToArray(_React$useState3, 2), innerContainer = _React$useState4[0], setInnerContainer = _React$useState4[1];
React__namespace.useEffect(function() {
var customizeContainer = getPortalContainer(getContainer2);
setInnerContainer(customizeContainer !== null && customizeContainer !== void 0 ? customizeContainer : null);
});
var _useDom = useDom(mergedRender && !innerContainer), _useDom2 = _slicedToArray(_useDom, 2), defaultContainer = _useDom2[0], queueCreate = _useDom2[1];
var mergedContainer = innerContainer !== null && innerContainer !== void 0 ? innerContainer : defaultContainer;
useScrollLocker(autoLock && open && canUseDom() && (mergedContainer === defaultContainer || mergedContainer === document.body));
var childRef = null;
if (children && supportRef(children) && ref) {
var _ref = children;
childRef = _ref.ref;
}
var mergedRef = useComposeRef(childRef, ref);
if (!mergedRender || !canUseDom() || innerContainer === void 0) {
return null;
}
var renderInline = mergedContainer === false || inlineMock();
var reffedChildren = children;
if (ref) {
reffedChildren = /* @__PURE__ */ React__namespace.cloneElement(children, {
ref: mergedRef
});
}
return /* @__PURE__ */ React__namespace.createElement(OrderContext.Provider, {
value: queueCreate
}, renderInline ? reffedChildren : /* @__PURE__ */ ReactDOM__default.createPortal(reffedChildren, mergedContainer));
});
function getUseId() {
var fullClone2 = _objectSpread2({}, React__namespace);
return fullClone2.useId;
}
var uuid$1 = 0;
var useOriginId = getUseId();
const useId$1 = useOriginId ? (
// Use React `useId`
function useId(id) {
var reactId = useOriginId();
if (id) {
return id;
}
return reactId;
}
) : (
// Use compatible of `useId`
function useCompatId(id) {
var _React$useState = React__namespace.useState("ssr-id"), _React$useState2 = _slicedToArray(_React$useState, 2), innerId = _React$useState2[0], setInnerId = _React$useState2[1];
React__namespace.useEffect(function() {
var nextId = uuid$1;
uuid$1 += 1;
setInnerId("rc_unique_".concat(nextId));
}, []);
if (id) {
return id;
}
return innerId;
}
);
var HOOK_MARK = "RC_FORM_INTERNAL_HOOKS";
var warningFunc = function warningFunc2() {
warningOnce(false, "Can not find FormContext. Please make sure you wrap Field under Form.");
};
var Context = /* @__PURE__ */ React__namespace.createContext({
getFieldValue: warningFunc,
getFieldsValue: warningFunc,
getFieldError: warningFunc,
getFieldWarning: warningFunc,
getFieldsError: warningFunc,
isFieldsTouched: warningFunc,
isFieldTouched: warningFunc,
isFieldValidating: warningFunc,
isFieldsValidating: warningFunc,
resetFields: warningFunc,
setFields: warningFunc,
setFieldValue: warningFunc,
setFieldsValue: warningFunc,
validateFields: warningFunc,
submit: warningFunc,
getInternalHooks: function getInternalHooks() {
warningFunc();
return {
dispatch: warningFunc,
initEntityValue: warningFunc,
registerField: warningFunc,
useSubscribe: warningFunc,
setInitialValues: warningFunc,
destroyForm: warningFunc,
setCallbacks: warningFunc,
registerWatch: warningFunc,
getFields: warningFunc,
setValidateMessages: warningFunc,
setPreserve: warningFunc,
getInitialValue: warningFunc
};
}
});
var ListContext = /* @__PURE__ */ React__namespace.createContext(null);
function toArray$2(value) {
if (value === void 0 || value === null) {
return [];
}
return Array.isArray(value) ? value : [value];
}
function isFormInstance(form) {
return form && !!form._init;
}
function _extends() {
_extends = Object.assign ? Object.assign.bind() : function(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
return _extends.apply(this, arguments);
}
function _inheritsLoose(subClass, superClass) {
subClass.prototype = Object.create(superClass.prototype);
subClass.prototype.constructor = subClass;
_setPrototypeOf(subClass, superClass);
}
function _getPrototypeOf(o) {
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf2(o2) {
return o2.__proto__ || Object.getPrototypeOf(o2);
};
return _getPrototypeOf(o);
}
function _setPrototypeOf(o, p2) {
_setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p3) {
o2.__proto__ = p3;
return o2;
};
return _setPrototypeOf(o, p2);
}
function _isNativeReflectConstruct() {
if (typeof Reflect === "undefined" || !Reflect.construct)
return false;
if (Reflect.construct.sham)
return false;
if (typeof Proxy === "function")
return true;
try {
Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
}));
return true;
} catch (e2) {
return false;
}
}
function _construct(Parent, args, Class) {
if (_isNativeReflectConstruct()) {
_construct = Reflect.construct.bind();
} else {
_construct = function _construct2(Parent2, args2, Class2) {
var a = [null];
a.push.apply(a, args2);
var Constructor = Function.bind.apply(Parent2, a);
var instance = new Constructor();
if (Class2)
_setPrototypeOf(instance, Class2.prototype);
return instance;
};
}
return _construct.apply(null, arguments);
}
function _isNativeFunction(fn) {
return Function.toString.call(fn).indexOf("[native code]") !== -1;
}
function _wrapNativeSuper(Class) {
var _cache = typeof Map === "function" ? /* @__PURE__ */ new Map() : void 0;
_wrapNativeSuper = function _wrapNativeSuper2(Class2) {
if (Class2 === null || !_isNativeFunction(Class2))
return Class2;
if (typeof Class2 !== "function") {
throw new TypeError("Super expression must either be null or a function");
}
if (typeof _cache !== "undefined") {
if (_cache.has(Class2))
return _cache.get(Class2);
_cache.set(Class2, Wrapper);
}
function Wrapper() {
return _construct(Class2, arguments, _getPrototypeOf(this).constructor);
}
Wrapper.prototype = Object.create(Class2.prototype, {
constructor: {
value: Wrapper,
enumerable: false,
writable: true,
configurable: true
}
});
return _setPrototypeOf(Wrapper, Class2);
};
return _wrapNativeSuper(Class);
}
var formatRegExp = /%[sdj%]/g;
var warning = function warning2() {
};
if (typeof process !== "undefined" && process.env && false) {
warning = function warning3(type4, errors) {
if (typeof console !== "undefined" && console.warn && typeof ASYNC_VALIDATOR_NO_WARNING === "undefined") {
if (errors.every(function(e2) {
return typeof e2 === "string";
})) {
console.warn(type4, errors);
}
}
};
}
function convertFieldsError(errors) {
if (!errors || !errors.length)
return null;
var fields = {};
errors.forEach(function(error) {
var field = error.field;
fields[field] = fields[field] || [];
fields[field].push(error);
});
return fields;
}
function format(template) {
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
var i = 0;
var len = args.length;
if (typeof template === "function") {
return template.apply(null, args);
}
if (typeof template === "string") {
var str = template.replace(formatRegExp, function(x) {
if (x === "%%") {
return "%";
}
if (i >= len) {
return x;
}
switch (x) {
case "%s":
return String(args[i++]);
case "%d":
return Number(args[i++]);
case "%j":
try {
return JSON.stringify(args[i++]);
} catch (_) {
return "[Circular]";
}
break;
default:
return x;
}
});
return str;
}
return template;
}
function isNativeStringType(type4) {
return type4 === "string" || type4 === "url" || type4 === "hex" || type4 === "email" || type4 === "date" || type4 === "pattern";
}
function isEmptyValue(value, type4) {
if (value === void 0 || value === null) {
return true;
}
if (type4 === "array" && Array.isArray(value) && !value.length) {
return true;
}
if (isNativeStringType(type4) && typeof value === "string" && !value) {
return true;
}
return false;
}
function asyncParallelArray(arr, func, callback) {
var results = [];
var total = 0;
var arrLength = arr.length;
function count(errors) {
results.push.apply(results, errors || []);
total++;
if (total === arrLength) {
callback(results);
}
}
arr.forEach(function(a) {
func(a, count);
});
}
function asyncSerialArray(arr, func, callback) {
var index2 = 0;
var arrLength = arr.length;
function next2(errors) {
if (errors && errors.length) {
callback(errors);
return;
}
var original = index2;
index2 = index2 + 1;
if (original < arrLength) {
func(arr[original], next2);
} else {
callback([]);
}
}
next2([]);
}
function flattenObjArr(objArr) {
var ret = [];
Object.keys(objArr).forEach(function(k2) {
ret.push.apply(ret, objArr[k2] || []);
});
return ret;
}
var AsyncValidationError = /* @__PURE__ */ function(_Error) {
_inheritsLoose(AsyncValidationError2, _Error);
function AsyncValidationError2(errors, fields) {
var _this;
_this = _Error.call(this, "Async Validation Error") || this;
_this.errors = errors;
_this.fields = fields;
return _this;
}
return AsyncValidationError2;
}(/* @__PURE__ */ _wrapNativeSuper(Error));
function asyncMap(objArr, option, func, callback, source) {
if (option.first) {
var _pending = new Promise(function(resolve, reject) {
var next2 = function next3(errors) {
callback(errors);
return errors.length ? reject(new AsyncValidationError(errors, convertFieldsError(errors))) : resolve(source);
};
var flattenArr = flattenObjArr(objArr);
asyncSerialArray(flattenArr, func, next2);
});
_pending["catch"](function(e2) {
return e2;
});
return _pending;
}
var firstFields = option.firstFields === true ? Object.keys(objArr) : option.firstFields || [];
var objArrKeys = Object.keys(objArr);
var objArrLength = objArrKeys.length;
var total = 0;
var results = [];
var pending = new Promise(function(resolve, reject) {
var next2 = function next3(errors) {
results.push.apply(results, errors);
total++;
if (total === objArrLength) {
callback(results);
return results.length ? reject(new AsyncValidationError(results, convertFieldsError(results))) : resolve(source);
}
};
if (!objArrKeys.length) {
callback(results);
resolve(source);
}
objArrKeys.forEach(function(key) {
var arr = objArr[key];
if (firstFields.indexOf(key) !== -1) {
asyncSerialArray(arr, func, next2);
} else {
asyncParallelArray(arr, func, next2);
}
});
});
pending["catch"](function(e2) {
return e2;
});
return pending;
}
function isErrorObj(obj) {
return !!(obj && obj.message !== void 0);
}
function getValue(value, path) {
var v2 = value;
for (var i = 0; i < path.length; i++) {
if (v2 == void 0) {
return v2;
}
v2 = v2[path[i]];
}
return v2;
}
function complementError(rule, source) {
return function(oe) {
var fieldValue;
if (rule.fullFields) {
fieldValue = getValue(source, rule.fullFields);
} else {
fieldValue = source[oe.field || rule.fullField];
}
if (isErrorObj(oe)) {
oe.field = oe.field || rule.fullField;
oe.fieldValue = fieldValue;
return oe;
}
return {
message: typeof oe === "function" ? oe() : oe,
fieldValue,
field: oe.field || rule.fullField
};
};
}
function deepMerge(target, source) {
if (source) {
for (var s in source) {
if (source.hasOwnProperty(s)) {
var value = source[s];
if (typeof value === "object" && typeof target[s] === "object") {
target[s] = _extends({}, target[s], value);
} else {
target[s] = value;
}
}
}
}
return target;
}
var required$1 = function required(rule, value, source, errors, options, type4) {
if (rule.required && (!source.hasOwnProperty(rule.field) || isEmptyValue(value, type4 || rule.type))) {
errors.push(format(options.messages.required, rule.fullField));
}
};
var whitespace = function whitespace2(rule, value, source, errors, options) {
if (/^\s+$/.test(value) || value === "") {
errors.push(format(options.messages.whitespace, rule.fullField));
}
};
var urlReg;
var getUrlRegex = function() {
if (urlReg) {
return urlReg;
}
var word = "[a-fA-F\\d:]";
var b2 = function b3(options) {
return options && options.includeBoundaries ? "(?:(?<=\\s|^)(?=" + word + ")|(?<=" + word + ")(?=\\s|$))" : "";
};
var v4 = "(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}";
var v6seg = "[a-fA-F\\d]{1,4}";
var v6 = ("\n(?:\n(?:" + v6seg + ":){7}(?:" + v6seg + "|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:" + v6seg + ":){6}(?:" + v4 + "|:" + v6seg + "|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:" + v6seg + ":){5}(?::" + v4 + "|(?::" + v6seg + "){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:" + v6seg + ":){4}(?:(?::" + v6seg + "){0,1}:" + v4 + "|(?::" + v6seg + "){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:" + v6seg + ":){3}(?:(?::" + v6seg + "){0,2}:" + v4 + "|(?::" + v6seg + "){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:" + v6seg + ":){2}(?:(?::" + v6seg + "){0,3}:" + v4 + "|(?::" + v6seg + "){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:" + v6seg + ":){1}(?:(?::" + v6seg + "){0,4}:" + v4 + "|(?::" + v6seg + "){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::" + v6seg + "){0,5}:" + v4 + "|(?::" + v6seg + "){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\n").replace(/\s*\/\/.*$/gm, "").replace(/\n/g, "").trim();
var v46Exact = new RegExp("(?:^" + v4 + "$)|(?:^" + v6 + "$)");
var v4exact = new RegExp("^" + v4 + "$");
var v6exact = new RegExp("^" + v6 + "$");
var ip = function ip2(options) {
return options && options.exact ? v46Exact : new RegExp("(?:" + b2(options) + v4 + b2(options) + ")|(?:" + b2(options) + v6 + b2(options) + ")", "g");
};
ip.v4 = function(options) {
return options && options.exact ? v4exact : new RegExp("" + b2(options) + v4 + b2(options), "g");
};
ip.v6 = function(options) {
return options && options.exact ? v6exact : new RegExp("" + b2(options) + v6 + b2(options), "g");
};
var protocol = "(?:(?:[a-z]+:)?//)";
var auth = "(?:\\S+(?::\\S*)?@)?";
var ipv4 = ip.v4().source;
var ipv6 = ip.v6().source;
var host = "(?:(?:[a-z\\u00a1-\\uffff0-9][-_]*)*[a-z\\u00a1-\\uffff0-9]+)";
var domain = "(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*";
var tld = "(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))";
var port = "(?::\\d{2,5})?";
var path = '(?:[/?#][^\\s"]*)?';
var regex = "(?:" + protocol + "|www\\.)" + auth + "(?:localhost|" + ipv4 + "|" + ipv6 + "|" + host + domain + tld + ")" + port + path;
urlReg = new RegExp("(?:^" + regex + "$)", "i");
return urlReg;
};
var pattern$2 = {
// http://emailregex.com/
email: /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,
// url: new RegExp(
// '^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$',
// 'i',
// ),
hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i
};
var types = {
integer: function integer(value) {
return types.number(value) && parseInt(value, 10) === value;
},
"float": function float(value) {
return types.number(value) && !types.integer(value);
},
array: function array(value) {
return Array.isArray(value);
},
regexp: function regexp(value) {
if (value instanceof RegExp) {
return true;
}
try {
return !!new RegExp(value);
} catch (e2) {
return false;
}
},
date: function date(value) {
return typeof value.getTime === "function" && typeof value.getMonth === "function" && typeof value.getYear === "function" && !isNaN(value.getTime());
},
number: function number(value) {
if (isNaN(value)) {
return false;
}
return typeof value === "number";
},
object: function object(value) {
return typeof value === "object" && !types.array(value);
},
method: function method(value) {
return typeof value === "function";
},
email: function email(value) {
return typeof value === "string" && value.length <= 320 && !!value.match(pattern$2.email);
},
url: function url(value) {
return typeof value === "string" && value.length <= 2048 && !!value.match(getUrlRegex());
},
hex: function hex(value) {
return typeof value === "string" && !!value.match(pattern$2.hex);
}
};
var type$1 = function type(rule, value, source, errors, options) {
if (rule.required && value === void 0) {
required$1(rule, value, source, errors, options);
return;
}
var custom = ["integer", "float", "array", "regexp", "object", "method", "email", "number", "date", "url", "hex"];
var ruleType = rule.type;
if (custom.indexOf(ruleType) > -1) {
if (!types[ruleType](value)) {
errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));
}
} else if (ruleType && typeof value !== rule.type) {
errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));
}
};
var range = function range2(rule, value, source, errors, options) {
var len = typeof rule.len === "number";
var min = typeof rule.min === "number";
var max2 = typeof rule.max === "number";
var spRegexp = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
var val = value;
var key = null;
var num = typeof value === "number";
var str = typeof value === "string";
var arr = Array.isArray(value);
if (num) {
key = "number";
} else if (str) {
key = "string";
} else if (arr) {
key = "array";
}
if (!key) {
return false;
}
if (arr) {
val = value.length;
}
if (str) {
val = value.replace(spRegexp, "_").length;
}
if (len) {
if (val !== rule.len) {
errors.push(format(options.messages[key].len, rule.fullField, rule.len));
}
} else if (min && !max2 && val < rule.min) {
errors.push(format(options.messages[key].min, rule.fullField, rule.min));
} else if (max2 && !min && val > rule.max) {
errors.push(format(options.messages[key].max, rule.fullField, rule.max));
} else if (min && max2 && (val < rule.min || val > rule.max)) {
errors.push(format(options.messages[key].range, rule.fullField, rule.min, rule.max));
}
};
var ENUM$1 = "enum";
var enumerable$1 = function enumerable(rule, value, source, errors, options) {
rule[ENUM$1] = Array.isArray(rule[ENUM$1]) ? rule[ENUM$1] : [];
if (rule[ENUM$1].indexOf(value) === -1) {
errors.push(format(options.messages[ENUM$1], rule.fullField, rule[ENUM$1].join(", ")));
}
};
var pattern$1 = function pattern(rule, value, source, errors, options) {
if (rule.pattern) {
if (rule.pattern instanceof RegExp) {
rule.pattern.lastIndex = 0;
if (!rule.pattern.test(value)) {
errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));
}
} else if (typeof rule.pattern === "string") {
var _pattern = new RegExp(rule.pattern);
if (!_pattern.test(value)) {
errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));
}
}
}
};
var rules = {
required: required$1,
whitespace,
type: type$1,
range,
"enum": enumerable$1,
pattern: pattern$1
};
var string = function string2(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue(value, "string") && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options, "string");
if (!isEmptyValue(value, "string")) {
rules.type(rule, value, source, errors, options);
rules.range(rule, value, source, errors, options);
rules.pattern(rule, value, source, errors, options);
if (rule.whitespace === true) {
rules.whitespace(rule, value, source, errors, options);
}
}
}
callback(errors);
};
var method2 = function method3(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue(value) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (value !== void 0) {
rules.type(rule, value, source, errors, options);
}
}
callback(errors);
};
var number2 = function number3(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (value === "") {
value = void 0;
}
if (isEmptyValue(value) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (value !== void 0) {
rules.type(rule, value, source, errors, options);
rules.range(rule, value, source, errors, options);
}
}
callback(errors);
};
var _boolean = function _boolean2(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue(value) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (value !== void 0) {
rules.type(rule, value, source, errors, options);
}
}
callback(errors);
};
var regexp2 = function regexp3(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue(value) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (!isEmptyValue(value)) {
rules.type(rule, value, source, errors, options);
}
}
callback(errors);
};
var integer2 = function integer3(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue(value) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (value !== void 0) {
rules.type(rule, value, source, errors, options);
rules.range(rule, value, source, errors, options);
}
}
callback(errors);
};
var floatFn = function floatFn2(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue(value) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (value !== void 0) {
rules.type(rule, value, source, errors, options);
rules.range(rule, value, source, errors, options);
}
}
callback(errors);
};
var array2 = function array3(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if ((value === void 0 || value === null) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options, "array");
if (value !== void 0 && value !== null) {
rules.type(rule, value, source, errors, options);
rules.range(rule, value, source, errors, options);
}
}
callback(errors);
};
var object2 = function object3(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue(value) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (value !== void 0) {
rules.type(rule, value, source, errors, options);
}
}
callback(errors);
};
var ENUM = "enum";
var enumerable2 = function enumerable3(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue(value) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (value !== void 0) {
rules[ENUM](rule, value, source, errors, options);
}
}
callback(errors);
};
var pattern2 = function pattern3(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue(value, "string") && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (!isEmptyValue(value, "string")) {
rules.pattern(rule, value, source, errors, options);
}
}
callback(errors);
};
var date2 = function date3(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue(value, "date") && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (!isEmptyValue(value, "date")) {
var dateObject;
if (value instanceof Date) {
dateObject = value;
} else {
dateObject = new Date(value);
}
rules.type(rule, dateObject, source, errors, options);
if (dateObject) {
rules.range(rule, dateObject.getTime(), source, errors, options);
}
}
}
callback(errors);
};
var required2 = function required3(rule, value, callback, source, options) {
var errors = [];
var type4 = Array.isArray(value) ? "array" : typeof value;
rules.required(rule, value, source, errors, options, type4);
callback(errors);
};
var type2 = function type3(rule, value, callback, source, options) {
var ruleType = rule.type;
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue(value, ruleType) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options, ruleType);
if (!isEmptyValue(value, ruleType)) {
rules.type(rule, value, source, errors, options);
}
}
callback(errors);
};
var any = function any2(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue(value) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
}
callback(errors);
};
var validators = {
string,
method: method2,
number: number2,
"boolean": _boolean,
regexp: regexp2,
integer: integer2,
"float": floatFn,
array: array2,
object: object2,
"enum": enumerable2,
pattern: pattern2,
date: date2,
url: type2,
hex: type2,
email: type2,
required: required2,
any
};
function newMessages() {
return {
"default": "Validation error on field %s",
required: "%s is required",
"enum": "%s must be one of %s",
whitespace: "%s cannot be empty",
date: {
format: "%s date %s is invalid for format %s",
parse: "%s date could not be parsed, %s is invalid ",
invalid: "%s date %s is invalid"
},
types: {
string: "%s is not a %s",
method: "%s is not a %s (function)",
array: "%s is not an %s",
object: "%s is not an %s",
number: "%s is not a %s",
date: "%s is not a %s",
"boolean": "%s is not a %s",
integer: "%s is not an %s",
"float": "%s is not a %s",
regexp: "%s is not a valid %s",
email: "%s is not a valid %s",
url: "%s is not a valid %s",
hex: "%s is not a valid %s"
},
string: {
len: "%s must be exactly %s characters",
min: "%s must be at least %s characters",
max: "%s cannot be longer than %s characters",
range: "%s must be between %s and %s characters"
},
number: {
len: "%s must equal %s",
min: "%s cannot be less than %s",
max: "%s cannot be greater than %s",
range: "%s must be between %s and %s"
},
array: {
len: "%s must be exactly %s in length",
min: "%s cannot be less than %s in length",
max: "%s cannot be greater than %s in length",
range: "%s must be between %s and %s in length"
},
pattern: {
mismatch: "%s value %s does not match pattern %s"
},
clone: function clone() {
var cloned = JSON.parse(JSON.stringify(this));
cloned.clone = this.clone;
return cloned;
}
};
}
var messages = newMessages();
var Schema = /* @__PURE__ */ function() {
function Schema2(descriptor) {
this.rules = null;
this._messages = messages;
this.define(descriptor);
}
var _proto = Schema2.prototype;
_proto.define = function define(rules2) {
var _this = this;
if (!rules2) {
throw new Error("Cannot configure a schema with no rules");
}
if (typeof rules2 !== "object" || Array.isArray(rules2)) {
throw new Error("Rules must be an object");
}
this.rules = {};
Object.keys(rules2).forEach(function(name) {
var item = rules2[name];
_this.rules[name] = Array.isArray(item) ? item : [item];
});
};
_proto.messages = function messages2(_messages) {
if (_messages) {
this._messages = deepMerge(newMessages(), _messages);
}
return this._messages;
};
_proto.validate = function validate(source_, o, oc) {
var _this2 = this;
if (o === void 0) {
o = {};
}
if (oc === void 0) {
oc = function oc2() {
};
}
var source = source_;
var options = o;
var callback = oc;
if (typeof options === "function") {
callback = options;
options = {};
}
if (!this.rules || Object.keys(this.rules).length === 0) {
if (callback) {
callback(null, source);
}
return Promise.resolve(source);
}
function complete(results) {
var errors = [];
var fields = {};
function add(e2) {
if (Array.isArray(e2)) {
var _errors;
errors = (_errors = errors).concat.apply(_errors, e2);
} else {
errors.push(e2);
}
}
for (var i = 0; i < results.length; i++) {
add(results[i]);
}
if (!errors.length) {
callback(null, source);
} else {
fields = convertFieldsError(errors);
callback(errors, fields);
}
}
if (options.messages) {
var messages$1 = this.messages();
if (messages$1 === messages) {
messages$1 = newMessages();
}
deepMerge(messages$1, options.messages);
options.messages = messages$1;
} else {
options.messages = this.messages();
}
var series = {};
var keys2 = options.keys || Object.keys(this.rules);
keys2.forEach(function(z) {
var arr = _this2.rules[z];
var value = source[z];
arr.forEach(function(r) {
var rule = r;
if (typeof rule.transform === "function") {
if (source === source_) {
source = _extends({}, source);
}
value = source[z] = rule.transform(value);
}
if (typeof rule === "function") {
rule = {
validator: rule
};
} else {
rule = _extends({}, rule);
}
rule.validator = _this2.getValidationMethod(rule);
if (!rule.validator) {
return;
}
rule.field = z;
rule.fullField = rule.fullField || z;
rule.type = _this2.getType(rule);
series[z] = series[z] || [];
series[z].push({
rule,
value,
source,
field: z
});
});
});
var errorFields = {};
return asyncMap(series, options, function(data, doIt) {
var rule = data.rule;
var deep = (rule.type === "object" || rule.type === "array") && (typeof rule.fields === "object" || typeof rule.defaultField === "object");
deep = deep && (rule.required || !rule.required && data.value);
rule.field = data.field;
function addFullField(key, schema) {
return _extends({}, schema, {
fullField: rule.fullField + "." + key,
fullFields: rule.fullFields ? [].concat(rule.fullFields, [key]) : [key]
});
}
function cb(e2) {
if (e2 === void 0) {
e2 = [];
}
var errorList = Array.isArray(e2) ? e2 : [e2];
if (!options.suppressWarning && errorList.length) {
Schema2.warning("async-validator:", errorList);
}
if (errorList.length && rule.message !== void 0) {
errorList = [].concat(rule.message);
}
var filledErrors = errorList.map(complementError(rule, source));
if (options.first && filledErrors.length) {
errorFields[rule.field] = 1;
return doIt(filledErrors);
}
if (!deep) {
doIt(filledErrors);
} else {
if (rule.required && !data.value) {
if (rule.message !== void 0) {
filledErrors = [].concat(rule.message).map(complementError(rule, source));
} else if (options.error) {
filledErrors = [options.error(rule, format(options.messages.required, rule.field))];
}
return doIt(filledErrors);
}
var fieldsSchema = {};
if (rule.defaultField) {
Object.keys(data.value).map(function(key) {
fieldsSchema[key] = rule.defaultField;
});
}
fieldsSchema = _extends({}, fieldsSchema, data.rule.fields);
var paredFieldsSchema = {};
Object.keys(fieldsSchema).forEach(function(field) {
var fieldSchema = fieldsSchema[field];
var fieldSchemaList = Array.isArray(fieldSchema) ? fieldSchema : [fieldSchema];
paredFieldsSchema[field] = fieldSchemaList.map(addFullField.bind(null, field));
});
var schema = new Schema2(paredFieldsSchema);
schema.messages(options.messages);
if (data.rule.options) {
data.rule.options.messages = options.messages;
data.rule.options.error = options.error;
}
schema.validate(data.value, data.rule.options || options, function(errs) {
var finalErrors = [];
if (filledErrors && filledErrors.length) {
finalErrors.push.apply(finalErrors, filledErrors);
}
if (errs && errs.length) {
finalErrors.push.apply(finalErrors, errs);
}
doIt(finalErrors.length ? finalErrors : null);
});
}
}
var res;
if (rule.asyncValidator) {
res = rule.asyncValidator(rule, data.value, cb, data.source, options);
} else if (rule.validator) {
try {
res = rule.validator(rule, data.value, cb, data.source, options);
} catch (error) {
console.error == null ? void 0 : console.error(error);
if (!options.suppressValidatorError) {
setTimeout(function() {
throw error;
}, 0);
}
cb(error.message);
}
if (res === true) {
cb();
} else if (res === false) {
cb(typeof rule.message === "function" ? rule.message(rule.fullField || rule.field) : rule.message || (rule.fullField || rule.field) + " fails");
} else if (res instanceof Array) {
cb(res);
} else if (res instanceof Error) {
cb(res.message);
}
}
if (res && res.then) {
res.then(function() {
return cb();
}, function(e2) {
return cb(e2);
});
}
}, function(results) {
complete(results);
}, source);
};
_proto.getType = function getType(rule) {
if (rule.type === void 0 && rule.pattern instanceof RegExp) {
rule.type = "pattern";
}
if (typeof rule.validator !== "function" && rule.type && !validators.hasOwnProperty(rule.type)) {
throw new Error(format("Unknown rule type %s", rule.type));
}
return rule.type || "string";
};
_proto.getValidationMethod = function getValidationMethod(rule) {
if (typeof rule.validator === "function") {
return rule.validator;
}
var keys2 = Object.keys(rule);
var messageIndex = keys2.indexOf("message");
if (messageIndex !== -1) {
keys2.splice(messageIndex, 1);
}
if (keys2.length === 1 && keys2[0] === "required") {
return validators.required;
}
return validators[this.getType(rule)] || void 0;
};
return Schema2;
}();
Schema.register = function register(type4, validator2) {
if (typeof validator2 !== "function") {
throw new Error("Cannot register a validator by type, validator is not a function");
}
validators[type4] = validator2;
};
Schema.warning = warning;
Schema.messages = messages;
Schema.validators = validators;
var typeTemplate = "'${name}' is not a valid ${type}";
var defaultValidateMessages = {
default: "Validation error on field '${name}'",
required: "'${name}' is required",
enum: "'${name}' must be one of [${enum}]",
whitespace: "'${name}' cannot be empty",
date: {
format: "'${name}' is invalid for format date",
parse: "'${name}' could not be parsed as date",
invalid: "'${name}' is invalid date"
},
types: {
string: typeTemplate,
method: typeTemplate,
array: typeTemplate,
object: typeTemplate,
number: typeTemplate,
date: typeTemplate,
boolean: typeTemplate,
integer: typeTemplate,
float: typeTemplate,
regexp: typeTemplate,
email: typeTemplate,
url: typeTemplate,
hex: typeTemplate
},
string: {
len: "'${name}' must be exactly ${len} characters",
min: "'${name}' must be at least ${min} characters",
max: "'${name}' cannot be longer than ${max} characters",
range: "'${name}' must be between ${min} and ${max} characters"
},
number: {
len: "'${name}' must equal ${len}",
min: "'${name}' cannot be less than ${min}",
max: "'${name}' cannot be greater than ${max}",
range: "'${name}' must be between ${min} and ${max}"
},
array: {
len: "'${name}' must be exactly ${len} in length",
min: "'${name}' cannot be less than ${min} in length",
max: "'${name}' cannot be greater than ${max} in length",
range: "'${name}' must be between ${min} and ${max} in length"
},
pattern: {
mismatch: "'${name}' does not match pattern ${pattern}"
}
};
var AsyncValidator = Schema;
function replaceMessage(template, kv) {
return template.replace(/\$\{\w+\}/g, function(str) {
var key = str.slice(2, -1);
return kv[key];
});
}
var CODE_LOGIC_ERROR = "CODE_LOGIC_ERROR";
function validateRule(_x, _x2, _x3, _x4, _x5) {
return _validateRule.apply(this, arguments);
}
function _validateRule() {
_validateRule = _asyncToGenerator(/* @__PURE__ */ _regeneratorRuntime().mark(function _callee2(name, value, rule, options, messageVariables) {
var cloneRule, originValidator, subRuleField, validator2, messages2, result, subResults, kv, fillVariableResult;
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
while (1)
switch (_context2.prev = _context2.next) {
case 0:
cloneRule = _objectSpread2({}, rule);
delete cloneRule.ruleIndex;
AsyncValidator.warning = function() {
return void 0;
};
if (cloneRule.validator) {
originValidator = cloneRule.validator;
cloneRule.validator = function() {
try {
return originValidator.apply(void 0, arguments);
} catch (error) {
console.error(error);
return Promise.reject(CODE_LOGIC_ERROR);
}
};
}
subRuleField = null;
if (cloneRule && cloneRule.type === "array" && cloneRule.defaultField) {
subRuleField = cloneRule.defaultField;
delete cloneRule.defaultField;
}
validator2 = new AsyncValidator(_defineProperty({}, name, [cloneRule]));
messages2 = merge$1(defaultValidateMessages, options.validateMessages);
validator2.messages(messages2);
result = [];
_context2.prev = 10;
_context2.next = 13;
return Promise.resolve(validator2.validate(_defineProperty({}, name, value), _objectSpread2({}, options)));
case 13:
_context2.next = 18;
break;
case 15:
_context2.prev = 15;
_context2.t0 = _context2["catch"](10);
if (_context2.t0.errors) {
result = _context2.t0.errors.map(function(_ref4, index2) {
var message = _ref4.message;
var mergedMessage = message === CODE_LOGIC_ERROR ? messages2.default : message;
return /* @__PURE__ */ React__namespace.isValidElement(mergedMessage) ? (
// Wrap ReactNode with `key`
/* @__PURE__ */ React__namespace.cloneElement(mergedMessage, {
key: "error_".concat(index2)
})
) : mergedMessage;
});
}
case 18:
if (!(!result.length && subRuleField)) {
_context2.next = 23;
break;
}
_context2.next = 21;
return Promise.all(value.map(function(subValue, i) {
return validateRule("".concat(name, ".").concat(i), subValue, subRuleField, options, messageVariables);
}));
case 21:
subResults = _context2.sent;
return _context2.abrupt("return", subResults.reduce(function(prev2, errors) {
return [].concat(_toConsumableArray(prev2), _toConsumableArray(errors));
}, []));
case 23:
kv = _objectSpread2(_objectSpread2({}, rule), {}, {
name,
enum: (rule.enum || []).join(", ")
}, messageVariables);
fillVariableResult = result.map(function(error) {
if (typeof error === "string") {
return replaceMessage(error, kv);
}
return error;
});
return _context2.abrupt("return", fillVariableResult);
case 26:
case "end":
return _context2.stop();
}
}, _callee2, null, [[10, 15]]);
}));
return _validateRule.apply(this, arguments);
}
function validateRules(namePath, value, rules2, options, validateFirst, messageVariables) {
var name = namePath.join(".");
var filledRules = rules2.map(function(currentRule, ruleIndex) {
var originValidatorFunc = currentRule.validator;
var cloneRule = _objectSpread2(_objectSpread2({}, currentRule), {}, {
ruleIndex
});
if (originValidatorFunc) {
cloneRule.validator = function(rule, val, callback) {
var hasPromise = false;
var wrappedCallback = function wrappedCallback2() {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
Promise.resolve().then(function() {
warningOnce(!hasPromise, "Your validator function has already return a promise. `callback` will be ignored.");
if (!hasPromise) {
callback.apply(void 0, args);
}
});
};
var promise = originValidatorFunc(rule, val, wrappedCallback);
hasPromise = promise && typeof promise.then === "function" && typeof promise.catch === "function";
warningOnce(hasPromise, "`callback` is deprecated. Please return a promise instead.");
if (hasPromise) {
promise.then(function() {
callback();
}).catch(function(err) {
callback(err || " ");
});
}
};
}
return cloneRule;
}).sort(function(_ref, _ref2) {
var w1 = _ref.warningOnly, i1 = _ref.ruleIndex;
var w2 = _ref2.warningOnly, i2 = _ref2.ruleIndex;
if (!!w1 === !!w2) {
return i1 - i2;
}
if (w1) {
return 1;
}
return -1;
});
var summaryPromise;
if (validateFirst === true) {
summaryPromise = new Promise(/* @__PURE__ */ function() {
var _ref3 = _asyncToGenerator(/* @__PURE__ */ _regeneratorRuntime().mark(function _callee(resolve, reject) {
var i, rule, errors;
return _regeneratorRuntime().wrap(function _callee$(_context) {
while (1)
switch (_context.prev = _context.next) {
case 0:
i = 0;
case 1:
if (!(i < filledRules.length)) {
_context.next = 12;
break;
}
rule = filledRules[i];
_context.next = 5;
return validateRule(name, value, rule, options, messageVariables);
case 5:
errors = _context.sent;
if (!errors.length) {
_context.next = 9;
break;
}
reject([{
errors,
rule
}]);
return _context.abrupt("return");
case 9:
i += 1;
_context.next = 1;
break;
case 12:
resolve([]);
case 13:
case "end":
return _context.stop();
}
}, _callee);
}));
return function(_x6, _x7) {
return _ref3.apply(this, arguments);
};
}());
} else {
var rulePromises = filledRules.map(function(rule) {
return validateRule(name, value, rule, options, messageVariables).then(function(errors) {
return {
errors,
rule
};
});
});
summaryPromise = (validateFirst ? finishOnFirstFailed(rulePromises) : finishOnAllFailed(rulePromises)).then(function(errors) {
return Promise.reject(errors);
});
}
summaryPromise.catch(function(e2) {
return e2;
});
return summaryPromise;
}
function finishOnAllFailed(_x8) {
return _finishOnAllFailed.apply(this, arguments);
}
function _finishOnAllFailed() {
_finishOnAllFailed = _asyncToGenerator(/* @__PURE__ */ _regeneratorRuntime().mark(function _callee3(rulePromises) {
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
while (1)
switch (_context3.prev = _context3.next) {
case 0:
return _context3.abrupt("return", Promise.all(rulePromises).then(function(errorsList) {
var _ref5;
var errors = (_ref5 = []).concat.apply(_ref5, _toConsumableArray(errorsList));
return errors;
}));
case 1:
case "end":
return _context3.stop();
}
}, _callee3);
}));
return _finishOnAllFailed.apply(this, arguments);
}
function finishOnFirstFailed(_x9) {
return _finishOnFirstFailed.apply(this, arguments);
}
function _finishOnFirstFailed() {
_finishOnFirstFailed = _asyncToGenerator(/* @__PURE__ */ _regeneratorRuntime().mark(function _callee4(rulePromises) {
var count;
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
while (1)
switch (_context4.prev = _context4.next) {
case 0:
count = 0;
return _context4.abrupt("return", new Promise(function(resolve) {
rulePromises.forEach(function(promise) {
promise.then(function(ruleError) {
if (ruleError.errors.length) {
resolve([ruleError]);
}
count += 1;
if (count === rulePromises.length) {
resolve([]);
}
});
});
}));
case 2:
case "end":
return _context4.stop();
}
}, _callee4);
}));
return _finishOnFirstFailed.apply(this, arguments);
}
function getNamePath(path) {
return toArray$2(path);
}
function cloneByNamePathList(store, namePathList) {
var newStore = {};
namePathList.forEach(function(namePath) {
var value = get(store, namePath);
newStore = set(newStore, namePath, value);
});
return newStore;
}
function containsNamePath(namePathList, namePath) {
var partialMatch = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
return namePathList && namePathList.some(function(path) {
return matchNamePath(namePath, path, partialMatch);
});
}
function matchNamePath(namePath, subNamePath) {
var partialMatch = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
if (!namePath || !subNamePath) {
return false;
}
if (!partialMatch && namePath.length !== subNamePath.length) {
return false;
}
return subNamePath.every(function(nameUnit, i) {
return namePath[i] === nameUnit;
});
}
function isSimilar(source, target) {
if (source === target) {
return true;
}
if (!source && target || source && !target) {
return false;
}
if (!source || !target || _typeof(source) !== "object" || _typeof(target) !== "object") {
return false;
}
var sourceKeys = Object.keys(source);
var targetKeys = Object.keys(target);
var keys2 = new Set([].concat(sourceKeys, targetKeys));
return _toConsumableArray(keys2).every(function(key) {
var sourceValue = source[key];
var targetValue = target[key];
if (typeof sourceValue === "function" && typeof targetValue === "function") {
return true;
}
return sourceValue === targetValue;
});
}
function defaultGetValueFromEvent(valuePropName) {
var event = arguments.length <= 1 ? void 0 : arguments[1];
if (event && event.target && _typeof(event.target) === "object" && valuePropName in event.target) {
return event.target[valuePropName];
}
return event;
}
function move(array4, moveIndex, toIndex) {
var length2 = array4.length;
if (moveIndex < 0 || moveIndex >= length2 || toIndex < 0 || toIndex >= length2) {
return array4;
}
var item = array4[moveIndex];
var diff = moveIndex - toIndex;
if (diff > 0) {
return [].concat(_toConsumableArray(array4.slice(0, toIndex)), [item], _toConsumableArray(array4.slice(toIndex, moveIndex)), _toConsumableArray(array4.slice(moveIndex + 1, length2)));
}
if (diff < 0) {
return [].concat(_toConsumableArray(array4.slice(0, moveIndex)), _toConsumableArray(array4.slice(moveIndex + 1, toIndex + 1)), [item], _toConsumableArray(array4.slice(toIndex + 1, length2)));
}
return array4;
}
var _excluded$c = ["name"];
var EMPTY_ERRORS = [];
function requireUpdate(shouldUpdate, prev2, next2, prevValue, nextValue, info2) {
if (typeof shouldUpdate === "function") {
return shouldUpdate(prev2, next2, "source" in info2 ? {
source: info2.source
} : {});
}
return prevValue !== nextValue;
}
var Field = /* @__PURE__ */ function(_React$Component) {
_inherits(Field2, _React$Component);
var _super = _createSuper(Field2);
function Field2(props) {
var _this;
_classCallCheck(this, Field2);
_this = _super.call(this, props);
_defineProperty(_assertThisInitialized(_this), "state", {
resetCount: 0
});
_defineProperty(_assertThisInitialized(_this), "cancelRegisterFunc", null);
_defineProperty(_assertThisInitialized(_this), "mounted", false);
_defineProperty(_assertThisInitialized(_this), "touched", false);
_defineProperty(_assertThisInitialized(_this), "dirty", false);
_defineProperty(_assertThisInitialized(_this), "validatePromise", void 0);
_defineProperty(_assertThisInitialized(_this), "prevValidating", void 0);
_defineProperty(_assertThisInitialized(_this), "errors", EMPTY_ERRORS);
_defineProperty(_assertThisInitialized(_this), "warnings", EMPTY_ERRORS);
_defineProperty(_assertThisInitialized(_this), "cancelRegister", function() {
var _this$props = _this.props, preserve2 = _this$props.preserve, isListField = _this$props.isListField, name = _this$props.name;
if (_this.cancelRegisterFunc) {
_this.cancelRegisterFunc(isListField, preserve2, getNamePath(name));
}
_this.cancelRegisterFunc = null;
});
_defineProperty(_assertThisInitialized(_this), "getNamePath", function() {
var _this$props2 = _this.props, name = _this$props2.name, fieldContext = _this$props2.fieldContext;
var _fieldContext$prefixN = fieldContext.prefixName, prefixName = _fieldContext$prefixN === void 0 ? [] : _fieldContext$prefixN;
return name !== void 0 ? [].concat(_toConsumableArray(prefixName), _toConsumableArray(name)) : [];
});
_defineProperty(_assertThisInitialized(_this), "getRules", function() {
var _this$props3 = _this.props, _this$props3$rules = _this$props3.rules, rules2 = _this$props3$rules === void 0 ? [] : _this$props3$rules, fieldContext = _this$props3.fieldContext;
return rules2.map(function(rule) {
if (typeof rule === "function") {
return rule(fieldContext);
}
return rule;
});
});
_defineProperty(_assertThisInitialized(_this), "refresh", function() {
if (!_this.mounted)
return;
_this.setState(function(_ref) {
var resetCount = _ref.resetCount;
return {
resetCount: resetCount + 1
};
});
});
_defineProperty(_assertThisInitialized(_this), "metaCache", null);
_defineProperty(_assertThisInitialized(_this), "triggerMetaEvent", function(destroy) {
var onMetaChange = _this.props.onMetaChange;
if (onMetaChange) {
var _meta = _objectSpread2(_objectSpread2({}, _this.getMeta()), {}, {
destroy
});
if (!isEqual(_this.metaCache, _meta)) {
onMetaChange(_meta);
}
_this.metaCache = _meta;
} else {
_this.metaCache = null;
}
});
_defineProperty(_assertThisInitialized(_this), "onStoreChange", function(prevStore, namePathList, info2) {
var _this$props4 = _this.props, shouldUpdate = _this$props4.shouldUpdate, _this$props4$dependen = _this$props4.dependencies, dependencies = _this$props4$dependen === void 0 ? [] : _this$props4$dependen, onReset = _this$props4.onReset;
var store = info2.store;
var namePath = _this.getNamePath();
var prevValue = _this.getValue(prevStore);
var curValue = _this.getValue(store);
var namePathMatch = namePathList && containsNamePath(namePathList, namePath);
if (info2.type === "valueUpdate" && info2.source === "external" && prevValue !== curValue) {
_this.touched = true;
_this.dirty = true;
_this.validatePromise = null;
_this.errors = EMPTY_ERRORS;
_this.warnings = EMPTY_ERRORS;
_this.triggerMetaEvent();
}
switch (info2.type) {
case "reset":
if (!namePathList || namePathMatch) {
_this.touched = false;
_this.dirty = false;
_this.validatePromise = void 0;
_this.errors = EMPTY_ERRORS;
_this.warnings = EMPTY_ERRORS;
_this.triggerMetaEvent();
onReset === null || onReset === void 0 || onReset();
_this.refresh();
return;
}
break;
case "remove": {
if (shouldUpdate) {
_this.reRender();
return;
}
break;
}
case "setField": {
var data = info2.data;
if (namePathMatch) {
if ("touched" in data) {
_this.touched = data.touched;
}
if ("validating" in data && !("originRCField" in data)) {
_this.validatePromise = data.validating ? Promise.resolve([]) : null;
}
if ("errors" in data) {
_this.errors = data.errors || EMPTY_ERRORS;
}
if ("warnings" in data) {
_this.warnings = data.warnings || EMPTY_ERRORS;
}
_this.dirty = true;
_this.triggerMetaEvent();
_this.reRender();
return;
} else if ("value" in data && containsNamePath(namePathList, namePath, true)) {
_this.reRender();
return;
}
if (shouldUpdate && !namePath.length && requireUpdate(shouldUpdate, prevStore, store, prevValue, curValue, info2)) {
_this.reRender();
return;
}
break;
}
case "dependenciesUpdate": {
var dependencyList = dependencies.map(getNamePath);
if (dependencyList.some(function(dependency) {
return containsNamePath(info2.relatedFields, dependency);
})) {
_this.reRender();
return;
}
break;
}
default:
if (namePathMatch || (!dependencies.length || namePath.length || shouldUpdate) && requireUpdate(shouldUpdate, prevStore, store, prevValue, curValue, info2)) {
_this.reRender();
return;
}
break;
}
if (shouldUpdate === true) {
_this.reRender();
}
});
_defineProperty(_assertThisInitialized(_this), "validateRules", function(options) {
var namePath = _this.getNamePath();
var currentValue = _this.getValue();
var _ref2 = options || {}, triggerName = _ref2.triggerName, _ref2$validateOnly = _ref2.validateOnly, validateOnly = _ref2$validateOnly === void 0 ? false : _ref2$validateOnly;
var rootPromise = Promise.resolve().then(/* @__PURE__ */ _asyncToGenerator(/* @__PURE__ */ _regeneratorRuntime().mark(function _callee() {
var _this$props5, _this$props5$validate, validateFirst, messageVariables, validateDebounce, filteredRules, promise;
return _regeneratorRuntime().wrap(function _callee$(_context) {
while (1)
switch (_context.prev = _context.next) {
case 0:
if (_this.mounted) {
_context.next = 2;
break;
}
return _context.abrupt("return", []);
case 2:
_this$props5 = _this.props, _this$props5$validate = _this$props5.validateFirst, validateFirst = _this$props5$validate === void 0 ? false : _this$props5$validate, messageVariables = _this$props5.messageVariables, validateDebounce = _this$props5.validateDebounce;
filteredRules = _this.getRules();
if (triggerName) {
filteredRules = filteredRules.filter(function(rule) {
return rule;
}).filter(function(rule) {
var validateTrigger = rule.validateTrigger;
if (!validateTrigger) {
return true;
}
var triggerList = toArray$2(validateTrigger);
return triggerList.includes(triggerName);
});
}
if (!(validateDebounce && triggerName)) {
_context.next = 10;
break;
}
_context.next = 8;
return new Promise(function(resolve) {
setTimeout(resolve, validateDebounce);
});
case 8:
if (!(_this.validatePromise !== rootPromise)) {
_context.next = 10;
break;
}
return _context.abrupt("return", []);
case 10:
promise = validateRules(namePath, currentValue, filteredRules, options, validateFirst, messageVariables);
promise.catch(function(e2) {
return e2;
}).then(function() {
var ruleErrors = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : EMPTY_ERRORS;
if (_this.validatePromise === rootPromise) {
var _ruleErrors$forEach;
_this.validatePromise = null;
var nextErrors = [];
var nextWarnings = [];
(_ruleErrors$forEach = ruleErrors.forEach) === null || _ruleErrors$forEach === void 0 || _ruleErrors$forEach.call(ruleErrors, function(_ref4) {
var warningOnly = _ref4.rule.warningOnly, _ref4$errors = _ref4.errors, errors = _ref4$errors === void 0 ? EMPTY_ERRORS : _ref4$errors;
if (warningOnly) {
nextWarnings.push.apply(nextWarnings, _toConsumableArray(errors));
} else {
nextErrors.push.apply(nextErrors, _toConsumableArray(errors));
}
});
_this.errors = nextErrors;
_this.warnings = nextWarnings;
_this.triggerMetaEvent();
_this.reRender();
}
});
return _context.abrupt("return", promise);
case 13:
case "end":
return _context.stop();
}
}, _callee);
})));
if (validateOnly) {
return rootPromise;
}
_this.validatePromise = rootPromise;
_this.dirty = true;
_this.errors = EMPTY_ERRORS;
_this.warnings = EMPTY_ERRORS;
_this.triggerMetaEvent();
_this.reRender();
return rootPromise;
});
_defineProperty(_assertThisInitialized(_this), "isFieldValidating", function() {
return !!_this.validatePromise;
});
_defineProperty(_assertThisInitialized(_this), "isFieldTouched", function() {
return _this.touched;
});
_defineProperty(_assertThisInitialized(_this), "isFieldDirty", function() {
if (_this.dirty || _this.props.initialValue !== void 0) {
return true;
}
var fieldContext = _this.props.fieldContext;
var _fieldContext$getInte = fieldContext.getInternalHooks(HOOK_MARK), getInitialValue = _fieldContext$getInte.getInitialValue;
if (getInitialValue(_this.getNamePath()) !== void 0) {
return true;
}
return false;
});
_defineProperty(_assertThisInitialized(_this), "getErrors", function() {
return _this.errors;
});
_defineProperty(_assertThisInitialized(_this), "getWarnings", function() {
return _this.warnings;
});
_defineProperty(_assertThisInitialized(_this), "isListField", function() {
return _this.props.isListField;
});
_defineProperty(_assertThisInitialized(_this), "isList", function() {
return _this.props.isList;
});
_defineProperty(_assertThisInitialized(_this), "isPreserve", function() {
return _this.props.preserve;
});
_defineProperty(_assertThisInitialized(_this), "getMeta", function() {
_this.prevValidating = _this.isFieldValidating();
var meta = {
touched: _this.isFieldTouched(),
validating: _this.prevValidating,
errors: _this.errors,
warnings: _this.warnings,
name: _this.getNamePath(),
validated: _this.validatePromise === null
};
return meta;
});
_defineProperty(_assertThisInitialized(_this), "getOnlyChild", function(children) {
if (typeof children === "function") {
var _meta2 = _this.getMeta();
return _objectSpread2(_objectSpread2({}, _this.getOnlyChild(children(_this.getControlled(), _meta2, _this.props.fieldContext))), {}, {
isFunction: true
});
}
var childList = toArray$3(children);
if (childList.length !== 1 || !/* @__PURE__ */ React__namespace.isValidElement(childList[0])) {
return {
child: childList,
isFunction: false
};
}
return {
child: childList[0],
isFunction: false
};
});
_defineProperty(_assertThisInitialized(_this), "getValue", function(store) {
var getFieldsValue = _this.props.fieldContext.getFieldsValue;
var namePath = _this.getNamePath();
return get(store || getFieldsValue(true), namePath);
});
_defineProperty(_assertThisInitialized(_this), "getControlled", function() {
var childProps = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
var _this$props6 = _this.props, trigger = _this$props6.trigger, validateTrigger = _this$props6.validateTrigger, getValueFromEvent = _this$props6.getValueFromEvent, normalize2 = _this$props6.normalize, valuePropName = _this$props6.valuePropName, getValueProps = _this$props6.getValueProps, fieldContext = _this$props6.fieldContext;
var mergedValidateTrigger = validateTrigger !== void 0 ? validateTrigger : fieldContext.validateTrigger;
var namePath = _this.getNamePath();
var getInternalHooks3 = fieldContext.getInternalHooks, getFieldsValue = fieldContext.getFieldsValue;
var _getInternalHooks = getInternalHooks3(HOOK_MARK), dispatch = _getInternalHooks.dispatch;
var value = _this.getValue();
var mergedGetValueProps = getValueProps || function(val) {
return _defineProperty({}, valuePropName, val);
};
var originTriggerFunc = childProps[trigger];
var control = _objectSpread2(_objectSpread2({}, childProps), mergedGetValueProps(value));
control[trigger] = function() {
_this.touched = true;
_this.dirty = true;
_this.triggerMetaEvent();
var newValue;
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
if (getValueFromEvent) {
newValue = getValueFromEvent.apply(void 0, args);
} else {
newValue = defaultGetValueFromEvent.apply(void 0, [valuePropName].concat(args));
}
if (normalize2) {
newValue = normalize2(newValue, value, getFieldsValue(true));
}
dispatch({
type: "updateValue",
namePath,
value: newValue
});
if (originTriggerFunc) {
originTriggerFunc.apply(void 0, args);
}
};
var validateTriggerList = toArray$2(mergedValidateTrigger || []);
validateTriggerList.forEach(function(triggerName) {
var originTrigger = control[triggerName];
control[triggerName] = function() {
if (originTrigger) {
originTrigger.apply(void 0, arguments);
}
var rules2 = _this.props.rules;
if (rules2 && rules2.length) {
dispatch({
type: "validateField",
namePath,
triggerName
});
}
};
});
return control;
});
if (props.fieldContext) {
var getInternalHooks2 = props.fieldContext.getInternalHooks;
var _getInternalHooks2 = getInternalHooks2(HOOK_MARK), initEntityValue = _getInternalHooks2.initEntityValue;
initEntityValue(_assertThisInitialized(_this));
}
return _this;
}
_createClass(Field2, [{
key: "componentDidMount",
value: function componentDidMount() {
var _this$props7 = this.props, shouldUpdate = _this$props7.shouldUpdate, fieldContext = _this$props7.fieldContext;
this.mounted = true;
if (fieldContext) {
var getInternalHooks2 = fieldContext.getInternalHooks;
var _getInternalHooks3 = getInternalHooks2(HOOK_MARK), registerField = _getInternalHooks3.registerField;
this.cancelRegisterFunc = registerField(this);
}
if (shouldUpdate === true) {
this.reRender();
}
}
}, {
key: "componentWillUnmount",
value: function componentWillUnmount() {
this.cancelRegister();
this.triggerMetaEvent(true);
this.mounted = false;
}
}, {
key: "reRender",
value: function reRender() {
if (!this.mounted)
return;
this.forceUpdate();
}
}, {
key: "render",
value: function render2() {
var resetCount = this.state.resetCount;
var children = this.props.children;
var _this$getOnlyChild = this.getOnlyChild(children), child = _this$getOnlyChild.child, isFunction2 = _this$getOnlyChild.isFunction;
var returnChildNode;
if (isFunction2) {
returnChildNode = child;
} else if (/* @__PURE__ */ React__namespace.isValidElement(child)) {
returnChildNode = /* @__PURE__ */ React__namespace.cloneElement(child, this.getControlled(child.props));
} else {
warningOnce(!child, "`children` of Field is not validate ReactElement.");
returnChildNode = child;
}
return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, {
key: resetCount
}, returnChildNode);
}
}]);
return Field2;
}(React__namespace.Component);
_defineProperty(Field, "contextType", Context);
_defineProperty(Field, "defaultProps", {
trigger: "onChange",
valuePropName: "value"
});
function WrapperField(_ref6) {
var name = _ref6.name, restProps = _objectWithoutProperties(_ref6, _excluded$c);
var fieldContext = React__namespace.useContext(Context);
var listContext = React__namespace.useContext(ListContext);
var namePath = name !== void 0 ? getNamePath(name) : void 0;
var key = "keep";
if (!restProps.isListField) {
key = "_".concat((namePath || []).join("_"));
}
return /* @__PURE__ */ React__namespace.createElement(Field, _extends$1({
key,
name: namePath,
isListField: !!listContext
}, restProps, {
fieldContext
}));
}
function List$1(_ref) {
var name = _ref.name, initialValue = _ref.initialValue, children = _ref.children, rules2 = _ref.rules, validateTrigger = _ref.validateTrigger, isListField = _ref.isListField;
var context = React__namespace.useContext(Context);
var wrapperListContext = React__namespace.useContext(ListContext);
var keyRef = React__namespace.useRef({
keys: [],
id: 0
});
var keyManager = keyRef.current;
var prefixName = React__namespace.useMemo(function() {
var parentPrefixName = getNamePath(context.prefixName) || [];
return [].concat(_toConsumableArray(parentPrefixName), _toConsumableArray(getNamePath(name)));
}, [context.prefixName, name]);
var fieldContext = React__namespace.useMemo(function() {
return _objectSpread2(_objectSpread2({}, context), {}, {
prefixName
});
}, [context, prefixName]);
var listContext = React__namespace.useMemo(function() {
return {
getKey: function getKey2(namePath) {
var len = prefixName.length;
var pathName = namePath[len];
return [keyManager.keys[pathName], namePath.slice(len + 1)];
}
};
}, [prefixName]);
if (typeof children !== "function") {
warningOnce(false, "Form.List only accepts function as children.");
return null;
}
var shouldUpdate = function shouldUpdate2(prevValue, nextValue, _ref2) {
var source = _ref2.source;
if (source === "internal") {
return false;
}
return prevValue !== nextValue;
};
return /* @__PURE__ */ React__namespace.createElement(ListContext.Provider, {
value: listContext
}, /* @__PURE__ */ React__namespace.createElement(Context.Provider, {
value: fieldContext
}, /* @__PURE__ */ React__namespace.createElement(WrapperField, {
name: [],
shouldUpdate,
rules: rules2,
validateTrigger,
initialValue,
isList: true,
isListField: isListField !== null && isListField !== void 0 ? isListField : !!wrapperListContext
}, function(_ref3, meta) {
var _ref3$value = _ref3.value, value = _ref3$value === void 0 ? [] : _ref3$value, onChange = _ref3.onChange;
var getFieldValue = context.getFieldValue;
var getNewValue = function getNewValue2() {
var values = getFieldValue(prefixName || []);
return values || [];
};
var operations = {
add: function add(defaultValue, index2) {
var newValue = getNewValue();
if (index2 >= 0 && index2 <= newValue.length) {
keyManager.keys = [].concat(_toConsumableArray(keyManager.keys.slice(0, index2)), [keyManager.id], _toConsumableArray(keyManager.keys.slice(index2)));
onChange([].concat(_toConsumableArray(newValue.slice(0, index2)), [defaultValue], _toConsumableArray(newValue.slice(index2))));
} else {
keyManager.keys = [].concat(_toConsumableArray(keyManager.keys), [keyManager.id]);
onChange([].concat(_toConsumableArray(newValue), [defaultValue]));
}
keyManager.id += 1;
},
remove: function remove(index2) {
var newValue = getNewValue();
var indexSet = new Set(Array.isArray(index2) ? index2 : [index2]);
if (indexSet.size <= 0) {
return;
}
keyManager.keys = keyManager.keys.filter(function(_, keysIndex) {
return !indexSet.has(keysIndex);
});
onChange(newValue.filter(function(_, valueIndex) {
return !indexSet.has(valueIndex);
}));
},
move: function move$1(from2, to) {
if (from2 === to) {
return;
}
var newValue = getNewValue();
if (from2 < 0 || from2 >= newValue.length || to < 0 || to >= newValue.length) {
return;
}
keyManager.keys = move(keyManager.keys, from2, to);
onChange(move(newValue, from2, to));
}
};
var listValue = value || [];
if (!Array.isArray(listValue)) {
listValue = [];
}
return children(listValue.map(function(__, index2) {
var key = keyManager.keys[index2];
if (key === void 0) {
keyManager.keys[index2] = keyManager.id;
key = keyManager.keys[index2];
keyManager.id += 1;
}
return {
name: index2,
key,
isListField: true
};
}), operations, meta);
})));
}
function allPromiseFinish(promiseList) {
var hasError = false;
var count = promiseList.length;
var results = [];
if (!promiseList.length) {
return Promise.resolve([]);
}
return new Promise(function(resolve, reject) {
promiseList.forEach(function(promise, index2) {
promise.catch(function(e2) {
hasError = true;
return e2;
}).then(function(result) {
count -= 1;
results[index2] = result;
if (count > 0) {
return;
}
if (hasError) {
reject(results);
}
resolve(results);
});
});
});
}
var SPLIT = "__@field_split__";
function normalize(namePath) {
return namePath.map(function(cell) {
return "".concat(_typeof(cell), ":").concat(cell);
}).join(SPLIT);
}
var NameMap = /* @__PURE__ */ function() {
function NameMap2() {
_classCallCheck(this, NameMap2);
_defineProperty(this, "kvs", /* @__PURE__ */ new Map());
}
_createClass(NameMap2, [{
key: "set",
value: function set2(key, value) {
this.kvs.set(normalize(key), value);
}
}, {
key: "get",
value: function get2(key) {
return this.kvs.get(normalize(key));
}
}, {
key: "update",
value: function update(key, updater) {
var origin = this.get(key);
var next2 = updater(origin);
if (!next2) {
this.delete(key);
} else {
this.set(key, next2);
}
}
}, {
key: "delete",
value: function _delete(key) {
this.kvs.delete(normalize(key));
}
// Since we only use this in test, let simply realize this
}, {
key: "map",
value: function map(callback) {
return _toConsumableArray(this.kvs.entries()).map(function(_ref) {
var _ref2 = _slicedToArray(_ref, 2), key = _ref2[0], value = _ref2[1];
var cells = key.split(SPLIT);
return callback({
key: cells.map(function(cell) {
var _cell$match = cell.match(/^([^:]*):(.*)$/), _cell$match2 = _slicedToArray(_cell$match, 3), type4 = _cell$match2[1], unit2 = _cell$match2[2];
return type4 === "number" ? Number(unit2) : unit2;
}),
value
});
});
}
}, {
key: "toJSON",
value: function toJSON2() {
var json = {};
this.map(function(_ref3) {
var key = _ref3.key, value = _ref3.value;
json[key.join(".")] = value;
return null;
});
return json;
}
}]);
return NameMap2;
}();
var _excluded$b = ["name"];
var FormStore = /* @__PURE__ */ _createClass(function FormStore2(forceRootUpdate) {
var _this = this;
_classCallCheck(this, FormStore2);
_defineProperty(this, "formHooked", false);
_defineProperty(this, "forceRootUpdate", void 0);
_defineProperty(this, "subscribable", true);
_defineProperty(this, "store", {});
_defineProperty(this, "fieldEntities", []);
_defineProperty(this, "initialValues", {});
_defineProperty(this, "callbacks", {});
_defineProperty(this, "validateMessages", null);
_defineProperty(this, "preserve", null);
_defineProperty(this, "lastValidatePromise", null);
_defineProperty(this, "getForm", function() {
return {
getFieldValue: _this.getFieldValue,
getFieldsValue: _this.getFieldsValue,
getFieldError: _this.getFieldError,
getFieldWarning: _this.getFieldWarning,
getFieldsError: _this.getFieldsError,
isFieldsTouched: _this.isFieldsTouched,
isFieldTouched: _this.isFieldTouched,
isFieldValidating: _this.isFieldValidating,
isFieldsValidating: _this.isFieldsValidating,
resetFields: _this.resetFields,
setFields: _this.setFields,
setFieldValue: _this.setFieldValue,
setFieldsValue: _this.setFieldsValue,
validateFields: _this.validateFields,
submit: _this.submit,
_init: true,
getInternalHooks: _this.getInternalHooks
};
});
_defineProperty(this, "getInternalHooks", function(key) {
if (key === HOOK_MARK) {
_this.formHooked = true;
return {
dispatch: _this.dispatch,
initEntityValue: _this.initEntityValue,
registerField: _this.registerField,
useSubscribe: _this.useSubscribe,
setInitialValues: _this.setInitialValues,
destroyForm: _this.destroyForm,
setCallbacks: _this.setCallbacks,
setValidateMessages: _this.setValidateMessages,
getFields: _this.getFields,
setPreserve: _this.setPreserve,
getInitialValue: _this.getInitialValue,
registerWatch: _this.registerWatch
};
}
warningOnce(false, "`getInternalHooks` is internal usage. Should not call directly.");
return null;
});
_defineProperty(this, "useSubscribe", function(subscribable) {
_this.subscribable = subscribable;
});
_defineProperty(this, "prevWithoutPreserves", null);
_defineProperty(this, "setInitialValues", function(initialValues, init) {
_this.initialValues = initialValues || {};
if (init) {
var _this$prevWithoutPres;
var nextStore = merge$1(initialValues, _this.store);
(_this$prevWithoutPres = _this.prevWithoutPreserves) === null || _this$prevWithoutPres === void 0 || _this$prevWithoutPres.map(function(_ref) {
var namePath = _ref.key;
nextStore = set(nextStore, namePath, get(initialValues, namePath));
});
_this.prevWithoutPreserves = null;
_this.updateStore(nextStore);
}
});
_defineProperty(this, "destroyForm", function() {
var prevWithoutPreserves = new NameMap();
_this.getFieldEntities(true).forEach(function(entity) {
if (!_this.isMergedPreserve(entity.isPreserve())) {
prevWithoutPreserves.set(entity.getNamePath(), true);
}
});
_this.prevWithoutPreserves = prevWithoutPreserves;
});
_defineProperty(this, "getInitialValue", function(namePath) {
var initValue = get(_this.initialValues, namePath);
return namePath.length ? merge$1(initValue) : initValue;
});
_defineProperty(this, "setCallbacks", function(callbacks) {
_this.callbacks = callbacks;
});
_defineProperty(this, "setValidateMessages", function(validateMessages) {
_this.validateMessages = validateMessages;
});
_defineProperty(this, "setPreserve", function(preserve2) {
_this.preserve = preserve2;
});
_defineProperty(this, "watchList", []);
_defineProperty(this, "registerWatch", function(callback) {
_this.watchList.push(callback);
return function() {
_this.watchList = _this.watchList.filter(function(fn) {
return fn !== callback;
});
};
});
_defineProperty(this, "notifyWatch", function() {
var namePath = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
if (_this.watchList.length) {
var values = _this.getFieldsValue();
var allValues = _this.getFieldsValue(true);
_this.watchList.forEach(function(callback) {
callback(values, allValues, namePath);
});
}
});
_defineProperty(this, "timeoutId", null);
_defineProperty(this, "warningUnhooked", function() {
});
_defineProperty(this, "updateStore", function(nextStore) {
_this.store = nextStore;
});
_defineProperty(this, "getFieldEntities", function() {
var pure = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false;
if (!pure) {
return _this.fieldEntities;
}
return _this.fieldEntities.filter(function(field) {
return field.getNamePath().length;
});
});
_defineProperty(this, "getFieldsMap", function() {
var pure = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false;
var cache = new NameMap();
_this.getFieldEntities(pure).forEach(function(field) {
var namePath = field.getNamePath();
cache.set(namePath, field);
});
return cache;
});
_defineProperty(this, "getFieldEntitiesForNamePathList", function(nameList) {
if (!nameList) {
return _this.getFieldEntities(true);
}
var cache = _this.getFieldsMap(true);
return nameList.map(function(name) {
var namePath = getNamePath(name);
return cache.get(namePath) || {
INVALIDATE_NAME_PATH: getNamePath(name)
};
});
});
_defineProperty(this, "getFieldsValue", function(nameList, filterFunc) {
_this.warningUnhooked();
var mergedNameList;
var mergedFilterFunc;
var mergedStrict;
if (nameList === true || Array.isArray(nameList)) {
mergedNameList = nameList;
mergedFilterFunc = filterFunc;
} else if (nameList && _typeof(nameList) === "object") {
mergedStrict = nameList.strict;
mergedFilterFunc = nameList.filter;
}
if (mergedNameList === true && !mergedFilterFunc) {
return _this.store;
}
var fieldEntities = _this.getFieldEntitiesForNamePathList(Array.isArray(mergedNameList) ? mergedNameList : null);
var filteredNameList = [];
fieldEntities.forEach(function(entity) {
var _isListField, _ref3;
var namePath = "INVALIDATE_NAME_PATH" in entity ? entity.INVALIDATE_NAME_PATH : entity.getNamePath();
if (mergedStrict) {
var _isList, _ref2;
if ((_isList = (_ref2 = entity).isList) !== null && _isList !== void 0 && _isList.call(_ref2)) {
return;
}
} else if (!mergedNameList && (_isListField = (_ref3 = entity).isListField) !== null && _isListField !== void 0 && _isListField.call(_ref3)) {
return;
}
if (!mergedFilterFunc) {
filteredNameList.push(namePath);
} else {
var meta = "getMeta" in entity ? entity.getMeta() : null;
if (mergedFilterFunc(meta)) {
filteredNameList.push(namePath);
}
}
});
return cloneByNamePathList(_this.store, filteredNameList.map(getNamePath));
});
_defineProperty(this, "getFieldValue", function(name) {
_this.warningUnhooked();
var namePath = getNamePath(name);
return get(_this.store, namePath);
});
_defineProperty(this, "getFieldsError", function(nameList) {
_this.warningUnhooked();
var fieldEntities = _this.getFieldEntitiesForNamePathList(nameList);
return fieldEntities.map(function(entity, index2) {
if (entity && !("INVALIDATE_NAME_PATH" in entity)) {
return {
name: entity.getNamePath(),
errors: entity.getErrors(),
warnings: entity.getWarnings()
};
}
return {
name: getNamePath(nameList[index2]),
errors: [],
warnings: []
};
});
});
_defineProperty(this, "getFieldError", function(name) {
_this.warningUnhooked();
var namePath = getNamePath(name);
var fieldError = _this.getFieldsError([namePath])[0];
return fieldError.errors;
});
_defineProperty(this, "getFieldWarning", function(name) {
_this.warningUnhooked();
var namePath = getNamePath(name);
var fieldError = _this.getFieldsError([namePath])[0];
return fieldError.warnings;
});
_defineProperty(this, "isFieldsTouched", function() {
_this.warningUnhooked();
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
var arg0 = args[0], arg1 = args[1];
var namePathList;
var isAllFieldsTouched = false;
if (args.length === 0) {
namePathList = null;
} else if (args.length === 1) {
if (Array.isArray(arg0)) {
namePathList = arg0.map(getNamePath);
isAllFieldsTouched = false;
} else {
namePathList = null;
isAllFieldsTouched = arg0;
}
} else {
namePathList = arg0.map(getNamePath);
isAllFieldsTouched = arg1;
}
var fieldEntities = _this.getFieldEntities(true);
var isFieldTouched = function isFieldTouched2(field) {
return field.isFieldTouched();
};
if (!namePathList) {
return isAllFieldsTouched ? fieldEntities.every(isFieldTouched) : fieldEntities.some(isFieldTouched);
}
var map = new NameMap();
namePathList.forEach(function(shortNamePath) {
map.set(shortNamePath, []);
});
fieldEntities.forEach(function(field) {
var fieldNamePath = field.getNamePath();
namePathList.forEach(function(shortNamePath) {
if (shortNamePath.every(function(nameUnit, i) {
return fieldNamePath[i] === nameUnit;
})) {
map.update(shortNamePath, function(list) {
return [].concat(_toConsumableArray(list), [field]);
});
}
});
});
var isNamePathListTouched = function isNamePathListTouched2(entities) {
return entities.some(isFieldTouched);
};
var namePathListEntities = map.map(function(_ref4) {
var value = _ref4.value;
return value;
});
return isAllFieldsTouched ? namePathListEntities.every(isNamePathListTouched) : namePathListEntities.some(isNamePathListTouched);
});
_defineProperty(this, "isFieldTouched", function(name) {
_this.warningUnhooked();
return _this.isFieldsTouched([name]);
});
_defineProperty(this, "isFieldsValidating", function(nameList) {
_this.warningUnhooked();
var fieldEntities = _this.getFieldEntities();
if (!nameList) {
return fieldEntities.some(function(testField) {
return testField.isFieldValidating();
});
}
var namePathList = nameList.map(getNamePath);
return fieldEntities.some(function(testField) {
var fieldNamePath = testField.getNamePath();
return containsNamePath(namePathList, fieldNamePath) && testField.isFieldValidating();
});
});
_defineProperty(this, "isFieldValidating", function(name) {
_this.warningUnhooked();
return _this.isFieldsValidating([name]);
});
_defineProperty(this, "resetWithFieldInitialValue", function() {
var info2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
var cache = new NameMap();
var fieldEntities = _this.getFieldEntities(true);
fieldEntities.forEach(function(field) {
var initialValue = field.props.initialValue;
var namePath = field.getNamePath();
if (initialValue !== void 0) {
var records = cache.get(namePath) || /* @__PURE__ */ new Set();
records.add({
entity: field,
value: initialValue
});
cache.set(namePath, records);
}
});
var resetWithFields = function resetWithFields2(entities) {
entities.forEach(function(field) {
var initialValue = field.props.initialValue;
if (initialValue !== void 0) {
var namePath = field.getNamePath();
var formInitialValue = _this.getInitialValue(namePath);
if (formInitialValue !== void 0) {
warningOnce(false, "Form already set 'initialValues' with path '".concat(namePath.join("."), "'. Field can not overwrite it."));
} else {
var records = cache.get(namePath);
if (records && records.size > 1) {
warningOnce(false, "Multiple Field with path '".concat(namePath.join("."), "' set 'initialValue'. Can not decide which one to pick."));
} else if (records) {
var originValue = _this.getFieldValue(namePath);
var isListField = field.isListField();
if (!isListField && (!info2.skipExist || originValue === void 0)) {
_this.updateStore(set(_this.store, namePath, _toConsumableArray(records)[0].value));
}
}
}
}
});
};
var requiredFieldEntities;
if (info2.entities) {
requiredFieldEntities = info2.entities;
} else if (info2.namePathList) {
requiredFieldEntities = [];
info2.namePathList.forEach(function(namePath) {
var records = cache.get(namePath);
if (records) {
var _requiredFieldEntitie;
(_requiredFieldEntitie = requiredFieldEntities).push.apply(_requiredFieldEntitie, _toConsumableArray(_toConsumableArray(records).map(function(r) {
return r.entity;
})));
}
});
} else {
requiredFieldEntities = fieldEntities;
}
resetWithFields(requiredFieldEntities);
});
_defineProperty(this, "resetFields", function(nameList) {
_this.warningUnhooked();
var prevStore = _this.store;
if (!nameList) {
_this.updateStore(merge$1(_this.initialValues));
_this.resetWithFieldInitialValue();
_this.notifyObservers(prevStore, null, {
type: "reset"
});
_this.notifyWatch();
return;
}
var namePathList = nameList.map(getNamePath);
namePathList.forEach(function(namePath) {
var initialValue = _this.getInitialValue(namePath);
_this.updateStore(set(_this.store, namePath, initialValue));
});
_this.resetWithFieldInitialValue({
namePathList
});
_this.notifyObservers(prevStore, namePathList, {
type: "reset"
});
_this.notifyWatch(namePathList);
});
_defineProperty(this, "setFields", function(fields) {
_this.warningUnhooked();
var prevStore = _this.store;
var namePathList = [];
fields.forEach(function(fieldData) {
var name = fieldData.name, data = _objectWithoutProperties(fieldData, _excluded$b);
var namePath = getNamePath(name);
namePathList.push(namePath);
if ("value" in data) {
_this.updateStore(set(_this.store, namePath, data.value));
}
_this.notifyObservers(prevStore, [namePath], {
type: "setField",
data: fieldData
});
});
_this.notifyWatch(namePathList);
});
_defineProperty(this, "getFields", function() {
var entities = _this.getFieldEntities(true);
var fields = entities.map(function(field) {
var namePath = field.getNamePath();
var meta = field.getMeta();
var fieldData = _objectSpread2(_objectSpread2({}, meta), {}, {
name: namePath,
value: _this.getFieldValue(namePath)
});
Object.defineProperty(fieldData, "originRCField", {
value: true
});
return fieldData;
});
return fields;
});
_defineProperty(this, "initEntityValue", function(entity) {
var initialValue = entity.props.initialValue;
if (initialValue !== void 0) {
var namePath = entity.getNamePath();
var prevValue = get(_this.store, namePath);
if (prevValue === void 0) {
_this.updateStore(set(_this.store, namePath, initialValue));
}
}
});
_defineProperty(this, "isMergedPreserve", function(fieldPreserve) {
var mergedPreserve = fieldPreserve !== void 0 ? fieldPreserve : _this.preserve;
return mergedPreserve !== null && mergedPreserve !== void 0 ? mergedPreserve : true;
});
_defineProperty(this, "registerField", function(entity) {
_this.fieldEntities.push(entity);
var namePath = entity.getNamePath();
_this.notifyWatch([namePath]);
if (entity.props.initialValue !== void 0) {
var prevStore = _this.store;
_this.resetWithFieldInitialValue({
entities: [entity],
skipExist: true
});
_this.notifyObservers(prevStore, [entity.getNamePath()], {
type: "valueUpdate",
source: "internal"
});
}
return function(isListField, preserve2) {
var subNamePath = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [];
_this.fieldEntities = _this.fieldEntities.filter(function(item) {
return item !== entity;
});
if (!_this.isMergedPreserve(preserve2) && (!isListField || subNamePath.length > 1)) {
var defaultValue = isListField ? void 0 : _this.getInitialValue(namePath);
if (namePath.length && _this.getFieldValue(namePath) !== defaultValue && _this.fieldEntities.every(function(field) {
return (
// Only reset when no namePath exist
!matchNamePath(field.getNamePath(), namePath)
);
})) {
var _prevStore = _this.store;
_this.updateStore(set(_prevStore, namePath, defaultValue, true));
_this.notifyObservers(_prevStore, [namePath], {
type: "remove"
});
_this.triggerDependenciesUpdate(_prevStore, namePath);
}
}
_this.notifyWatch([namePath]);
};
});
_defineProperty(this, "dispatch", function(action) {
switch (action.type) {
case "updateValue": {
var namePath = action.namePath, value = action.value;
_this.updateValue(namePath, value);
break;
}
case "validateField": {
var _namePath = action.namePath, triggerName = action.triggerName;
_this.validateFields([_namePath], {
triggerName
});
break;
}
}
});
_defineProperty(this, "notifyObservers", function(prevStore, namePathList, info2) {
if (_this.subscribable) {
var mergedInfo = _objectSpread2(_objectSpread2({}, info2), {}, {
store: _this.getFieldsValue(true)
});
_this.getFieldEntities().forEach(function(_ref5) {
var onStoreChange = _ref5.onStoreChange;
onStoreChange(prevStore, namePathList, mergedInfo);
});
} else {
_this.forceRootUpdate();
}
});
_defineProperty(this, "triggerDependenciesUpdate", function(prevStore, namePath) {
var childrenFields = _this.getDependencyChildrenFields(namePath);
if (childrenFields.length) {
_this.validateFields(childrenFields);
}
_this.notifyObservers(prevStore, childrenFields, {
type: "dependenciesUpdate",
relatedFields: [namePath].concat(_toConsumableArray(childrenFields))
});
return childrenFields;
});
_defineProperty(this, "updateValue", function(name, value) {
var namePath = getNamePath(name);
var prevStore = _this.store;
_this.updateStore(set(_this.store, namePath, value));
_this.notifyObservers(prevStore, [namePath], {
type: "valueUpdate",
source: "internal"
});
_this.notifyWatch([namePath]);
var childrenFields = _this.triggerDependenciesUpdate(prevStore, namePath);
var onValuesChange = _this.callbacks.onValuesChange;
if (onValuesChange) {
var changedValues = cloneByNamePathList(_this.store, [namePath]);
onValuesChange(changedValues, _this.getFieldsValue());
}
_this.triggerOnFieldsChange([namePath].concat(_toConsumableArray(childrenFields)));
});
_defineProperty(this, "setFieldsValue", function(store) {
_this.warningUnhooked();
var prevStore = _this.store;
if (store) {
var nextStore = merge$1(_this.store, store);
_this.updateStore(nextStore);
}
_this.notifyObservers(prevStore, null, {
type: "valueUpdate",
source: "external"
});
_this.notifyWatch();
});
_defineProperty(this, "setFieldValue", function(name, value) {
_this.setFields([{
name,
value
}]);
});
_defineProperty(this, "getDependencyChildrenFields", function(rootNamePath) {
var children = /* @__PURE__ */ new Set();
var childrenFields = [];
var dependencies2fields = new NameMap();
_this.getFieldEntities().forEach(function(field) {
var dependencies = field.props.dependencies;
(dependencies || []).forEach(function(dependency) {
var dependencyNamePath = getNamePath(dependency);
dependencies2fields.update(dependencyNamePath, function() {
var fields = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : /* @__PURE__ */ new Set();
fields.add(field);
return fields;
});
});
});
var fillChildren = function fillChildren2(namePath) {
var fields = dependencies2fields.get(namePath) || /* @__PURE__ */ new Set();
fields.forEach(function(field) {
if (!children.has(field)) {
children.add(field);
var fieldNamePath = field.getNamePath();
if (field.isFieldDirty() && fieldNamePath.length) {
childrenFields.push(fieldNamePath);
fillChildren2(fieldNamePath);
}
}
});
};
fillChildren(rootNamePath);
return childrenFields;
});
_defineProperty(this, "triggerOnFieldsChange", function(namePathList, filedErrors) {
var onFieldsChange = _this.callbacks.onFieldsChange;
if (onFieldsChange) {
var fields = _this.getFields();
if (filedErrors) {
var cache = new NameMap();
filedErrors.forEach(function(_ref6) {
var name = _ref6.name, errors = _ref6.errors;
cache.set(name, errors);
});
fields.forEach(function(field) {
field.errors = cache.get(field.name) || field.errors;
});
}
var changedFields = fields.filter(function(_ref7) {
var fieldName = _ref7.name;
return containsNamePath(namePathList, fieldName);
});
if (changedFields.length) {
onFieldsChange(changedFields, fields);
}
}
});
_defineProperty(this, "validateFields", function(arg1, arg2) {
_this.warningUnhooked();
var nameList;
var options;
if (Array.isArray(arg1) || typeof arg1 === "string" || typeof arg2 === "string") {
nameList = arg1;
options = arg2;
} else {
options = arg1;
}
var provideNameList = !!nameList;
var namePathList = provideNameList ? nameList.map(getNamePath) : [];
var promiseList = [];
var TMP_SPLIT = String(Date.now());
var validateNamePathList = /* @__PURE__ */ new Set();
var _ref8 = options || {}, recursive = _ref8.recursive, dirty = _ref8.dirty;
_this.getFieldEntities(true).forEach(function(field) {
if (!provideNameList) {
namePathList.push(field.getNamePath());
}
if (!field.props.rules || !field.props.rules.length) {
return;
}
if (dirty && !field.isFieldDirty()) {
return;
}
var fieldNamePath = field.getNamePath();
validateNamePathList.add(fieldNamePath.join(TMP_SPLIT));
if (!provideNameList || containsNamePath(namePathList, fieldNamePath, recursive)) {
var promise = field.validateRules(_objectSpread2({
validateMessages: _objectSpread2(_objectSpread2({}, defaultValidateMessages), _this.validateMessages)
}, options));
promiseList.push(promise.then(function() {
return {
name: fieldNamePath,
errors: [],
warnings: []
};
}).catch(function(ruleErrors) {
var _ruleErrors$forEach;
var mergedErrors = [];
var mergedWarnings = [];
(_ruleErrors$forEach = ruleErrors.forEach) === null || _ruleErrors$forEach === void 0 || _ruleErrors$forEach.call(ruleErrors, function(_ref9) {
var warningOnly = _ref9.rule.warningOnly, errors = _ref9.errors;
if (warningOnly) {
mergedWarnings.push.apply(mergedWarnings, _toConsumableArray(errors));
} else {
mergedErrors.push.apply(mergedErrors, _toConsumableArray(errors));
}
});
if (mergedErrors.length) {
return Promise.reject({
name: fieldNamePath,
errors: mergedErrors,
warnings: mergedWarnings
});
}
return {
name: fieldNamePath,
errors: mergedErrors,
warnings: mergedWarnings
};
}));
}
});
var summaryPromise = allPromiseFinish(promiseList);
_this.lastValidatePromise = summaryPromise;
summaryPromise.catch(function(results) {
return results;
}).then(function(results) {
var resultNamePathList = results.map(function(_ref10) {
var name = _ref10.name;
return name;
});
_this.notifyObservers(_this.store, resultNamePathList, {
type: "validateFinish"
});
_this.triggerOnFieldsChange(resultNamePathList, results);
});
var returnPromise = summaryPromise.then(function() {
if (_this.lastValidatePromise === summaryPromise) {
return Promise.resolve(_this.getFieldsValue(namePathList));
}
return Promise.reject([]);
}).catch(function(results) {
var errorList = results.filter(function(result) {
return result && result.errors.length;
});
return Promise.reject({
values: _this.getFieldsValue(namePathList),
errorFields: errorList,
outOfDate: _this.lastValidatePromise !== summaryPromise
});
});
returnPromise.catch(function(e2) {
return e2;
});
var triggerNamePathList = namePathList.filter(function(namePath) {
return validateNamePathList.has(namePath.join(TMP_SPLIT));
});
_this.triggerOnFieldsChange(triggerNamePathList);
return returnPromise;
});
_defineProperty(this, "submit", function() {
_this.warningUnhooked();
_this.validateFields().then(function(values) {
var onFinish = _this.callbacks.onFinish;
if (onFinish) {
try {
onFinish(values);
} catch (err) {
console.error(err);
}
}
}).catch(function(e2) {
var onFinishFailed = _this.callbacks.onFinishFailed;
if (onFinishFailed) {
onFinishFailed(e2);
}
});
});
this.forceRootUpdate = forceRootUpdate;
});
function useForm(form) {
var formRef = React__namespace.useRef();
var _React$useState = React__namespace.useState({}), _React$useState2 = _slicedToArray(_React$useState, 2), forceUpdate = _React$useState2[1];
if (!formRef.current) {
if (form) {
formRef.current = form;
} else {
var forceReRender = function forceReRender2() {
forceUpdate({});
};
var formStore = new FormStore(forceReRender);
formRef.current = formStore.getForm();
}
}
return [formRef.current];
}
var FormContext = /* @__PURE__ */ React__namespace.createContext({
triggerFormChange: function triggerFormChange() {
},
triggerFormFinish: function triggerFormFinish() {
},
registerForm: function registerForm() {
},
unregisterForm: function unregisterForm() {
}
});
var FormProvider = function FormProvider2(_ref) {
var validateMessages = _ref.validateMessages, onFormChange = _ref.onFormChange, onFormFinish = _ref.onFormFinish, children = _ref.children;
var formContext = React__namespace.useContext(FormContext);
var formsRef = React__namespace.useRef({});
return /* @__PURE__ */ React__namespace.createElement(FormContext.Provider, {
value: _objectSpread2(_objectSpread2({}, formContext), {}, {
validateMessages: _objectSpread2(_objectSpread2({}, formContext.validateMessages), validateMessages),
// =========================================================
// = Global Form Control =
// =========================================================
triggerFormChange: function triggerFormChange2(name, changedFields) {
if (onFormChange) {
onFormChange(name, {
changedFields,
forms: formsRef.current
});
}
formContext.triggerFormChange(name, changedFields);
},
triggerFormFinish: function triggerFormFinish2(name, values) {
if (onFormFinish) {
onFormFinish(name, {
values,
forms: formsRef.current
});
}
formContext.triggerFormFinish(name, values);
},
registerForm: function registerForm2(name, form) {
if (name) {
formsRef.current = _objectSpread2(_objectSpread2({}, formsRef.current), {}, _defineProperty({}, name, form));
}
formContext.registerForm(name, form);
},
unregisterForm: function unregisterForm2(name) {
var newForms = _objectSpread2({}, formsRef.current);
delete newForms[name];
formsRef.current = newForms;
formContext.unregisterForm(name);
}
})
}, children);
};
var _excluded$a = ["name", "initialValues", "fields", "form", "preserve", "children", "component", "validateMessages", "validateTrigger", "onValuesChange", "onFieldsChange", "onFinish", "onFinishFailed"];
var Form = function Form2(_ref, ref) {
var name = _ref.name, initialValues = _ref.initialValues, fields = _ref.fields, form = _ref.form, preserve2 = _ref.preserve, children = _ref.children, _ref$component = _ref.component, Component = _ref$component === void 0 ? "form" : _ref$component, validateMessages = _ref.validateMessages, _ref$validateTrigger = _ref.validateTrigger, validateTrigger = _ref$validateTrigger === void 0 ? "onChange" : _ref$validateTrigger, onValuesChange = _ref.onValuesChange, _onFieldsChange = _ref.onFieldsChange, _onFinish = _ref.onFinish, onFinishFailed = _ref.onFinishFailed, restProps = _objectWithoutProperties(_ref, _excluded$a);
var formContext = React__namespace.useContext(FormContext);
var _useForm = useForm(form), _useForm2 = _slicedToArray(_useForm, 1), formInstance = _useForm2[0];
var _getInternalHooks = formInstance.getInternalHooks(HOOK_MARK), useSubscribe = _getInternalHooks.useSubscribe, setInitialValues = _getInternalHooks.setInitialValues, setCallbacks = _getInternalHooks.setCallbacks, setValidateMessages = _getInternalHooks.setValidateMessages, setPreserve = _getInternalHooks.setPreserve, destroyForm = _getInternalHooks.destroyForm;
React__namespace.useImperativeHandle(ref, function() {
return formInstance;
});
React__namespace.useEffect(function() {
formContext.registerForm(name, formInstance);
return function() {
formContext.unregisterForm(name);
};
}, [formContext, formInstance, name]);
setValidateMessages(_objectSpread2(_objectSpread2({}, formContext.validateMessages), validateMessages));
setCallbacks({
onValuesChange,
onFieldsChange: function onFieldsChange(changedFields) {
formContext.triggerFormChange(name, changedFields);
if (_onFieldsChange) {
for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
rest[_key - 1] = arguments[_key];
}
_onFieldsChange.apply(void 0, [changedFields].concat(rest));
}
},
onFinish: function onFinish(values) {
formContext.triggerFormFinish(name, values);
if (_onFinish) {
_onFinish(values);
}
},
onFinishFailed
});
setPreserve(preserve2);
var mountRef = React__namespace.useRef(null);
setInitialValues(initialValues, !mountRef.current);
if (!mountRef.current) {
mountRef.current = true;
}
React__namespace.useEffect(
function() {
return destroyForm;
},
// eslint-disable-next-line react-hooks/exhaustive-deps
[]
);
var childrenNode;
var childrenRenderProps = typeof children === "function";
if (childrenRenderProps) {
var _values = formInstance.getFieldsValue(true);
childrenNode = children(_values, formInstance);
} else {
childrenNode = children;
}
useSubscribe(!childrenRenderProps);
var prevFieldsRef = React__namespace.useRef();
React__namespace.useEffect(function() {
if (!isSimilar(prevFieldsRef.current || [], fields || [])) {
formInstance.setFields(fields || []);
}
prevFieldsRef.current = fields;
}, [fields, formInstance]);
var formContextValue = React__namespace.useMemo(function() {
return _objectSpread2(_objectSpread2({}, formInstance), {}, {
validateTrigger
});
}, [formInstance, validateTrigger]);
var wrapperNode = /* @__PURE__ */ React__namespace.createElement(ListContext.Provider, {
value: null
}, /* @__PURE__ */ React__namespace.createElement(Context.Provider, {
value: formContextValue
}, childrenNode));
if (Component === false) {
return wrapperNode;
}
return /* @__PURE__ */ React__namespace.createElement(Component, _extends$1({}, restProps, {
onSubmit: function onSubmit(event) {
event.preventDefault();
event.stopPropagation();
formInstance.submit();
},
onReset: function onReset(event) {
var _restProps$onReset;
event.preventDefault();
formInstance.resetFields();
(_restProps$onReset = restProps.onReset) === null || _restProps$onReset === void 0 || _restProps$onReset.call(restProps, event);
}
}), wrapperNode);
};
function stringify(value) {
try {
return JSON.stringify(value);
} catch (err) {
return Math.random();
}
}
function useWatch$1() {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
var dependencies = args[0], _args$ = args[1], _form = _args$ === void 0 ? {} : _args$;
var options = isFormInstance(_form) ? {
form: _form
} : _form;
var form = options.form;
var _useState = React.useState(), _useState2 = _slicedToArray(_useState, 2), value = _useState2[0], setValue = _useState2[1];
var valueStr = React.useMemo(function() {
return stringify(value);
}, [value]);
var valueStrRef = React.useRef(valueStr);
valueStrRef.current = valueStr;
var fieldContext = React.useContext(Context);
var formInstance = form || fieldContext;
var isValidForm = formInstance && formInstance._init;
var namePath = getNamePath(dependencies);
var namePathRef = React.useRef(namePath);
namePathRef.current = namePath;
React.useEffect(
function() {
if (!isValidForm) {
return;
}
var getFieldsValue = formInstance.getFieldsValue, getInternalHooks2 = formInstance.getInternalHooks;
var _getInternalHooks = getInternalHooks2(HOOK_MARK), registerWatch = _getInternalHooks.registerWatch;
var getWatchValue = function getWatchValue2(values, allValues) {
var watchValue = options.preserve ? allValues : values;
return typeof dependencies === "function" ? dependencies(watchValue) : get(watchValue, namePathRef.current);
};
var cancelRegister = registerWatch(function(values, allValues) {
var newValue = getWatchValue(values, allValues);
var nextValueStr = stringify(newValue);
if (valueStrRef.current !== nextValueStr) {
valueStrRef.current = nextValueStr;
setValue(newValue);
}
});
var initialValue = getWatchValue(getFieldsValue(), getFieldsValue(true));
if (value !== initialValue) {
setValue(initialValue);
}
return cancelRegister;
},
// We do not need re-register since namePath content is the same
// eslint-disable-next-line react-hooks/exhaustive-deps
[isValidForm]
);
return value;
}
var InternalForm = /* @__PURE__ */ React__namespace.forwardRef(Form);
var RefForm = InternalForm;
RefForm.FormProvider = FormProvider;
RefForm.Field = WrapperField;
RefForm.List = List$1;
RefForm.useForm = useForm;
RefForm.useWatch = useWatch$1;
const FormItemInputContext = /* @__PURE__ */ React__namespace.createContext({});
const initMotionCommon = (duration) => ({
animationDuration: duration,
animationFillMode: "both"
});
const initMotionCommonLeave = (duration) => ({
animationDuration: duration,
animationFillMode: "both"
});
const initMotion = function(motionCls, inKeyframes, outKeyframes, duration) {
let sameLevel = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : false;
const sameLevelPrefix = sameLevel ? "&" : "";
return {
[`
${sameLevelPrefix}${motionCls}-enter,
${sameLevelPrefix}${motionCls}-appear
`]: Object.assign(Object.assign({}, initMotionCommon(duration)), {
animationPlayState: "paused"
}),
[`${sameLevelPrefix}${motionCls}-leave`]: Object.assign(Object.assign({}, initMotionCommonLeave(duration)), {
animationPlayState: "paused"
}),
[`
${sameLevelPrefix}${motionCls}-enter${motionCls}-enter-active,
${sameLevelPrefix}${motionCls}-appear${motionCls}-appear-active
`]: {
animationName: inKeyframes,
animationPlayState: "running"
},
[`${sameLevelPrefix}${motionCls}-leave${motionCls}-leave-active`]: {
animationName: outKeyframes,
animationPlayState: "running",
pointerEvents: "none"
}
};
};
const moveDownIn = new Keyframe("antMoveDownIn", {
"0%": {
transform: "translate3d(0, 100%, 0)",
transformOrigin: "0 0",
opacity: 0
},
"100%": {
transform: "translate3d(0, 0, 0)",
transformOrigin: "0 0",
opacity: 1
}
});
const moveDownOut = new Keyframe("antMoveDownOut", {
"0%": {
transform: "translate3d(0, 0, 0)",
transformOrigin: "0 0",
opacity: 1
},
"100%": {
transform: "translate3d(0, 100%, 0)",
transformOrigin: "0 0",
opacity: 0
}
});
const moveLeftIn = new Keyframe("antMoveLeftIn", {
"0%": {
transform: "translate3d(-100%, 0, 0)",
transformOrigin: "0 0",
opacity: 0
},
"100%": {
transform: "translate3d(0, 0, 0)",
transformOrigin: "0 0",
opacity: 1
}
});
const moveLeftOut = new Keyframe("antMoveLeftOut", {
"0%": {
transform: "translate3d(0, 0, 0)",
transformOrigin: "0 0",
opacity: 1
},
"100%": {
transform: "translate3d(-100%, 0, 0)",
transformOrigin: "0 0",
opacity: 0
}
});
const moveRightIn = new Keyframe("antMoveRightIn", {
"0%": {
transform: "translate3d(100%, 0, 0)",
transformOrigin: "0 0",
opacity: 0
},
"100%": {
transform: "translate3d(0, 0, 0)",
transformOrigin: "0 0",
opacity: 1
}
});
const moveRightOut = new Keyframe("antMoveRightOut", {
"0%": {
transform: "translate3d(0, 0, 0)",
transformOrigin: "0 0",
opacity: 1
},
"100%": {
transform: "translate3d(100%, 0, 0)",
transformOrigin: "0 0",
opacity: 0
}
});
const moveUpIn = new Keyframe("antMoveUpIn", {
"0%": {
transform: "translate3d(0, -100%, 0)",
transformOrigin: "0 0",
opacity: 0
},
"100%": {
transform: "translate3d(0, 0, 0)",
transformOrigin: "0 0",
opacity: 1
}
});
const moveUpOut = new Keyframe("antMoveUpOut", {
"0%": {
transform: "translate3d(0, 0, 0)",
transformOrigin: "0 0",
opacity: 1
},
"100%": {
transform: "translate3d(0, -100%, 0)",
transformOrigin: "0 0",
opacity: 0
}
});
const moveMotion = {
"move-up": {
inKeyframes: moveUpIn,
outKeyframes: moveUpOut
},
"move-down": {
inKeyframes: moveDownIn,
outKeyframes: moveDownOut
},
"move-left": {
inKeyframes: moveLeftIn,
outKeyframes: moveLeftOut
},
"move-right": {
inKeyframes: moveRightIn,
outKeyframes: moveRightOut
}
};
const initMoveMotion = (token2, motionName) => {
const {
antCls
} = token2;
const motionCls = `${antCls}-${motionName}`;
const {
inKeyframes,
outKeyframes
} = moveMotion[motionName];
return [initMotion(motionCls, inKeyframes, outKeyframes, token2.motionDurationMid), {
[`
${motionCls}-enter,
${motionCls}-appear
`]: {
opacity: 0,
animationTimingFunction: token2.motionEaseOutCirc
},
[`${motionCls}-leave`]: {
animationTimingFunction: token2.motionEaseInOutCirc
}
}];
};
const slideUpIn = new Keyframe("antSlideUpIn", {
"0%": {
transform: "scaleY(0.8)",
transformOrigin: "0% 0%",
opacity: 0
},
"100%": {
transform: "scaleY(1)",
transformOrigin: "0% 0%",
opacity: 1
}
});
const slideUpOut = new Keyframe("antSlideUpOut", {
"0%": {
transform: "scaleY(1)",
transformOrigin: "0% 0%",
opacity: 1
},
"100%": {
transform: "scaleY(0.8)",
transformOrigin: "0% 0%",
opacity: 0
}
});
const slideDownIn = new Keyframe("antSlideDownIn", {
"0%": {
transform: "scaleY(0.8)",
transformOrigin: "100% 100%",
opacity: 0
},
"100%": {
transform: "scaleY(1)",
transformOrigin: "100% 100%",
opacity: 1
}
});
const slideDownOut = new Keyframe("antSlideDownOut", {
"0%": {
transform: "scaleY(1)",
transformOrigin: "100% 100%",
opacity: 1
},
"100%": {
transform: "scaleY(0.8)",
transformOrigin: "100% 100%",
opacity: 0
}
});
const slideLeftIn = new Keyframe("antSlideLeftIn", {
"0%": {
transform: "scaleX(0.8)",
transformOrigin: "0% 0%",
opacity: 0
},
"100%": {
transform: "scaleX(1)",
transformOrigin: "0% 0%",
opacity: 1
}
});
const slideLeftOut = new Keyframe("antSlideLeftOut", {
"0%": {
transform: "scaleX(1)",
transformOrigin: "0% 0%",
opacity: 1
},
"100%": {
transform: "scaleX(0.8)",
transformOrigin: "0% 0%",
opacity: 0
}
});
const slideRightIn = new Keyframe("antSlideRightIn", {
"0%": {
transform: "scaleX(0.8)",
transformOrigin: "100% 0%",
opacity: 0
},
"100%": {
transform: "scaleX(1)",
transformOrigin: "100% 0%",
opacity: 1
}
});
const slideRightOut = new Keyframe("antSlideRightOut", {
"0%": {
transform: "scaleX(1)",
transformOrigin: "100% 0%",
opacity: 1
},
"100%": {
transform: "scaleX(0.8)",
transformOrigin: "100% 0%",
opacity: 0
}
});
const slideMotion = {
"slide-up": {
inKeyframes: slideUpIn,
outKeyframes: slideUpOut
},
"slide-down": {
inKeyframes: slideDownIn,
outKeyframes: slideDownOut
},
"slide-left": {
inKeyframes: slideLeftIn,
outKeyframes: slideLeftOut
},
"slide-right": {
inKeyframes: slideRightIn,
outKeyframes: slideRightOut
}
};
const initSlideMotion = (token2, motionName) => {
const {
antCls
} = token2;
const motionCls = `${antCls}-${motionName}`;
const {
inKeyframes,
outKeyframes
} = slideMotion[motionName];
return [initMotion(motionCls, inKeyframes, outKeyframes, token2.motionDurationMid), {
[`
${motionCls}-enter,
${motionCls}-appear
`]: {
transform: "scale(0)",
transformOrigin: "0% 0%",
opacity: 0,
animationTimingFunction: token2.motionEaseOutQuint,
[`&-prepare`]: {
transform: "scale(1)"
}
},
[`${motionCls}-leave`]: {
animationTimingFunction: token2.motionEaseInQuint
}
}];
};
function withPureRenderTheme(Component) {
return (props) => /* @__PURE__ */ React__namespace.createElement(ConfigProvider, {
theme: {
token: {
motion: false,
zIndexPopupBase: 0
}
}
}, /* @__PURE__ */ React__namespace.createElement(Component, Object.assign({}, props)));
}
const genPurePanel = (Component, defaultPrefixCls2, getDropdownCls, postProps) => {
const PurePanel2 = (props) => {
const {
prefixCls: customizePrefixCls,
style: style2
} = props;
const holderRef = React__namespace.useRef(null);
const [popupHeight, setPopupHeight] = React__namespace.useState(0);
const [popupWidth, setPopupWidth] = React__namespace.useState(0);
const [open, setOpen] = useMergedState(false, {
value: props.open
});
const {
getPrefixCls
} = React__namespace.useContext(ConfigContext);
const prefixCls = getPrefixCls(defaultPrefixCls2 || "select", customizePrefixCls);
React__namespace.useEffect(() => {
setOpen(true);
if (typeof ResizeObserver !== "undefined") {
const resizeObserver2 = new ResizeObserver((entries) => {
const element = entries[0].target;
setPopupHeight(element.offsetHeight + 8);
setPopupWidth(element.offsetWidth);
});
const interval = setInterval(() => {
var _a2;
const dropdownCls = getDropdownCls ? `.${getDropdownCls(prefixCls)}` : `.${prefixCls}-dropdown`;
const popup = (_a2 = holderRef.current) === null || _a2 === void 0 ? void 0 : _a2.querySelector(dropdownCls);
if (popup) {
clearInterval(interval);
resizeObserver2.observe(popup);
}
}, 10);
return () => {
clearInterval(interval);
resizeObserver2.disconnect();
};
}
}, []);
let mergedProps = Object.assign(Object.assign({}, props), {
style: Object.assign(Object.assign({}, style2), {
margin: 0
}),
open,
visible: open,
getPopupContainer: () => holderRef.current
});
if (postProps) {
mergedProps = postProps(mergedProps);
}
const mergedStyle = {
paddingBottom: popupHeight,
position: "relative",
minWidth: popupWidth
};
return /* @__PURE__ */ React__namespace.createElement("div", {
ref: holderRef,
style: mergedStyle
}, /* @__PURE__ */ React__namespace.createElement(Component, Object.assign({}, mergedProps)));
};
return withPureRenderTheme(PurePanel2);
};
const genPurePanel$1 = genPurePanel;
const isMobile = function() {
if (typeof navigator === "undefined" || typeof window === "undefined") {
return false;
}
var agent = navigator.userAgent || navigator.vendor || window.opera;
return /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(agent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(agent === null || agent === void 0 ? void 0 : agent.substr(0, 4));
};
var TransBtn = function TransBtn2(_ref) {
var className = _ref.className, customizeIcon = _ref.customizeIcon, customizeIconProps = _ref.customizeIconProps, _onMouseDown = _ref.onMouseDown, onClick = _ref.onClick, children = _ref.children;
var icon2;
if (typeof customizeIcon === "function") {
icon2 = customizeIcon(customizeIconProps);
} else {
icon2 = customizeIcon;
}
return /* @__PURE__ */ React__namespace.createElement("span", {
className,
onMouseDown: function onMouseDown(event) {
event.preventDefault();
if (_onMouseDown) {
_onMouseDown(event);
}
},
style: {
userSelect: "none",
WebkitUserSelect: "none"
},
unselectable: "on",
onClick,
"aria-hidden": true
}, icon2 !== void 0 ? icon2 : /* @__PURE__ */ React__namespace.createElement("span", {
className: classNames(className.split(/\s+/).map(function(cls) {
return "".concat(cls, "-icon");
}))
}, children));
};
function useAllowClear(prefixCls, onClearMouseDown, displayValues, allowClear, clearIcon) {
var disabled = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : false;
var mergedSearchValue = arguments.length > 6 ? arguments[6] : void 0;
var mode = arguments.length > 7 ? arguments[7] : void 0;
var mergedClearIcon = React.useMemo(function() {
if (_typeof(allowClear) === "object") {
return allowClear.clearIcon;
}
if (!!clearIcon)
return clearIcon;
}, [allowClear, clearIcon]);
var mergedAllowClear = React.useMemo(function() {
if (!disabled && !!allowClear && (displayValues.length || mergedSearchValue) && !(mode === "combobox" && mergedSearchValue === "")) {
return true;
}
return false;
}, [allowClear, disabled, displayValues.length, mergedSearchValue, mode]);
return {
allowClear: mergedAllowClear,
clearIcon: /* @__PURE__ */ React.createElement(TransBtn, {
className: "".concat(prefixCls, "-clear"),
onMouseDown: onClearMouseDown,
customizeIcon: mergedClearIcon
}, "×")
};
}
var BaseSelectContext = /* @__PURE__ */ React__namespace.createContext(null);
function useBaseProps() {
return React__namespace.useContext(BaseSelectContext);
}
function useDelayReset() {
var timeout = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 10;
var _React$useState = React__namespace.useState(false), _React$useState2 = _slicedToArray(_React$useState, 2), bool = _React$useState2[0], setBool = _React$useState2[1];
var delayRef = React__namespace.useRef(null);
var cancelLatest = function cancelLatest2() {
window.clearTimeout(delayRef.current);
};
React__namespace.useEffect(function() {
return cancelLatest;
}, []);
var delaySetBool = function delaySetBool2(value, callback) {
cancelLatest();
delayRef.current = window.setTimeout(function() {
setBool(value);
if (callback) {
callback();
}
}, timeout);
};
return [bool, delaySetBool, cancelLatest];
}
function useLock() {
var duration = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 250;
var lockRef = React__namespace.useRef(null);
var timeoutRef = React__namespace.useRef(null);
React__namespace.useEffect(function() {
return function() {
window.clearTimeout(timeoutRef.current);
};
}, []);
function doLock(locked) {
if (locked || lockRef.current === null) {
lockRef.current = locked;
}
window.clearTimeout(timeoutRef.current);
timeoutRef.current = window.setTimeout(function() {
lockRef.current = null;
}, duration);
}
return [function() {
return lockRef.current;
}, doLock];
}
function useSelectTriggerControl(elements, open, triggerOpen, customizedTrigger) {
var propsRef = React__namespace.useRef(null);
propsRef.current = {
open,
triggerOpen,
customizedTrigger
};
React__namespace.useEffect(function() {
function onGlobalMouseDown(event) {
var _propsRef$current;
if ((_propsRef$current = propsRef.current) !== null && _propsRef$current !== void 0 && _propsRef$current.customizedTrigger) {
return;
}
var target = event.target;
if (target.shadowRoot && event.composed) {
target = event.composedPath()[0] || target;
}
if (propsRef.current.open && elements().filter(function(element) {
return element;
}).every(function(element) {
return !element.contains(target) && element !== target;
})) {
propsRef.current.triggerOpen(false);
}
}
window.addEventListener("mousedown", onGlobalMouseDown);
return function() {
return window.removeEventListener("mousedown", onGlobalMouseDown);
};
}, []);
}
var _excluded$9 = ["prefixCls", "invalidate", "item", "renderItem", "responsive", "responsiveDisabled", "registerSize", "itemKey", "className", "style", "children", "display", "order", "component"];
var UNDEFINED = void 0;
function InternalItem(props, ref) {
var prefixCls = props.prefixCls, invalidate = props.invalidate, item = props.item, renderItem = props.renderItem, responsive = props.responsive, responsiveDisabled = props.responsiveDisabled, registerSize = props.registerSize, itemKey2 = props.itemKey, className = props.className, style2 = props.style, children = props.children, display = props.display, order = props.order, _props$component = props.component, Component = _props$component === void 0 ? "div" : _props$component, restProps = _objectWithoutProperties(props, _excluded$9);
var mergedHidden = responsive && !display;
function internalRegisterSize(width) {
registerSize(itemKey2, width);
}
React__namespace.useEffect(function() {
return function() {
internalRegisterSize(null);
};
}, []);
var childNode = renderItem && item !== UNDEFINED ? renderItem(item) : children;
var overflowStyle;
if (!invalidate) {
overflowStyle = {
opacity: mergedHidden ? 0 : 1,
height: mergedHidden ? 0 : UNDEFINED,
overflowY: mergedHidden ? "hidden" : UNDEFINED,
order: responsive ? order : UNDEFINED,
pointerEvents: mergedHidden ? "none" : UNDEFINED,
position: mergedHidden ? "absolute" : UNDEFINED
};
}
var overflowProps = {};
if (mergedHidden) {
overflowProps["aria-hidden"] = true;
}
var itemNode = /* @__PURE__ */ React__namespace.createElement(Component, _extends$1({
className: classNames(!invalidate && prefixCls, className),
style: _objectSpread2(_objectSpread2({}, overflowStyle), style2)
}, overflowProps, restProps, {
ref
}), childNode);
if (responsive) {
itemNode = /* @__PURE__ */ React__namespace.createElement(RefResizeObserver, {
onResize: function onResize2(_ref) {
var offsetWidth = _ref.offsetWidth;
internalRegisterSize(offsetWidth);
},
disabled: responsiveDisabled
}, itemNode);
}
return itemNode;
}
var Item$1 = /* @__PURE__ */ React__namespace.forwardRef(InternalItem);
Item$1.displayName = "Item";
function channelUpdate(callback) {
if (typeof MessageChannel === "undefined") {
wrapperRaf(callback);
} else {
var channel = new MessageChannel();
channel.port1.onmessage = function() {
return callback();
};
channel.port2.postMessage(void 0);
}
}
function useBatcher() {
var updateFuncRef = React__namespace.useRef(null);
var notifyEffectUpdate = function notifyEffectUpdate2(callback) {
if (!updateFuncRef.current) {
updateFuncRef.current = [];
channelUpdate(function() {
ReactDOM__default.unstable_batchedUpdates(function() {
updateFuncRef.current.forEach(function(fn) {
fn();
});
updateFuncRef.current = null;
});
});
}
updateFuncRef.current.push(callback);
};
return notifyEffectUpdate;
}
function useEffectState(notifyEffectUpdate, defaultValue) {
var _React$useState = React__namespace.useState(defaultValue), _React$useState2 = _slicedToArray(_React$useState, 2), stateValue = _React$useState2[0], setStateValue = _React$useState2[1];
var setEffectVal = useEvent(function(nextValue) {
notifyEffectUpdate(function() {
setStateValue(nextValue);
});
});
return [stateValue, setEffectVal];
}
var OverflowContext = /* @__PURE__ */ React.createContext(null);
var _excluded$8 = ["component"], _excluded2$1 = ["className"], _excluded3 = ["className"];
var InternalRawItem = function InternalRawItem2(props, ref) {
var context = React__namespace.useContext(OverflowContext);
if (!context) {
var _props$component = props.component, Component = _props$component === void 0 ? "div" : _props$component, _restProps = _objectWithoutProperties(props, _excluded$8);
return /* @__PURE__ */ React__namespace.createElement(Component, _extends$1({}, _restProps, {
ref
}));
}
var contextClassName = context.className, restContext = _objectWithoutProperties(context, _excluded2$1);
var className = props.className, restProps = _objectWithoutProperties(props, _excluded3);
return /* @__PURE__ */ React__namespace.createElement(OverflowContext.Provider, {
value: null
}, /* @__PURE__ */ React__namespace.createElement(Item$1, _extends$1({
ref,
className: classNames(contextClassName, className)
}, restContext, restProps)));
};
var RawItem = /* @__PURE__ */ React__namespace.forwardRef(InternalRawItem);
RawItem.displayName = "RawItem";
var _excluded$7 = ["prefixCls", "data", "renderItem", "renderRawItem", "itemKey", "itemWidth", "ssr", "style", "className", "maxCount", "renderRest", "renderRawRest", "suffix", "component", "itemComponent", "onVisibleChange"];
var RESPONSIVE = "responsive";
var INVALIDATE = "invalidate";
function defaultRenderRest(omittedItems) {
return "+ ".concat(omittedItems.length, " ...");
}
function Overflow(props, ref) {
var _props$prefixCls = props.prefixCls, prefixCls = _props$prefixCls === void 0 ? "rc-overflow" : _props$prefixCls, _props$data = props.data, data = _props$data === void 0 ? [] : _props$data, renderItem = props.renderItem, renderRawItem = props.renderRawItem, itemKey2 = props.itemKey, _props$itemWidth = props.itemWidth, itemWidth = _props$itemWidth === void 0 ? 10 : _props$itemWidth, ssr = props.ssr, style2 = props.style, className = props.className, maxCount = props.maxCount, renderRest = props.renderRest, renderRawRest = props.renderRawRest, suffix = props.suffix, _props$component = props.component, Component = _props$component === void 0 ? "div" : _props$component, itemComponent = props.itemComponent, onVisibleChange = props.onVisibleChange, restProps = _objectWithoutProperties(props, _excluded$7);
var fullySSR = ssr === "full";
var notifyEffectUpdate = useBatcher();
var _useEffectState = useEffectState(notifyEffectUpdate, null), _useEffectState2 = _slicedToArray(_useEffectState, 2), containerWidth = _useEffectState2[0], setContainerWidth = _useEffectState2[1];
var mergedContainerWidth = containerWidth || 0;
var _useEffectState3 = useEffectState(notifyEffectUpdate, /* @__PURE__ */ new Map()), _useEffectState4 = _slicedToArray(_useEffectState3, 2), itemWidths = _useEffectState4[0], setItemWidths = _useEffectState4[1];
var _useEffectState5 = useEffectState(notifyEffectUpdate, 0), _useEffectState6 = _slicedToArray(_useEffectState5, 2), prevRestWidth = _useEffectState6[0], setPrevRestWidth = _useEffectState6[1];
var _useEffectState7 = useEffectState(notifyEffectUpdate, 0), _useEffectState8 = _slicedToArray(_useEffectState7, 2), restWidth = _useEffectState8[0], setRestWidth = _useEffectState8[1];
var _useEffectState9 = useEffectState(notifyEffectUpdate, 0), _useEffectState10 = _slicedToArray(_useEffectState9, 2), suffixWidth = _useEffectState10[0], setSuffixWidth = _useEffectState10[1];
var _useState = React.useState(null), _useState2 = _slicedToArray(_useState, 2), suffixFixedStart = _useState2[0], setSuffixFixedStart = _useState2[1];
var _useState3 = React.useState(null), _useState4 = _slicedToArray(_useState3, 2), displayCount = _useState4[0], setDisplayCount = _useState4[1];
var mergedDisplayCount = React__namespace.useMemo(function() {
if (displayCount === null && fullySSR) {
return Number.MAX_SAFE_INTEGER;
}
return displayCount || 0;
}, [displayCount, containerWidth]);
var _useState5 = React.useState(false), _useState6 = _slicedToArray(_useState5, 2), restReady = _useState6[0], setRestReady = _useState6[1];
var itemPrefixCls = "".concat(prefixCls, "-item");
var mergedRestWidth = Math.max(prevRestWidth, restWidth);
var isResponsive = maxCount === RESPONSIVE;
var shouldResponsive = data.length && isResponsive;
var invalidate = maxCount === INVALIDATE;
var showRest = shouldResponsive || typeof maxCount === "number" && data.length > maxCount;
var mergedData = React.useMemo(function() {
var items = data;
if (shouldResponsive) {
if (containerWidth === null && fullySSR) {
items = data;
} else {
items = data.slice(0, Math.min(data.length, mergedContainerWidth / itemWidth));
}
} else if (typeof maxCount === "number") {
items = data.slice(0, maxCount);
}
return items;
}, [data, itemWidth, containerWidth, maxCount, shouldResponsive]);
var omittedItems = React.useMemo(function() {
if (shouldResponsive) {
return data.slice(mergedDisplayCount + 1);
}
return data.slice(mergedData.length);
}, [data, mergedData, shouldResponsive, mergedDisplayCount]);
var getKey2 = React.useCallback(function(item, index2) {
var _ref;
if (typeof itemKey2 === "function") {
return itemKey2(item);
}
return (_ref = itemKey2 && (item === null || item === void 0 ? void 0 : item[itemKey2])) !== null && _ref !== void 0 ? _ref : index2;
}, [itemKey2]);
var mergedRenderItem = React.useCallback(renderItem || function(item) {
return item;
}, [renderItem]);
function updateDisplayCount(count, suffixFixedStartVal, notReady) {
if (displayCount === count && (suffixFixedStartVal === void 0 || suffixFixedStartVal === suffixFixedStart)) {
return;
}
setDisplayCount(count);
if (!notReady) {
setRestReady(count < data.length - 1);
onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(count);
}
if (suffixFixedStartVal !== void 0) {
setSuffixFixedStart(suffixFixedStartVal);
}
}
function onOverflowResize(_, element) {
setContainerWidth(element.clientWidth);
}
function registerSize(key, width) {
setItemWidths(function(origin) {
var clone = new Map(origin);
if (width === null) {
clone.delete(key);
} else {
clone.set(key, width);
}
return clone;
});
}
function registerOverflowSize(_, width) {
setRestWidth(width);
setPrevRestWidth(restWidth);
}
function registerSuffixSize(_, width) {
setSuffixWidth(width);
}
function getItemWidth(index2) {
return itemWidths.get(getKey2(mergedData[index2], index2));
}
useLayoutEffect$1(function() {
if (mergedContainerWidth && typeof mergedRestWidth === "number" && mergedData) {
var totalWidth = suffixWidth;
var len = mergedData.length;
var lastIndex = len - 1;
if (!len) {
updateDisplayCount(0, null);
return;
}
for (var i = 0; i < len; i += 1) {
var currentItemWidth = getItemWidth(i);
if (fullySSR) {
currentItemWidth = currentItemWidth || 0;
}
if (currentItemWidth === void 0) {
updateDisplayCount(i - 1, void 0, true);
break;
}
totalWidth += currentItemWidth;
if (
// Only one means `totalWidth` is the final width
lastIndex === 0 && totalWidth <= mergedContainerWidth || // Last two width will be the final width
i === lastIndex - 1 && totalWidth + getItemWidth(lastIndex) <= mergedContainerWidth
) {
updateDisplayCount(lastIndex, null);
break;
} else if (totalWidth + mergedRestWidth > mergedContainerWidth) {
updateDisplayCount(i - 1, totalWidth - currentItemWidth - suffixWidth + restWidth);
break;
}
}
if (suffix && getItemWidth(0) + suffixWidth > mergedContainerWidth) {
setSuffixFixedStart(null);
}
}
}, [mergedContainerWidth, itemWidths, restWidth, suffixWidth, getKey2, mergedData]);
var displayRest = restReady && !!omittedItems.length;
var suffixStyle = {};
if (suffixFixedStart !== null && shouldResponsive) {
suffixStyle = {
position: "absolute",
left: suffixFixedStart,
top: 0
};
}
var itemSharedProps = {
prefixCls: itemPrefixCls,
responsive: shouldResponsive,
component: itemComponent,
invalidate
};
var internalRenderItemNode = renderRawItem ? function(item, index2) {
var key = getKey2(item, index2);
return /* @__PURE__ */ React__namespace.createElement(OverflowContext.Provider, {
key,
value: _objectSpread2(_objectSpread2({}, itemSharedProps), {}, {
order: index2,
item,
itemKey: key,
registerSize,
display: index2 <= mergedDisplayCount
})
}, renderRawItem(item, index2));
} : function(item, index2) {
var key = getKey2(item, index2);
return /* @__PURE__ */ React__namespace.createElement(Item$1, _extends$1({}, itemSharedProps, {
order: index2,
key,
item,
renderItem: mergedRenderItem,
itemKey: key,
registerSize,
display: index2 <= mergedDisplayCount
}));
};
var restNode;
var restContextProps = {
order: displayRest ? mergedDisplayCount : Number.MAX_SAFE_INTEGER,
className: "".concat(itemPrefixCls, "-rest"),
registerSize: registerOverflowSize,
display: displayRest
};
if (!renderRawRest) {
var mergedRenderRest = renderRest || defaultRenderRest;
restNode = /* @__PURE__ */ React__namespace.createElement(Item$1, _extends$1({}, itemSharedProps, restContextProps), typeof mergedRenderRest === "function" ? mergedRenderRest(omittedItems) : mergedRenderRest);
} else if (renderRawRest) {
restNode = /* @__PURE__ */ React__namespace.createElement(OverflowContext.Provider, {
value: _objectSpread2(_objectSpread2({}, itemSharedProps), restContextProps)
}, renderRawRest(omittedItems));
}
var overflowNode = /* @__PURE__ */ React__namespace.createElement(Component, _extends$1({
className: classNames(!invalidate && prefixCls, className),
style: style2,
ref
}, restProps), mergedData.map(internalRenderItemNode), showRest ? restNode : null, suffix && /* @__PURE__ */ React__namespace.createElement(Item$1, _extends$1({}, itemSharedProps, {
responsive: isResponsive,
responsiveDisabled: !shouldResponsive,
order: mergedDisplayCount,
className: "".concat(itemPrefixCls, "-suffix"),
registerSize: registerSuffixSize,
display: true,
style: suffixStyle
}), suffix));
if (isResponsive) {
overflowNode = /* @__PURE__ */ React__namespace.createElement(RefResizeObserver, {
onResize: onOverflowResize,
disabled: !shouldResponsive
}, overflowNode);
}
return overflowNode;
}
var ForwardOverflow = /* @__PURE__ */ React__namespace.forwardRef(Overflow);
ForwardOverflow.displayName = "Overflow";
ForwardOverflow.Item = RawItem;
ForwardOverflow.RESPONSIVE = RESPONSIVE;
ForwardOverflow.INVALIDATE = INVALIDATE;
var Input = function Input2(_ref, ref) {
var _inputNode2;
var prefixCls = _ref.prefixCls, id = _ref.id, inputElement = _ref.inputElement, disabled = _ref.disabled, tabIndex = _ref.tabIndex, autoFocus = _ref.autoFocus, autoComplete = _ref.autoComplete, editable = _ref.editable, activeDescendantId = _ref.activeDescendantId, value = _ref.value, maxLength = _ref.maxLength, _onKeyDown = _ref.onKeyDown, _onMouseDown = _ref.onMouseDown, _onChange = _ref.onChange, onPaste = _ref.onPaste, _onCompositionStart = _ref.onCompositionStart, _onCompositionEnd = _ref.onCompositionEnd, open = _ref.open, attrs = _ref.attrs;
var inputNode = inputElement || /* @__PURE__ */ React__namespace.createElement("input", null);
var _inputNode = inputNode, originRef = _inputNode.ref, originProps = _inputNode.props;
var onOriginKeyDown = originProps.onKeyDown, onOriginChange = originProps.onChange, onOriginMouseDown = originProps.onMouseDown, onOriginCompositionStart = originProps.onCompositionStart, onOriginCompositionEnd = originProps.onCompositionEnd, style2 = originProps.style;
warning$2(!("maxLength" in inputNode.props));
inputNode = /* @__PURE__ */ React__namespace.cloneElement(inputNode, _objectSpread2(_objectSpread2(_objectSpread2({
type: "search"
}, originProps), {}, {
// Override over origin props
id,
ref: composeRef(ref, originRef),
disabled,
tabIndex,
autoComplete: autoComplete || "off",
autoFocus,
className: classNames("".concat(prefixCls, "-selection-search-input"), (_inputNode2 = inputNode) === null || _inputNode2 === void 0 || (_inputNode2 = _inputNode2.props) === null || _inputNode2 === void 0 ? void 0 : _inputNode2.className),
role: "combobox",
"aria-expanded": open || false,
"aria-haspopup": "listbox",
"aria-owns": "".concat(id, "_list"),
"aria-autocomplete": "list",
"aria-controls": "".concat(id, "_list"),
"aria-activedescendant": open ? activeDescendantId : void 0
}, attrs), {}, {
value: editable ? value : "",
maxLength,
readOnly: !editable,
unselectable: !editable ? "on" : null,
style: _objectSpread2(_objectSpread2({}, style2), {}, {
opacity: editable ? null : 0
}),
onKeyDown: function onKeyDown(event) {
_onKeyDown(event);
if (onOriginKeyDown) {
onOriginKeyDown(event);
}
},
onMouseDown: function onMouseDown(event) {
_onMouseDown(event);
if (onOriginMouseDown) {
onOriginMouseDown(event);
}
},
onChange: function onChange(event) {
_onChange(event);
if (onOriginChange) {
onOriginChange(event);
}
},
onCompositionStart: function onCompositionStart(event) {
_onCompositionStart(event);
if (onOriginCompositionStart) {
onOriginCompositionStart(event);
}
},
onCompositionEnd: function onCompositionEnd(event) {
_onCompositionEnd(event);
if (onOriginCompositionEnd) {
onOriginCompositionEnd(event);
}
},
onPaste
}));
return inputNode;
};
var RefInput = /* @__PURE__ */ React__namespace.forwardRef(Input);
RefInput.displayName = "Input";
function toArray$1(value) {
if (Array.isArray(value)) {
return value;
}
return value !== void 0 ? [value] : [];
}
var isClient = typeof window !== "undefined" && window.document && window.document.documentElement;
var isBrowserClient$1 = isClient;
function hasValue(value) {
return value !== void 0 && value !== null;
}
function isComboNoValue(value) {
return !value && value !== 0;
}
function isTitleType$1(title) {
return ["string", "number"].includes(_typeof(title));
}
function getTitle(item) {
var title = void 0;
if (item) {
if (isTitleType$1(item.title)) {
title = item.title.toString();
} else if (isTitleType$1(item.label)) {
title = item.label.toString();
}
}
return title;
}
function useLayoutEffect2(effect, deps) {
if (isBrowserClient$1) {
React__namespace.useLayoutEffect(effect, deps);
} else {
React__namespace.useEffect(effect, deps);
}
}
function itemKey(value) {
var _value$key;
return (_value$key = value.key) !== null && _value$key !== void 0 ? _value$key : value.value;
}
var onPreventMouseDown = function onPreventMouseDown2(event) {
event.preventDefault();
event.stopPropagation();
};
var SelectSelector = function SelectSelector2(props) {
var id = props.id, prefixCls = props.prefixCls, values = props.values, open = props.open, searchValue = props.searchValue, autoClearSearchValue = props.autoClearSearchValue, inputRef = props.inputRef, placeholder = props.placeholder, disabled = props.disabled, mode = props.mode, showSearch = props.showSearch, autoFocus = props.autoFocus, autoComplete = props.autoComplete, activeDescendantId = props.activeDescendantId, tabIndex = props.tabIndex, removeIcon = props.removeIcon, maxTagCount = props.maxTagCount, maxTagTextLength = props.maxTagTextLength, _props$maxTagPlacehol = props.maxTagPlaceholder, maxTagPlaceholder = _props$maxTagPlacehol === void 0 ? function(omittedValues) {
return "+ ".concat(omittedValues.length, " ...");
} : _props$maxTagPlacehol, tagRender = props.tagRender, onToggleOpen = props.onToggleOpen, onRemove = props.onRemove, onInputChange = props.onInputChange, onInputPaste = props.onInputPaste, onInputKeyDown = props.onInputKeyDown, onInputMouseDown = props.onInputMouseDown, onInputCompositionStart = props.onInputCompositionStart, onInputCompositionEnd = props.onInputCompositionEnd;
var measureRef = React__namespace.useRef(null);
var _useState = React.useState(0), _useState2 = _slicedToArray(_useState, 2), inputWidth = _useState2[0], setInputWidth = _useState2[1];
var _useState3 = React.useState(false), _useState4 = _slicedToArray(_useState3, 2), focused = _useState4[0], setFocused = _useState4[1];
var selectionPrefixCls = "".concat(prefixCls, "-selection");
var inputValue = open || mode === "multiple" && autoClearSearchValue === false || mode === "tags" ? searchValue : "";
var inputEditable = mode === "tags" || mode === "multiple" && autoClearSearchValue === false || showSearch && (open || focused);
useLayoutEffect2(function() {
setInputWidth(measureRef.current.scrollWidth);
}, [inputValue]);
function defaultRenderSelector(item, content, itemDisabled, closable, onClose) {
return /* @__PURE__ */ React__namespace.createElement("span", {
className: classNames("".concat(selectionPrefixCls, "-item"), _defineProperty({}, "".concat(selectionPrefixCls, "-item-disabled"), itemDisabled)),
title: getTitle(item)
}, /* @__PURE__ */ React__namespace.createElement("span", {
className: "".concat(selectionPrefixCls, "-item-content")
}, content), closable && /* @__PURE__ */ React__namespace.createElement(TransBtn, {
className: "".concat(selectionPrefixCls, "-item-remove"),
onMouseDown: onPreventMouseDown,
onClick: onClose,
customizeIcon: removeIcon
}, "×"));
}
function customizeRenderSelector(value, content, itemDisabled, closable, onClose) {
var onMouseDown = function onMouseDown2(e2) {
onPreventMouseDown(e2);
onToggleOpen(!open);
};
return /* @__PURE__ */ React__namespace.createElement("span", {
onMouseDown
}, tagRender({
label: content,
value,
disabled: itemDisabled,
closable,
onClose
}));
}
function renderItem(valueItem) {
var itemDisabled = valueItem.disabled, label = valueItem.label, value = valueItem.value;
var closable = !disabled && !itemDisabled;
var displayLabel = label;
if (typeof maxTagTextLength === "number") {
if (typeof label === "string" || typeof label === "number") {
var strLabel = String(displayLabel);
if (strLabel.length > maxTagTextLength) {
displayLabel = "".concat(strLabel.slice(0, maxTagTextLength), "...");
}
}
}
var onClose = function onClose2(event) {
if (event)
event.stopPropagation();
onRemove(valueItem);
};
return typeof tagRender === "function" ? customizeRenderSelector(value, displayLabel, itemDisabled, closable, onClose) : defaultRenderSelector(valueItem, displayLabel, itemDisabled, closable, onClose);
}
function renderRest(omittedValues) {
var content = typeof maxTagPlaceholder === "function" ? maxTagPlaceholder(omittedValues) : maxTagPlaceholder;
return defaultRenderSelector({
title: content
}, content, false);
}
var inputNode = /* @__PURE__ */ React__namespace.createElement("div", {
className: "".concat(selectionPrefixCls, "-search"),
style: {
width: inputWidth
},
onFocus: function onFocus() {
setFocused(true);
},
onBlur: function onBlur() {
setFocused(false);
}
}, /* @__PURE__ */ React__namespace.createElement(RefInput, {
ref: inputRef,
open,
prefixCls,
id,
inputElement: null,
disabled,
autoFocus,
autoComplete,
editable: inputEditable,
activeDescendantId,
value: inputValue,
onKeyDown: onInputKeyDown,
onMouseDown: onInputMouseDown,
onChange: onInputChange,
onPaste: onInputPaste,
onCompositionStart: onInputCompositionStart,
onCompositionEnd: onInputCompositionEnd,
tabIndex,
attrs: pickAttrs(props, true)
}), /* @__PURE__ */ React__namespace.createElement("span", {
ref: measureRef,
className: "".concat(selectionPrefixCls, "-search-mirror"),
"aria-hidden": true
}, inputValue, " "));
var selectionNode = /* @__PURE__ */ React__namespace.createElement(ForwardOverflow, {
prefixCls: "".concat(selectionPrefixCls, "-overflow"),
data: values,
renderItem,
renderRest,
suffix: inputNode,
itemKey,
maxCount: maxTagCount
});
return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, selectionNode, !values.length && !inputValue && /* @__PURE__ */ React__namespace.createElement("span", {
className: "".concat(selectionPrefixCls, "-placeholder")
}, placeholder));
};
var SingleSelector = function SingleSelector2(props) {
var inputElement = props.inputElement, prefixCls = props.prefixCls, id = props.id, inputRef = props.inputRef, disabled = props.disabled, autoFocus = props.autoFocus, autoComplete = props.autoComplete, activeDescendantId = props.activeDescendantId, mode = props.mode, open = props.open, values = props.values, placeholder = props.placeholder, tabIndex = props.tabIndex, showSearch = props.showSearch, searchValue = props.searchValue, activeValue = props.activeValue, maxLength = props.maxLength, onInputKeyDown = props.onInputKeyDown, onInputMouseDown = props.onInputMouseDown, onInputChange = props.onInputChange, onInputPaste = props.onInputPaste, onInputCompositionStart = props.onInputCompositionStart, onInputCompositionEnd = props.onInputCompositionEnd, title = props.title;
var _React$useState = React__namespace.useState(false), _React$useState2 = _slicedToArray(_React$useState, 2), inputChanged = _React$useState2[0], setInputChanged = _React$useState2[1];
var combobox = mode === "combobox";
var inputEditable = combobox || showSearch;
var item = values[0];
var inputValue = searchValue || "";
if (combobox && activeValue && !inputChanged) {
inputValue = activeValue;
}
React__namespace.useEffect(function() {
if (combobox) {
setInputChanged(false);
}
}, [combobox, activeValue]);
var hasTextInput = mode !== "combobox" && !open && !showSearch ? false : !!inputValue;
var selectionTitle = title === void 0 ? getTitle(item) : title;
var renderPlaceholder = function renderPlaceholder2() {
if (item) {
return null;
}
var hiddenStyle = hasTextInput ? {
visibility: "hidden"
} : void 0;
return /* @__PURE__ */ React__namespace.createElement("span", {
className: "".concat(prefixCls, "-selection-placeholder"),
style: hiddenStyle
}, placeholder);
};
return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, /* @__PURE__ */ React__namespace.createElement("span", {
className: "".concat(prefixCls, "-selection-search")
}, /* @__PURE__ */ React__namespace.createElement(RefInput, {
ref: inputRef,
prefixCls,
id,
open,
inputElement,
disabled,
autoFocus,
autoComplete,
editable: inputEditable,
activeDescendantId,
value: inputValue,
onKeyDown: onInputKeyDown,
onMouseDown: onInputMouseDown,
onChange: function onChange(e2) {
setInputChanged(true);
onInputChange(e2);
},
onPaste: onInputPaste,
onCompositionStart: onInputCompositionStart,
onCompositionEnd: onInputCompositionEnd,
tabIndex,
attrs: pickAttrs(props, true),
maxLength: combobox ? maxLength : void 0
})), !combobox && item ? /* @__PURE__ */ React__namespace.createElement("span", {
className: "".concat(prefixCls, "-selection-item"),
title: selectionTitle,
style: hasTextInput ? {
visibility: "hidden"
} : void 0
}, item.label) : null, renderPlaceholder());
};
function isValidateOpenKey(currentKeyCode) {
return ![
// System function button
KeyCode.ESC,
KeyCode.SHIFT,
KeyCode.BACKSPACE,
KeyCode.TAB,
KeyCode.WIN_KEY,
KeyCode.ALT,
KeyCode.META,
KeyCode.WIN_KEY_RIGHT,
KeyCode.CTRL,
KeyCode.SEMICOLON,
KeyCode.EQUALS,
KeyCode.CAPS_LOCK,
KeyCode.CONTEXT_MENU,
// F1-F12
KeyCode.F1,
KeyCode.F2,
KeyCode.F3,
KeyCode.F4,
KeyCode.F5,
KeyCode.F6,
KeyCode.F7,
KeyCode.F8,
KeyCode.F9,
KeyCode.F10,
KeyCode.F11,
KeyCode.F12
].includes(currentKeyCode);
}
var Selector = function Selector2(props, ref) {
var inputRef = React.useRef(null);
var compositionStatusRef = React.useRef(false);
var prefixCls = props.prefixCls, open = props.open, mode = props.mode, showSearch = props.showSearch, tokenWithEnter = props.tokenWithEnter, autoClearSearchValue = props.autoClearSearchValue, onSearch = props.onSearch, onSearchSubmit = props.onSearchSubmit, onToggleOpen = props.onToggleOpen, onInputKeyDown = props.onInputKeyDown, domRef = props.domRef;
React__namespace.useImperativeHandle(ref, function() {
return {
focus: function focus() {
inputRef.current.focus();
},
blur: function blur() {
inputRef.current.blur();
}
};
});
var _useLock = useLock(0), _useLock2 = _slicedToArray(_useLock, 2), getInputMouseDown = _useLock2[0], setInputMouseDown = _useLock2[1];
var onInternalInputKeyDown = function onInternalInputKeyDown2(event) {
var which = event.which;
if (which === KeyCode.UP || which === KeyCode.DOWN) {
event.preventDefault();
}
if (onInputKeyDown) {
onInputKeyDown(event);
}
if (which === KeyCode.ENTER && mode === "tags" && !compositionStatusRef.current && !open) {
onSearchSubmit === null || onSearchSubmit === void 0 || onSearchSubmit(event.target.value);
}
if (isValidateOpenKey(which)) {
onToggleOpen(true);
}
};
var onInternalInputMouseDown = function onInternalInputMouseDown2() {
setInputMouseDown(true);
};
var pastedTextRef = React.useRef(null);
var triggerOnSearch = function triggerOnSearch2(value) {
if (onSearch(value, true, compositionStatusRef.current) !== false) {
onToggleOpen(true);
}
};
var onInputCompositionStart = function onInputCompositionStart2() {
compositionStatusRef.current = true;
};
var onInputCompositionEnd = function onInputCompositionEnd2(e2) {
compositionStatusRef.current = false;
if (mode !== "combobox") {
triggerOnSearch(e2.target.value);
}
};
var onInputChange = function onInputChange2(event) {
var value = event.target.value;
if (tokenWithEnter && pastedTextRef.current && /[\r\n]/.test(pastedTextRef.current)) {
var replacedText = pastedTextRef.current.replace(/[\r\n]+$/, "").replace(/\r\n/g, " ").replace(/[\r\n]/g, " ");
value = value.replace(replacedText, pastedTextRef.current);
}
pastedTextRef.current = null;
triggerOnSearch(value);
};
var onInputPaste = function onInputPaste2(e2) {
var clipboardData = e2.clipboardData;
var value = clipboardData.getData("text");
pastedTextRef.current = value;
};
var onClick = function onClick2(_ref) {
var target = _ref.target;
if (target !== inputRef.current) {
var isIE = document.body.style.msTouchAction !== void 0;
if (isIE) {
setTimeout(function() {
inputRef.current.focus();
});
} else {
inputRef.current.focus();
}
}
};
var onMouseDown = function onMouseDown2(event) {
var inputMouseDown = getInputMouseDown();
if (event.target !== inputRef.current && !inputMouseDown && mode !== "combobox") {
event.preventDefault();
}
if (mode !== "combobox" && (!showSearch || !inputMouseDown) || !open) {
if (open && autoClearSearchValue !== false) {
onSearch("", true, false);
}
onToggleOpen();
}
};
var sharedProps = {
inputRef,
onInputKeyDown: onInternalInputKeyDown,
onInputMouseDown: onInternalInputMouseDown,
onInputChange,
onInputPaste,
onInputCompositionStart,
onInputCompositionEnd
};
var selectNode = mode === "multiple" || mode === "tags" ? /* @__PURE__ */ React__namespace.createElement(SelectSelector, _extends$1({}, props, sharedProps)) : /* @__PURE__ */ React__namespace.createElement(SingleSelector, _extends$1({}, props, sharedProps));
return /* @__PURE__ */ React__namespace.createElement("div", {
ref: domRef,
className: "".concat(prefixCls, "-selector"),
onClick,
onMouseDown
}, selectNode);
};
var ForwardSelector = /* @__PURE__ */ React__namespace.forwardRef(Selector);
ForwardSelector.displayName = "Selector";
function Arrow(props) {
var prefixCls = props.prefixCls, align = props.align, arrow = props.arrow, arrowPos = props.arrowPos;
var _ref = arrow || {}, className = _ref.className, content = _ref.content;
var _arrowPos$x = arrowPos.x, x = _arrowPos$x === void 0 ? 0 : _arrowPos$x, _arrowPos$y = arrowPos.y, y = _arrowPos$y === void 0 ? 0 : _arrowPos$y;
var arrowRef = React__namespace.useRef();
if (!align || !align.points) {
return null;
}
var alignStyle = {
position: "absolute"
};
if (align.autoArrow !== false) {
var popupPoints = align.points[0];
var targetPoints = align.points[1];
var popupTB = popupPoints[0];
var popupLR = popupPoints[1];
var targetTB = targetPoints[0];
var targetLR = targetPoints[1];
if (popupTB === targetTB || !["t", "b"].includes(popupTB)) {
alignStyle.top = y;
} else if (popupTB === "t") {
alignStyle.top = 0;
} else {
alignStyle.bottom = 0;
}
if (popupLR === targetLR || !["l", "r"].includes(popupLR)) {
alignStyle.left = x;
} else if (popupLR === "l") {
alignStyle.left = 0;
} else {
alignStyle.right = 0;
}
}
return /* @__PURE__ */ React__namespace.createElement("div", {
ref: arrowRef,
className: classNames("".concat(prefixCls, "-arrow"), className),
style: alignStyle
}, content);
}
function Mask(props) {
var prefixCls = props.prefixCls, open = props.open, zIndex = props.zIndex, mask = props.mask, motion = props.motion;
if (!mask) {
return null;
}
return /* @__PURE__ */ React__namespace.createElement(CSSMotion, _extends$1({}, motion, {
motionAppear: true,
visible: open,
removeOnLeave: true
}), function(_ref) {
var className = _ref.className;
return /* @__PURE__ */ React__namespace.createElement("div", {
style: {
zIndex
},
className: classNames("".concat(prefixCls, "-mask"), className)
});
});
}
var PopupContent = /* @__PURE__ */ React__namespace.memo(function(_ref) {
var children = _ref.children;
return children;
}, function(_, next2) {
return next2.cache;
});
var Popup = /* @__PURE__ */ React__namespace.forwardRef(function(props, ref) {
var popup = props.popup, className = props.className, prefixCls = props.prefixCls, style2 = props.style, target = props.target, _onVisibleChanged = props.onVisibleChanged, open = props.open, keepDom = props.keepDom, fresh = props.fresh, onClick = props.onClick, mask = props.mask, arrow = props.arrow, arrowPos = props.arrowPos, align = props.align, motion = props.motion, maskMotion = props.maskMotion, forceRender = props.forceRender, getPopupContainer = props.getPopupContainer, autoDestroy = props.autoDestroy, Portal2 = props.portal, zIndex = props.zIndex, onMouseEnter = props.onMouseEnter, onMouseLeave = props.onMouseLeave, onPointerEnter = props.onPointerEnter, ready = props.ready, offsetX = props.offsetX, offsetY = props.offsetY, offsetR = props.offsetR, offsetB = props.offsetB, onAlign = props.onAlign, onPrepare = props.onPrepare, stretch = props.stretch, targetWidth = props.targetWidth, targetHeight = props.targetHeight;
var childNode = typeof popup === "function" ? popup() : popup;
var isNodeVisible = open || keepDom;
var getPopupContainerNeedParams = (getPopupContainer === null || getPopupContainer === void 0 ? void 0 : getPopupContainer.length) > 0;
var _React$useState = React__namespace.useState(!getPopupContainer || !getPopupContainerNeedParams), _React$useState2 = _slicedToArray(_React$useState, 2), show = _React$useState2[0], setShow = _React$useState2[1];
useLayoutEffect$1(function() {
if (!show && getPopupContainerNeedParams && target) {
setShow(true);
}
}, [show, getPopupContainerNeedParams, target]);
if (!show) {
return null;
}
var AUTO = "auto";
var offsetStyle = {
left: "-1000vw",
top: "-1000vh",
right: AUTO,
bottom: AUTO
};
if (ready || !open) {
var _experimental;
var points = align.points;
var dynamicInset = align.dynamicInset || ((_experimental = align._experimental) === null || _experimental === void 0 ? void 0 : _experimental.dynamicInset);
var alignRight = dynamicInset && points[0][1] === "r";
var alignBottom = dynamicInset && points[0][0] === "b";
if (alignRight) {
offsetStyle.right = offsetR;
offsetStyle.left = AUTO;
} else {
offsetStyle.left = offsetX;
offsetStyle.right = AUTO;
}
if (alignBottom) {
offsetStyle.bottom = offsetB;
offsetStyle.top = AUTO;
} else {
offsetStyle.top = offsetY;
offsetStyle.bottom = AUTO;
}
}
var miscStyle = {};
if (stretch) {
if (stretch.includes("height") && targetHeight) {
miscStyle.height = targetHeight;
} else if (stretch.includes("minHeight") && targetHeight) {
miscStyle.minHeight = targetHeight;
}
if (stretch.includes("width") && targetWidth) {
miscStyle.width = targetWidth;
} else if (stretch.includes("minWidth") && targetWidth) {
miscStyle.minWidth = targetWidth;
}
}
if (!open) {
miscStyle.pointerEvents = "none";
}
return /* @__PURE__ */ React__namespace.createElement(Portal2, {
open: forceRender || isNodeVisible,
getContainer: getPopupContainer && function() {
return getPopupContainer(target);
},
autoDestroy
}, /* @__PURE__ */ React__namespace.createElement(Mask, {
prefixCls,
open,
zIndex,
mask,
motion: maskMotion
}), /* @__PURE__ */ React__namespace.createElement(RefResizeObserver, {
onResize: onAlign,
disabled: !open
}, function(resizeObserverRef) {
return /* @__PURE__ */ React__namespace.createElement(CSSMotion, _extends$1({
motionAppear: true,
motionEnter: true,
motionLeave: true,
removeOnLeave: false,
forceRender,
leavedClassName: "".concat(prefixCls, "-hidden")
}, motion, {
onAppearPrepare: onPrepare,
onEnterPrepare: onPrepare,
visible: open,
onVisibleChanged: function onVisibleChanged(nextVisible) {
var _motion$onVisibleChan;
motion === null || motion === void 0 || (_motion$onVisibleChan = motion.onVisibleChanged) === null || _motion$onVisibleChan === void 0 || _motion$onVisibleChan.call(motion, nextVisible);
_onVisibleChanged(nextVisible);
}
}), function(_ref, motionRef) {
var motionClassName = _ref.className, motionStyle = _ref.style;
var cls = classNames(prefixCls, motionClassName, className);
return /* @__PURE__ */ React__namespace.createElement("div", {
ref: composeRef(resizeObserverRef, ref, motionRef),
className: cls,
style: _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({
"--arrow-x": "".concat(arrowPos.x || 0, "px"),
"--arrow-y": "".concat(arrowPos.y || 0, "px")
}, offsetStyle), miscStyle), motionStyle), {}, {
boxSizing: "border-box",
zIndex
}, style2),
onMouseEnter,
onMouseLeave,
onPointerEnter,
onClick
}, arrow && /* @__PURE__ */ React__namespace.createElement(Arrow, {
prefixCls,
arrow,
arrowPos,
align
}), /* @__PURE__ */ React__namespace.createElement(PopupContent, {
cache: !open && !fresh
}, childNode));
});
}));
});
var TriggerWrapper = /* @__PURE__ */ React__namespace.forwardRef(function(props, ref) {
var children = props.children, getTriggerDOMNode = props.getTriggerDOMNode;
var canUseRef = supportRef(children);
var setRef = React__namespace.useCallback(function(node2) {
fillRef(ref, getTriggerDOMNode ? getTriggerDOMNode(node2) : node2);
}, [getTriggerDOMNode]);
var mergedRef = useComposeRef(setRef, children.ref);
return canUseRef ? /* @__PURE__ */ React__namespace.cloneElement(children, {
ref: mergedRef
}) : children;
});
var TriggerContext = /* @__PURE__ */ React__namespace.createContext(null);
function toArray(val) {
return val ? Array.isArray(val) ? val : [val] : [];
}
function useAction(mobile, action, showAction, hideAction) {
return React__namespace.useMemo(function() {
var mergedShowAction = toArray(showAction !== null && showAction !== void 0 ? showAction : action);
var mergedHideAction = toArray(hideAction !== null && hideAction !== void 0 ? hideAction : action);
var showActionSet = new Set(mergedShowAction);
var hideActionSet = new Set(mergedHideAction);
if (mobile) {
if (showActionSet.has("hover")) {
showActionSet.delete("hover");
showActionSet.add("click");
}
if (hideActionSet.has("hover")) {
hideActionSet.delete("hover");
hideActionSet.add("click");
}
}
return [showActionSet, hideActionSet];
}, [mobile, action, showAction, hideAction]);
}
function isPointsEq() {
var a1 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
var a2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
var isAlignPoint = arguments.length > 2 ? arguments[2] : void 0;
if (isAlignPoint) {
return a1[0] === a2[0];
}
return a1[0] === a2[0] && a1[1] === a2[1];
}
function getAlignPopupClassName(builtinPlacements, prefixCls, align, isAlignPoint) {
var points = align.points;
var placements = Object.keys(builtinPlacements);
for (var i = 0; i < placements.length; i += 1) {
var _builtinPlacements$pl;
var placement = placements[i];
if (isPointsEq((_builtinPlacements$pl = builtinPlacements[placement]) === null || _builtinPlacements$pl === void 0 ? void 0 : _builtinPlacements$pl.points, points, isAlignPoint)) {
return "".concat(prefixCls, "-placement-").concat(placement);
}
}
return "";
}
function getMotion(prefixCls, motion, animation, transitionName) {
if (motion) {
return motion;
}
if (animation) {
return {
motionName: "".concat(prefixCls, "-").concat(animation)
};
}
if (transitionName) {
return {
motionName: transitionName
};
}
return null;
}
function getWin(ele) {
return ele.ownerDocument.defaultView;
}
function collectScroller(ele) {
var scrollerList = [];
var current = ele === null || ele === void 0 ? void 0 : ele.parentElement;
var scrollStyle = ["hidden", "scroll", "clip", "auto"];
while (current) {
var _getWin$getComputedSt = getWin(current).getComputedStyle(current), overflowX = _getWin$getComputedSt.overflowX, overflowY = _getWin$getComputedSt.overflowY, overflow = _getWin$getComputedSt.overflow;
if ([overflowX, overflowY, overflow].some(function(o) {
return scrollStyle.includes(o);
})) {
scrollerList.push(current);
}
current = current.parentElement;
}
return scrollerList;
}
function toNum(num) {
var defaultValue = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1;
return Number.isNaN(num) ? defaultValue : num;
}
function getPxValue(val) {
return toNum(parseFloat(val), 0);
}
function getVisibleArea(initArea, scrollerList) {
var visibleArea = _objectSpread2({}, initArea);
(scrollerList || []).forEach(function(ele) {
if (ele instanceof HTMLBodyElement || ele instanceof HTMLHtmlElement) {
return;
}
var _getWin$getComputedSt2 = getWin(ele).getComputedStyle(ele), overflow = _getWin$getComputedSt2.overflow, overflowClipMargin = _getWin$getComputedSt2.overflowClipMargin, borderTopWidth = _getWin$getComputedSt2.borderTopWidth, borderBottomWidth = _getWin$getComputedSt2.borderBottomWidth, borderLeftWidth = _getWin$getComputedSt2.borderLeftWidth, borderRightWidth = _getWin$getComputedSt2.borderRightWidth;
var eleRect = ele.getBoundingClientRect();
var eleOutHeight = ele.offsetHeight, eleInnerHeight = ele.clientHeight, eleOutWidth = ele.offsetWidth, eleInnerWidth = ele.clientWidth;
var borderTopNum = getPxValue(borderTopWidth);
var borderBottomNum = getPxValue(borderBottomWidth);
var borderLeftNum = getPxValue(borderLeftWidth);
var borderRightNum = getPxValue(borderRightWidth);
var scaleX = toNum(Math.round(eleRect.width / eleOutWidth * 1e3) / 1e3);
var scaleY = toNum(Math.round(eleRect.height / eleOutHeight * 1e3) / 1e3);
var eleScrollWidth = (eleOutWidth - eleInnerWidth - borderLeftNum - borderRightNum) * scaleX;
var eleScrollHeight = (eleOutHeight - eleInnerHeight - borderTopNum - borderBottomNum) * scaleY;
var scaledBorderTopWidth = borderTopNum * scaleY;
var scaledBorderBottomWidth = borderBottomNum * scaleY;
var scaledBorderLeftWidth = borderLeftNum * scaleX;
var scaledBorderRightWidth = borderRightNum * scaleX;
var clipMarginWidth = 0;
var clipMarginHeight = 0;
if (overflow === "clip") {
var clipNum = getPxValue(overflowClipMargin);
clipMarginWidth = clipNum * scaleX;
clipMarginHeight = clipNum * scaleY;
}
var eleLeft = eleRect.x + scaledBorderLeftWidth - clipMarginWidth;
var eleTop = eleRect.y + scaledBorderTopWidth - clipMarginHeight;
var eleRight = eleLeft + eleRect.width + 2 * clipMarginWidth - scaledBorderLeftWidth - scaledBorderRightWidth - eleScrollWidth;
var eleBottom = eleTop + eleRect.height + 2 * clipMarginHeight - scaledBorderTopWidth - scaledBorderBottomWidth - eleScrollHeight;
visibleArea.left = Math.max(visibleArea.left, eleLeft);
visibleArea.top = Math.max(visibleArea.top, eleTop);
visibleArea.right = Math.min(visibleArea.right, eleRight);
visibleArea.bottom = Math.min(visibleArea.bottom, eleBottom);
});
return visibleArea;
}
function getUnitOffset(size) {
var offset = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
var offsetStr = "".concat(offset);
var cells = offsetStr.match(/^(.*)\%$/);
if (cells) {
return size * (parseFloat(cells[1]) / 100);
}
return parseFloat(offsetStr);
}
function getNumberOffset(rect, offset) {
var _ref = offset || [], _ref2 = _slicedToArray(_ref, 2), offsetX = _ref2[0], offsetY = _ref2[1];
return [getUnitOffset(rect.width, offsetX), getUnitOffset(rect.height, offsetY)];
}
function splitPoints() {
var points = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "";
return [points[0], points[1]];
}
function getAlignPoint(rect, points) {
var topBottom = points[0];
var leftRight = points[1];
var x;
var y;
if (topBottom === "t") {
y = rect.y;
} else if (topBottom === "b") {
y = rect.y + rect.height;
} else {
y = rect.y + rect.height / 2;
}
if (leftRight === "l") {
x = rect.x;
} else if (leftRight === "r") {
x = rect.x + rect.width;
} else {
x = rect.x + rect.width / 2;
}
return {
x,
y
};
}
function reversePoints(points, index2) {
var reverseMap = {
t: "b",
b: "t",
l: "r",
r: "l"
};
return points.map(function(point, i) {
if (i === index2) {
return reverseMap[point] || "c";
}
return point;
}).join("");
}
function useAlign(open, popupEle, target, placement, builtinPlacements, popupAlign, onPopupAlign) {
var _React$useState = React__namespace.useState({
ready: false,
offsetX: 0,
offsetY: 0,
offsetR: 0,
offsetB: 0,
arrowX: 0,
arrowY: 0,
scaleX: 1,
scaleY: 1,
align: builtinPlacements[placement] || {}
}), _React$useState2 = _slicedToArray(_React$useState, 2), offsetInfo = _React$useState2[0], setOffsetInfo = _React$useState2[1];
var alignCountRef = React__namespace.useRef(0);
var scrollerList = React__namespace.useMemo(function() {
if (!popupEle) {
return [];
}
return collectScroller(popupEle);
}, [popupEle]);
var prevFlipRef = React__namespace.useRef({});
var resetFlipCache = function resetFlipCache2() {
prevFlipRef.current = {};
};
if (!open) {
resetFlipCache();
}
var onAlign = useEvent(function() {
if (popupEle && target && open) {
let getIntersectionVisibleArea = function(offsetX, offsetY) {
var area = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : visibleArea;
var l2 = popupRect.x + offsetX;
var t2 = popupRect.y + offsetY;
var r = l2 + popupWidth;
var b2 = t2 + popupHeight;
var visibleL = Math.max(l2, area.left);
var visibleT = Math.max(t2, area.top);
var visibleR = Math.min(r, area.right);
var visibleB = Math.min(b2, area.bottom);
return Math.max(0, (visibleR - visibleL) * (visibleB - visibleT));
}, syncNextPopupPosition = function() {
nextPopupY = popupRect.y + nextOffsetY;
nextPopupBottom = nextPopupY + popupHeight;
nextPopupX = popupRect.x + nextOffsetX;
nextPopupRight = nextPopupX + popupWidth;
};
var _popupElement$parentE, _popupElement$parentE2;
var popupElement = popupEle;
var doc = popupElement.ownerDocument;
var win = getWin(popupElement);
var _win$getComputedStyle = win.getComputedStyle(popupElement), width = _win$getComputedStyle.width, height = _win$getComputedStyle.height, popupPosition = _win$getComputedStyle.position;
var originLeft = popupElement.style.left;
var originTop = popupElement.style.top;
var originRight = popupElement.style.right;
var originBottom = popupElement.style.bottom;
var originOverflow = popupElement.style.overflow;
var placementInfo = _objectSpread2(_objectSpread2({}, builtinPlacements[placement]), popupAlign);
var placeholderElement = doc.createElement("div");
(_popupElement$parentE = popupElement.parentElement) === null || _popupElement$parentE === void 0 || _popupElement$parentE.appendChild(placeholderElement);
placeholderElement.style.left = "".concat(popupElement.offsetLeft, "px");
placeholderElement.style.top = "".concat(popupElement.offsetTop, "px");
placeholderElement.style.position = popupPosition;
placeholderElement.style.height = "".concat(popupElement.offsetHeight, "px");
placeholderElement.style.width = "".concat(popupElement.offsetWidth, "px");
popupElement.style.left = "0";
popupElement.style.top = "0";
popupElement.style.right = "auto";
popupElement.style.bottom = "auto";
popupElement.style.overflow = "hidden";
var targetRect;
if (Array.isArray(target)) {
targetRect = {
x: target[0],
y: target[1],
width: 0,
height: 0
};
} else {
var rect = target.getBoundingClientRect();
targetRect = {
x: rect.x,
y: rect.y,
width: rect.width,
height: rect.height
};
}
var popupRect = popupElement.getBoundingClientRect();
var _doc$documentElement = doc.documentElement, clientWidth = _doc$documentElement.clientWidth, clientHeight = _doc$documentElement.clientHeight, scrollWidth = _doc$documentElement.scrollWidth, scrollHeight = _doc$documentElement.scrollHeight, scrollTop = _doc$documentElement.scrollTop, scrollLeft = _doc$documentElement.scrollLeft;
var popupHeight = popupRect.height;
var popupWidth = popupRect.width;
var targetHeight = targetRect.height;
var targetWidth = targetRect.width;
var visibleRegion = {
left: 0,
top: 0,
right: clientWidth,
bottom: clientHeight
};
var scrollRegion = {
left: -scrollLeft,
top: -scrollTop,
right: scrollWidth - scrollLeft,
bottom: scrollHeight - scrollTop
};
var htmlRegion = placementInfo.htmlRegion;
var VISIBLE = "visible";
var VISIBLE_FIRST = "visibleFirst";
if (htmlRegion !== "scroll" && htmlRegion !== VISIBLE_FIRST) {
htmlRegion = VISIBLE;
}
var isVisibleFirst = htmlRegion === VISIBLE_FIRST;
var scrollRegionArea = getVisibleArea(scrollRegion, scrollerList);
var visibleRegionArea = getVisibleArea(visibleRegion, scrollerList);
var visibleArea = htmlRegion === VISIBLE ? visibleRegionArea : scrollRegionArea;
var adjustCheckVisibleArea = isVisibleFirst ? visibleRegionArea : visibleArea;
popupElement.style.left = "auto";
popupElement.style.top = "auto";
popupElement.style.right = "0";
popupElement.style.bottom = "0";
var popupMirrorRect = popupElement.getBoundingClientRect();
popupElement.style.left = originLeft;
popupElement.style.top = originTop;
popupElement.style.right = originRight;
popupElement.style.bottom = originBottom;
popupElement.style.overflow = originOverflow;
(_popupElement$parentE2 = popupElement.parentElement) === null || _popupElement$parentE2 === void 0 || _popupElement$parentE2.removeChild(placeholderElement);
var _scaleX = toNum(Math.round(popupWidth / parseFloat(width) * 1e3) / 1e3);
var _scaleY = toNum(Math.round(popupHeight / parseFloat(height) * 1e3) / 1e3);
if (_scaleX === 0 || _scaleY === 0 || isDOM(target) && !isVisible(target)) {
return;
}
var offset = placementInfo.offset, targetOffset = placementInfo.targetOffset;
var _getNumberOffset = getNumberOffset(popupRect, offset), _getNumberOffset2 = _slicedToArray(_getNumberOffset, 2), popupOffsetX = _getNumberOffset2[0], popupOffsetY = _getNumberOffset2[1];
var _getNumberOffset3 = getNumberOffset(targetRect, targetOffset), _getNumberOffset4 = _slicedToArray(_getNumberOffset3, 2), targetOffsetX = _getNumberOffset4[0], targetOffsetY = _getNumberOffset4[1];
targetRect.x -= targetOffsetX;
targetRect.y -= targetOffsetY;
var _ref3 = placementInfo.points || [], _ref4 = _slicedToArray(_ref3, 2), popupPoint = _ref4[0], targetPoint = _ref4[1];
var targetPoints = splitPoints(targetPoint);
var popupPoints = splitPoints(popupPoint);
var targetAlignPoint = getAlignPoint(targetRect, targetPoints);
var popupAlignPoint = getAlignPoint(popupRect, popupPoints);
var nextAlignInfo = _objectSpread2({}, placementInfo);
var nextOffsetX = targetAlignPoint.x - popupAlignPoint.x + popupOffsetX;
var nextOffsetY = targetAlignPoint.y - popupAlignPoint.y + popupOffsetY;
var originIntersectionVisibleArea = getIntersectionVisibleArea(nextOffsetX, nextOffsetY);
var originIntersectionRecommendArea = getIntersectionVisibleArea(nextOffsetX, nextOffsetY, visibleRegionArea);
var targetAlignPointTL = getAlignPoint(targetRect, ["t", "l"]);
var popupAlignPointTL = getAlignPoint(popupRect, ["t", "l"]);
var targetAlignPointBR = getAlignPoint(targetRect, ["b", "r"]);
var popupAlignPointBR = getAlignPoint(popupRect, ["b", "r"]);
var overflow = placementInfo.overflow || {};
var adjustX = overflow.adjustX, adjustY = overflow.adjustY, shiftX = overflow.shiftX, shiftY = overflow.shiftY;
var supportAdjust = function supportAdjust2(val) {
if (typeof val === "boolean") {
return val;
}
return val >= 0;
};
var nextPopupY;
var nextPopupBottom;
var nextPopupX;
var nextPopupRight;
syncNextPopupPosition();
var needAdjustY = supportAdjust(adjustY);
var sameTB = popupPoints[0] === targetPoints[0];
if (needAdjustY && popupPoints[0] === "t" && (nextPopupBottom > adjustCheckVisibleArea.bottom || prevFlipRef.current.bt)) {
var tmpNextOffsetY = nextOffsetY;
if (sameTB) {
tmpNextOffsetY -= popupHeight - targetHeight;
} else {
tmpNextOffsetY = targetAlignPointTL.y - popupAlignPointBR.y - popupOffsetY;
}
var newVisibleArea = getIntersectionVisibleArea(nextOffsetX, tmpNextOffsetY);
var newVisibleRecommendArea = getIntersectionVisibleArea(nextOffsetX, tmpNextOffsetY, visibleRegionArea);
if (
// Of course use larger one
newVisibleArea > originIntersectionVisibleArea || newVisibleArea === originIntersectionVisibleArea && (!isVisibleFirst || // Choose recommend one
newVisibleRecommendArea >= originIntersectionRecommendArea)
) {
prevFlipRef.current.bt = true;
nextOffsetY = tmpNextOffsetY;
popupOffsetY = -popupOffsetY;
nextAlignInfo.points = [reversePoints(popupPoints, 0), reversePoints(targetPoints, 0)];
} else {
prevFlipRef.current.bt = false;
}
}
if (needAdjustY && popupPoints[0] === "b" && (nextPopupY < adjustCheckVisibleArea.top || prevFlipRef.current.tb)) {
var _tmpNextOffsetY = nextOffsetY;
if (sameTB) {
_tmpNextOffsetY += popupHeight - targetHeight;
} else {
_tmpNextOffsetY = targetAlignPointBR.y - popupAlignPointTL.y - popupOffsetY;
}
var _newVisibleArea = getIntersectionVisibleArea(nextOffsetX, _tmpNextOffsetY);
var _newVisibleRecommendArea = getIntersectionVisibleArea(nextOffsetX, _tmpNextOffsetY, visibleRegionArea);
if (
// Of course use larger one
_newVisibleArea > originIntersectionVisibleArea || _newVisibleArea === originIntersectionVisibleArea && (!isVisibleFirst || // Choose recommend one
_newVisibleRecommendArea >= originIntersectionRecommendArea)
) {
prevFlipRef.current.tb = true;
nextOffsetY = _tmpNextOffsetY;
popupOffsetY = -popupOffsetY;
nextAlignInfo.points = [reversePoints(popupPoints, 0), reversePoints(targetPoints, 0)];
} else {
prevFlipRef.current.tb = false;
}
}
var needAdjustX = supportAdjust(adjustX);
var sameLR = popupPoints[1] === targetPoints[1];
if (needAdjustX && popupPoints[1] === "l" && (nextPopupRight > adjustCheckVisibleArea.right || prevFlipRef.current.rl)) {
var tmpNextOffsetX = nextOffsetX;
if (sameLR) {
tmpNextOffsetX -= popupWidth - targetWidth;
} else {
tmpNextOffsetX = targetAlignPointTL.x - popupAlignPointBR.x - popupOffsetX;
}
var _newVisibleArea2 = getIntersectionVisibleArea(tmpNextOffsetX, nextOffsetY);
var _newVisibleRecommendArea2 = getIntersectionVisibleArea(tmpNextOffsetX, nextOffsetY, visibleRegionArea);
if (
// Of course use larger one
_newVisibleArea2 > originIntersectionVisibleArea || _newVisibleArea2 === originIntersectionVisibleArea && (!isVisibleFirst || // Choose recommend one
_newVisibleRecommendArea2 >= originIntersectionRecommendArea)
) {
prevFlipRef.current.rl = true;
nextOffsetX = tmpNextOffsetX;
popupOffsetX = -popupOffsetX;
nextAlignInfo.points = [reversePoints(popupPoints, 1), reversePoints(targetPoints, 1)];
} else {
prevFlipRef.current.rl = false;
}
}
if (needAdjustX && popupPoints[1] === "r" && (nextPopupX < adjustCheckVisibleArea.left || prevFlipRef.current.lr)) {
var _tmpNextOffsetX = nextOffsetX;
if (sameLR) {
_tmpNextOffsetX += popupWidth - targetWidth;
} else {
_tmpNextOffsetX = targetAlignPointBR.x - popupAlignPointTL.x - popupOffsetX;
}
var _newVisibleArea3 = getIntersectionVisibleArea(_tmpNextOffsetX, nextOffsetY);
var _newVisibleRecommendArea3 = getIntersectionVisibleArea(_tmpNextOffsetX, nextOffsetY, visibleRegionArea);
if (
// Of course use larger one
_newVisibleArea3 > originIntersectionVisibleArea || _newVisibleArea3 === originIntersectionVisibleArea && (!isVisibleFirst || // Choose recommend one
_newVisibleRecommendArea3 >= originIntersectionRecommendArea)
) {
prevFlipRef.current.lr = true;
nextOffsetX = _tmpNextOffsetX;
popupOffsetX = -popupOffsetX;
nextAlignInfo.points = [reversePoints(popupPoints, 1), reversePoints(targetPoints, 1)];
} else {
prevFlipRef.current.lr = false;
}
}
syncNextPopupPosition();
var numShiftX = shiftX === true ? 0 : shiftX;
if (typeof numShiftX === "number") {
if (nextPopupX < visibleRegionArea.left) {
nextOffsetX -= nextPopupX - visibleRegionArea.left - popupOffsetX;
if (targetRect.x + targetWidth < visibleRegionArea.left + numShiftX) {
nextOffsetX += targetRect.x - visibleRegionArea.left + targetWidth - numShiftX;
}
}
if (nextPopupRight > visibleRegionArea.right) {
nextOffsetX -= nextPopupRight - visibleRegionArea.right - popupOffsetX;
if (targetRect.x > visibleRegionArea.right - numShiftX) {
nextOffsetX += targetRect.x - visibleRegionArea.right + numShiftX;
}
}
}
var numShiftY = shiftY === true ? 0 : shiftY;
if (typeof numShiftY === "number") {
if (nextPopupY < visibleRegionArea.top) {
nextOffsetY -= nextPopupY - visibleRegionArea.top - popupOffsetY;
if (targetRect.y + targetHeight < visibleRegionArea.top + numShiftY) {
nextOffsetY += targetRect.y - visibleRegionArea.top + targetHeight - numShiftY;
}
}
if (nextPopupBottom > visibleRegionArea.bottom) {
nextOffsetY -= nextPopupBottom - visibleRegionArea.bottom - popupOffsetY;
if (targetRect.y > visibleRegionArea.bottom - numShiftY) {
nextOffsetY += targetRect.y - visibleRegionArea.bottom + numShiftY;
}
}
}
var popupLeft = popupRect.x + nextOffsetX;
var popupRight = popupLeft + popupWidth;
var popupTop = popupRect.y + nextOffsetY;
var popupBottom = popupTop + popupHeight;
var targetLeft = targetRect.x;
var targetRight = targetLeft + targetWidth;
var targetTop = targetRect.y;
var targetBottom = targetTop + targetHeight;
var maxLeft = Math.max(popupLeft, targetLeft);
var minRight = Math.min(popupRight, targetRight);
var xCenter = (maxLeft + minRight) / 2;
var nextArrowX = xCenter - popupLeft;
var maxTop = Math.max(popupTop, targetTop);
var minBottom = Math.min(popupBottom, targetBottom);
var yCenter = (maxTop + minBottom) / 2;
var nextArrowY = yCenter - popupTop;
onPopupAlign === null || onPopupAlign === void 0 || onPopupAlign(popupEle, nextAlignInfo);
var offsetX4Right = popupMirrorRect.right - popupRect.x - (nextOffsetX + popupRect.width);
var offsetY4Bottom = popupMirrorRect.bottom - popupRect.y - (nextOffsetY + popupRect.height);
setOffsetInfo({
ready: true,
offsetX: nextOffsetX / _scaleX,
offsetY: nextOffsetY / _scaleY,
offsetR: offsetX4Right / _scaleX,
offsetB: offsetY4Bottom / _scaleY,
arrowX: nextArrowX / _scaleX,
arrowY: nextArrowY / _scaleY,
scaleX: _scaleX,
scaleY: _scaleY,
align: nextAlignInfo
});
}
});
var triggerAlign = function triggerAlign2() {
alignCountRef.current += 1;
var id = alignCountRef.current;
Promise.resolve().then(function() {
if (alignCountRef.current === id) {
onAlign();
}
});
};
var resetReady = function resetReady2() {
setOffsetInfo(function(ori) {
return _objectSpread2(_objectSpread2({}, ori), {}, {
ready: false
});
});
};
useLayoutEffect$1(resetReady, [placement]);
useLayoutEffect$1(function() {
if (!open) {
resetReady();
}
}, [open]);
return [offsetInfo.ready, offsetInfo.offsetX, offsetInfo.offsetY, offsetInfo.offsetR, offsetInfo.offsetB, offsetInfo.arrowX, offsetInfo.arrowY, offsetInfo.scaleX, offsetInfo.scaleY, offsetInfo.align, triggerAlign];
}
function useWatch(open, target, popup, onAlign, onScroll) {
useLayoutEffect$1(function() {
if (open && target && popup) {
let notifyScroll = function() {
onAlign();
onScroll();
};
var targetElement = target;
var popupElement = popup;
var targetScrollList = collectScroller(targetElement);
var popupScrollList = collectScroller(popupElement);
var win = getWin(popupElement);
var mergedList = new Set([win].concat(_toConsumableArray(targetScrollList), _toConsumableArray(popupScrollList)));
mergedList.forEach(function(scroller) {
scroller.addEventListener("scroll", notifyScroll, {
passive: true
});
});
win.addEventListener("resize", notifyScroll, {
passive: true
});
onAlign();
return function() {
mergedList.forEach(function(scroller) {
scroller.removeEventListener("scroll", notifyScroll);
win.removeEventListener("resize", notifyScroll);
});
};
}
}, [open, target, popup]);
}
function useWinClick(open, clickToHide, targetEle, popupEle, mask, maskClosable, inPopupOrChild, triggerOpen) {
var openRef = React__namespace.useRef(open);
var lockRef = React__namespace.useRef(false);
if (openRef.current !== open) {
lockRef.current = true;
openRef.current = open;
}
React__namespace.useEffect(function() {
var id = wrapperRaf(function() {
lockRef.current = false;
});
return function() {
wrapperRaf.cancel(id);
};
}, [open]);
React__namespace.useEffect(function() {
if (clickToHide && popupEle && (!mask || maskClosable)) {
var genClickEvents = function genClickEvents2() {
var clickInside = false;
var onWindowMouseDown = function onWindowMouseDown2(_ref) {
var target = _ref.target;
clickInside = inPopupOrChild(target);
};
var onWindowClick = function onWindowClick2(_ref2) {
var target = _ref2.target;
if (!lockRef.current && openRef.current && !clickInside && !inPopupOrChild(target)) {
triggerOpen(false);
}
};
return [onWindowMouseDown, onWindowClick];
};
var _genClickEvents = genClickEvents(), _genClickEvents2 = _slicedToArray(_genClickEvents, 2), onWinMouseDown = _genClickEvents2[0], onWinClick = _genClickEvents2[1];
var _genClickEvents3 = genClickEvents(), _genClickEvents4 = _slicedToArray(_genClickEvents3, 2), onShadowMouseDown = _genClickEvents4[0], onShadowClick = _genClickEvents4[1];
var win = getWin(popupEle);
win.addEventListener("mousedown", onWinMouseDown, true);
win.addEventListener("click", onWinClick, true);
win.addEventListener("contextmenu", onWinClick, true);
var targetShadowRoot = getShadowRoot(targetEle);
if (targetShadowRoot) {
targetShadowRoot.addEventListener("mousedown", onShadowMouseDown, true);
targetShadowRoot.addEventListener("click", onShadowClick, true);
targetShadowRoot.addEventListener("contextmenu", onShadowClick, true);
}
return function() {
win.removeEventListener("mousedown", onWinMouseDown, true);
win.removeEventListener("click", onWinClick, true);
win.removeEventListener("contextmenu", onWinClick, true);
if (targetShadowRoot) {
targetShadowRoot.removeEventListener("mousedown", onShadowMouseDown, true);
targetShadowRoot.removeEventListener("click", onShadowClick, true);
targetShadowRoot.removeEventListener("contextmenu", onShadowClick, true);
}
};
}
}, [clickToHide, targetEle, popupEle, mask, maskClosable]);
}
var _excluded$6 = ["prefixCls", "children", "action", "showAction", "hideAction", "popupVisible", "defaultPopupVisible", "onPopupVisibleChange", "afterPopupVisibleChange", "mouseEnterDelay", "mouseLeaveDelay", "focusDelay", "blurDelay", "mask", "maskClosable", "getPopupContainer", "forceRender", "autoDestroy", "destroyPopupOnHide", "popup", "popupClassName", "popupStyle", "popupPlacement", "builtinPlacements", "popupAlign", "zIndex", "stretch", "getPopupClassNameFromAlign", "fresh", "alignPoint", "onPopupClick", "onPopupAlign", "arrow", "popupMotion", "maskMotion", "popupTransitionName", "popupAnimation", "maskTransitionName", "maskAnimation", "className", "getTriggerDOMNode"];
function generateTrigger() {
var PortalComponent = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : Portal;
var Trigger2 = /* @__PURE__ */ React__namespace.forwardRef(function(props, ref) {
var _props$prefixCls = props.prefixCls, prefixCls = _props$prefixCls === void 0 ? "rc-trigger-popup" : _props$prefixCls, children = props.children, _props$action = props.action, action = _props$action === void 0 ? "hover" : _props$action, showAction = props.showAction, hideAction = props.hideAction, popupVisible = props.popupVisible, defaultPopupVisible = props.defaultPopupVisible, onPopupVisibleChange = props.onPopupVisibleChange, afterPopupVisibleChange = props.afterPopupVisibleChange, mouseEnterDelay = props.mouseEnterDelay, _props$mouseLeaveDela = props.mouseLeaveDelay, mouseLeaveDelay = _props$mouseLeaveDela === void 0 ? 0.1 : _props$mouseLeaveDela, focusDelay = props.focusDelay, blurDelay = props.blurDelay, mask = props.mask, _props$maskClosable = props.maskClosable, maskClosable = _props$maskClosable === void 0 ? true : _props$maskClosable, getPopupContainer = props.getPopupContainer, forceRender = props.forceRender, autoDestroy = props.autoDestroy, destroyPopupOnHide = props.destroyPopupOnHide, popup = props.popup, popupClassName = props.popupClassName, popupStyle = props.popupStyle, popupPlacement = props.popupPlacement, _props$builtinPlaceme = props.builtinPlacements, builtinPlacements = _props$builtinPlaceme === void 0 ? {} : _props$builtinPlaceme, popupAlign = props.popupAlign, zIndex = props.zIndex, stretch = props.stretch, getPopupClassNameFromAlign = props.getPopupClassNameFromAlign, fresh = props.fresh, alignPoint = props.alignPoint, onPopupClick = props.onPopupClick, onPopupAlign = props.onPopupAlign, arrow = props.arrow, popupMotion = props.popupMotion, maskMotion = props.maskMotion, popupTransitionName = props.popupTransitionName, popupAnimation = props.popupAnimation, maskTransitionName = props.maskTransitionName, maskAnimation = props.maskAnimation, className = props.className, getTriggerDOMNode = props.getTriggerDOMNode, restProps = _objectWithoutProperties(props, _excluded$6);
var mergedAutoDestroy = autoDestroy || destroyPopupOnHide || false;
var _React$useState = React__namespace.useState(false), _React$useState2 = _slicedToArray(_React$useState, 2), mobile = _React$useState2[0], setMobile = _React$useState2[1];
useLayoutEffect$1(function() {
setMobile(isMobile());
}, []);
var subPopupElements = React__namespace.useRef({});
var parentContext = React__namespace.useContext(TriggerContext);
var context = React__namespace.useMemo(function() {
return {
registerSubPopup: function registerSubPopup(id2, subPopupEle) {
subPopupElements.current[id2] = subPopupEle;
parentContext === null || parentContext === void 0 || parentContext.registerSubPopup(id2, subPopupEle);
}
};
}, [parentContext]);
var id = useId$1();
var _React$useState3 = React__namespace.useState(null), _React$useState4 = _slicedToArray(_React$useState3, 2), popupEle = _React$useState4[0], setPopupEle = _React$useState4[1];
var setPopupRef = useEvent(function(node2) {
if (isDOM(node2) && popupEle !== node2) {
setPopupEle(node2);
}
parentContext === null || parentContext === void 0 || parentContext.registerSubPopup(id, node2);
});
var _React$useState5 = React__namespace.useState(null), _React$useState6 = _slicedToArray(_React$useState5, 2), targetEle = _React$useState6[0], setTargetEle = _React$useState6[1];
var externalForwardRef = React__namespace.useRef(null);
var setTargetRef = useEvent(function(node2) {
if (isDOM(node2) && targetEle !== node2) {
setTargetEle(node2);
externalForwardRef.current = node2;
}
});
var child = React__namespace.Children.only(children);
var originChildProps = (child === null || child === void 0 ? void 0 : child.props) || {};
var cloneProps = {};
var inPopupOrChild = useEvent(function(ele) {
var _getShadowRoot, _getShadowRoot2;
var childDOM = targetEle;
return (childDOM === null || childDOM === void 0 ? void 0 : childDOM.contains(ele)) || ((_getShadowRoot = getShadowRoot(childDOM)) === null || _getShadowRoot === void 0 ? void 0 : _getShadowRoot.host) === ele || ele === childDOM || (popupEle === null || popupEle === void 0 ? void 0 : popupEle.contains(ele)) || ((_getShadowRoot2 = getShadowRoot(popupEle)) === null || _getShadowRoot2 === void 0 ? void 0 : _getShadowRoot2.host) === ele || ele === popupEle || Object.values(subPopupElements.current).some(function(subPopupEle) {
return (subPopupEle === null || subPopupEle === void 0 ? void 0 : subPopupEle.contains(ele)) || ele === subPopupEle;
});
});
var mergePopupMotion = getMotion(prefixCls, popupMotion, popupAnimation, popupTransitionName);
var mergeMaskMotion = getMotion(prefixCls, maskMotion, maskAnimation, maskTransitionName);
var _React$useState7 = React__namespace.useState(defaultPopupVisible || false), _React$useState8 = _slicedToArray(_React$useState7, 2), internalOpen = _React$useState8[0], setInternalOpen = _React$useState8[1];
var mergedOpen = popupVisible !== null && popupVisible !== void 0 ? popupVisible : internalOpen;
var setMergedOpen = useEvent(function(nextOpen) {
if (popupVisible === void 0) {
setInternalOpen(nextOpen);
}
});
useLayoutEffect$1(function() {
setInternalOpen(popupVisible || false);
}, [popupVisible]);
var openRef = React__namespace.useRef(mergedOpen);
openRef.current = mergedOpen;
var lastTriggerRef = React__namespace.useRef([]);
lastTriggerRef.current = [];
var internalTriggerOpen = useEvent(function(nextOpen) {
var _lastTriggerRef$curre;
setMergedOpen(nextOpen);
if (((_lastTriggerRef$curre = lastTriggerRef.current[lastTriggerRef.current.length - 1]) !== null && _lastTriggerRef$curre !== void 0 ? _lastTriggerRef$curre : mergedOpen) !== nextOpen) {
lastTriggerRef.current.push(nextOpen);
onPopupVisibleChange === null || onPopupVisibleChange === void 0 || onPopupVisibleChange(nextOpen);
}
});
var delayRef = React__namespace.useRef();
var clearDelay = function clearDelay2() {
clearTimeout(delayRef.current);
};
var triggerOpen = function triggerOpen2(nextOpen) {
var delay = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
clearDelay();
if (delay === 0) {
internalTriggerOpen(nextOpen);
} else {
delayRef.current = setTimeout(function() {
internalTriggerOpen(nextOpen);
}, delay * 1e3);
}
};
React__namespace.useEffect(function() {
return clearDelay;
}, []);
var _React$useState9 = React__namespace.useState(false), _React$useState10 = _slicedToArray(_React$useState9, 2), inMotion = _React$useState10[0], setInMotion = _React$useState10[1];
useLayoutEffect$1(function(firstMount) {
if (!firstMount || mergedOpen) {
setInMotion(true);
}
}, [mergedOpen]);
var _React$useState11 = React__namespace.useState(null), _React$useState12 = _slicedToArray(_React$useState11, 2), motionPrepareResolve = _React$useState12[0], setMotionPrepareResolve = _React$useState12[1];
var _React$useState13 = React__namespace.useState([0, 0]), _React$useState14 = _slicedToArray(_React$useState13, 2), mousePos = _React$useState14[0], setMousePos = _React$useState14[1];
var setMousePosByEvent = function setMousePosByEvent2(event) {
setMousePos([event.clientX, event.clientY]);
};
var _useAlign = useAlign(mergedOpen, popupEle, alignPoint ? mousePos : targetEle, popupPlacement, builtinPlacements, popupAlign, onPopupAlign), _useAlign2 = _slicedToArray(_useAlign, 11), ready = _useAlign2[0], offsetX = _useAlign2[1], offsetY = _useAlign2[2], offsetR = _useAlign2[3], offsetB = _useAlign2[4], arrowX = _useAlign2[5], arrowY = _useAlign2[6], scaleX = _useAlign2[7], scaleY = _useAlign2[8], alignInfo = _useAlign2[9], onAlign = _useAlign2[10];
var _useAction = useAction(mobile, action, showAction, hideAction), _useAction2 = _slicedToArray(_useAction, 2), showActions = _useAction2[0], hideActions = _useAction2[1];
var clickToShow = showActions.has("click");
var clickToHide = hideActions.has("click") || hideActions.has("contextMenu");
var triggerAlign = useEvent(function() {
if (!inMotion) {
onAlign();
}
});
var onScroll = function onScroll2() {
if (openRef.current && alignPoint && clickToHide) {
triggerOpen(false);
}
};
useWatch(mergedOpen, targetEle, popupEle, triggerAlign, onScroll);
useLayoutEffect$1(function() {
triggerAlign();
}, [mousePos, popupPlacement]);
useLayoutEffect$1(function() {
if (mergedOpen && !(builtinPlacements !== null && builtinPlacements !== void 0 && builtinPlacements[popupPlacement])) {
triggerAlign();
}
}, [JSON.stringify(popupAlign)]);
var alignedClassName = React__namespace.useMemo(function() {
var baseClassName = getAlignPopupClassName(builtinPlacements, prefixCls, alignInfo, alignPoint);
return classNames(baseClassName, getPopupClassNameFromAlign === null || getPopupClassNameFromAlign === void 0 ? void 0 : getPopupClassNameFromAlign(alignInfo));
}, [alignInfo, getPopupClassNameFromAlign, builtinPlacements, prefixCls, alignPoint]);
React__namespace.useImperativeHandle(ref, function() {
return {
nativeElement: externalForwardRef.current,
forceAlign: triggerAlign
};
});
var _React$useState15 = React__namespace.useState(0), _React$useState16 = _slicedToArray(_React$useState15, 2), targetWidth = _React$useState16[0], setTargetWidth = _React$useState16[1];
var _React$useState17 = React__namespace.useState(0), _React$useState18 = _slicedToArray(_React$useState17, 2), targetHeight = _React$useState18[0], setTargetHeight = _React$useState18[1];
var syncTargetSize = function syncTargetSize2() {
if (stretch && targetEle) {
var rect = targetEle.getBoundingClientRect();
setTargetWidth(rect.width);
setTargetHeight(rect.height);
}
};
var onTargetResize = function onTargetResize2() {
syncTargetSize();
triggerAlign();
};
var onVisibleChanged = function onVisibleChanged2(visible) {
setInMotion(false);
onAlign();
afterPopupVisibleChange === null || afterPopupVisibleChange === void 0 || afterPopupVisibleChange(visible);
};
var onPrepare = function onPrepare2() {
return new Promise(function(resolve) {
syncTargetSize();
setMotionPrepareResolve(function() {
return resolve;
});
});
};
useLayoutEffect$1(function() {
if (motionPrepareResolve) {
onAlign();
motionPrepareResolve();
setMotionPrepareResolve(null);
}
}, [motionPrepareResolve]);
function wrapperAction(eventName, nextOpen, delay, preEvent) {
cloneProps[eventName] = function(event) {
var _originChildProps$eve;
preEvent === null || preEvent === void 0 || preEvent(event);
triggerOpen(nextOpen, delay);
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
(_originChildProps$eve = originChildProps[eventName]) === null || _originChildProps$eve === void 0 || _originChildProps$eve.call.apply(_originChildProps$eve, [originChildProps, event].concat(args));
};
}
if (clickToShow || clickToHide) {
cloneProps.onClick = function(event) {
var _originChildProps$onC;
if (openRef.current && clickToHide) {
triggerOpen(false);
} else if (!openRef.current && clickToShow) {
setMousePosByEvent(event);
triggerOpen(true);
}
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
args[_key2 - 1] = arguments[_key2];
}
(_originChildProps$onC = originChildProps.onClick) === null || _originChildProps$onC === void 0 || _originChildProps$onC.call.apply(_originChildProps$onC, [originChildProps, event].concat(args));
};
}
useWinClick(mergedOpen, clickToHide, targetEle, popupEle, mask, maskClosable, inPopupOrChild, triggerOpen);
var hoverToShow = showActions.has("hover");
var hoverToHide = hideActions.has("hover");
var onPopupMouseEnter;
var onPopupMouseLeave;
if (hoverToShow) {
wrapperAction("onMouseEnter", true, mouseEnterDelay, function(event) {
setMousePosByEvent(event);
});
wrapperAction("onPointerEnter", true, mouseEnterDelay, function(event) {
setMousePosByEvent(event);
});
onPopupMouseEnter = function onPopupMouseEnter2() {
if (mergedOpen || inMotion) {
triggerOpen(true, mouseEnterDelay);
}
};
if (alignPoint) {
cloneProps.onMouseMove = function(event) {
var _originChildProps$onM;
(_originChildProps$onM = originChildProps.onMouseMove) === null || _originChildProps$onM === void 0 || _originChildProps$onM.call(originChildProps, event);
};
}
}
if (hoverToHide) {
wrapperAction("onMouseLeave", false, mouseLeaveDelay);
wrapperAction("onPointerLeave", false, mouseLeaveDelay);
onPopupMouseLeave = function onPopupMouseLeave2() {
triggerOpen(false, mouseLeaveDelay);
};
}
if (showActions.has("focus")) {
wrapperAction("onFocus", true, focusDelay);
}
if (hideActions.has("focus")) {
wrapperAction("onBlur", false, blurDelay);
}
if (showActions.has("contextMenu")) {
cloneProps.onContextMenu = function(event) {
var _originChildProps$onC2;
if (openRef.current && hideActions.has("contextMenu")) {
triggerOpen(false);
} else {
setMousePosByEvent(event);
triggerOpen(true);
}
event.preventDefault();
for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
args[_key3 - 1] = arguments[_key3];
}
(_originChildProps$onC2 = originChildProps.onContextMenu) === null || _originChildProps$onC2 === void 0 || _originChildProps$onC2.call.apply(_originChildProps$onC2, [originChildProps, event].concat(args));
};
}
if (className) {
cloneProps.className = classNames(originChildProps.className, className);
}
var mergedChildrenProps = _objectSpread2(_objectSpread2({}, originChildProps), cloneProps);
var passedProps = {};
var passedEventList = ["onContextMenu", "onClick", "onMouseDown", "onTouchStart", "onMouseEnter", "onMouseLeave", "onFocus", "onBlur"];
passedEventList.forEach(function(eventName) {
if (restProps[eventName]) {
passedProps[eventName] = function() {
var _mergedChildrenProps$;
for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
args[_key4] = arguments[_key4];
}
(_mergedChildrenProps$ = mergedChildrenProps[eventName]) === null || _mergedChildrenProps$ === void 0 || _mergedChildrenProps$.call.apply(_mergedChildrenProps$, [mergedChildrenProps].concat(args));
restProps[eventName].apply(restProps, args);
};
}
});
var triggerNode = /* @__PURE__ */ React__namespace.cloneElement(child, _objectSpread2(_objectSpread2({}, mergedChildrenProps), passedProps));
var arrowPos = {
x: arrowX,
y: arrowY
};
var innerArrow = arrow ? _objectSpread2({}, arrow !== true ? arrow : {}) : null;
return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, /* @__PURE__ */ React__namespace.createElement(RefResizeObserver, {
disabled: !mergedOpen,
ref: setTargetRef,
onResize: onTargetResize
}, /* @__PURE__ */ React__namespace.createElement(TriggerWrapper, {
getTriggerDOMNode
}, triggerNode)), /* @__PURE__ */ React__namespace.createElement(TriggerContext.Provider, {
value: context
}, /* @__PURE__ */ React__namespace.createElement(Popup, {
portal: PortalComponent,
ref: setPopupRef,
prefixCls,
popup,
className: classNames(popupClassName, alignedClassName),
style: popupStyle,
target: targetEle,
onMouseEnter: onPopupMouseEnter,
onMouseLeave: onPopupMouseLeave,
onPointerEnter: onPopupMouseEnter,
zIndex,
open: mergedOpen,
keepDom: inMotion,
fresh,
onClick: onPopupClick,
mask,
motion: mergePopupMotion,
maskMotion: mergeMaskMotion,
onVisibleChanged,
onPrepare,
forceRender,
autoDestroy: mergedAutoDestroy,
getPopupContainer,
align: alignInfo,
arrow: innerArrow,
arrowPos,
ready,
offsetX,
offsetY,
offsetR,
offsetB,
onAlign: triggerAlign,
stretch,
targetWidth: targetWidth / scaleX,
targetHeight: targetHeight / scaleY
})));
});
return Trigger2;
}
const Trigger = generateTrigger(Portal);
var _excluded$5 = ["prefixCls", "disabled", "visible", "children", "popupElement", "animation", "transitionName", "dropdownStyle", "dropdownClassName", "direction", "placement", "builtinPlacements", "dropdownMatchSelectWidth", "dropdownRender", "dropdownAlign", "getPopupContainer", "empty", "getTriggerDOMNode", "onPopupVisibleChange", "onPopupMouseEnter"];
var getBuiltInPlacements$1 = function getBuiltInPlacements(dropdownMatchSelectWidth) {
var adjustX = dropdownMatchSelectWidth === true ? 0 : 1;
return {
bottomLeft: {
points: ["tl", "bl"],
offset: [0, 4],
overflow: {
adjustX,
adjustY: 1
},
htmlRegion: "scroll"
},
bottomRight: {
points: ["tr", "br"],
offset: [0, 4],
overflow: {
adjustX,
adjustY: 1
},
htmlRegion: "scroll"
},
topLeft: {
points: ["bl", "tl"],
offset: [0, -4],
overflow: {
adjustX,
adjustY: 1
},
htmlRegion: "scroll"
},
topRight: {
points: ["br", "tr"],
offset: [0, -4],
overflow: {
adjustX,
adjustY: 1
},
htmlRegion: "scroll"
}
};
};
var SelectTrigger = function SelectTrigger2(props, ref) {
var prefixCls = props.prefixCls;
props.disabled;
var visible = props.visible, children = props.children, popupElement = props.popupElement, animation = props.animation, transitionName = props.transitionName, dropdownStyle = props.dropdownStyle, dropdownClassName = props.dropdownClassName, _props$direction = props.direction, direction = _props$direction === void 0 ? "ltr" : _props$direction, placement = props.placement, builtinPlacements = props.builtinPlacements, dropdownMatchSelectWidth = props.dropdownMatchSelectWidth, dropdownRender = props.dropdownRender, dropdownAlign = props.dropdownAlign, getPopupContainer = props.getPopupContainer, empty = props.empty, getTriggerDOMNode = props.getTriggerDOMNode, onPopupVisibleChange = props.onPopupVisibleChange, onPopupMouseEnter = props.onPopupMouseEnter, restProps = _objectWithoutProperties(props, _excluded$5);
var dropdownPrefixCls = "".concat(prefixCls, "-dropdown");
var popupNode = popupElement;
if (dropdownRender) {
popupNode = dropdownRender(popupElement);
}
var mergedBuiltinPlacements = React__namespace.useMemo(function() {
return builtinPlacements || getBuiltInPlacements$1(dropdownMatchSelectWidth);
}, [builtinPlacements, dropdownMatchSelectWidth]);
var mergedTransitionName = animation ? "".concat(dropdownPrefixCls, "-").concat(animation) : transitionName;
var isNumberPopupWidth = typeof dropdownMatchSelectWidth === "number";
var stretch = React__namespace.useMemo(function() {
if (isNumberPopupWidth) {
return null;
}
return dropdownMatchSelectWidth === false ? "minWidth" : "width";
}, [dropdownMatchSelectWidth, isNumberPopupWidth]);
var popupStyle = dropdownStyle;
if (isNumberPopupWidth) {
popupStyle = _objectSpread2(_objectSpread2({}, popupStyle), {}, {
width: dropdownMatchSelectWidth
});
}
var popupRef = React__namespace.useRef(null);
React__namespace.useImperativeHandle(ref, function() {
return {
getPopupElement: function getPopupElement() {
return popupRef.current;
}
};
});
return /* @__PURE__ */ React__namespace.createElement(Trigger, _extends$1({}, restProps, {
showAction: onPopupVisibleChange ? ["click"] : [],
hideAction: onPopupVisibleChange ? ["click"] : [],
popupPlacement: placement || (direction === "rtl" ? "bottomRight" : "bottomLeft"),
builtinPlacements: mergedBuiltinPlacements,
prefixCls: dropdownPrefixCls,
popupTransitionName: mergedTransitionName,
popup: /* @__PURE__ */ React__namespace.createElement("div", {
ref: popupRef,
onMouseEnter: onPopupMouseEnter
}, popupNode),
stretch,
popupAlign: dropdownAlign,
popupVisible: visible,
getPopupContainer,
popupClassName: classNames(dropdownClassName, _defineProperty({}, "".concat(dropdownPrefixCls, "-empty"), empty)),
popupStyle,
getTriggerDOMNode,
onPopupVisibleChange
}), children);
};
var RefSelectTrigger = /* @__PURE__ */ React__namespace.forwardRef(SelectTrigger);
RefSelectTrigger.displayName = "SelectTrigger";
function getKey(data, index2) {
var key = data.key;
var value;
if ("value" in data) {
value = data.value;
}
if (key !== null && key !== void 0) {
return key;
}
if (value !== void 0) {
return value;
}
return "rc-index-key-".concat(index2);
}
function fillFieldNames(fieldNames, childrenAsData) {
var _ref = fieldNames || {}, label = _ref.label, value = _ref.value, options = _ref.options, groupLabel = _ref.groupLabel;
var mergedLabel = label || (childrenAsData ? "children" : "label");
return {
label: mergedLabel,
value: value || "value",
options: options || "options",
groupLabel: groupLabel || mergedLabel
};
}
function flattenOptions(options) {
var _ref2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, fieldNames = _ref2.fieldNames, childrenAsData = _ref2.childrenAsData;
var flattenList = [];
var _fillFieldNames = fillFieldNames(fieldNames, false), fieldLabel = _fillFieldNames.label, fieldValue = _fillFieldNames.value, fieldOptions = _fillFieldNames.options, groupLabel = _fillFieldNames.groupLabel;
function dig(list, isGroupOption) {
list.forEach(function(data) {
if (isGroupOption || !(fieldOptions in data)) {
var value = data[fieldValue];
flattenList.push({
key: getKey(data, flattenList.length),
groupOption: isGroupOption,
data,
label: data[fieldLabel],
value
});
} else {
var grpLabel = data[groupLabel];
if (grpLabel === void 0 && childrenAsData) {
grpLabel = data.label;
}
flattenList.push({
key: getKey(data, flattenList.length),
group: true,
data,
label: grpLabel
});
dig(data[fieldOptions], true);
}
});
}
dig(options, false);
return flattenList;
}
function injectPropsWithOption(option) {
var newOption = _objectSpread2({}, option);
if (!("props" in newOption)) {
Object.defineProperty(newOption, "props", {
get: function get2() {
warningOnce(false, "Return type is option instead of Option instance. Please read value directly instead of reading from `props`.");
return newOption;
}
});
}
return newOption;
}
function getSeparatedContent(text, tokens) {
if (!tokens || !tokens.length) {
return null;
}
var match2 = false;
function separate(str, _ref3) {
var _ref4 = _toArray(_ref3), token2 = _ref4[0], restTokens = _ref4.slice(1);
if (!token2) {
return [str];
}
var list2 = str.split(token2);
match2 = match2 || list2.length > 1;
return list2.reduce(function(prevList, unitStr) {
return [].concat(_toConsumableArray(prevList), _toConsumableArray(separate(unitStr, restTokens)));
}, []).filter(function(unit2) {
return unit2;
});
}
var list = separate(text, tokens);
return match2 ? list : null;
}
var _excluded$4 = ["id", "prefixCls", "className", "showSearch", "tagRender", "direction", "omitDomProps", "displayValues", "onDisplayValuesChange", "emptyOptions", "notFoundContent", "onClear", "mode", "disabled", "loading", "getInputElement", "getRawInputElement", "open", "defaultOpen", "onDropdownVisibleChange", "activeValue", "onActiveValueChange", "activeDescendantId", "searchValue", "autoClearSearchValue", "onSearch", "onSearchSplit", "tokenSeparators", "allowClear", "suffixIcon", "clearIcon", "OptionList", "animation", "transitionName", "dropdownStyle", "dropdownClassName", "dropdownMatchSelectWidth", "dropdownRender", "dropdownAlign", "placement", "builtinPlacements", "getPopupContainer", "showAction", "onFocus", "onBlur", "onKeyUp", "onKeyDown", "onMouseDown"];
var DEFAULT_OMIT_PROPS = ["value", "onChange", "removeIcon", "placeholder", "autoFocus", "maxTagCount", "maxTagTextLength", "maxTagPlaceholder", "choiceTransitionName", "onInputKeyDown", "onPopupScroll", "tabIndex"];
function isMultiple(mode) {
return mode === "tags" || mode === "multiple";
}
var BaseSelect = /* @__PURE__ */ React__namespace.forwardRef(function(props, ref) {
var _customizeRawInputEle, _classNames2;
var id = props.id, prefixCls = props.prefixCls, className = props.className, showSearch = props.showSearch, tagRender = props.tagRender, direction = props.direction, omitDomProps = props.omitDomProps, displayValues = props.displayValues, onDisplayValuesChange = props.onDisplayValuesChange, emptyOptions = props.emptyOptions, _props$notFoundConten = props.notFoundContent, notFoundContent = _props$notFoundConten === void 0 ? "Not Found" : _props$notFoundConten, onClear = props.onClear, mode = props.mode, disabled = props.disabled, loading = props.loading, getInputElement = props.getInputElement, getRawInputElement = props.getRawInputElement, open = props.open, defaultOpen = props.defaultOpen, onDropdownVisibleChange = props.onDropdownVisibleChange, activeValue = props.activeValue, onActiveValueChange = props.onActiveValueChange, activeDescendantId = props.activeDescendantId, searchValue = props.searchValue, autoClearSearchValue = props.autoClearSearchValue, onSearch = props.onSearch, onSearchSplit = props.onSearchSplit, tokenSeparators = props.tokenSeparators, allowClear = props.allowClear, suffixIcon = props.suffixIcon, clearIcon = props.clearIcon, OptionList3 = props.OptionList, animation = props.animation, transitionName = props.transitionName, dropdownStyle = props.dropdownStyle, dropdownClassName = props.dropdownClassName, dropdownMatchSelectWidth = props.dropdownMatchSelectWidth, dropdownRender = props.dropdownRender, dropdownAlign = props.dropdownAlign, placement = props.placement, builtinPlacements = props.builtinPlacements, getPopupContainer = props.getPopupContainer, _props$showAction = props.showAction, showAction = _props$showAction === void 0 ? [] : _props$showAction, onFocus = props.onFocus, onBlur = props.onBlur, onKeyUp = props.onKeyUp, onKeyDown = props.onKeyDown, onMouseDown = props.onMouseDown, restProps = _objectWithoutProperties(props, _excluded$4);
var multiple = isMultiple(mode);
var mergedShowSearch = (showSearch !== void 0 ? showSearch : multiple) || mode === "combobox";
var domProps = _objectSpread2({}, restProps);
DEFAULT_OMIT_PROPS.forEach(function(propName) {
delete domProps[propName];
});
omitDomProps === null || omitDomProps === void 0 || omitDomProps.forEach(function(propName) {
delete domProps[propName];
});
var _React$useState = React__namespace.useState(false), _React$useState2 = _slicedToArray(_React$useState, 2), mobile = _React$useState2[0], setMobile = _React$useState2[1];
React__namespace.useEffect(function() {
setMobile(isMobile());
}, []);
var containerRef = React__namespace.useRef(null);
var selectorDomRef = React__namespace.useRef(null);
var triggerRef = React__namespace.useRef(null);
var selectorRef = React__namespace.useRef(null);
var listRef = React__namespace.useRef(null);
var blurRef = React__namespace.useRef(false);
var _useDelayReset = useDelayReset(), _useDelayReset2 = _slicedToArray(_useDelayReset, 3), mockFocused = _useDelayReset2[0], setMockFocused = _useDelayReset2[1], cancelSetMockFocused = _useDelayReset2[2];
React__namespace.useImperativeHandle(ref, function() {
var _selectorRef$current, _selectorRef$current2;
return {
focus: (_selectorRef$current = selectorRef.current) === null || _selectorRef$current === void 0 ? void 0 : _selectorRef$current.focus,
blur: (_selectorRef$current2 = selectorRef.current) === null || _selectorRef$current2 === void 0 ? void 0 : _selectorRef$current2.blur,
scrollTo: function scrollTo(arg) {
var _listRef$current;
return (_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : _listRef$current.scrollTo(arg);
}
};
});
var mergedSearchValue = React__namespace.useMemo(function() {
var _displayValues$;
if (mode !== "combobox") {
return searchValue;
}
var val = (_displayValues$ = displayValues[0]) === null || _displayValues$ === void 0 ? void 0 : _displayValues$.value;
return typeof val === "string" || typeof val === "number" ? String(val) : "";
}, [searchValue, mode, displayValues]);
var customizeInputElement = mode === "combobox" && typeof getInputElement === "function" && getInputElement() || null;
var customizeRawInputElement = typeof getRawInputElement === "function" && getRawInputElement();
var customizeRawInputRef = useComposeRef(selectorDomRef, customizeRawInputElement === null || customizeRawInputElement === void 0 || (_customizeRawInputEle = customizeRawInputElement.props) === null || _customizeRawInputEle === void 0 ? void 0 : _customizeRawInputEle.ref);
var _React$useState3 = React__namespace.useState(false), _React$useState4 = _slicedToArray(_React$useState3, 2), rendered = _React$useState4[0], setRendered = _React$useState4[1];
useLayoutEffect$1(function() {
setRendered(true);
}, []);
var _useMergedState = useMergedState(false, {
defaultValue: defaultOpen,
value: open
}), _useMergedState2 = _slicedToArray(_useMergedState, 2), innerOpen = _useMergedState2[0], setInnerOpen = _useMergedState2[1];
var mergedOpen = rendered ? innerOpen : false;
var emptyListContent = !notFoundContent && emptyOptions;
if (disabled || emptyListContent && mergedOpen && mode === "combobox") {
mergedOpen = false;
}
var triggerOpen = emptyListContent ? false : mergedOpen;
var onToggleOpen = React__namespace.useCallback(function(newOpen) {
var nextOpen = newOpen !== void 0 ? newOpen : !mergedOpen;
if (!disabled) {
setInnerOpen(nextOpen);
if (mergedOpen !== nextOpen) {
onDropdownVisibleChange === null || onDropdownVisibleChange === void 0 || onDropdownVisibleChange(nextOpen);
}
}
}, [disabled, mergedOpen, setInnerOpen, onDropdownVisibleChange]);
var tokenWithEnter = React__namespace.useMemo(function() {
return (tokenSeparators || []).some(function(tokenSeparator) {
return ["\n", "\r\n"].includes(tokenSeparator);
});
}, [tokenSeparators]);
var onInternalSearch = function onInternalSearch2(searchText, fromTyping, isCompositing) {
var ret = true;
var newSearchText = searchText;
onActiveValueChange === null || onActiveValueChange === void 0 || onActiveValueChange(null);
var patchLabels = isCompositing ? null : getSeparatedContent(searchText, tokenSeparators);
if (mode !== "combobox" && patchLabels) {
newSearchText = "";
onSearchSplit === null || onSearchSplit === void 0 || onSearchSplit(patchLabels);
onToggleOpen(false);
ret = false;
}
if (onSearch && mergedSearchValue !== newSearchText) {
onSearch(newSearchText, {
source: fromTyping ? "typing" : "effect"
});
}
return ret;
};
var onInternalSearchSubmit = function onInternalSearchSubmit2(searchText) {
if (!searchText || !searchText.trim()) {
return;
}
onSearch(searchText, {
source: "submit"
});
};
React__namespace.useEffect(function() {
if (!mergedOpen && !multiple && mode !== "combobox") {
onInternalSearch("", false, false);
}
}, [mergedOpen]);
React__namespace.useEffect(function() {
if (innerOpen && disabled) {
setInnerOpen(false);
}
if (disabled && !blurRef.current) {
setMockFocused(false);
}
}, [disabled]);
var _useLock = useLock(), _useLock2 = _slicedToArray(_useLock, 2), getClearLock = _useLock2[0], setClearLock = _useLock2[1];
var onInternalKeyDown = function onInternalKeyDown2(event) {
var clearLock = getClearLock();
var which = event.which;
if (which === KeyCode.ENTER) {
if (mode !== "combobox") {
event.preventDefault();
}
if (!mergedOpen) {
onToggleOpen(true);
}
}
setClearLock(!!mergedSearchValue);
if (which === KeyCode.BACKSPACE && !clearLock && multiple && !mergedSearchValue && displayValues.length) {
var cloneDisplayValues = _toConsumableArray(displayValues);
var removedDisplayValue = null;
for (var i = cloneDisplayValues.length - 1; i >= 0; i -= 1) {
var current = cloneDisplayValues[i];
if (!current.disabled) {
cloneDisplayValues.splice(i, 1);
removedDisplayValue = current;
break;
}
}
if (removedDisplayValue) {
onDisplayValuesChange(cloneDisplayValues, {
type: "remove",
values: [removedDisplayValue]
});
}
}
for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
rest[_key - 1] = arguments[_key];
}
if (mergedOpen && listRef.current) {
var _listRef$current2;
(_listRef$current2 = listRef.current).onKeyDown.apply(_listRef$current2, [event].concat(rest));
}
onKeyDown === null || onKeyDown === void 0 || onKeyDown.apply(void 0, [event].concat(rest));
};
var onInternalKeyUp = function onInternalKeyUp2(event) {
for (var _len2 = arguments.length, rest = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
rest[_key2 - 1] = arguments[_key2];
}
if (mergedOpen && listRef.current) {
var _listRef$current3;
(_listRef$current3 = listRef.current).onKeyUp.apply(_listRef$current3, [event].concat(rest));
}
onKeyUp === null || onKeyUp === void 0 || onKeyUp.apply(void 0, [event].concat(rest));
};
var onSelectorRemove = function onSelectorRemove2(val) {
var newValues = displayValues.filter(function(i) {
return i !== val;
});
onDisplayValuesChange(newValues, {
type: "remove",
values: [val]
});
};
var focusRef = React__namespace.useRef(false);
var onContainerFocus = function onContainerFocus2() {
setMockFocused(true);
if (!disabled) {
if (onFocus && !focusRef.current) {
onFocus.apply(void 0, arguments);
}
if (showAction.includes("focus")) {
onToggleOpen(true);
}
}
focusRef.current = true;
};
var onContainerBlur = function onContainerBlur2() {
blurRef.current = true;
setMockFocused(false, function() {
focusRef.current = false;
blurRef.current = false;
onToggleOpen(false);
});
if (disabled) {
return;
}
if (mergedSearchValue) {
if (mode === "tags") {
onSearch(mergedSearchValue, {
source: "submit"
});
} else if (mode === "multiple") {
onSearch("", {
source: "blur"
});
}
}
if (onBlur) {
onBlur.apply(void 0, arguments);
}
};
var activeTimeoutIds = [];
React__namespace.useEffect(function() {
return function() {
activeTimeoutIds.forEach(function(timeoutId) {
return clearTimeout(timeoutId);
});
activeTimeoutIds.splice(0, activeTimeoutIds.length);
};
}, []);
var onInternalMouseDown = function onInternalMouseDown2(event) {
var _triggerRef$current;
var target = event.target;
var popupElement = (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : _triggerRef$current.getPopupElement();
if (popupElement && popupElement.contains(target)) {
var timeoutId = setTimeout(function() {
var index2 = activeTimeoutIds.indexOf(timeoutId);
if (index2 !== -1) {
activeTimeoutIds.splice(index2, 1);
}
cancelSetMockFocused();
if (!mobile && !popupElement.contains(document.activeElement)) {
var _selectorRef$current3;
(_selectorRef$current3 = selectorRef.current) === null || _selectorRef$current3 === void 0 || _selectorRef$current3.focus();
}
});
activeTimeoutIds.push(timeoutId);
}
for (var _len3 = arguments.length, restArgs = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
restArgs[_key3 - 1] = arguments[_key3];
}
onMouseDown === null || onMouseDown === void 0 || onMouseDown.apply(void 0, [event].concat(restArgs));
};
var _React$useState5 = React__namespace.useState({}), _React$useState6 = _slicedToArray(_React$useState5, 2), forceUpdate = _React$useState6[1];
function onPopupMouseEnter() {
forceUpdate({});
}
var onTriggerVisibleChange;
if (customizeRawInputElement) {
onTriggerVisibleChange = function onTriggerVisibleChange2(newOpen) {
onToggleOpen(newOpen);
};
}
useSelectTriggerControl(function() {
var _triggerRef$current2;
return [containerRef.current, (_triggerRef$current2 = triggerRef.current) === null || _triggerRef$current2 === void 0 ? void 0 : _triggerRef$current2.getPopupElement()];
}, triggerOpen, onToggleOpen, !!customizeRawInputElement);
var baseSelectContext = React__namespace.useMemo(function() {
return _objectSpread2(_objectSpread2({}, props), {}, {
notFoundContent,
open: mergedOpen,
triggerOpen,
id,
showSearch: mergedShowSearch,
multiple,
toggleOpen: onToggleOpen
});
}, [props, notFoundContent, triggerOpen, mergedOpen, id, mergedShowSearch, multiple, onToggleOpen]);
var showSuffixIcon = !!suffixIcon || loading;
var arrowNode;
if (showSuffixIcon) {
arrowNode = /* @__PURE__ */ React__namespace.createElement(TransBtn, {
className: classNames("".concat(prefixCls, "-arrow"), _defineProperty({}, "".concat(prefixCls, "-arrow-loading"), loading)),
customizeIcon: suffixIcon,
customizeIconProps: {
loading,
searchValue: mergedSearchValue,
open: mergedOpen,
focused: mockFocused,
showSearch: mergedShowSearch
}
});
}
var onClearMouseDown = function onClearMouseDown2() {
var _selectorRef$current4;
onClear === null || onClear === void 0 || onClear();
(_selectorRef$current4 = selectorRef.current) === null || _selectorRef$current4 === void 0 || _selectorRef$current4.focus();
onDisplayValuesChange([], {
type: "clear",
values: displayValues
});
onInternalSearch("", false, false);
};
var _useAllowClear = useAllowClear(prefixCls, onClearMouseDown, displayValues, allowClear, clearIcon, disabled, mergedSearchValue, mode), mergedAllowClear = _useAllowClear.allowClear, clearNode = _useAllowClear.clearIcon;
var optionList = /* @__PURE__ */ React__namespace.createElement(OptionList3, {
ref: listRef
});
var mergedClassName = classNames(prefixCls, className, (_classNames2 = {}, _defineProperty(_classNames2, "".concat(prefixCls, "-focused"), mockFocused), _defineProperty(_classNames2, "".concat(prefixCls, "-multiple"), multiple), _defineProperty(_classNames2, "".concat(prefixCls, "-single"), !multiple), _defineProperty(_classNames2, "".concat(prefixCls, "-allow-clear"), allowClear), _defineProperty(_classNames2, "".concat(prefixCls, "-show-arrow"), showSuffixIcon), _defineProperty(_classNames2, "".concat(prefixCls, "-disabled"), disabled), _defineProperty(_classNames2, "".concat(prefixCls, "-loading"), loading), _defineProperty(_classNames2, "".concat(prefixCls, "-open"), mergedOpen), _defineProperty(_classNames2, "".concat(prefixCls, "-customize-input"), customizeInputElement), _defineProperty(_classNames2, "".concat(prefixCls, "-show-search"), mergedShowSearch), _classNames2));
var selectorNode = /* @__PURE__ */ React__namespace.createElement(RefSelectTrigger, {
ref: triggerRef,
disabled,
prefixCls,
visible: triggerOpen,
popupElement: optionList,
animation,
transitionName,
dropdownStyle,
dropdownClassName,
direction,
dropdownMatchSelectWidth,
dropdownRender,
dropdownAlign,
placement,
builtinPlacements,
getPopupContainer,
empty: emptyOptions,
getTriggerDOMNode: function getTriggerDOMNode() {
return selectorDomRef.current;
},
onPopupVisibleChange: onTriggerVisibleChange,
onPopupMouseEnter
}, customizeRawInputElement ? /* @__PURE__ */ React__namespace.cloneElement(customizeRawInputElement, {
ref: customizeRawInputRef
}) : /* @__PURE__ */ React__namespace.createElement(ForwardSelector, _extends$1({}, props, {
domRef: selectorDomRef,
prefixCls,
inputElement: customizeInputElement,
ref: selectorRef,
id,
showSearch: mergedShowSearch,
autoClearSearchValue,
mode,
activeDescendantId,
tagRender,
values: displayValues,
open: mergedOpen,
onToggleOpen,
activeValue,
searchValue: mergedSearchValue,
onSearch: onInternalSearch,
onSearchSubmit: onInternalSearchSubmit,
onRemove: onSelectorRemove,
tokenWithEnter
})));
var renderNode;
if (customizeRawInputElement) {
renderNode = selectorNode;
} else {
renderNode = /* @__PURE__ */ React__namespace.createElement("div", _extends$1({
className: mergedClassName
}, domProps, {
ref: containerRef,
onMouseDown: onInternalMouseDown,
onKeyDown: onInternalKeyDown,
onKeyUp: onInternalKeyUp,
onFocus: onContainerFocus,
onBlur: onContainerBlur
}), mockFocused && !mergedOpen && /* @__PURE__ */ React__namespace.createElement("span", {
style: {
width: 0,
height: 0,
position: "absolute",
overflow: "hidden",
opacity: 0
},
"aria-live": "polite"
}, "".concat(displayValues.map(function(_ref) {
var label = _ref.label, value = _ref.value;
return ["number", "string"].includes(_typeof(label)) ? label : value;
}).join(", "))), selectorNode, arrowNode, mergedAllowClear && clearNode);
}
return /* @__PURE__ */ React__namespace.createElement(BaseSelectContext.Provider, {
value: baseSelectContext
}, renderNode);
});
var OptGroup = function OptGroup2() {
return null;
};
OptGroup.isSelectOptGroup = true;
var Option = function Option2() {
return null;
};
Option.isSelectOption = true;
var Filler = /* @__PURE__ */ React__namespace.forwardRef(function(_ref, ref) {
var height = _ref.height, offsetY = _ref.offsetY, offsetX = _ref.offsetX, children = _ref.children, prefixCls = _ref.prefixCls, onInnerResize = _ref.onInnerResize, innerProps = _ref.innerProps, rtl = _ref.rtl, extra = _ref.extra;
var outerStyle = {};
var innerStyle = {
display: "flex",
flexDirection: "column"
};
if (offsetY !== void 0) {
var _objectSpread2$1;
outerStyle = {
height,
position: "relative",
overflow: "hidden"
};
innerStyle = _objectSpread2(_objectSpread2({}, innerStyle), {}, (_objectSpread2$1 = {
transform: "translateY(".concat(offsetY, "px)")
}, _defineProperty(_objectSpread2$1, rtl ? "marginRight" : "marginLeft", -offsetX), _defineProperty(_objectSpread2$1, "position", "absolute"), _defineProperty(_objectSpread2$1, "left", 0), _defineProperty(_objectSpread2$1, "right", 0), _defineProperty(_objectSpread2$1, "top", 0), _objectSpread2$1));
}
return /* @__PURE__ */ React__namespace.createElement("div", {
style: outerStyle
}, /* @__PURE__ */ React__namespace.createElement(RefResizeObserver, {
onResize: function onResize2(_ref2) {
var offsetHeight = _ref2.offsetHeight;
if (offsetHeight && onInnerResize) {
onInnerResize();
}
}
}, /* @__PURE__ */ React__namespace.createElement("div", _extends$1({
style: innerStyle,
className: classNames(_defineProperty({}, "".concat(prefixCls, "-holder-inner"), prefixCls)),
ref
}, innerProps), children, extra)));
});
Filler.displayName = "Filler";
function getPageXY(e2, horizontal) {
var obj = "touches" in e2 ? e2.touches[0] : e2;
return obj[horizontal ? "pageX" : "pageY"];
}
var ScrollBar = /* @__PURE__ */ React__namespace.forwardRef(function(props, ref) {
var _classNames;
var prefixCls = props.prefixCls, rtl = props.rtl, scrollOffset = props.scrollOffset, scrollRange = props.scrollRange, onStartMove = props.onStartMove, onStopMove = props.onStopMove, onScroll = props.onScroll, horizontal = props.horizontal, spinSize = props.spinSize, containerSize = props.containerSize, style2 = props.style, propsThumbStyle = props.thumbStyle;
var _React$useState = React__namespace.useState(false), _React$useState2 = _slicedToArray(_React$useState, 2), dragging = _React$useState2[0], setDragging = _React$useState2[1];
var _React$useState3 = React__namespace.useState(null), _React$useState4 = _slicedToArray(_React$useState3, 2), pageXY = _React$useState4[0], setPageXY = _React$useState4[1];
var _React$useState5 = React__namespace.useState(null), _React$useState6 = _slicedToArray(_React$useState5, 2), startTop = _React$useState6[0], setStartTop = _React$useState6[1];
var isLTR = !rtl;
var scrollbarRef = React__namespace.useRef();
var thumbRef = React__namespace.useRef();
var _React$useState7 = React__namespace.useState(false), _React$useState8 = _slicedToArray(_React$useState7, 2), visible = _React$useState8[0], setVisible = _React$useState8[1];
var visibleTimeoutRef = React__namespace.useRef();
var delayHidden = function delayHidden2() {
clearTimeout(visibleTimeoutRef.current);
setVisible(true);
visibleTimeoutRef.current = setTimeout(function() {
setVisible(false);
}, 3e3);
};
var enableScrollRange = scrollRange - containerSize || 0;
var enableOffsetRange = containerSize - spinSize || 0;
var canScroll = enableScrollRange > 0;
var top = React__namespace.useMemo(function() {
if (scrollOffset === 0 || enableScrollRange === 0) {
return 0;
}
var ptg = scrollOffset / enableScrollRange;
return ptg * enableOffsetRange;
}, [scrollOffset, enableScrollRange, enableOffsetRange]);
var onContainerMouseDown = function onContainerMouseDown2(e2) {
e2.stopPropagation();
e2.preventDefault();
};
var stateRef = React__namespace.useRef({
top,
dragging,
pageY: pageXY,
startTop
});
stateRef.current = {
top,
dragging,
pageY: pageXY,
startTop
};
var onThumbMouseDown = function onThumbMouseDown2(e2) {
setDragging(true);
setPageXY(getPageXY(e2, horizontal));
setStartTop(stateRef.current.top);
onStartMove();
e2.stopPropagation();
e2.preventDefault();
};
React__namespace.useEffect(function() {
var onScrollbarTouchStart = function onScrollbarTouchStart2(e2) {
e2.preventDefault();
};
var scrollbarEle = scrollbarRef.current;
var thumbEle = thumbRef.current;
scrollbarEle.addEventListener("touchstart", onScrollbarTouchStart);
thumbEle.addEventListener("touchstart", onThumbMouseDown);
return function() {
scrollbarEle.removeEventListener("touchstart", onScrollbarTouchStart);
thumbEle.removeEventListener("touchstart", onThumbMouseDown);
};
}, []);
var enableScrollRangeRef = React__namespace.useRef();
enableScrollRangeRef.current = enableScrollRange;
var enableOffsetRangeRef = React__namespace.useRef();
enableOffsetRangeRef.current = enableOffsetRange;
React__namespace.useEffect(function() {
if (dragging) {
var moveRafId;
var onMouseMove = function onMouseMove2(e2) {
var _stateRef$current = stateRef.current, stateDragging = _stateRef$current.dragging, statePageY = _stateRef$current.pageY, stateStartTop = _stateRef$current.startTop;
wrapperRaf.cancel(moveRafId);
if (stateDragging) {
var offset = getPageXY(e2, horizontal) - statePageY;
var newTop = stateStartTop;
if (!isLTR && horizontal) {
newTop -= offset;
} else {
newTop += offset;
}
var tmpEnableScrollRange = enableScrollRangeRef.current;
var tmpEnableOffsetRange = enableOffsetRangeRef.current;
var ptg = tmpEnableOffsetRange ? newTop / tmpEnableOffsetRange : 0;
var newScrollTop = Math.ceil(ptg * tmpEnableScrollRange);
newScrollTop = Math.max(newScrollTop, 0);
newScrollTop = Math.min(newScrollTop, tmpEnableScrollRange);
moveRafId = wrapperRaf(function() {
onScroll(newScrollTop, horizontal);
});
}
};
var onMouseUp = function onMouseUp2() {
setDragging(false);
onStopMove();
};
window.addEventListener("mousemove", onMouseMove);
window.addEventListener("touchmove", onMouseMove);
window.addEventListener("mouseup", onMouseUp);
window.addEventListener("touchend", onMouseUp);
return function() {
window.removeEventListener("mousemove", onMouseMove);
window.removeEventListener("touchmove", onMouseMove);
window.removeEventListener("mouseup", onMouseUp);
window.removeEventListener("touchend", onMouseUp);
wrapperRaf.cancel(moveRafId);
};
}
}, [dragging]);
React__namespace.useEffect(function() {
delayHidden();
}, [scrollOffset]);
React__namespace.useImperativeHandle(ref, function() {
return {
delayHidden
};
});
var scrollbarPrefixCls = "".concat(prefixCls, "-scrollbar");
var containerStyle = {
position: "absolute",
visibility: visible && canScroll ? null : "hidden"
};
var thumbStyle = {
position: "absolute",
background: "rgba(0, 0, 0, 0.5)",
borderRadius: 99,
cursor: "pointer",
userSelect: "none"
};
if (horizontal) {
containerStyle.height = 8;
containerStyle.left = 0;
containerStyle.right = 0;
containerStyle.bottom = 0;
thumbStyle.height = "100%";
thumbStyle.width = spinSize;
if (isLTR) {
thumbStyle.left = top;
} else {
thumbStyle.right = top;
}
} else {
containerStyle.width = 8;
containerStyle.top = 0;
containerStyle.bottom = 0;
if (isLTR) {
containerStyle.right = 0;
} else {
containerStyle.left = 0;
}
thumbStyle.width = "100%";
thumbStyle.height = spinSize;
thumbStyle.top = top;
}
return /* @__PURE__ */ React__namespace.createElement("div", {
ref: scrollbarRef,
className: classNames(scrollbarPrefixCls, (_classNames = {}, _defineProperty(_classNames, "".concat(scrollbarPrefixCls, "-horizontal"), horizontal), _defineProperty(_classNames, "".concat(scrollbarPrefixCls, "-vertical"), !horizontal), _defineProperty(_classNames, "".concat(scrollbarPrefixCls, "-visible"), visible), _classNames)),
style: _objectSpread2(_objectSpread2({}, containerStyle), style2),
onMouseDown: onContainerMouseDown,
onMouseMove: delayHidden
}, /* @__PURE__ */ React__namespace.createElement("div", {
ref: thumbRef,
className: classNames("".concat(scrollbarPrefixCls, "-thumb"), _defineProperty({}, "".concat(scrollbarPrefixCls, "-thumb-moving"), dragging)),
style: _objectSpread2(_objectSpread2({}, thumbStyle), propsThumbStyle),
onMouseDown: onThumbMouseDown
}));
});
function Item(_ref) {
var children = _ref.children, setRef = _ref.setRef;
var refFunc = React__namespace.useCallback(function(node2) {
setRef(node2);
}, []);
return /* @__PURE__ */ React__namespace.cloneElement(children, {
ref: refFunc
});
}
function useChildren(list, startIndex, endIndex, scrollWidth, setNodeRef, renderFunc, _ref) {
var getKey2 = _ref.getKey;
return list.slice(startIndex, endIndex + 1).map(function(item, index2) {
var eleIndex = startIndex + index2;
var node2 = renderFunc(item, eleIndex, {
style: {
width: scrollWidth
}
});
var key = getKey2(item);
return /* @__PURE__ */ React__namespace.createElement(Item, {
key,
setRef: function setRef(ele) {
return setNodeRef(item, ele);
}
}, node2);
});
}
var CacheMap = /* @__PURE__ */ function() {
function CacheMap2() {
_classCallCheck(this, CacheMap2);
this.maps = void 0;
this.id = 0;
this.maps = /* @__PURE__ */ Object.create(null);
}
_createClass(CacheMap2, [{
key: "set",
value: function set2(key, value) {
this.maps[key] = value;
this.id += 1;
}
}, {
key: "get",
value: function get2(key) {
return this.maps[key];
}
}]);
return CacheMap2;
}();
function useHeights(getKey2, onItemAdd, onItemRemove) {
var _React$useState = React__namespace.useState(0), _React$useState2 = _slicedToArray(_React$useState, 2), updatedMark = _React$useState2[0], setUpdatedMark = _React$useState2[1];
var instanceRef = React.useRef(/* @__PURE__ */ new Map());
var heightsRef = React.useRef(new CacheMap());
var collectRafRef = React.useRef();
function cancelRaf() {
wrapperRaf.cancel(collectRafRef.current);
}
function collectHeight() {
var sync = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false;
cancelRaf();
var doCollect = function doCollect2() {
instanceRef.current.forEach(function(element, key) {
if (element && element.offsetParent) {
var htmlElement = findDOMNode(element);
var offsetHeight = htmlElement.offsetHeight;
if (heightsRef.current.get(key) !== offsetHeight) {
heightsRef.current.set(key, htmlElement.offsetHeight);
}
}
});
setUpdatedMark(function(c2) {
return c2 + 1;
});
};
if (sync) {
doCollect();
} else {
collectRafRef.current = wrapperRaf(doCollect);
}
}
function setInstanceRef(item, instance) {
var key = getKey2(item);
var origin = instanceRef.current.get(key);
if (instance) {
instanceRef.current.set(key, instance);
collectHeight();
} else {
instanceRef.current.delete(key);
}
if (!origin !== !instance) {
if (instance) {
onItemAdd === null || onItemAdd === void 0 ? void 0 : onItemAdd(item);
} else {
onItemRemove === null || onItemRemove === void 0 ? void 0 : onItemRemove(item);
}
}
}
React.useEffect(function() {
return cancelRaf;
}, []);
return [setInstanceRef, collectHeight, heightsRef.current, updatedMark];
}
var MAX_TIMES = 10;
function useScrollTo(containerRef, data, heights, itemHeight, getKey2, collectHeight, syncScrollTop, triggerFlash) {
var scrollRef = React__namespace.useRef();
var _React$useState = React__namespace.useState(null), _React$useState2 = _slicedToArray(_React$useState, 2), syncState = _React$useState2[0], setSyncState = _React$useState2[1];
useLayoutEffect$1(function() {
if (syncState && syncState.times < MAX_TIMES) {
if (!containerRef.current) {
setSyncState(function(ori) {
return _objectSpread2({}, ori);
});
return;
}
collectHeight();
var targetAlign = syncState.targetAlign, originAlign = syncState.originAlign, index2 = syncState.index, offset = syncState.offset;
var height = containerRef.current.clientHeight;
var needCollectHeight = false;
var newTargetAlign = targetAlign;
var targetTop = null;
if (height) {
var mergedAlign = targetAlign || originAlign;
var stackTop = 0;
var itemTop = 0;
var itemBottom = 0;
var maxLen = Math.min(data.length - 1, index2);
for (var i = 0; i <= maxLen; i += 1) {
var key = getKey2(data[i]);
itemTop = stackTop;
var cacheHeight = heights.get(key);
itemBottom = itemTop + (cacheHeight === void 0 ? itemHeight : cacheHeight);
stackTop = itemBottom;
}
var leftHeight = mergedAlign === "top" ? offset : height - offset;
for (var _i = maxLen; _i >= 0; _i -= 1) {
var _key = getKey2(data[_i]);
var _cacheHeight = heights.get(_key);
if (_cacheHeight === void 0) {
needCollectHeight = true;
break;
}
leftHeight -= _cacheHeight;
if (leftHeight <= 0) {
break;
}
}
switch (mergedAlign) {
case "top":
targetTop = itemTop - offset;
break;
case "bottom":
targetTop = itemBottom - height + offset;
break;
default: {
var scrollTop = containerRef.current.scrollTop;
var scrollBottom = scrollTop + height;
if (itemTop < scrollTop) {
newTargetAlign = "top";
} else if (itemBottom > scrollBottom) {
newTargetAlign = "bottom";
}
}
}
if (targetTop !== null) {
syncScrollTop(targetTop);
}
if (targetTop !== syncState.lastTop) {
needCollectHeight = true;
}
}
if (needCollectHeight) {
setSyncState(_objectSpread2(_objectSpread2({}, syncState), {}, {
times: syncState.times + 1,
targetAlign: newTargetAlign,
lastTop: targetTop
}));
}
}
}, [syncState, containerRef.current]);
return function(arg) {
if (arg === null || arg === void 0) {
triggerFlash();
return;
}
wrapperRaf.cancel(scrollRef.current);
if (typeof arg === "number") {
syncScrollTop(arg);
} else if (arg && _typeof(arg) === "object") {
var index2;
var align = arg.align;
if ("index" in arg) {
index2 = arg.index;
} else {
index2 = data.findIndex(function(item) {
return getKey2(item) === arg.key;
});
}
var _arg$offset = arg.offset, offset = _arg$offset === void 0 ? 0 : _arg$offset;
setSyncState({
times: 0,
index: index2,
offset,
originAlign: align
});
}
};
}
function findListDiffIndex(originList, targetList, getKey2) {
var originLen = originList.length;
var targetLen = targetList.length;
var shortList;
var longList;
if (originLen === 0 && targetLen === 0) {
return null;
}
if (originLen < targetLen) {
shortList = originList;
longList = targetList;
} else {
shortList = targetList;
longList = originList;
}
var notExistKey = {
__EMPTY_ITEM__: true
};
function getItemKey(item) {
if (item !== void 0) {
return getKey2(item);
}
return notExistKey;
}
var diffIndex = null;
var multiple = Math.abs(originLen - targetLen) !== 1;
for (var i = 0; i < longList.length; i += 1) {
var shortKey = getItemKey(shortList[i]);
var longKey = getItemKey(longList[i]);
if (shortKey !== longKey) {
diffIndex = i;
multiple = multiple || shortKey !== getItemKey(longList[i + 1]);
break;
}
}
return diffIndex === null ? null : {
index: diffIndex,
multiple
};
}
function useDiffItem(data, getKey2, onDiff) {
var _React$useState = React__namespace.useState(data), _React$useState2 = _slicedToArray(_React$useState, 2), prevData = _React$useState2[0], setPrevData = _React$useState2[1];
var _React$useState3 = React__namespace.useState(null), _React$useState4 = _slicedToArray(_React$useState3, 2), diffItem = _React$useState4[0], setDiffItem = _React$useState4[1];
React__namespace.useEffect(function() {
var diff = findListDiffIndex(prevData || [], data || [], getKey2);
if ((diff === null || diff === void 0 ? void 0 : diff.index) !== void 0) {
onDiff === null || onDiff === void 0 ? void 0 : onDiff(diff.index);
setDiffItem(data[diff.index]);
}
setPrevData(data);
}, [data]);
return [diffItem];
}
var isFF = (typeof navigator === "undefined" ? "undefined" : _typeof(navigator)) === "object" && /Firefox/i.test(navigator.userAgent);
const useOriginScroll = function(isScrollAtTop, isScrollAtBottom) {
var lockRef = React.useRef(false);
var lockTimeoutRef = React.useRef(null);
function lockScroll() {
clearTimeout(lockTimeoutRef.current);
lockRef.current = true;
lockTimeoutRef.current = setTimeout(function() {
lockRef.current = false;
}, 50);
}
var scrollPingRef = React.useRef({
top: isScrollAtTop,
bottom: isScrollAtBottom
});
scrollPingRef.current.top = isScrollAtTop;
scrollPingRef.current.bottom = isScrollAtBottom;
return function(deltaY) {
var smoothOffset = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
var originScroll = (
// Pass origin wheel when on the top
deltaY < 0 && scrollPingRef.current.top || // Pass origin wheel when on the bottom
deltaY > 0 && scrollPingRef.current.bottom
);
if (smoothOffset && originScroll) {
clearTimeout(lockTimeoutRef.current);
lockRef.current = false;
} else if (!originScroll || lockRef.current) {
lockScroll();
}
return !lockRef.current && originScroll;
};
};
function useFrameWheel(inVirtual, isScrollAtTop, isScrollAtBottom, horizontalScroll, onWheelDelta) {
var offsetRef = React.useRef(0);
var nextFrameRef = React.useRef(null);
var wheelValueRef = React.useRef(null);
var isMouseScrollRef = React.useRef(false);
var originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom);
function onWheelY(event, deltaY) {
wrapperRaf.cancel(nextFrameRef.current);
offsetRef.current += deltaY;
wheelValueRef.current = deltaY;
if (originScroll(deltaY))
return;
if (!isFF) {
event.preventDefault();
}
nextFrameRef.current = wrapperRaf(function() {
var patchMultiple = isMouseScrollRef.current ? 10 : 1;
onWheelDelta(offsetRef.current * patchMultiple);
offsetRef.current = 0;
});
}
function onWheelX(event, deltaX) {
onWheelDelta(deltaX, true);
if (!isFF) {
event.preventDefault();
}
}
var wheelDirectionRef = React.useRef(null);
var wheelDirectionCleanRef = React.useRef(null);
function onWheel(event) {
if (!inVirtual)
return;
wrapperRaf.cancel(wheelDirectionCleanRef.current);
wheelDirectionCleanRef.current = wrapperRaf(function() {
wheelDirectionRef.current = null;
}, 2);
var deltaX = event.deltaX, deltaY = event.deltaY, shiftKey = event.shiftKey;
var mergedDeltaX = deltaX;
var mergedDeltaY = deltaY;
if (wheelDirectionRef.current === "sx" || !wheelDirectionRef.current && (shiftKey || false) && deltaY && !deltaX) {
mergedDeltaX = deltaY;
mergedDeltaY = 0;
wheelDirectionRef.current = "sx";
}
var absX = Math.abs(mergedDeltaX);
var absY = Math.abs(mergedDeltaY);
if (wheelDirectionRef.current === null) {
wheelDirectionRef.current = horizontalScroll && absX > absY ? "x" : "y";
}
if (wheelDirectionRef.current === "y") {
onWheelY(event, mergedDeltaY);
} else {
onWheelX(event, mergedDeltaX);
}
}
function onFireFoxScroll(event) {
if (!inVirtual)
return;
isMouseScrollRef.current = event.detail === wheelValueRef.current;
}
return [onWheel, onFireFoxScroll];
}
var SMOOTH_PTG = 14 / 15;
function useMobileTouchMove(inVirtual, listRef, callback) {
var touchedRef = React.useRef(false);
var touchYRef = React.useRef(0);
var elementRef = React.useRef(null);
var intervalRef = React.useRef(null);
var cleanUpEvents;
var onTouchMove = function onTouchMove2(e2) {
if (touchedRef.current) {
var currentY = Math.ceil(e2.touches[0].pageY);
var offsetY = touchYRef.current - currentY;
touchYRef.current = currentY;
if (callback(offsetY)) {
e2.preventDefault();
}
clearInterval(intervalRef.current);
intervalRef.current = setInterval(function() {
offsetY *= SMOOTH_PTG;
if (!callback(offsetY, true) || Math.abs(offsetY) <= 0.1) {
clearInterval(intervalRef.current);
}
}, 16);
}
};
var onTouchEnd = function onTouchEnd2() {
touchedRef.current = false;
cleanUpEvents();
};
var onTouchStart = function onTouchStart2(e2) {
cleanUpEvents();
if (e2.touches.length === 1 && !touchedRef.current) {
touchedRef.current = true;
touchYRef.current = Math.ceil(e2.touches[0].pageY);
elementRef.current = e2.target;
elementRef.current.addEventListener("touchmove", onTouchMove);
elementRef.current.addEventListener("touchend", onTouchEnd);
}
};
cleanUpEvents = function cleanUpEvents2() {
if (elementRef.current) {
elementRef.current.removeEventListener("touchmove", onTouchMove);
elementRef.current.removeEventListener("touchend", onTouchEnd);
}
};
useLayoutEffect$1(function() {
if (inVirtual) {
listRef.current.addEventListener("touchstart", onTouchStart);
}
return function() {
var _listRef$current;
(_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : _listRef$current.removeEventListener("touchstart", onTouchStart);
cleanUpEvents();
clearInterval(intervalRef.current);
};
}, [inVirtual]);
}
var MIN_SIZE = 20;
function getSpinSize() {
var containerSize = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;
var scrollRange = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
var baseSize = containerSize / scrollRange * 100;
if (isNaN(baseSize)) {
baseSize = 0;
}
baseSize = Math.max(baseSize, MIN_SIZE);
baseSize = Math.min(baseSize, containerSize / 2);
return Math.floor(baseSize);
}
function useGetSize(mergedData, getKey2, heights, itemHeight) {
var _React$useMemo = React__namespace.useMemo(function() {
return [/* @__PURE__ */ new Map(), []];
}, [mergedData, heights.id, itemHeight]), _React$useMemo2 = _slicedToArray(_React$useMemo, 2), key2Index = _React$useMemo2[0], bottomList = _React$useMemo2[1];
var getSize = function getSize2(startKey) {
var endKey = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : startKey;
var startIndex = key2Index.get(startKey);
var endIndex = key2Index.get(endKey);
if (startIndex === void 0 || endIndex === void 0) {
var dataLen = mergedData.length;
for (var i = bottomList.length; i < dataLen; i += 1) {
var _heights$get;
var item = mergedData[i];
var key = getKey2(item);
key2Index.set(key, i);
var cacheHeight = (_heights$get = heights.get(key)) !== null && _heights$get !== void 0 ? _heights$get : itemHeight;
bottomList[i] = (bottomList[i - 1] || 0) + cacheHeight;
if (key === startKey) {
startIndex = i;
}
if (key === endKey) {
endIndex = i;
}
if (startIndex !== void 0 && endIndex !== void 0) {
break;
}
}
}
return {
top: bottomList[startIndex - 1] || 0,
bottom: bottomList[endIndex]
};
};
return getSize;
}
var _excluded$3 = ["prefixCls", "className", "height", "itemHeight", "fullHeight", "style", "data", "children", "itemKey", "virtual", "direction", "scrollWidth", "component", "onScroll", "onVirtualScroll", "onVisibleChange", "innerProps", "extraRender", "styles"];
var EMPTY_DATA = [];
var ScrollStyle = {
overflowY: "auto",
overflowAnchor: "none"
};
function RawList(props, ref) {
var _props$prefixCls = props.prefixCls, prefixCls = _props$prefixCls === void 0 ? "rc-virtual-list" : _props$prefixCls, className = props.className, height = props.height, itemHeight = props.itemHeight, _props$fullHeight = props.fullHeight, fullHeight = _props$fullHeight === void 0 ? true : _props$fullHeight, style2 = props.style, data = props.data, children = props.children, itemKey2 = props.itemKey, virtual = props.virtual, direction = props.direction, scrollWidth = props.scrollWidth, _props$component = props.component, Component = _props$component === void 0 ? "div" : _props$component, onScroll = props.onScroll, onVirtualScroll = props.onVirtualScroll, onVisibleChange = props.onVisibleChange, innerProps = props.innerProps, extraRender = props.extraRender, styles = props.styles, restProps = _objectWithoutProperties(props, _excluded$3);
var useVirtual = !!(virtual !== false && height && itemHeight);
var inVirtual = useVirtual && data && (itemHeight * data.length > height || !!scrollWidth);
var isRTL = direction === "rtl";
var mergedClassName = classNames(prefixCls, _defineProperty({}, "".concat(prefixCls, "-rtl"), isRTL), className);
var mergedData = data || EMPTY_DATA;
var componentRef = React.useRef();
var fillerInnerRef = React.useRef();
var _useState = React.useState(0), _useState2 = _slicedToArray(_useState, 2), offsetTop = _useState2[0], setOffsetTop = _useState2[1];
var _useState3 = React.useState(0), _useState4 = _slicedToArray(_useState3, 2), offsetLeft = _useState4[0], setOffsetLeft = _useState4[1];
var _useState5 = React.useState(false), _useState6 = _slicedToArray(_useState5, 2), scrollMoving = _useState6[0], setScrollMoving = _useState6[1];
var onScrollbarStartMove = function onScrollbarStartMove2() {
setScrollMoving(true);
};
var onScrollbarStopMove = function onScrollbarStopMove2() {
setScrollMoving(false);
};
var getKey2 = React__namespace.useCallback(function(item) {
if (typeof itemKey2 === "function") {
return itemKey2(item);
}
return item === null || item === void 0 ? void 0 : item[itemKey2];
}, [itemKey2]);
var sharedConfig = {
getKey: getKey2
};
function syncScrollTop(newTop) {
setOffsetTop(function(origin) {
var value;
if (typeof newTop === "function") {
value = newTop(origin);
} else {
value = newTop;
}
var alignedTop = keepInRange(value);
componentRef.current.scrollTop = alignedTop;
return alignedTop;
});
}
var rangeRef = React.useRef({
start: 0,
end: mergedData.length
});
var diffItemRef = React.useRef();
var _useDiffItem = useDiffItem(mergedData, getKey2), _useDiffItem2 = _slicedToArray(_useDiffItem, 1), diffItem = _useDiffItem2[0];
diffItemRef.current = diffItem;
var _useHeights = useHeights(getKey2, null, null), _useHeights2 = _slicedToArray(_useHeights, 4), setInstanceRef = _useHeights2[0], collectHeight = _useHeights2[1], heights = _useHeights2[2], heightUpdatedMark = _useHeights2[3];
var _React$useMemo = React__namespace.useMemo(function() {
if (!useVirtual) {
return {
scrollHeight: void 0,
start: 0,
end: mergedData.length - 1,
offset: void 0
};
}
if (!inVirtual) {
var _fillerInnerRef$curre;
return {
scrollHeight: ((_fillerInnerRef$curre = fillerInnerRef.current) === null || _fillerInnerRef$curre === void 0 ? void 0 : _fillerInnerRef$curre.offsetHeight) || 0,
start: 0,
end: mergedData.length - 1,
offset: void 0
};
}
var itemTop = 0;
var startIndex;
var startOffset;
var endIndex;
var dataLen = mergedData.length;
for (var i = 0; i < dataLen; i += 1) {
var item = mergedData[i];
var key = getKey2(item);
var cacheHeight = heights.get(key);
var currentItemBottom = itemTop + (cacheHeight === void 0 ? itemHeight : cacheHeight);
if (currentItemBottom >= offsetTop && startIndex === void 0) {
startIndex = i;
startOffset = itemTop;
}
if (currentItemBottom > offsetTop + height && endIndex === void 0) {
endIndex = i;
}
itemTop = currentItemBottom;
}
if (startIndex === void 0) {
startIndex = 0;
startOffset = 0;
endIndex = Math.ceil(height / itemHeight);
}
if (endIndex === void 0) {
endIndex = mergedData.length - 1;
}
endIndex = Math.min(endIndex + 1, mergedData.length - 1);
return {
scrollHeight: itemTop,
start: startIndex,
end: endIndex,
offset: startOffset
};
}, [inVirtual, useVirtual, offsetTop, mergedData, heightUpdatedMark, height]), scrollHeight = _React$useMemo.scrollHeight, start = _React$useMemo.start, end = _React$useMemo.end, fillerOffset = _React$useMemo.offset;
rangeRef.current.start = start;
rangeRef.current.end = end;
var _React$useState = React__namespace.useState({
width: 0,
height
}), _React$useState2 = _slicedToArray(_React$useState, 2), size = _React$useState2[0], setSize = _React$useState2[1];
var onHolderResize = function onHolderResize2(sizeInfo) {
setSize({
width: sizeInfo.width || sizeInfo.offsetWidth,
height: sizeInfo.height || sizeInfo.offsetHeight
});
};
var verticalScrollBarRef = React.useRef();
var horizontalScrollBarRef = React.useRef();
var horizontalScrollBarSpinSize = React__namespace.useMemo(function() {
return getSpinSize(size.width, scrollWidth);
}, [size.width, scrollWidth]);
var verticalScrollBarSpinSize = React__namespace.useMemo(function() {
return getSpinSize(size.height, scrollHeight);
}, [size.height, scrollHeight]);
var maxScrollHeight = scrollHeight - height;
var maxScrollHeightRef = React.useRef(maxScrollHeight);
maxScrollHeightRef.current = maxScrollHeight;
function keepInRange(newScrollTop) {
var newTop = newScrollTop;
if (!Number.isNaN(maxScrollHeightRef.current)) {
newTop = Math.min(newTop, maxScrollHeightRef.current);
}
newTop = Math.max(newTop, 0);
return newTop;
}
var isScrollAtTop = offsetTop <= 0;
var isScrollAtBottom = offsetTop >= maxScrollHeight;
var originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom);
var getVirtualScrollInfo = function getVirtualScrollInfo2() {
return {
x: isRTL ? -offsetLeft : offsetLeft,
y: offsetTop
};
};
var lastVirtualScrollInfoRef = React.useRef(getVirtualScrollInfo());
var triggerScroll = useEvent(function() {
if (onVirtualScroll) {
var nextInfo = getVirtualScrollInfo();
if (lastVirtualScrollInfoRef.current.x !== nextInfo.x || lastVirtualScrollInfoRef.current.y !== nextInfo.y) {
onVirtualScroll(nextInfo);
lastVirtualScrollInfoRef.current = nextInfo;
}
}
});
function onScrollBar(newScrollOffset, horizontal) {
var newOffset = newScrollOffset;
if (horizontal) {
ReactDOM__default.flushSync(function() {
setOffsetLeft(newOffset);
});
triggerScroll();
} else {
syncScrollTop(newOffset);
}
}
function onFallbackScroll(e2) {
var newScrollTop = e2.currentTarget.scrollTop;
if (newScrollTop !== offsetTop) {
syncScrollTop(newScrollTop);
}
onScroll === null || onScroll === void 0 ? void 0 : onScroll(e2);
triggerScroll();
}
var keepInHorizontalRange = function keepInHorizontalRange2(nextOffsetLeft) {
var tmpOffsetLeft = nextOffsetLeft;
var max2 = scrollWidth - size.width;
tmpOffsetLeft = Math.max(tmpOffsetLeft, 0);
tmpOffsetLeft = Math.min(tmpOffsetLeft, max2);
return tmpOffsetLeft;
};
var onWheelDelta = useEvent(function(offsetXY, fromHorizontal) {
if (fromHorizontal) {
ReactDOM__default.flushSync(function() {
setOffsetLeft(function(left) {
var nextOffsetLeft = left + (isRTL ? -offsetXY : offsetXY);
return keepInHorizontalRange(nextOffsetLeft);
});
});
triggerScroll();
} else {
syncScrollTop(function(top) {
var newTop = top + offsetXY;
return newTop;
});
}
});
var _useFrameWheel = useFrameWheel(useVirtual, isScrollAtTop, isScrollAtBottom, !!scrollWidth, onWheelDelta), _useFrameWheel2 = _slicedToArray(_useFrameWheel, 2), onRawWheel = _useFrameWheel2[0], onFireFoxScroll = _useFrameWheel2[1];
useMobileTouchMove(useVirtual, componentRef, function(deltaY, smoothOffset) {
if (originScroll(deltaY, smoothOffset)) {
return false;
}
onRawWheel({
preventDefault: function preventDefault() {
},
deltaY
});
return true;
});
useLayoutEffect$1(function() {
function onMozMousePixelScroll(e2) {
if (useVirtual) {
e2.preventDefault();
}
}
var componentEle = componentRef.current;
componentEle.addEventListener("wheel", onRawWheel);
componentEle.addEventListener("DOMMouseScroll", onFireFoxScroll);
componentEle.addEventListener("MozMousePixelScroll", onMozMousePixelScroll);
return function() {
componentEle.removeEventListener("wheel", onRawWheel);
componentEle.removeEventListener("DOMMouseScroll", onFireFoxScroll);
componentEle.removeEventListener("MozMousePixelScroll", onMozMousePixelScroll);
};
}, [useVirtual]);
useLayoutEffect$1(function() {
if (scrollWidth) {
setOffsetLeft(function(left) {
return keepInHorizontalRange(left);
});
}
}, [size.width, scrollWidth]);
var delayHideScrollBar = function delayHideScrollBar2() {
var _verticalScrollBarRef, _horizontalScrollBarR;
(_verticalScrollBarRef = verticalScrollBarRef.current) === null || _verticalScrollBarRef === void 0 ? void 0 : _verticalScrollBarRef.delayHidden();
(_horizontalScrollBarR = horizontalScrollBarRef.current) === null || _horizontalScrollBarR === void 0 ? void 0 : _horizontalScrollBarR.delayHidden();
};
var _scrollTo = useScrollTo(componentRef, mergedData, heights, itemHeight, getKey2, function() {
return collectHeight(true);
}, syncScrollTop, delayHideScrollBar);
React__namespace.useImperativeHandle(ref, function() {
return {
getScrollInfo: getVirtualScrollInfo,
scrollTo: function scrollTo(config) {
function isPosScroll(arg) {
return arg && _typeof(arg) === "object" && ("left" in arg || "top" in arg);
}
if (isPosScroll(config)) {
if (config.left !== void 0) {
setOffsetLeft(keepInHorizontalRange(config.left));
}
_scrollTo(config.top);
} else {
_scrollTo(config);
}
}
};
});
useLayoutEffect$1(function() {
if (onVisibleChange) {
var renderList = mergedData.slice(start, end + 1);
onVisibleChange(renderList, mergedData);
}
}, [start, end, mergedData]);
var getSize = useGetSize(mergedData, getKey2, heights, itemHeight);
var extraContent = extraRender === null || extraRender === void 0 ? void 0 : extraRender({
start,
end,
virtual: inVirtual,
offsetX: offsetLeft,
offsetY: fillerOffset,
rtl: isRTL,
getSize
});
var listChildren = useChildren(mergedData, start, end, scrollWidth, setInstanceRef, children, sharedConfig);
var componentStyle = null;
if (height) {
componentStyle = _objectSpread2(_defineProperty({}, fullHeight ? "height" : "maxHeight", height), ScrollStyle);
if (useVirtual) {
componentStyle.overflowY = "hidden";
if (scrollWidth) {
componentStyle.overflowX = "hidden";
}
if (scrollMoving) {
componentStyle.pointerEvents = "none";
}
}
}
var containerProps = {};
if (isRTL) {
containerProps.dir = "rtl";
}
return /* @__PURE__ */ React__namespace.createElement("div", _extends$1({
style: _objectSpread2(_objectSpread2({}, style2), {}, {
position: "relative"
}),
className: mergedClassName
}, containerProps, restProps), /* @__PURE__ */ React__namespace.createElement(RefResizeObserver, {
onResize: onHolderResize
}, /* @__PURE__ */ React__namespace.createElement(Component, {
className: "".concat(prefixCls, "-holder"),
style: componentStyle,
ref: componentRef,
onScroll: onFallbackScroll,
onMouseEnter: delayHideScrollBar
}, /* @__PURE__ */ React__namespace.createElement(Filler, {
prefixCls,
height: scrollHeight,
offsetX: offsetLeft,
offsetY: fillerOffset,
scrollWidth,
onInnerResize: collectHeight,
ref: fillerInnerRef,
innerProps,
rtl: isRTL,
extra: extraContent
}, listChildren))), inVirtual && scrollHeight > height && /* @__PURE__ */ React__namespace.createElement(ScrollBar, {
ref: verticalScrollBarRef,
prefixCls,
scrollOffset: offsetTop,
scrollRange: scrollHeight,
rtl: isRTL,
onScroll: onScrollBar,
onStartMove: onScrollbarStartMove,
onStopMove: onScrollbarStopMove,
spinSize: verticalScrollBarSpinSize,
containerSize: size.height,
style: styles === null || styles === void 0 ? void 0 : styles.verticalScrollBar,
thumbStyle: styles === null || styles === void 0 ? void 0 : styles.verticalScrollBarThumb
}), inVirtual && scrollWidth && /* @__PURE__ */ React__namespace.createElement(ScrollBar, {
ref: horizontalScrollBarRef,
prefixCls,
scrollOffset: offsetLeft,
scrollRange: scrollWidth,
rtl: isRTL,
onScroll: onScrollBar,
onStartMove: onScrollbarStartMove,
onStopMove: onScrollbarStopMove,
spinSize: horizontalScrollBarSpinSize,
containerSize: size.width,
horizontal: true,
style: styles === null || styles === void 0 ? void 0 : styles.horizontalScrollBar,
thumbStyle: styles === null || styles === void 0 ? void 0 : styles.horizontalScrollBarThumb
}));
}
var List = /* @__PURE__ */ React__namespace.forwardRef(RawList);
List.displayName = "List";
var SelectContext = /* @__PURE__ */ React__namespace.createContext(null);
function isPlatformMac() {
return /(mac\sos|macintosh)/i.test(navigator.appVersion);
}
var _excluded$2 = ["disabled", "title", "children", "style", "className"];
function isTitleType(content) {
return typeof content === "string" || typeof content === "number";
}
var OptionList = function OptionList2(_, ref) {
var _useBaseProps = useBaseProps(), prefixCls = _useBaseProps.prefixCls, id = _useBaseProps.id, open = _useBaseProps.open, multiple = _useBaseProps.multiple, mode = _useBaseProps.mode, searchValue = _useBaseProps.searchValue, toggleOpen = _useBaseProps.toggleOpen, notFoundContent = _useBaseProps.notFoundContent, onPopupScroll = _useBaseProps.onPopupScroll;
var _React$useContext = React__namespace.useContext(SelectContext), flattenOptions2 = _React$useContext.flattenOptions, onActiveValue = _React$useContext.onActiveValue, defaultActiveFirstOption = _React$useContext.defaultActiveFirstOption, onSelect = _React$useContext.onSelect, menuItemSelectedIcon = _React$useContext.menuItemSelectedIcon, rawValues = _React$useContext.rawValues, fieldNames = _React$useContext.fieldNames, virtual = _React$useContext.virtual, direction = _React$useContext.direction, listHeight = _React$useContext.listHeight, listItemHeight = _React$useContext.listItemHeight, optionRender = _React$useContext.optionRender;
var itemPrefixCls = "".concat(prefixCls, "-item");
var memoFlattenOptions = useMemo(function() {
return flattenOptions2;
}, [open, flattenOptions2], function(prev2, next2) {
return next2[0] && prev2[1] !== next2[1];
});
var listRef = React__namespace.useRef(null);
var onListMouseDown = function onListMouseDown2(event) {
event.preventDefault();
};
var scrollIntoView = function scrollIntoView2(args) {
if (listRef.current) {
listRef.current.scrollTo(typeof args === "number" ? {
index: args
} : args);
}
};
var getEnabledActiveIndex = function getEnabledActiveIndex2(index2) {
var offset = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1;
var len = memoFlattenOptions.length;
for (var i = 0; i < len; i += 1) {
var current = (index2 + i * offset + len) % len;
var _memoFlattenOptions$c = memoFlattenOptions[current], group = _memoFlattenOptions$c.group, data = _memoFlattenOptions$c.data;
if (!group && !data.disabled) {
return current;
}
}
return -1;
};
var _React$useState = React__namespace.useState(function() {
return getEnabledActiveIndex(0);
}), _React$useState2 = _slicedToArray(_React$useState, 2), activeIndex = _React$useState2[0], setActiveIndex = _React$useState2[1];
var setActive = function setActive2(index2) {
var fromKeyboard = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
setActiveIndex(index2);
var info2 = {
source: fromKeyboard ? "keyboard" : "mouse"
};
var flattenItem = memoFlattenOptions[index2];
if (!flattenItem) {
onActiveValue(null, -1, info2);
return;
}
onActiveValue(flattenItem.value, index2, info2);
};
React.useEffect(function() {
setActive(defaultActiveFirstOption !== false ? getEnabledActiveIndex(0) : -1);
}, [memoFlattenOptions.length, searchValue]);
var isSelected = React__namespace.useCallback(function(value) {
return rawValues.has(value) && mode !== "combobox";
}, [mode, _toConsumableArray(rawValues).toString(), rawValues.size]);
React.useEffect(function() {
var timeoutId = setTimeout(function() {
if (!multiple && open && rawValues.size === 1) {
var value = Array.from(rawValues)[0];
var index2 = memoFlattenOptions.findIndex(function(_ref) {
var data = _ref.data;
return data.value === value;
});
if (index2 !== -1) {
setActive(index2);
scrollIntoView(index2);
}
}
});
if (open) {
var _listRef$current;
(_listRef$current = listRef.current) === null || _listRef$current === void 0 || _listRef$current.scrollTo(void 0);
}
return function() {
return clearTimeout(timeoutId);
};
}, [open, searchValue]);
var onSelectValue = function onSelectValue2(value) {
if (value !== void 0) {
onSelect(value, {
selected: !rawValues.has(value)
});
}
if (!multiple) {
toggleOpen(false);
}
};
React__namespace.useImperativeHandle(ref, function() {
return {
onKeyDown: function onKeyDown(event) {
var which = event.which, ctrlKey = event.ctrlKey;
switch (which) {
case KeyCode.N:
case KeyCode.P:
case KeyCode.UP:
case KeyCode.DOWN: {
var offset = 0;
if (which === KeyCode.UP) {
offset = -1;
} else if (which === KeyCode.DOWN) {
offset = 1;
} else if (isPlatformMac() && ctrlKey) {
if (which === KeyCode.N) {
offset = 1;
} else if (which === KeyCode.P) {
offset = -1;
}
}
if (offset !== 0) {
var nextActiveIndex = getEnabledActiveIndex(activeIndex + offset, offset);
scrollIntoView(nextActiveIndex);
setActive(nextActiveIndex, true);
}
break;
}
case KeyCode.ENTER: {
var item = memoFlattenOptions[activeIndex];
if (item && !item.data.disabled) {
onSelectValue(item.value);
} else {
onSelectValue(void 0);
}
if (open) {
event.preventDefault();
}
break;
}
case KeyCode.ESC: {
toggleOpen(false);
if (open) {
event.stopPropagation();
}
}
}
},
onKeyUp: function onKeyUp() {
},
scrollTo: function scrollTo(index2) {
scrollIntoView(index2);
}
};
});
if (memoFlattenOptions.length === 0) {
return /* @__PURE__ */ React__namespace.createElement("div", {
role: "listbox",
id: "".concat(id, "_list"),
className: "".concat(itemPrefixCls, "-empty"),
onMouseDown: onListMouseDown
}, notFoundContent);
}
var omitFieldNameList = Object.keys(fieldNames).map(function(key) {
return fieldNames[key];
});
var getLabel = function getLabel2(item) {
return item.label;
};
function getItemAriaProps(item, index2) {
var group = item.group;
return {
role: group ? "presentation" : "option",
id: "".concat(id, "_list_").concat(index2)
};
}
var renderItem = function renderItem2(index2) {
var item = memoFlattenOptions[index2];
if (!item)
return null;
var itemData = item.data || {};
var value = itemData.value;
var group = item.group;
var attrs = pickAttrs(itemData, true);
var mergedLabel = getLabel(item);
return item ? /* @__PURE__ */ React__namespace.createElement("div", _extends$1({
"aria-label": typeof mergedLabel === "string" && !group ? mergedLabel : null
}, attrs, {
key: index2
}, getItemAriaProps(item, index2), {
"aria-selected": isSelected(value)
}), value) : null;
};
var a11yProps = {
role: "listbox",
id: "".concat(id, "_list")
};
return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, virtual && /* @__PURE__ */ React__namespace.createElement("div", _extends$1({}, a11yProps, {
style: {
height: 0,
width: 0,
overflow: "hidden"
}
}), renderItem(activeIndex - 1), renderItem(activeIndex), renderItem(activeIndex + 1)), /* @__PURE__ */ React__namespace.createElement(List, {
itemKey: "key",
ref: listRef,
data: memoFlattenOptions,
height: listHeight,
itemHeight: listItemHeight,
fullHeight: false,
onMouseDown: onListMouseDown,
onScroll: onPopupScroll,
virtual,
direction,
innerProps: virtual ? null : a11yProps
}, function(item, itemIndex) {
var _classNames;
var group = item.group, groupOption = item.groupOption, data = item.data, label = item.label, value = item.value;
var key = data.key;
if (group) {
var _data$title;
var groupTitle = (_data$title = data.title) !== null && _data$title !== void 0 ? _data$title : isTitleType(label) ? label.toString() : void 0;
return /* @__PURE__ */ React__namespace.createElement("div", {
className: classNames(itemPrefixCls, "".concat(itemPrefixCls, "-group")),
title: groupTitle
}, label !== void 0 ? label : key);
}
var disabled = data.disabled, title = data.title;
data.children;
var style2 = data.style, className = data.className, otherProps = _objectWithoutProperties(data, _excluded$2);
var passedProps = omit(otherProps, omitFieldNameList);
var selected = isSelected(value);
var optionPrefixCls = "".concat(itemPrefixCls, "-option");
var optionClassName = classNames(itemPrefixCls, optionPrefixCls, className, (_classNames = {}, _defineProperty(_classNames, "".concat(optionPrefixCls, "-grouped"), groupOption), _defineProperty(_classNames, "".concat(optionPrefixCls, "-active"), activeIndex === itemIndex && !disabled), _defineProperty(_classNames, "".concat(optionPrefixCls, "-disabled"), disabled), _defineProperty(_classNames, "".concat(optionPrefixCls, "-selected"), selected), _classNames));
var mergedLabel = getLabel(item);
var iconVisible = !menuItemSelectedIcon || typeof menuItemSelectedIcon === "function" || selected;
var content = typeof mergedLabel === "number" ? mergedLabel : mergedLabel || value;
var optionTitle = isTitleType(content) ? content.toString() : void 0;
if (title !== void 0) {
optionTitle = title;
}
return /* @__PURE__ */ React__namespace.createElement("div", _extends$1({}, pickAttrs(passedProps), !virtual ? getItemAriaProps(item, itemIndex) : {}, {
"aria-selected": selected,
className: optionClassName,
title: optionTitle,
onMouseMove: function onMouseMove() {
if (activeIndex === itemIndex || disabled) {
return;
}
setActive(itemIndex);
},
onClick: function onClick() {
if (!disabled) {
onSelectValue(value);
}
},
style: style2
}), /* @__PURE__ */ React__namespace.createElement("div", {
className: "".concat(optionPrefixCls, "-content")
}, typeof optionRender === "function" ? optionRender(item, {
index: itemIndex
}) : content), /* @__PURE__ */ React__namespace.isValidElement(menuItemSelectedIcon) || selected, iconVisible && /* @__PURE__ */ React__namespace.createElement(TransBtn, {
className: "".concat(itemPrefixCls, "-option-state"),
customizeIcon: menuItemSelectedIcon,
customizeIconProps: {
value,
disabled,
isSelected: selected
}
}, selected ? "✓" : null));
}));
};
var RefOptionList = /* @__PURE__ */ React__namespace.forwardRef(OptionList);
RefOptionList.displayName = "OptionList";
const useCache = function(labeledValues, valueOptions) {
var cacheRef = React__namespace.useRef({
values: /* @__PURE__ */ new Map(),
options: /* @__PURE__ */ new Map()
});
var filledLabeledValues = React__namespace.useMemo(function() {
var _cacheRef$current = cacheRef.current, prevValueCache = _cacheRef$current.values, prevOptionCache = _cacheRef$current.options;
var patchedValues = labeledValues.map(function(item) {
if (item.label === void 0) {
var _prevValueCache$get;
return _objectSpread2(_objectSpread2({}, item), {}, {
label: (_prevValueCache$get = prevValueCache.get(item.value)) === null || _prevValueCache$get === void 0 ? void 0 : _prevValueCache$get.label
});
}
return item;
});
var valueCache = /* @__PURE__ */ new Map();
var optionCache = /* @__PURE__ */ new Map();
patchedValues.forEach(function(item) {
valueCache.set(item.value, item);
optionCache.set(item.value, valueOptions.get(item.value) || prevOptionCache.get(item.value));
});
cacheRef.current.values = valueCache;
cacheRef.current.options = optionCache;
return patchedValues;
}, [labeledValues, valueOptions]);
var getOption = React__namespace.useCallback(function(val) {
return valueOptions.get(val) || cacheRef.current.options.get(val);
}, [valueOptions]);
return [filledLabeledValues, getOption];
};
function includes(test, search) {
return toArray$1(test).join("").toUpperCase().includes(search);
}
const useFilterOptions = function(options, fieldNames, searchValue, filterOption, optionFilterProp) {
return React__namespace.useMemo(function() {
if (!searchValue || filterOption === false) {
return options;
}
var fieldOptions = fieldNames.options, fieldLabel = fieldNames.label, fieldValue = fieldNames.value;
var filteredOptions = [];
var customizeFilter = typeof filterOption === "function";
var upperSearch = searchValue.toUpperCase();
var filterFunc = customizeFilter ? filterOption : function(_, option) {
if (optionFilterProp) {
return includes(option[optionFilterProp], upperSearch);
}
if (option[fieldOptions]) {
return includes(option[fieldLabel !== "children" ? fieldLabel : "label"], upperSearch);
}
return includes(option[fieldValue], upperSearch);
};
var wrapOption = customizeFilter ? function(opt) {
return injectPropsWithOption(opt);
} : function(opt) {
return opt;
};
options.forEach(function(item) {
if (item[fieldOptions]) {
var matchGroup = filterFunc(searchValue, wrapOption(item));
if (matchGroup) {
filteredOptions.push(item);
} else {
var subOptions = item[fieldOptions].filter(function(subItem) {
return filterFunc(searchValue, wrapOption(subItem));
});
if (subOptions.length) {
filteredOptions.push(_objectSpread2(_objectSpread2({}, item), {}, _defineProperty({}, fieldOptions, subOptions)));
}
}
return;
}
if (filterFunc(searchValue, wrapOption(item))) {
filteredOptions.push(item);
}
});
return filteredOptions;
}, [options, filterOption, optionFilterProp, searchValue, fieldNames]);
};
var uuid = 0;
var isBrowserClient = canUseDom();
function getUUID() {
var retId;
if (isBrowserClient) {
retId = uuid;
uuid += 1;
} else {
retId = "TEST_OR_SSR";
}
return retId;
}
function useId2(id) {
var _React$useState = React__namespace.useState(), _React$useState2 = _slicedToArray(_React$useState, 2), innerId = _React$useState2[0], setInnerId = _React$useState2[1];
React__namespace.useEffect(function() {
setInnerId("rc_select_".concat(getUUID()));
}, []);
return id || innerId;
}
var _excluded$1 = ["children", "value"], _excluded2 = ["children"];
function convertNodeToOption(node2) {
var _ref = node2, key = _ref.key, _ref$props = _ref.props, children = _ref$props.children, value = _ref$props.value, restProps = _objectWithoutProperties(_ref$props, _excluded$1);
return _objectSpread2({
key,
value: value !== void 0 ? value : key,
children
}, restProps);
}
function convertChildrenToData(nodes) {
var optionOnly = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
return toArray$3(nodes).map(function(node2, index2) {
if (!/* @__PURE__ */ React__namespace.isValidElement(node2) || !node2.type) {
return null;
}
var _ref2 = node2, isSelectOptGroup = _ref2.type.isSelectOptGroup, key = _ref2.key, _ref2$props = _ref2.props, children = _ref2$props.children, restProps = _objectWithoutProperties(_ref2$props, _excluded2);
if (optionOnly || !isSelectOptGroup) {
return convertNodeToOption(node2);
}
return _objectSpread2(_objectSpread2({
key: "__RC_SELECT_GRP__".concat(key === null ? index2 : key, "__"),
label: key
}, restProps), {}, {
options: convertChildrenToData(children)
});
}).filter(function(data) {
return data;
});
}
function useOptions(options, children, fieldNames, optionFilterProp, optionLabelProp) {
return React__namespace.useMemo(function() {
var mergedOptions = options;
var childrenAsData = !options;
if (childrenAsData) {
mergedOptions = convertChildrenToData(children);
}
var valueOptions = /* @__PURE__ */ new Map();
var labelOptions = /* @__PURE__ */ new Map();
var setLabelOptions = function setLabelOptions2(labelOptionsMap, option, key) {
if (key && typeof key === "string") {
labelOptionsMap.set(option[key], option);
}
};
function dig(optionList) {
var isChildren = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
for (var i = 0; i < optionList.length; i += 1) {
var option = optionList[i];
if (!option[fieldNames.options] || isChildren) {
valueOptions.set(option[fieldNames.value], option);
setLabelOptions(labelOptions, option, fieldNames.label);
setLabelOptions(labelOptions, option, optionFilterProp);
setLabelOptions(labelOptions, option, optionLabelProp);
} else {
dig(option[fieldNames.options], true);
}
}
}
dig(mergedOptions);
return {
options: mergedOptions,
valueOptions,
labelOptions
};
}, [options, children, fieldNames, optionFilterProp, optionLabelProp]);
}
function useRefFunc(callback) {
var funcRef = React__namespace.useRef();
funcRef.current = callback;
var cacheFn = React__namespace.useCallback(function() {
return funcRef.current.apply(funcRef, arguments);
}, []);
return cacheFn;
}
var _excluded = ["id", "mode", "prefixCls", "backfill", "fieldNames", "inputValue", "searchValue", "onSearch", "autoClearSearchValue", "onSelect", "onDeselect", "dropdownMatchSelectWidth", "filterOption", "filterSort", "optionFilterProp", "optionLabelProp", "options", "optionRender", "children", "defaultActiveFirstOption", "menuItemSelectedIcon", "virtual", "direction", "listHeight", "listItemHeight", "value", "defaultValue", "labelInValue", "onChange"];
var OMIT_DOM_PROPS = ["inputValue"];
function isRawValue(value) {
return !value || _typeof(value) !== "object";
}
var Select$2 = /* @__PURE__ */ React__namespace.forwardRef(function(props, ref) {
var id = props.id, mode = props.mode, _props$prefixCls = props.prefixCls, prefixCls = _props$prefixCls === void 0 ? "rc-select" : _props$prefixCls, backfill = props.backfill, fieldNames = props.fieldNames, inputValue = props.inputValue, searchValue = props.searchValue, onSearch = props.onSearch, _props$autoClearSearc = props.autoClearSearchValue, autoClearSearchValue = _props$autoClearSearc === void 0 ? true : _props$autoClearSearc, onSelect = props.onSelect, onDeselect = props.onDeselect, _props$dropdownMatchS = props.dropdownMatchSelectWidth, dropdownMatchSelectWidth = _props$dropdownMatchS === void 0 ? true : _props$dropdownMatchS, filterOption = props.filterOption, filterSort = props.filterSort, optionFilterProp = props.optionFilterProp, optionLabelProp = props.optionLabelProp, options = props.options, optionRender = props.optionRender, children = props.children, defaultActiveFirstOption = props.defaultActiveFirstOption, menuItemSelectedIcon = props.menuItemSelectedIcon, virtual = props.virtual, direction = props.direction, _props$listHeight = props.listHeight, listHeight = _props$listHeight === void 0 ? 200 : _props$listHeight, _props$listItemHeight = props.listItemHeight, listItemHeight = _props$listItemHeight === void 0 ? 20 : _props$listItemHeight, value = props.value, defaultValue = props.defaultValue, labelInValue = props.labelInValue, onChange = props.onChange, restProps = _objectWithoutProperties(props, _excluded);
var mergedId = useId2(id);
var multiple = isMultiple(mode);
var childrenAsData = !!(!options && children);
var mergedFilterOption = React__namespace.useMemo(function() {
if (filterOption === void 0 && mode === "combobox") {
return false;
}
return filterOption;
}, [filterOption, mode]);
var mergedFieldNames = React__namespace.useMemo(
function() {
return fillFieldNames(fieldNames, childrenAsData);
},
/* eslint-disable react-hooks/exhaustive-deps */
[
// We stringify fieldNames to avoid unnecessary re-renders.
JSON.stringify(fieldNames),
childrenAsData
]
/* eslint-enable react-hooks/exhaustive-deps */
);
var _useMergedState = useMergedState("", {
value: searchValue !== void 0 ? searchValue : inputValue,
postState: function postState(search) {
return search || "";
}
}), _useMergedState2 = _slicedToArray(_useMergedState, 2), mergedSearchValue = _useMergedState2[0], setSearchValue = _useMergedState2[1];
var parsedOptions = useOptions(options, children, mergedFieldNames, optionFilterProp, optionLabelProp);
var valueOptions = parsedOptions.valueOptions, labelOptions = parsedOptions.labelOptions, mergedOptions = parsedOptions.options;
var convert2LabelValues = React__namespace.useCallback(function(draftValues) {
var valueList = toArray$1(draftValues);
return valueList.map(function(val) {
var rawValue;
var rawLabel;
var rawKey;
var rawDisabled;
var rawTitle;
if (isRawValue(val)) {
rawValue = val;
} else {
var _val$value;
rawKey = val.key;
rawLabel = val.label;
rawValue = (_val$value = val.value) !== null && _val$value !== void 0 ? _val$value : rawKey;
}
var option = valueOptions.get(rawValue);
if (option) {
var _option$key;
if (rawLabel === void 0)
rawLabel = option === null || option === void 0 ? void 0 : option[optionLabelProp || mergedFieldNames.label];
if (rawKey === void 0)
rawKey = (_option$key = option === null || option === void 0 ? void 0 : option.key) !== null && _option$key !== void 0 ? _option$key : rawValue;
rawDisabled = option === null || option === void 0 ? void 0 : option.disabled;
rawTitle = option === null || option === void 0 ? void 0 : option.title;
}
return {
label: rawLabel,
value: rawValue,
key: rawKey,
disabled: rawDisabled,
title: rawTitle
};
});
}, [mergedFieldNames, optionLabelProp, valueOptions]);
var _useMergedState3 = useMergedState(defaultValue, {
value
}), _useMergedState4 = _slicedToArray(_useMergedState3, 2), internalValue = _useMergedState4[0], setInternalValue = _useMergedState4[1];
var rawLabeledValues = React__namespace.useMemo(function() {
var _values$;
var values = convert2LabelValues(internalValue);
if (mode === "combobox" && isComboNoValue((_values$ = values[0]) === null || _values$ === void 0 ? void 0 : _values$.value)) {
return [];
}
return values;
}, [internalValue, convert2LabelValues, mode]);
var _useCache = useCache(rawLabeledValues, valueOptions), _useCache2 = _slicedToArray(_useCache, 2), mergedValues = _useCache2[0], getMixedOption = _useCache2[1];
var displayValues = React__namespace.useMemo(function() {
if (!mode && mergedValues.length === 1) {
var firstValue = mergedValues[0];
if (firstValue.value === null && (firstValue.label === null || firstValue.label === void 0)) {
return [];
}
}
return mergedValues.map(function(item) {
var _item$label;
return _objectSpread2(_objectSpread2({}, item), {}, {
label: (_item$label = item.label) !== null && _item$label !== void 0 ? _item$label : item.value
});
});
}, [mode, mergedValues]);
var rawValues = React__namespace.useMemo(function() {
return new Set(mergedValues.map(function(val) {
return val.value;
}));
}, [mergedValues]);
React__namespace.useEffect(function() {
if (mode === "combobox") {
var _mergedValues$;
var strValue = (_mergedValues$ = mergedValues[0]) === null || _mergedValues$ === void 0 ? void 0 : _mergedValues$.value;
setSearchValue(hasValue(strValue) ? String(strValue) : "");
}
}, [mergedValues]);
var createTagOption = useRefFunc(function(val, label) {
var _ref;
var mergedLabel = label !== null && label !== void 0 ? label : val;
return _ref = {}, _defineProperty(_ref, mergedFieldNames.value, val), _defineProperty(_ref, mergedFieldNames.label, mergedLabel), _ref;
});
var filledTagOptions = React__namespace.useMemo(function() {
if (mode !== "tags") {
return mergedOptions;
}
var cloneOptions = _toConsumableArray(mergedOptions);
var existOptions = function existOptions2(val) {
return valueOptions.has(val);
};
_toConsumableArray(mergedValues).sort(function(a, b2) {
return a.value < b2.value ? -1 : 1;
}).forEach(function(item) {
var val = item.value;
if (!existOptions(val)) {
cloneOptions.push(createTagOption(val, item.label));
}
});
return cloneOptions;
}, [createTagOption, mergedOptions, valueOptions, mergedValues, mode]);
var filteredOptions = useFilterOptions(filledTagOptions, mergedFieldNames, mergedSearchValue, mergedFilterOption, optionFilterProp);
var filledSearchOptions = React__namespace.useMemo(function() {
if (mode !== "tags" || !mergedSearchValue || filteredOptions.some(function(item) {
return item[optionFilterProp || "value"] === mergedSearchValue;
})) {
return filteredOptions;
}
if (filteredOptions.some(function(item) {
return item[mergedFieldNames.value] === mergedSearchValue;
})) {
return filteredOptions;
}
return [createTagOption(mergedSearchValue)].concat(_toConsumableArray(filteredOptions));
}, [createTagOption, optionFilterProp, mode, filteredOptions, mergedSearchValue, mergedFieldNames]);
var orderedFilteredOptions = React__namespace.useMemo(function() {
if (!filterSort) {
return filledSearchOptions;
}
return _toConsumableArray(filledSearchOptions).sort(function(a, b2) {
return filterSort(a, b2);
});
}, [filledSearchOptions, filterSort]);
var displayOptions = React__namespace.useMemo(function() {
return flattenOptions(orderedFilteredOptions, {
fieldNames: mergedFieldNames,
childrenAsData
});
}, [orderedFilteredOptions, mergedFieldNames, childrenAsData]);
var triggerChange = function triggerChange2(values) {
var labeledValues = convert2LabelValues(values);
setInternalValue(labeledValues);
if (onChange && // Trigger event only when value changed
(labeledValues.length !== mergedValues.length || labeledValues.some(function(newVal, index2) {
var _mergedValues$index;
return ((_mergedValues$index = mergedValues[index2]) === null || _mergedValues$index === void 0 ? void 0 : _mergedValues$index.value) !== (newVal === null || newVal === void 0 ? void 0 : newVal.value);
}))) {
var returnValues = labelInValue ? labeledValues : labeledValues.map(function(v2) {
return v2.value;
});
var returnOptions = labeledValues.map(function(v2) {
return injectPropsWithOption(getMixedOption(v2.value));
});
onChange(
// Value
multiple ? returnValues : returnValues[0],
// Option
multiple ? returnOptions : returnOptions[0]
);
}
};
var _React$useState = React__namespace.useState(null), _React$useState2 = _slicedToArray(_React$useState, 2), activeValue = _React$useState2[0], setActiveValue = _React$useState2[1];
var _React$useState3 = React__namespace.useState(0), _React$useState4 = _slicedToArray(_React$useState3, 2), accessibilityIndex = _React$useState4[0], setAccessibilityIndex = _React$useState4[1];
var mergedDefaultActiveFirstOption = defaultActiveFirstOption !== void 0 ? defaultActiveFirstOption : mode !== "combobox";
var onActiveValue = React__namespace.useCallback(function(active, index2) {
var _ref2 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, _ref2$source = _ref2.source, source = _ref2$source === void 0 ? "keyboard" : _ref2$source;
setAccessibilityIndex(index2);
if (backfill && mode === "combobox" && active !== null && source === "keyboard") {
setActiveValue(String(active));
}
}, [backfill, mode]);
var triggerSelect = function triggerSelect2(val, selected, type4) {
var getSelectEnt = function getSelectEnt2() {
var _option$key2;
var option = getMixedOption(val);
return [labelInValue ? {
label: option === null || option === void 0 ? void 0 : option[mergedFieldNames.label],
value: val,
key: (_option$key2 = option === null || option === void 0 ? void 0 : option.key) !== null && _option$key2 !== void 0 ? _option$key2 : val
} : val, injectPropsWithOption(option)];
};
if (selected && onSelect) {
var _getSelectEnt = getSelectEnt(), _getSelectEnt2 = _slicedToArray(_getSelectEnt, 2), wrappedValue = _getSelectEnt2[0], _option = _getSelectEnt2[1];
onSelect(wrappedValue, _option);
} else if (!selected && onDeselect && type4 !== "clear") {
var _getSelectEnt3 = getSelectEnt(), _getSelectEnt4 = _slicedToArray(_getSelectEnt3, 2), _wrappedValue = _getSelectEnt4[0], _option2 = _getSelectEnt4[1];
onDeselect(_wrappedValue, _option2);
}
};
var onInternalSelect = useRefFunc(function(val, info2) {
var cloneValues;
var mergedSelect = multiple ? info2.selected : true;
if (mergedSelect) {
cloneValues = multiple ? [].concat(_toConsumableArray(mergedValues), [val]) : [val];
} else {
cloneValues = mergedValues.filter(function(v2) {
return v2.value !== val;
});
}
triggerChange(cloneValues);
triggerSelect(val, mergedSelect);
if (mode === "combobox") {
setActiveValue("");
} else if (!isMultiple || autoClearSearchValue) {
setSearchValue("");
setActiveValue("");
}
});
var onDisplayValuesChange = function onDisplayValuesChange2(nextValues, info2) {
triggerChange(nextValues);
var type4 = info2.type, values = info2.values;
if (type4 === "remove" || type4 === "clear") {
values.forEach(function(item) {
triggerSelect(item.value, false, type4);
});
}
};
var onInternalSearch = function onInternalSearch2(searchText, info2) {
setSearchValue(searchText);
setActiveValue(null);
if (info2.source === "submit") {
var formatted = (searchText || "").trim();
if (formatted) {
var newRawValues = Array.from(new Set([].concat(_toConsumableArray(rawValues), [formatted])));
triggerChange(newRawValues);
triggerSelect(formatted, true);
setSearchValue("");
}
return;
}
if (info2.source !== "blur") {
if (mode === "combobox") {
triggerChange(searchText);
}
onSearch === null || onSearch === void 0 || onSearch(searchText);
}
};
var onInternalSearchSplit = function onInternalSearchSplit2(words) {
var patchValues = words;
if (mode !== "tags") {
patchValues = words.map(function(word) {
var opt = labelOptions.get(word);
return opt === null || opt === void 0 ? void 0 : opt.value;
}).filter(function(val) {
return val !== void 0;
});
}
var newRawValues = Array.from(new Set([].concat(_toConsumableArray(rawValues), _toConsumableArray(patchValues))));
triggerChange(newRawValues);
newRawValues.forEach(function(newRawValue) {
triggerSelect(newRawValue, true);
});
};
var selectContext = React__namespace.useMemo(function() {
var realVirtual = virtual !== false && dropdownMatchSelectWidth !== false;
return _objectSpread2(_objectSpread2({}, parsedOptions), {}, {
flattenOptions: displayOptions,
onActiveValue,
defaultActiveFirstOption: mergedDefaultActiveFirstOption,
onSelect: onInternalSelect,
menuItemSelectedIcon,
rawValues,
fieldNames: mergedFieldNames,
virtual: realVirtual,
direction,
listHeight,
listItemHeight,
childrenAsData,
optionRender
});
}, [parsedOptions, displayOptions, onActiveValue, mergedDefaultActiveFirstOption, onInternalSelect, menuItemSelectedIcon, rawValues, mergedFieldNames, virtual, dropdownMatchSelectWidth, listHeight, listItemHeight, childrenAsData, optionRender]);
return /* @__PURE__ */ React__namespace.createElement(SelectContext.Provider, {
value: selectContext
}, /* @__PURE__ */ React__namespace.createElement(BaseSelect, _extends$1({}, restProps, {
// >>> MISC
id: mergedId,
prefixCls,
ref,
omitDomProps: OMIT_DOM_PROPS,
mode,
displayValues,
onDisplayValuesChange,
direction,
searchValue: mergedSearchValue,
onSearch: onInternalSearch,
autoClearSearchValue,
onSearchSplit: onInternalSearchSplit,
dropdownMatchSelectWidth,
OptionList: RefOptionList,
emptyOptions: !displayOptions.length,
activeValue,
activeDescendantId: "".concat(mergedId, "_list_").concat(accessibilityIndex)
})));
});
var TypedSelect = Select$2;
TypedSelect.Option = Option;
TypedSelect.OptGroup = OptGroup;
function getStatusClassNames(prefixCls, status, hasFeedback) {
return classNames({
[`${prefixCls}-status-success`]: status === "success",
[`${prefixCls}-status-warning`]: status === "warning",
[`${prefixCls}-status-error`]: status === "error",
[`${prefixCls}-status-validating`]: status === "validating",
[`${prefixCls}-has-feedback`]: hasFeedback
});
}
const getMergedStatus = (contextStatus, customStatus) => customStatus || contextStatus;
const Empty$2 = () => {
const [, token2] = useToken();
const bgColor = new TinyColor(token2.colorBgBase);
const themeStyle = bgColor.toHsl().l < 0.5 ? {
opacity: 0.65
} : {};
return /* @__PURE__ */ React__namespace.createElement("svg", {
style: themeStyle,
width: "184",
height: "152",
viewBox: "0 0 184 152",
xmlns: "http://www.w3.org/2000/svg"
}, /* @__PURE__ */ React__namespace.createElement("g", {
fill: "none",
fillRule: "evenodd"
}, /* @__PURE__ */ React__namespace.createElement("g", {
transform: "translate(24 31.67)"
}, /* @__PURE__ */ React__namespace.createElement("ellipse", {
fillOpacity: ".8",
fill: "#F5F5F7",
cx: "67.797",
cy: "106.89",
rx: "67.797",
ry: "12.668"
}), /* @__PURE__ */ React__namespace.createElement("path", {
d: "M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z",
fill: "#AEB8C2"
}), /* @__PURE__ */ React__namespace.createElement("path", {
d: "M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z",
fill: "url(#linearGradient-1)",
transform: "translate(13.56)"
}), /* @__PURE__ */ React__namespace.createElement("path", {
d: "M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z",
fill: "#F5F5F7"
}), /* @__PURE__ */ React__namespace.createElement("path", {
d: "M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z",
fill: "#DCE0E6"
})), /* @__PURE__ */ React__namespace.createElement("path", {
d: "M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z",
fill: "#DCE0E6"
}), /* @__PURE__ */ React__namespace.createElement("g", {
transform: "translate(149.65 15.383)",
fill: "#FFF"
}, /* @__PURE__ */ React__namespace.createElement("ellipse", {
cx: "20.654",
cy: "3.167",
rx: "2.849",
ry: "2.815"
}), /* @__PURE__ */ React__namespace.createElement("path", {
d: "M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z"
}))));
};
const DefaultEmptyImg = Empty$2;
const Simple = () => {
const [, token2] = useToken();
const {
colorFill,
colorFillTertiary,
colorFillQuaternary,
colorBgContainer
} = token2;
const {
borderColor,
shadowColor,
contentColor
} = React.useMemo(() => ({
borderColor: new TinyColor(colorFill).onBackground(colorBgContainer).toHexShortString(),
shadowColor: new TinyColor(colorFillTertiary).onBackground(colorBgContainer).toHexShortString(),
contentColor: new TinyColor(colorFillQuaternary).onBackground(colorBgContainer).toHexShortString()
}), [colorFill, colorFillTertiary, colorFillQuaternary, colorBgContainer]);
return /* @__PURE__ */ React__namespace.createElement("svg", {
width: "64",
height: "41",
viewBox: "0 0 64 41",
xmlns: "http://www.w3.org/2000/svg"
}, /* @__PURE__ */ React__namespace.createElement("g", {
transform: "translate(0 1)",
fill: "none",
fillRule: "evenodd"
}, /* @__PURE__ */ React__namespace.createElement("ellipse", {
fill: shadowColor,
cx: "32",
cy: "33",
rx: "32",
ry: "7"
}), /* @__PURE__ */ React__namespace.createElement("g", {
fillRule: "nonzero",
stroke: borderColor
}, /* @__PURE__ */ React__namespace.createElement("path", {
d: "M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z"
}), /* @__PURE__ */ React__namespace.createElement("path", {
d: "M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z",
fill: contentColor
}))));
};
const SimpleEmptyImg = Simple;
const genSharedEmptyStyle = (token2) => {
const {
componentCls,
margin,
marginXS,
marginXL,
fontSize,
lineHeight
} = token2;
return {
[componentCls]: {
marginInline: marginXS,
fontSize,
lineHeight,
textAlign: "center",
// 原来 &-image 没有父子结构,现在为了外层承担我们的hashId,改成父子结果
[`${componentCls}-image`]: {
height: token2.emptyImgHeight,
marginBottom: marginXS,
opacity: token2.opacityImage,
img: {
height: "100%"
},
svg: {
maxWidth: "100%",
height: "100%",
margin: "auto"
}
},
[`${componentCls}-description`]: {
color: token2.colorText
},
// 原来 &-footer 没有父子结构,现在为了外层承担我们的hashId,改成父子结果
[`${componentCls}-footer`]: {
marginTop: margin
},
"&-normal": {
marginBlock: marginXL,
color: token2.colorTextDisabled,
[`${componentCls}-description`]: {
color: token2.colorTextDisabled
},
[`${componentCls}-image`]: {
height: token2.emptyImgHeightMD
}
},
"&-small": {
marginBlock: marginXS,
color: token2.colorTextDisabled,
[`${componentCls}-image`]: {
height: token2.emptyImgHeightSM
}
}
}
};
};
const useStyle$1 = genStyleHooks("Empty", (token2) => {
const {
componentCls,
controlHeightLG,
calc
} = token2;
const emptyToken = merge(token2, {
emptyImgCls: `${componentCls}-img`,
emptyImgHeight: calc(controlHeightLG).mul(2.5).equal(),
emptyImgHeightMD: controlHeightLG,
emptyImgHeightSM: calc(controlHeightLG).mul(0.875).equal()
});
return [genSharedEmptyStyle(emptyToken)];
});
var __rest$2 = globalThis && globalThis.__rest || function(s, e2) {
var t2 = {};
for (var p2 in s)
if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0)
t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i]))
t2[p2[i]] = s[p2[i]];
}
return t2;
};
const defaultEmptyImg = /* @__PURE__ */ React__namespace.createElement(DefaultEmptyImg, null);
const simpleEmptyImg = /* @__PURE__ */ React__namespace.createElement(SimpleEmptyImg, null);
const Empty = (_a2) => {
var {
className,
rootClassName,
prefixCls: customizePrefixCls,
image = defaultEmptyImg,
description,
children,
imageStyle,
style: style2
} = _a2, restProps = __rest$2(_a2, ["className", "rootClassName", "prefixCls", "image", "description", "children", "imageStyle", "style"]);
const {
getPrefixCls,
direction,
empty
} = React__namespace.useContext(ConfigContext);
const prefixCls = getPrefixCls("empty", customizePrefixCls);
const [wrapCSSVar, hashId, cssVarCls] = useStyle$1(prefixCls);
const [locale2] = useLocale$1("Empty");
const des = typeof description !== "undefined" ? description : locale2 === null || locale2 === void 0 ? void 0 : locale2.description;
const alt = typeof des === "string" ? des : "empty";
let imageNode = null;
if (typeof image === "string") {
imageNode = /* @__PURE__ */ React__namespace.createElement("img", {
alt,
src: image
});
} else {
imageNode = image;
}
return wrapCSSVar(/* @__PURE__ */ React__namespace.createElement("div", Object.assign({
className: classNames(hashId, cssVarCls, prefixCls, empty === null || empty === void 0 ? void 0 : empty.className, {
[`${prefixCls}-normal`]: image === simpleEmptyImg,
[`${prefixCls}-rtl`]: direction === "rtl"
}, className, rootClassName),
style: Object.assign(Object.assign({}, empty === null || empty === void 0 ? void 0 : empty.style), style2)
}, restProps), /* @__PURE__ */ React__namespace.createElement("div", {
className: `${prefixCls}-image`,
style: imageStyle
}, imageNode), des && /* @__PURE__ */ React__namespace.createElement("div", {
className: `${prefixCls}-description`
}, des), children && /* @__PURE__ */ React__namespace.createElement("div", {
className: `${prefixCls}-footer`
}, children)));
};
Empty.PRESENTED_IMAGE_DEFAULT = defaultEmptyImg;
Empty.PRESENTED_IMAGE_SIMPLE = simpleEmptyImg;
const Empty$1 = Empty;
const DefaultRenderEmpty = (props) => {
const {
componentName
} = props;
const {
getPrefixCls
} = React.useContext(ConfigContext);
const prefix = getPrefixCls("empty");
switch (componentName) {
case "Table":
case "List":
return /* @__PURE__ */ React.createElement(Empty$1, {
image: Empty$1.PRESENTED_IMAGE_SIMPLE
});
case "Select":
case "TreeSelect":
case "Cascader":
case "Transfer":
case "Mentions":
return /* @__PURE__ */ React.createElement(Empty$1, {
image: Empty$1.PRESENTED_IMAGE_SIMPLE,
className: `${prefix}-small`
});
default:
return /* @__PURE__ */ React.createElement(Empty$1, null);
}
};
const DefaultRenderEmpty$1 = DefaultRenderEmpty;
const genItemStyle = (token2) => {
const {
optionHeight,
optionFontSize,
optionLineHeight,
optionPadding
} = token2;
return {
position: "relative",
display: "block",
minHeight: optionHeight,
padding: optionPadding,
color: token2.colorText,
fontWeight: "normal",
fontSize: optionFontSize,
lineHeight: optionLineHeight,
boxSizing: "border-box"
};
};
const genSingleStyle$1 = (token2) => {
const {
antCls,
componentCls
} = token2;
const selectItemCls = `${componentCls}-item`;
const slideUpEnterActive = `&${antCls}-slide-up-enter${antCls}-slide-up-enter-active`;
const slideUpAppearActive = `&${antCls}-slide-up-appear${antCls}-slide-up-appear-active`;
const slideUpLeaveActive = `&${antCls}-slide-up-leave${antCls}-slide-up-leave-active`;
const dropdownPlacementCls = `${componentCls}-dropdown-placement-`;
return [
{
[`${componentCls}-dropdown`]: Object.assign(Object.assign({}, resetComponent(token2)), {
position: "absolute",
top: -9999,
zIndex: token2.zIndexPopup,
boxSizing: "border-box",
padding: token2.paddingXXS,
overflow: "hidden",
fontSize: token2.fontSize,
// Fix select render lag of long text in chrome
// https://github.com/ant-design/ant-design/issues/11456
// https://github.com/ant-design/ant-design/issues/11843
fontVariant: "initial",
backgroundColor: token2.colorBgElevated,
borderRadius: token2.borderRadiusLG,
outline: "none",
boxShadow: token2.boxShadowSecondary,
[`
${slideUpEnterActive}${dropdownPlacementCls}bottomLeft,
${slideUpAppearActive}${dropdownPlacementCls}bottomLeft
`]: {
animationName: slideUpIn
},
[`
${slideUpEnterActive}${dropdownPlacementCls}topLeft,
${slideUpAppearActive}${dropdownPlacementCls}topLeft,
${slideUpEnterActive}${dropdownPlacementCls}topRight,
${slideUpAppearActive}${dropdownPlacementCls}topRight
`]: {
animationName: slideDownIn
},
[`${slideUpLeaveActive}${dropdownPlacementCls}bottomLeft`]: {
animationName: slideUpOut
},
[`
${slideUpLeaveActive}${dropdownPlacementCls}topLeft,
${slideUpLeaveActive}${dropdownPlacementCls}topRight
`]: {
animationName: slideDownOut
},
"&-hidden": {
display: "none"
},
[`${selectItemCls}`]: Object.assign(Object.assign({}, genItemStyle(token2)), {
cursor: "pointer",
transition: `background ${token2.motionDurationSlow} ease`,
borderRadius: token2.borderRadiusSM,
// =========== Group ============
"&-group": {
color: token2.colorTextDescription,
fontSize: token2.fontSizeSM,
cursor: "default"
},
// =========== Option ===========
"&-option": {
display: "flex",
"&-content": Object.assign({
flex: "auto"
}, textEllipsis),
"&-state": {
flex: "none",
display: "flex",
alignItems: "center"
},
[`&-active:not(${selectItemCls}-option-disabled)`]: {
backgroundColor: token2.optionActiveBg
},
[`&-selected:not(${selectItemCls}-option-disabled)`]: {
color: token2.optionSelectedColor,
fontWeight: token2.optionSelectedFontWeight,
backgroundColor: token2.optionSelectedBg,
[`${selectItemCls}-option-state`]: {
color: token2.colorPrimary
}
},
"&-disabled": {
[`&${selectItemCls}-option-selected`]: {
backgroundColor: token2.colorBgContainerDisabled
},
color: token2.colorTextDisabled,
cursor: "not-allowed"
},
"&-grouped": {
paddingInlineStart: token2.calc(token2.controlPaddingHorizontal).mul(2).equal()
}
}
}),
// =========================== RTL ===========================
"&-rtl": {
direction: "rtl"
}
})
},
// Follow code may reuse in other components
initSlideMotion(token2, "slide-up"),
initSlideMotion(token2, "slide-down"),
initMoveMotion(token2, "move-up"),
initMoveMotion(token2, "move-down")
];
};
const genDropdownStyle = genSingleStyle$1;
const FIXED_ITEM_MARGIN = 2;
const getSelectItemStyle = (token2) => {
const {
multipleSelectItemHeight,
selectHeight,
lineWidth
} = token2;
const selectItemDist = token2.calc(selectHeight).sub(multipleSelectItemHeight).div(2).sub(lineWidth).equal();
return selectItemDist;
};
function genSizeStyle$1(token2, suffix) {
const {
componentCls,
iconCls
} = token2;
const selectOverflowPrefixCls = `${componentCls}-selection-overflow`;
const selectItemHeight = token2.multipleSelectItemHeight;
const selectItemDist = getSelectItemStyle(token2);
const suffixCls = suffix ? `${componentCls}-${suffix}` : "";
return {
[`${componentCls}-multiple${suffixCls}`]: {
fontSize: token2.fontSize,
/**
* Do not merge `height` & `line-height` under style with `selection` & `search`, since chrome
* may update to redesign with its align logic.
*/
// =========================== Overflow ===========================
[selectOverflowPrefixCls]: {
position: "relative",
display: "flex",
flex: "auto",
flexWrap: "wrap",
maxWidth: "100%",
"&-item": {
flex: "none",
alignSelf: "center",
maxWidth: "100%",
display: "inline-flex"
}
},
// ========================= Selector =========================
[`${componentCls}-selector`]: {
display: "flex",
flexWrap: "wrap",
alignItems: "center",
height: "100%",
// Multiple is little different that horizontal is follow the vertical
paddingInline: token2.calc(FIXED_ITEM_MARGIN).mul(2).equal(),
paddingBlock: token2.calc(selectItemDist).sub(FIXED_ITEM_MARGIN).equal(),
borderRadius: token2.borderRadius,
[`${componentCls}-show-search&`]: {
cursor: "text"
},
[`${componentCls}-disabled&`]: {
background: token2.multipleSelectorBgDisabled,
cursor: "not-allowed"
},
"&:after": {
display: "inline-block",
width: 0,
margin: `${unit$1(FIXED_ITEM_MARGIN)} 0`,
lineHeight: unit$1(selectItemHeight),
visibility: "hidden",
content: '"\\a0"'
}
},
[`
&${componentCls}-show-arrow ${componentCls}-selector,
&${componentCls}-allow-clear ${componentCls}-selector
`]: {
paddingInlineEnd: token2.calc(token2.fontSizeIcon).add(token2.controlPaddingHorizontal).equal()
},
// ======================== Selections ========================
[`${componentCls}-selection-item`]: {
display: "flex",
alignSelf: "center",
flex: "none",
boxSizing: "border-box",
maxWidth: "100%",
height: selectItemHeight,
marginTop: FIXED_ITEM_MARGIN,
marginBottom: FIXED_ITEM_MARGIN,
lineHeight: unit$1(token2.calc(selectItemHeight).sub(token2.calc(token2.lineWidth).mul(2)).equal()),
background: token2.multipleItemBg,
border: `${unit$1(token2.lineWidth)} ${token2.lineType} ${token2.multipleItemBorderColor}`,
borderRadius: token2.borderRadiusSM,
cursor: "default",
transition: `font-size ${token2.motionDurationSlow}, line-height ${token2.motionDurationSlow}, height ${token2.motionDurationSlow}`,
marginInlineEnd: token2.calc(FIXED_ITEM_MARGIN).mul(2).equal(),
paddingInlineStart: token2.paddingXS,
paddingInlineEnd: token2.calc(token2.paddingXS).div(2).equal(),
[`${componentCls}-disabled&`]: {
color: token2.multipleItemColorDisabled,
borderColor: token2.multipleItemBorderColorDisabled,
cursor: "not-allowed"
},
// It's ok not to do this, but 24px makes bottom narrow in view should adjust
"&-content": {
display: "inline-block",
marginInlineEnd: token2.calc(token2.paddingXS).div(2).equal(),
overflow: "hidden",
whiteSpace: "pre",
// fix whitespace wrapping. custom tags display all whitespace within.
textOverflow: "ellipsis"
},
"&-remove": Object.assign(Object.assign({}, resetIcon()), {
display: "inline-flex",
alignItems: "center",
color: token2.colorIcon,
fontWeight: "bold",
fontSize: 10,
lineHeight: "inherit",
cursor: "pointer",
[`> ${iconCls}`]: {
verticalAlign: "-0.2em"
},
"&:hover": {
color: token2.colorIconHover
}
})
},
// ========================== Input ==========================
[`${selectOverflowPrefixCls}-item + ${selectOverflowPrefixCls}-item`]: {
[`${componentCls}-selection-search`]: {
marginInlineStart: 0
}
},
// https://github.com/ant-design/ant-design/issues/44754
[`${selectOverflowPrefixCls}-item-suffix`]: {
height: "100%"
},
[`${componentCls}-selection-search`]: {
display: "inline-flex",
position: "relative",
maxWidth: "100%",
marginInlineStart: token2.calc(token2.inputPaddingHorizontalBase).sub(selectItemDist).equal(),
[`
&-input,
&-mirror
`]: {
height: selectItemHeight,
fontFamily: token2.fontFamily,
lineHeight: unit$1(selectItemHeight),
transition: `all ${token2.motionDurationSlow}`
},
"&-input": {
width: "100%",
minWidth: 4.1
// fix search cursor missing
},
"&-mirror": {
position: "absolute",
top: 0,
insetInlineStart: 0,
insetInlineEnd: "auto",
zIndex: 999,
whiteSpace: "pre",
// fix whitespace wrapping caused width calculation bug
visibility: "hidden"
}
},
// ======================= Placeholder =======================
[`${componentCls}-selection-placeholder`]: {
position: "absolute",
top: "50%",
insetInlineStart: token2.inputPaddingHorizontalBase,
insetInlineEnd: token2.inputPaddingHorizontalBase,
transform: "translateY(-50%)",
transition: `all ${token2.motionDurationSlow}`
}
}
};
}
const genMultipleStyle = (token2) => {
const {
componentCls
} = token2;
const smallToken = merge(token2, {
selectHeight: token2.controlHeightSM,
multipleSelectItemHeight: token2.controlHeightXS,
borderRadius: token2.borderRadiusSM,
borderRadiusSM: token2.borderRadiusXS
});
const largeToken = merge(token2, {
fontSize: token2.fontSizeLG,
selectHeight: token2.controlHeightLG,
multipleSelectItemHeight: token2.multipleItemHeightLG,
borderRadius: token2.borderRadiusLG,
borderRadiusSM: token2.borderRadius
});
return [
genSizeStyle$1(token2),
// ======================== Small ========================
genSizeStyle$1(smallToken, "sm"),
// Padding
{
[`${componentCls}-multiple${componentCls}-sm`]: {
[`${componentCls}-selection-placeholder`]: {
insetInline: token2.calc(token2.controlPaddingHorizontalSM).sub(token2.lineWidth).equal()
},
// https://github.com/ant-design/ant-design/issues/29559
[`${componentCls}-selection-search`]: {
marginInlineStart: 2
// Magic Number
}
}
},
// ======================== Large ========================
genSizeStyle$1(largeToken, "lg")
];
};
const genMultipleStyle$1 = genMultipleStyle;
function genSizeStyle(token2, suffix) {
const {
componentCls,
inputPaddingHorizontalBase,
borderRadius
} = token2;
const selectHeightWithoutBorder = token2.calc(token2.controlHeight).sub(token2.calc(token2.lineWidth).mul(2)).equal();
const suffixCls = suffix ? `${componentCls}-${suffix}` : "";
return {
[`${componentCls}-single${suffixCls}`]: {
fontSize: token2.fontSize,
height: token2.controlHeight,
// ========================= Selector =========================
[`${componentCls}-selector`]: Object.assign(Object.assign({}, resetComponent(token2, true)), {
display: "flex",
borderRadius,
[`${componentCls}-selection-search`]: {
position: "absolute",
top: 0,
insetInlineStart: inputPaddingHorizontalBase,
insetInlineEnd: inputPaddingHorizontalBase,
bottom: 0,
"&-input": {
width: "100%",
WebkitAppearance: "textfield"
}
},
[`
${componentCls}-selection-item,
${componentCls}-selection-placeholder
`]: {
padding: 0,
lineHeight: unit$1(selectHeightWithoutBorder),
transition: `all ${token2.motionDurationSlow}, visibility 0s`,
alignSelf: "center"
},
[`${componentCls}-selection-placeholder`]: {
transition: "none",
pointerEvents: "none"
},
// For common baseline align
[[
"&:after",
/* For '' value baseline align */
`${componentCls}-selection-item:empty:after`,
/* For undefined value baseline align */
`${componentCls}-selection-placeholder:empty:after`
].join(",")]: {
display: "inline-block",
width: 0,
visibility: "hidden",
content: '"\\a0"'
}
}),
[`
&${componentCls}-show-arrow ${componentCls}-selection-item,
&${componentCls}-show-arrow ${componentCls}-selection-placeholder
`]: {
paddingInlineEnd: token2.showArrowPaddingInlineEnd
},
// Opacity selection if open
[`&${componentCls}-open ${componentCls}-selection-item`]: {
color: token2.colorTextPlaceholder
},
// ========================== Input ==========================
// We only change the style of non-customize input which is only support by `combobox` mode.
// Not customize
[`&:not(${componentCls}-customize-input)`]: {
[`${componentCls}-selector`]: {
width: "100%",
height: "100%",
padding: `0 ${unit$1(inputPaddingHorizontalBase)}`,
[`${componentCls}-selection-search-input`]: {
height: selectHeightWithoutBorder
},
"&:after": {
lineHeight: unit$1(selectHeightWithoutBorder)
}
}
},
[`&${componentCls}-customize-input`]: {
[`${componentCls}-selector`]: {
"&:after": {
display: "none"
},
[`${componentCls}-selection-search`]: {
position: "static",
width: "100%"
},
[`${componentCls}-selection-placeholder`]: {
position: "absolute",
insetInlineStart: 0,
insetInlineEnd: 0,
padding: `0 ${unit$1(inputPaddingHorizontalBase)}`,
"&:after": {
display: "none"
}
}
}
}
}
};
}
function genSingleStyle(token2) {
const {
componentCls
} = token2;
const inputPaddingHorizontalSM = token2.calc(token2.controlPaddingHorizontalSM).sub(token2.lineWidth).equal();
return [
genSizeStyle(token2),
// ======================== Small ========================
// Shared
genSizeStyle(merge(token2, {
controlHeight: token2.controlHeightSM,
borderRadius: token2.borderRadiusSM
}), "sm"),
// padding
{
[`${componentCls}-single${componentCls}-sm`]: {
[`&:not(${componentCls}-customize-input)`]: {
[`${componentCls}-selection-search`]: {
insetInlineStart: inputPaddingHorizontalSM,
insetInlineEnd: inputPaddingHorizontalSM
},
[`${componentCls}-selector`]: {
padding: `0 ${unit$1(inputPaddingHorizontalSM)}`
},
// With arrow should provides `padding-right` to show the arrow
[`&${componentCls}-show-arrow ${componentCls}-selection-search`]: {
insetInlineEnd: token2.calc(inputPaddingHorizontalSM).add(token2.calc(token2.fontSize).mul(1.5)).equal()
},
[`
&${componentCls}-show-arrow ${componentCls}-selection-item,
&${componentCls}-show-arrow ${componentCls}-selection-placeholder
`]: {
paddingInlineEnd: token2.calc(token2.fontSize).mul(1.5).equal()
}
}
}
},
// ======================== Large ========================
// Shared
genSizeStyle(merge(token2, {
controlHeight: token2.singleItemHeightLG,
fontSize: token2.fontSizeLG,
borderRadius: token2.borderRadiusLG
}), "lg")
];
}
const genSelectorStyle = (token2) => {
const {
componentCls,
selectorBg
} = token2;
return {
position: "relative",
backgroundColor: selectorBg,
border: `${unit$1(token2.lineWidth)} ${token2.lineType} ${token2.colorBorder}`,
transition: `all ${token2.motionDurationMid} ${token2.motionEaseInOut}`,
input: {
cursor: "pointer"
},
[`${componentCls}-show-search&`]: {
cursor: "text",
input: {
cursor: "auto",
color: "inherit",
height: "100%"
}
},
[`${componentCls}-disabled&`]: {
color: token2.colorTextDisabled,
background: token2.colorBgContainerDisabled,
cursor: "not-allowed",
[`${componentCls}-multiple&`]: {
background: token2.multipleSelectorBgDisabled
},
input: {
cursor: "not-allowed"
}
}
};
};
const genStatusStyle$1 = function(rootSelectCls, token2) {
let overwriteDefaultBorder = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
const {
componentCls,
borderHoverColor,
antCls,
borderActiveColor,
outlineColor,
controlOutlineWidth
} = token2;
const overwriteStyle = overwriteDefaultBorder ? {
[`${componentCls}-selector`]: {
borderColor: borderActiveColor
}
} : {};
return {
[rootSelectCls]: {
[`&:not(${componentCls}-disabled):not(${componentCls}-customize-input):not(${antCls}-pagination-size-changer)`]: Object.assign(Object.assign({}, overwriteStyle), {
[`&:hover ${componentCls}-selector`]: {
borderColor: borderHoverColor
},
[`${componentCls}-focused& ${componentCls}-selector`]: {
borderColor: borderActiveColor,
boxShadow: `0 0 0 ${unit$1(controlOutlineWidth)} ${outlineColor}`,
outline: 0
}
})
}
};
};
const getSearchInputWithoutBorderStyle = (token2) => {
const {
componentCls
} = token2;
return {
[`${componentCls}-selection-search-input`]: {
margin: 0,
padding: 0,
background: "transparent",
border: "none",
outline: "none",
appearance: "none",
fontFamily: "inherit",
"&::-webkit-search-cancel-button": {
display: "none",
"-webkit-appearance": "none"
}
}
};
};
const genBaseStyle = (token2) => {
const {
antCls,
componentCls,
inputPaddingHorizontalBase,
iconCls
} = token2;
return {
[componentCls]: Object.assign(Object.assign({}, resetComponent(token2)), {
position: "relative",
display: "inline-block",
cursor: "pointer",
[`&:not(${componentCls}-customize-input) ${componentCls}-selector`]: Object.assign(Object.assign({}, genSelectorStyle(token2)), getSearchInputWithoutBorderStyle(token2)),
// [`&:not(&-disabled):hover ${selectCls}-selector`]: {
// ...genHoverStyle(token),
// },
// ======================== Selection ========================
[`${componentCls}-selection-item`]: Object.assign(Object.assign({
flex: 1,
fontWeight: "normal",
position: "relative",
userSelect: "none"
}, textEllipsis), {
// https://github.com/ant-design/ant-design/issues/40421
[`> ${antCls}-typography`]: {
display: "inline"
}
}),
// ======================= Placeholder =======================
[`${componentCls}-selection-placeholder`]: Object.assign(Object.assign({}, textEllipsis), {
flex: 1,
color: token2.colorTextPlaceholder,
pointerEvents: "none"
}),
// ========================== Arrow ==========================
[`${componentCls}-arrow`]: Object.assign(Object.assign({}, resetIcon()), {
position: "absolute",
top: "50%",
insetInlineStart: "auto",
insetInlineEnd: inputPaddingHorizontalBase,
height: token2.fontSizeIcon,
marginTop: token2.calc(token2.fontSizeIcon).mul(-1).div(2).equal(),
color: token2.colorTextQuaternary,
fontSize: token2.fontSizeIcon,
lineHeight: 1,
textAlign: "center",
pointerEvents: "none",
display: "flex",
alignItems: "center",
[iconCls]: {
verticalAlign: "top",
transition: `transform ${token2.motionDurationSlow}`,
"> svg": {
verticalAlign: "top"
},
[`&:not(${componentCls}-suffix)`]: {
pointerEvents: "auto"
}
},
[`${componentCls}-disabled &`]: {
cursor: "not-allowed"
},
"> *:not(:last-child)": {
marginInlineEnd: 8
// FIXME: magic
}
}),
// ========================== Clear ==========================
[`${componentCls}-clear`]: {
position: "absolute",
top: "50%",
insetInlineStart: "auto",
insetInlineEnd: inputPaddingHorizontalBase,
zIndex: 1,
display: "inline-block",
width: token2.fontSizeIcon,
height: token2.fontSizeIcon,
marginTop: token2.calc(token2.fontSizeIcon).mul(-1).div(2).equal(),
color: token2.colorTextQuaternary,
fontSize: token2.fontSizeIcon,
fontStyle: "normal",
lineHeight: 1,
textAlign: "center",
textTransform: "none",
background: token2.clearBg,
cursor: "pointer",
opacity: 0,
transition: `color ${token2.motionDurationMid} ease, opacity ${token2.motionDurationSlow} ease`,
textRendering: "auto",
"&:before": {
display: "block"
},
"&:hover": {
color: token2.colorTextTertiary
}
},
"&:hover": {
[`${componentCls}-clear`]: {
opacity: 1
}
}
}),
// ========================= Feedback ==========================
[`${componentCls}-has-feedback`]: {
[`${componentCls}-clear`]: {
insetInlineEnd: token2.calc(inputPaddingHorizontalBase).add(token2.fontSize).add(token2.paddingXS).equal()
}
}
};
};
const genSelectStyle = (token2) => {
const {
componentCls
} = token2;
return [
{
[componentCls]: {
// ==================== BorderLess ====================
[`&-borderless ${componentCls}-selector`]: {
backgroundColor: `transparent !important`,
borderColor: `transparent !important`,
boxShadow: `none !important`
},
// ==================== In Form ====================
[`&${componentCls}-in-form-item`]: {
width: "100%"
}
}
},
// =====================================================
// == LTR ==
// =====================================================
// Base
genBaseStyle(token2),
// Single
genSingleStyle(token2),
// Multiple
genMultipleStyle$1(token2),
// Dropdown
genDropdownStyle(token2),
// =====================================================
// == RTL ==
// =====================================================
{
[`${componentCls}-rtl`]: {
direction: "rtl"
}
},
// =====================================================
// == Status ==
// =====================================================
genStatusStyle$1(componentCls, merge(token2, {
borderHoverColor: token2.colorPrimaryHover,
borderActiveColor: token2.colorPrimary,
outlineColor: token2.controlOutline
})),
genStatusStyle$1(`${componentCls}-status-error`, merge(token2, {
borderHoverColor: token2.colorErrorHover,
borderActiveColor: token2.colorError,
outlineColor: token2.colorErrorOutline
}), true),
genStatusStyle$1(`${componentCls}-status-warning`, merge(token2, {
borderHoverColor: token2.colorWarningHover,
borderActiveColor: token2.colorWarning,
outlineColor: token2.colorWarningOutline
}), true),
// =====================================================
// == Space Compact ==
// =====================================================
genCompactItemStyle(token2, {
borderElCls: `${componentCls}-selector`,
focusElCls: `${componentCls}-focused`
})
];
};
const prepareComponentToken$1 = (token2) => {
const {
fontSize,
lineHeight,
controlHeight,
controlPaddingHorizontal,
zIndexPopupBase,
colorText,
fontWeightStrong,
controlItemBgActive,
controlItemBgHover,
colorBgContainer,
colorFillSecondary,
controlHeightLG,
controlHeightSM,
colorBgContainerDisabled,
colorTextDisabled
} = token2;
return {
zIndexPopup: zIndexPopupBase + 50,
optionSelectedColor: colorText,
optionSelectedFontWeight: fontWeightStrong,
optionSelectedBg: controlItemBgActive,
optionActiveBg: controlItemBgHover,
optionPadding: `${(controlHeight - fontSize * lineHeight) / 2}px ${controlPaddingHorizontal}px`,
optionFontSize: fontSize,
optionLineHeight: lineHeight,
optionHeight: controlHeight,
selectorBg: colorBgContainer,
clearBg: colorBgContainer,
singleItemHeightLG: controlHeightLG,
multipleItemBg: colorFillSecondary,
multipleItemBorderColor: "transparent",
multipleItemHeight: controlHeightSM,
multipleItemHeightLG: controlHeight,
multipleSelectorBgDisabled: colorBgContainerDisabled,
multipleItemColorDisabled: colorTextDisabled,
multipleItemBorderColorDisabled: "transparent",
showArrowPaddingInlineEnd: Math.ceil(token2.fontSize * 1.25)
};
};
const useSelectStyle = genStyleHooks("Select", (token2, _ref) => {
let {
rootPrefixCls
} = _ref;
const selectToken = merge(token2, {
rootPrefixCls,
inputPaddingHorizontalBase: token2.calc(token2.paddingSM).sub(1).equal(),
multipleSelectItemHeight: token2.multipleItemHeight,
selectHeight: token2.controlHeight
});
return [genSelectStyle(selectToken)];
}, prepareComponentToken$1, {
unitless: {
optionLineHeight: true,
optionSelectedFontWeight: true
}
});
const getBuiltInPlacements2 = (popupOverflow) => {
const htmlRegion = popupOverflow === "scroll" ? "scroll" : "visible";
const sharedConfig = {
overflow: {
adjustX: true,
adjustY: true,
shiftY: true
},
htmlRegion,
dynamicInset: true
};
return {
bottomLeft: Object.assign(Object.assign({}, sharedConfig), {
points: ["tl", "bl"],
offset: [0, 4]
}),
bottomRight: Object.assign(Object.assign({}, sharedConfig), {
points: ["tr", "br"],
offset: [0, 4]
}),
topLeft: Object.assign(Object.assign({}, sharedConfig), {
points: ["bl", "tl"],
offset: [0, -4]
}),
topRight: Object.assign(Object.assign({}, sharedConfig), {
points: ["br", "tr"],
offset: [0, -4]
})
};
};
function useBuiltinPlacements(buildInPlacements, popupOverflow) {
return buildInPlacements || getBuiltInPlacements2(popupOverflow);
}
var CheckOutlined$2 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z" } }] }, "name": "check", "theme": "outlined" };
const CheckOutlinedSvg = CheckOutlined$2;
var CheckOutlined = function CheckOutlined2(props, ref) {
return /* @__PURE__ */ React__namespace.createElement(AntdIcon, _extends$1({}, props, {
ref,
icon: CheckOutlinedSvg
}));
};
const CheckOutlined$1 = /* @__PURE__ */ React__namespace.forwardRef(CheckOutlined);
var DownOutlined$2 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z" } }] }, "name": "down", "theme": "outlined" };
const DownOutlinedSvg = DownOutlined$2;
var DownOutlined = function DownOutlined2(props, ref) {
return /* @__PURE__ */ React__namespace.createElement(AntdIcon, _extends$1({}, props, {
ref,
icon: DownOutlinedSvg
}));
};
const DownOutlined$1 = /* @__PURE__ */ React__namespace.forwardRef(DownOutlined);
var SearchOutlined$2 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z" } }] }, "name": "search", "theme": "outlined" };
const SearchOutlinedSvg = SearchOutlined$2;
var SearchOutlined = function SearchOutlined2(props, ref) {
return /* @__PURE__ */ React__namespace.createElement(AntdIcon, _extends$1({}, props, {
ref,
icon: SearchOutlinedSvg
}));
};
const SearchOutlined$1 = /* @__PURE__ */ React__namespace.forwardRef(SearchOutlined);
function useIcons(_ref) {
let {
suffixIcon,
clearIcon,
menuItemSelectedIcon,
removeIcon,
loading,
multiple,
hasFeedback,
prefixCls,
showSuffixIcon,
feedbackIcon,
showArrow,
componentName
} = _ref;
const mergedClearIcon = clearIcon !== null && clearIcon !== void 0 ? clearIcon : /* @__PURE__ */ React__namespace.createElement(CloseCircleFilled$1, null);
const getSuffixIconNode = (arrowIcon) => {
if (suffixIcon === null && !hasFeedback && !showArrow) {
return null;
}
return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, showSuffixIcon !== false && arrowIcon, hasFeedback && feedbackIcon);
};
let mergedSuffixIcon = null;
if (suffixIcon !== void 0) {
mergedSuffixIcon = getSuffixIconNode(suffixIcon);
} else if (loading) {
mergedSuffixIcon = getSuffixIconNode(/* @__PURE__ */ React__namespace.createElement(LoadingOutlined$1, {
spin: true
}));
} else {
const iconCls = `${prefixCls}-suffix`;
mergedSuffixIcon = (_ref2) => {
let {
open,
showSearch
} = _ref2;
if (open && showSearch) {
return getSuffixIconNode(/* @__PURE__ */ React__namespace.createElement(SearchOutlined$1, {
className: iconCls
}));
}
return getSuffixIconNode(/* @__PURE__ */ React__namespace.createElement(DownOutlined$1, {
className: iconCls
}));
};
}
let mergedItemIcon = null;
if (menuItemSelectedIcon !== void 0) {
mergedItemIcon = menuItemSelectedIcon;
} else if (multiple) {
mergedItemIcon = /* @__PURE__ */ React__namespace.createElement(CheckOutlined$1, null);
} else {
mergedItemIcon = null;
}
let mergedRemoveIcon = null;
if (removeIcon !== void 0) {
mergedRemoveIcon = removeIcon;
} else {
mergedRemoveIcon = /* @__PURE__ */ React__namespace.createElement(CloseOutlined$1, null);
}
return {
clearIcon: mergedClearIcon,
suffixIcon: mergedSuffixIcon,
itemIcon: mergedItemIcon,
removeIcon: mergedRemoveIcon
};
}
function useShowArrow(suffixIcon, showArrow) {
return showArrow !== void 0 ? showArrow : suffixIcon !== null;
}
var __rest$1 = globalThis && globalThis.__rest || function(s, e2) {
var t2 = {};
for (var p2 in s)
if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0)
t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i]))
t2[p2[i]] = s[p2[i]];
}
return t2;
};
const SECRET_COMBOBOX_MODE_DO_NOT_USE = "SECRET_COMBOBOX_MODE_DO_NOT_USE";
const InternalSelect = (_a2, ref) => {
var _b, _c;
var {
prefixCls: customizePrefixCls,
bordered = true,
className,
rootClassName,
getPopupContainer,
popupClassName,
dropdownClassName,
listHeight = 256,
placement,
listItemHeight = 24,
size: customizeSize,
disabled: customDisabled,
notFoundContent,
status: customStatus,
builtinPlacements,
dropdownMatchSelectWidth,
popupMatchSelectWidth,
direction: propDirection,
style: style2,
allowClear
} = _a2, props = __rest$1(_a2, ["prefixCls", "bordered", "className", "rootClassName", "getPopupContainer", "popupClassName", "dropdownClassName", "listHeight", "placement", "listItemHeight", "size", "disabled", "notFoundContent", "status", "builtinPlacements", "dropdownMatchSelectWidth", "popupMatchSelectWidth", "direction", "style", "allowClear"]);
const {
getPopupContainer: getContextPopupContainer,
getPrefixCls,
renderEmpty,
direction: contextDirection,
virtual,
popupMatchSelectWidth: contextPopupMatchSelectWidth,
popupOverflow,
select
} = React__namespace.useContext(ConfigContext);
const prefixCls = getPrefixCls("select", customizePrefixCls);
const rootPrefixCls = getPrefixCls();
const direction = propDirection !== null && propDirection !== void 0 ? propDirection : contextDirection;
const {
compactSize,
compactItemClassnames
} = useCompactItemContext(prefixCls, direction);
const rootCls = useCSSVarCls$1(prefixCls);
const [wrapCSSVar, hashId, cssVarCls] = useSelectStyle(prefixCls, rootCls);
const mode = React__namespace.useMemo(() => {
const {
mode: m2
} = props;
if (m2 === "combobox") {
return void 0;
}
if (m2 === SECRET_COMBOBOX_MODE_DO_NOT_USE) {
return "combobox";
}
return m2;
}, [props.mode]);
const isMultiple2 = mode === "multiple" || mode === "tags";
const showSuffixIcon = useShowArrow(props.suffixIcon, props.showArrow);
const mergedPopupMatchSelectWidth = (_b = popupMatchSelectWidth !== null && popupMatchSelectWidth !== void 0 ? popupMatchSelectWidth : dropdownMatchSelectWidth) !== null && _b !== void 0 ? _b : contextPopupMatchSelectWidth;
const {
status: contextStatus,
hasFeedback,
isFormItemInput,
feedbackIcon
} = React__namespace.useContext(FormItemInputContext);
const mergedStatus = getMergedStatus(contextStatus, customStatus);
let mergedNotFound;
if (notFoundContent !== void 0) {
mergedNotFound = notFoundContent;
} else if (mode === "combobox") {
mergedNotFound = null;
} else {
mergedNotFound = (renderEmpty === null || renderEmpty === void 0 ? void 0 : renderEmpty("Select")) || /* @__PURE__ */ React__namespace.createElement(DefaultRenderEmpty$1, {
componentName: "Select"
});
}
const {
suffixIcon,
itemIcon,
removeIcon,
clearIcon
} = useIcons(Object.assign(Object.assign({}, props), {
multiple: isMultiple2,
hasFeedback,
feedbackIcon,
showSuffixIcon,
prefixCls,
showArrow: props.showArrow,
componentName: "Select"
}));
const mergedAllowClear = allowClear === true ? {
clearIcon
} : allowClear;
const selectProps = omit(props, ["suffixIcon", "itemIcon"]);
const mergedPopupClassName = classNames(popupClassName || dropdownClassName, {
[`${prefixCls}-dropdown-${direction}`]: direction === "rtl"
}, rootClassName, cssVarCls, rootCls, hashId);
const mergedSize = useSize$1((ctx) => {
var _a3;
return (_a3 = customizeSize !== null && customizeSize !== void 0 ? customizeSize : compactSize) !== null && _a3 !== void 0 ? _a3 : ctx;
});
const disabled = React__namespace.useContext(DisabledContext$1);
const mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;
const mergedClassName = classNames({
[`${prefixCls}-lg`]: mergedSize === "large",
[`${prefixCls}-sm`]: mergedSize === "small",
[`${prefixCls}-rtl`]: direction === "rtl",
[`${prefixCls}-borderless`]: !bordered,
[`${prefixCls}-in-form-item`]: isFormItemInput
}, getStatusClassNames(prefixCls, mergedStatus, hasFeedback), compactItemClassnames, select === null || select === void 0 ? void 0 : select.className, className, rootClassName, cssVarCls, rootCls, hashId);
const memoPlacement = React__namespace.useMemo(() => {
if (placement !== void 0) {
return placement;
}
return direction === "rtl" ? "bottomRight" : "bottomLeft";
}, [placement, direction]);
const mergedBuiltinPlacements = useBuiltinPlacements(builtinPlacements, popupOverflow);
const [zIndex] = useZIndex("SelectLike", (_c = props.dropdownStyle) === null || _c === void 0 ? void 0 : _c.zIndex);
return wrapCSSVar(/* @__PURE__ */ React__namespace.createElement(TypedSelect, Object.assign({
ref,
virtual,
showSearch: select === null || select === void 0 ? void 0 : select.showSearch
}, selectProps, {
style: Object.assign(Object.assign({}, select === null || select === void 0 ? void 0 : select.style), style2),
dropdownMatchSelectWidth: mergedPopupMatchSelectWidth,
builtinPlacements: mergedBuiltinPlacements,
transitionName: getTransitionName(rootPrefixCls, "slide-up", props.transitionName),
listHeight,
listItemHeight,
mode,
prefixCls,
placement: memoPlacement,
direction,
suffixIcon,
menuItemSelectedIcon: itemIcon,
removeIcon,
allowClear: mergedAllowClear,
notFoundContent: mergedNotFound,
className: mergedClassName,
getPopupContainer: getPopupContainer || getContextPopupContainer,
dropdownClassName: mergedPopupClassName,
disabled: mergedDisabled,
dropdownStyle: Object.assign(Object.assign({}, props === null || props === void 0 ? void 0 : props.dropdownStyle), {
zIndex
})
})));
};
const Select = /* @__PURE__ */ React__namespace.forwardRef(InternalSelect);
const PurePanel = genPurePanel$1(Select);
Select.SECRET_COMBOBOX_MODE_DO_NOT_USE = SECRET_COMBOBOX_MODE_DO_NOT_USE;
Select.Option = Option;
Select.OptGroup = OptGroup;
Select._InternalPanelDoNotUseOrYouWillBeFired = PurePanel;
const Select$1 = Select;
const responsiveArray = ["xxl", "xl", "lg", "md", "sm", "xs"];
const getResponsiveMap = (token2) => ({
xs: `(max-width: ${token2.screenXSMax}px)`,
sm: `(min-width: ${token2.screenSM}px)`,
md: `(min-width: ${token2.screenMD}px)`,
lg: `(min-width: ${token2.screenLG}px)`,
xl: `(min-width: ${token2.screenXL}px)`,
xxl: `(min-width: ${token2.screenXXL}px)`
});
const validateBreakpoints = (token2) => {
const indexableToken = token2;
const revBreakpoints = [].concat(responsiveArray).reverse();
revBreakpoints.forEach((breakpoint, i) => {
const breakpointUpper = breakpoint.toUpperCase();
const screenMin = `screen${breakpointUpper}Min`;
const screen = `screen${breakpointUpper}`;
if (!(indexableToken[screenMin] <= indexableToken[screen])) {
throw new Error(`${screenMin}<=${screen} fails : !(${indexableToken[screenMin]}<=${indexableToken[screen]})`);
}
if (i < revBreakpoints.length - 1) {
const screenMax = `screen${breakpointUpper}Max`;
if (!(indexableToken[screen] <= indexableToken[screenMax])) {
throw new Error(`${screen}<=${screenMax} fails : !(${indexableToken[screen]}<=${indexableToken[screenMax]})`);
}
const nextBreakpointUpperMin = revBreakpoints[i + 1].toUpperCase();
const nextScreenMin = `screen${nextBreakpointUpperMin}Min`;
if (!(indexableToken[screenMax] <= indexableToken[nextScreenMin])) {
throw new Error(`${screenMax}<=${nextScreenMin} fails : !(${indexableToken[screenMax]}<=${indexableToken[nextScreenMin]})`);
}
}
});
return token2;
};
function useResponsiveObserver() {
const [, token2] = useToken();
const responsiveMap = getResponsiveMap(validateBreakpoints(token2));
return React.useMemo(() => {
const subscribers = /* @__PURE__ */ new Map();
let subUid = -1;
let screens = {};
return {
matchHandlers: {},
dispatch(pointMap) {
screens = pointMap;
subscribers.forEach((func) => func(screens));
return subscribers.size >= 1;
},
subscribe(func) {
if (!subscribers.size)
this.register();
subUid += 1;
subscribers.set(subUid, func);
func(screens);
return subUid;
},
unsubscribe(paramToken) {
subscribers.delete(paramToken);
if (!subscribers.size)
this.unregister();
},
unregister() {
Object.keys(responsiveMap).forEach((screen) => {
const matchMediaQuery = responsiveMap[screen];
const handler = this.matchHandlers[matchMediaQuery];
handler === null || handler === void 0 ? void 0 : handler.mql.removeListener(handler === null || handler === void 0 ? void 0 : handler.listener);
});
subscribers.clear();
},
register() {
Object.keys(responsiveMap).forEach((screen) => {
const matchMediaQuery = responsiveMap[screen];
const listener = (_ref) => {
let {
matches
} = _ref;
this.dispatch(Object.assign(Object.assign({}, screens), {
[screen]: matches
}));
};
const mql = window.matchMedia(matchMediaQuery);
mql.addListener(listener);
this.matchHandlers[matchMediaQuery] = {
mql,
listener
};
listener(mql);
});
},
responsiveMap
};
}, [token2]);
}
function useForceUpdate() {
const [, forceUpdate] = React__namespace.useReducer((x) => x + 1, 0);
return forceUpdate;
}
function useBreakpoint() {
let refreshOnChange = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true;
const screensRef = React.useRef({});
const forceUpdate = useForceUpdate();
const responsiveObserver = useResponsiveObserver();
useLayoutEffect$1(() => {
const token2 = responsiveObserver.subscribe((supportScreens) => {
screensRef.current = supportScreens;
if (refreshOnChange) {
forceUpdate();
}
});
return () => responsiveObserver.unsubscribe(token2);
}, []);
return screensRef.current;
}
var RightOutlined$2 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z" } }] }, "name": "right", "theme": "outlined" };
const RightOutlinedSvg = RightOutlined$2;
var RightOutlined = function RightOutlined2(props, ref) {
return /* @__PURE__ */ React__namespace.createElement(AntdIcon, _extends$1({}, props, {
ref,
icon: RightOutlinedSvg
}));
};
const RightOutlined$1 = /* @__PURE__ */ React__namespace.forwardRef(RightOutlined);
var LeftOutlined$2 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z" } }] }, "name": "left", "theme": "outlined" };
const LeftOutlinedSvg = LeftOutlined$2;
var LeftOutlined = function LeftOutlined2(props, ref) {
return /* @__PURE__ */ React__namespace.createElement(AntdIcon, _extends$1({}, props, {
ref,
icon: LeftOutlinedSvg
}));
};
const LeftOutlined$1 = /* @__PURE__ */ React__namespace.forwardRef(LeftOutlined);
const genPlaceholderStyle = (color) => ({
// Firefox
"&::-moz-placeholder": {
opacity: 1
},
"&::placeholder": {
color,
userSelect: "none"
// https://github.com/ant-design/ant-design/pull/32639
},
"&:placeholder-shown": {
textOverflow: "ellipsis"
}
});
const genHoverStyle = (token2) => ({
borderColor: token2.hoverBorderColor,
backgroundColor: token2.hoverBg
});
const genActiveStyle = (token2) => ({
borderColor: token2.activeBorderColor,
boxShadow: token2.activeShadow,
outline: 0,
backgroundColor: token2.activeBg
});
const genDisabledStyle = (token2) => ({
color: token2.colorTextDisabled,
backgroundColor: token2.colorBgContainerDisabled,
borderColor: token2.colorBorder,
boxShadow: "none",
cursor: "not-allowed",
opacity: 1,
"&:hover:not([disabled])": Object.assign({}, genHoverStyle(merge(token2, {
hoverBorderColor: token2.colorBorder,
hoverBg: token2.colorBgContainerDisabled
})))
});
const genInputLargeStyle = (token2) => {
const {
paddingBlockLG,
fontSizeLG,
lineHeightLG,
borderRadiusLG,
paddingInlineLG
} = token2;
return {
padding: `${unit$1(paddingBlockLG)} ${unit$1(paddingInlineLG)}`,
fontSize: fontSizeLG,
lineHeight: lineHeightLG,
borderRadius: borderRadiusLG
};
};
const genInputSmallStyle = (token2) => ({
padding: `${unit$1(token2.paddingBlockSM)} ${unit$1(token2.paddingInlineSM)}`,
borderRadius: token2.borderRadiusSM
});
const genStatusStyle = (token2, parentCls) => {
const {
componentCls,
colorError,
colorWarning,
errorActiveShadow,
warningActiveShadow,
colorErrorBorderHover,
colorWarningBorderHover
} = token2;
return {
[`&-status-error:not(${parentCls}-disabled):not(${parentCls}-borderless)${parentCls}`]: {
borderColor: colorError,
"&:hover": {
borderColor: colorErrorBorderHover
},
"&:focus, &:focus-within": Object.assign({}, genActiveStyle(merge(token2, {
activeBorderColor: colorError,
activeShadow: errorActiveShadow
}))),
[`${componentCls}-prefix, ${componentCls}-suffix`]: {
color: colorError
}
},
[`&-status-warning:not(${parentCls}-disabled):not(${parentCls}-borderless)${parentCls}`]: {
borderColor: colorWarning,
"&:hover": {
borderColor: colorWarningBorderHover
},
"&:focus, &:focus-within": Object.assign({}, genActiveStyle(merge(token2, {
activeBorderColor: colorWarning,
activeShadow: warningActiveShadow
}))),
[`${componentCls}-prefix, ${componentCls}-suffix`]: {
color: colorWarning
}
}
};
};
const genBasicInputStyle = (token2) => Object.assign(Object.assign({
position: "relative",
display: "inline-block",
width: "100%",
minWidth: 0,
padding: `${unit$1(token2.paddingBlock)} ${unit$1(token2.paddingInline)}`,
color: token2.colorText,
fontSize: token2.fontSize,
lineHeight: token2.lineHeight,
backgroundColor: token2.colorBgContainer,
backgroundImage: "none",
borderWidth: token2.lineWidth,
borderStyle: token2.lineType,
borderColor: token2.colorBorder,
borderRadius: token2.borderRadius,
transition: `all ${token2.motionDurationMid}`
}, genPlaceholderStyle(token2.colorTextPlaceholder)), {
"&:hover": Object.assign({}, genHoverStyle(token2)),
"&:focus, &:focus-within": Object.assign({}, genActiveStyle(token2)),
"&-disabled, &[disabled]": Object.assign({}, genDisabledStyle(token2)),
"&-borderless": {
"&, &:hover, &:focus, &-focused, &-disabled, &[disabled]": {
backgroundColor: "transparent",
border: "none",
boxShadow: "none"
}
},
// Reset height for `textarea`s
"textarea&": {
maxWidth: "100%",
// prevent textarea resize from coming out of its container
height: "auto",
minHeight: token2.controlHeight,
lineHeight: token2.lineHeight,
verticalAlign: "bottom",
transition: `all ${token2.motionDurationSlow}, height 0s`,
resize: "vertical"
},
// Size
"&-lg": Object.assign({}, genInputLargeStyle(token2)),
"&-sm": Object.assign({}, genInputSmallStyle(token2)),
// RTL
"&-rtl": {
direction: "rtl"
},
"&-textarea-rtl": {
direction: "rtl"
}
});
const genInputGroupStyle = (token2) => {
const {
componentCls,
antCls
} = token2;
return {
position: "relative",
display: "table",
width: "100%",
borderCollapse: "separate",
borderSpacing: 0,
// Undo padding and float of grid classes
[`&[class*='col-']`]: {
paddingInlineEnd: token2.paddingXS,
"&:last-child": {
paddingInlineEnd: 0
}
},
// Sizing options
[`&-lg ${componentCls}, &-lg > ${componentCls}-group-addon`]: Object.assign({}, genInputLargeStyle(token2)),
[`&-sm ${componentCls}, &-sm > ${componentCls}-group-addon`]: Object.assign({}, genInputSmallStyle(token2)),
// Fix https://github.com/ant-design/ant-design/issues/5754
[`&-lg ${antCls}-select-single ${antCls}-select-selector`]: {
height: token2.controlHeightLG
},
[`&-sm ${antCls}-select-single ${antCls}-select-selector`]: {
height: token2.controlHeightSM
},
[`> ${componentCls}`]: {
display: "table-cell",
"&:not(:first-child):not(:last-child)": {
borderRadius: 0
}
},
[`${componentCls}-group`]: {
[`&-addon, &-wrap`]: {
display: "table-cell",
width: 1,
whiteSpace: "nowrap",
verticalAlign: "middle",
"&:not(:first-child):not(:last-child)": {
borderRadius: 0
}
},
"&-wrap > *": {
display: "block !important"
},
"&-addon": {
position: "relative",
padding: `0 ${unit$1(token2.paddingInline)}`,
color: token2.colorText,
fontWeight: "normal",
fontSize: token2.fontSize,
textAlign: "center",
backgroundColor: token2.addonBg,
border: `${unit$1(token2.lineWidth)} ${token2.lineType} ${token2.colorBorder}`,
borderRadius: token2.borderRadius,
transition: `all ${token2.motionDurationSlow}`,
lineHeight: 1,
// Reset Select's style in addon
[`${antCls}-select`]: {
margin: `${unit$1(token2.calc(token2.paddingBlock).add(1).mul(-1).equal())} ${unit$1(token2.calc(token2.paddingInline).mul(-1).equal())}`,
[`&${antCls}-select-single:not(${antCls}-select-customize-input):not(${antCls}-pagination-size-changer)`]: {
[`${antCls}-select-selector`]: {
backgroundColor: "inherit",
border: `${unit$1(token2.lineWidth)} ${token2.lineType} transparent`,
boxShadow: "none"
}
},
"&-open, &-focused": {
[`${antCls}-select-selector`]: {
color: token2.colorPrimary
}
}
},
// https://github.com/ant-design/ant-design/issues/31333
[`${antCls}-cascader-picker`]: {
margin: `-9px ${unit$1(token2.calc(token2.paddingInline).mul(-1).equal())}`,
backgroundColor: "transparent",
[`${antCls}-cascader-input`]: {
textAlign: "start",
border: 0,
boxShadow: "none"
}
}
},
"&-addon:first-child": {
borderInlineEnd: 0
},
"&-addon:last-child": {
borderInlineStart: 0
}
},
[`${componentCls}`]: {
width: "100%",
marginBottom: 0,
textAlign: "inherit",
"&:focus": {
zIndex: 1,
// Fix https://gw.alipayobjects.com/zos/rmsportal/DHNpoqfMXSfrSnlZvhsJ.png
borderInlineEndWidth: 1
},
"&:hover": {
zIndex: 1,
borderInlineEndWidth: 1,
[`${componentCls}-search-with-button &`]: {
zIndex: 0
}
}
},
// Reset rounded corners
[`> ${componentCls}:first-child, ${componentCls}-group-addon:first-child`]: {
borderStartEndRadius: 0,
borderEndEndRadius: 0,
// Reset Select's style in addon
[`${antCls}-select ${antCls}-select-selector`]: {
borderStartEndRadius: 0,
borderEndEndRadius: 0
}
},
[`> ${componentCls}-affix-wrapper`]: {
[`&:not(:first-child) ${componentCls}`]: {
borderStartStartRadius: 0,
borderEndStartRadius: 0
},
[`&:not(:last-child) ${componentCls}`]: {
borderStartEndRadius: 0,
borderEndEndRadius: 0
}
},
[`> ${componentCls}:last-child, ${componentCls}-group-addon:last-child`]: {
borderStartStartRadius: 0,
borderEndStartRadius: 0,
// Reset Select's style in addon
[`${antCls}-select ${antCls}-select-selector`]: {
borderStartStartRadius: 0,
borderEndStartRadius: 0
}
},
[`${componentCls}-affix-wrapper`]: {
"&:not(:last-child)": {
borderStartEndRadius: 0,
borderEndEndRadius: 0,
[`${componentCls}-search &`]: {
borderStartStartRadius: token2.borderRadius,
borderEndStartRadius: token2.borderRadius
}
},
[`&:not(:first-child), ${componentCls}-search &:not(:first-child)`]: {
borderStartStartRadius: 0,
borderEndStartRadius: 0
}
},
[`&${componentCls}-group-compact`]: Object.assign(Object.assign({
display: "block"
}, clearFix()), {
[`${componentCls}-group-addon, ${componentCls}-group-wrap, > ${componentCls}`]: {
"&:not(:first-child):not(:last-child)": {
borderInlineEndWidth: token2.lineWidth,
"&:hover": {
zIndex: 1
},
"&:focus": {
zIndex: 1
}
}
},
"& > *": {
display: "inline-block",
float: "none",
verticalAlign: "top",
// https://github.com/ant-design/ant-design-pro/issues/139
borderRadius: 0
},
[`
& > ${componentCls}-affix-wrapper,
& > ${componentCls}-number-affix-wrapper,
& > ${antCls}-picker-range
`]: {
display: "inline-flex"
},
"& > *:not(:last-child)": {
marginInlineEnd: token2.calc(token2.lineWidth).mul(-1).equal(),
borderInlineEndWidth: token2.lineWidth
},
// Undo float for .ant-input-group .ant-input
[`${componentCls}`]: {
float: "none"
},
// reset border for Select, DatePicker, AutoComplete, Cascader, Mention, TimePicker, Input
[`& > ${antCls}-select > ${antCls}-select-selector,
& > ${antCls}-select-auto-complete ${componentCls},
& > ${antCls}-cascader-picker ${componentCls},
& > ${componentCls}-group-wrapper ${componentCls}`]: {
borderInlineEndWidth: token2.lineWidth,
borderRadius: 0,
"&:hover": {
zIndex: 1
},
"&:focus": {
zIndex: 1
}
},
[`& > ${antCls}-select-focused`]: {
zIndex: 1
},
// update z-index for arrow icon
[`& > ${antCls}-select > ${antCls}-select-arrow`]: {
zIndex: 1
// https://github.com/ant-design/ant-design/issues/20371
},
[`& > *:first-child,
& > ${antCls}-select:first-child > ${antCls}-select-selector,
& > ${antCls}-select-auto-complete:first-child ${componentCls},
& > ${antCls}-cascader-picker:first-child ${componentCls}`]: {
borderStartStartRadius: token2.borderRadius,
borderEndStartRadius: token2.borderRadius
},
[`& > *:last-child,
& > ${antCls}-select:last-child > ${antCls}-select-selector,
& > ${antCls}-cascader-picker:last-child ${componentCls},
& > ${antCls}-cascader-picker-focused:last-child ${componentCls}`]: {
borderInlineEndWidth: token2.lineWidth,
borderStartEndRadius: token2.borderRadius,
borderEndEndRadius: token2.borderRadius
},
// https://github.com/ant-design/ant-design/issues/12493
[`& > ${antCls}-select-auto-complete ${componentCls}`]: {
verticalAlign: "top"
},
[`${componentCls}-group-wrapper + ${componentCls}-group-wrapper`]: {
marginInlineStart: token2.calc(token2.lineWidth).mul(-1).equal(),
[`${componentCls}-affix-wrapper`]: {
borderRadius: 0
}
},
[`${componentCls}-group-wrapper:not(:last-child)`]: {
[`&${componentCls}-search > ${componentCls}-group`]: {
[`& > ${componentCls}-group-addon > ${componentCls}-search-button`]: {
borderRadius: 0
},
[`& > ${componentCls}`]: {
borderStartStartRadius: token2.borderRadius,
borderStartEndRadius: 0,
borderEndEndRadius: 0,
borderEndStartRadius: token2.borderRadius
}
}
}
})
};
};
const genInputStyle = (token2) => {
const {
componentCls,
controlHeightSM,
lineWidth,
calc
} = token2;
const FIXED_CHROME_COLOR_HEIGHT = 16;
const colorSmallPadding = calc(controlHeightSM).sub(calc(lineWidth).mul(2)).sub(FIXED_CHROME_COLOR_HEIGHT).div(2).equal();
return {
[componentCls]: Object.assign(Object.assign(Object.assign(Object.assign({}, resetComponent(token2)), genBasicInputStyle(token2)), genStatusStyle(token2, componentCls)), {
'&[type="color"]': {
height: token2.controlHeight,
[`&${componentCls}-lg`]: {
height: token2.controlHeightLG
},
[`&${componentCls}-sm`]: {
height: controlHeightSM,
paddingTop: colorSmallPadding,
paddingBottom: colorSmallPadding
}
},
'&[type="search"]::-webkit-search-cancel-button, &[type="search"]::-webkit-search-decoration': {
"-webkit-appearance": "none"
}
})
};
};
const genAllowClearStyle = (token2) => {
const {
componentCls
} = token2;
return {
// ========================= Input =========================
[`${componentCls}-clear-icon`]: {
margin: 0,
color: token2.colorTextQuaternary,
fontSize: token2.fontSizeIcon,
verticalAlign: -1,
// https://github.com/ant-design/ant-design/pull/18151
// https://codesandbox.io/s/wizardly-sun-u10br
cursor: "pointer",
transition: `color ${token2.motionDurationSlow}`,
"&:hover": {
color: token2.colorTextTertiary
},
"&:active": {
color: token2.colorText
},
"&-hidden": {
visibility: "hidden"
},
"&-has-suffix": {
margin: `0 ${unit$1(token2.inputAffixPadding)}`
}
}
};
};
const genAffixStyle = (token2) => {
const {
componentCls,
inputAffixPadding,
colorTextDescription,
motionDurationSlow,
colorIcon,
colorIconHover,
iconCls
} = token2;
return {
[`${componentCls}-affix-wrapper`]: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, genBasicInputStyle(token2)), {
display: "inline-flex",
[`&:not(${componentCls}-affix-wrapper-disabled):hover`]: {
zIndex: 1,
[`${componentCls}-search-with-button &`]: {
zIndex: 0
}
},
"&-focused, &:focus": {
zIndex: 1
},
"&-disabled": {
[`${componentCls}[disabled]`]: {
background: "transparent"
}
},
[`> input${componentCls}`]: {
padding: 0,
fontSize: "inherit",
border: "none",
borderRadius: 0,
outline: "none",
"&::-ms-reveal": {
display: "none"
},
"&:focus": {
boxShadow: "none !important"
}
},
"&::before": {
display: "inline-block",
width: 0,
visibility: "hidden",
content: '"\\a0"'
},
[`${componentCls}`]: {
"&-prefix, &-suffix": {
display: "flex",
flex: "none",
alignItems: "center",
"> *:not(:last-child)": {
marginInlineEnd: token2.paddingXS
}
},
"&-show-count-suffix": {
color: colorTextDescription
},
"&-show-count-has-suffix": {
marginInlineEnd: token2.paddingXXS
},
"&-prefix": {
marginInlineEnd: inputAffixPadding
},
"&-suffix": {
marginInlineStart: inputAffixPadding
}
}
}), genAllowClearStyle(token2)), {
// password
[`${iconCls}${componentCls}-password-icon`]: {
color: colorIcon,
cursor: "pointer",
transition: `all ${motionDurationSlow}`,
"&:hover": {
color: colorIconHover
}
}
}), genStatusStyle(token2, `${componentCls}-affix-wrapper`))
};
};
const genGroupStyle = (token2) => {
const {
componentCls,
colorError,
colorWarning,
borderRadiusLG,
borderRadiusSM
} = token2;
return {
[`${componentCls}-group`]: Object.assign(Object.assign(Object.assign({}, resetComponent(token2)), genInputGroupStyle(token2)), {
"&-rtl": {
direction: "rtl"
},
"&-wrapper": {
display: "inline-block",
width: "100%",
textAlign: "start",
verticalAlign: "top",
// https://github.com/ant-design/ant-design/issues/6403
"&-rtl": {
direction: "rtl"
},
// Size
"&-lg": {
[`${componentCls}-group-addon`]: {
borderRadius: borderRadiusLG,
fontSize: token2.fontSizeLG
}
},
"&-sm": {
[`${componentCls}-group-addon`]: {
borderRadius: borderRadiusSM
}
},
// Status
"&-status-error": {
[`${componentCls}-group-addon`]: {
color: colorError,
borderColor: colorError
}
},
"&-status-warning": {
[`${componentCls}-group-addon`]: {
color: colorWarning,
borderColor: colorWarning
}
},
"&-disabled": {
[`${componentCls}-group-addon`]: Object.assign({}, genDisabledStyle(token2))
},
// Fix the issue of using icons in Space Compact mode
// https://github.com/ant-design/ant-design/issues/42122
[`&:not(${componentCls}-compact-first-item):not(${componentCls}-compact-last-item)${componentCls}-compact-item`]: {
[`${componentCls}, ${componentCls}-group-addon`]: {
borderRadius: 0
}
},
[`&:not(${componentCls}-compact-last-item)${componentCls}-compact-first-item`]: {
[`${componentCls}, ${componentCls}-group-addon`]: {
borderStartEndRadius: 0,
borderEndEndRadius: 0
}
},
[`&:not(${componentCls}-compact-first-item)${componentCls}-compact-last-item`]: {
[`${componentCls}, ${componentCls}-group-addon`]: {
borderStartStartRadius: 0,
borderEndStartRadius: 0
}
}
}
})
};
};
const genSearchInputStyle = (token2) => {
const {
componentCls,
antCls
} = token2;
const searchPrefixCls = `${componentCls}-search`;
return {
[searchPrefixCls]: {
[`${componentCls}`]: {
"&:hover, &:focus": {
borderColor: token2.colorPrimaryHover,
[`+ ${componentCls}-group-addon ${searchPrefixCls}-button:not(${antCls}-btn-primary)`]: {
borderInlineStartColor: token2.colorPrimaryHover
}
}
},
[`${componentCls}-affix-wrapper`]: {
borderRadius: 0
},
// fix slight height diff in Firefox:
// https://ant.design/components/auto-complete-cn/#components-auto-complete-demo-certain-category
[`${componentCls}-lg`]: {
lineHeight: token2.calc(token2.lineHeightLG).sub(2e-4).equal({
unit: false
})
},
[`> ${componentCls}-group`]: {
[`> ${componentCls}-group-addon:last-child`]: {
insetInlineStart: -1,
padding: 0,
border: 0,
[`${searchPrefixCls}-button`]: {
paddingTop: 0,
paddingBottom: 0,
borderStartStartRadius: 0,
borderStartEndRadius: token2.borderRadius,
borderEndEndRadius: token2.borderRadius,
borderEndStartRadius: 0,
boxShadow: "none"
},
[`${searchPrefixCls}-button:not(${antCls}-btn-primary)`]: {
color: token2.colorTextDescription,
"&:hover": {
color: token2.colorPrimaryHover
},
"&:active": {
color: token2.colorPrimaryActive
},
[`&${antCls}-btn-loading::before`]: {
insetInlineStart: 0,
insetInlineEnd: 0,
insetBlockStart: 0,
insetBlockEnd: 0
}
}
}
},
[`${searchPrefixCls}-button`]: {
height: token2.controlHeight,
"&:hover, &:focus": {
zIndex: 1
}
},
[`&-large ${searchPrefixCls}-button`]: {
height: token2.controlHeightLG
},
[`&-small ${searchPrefixCls}-button`]: {
height: token2.controlHeightSM
},
"&-rtl": {
direction: "rtl"
},
// ===================== Compact Item Customized Styles =====================
[`&${componentCls}-compact-item`]: {
[`&:not(${componentCls}-compact-last-item)`]: {
[`${componentCls}-group-addon`]: {
[`${componentCls}-search-button`]: {
marginInlineEnd: token2.calc(token2.lineWidth).mul(-1).equal(),
borderRadius: 0
}
}
},
[`&:not(${componentCls}-compact-first-item)`]: {
[`${componentCls},${componentCls}-affix-wrapper`]: {
borderRadius: 0
}
},
[`> ${componentCls}-group-addon ${componentCls}-search-button,
> ${componentCls},
${componentCls}-affix-wrapper`]: {
"&:hover,&:focus,&:active": {
zIndex: 2
}
},
[`> ${componentCls}-affix-wrapper-focused`]: {
zIndex: 2
}
}
}
};
};
const genTextAreaStyle = (token2) => {
const {
componentCls,
paddingLG
} = token2;
const textareaPrefixCls = `${componentCls}-textarea`;
return {
[textareaPrefixCls]: {
position: "relative",
"&-show-count": {
// https://github.com/ant-design/ant-design/issues/33049
[`> ${componentCls}`]: {
height: "100%"
},
[`${componentCls}-data-count`]: {
position: "absolute",
bottom: token2.calc(token2.fontSize).mul(token2.lineHeight).mul(-1).equal(),
insetInlineEnd: 0,
color: token2.colorTextDescription,
whiteSpace: "nowrap",
pointerEvents: "none"
}
},
"&-allow-clear": {
[`> ${componentCls}`]: {
paddingInlineEnd: paddingLG
}
},
[`&-affix-wrapper${textareaPrefixCls}-has-feedback`]: {
[`${componentCls}`]: {
paddingInlineEnd: paddingLG
}
},
[`&-affix-wrapper${componentCls}-affix-wrapper`]: {
padding: 0,
[`> textarea${componentCls}`]: {
fontSize: "inherit",
border: "none",
outline: "none",
"&:focus": {
boxShadow: "none !important"
}
},
[`${componentCls}-suffix`]: {
margin: 0,
"> *:not(:last-child)": {
marginInline: 0
},
// Clear Icon
[`${componentCls}-clear-icon`]: {
position: "absolute",
insetInlineEnd: token2.paddingXS,
insetBlockStart: token2.paddingXS
},
// Feedback Icon
[`${textareaPrefixCls}-suffix`]: {
position: "absolute",
top: 0,
insetInlineEnd: token2.paddingInline,
bottom: 0,
zIndex: 1,
display: "inline-flex",
alignItems: "center",
margin: "auto",
pointerEvents: "none"
}
}
}
}
};
};
const genRangeStyle = (token2) => {
const {
componentCls
} = token2;
return {
[`${componentCls}-out-of-range`]: {
[`&, & input, & textarea, ${componentCls}-show-count-suffix, ${componentCls}-data-count`]: {
color: token2.colorError
}
}
};
};
function initInputToken(token2) {
return merge(token2, {
inputAffixPadding: token2.paddingXXS
});
}
const initComponentToken = (token2) => {
const {
controlHeight,
fontSize,
lineHeight,
lineWidth,
controlHeightSM,
controlHeightLG,
fontSizeLG,
lineHeightLG,
paddingSM,
controlPaddingHorizontalSM,
controlPaddingHorizontal,
colorFillAlter,
colorPrimaryHover,
colorPrimary,
controlOutlineWidth,
controlOutline,
colorErrorOutline,
colorWarningOutline
} = token2;
return {
paddingBlock: Math.max(Math.round((controlHeight - fontSize * lineHeight) / 2 * 10) / 10 - lineWidth, 0),
paddingBlockSM: Math.max(Math.round((controlHeightSM - fontSize * lineHeight) / 2 * 10) / 10 - lineWidth, 0),
paddingBlockLG: Math.ceil((controlHeightLG - fontSizeLG * lineHeightLG) / 2 * 10) / 10 - lineWidth,
paddingInline: paddingSM - lineWidth,
paddingInlineSM: controlPaddingHorizontalSM - lineWidth,
paddingInlineLG: controlPaddingHorizontal - lineWidth,
addonBg: colorFillAlter,
activeBorderColor: colorPrimary,
hoverBorderColor: colorPrimaryHover,
activeShadow: `0 0 0 ${controlOutlineWidth}px ${controlOutline}`,
errorActiveShadow: `0 0 0 ${controlOutlineWidth}px ${colorErrorOutline}`,
warningActiveShadow: `0 0 0 ${controlOutlineWidth}px ${colorWarningOutline}`,
hoverBg: "",
activeBg: ""
};
};
genStyleHooks("Input", (token2) => {
const inputToken = merge(token2, initInputToken(token2));
return [
genInputStyle(inputToken),
genTextAreaStyle(inputToken),
genAffixStyle(inputToken),
genGroupStyle(inputToken),
genSearchInputStyle(inputToken),
genRangeStyle(inputToken),
// =====================================================
// == Space Compact ==
// =====================================================
genCompactItemStyle(inputToken)
];
}, initComponentToken);
var DoubleLeftOutlined$2 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M272.9 512l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L186.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H532c6.7 0 10.4-7.7 6.3-12.9L272.9 512zm304 0l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L490.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H836c6.7 0 10.4-7.7 6.3-12.9L576.9 512z" } }] }, "name": "double-left", "theme": "outlined" };
const DoubleLeftOutlinedSvg = DoubleLeftOutlined$2;
var DoubleLeftOutlined = function DoubleLeftOutlined2(props, ref) {
return /* @__PURE__ */ React__namespace.createElement(AntdIcon, _extends$1({}, props, {
ref,
icon: DoubleLeftOutlinedSvg
}));
};
const DoubleLeftOutlined$1 = /* @__PURE__ */ React__namespace.forwardRef(DoubleLeftOutlined);
var DoubleRightOutlined$2 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z" } }] }, "name": "double-right", "theme": "outlined" };
const DoubleRightOutlinedSvg = DoubleRightOutlined$2;
var DoubleRightOutlined = function DoubleRightOutlined2(props, ref) {
return /* @__PURE__ */ React__namespace.createElement(AntdIcon, _extends$1({}, props, {
ref,
icon: DoubleRightOutlinedSvg
}));
};
const DoubleRightOutlined$1 = /* @__PURE__ */ React__namespace.forwardRef(DoubleRightOutlined);
var locale = {
// Options
items_per_page: "条/页",
jump_to: "跳至",
jump_to_confirm: "确定",
page: "页",
// Pagination
prev_page: "上一页",
next_page: "下一页",
prev_5: "向前 5 页",
next_5: "向后 5 页",
prev_3: "向前 3 页",
next_3: "向后 3 页",
page_size: "页码"
};
var defaultPageSizeOptions = ["10", "20", "50", "100"];
var Options = function Options2(props) {
var _props$pageSizeOption = props.pageSizeOptions, pageSizeOptions = _props$pageSizeOption === void 0 ? defaultPageSizeOptions : _props$pageSizeOption, locale2 = props.locale, changeSize = props.changeSize, pageSize = props.pageSize, goButton = props.goButton, quickGo = props.quickGo, rootPrefixCls = props.rootPrefixCls, Select2 = props.selectComponentClass, selectPrefixCls = props.selectPrefixCls, disabled = props.disabled, buildOptionText = props.buildOptionText;
var _React$useState = React.useState(""), _React$useState2 = _slicedToArray(_React$useState, 2), goInputText = _React$useState2[0], setGoInputText = _React$useState2[1];
var getValidValue = function getValidValue2() {
return !goInputText || Number.isNaN(goInputText) ? void 0 : Number(goInputText);
};
var mergeBuildOptionText = typeof buildOptionText === "function" ? buildOptionText : function(value) {
return "".concat(value, " ").concat(locale2.items_per_page);
};
var changeSizeHandle = function changeSizeHandle2(value) {
changeSize === null || changeSize === void 0 || changeSize(Number(value));
};
var handleChange = function handleChange2(e2) {
setGoInputText(e2.target.value);
};
var handleBlur = function handleBlur2(e2) {
if (goButton || goInputText === "") {
return;
}
setGoInputText("");
if (e2.relatedTarget && (e2.relatedTarget.className.indexOf("".concat(rootPrefixCls, "-item-link")) >= 0 || e2.relatedTarget.className.indexOf("".concat(rootPrefixCls, "-item")) >= 0)) {
return;
}
quickGo === null || quickGo === void 0 || quickGo(getValidValue());
};
var go = function go2(e2) {
if (goInputText === "") {
return;
}
if (e2.keyCode === KeyCode.ENTER || e2.type === "click") {
setGoInputText("");
quickGo === null || quickGo === void 0 || quickGo(getValidValue());
}
};
var getPageSizeOptions = function getPageSizeOptions2() {
if (pageSizeOptions.some(function(option) {
return option.toString() === pageSize.toString();
})) {
return pageSizeOptions;
}
return pageSizeOptions.concat([pageSize.toString()]).sort(function(a, b2) {
var numberA = Number.isNaN(Number(a)) ? 0 : Number(a);
var numberB = Number.isNaN(Number(b2)) ? 0 : Number(b2);
return numberA - numberB;
});
};
var prefixCls = "".concat(rootPrefixCls, "-options");
if (!changeSize && !quickGo) {
return null;
}
var changeSelect = null;
var goInput = null;
var gotoButton = null;
if (changeSize && Select2) {
var options = getPageSizeOptions().map(function(opt, i) {
return /* @__PURE__ */ React.createElement(Select2.Option, {
key: i,
value: opt.toString()
}, mergeBuildOptionText(opt));
});
changeSelect = /* @__PURE__ */ React.createElement(Select2, {
disabled,
prefixCls: selectPrefixCls,
showSearch: false,
className: "".concat(prefixCls, "-size-changer"),
optionLabelProp: "children",
popupMatchSelectWidth: false,
value: (pageSize || pageSizeOptions[0]).toString(),
onChange: changeSizeHandle,
getPopupContainer: function getPopupContainer(triggerNode) {
return triggerNode.parentNode;
},
"aria-label": locale2.page_size,
defaultOpen: false
}, options);
}
if (quickGo) {
if (goButton) {
gotoButton = typeof goButton === "boolean" ? /* @__PURE__ */ React.createElement("button", {
type: "button",
onClick: go,
onKeyUp: go,
disabled,
className: "".concat(prefixCls, "-quick-jumper-button")
}, locale2.jump_to_confirm) : /* @__PURE__ */ React.createElement("span", {
onClick: go,
onKeyUp: go
}, goButton);
}
goInput = /* @__PURE__ */ React.createElement("div", {
className: "".concat(prefixCls, "-quick-jumper")
}, locale2.jump_to, /* @__PURE__ */ React.createElement("input", {
disabled,
type: "text",
value: goInputText,
onChange: handleChange,
onKeyUp: go,
onBlur: handleBlur,
"aria-label": locale2.page
}), locale2.page, gotoButton);
}
return /* @__PURE__ */ React.createElement("li", {
className: prefixCls
}, changeSelect, goInput);
};
var Pager = function Pager2(props) {
var _classNames;
var rootPrefixCls = props.rootPrefixCls, page = props.page, active = props.active, className = props.className, showTitle = props.showTitle, onClick = props.onClick, onKeyPress = props.onKeyPress, itemRender = props.itemRender;
var prefixCls = "".concat(rootPrefixCls, "-item");
var cls = classNames(prefixCls, "".concat(prefixCls, "-").concat(page), (_classNames = {}, _defineProperty(_classNames, "".concat(prefixCls, "-active"), active), _defineProperty(_classNames, "".concat(prefixCls, "-disabled"), !page), _classNames), className);
var handleClick = function handleClick2() {
onClick(page);
};
var handleKeyPress = function handleKeyPress2(e2) {
onKeyPress(e2, onClick, page);
};
var pager = itemRender(page, "page", /* @__PURE__ */ React.createElement("a", {
rel: "nofollow"
}, page));
return pager ? /* @__PURE__ */ React.createElement("li", {
title: showTitle ? String(page) : null,
className: cls,
onClick: handleClick,
onKeyDown: handleKeyPress,
tabIndex: 0
}, pager) : null;
};
var defaultItemRender = function defaultItemRender2(page, type4, element) {
return element;
};
function noop() {
}
function isInteger(v2) {
var value = Number(v2);
return typeof value === "number" && !Number.isNaN(value) && isFinite(value) && Math.floor(value) === value;
}
function calculatePage(p2, pageSize, total) {
var _pageSize = typeof p2 === "undefined" ? pageSize : p2;
return Math.floor((total - 1) / _pageSize) + 1;
}
var Pagination$2 = function Pagination(props) {
var _classNames5;
var _props$prefixCls = props.prefixCls, prefixCls = _props$prefixCls === void 0 ? "rc-pagination" : _props$prefixCls, _props$selectPrefixCl = props.selectPrefixCls, selectPrefixCls = _props$selectPrefixCl === void 0 ? "rc-select" : _props$selectPrefixCl, className = props.className, selectComponentClass = props.selectComponentClass, currentProp = props.current, _props$defaultCurrent = props.defaultCurrent, defaultCurrent = _props$defaultCurrent === void 0 ? 1 : _props$defaultCurrent, _props$total = props.total, total = _props$total === void 0 ? 0 : _props$total, pageSizeProp = props.pageSize, _props$defaultPageSiz = props.defaultPageSize, defaultPageSize = _props$defaultPageSiz === void 0 ? 10 : _props$defaultPageSiz, _props$onChange = props.onChange, onChange = _props$onChange === void 0 ? noop : _props$onChange, hideOnSinglePage = props.hideOnSinglePage, _props$showPrevNextJu = props.showPrevNextJumpers, showPrevNextJumpers = _props$showPrevNextJu === void 0 ? true : _props$showPrevNextJu, showQuickJumper = props.showQuickJumper, showLessItems = props.showLessItems, _props$showTitle = props.showTitle, showTitle = _props$showTitle === void 0 ? true : _props$showTitle, _props$onShowSizeChan = props.onShowSizeChange, onShowSizeChange = _props$onShowSizeChan === void 0 ? noop : _props$onShowSizeChan, _props$locale = props.locale, locale$12 = _props$locale === void 0 ? locale : _props$locale, style2 = props.style, _props$totalBoundaryS = props.totalBoundaryShowSizeChanger, totalBoundaryShowSizeChanger = _props$totalBoundaryS === void 0 ? 50 : _props$totalBoundaryS, disabled = props.disabled, simple = props.simple, showTotal = props.showTotal, showSizeChangerProp = props.showSizeChanger, pageSizeOptions = props.pageSizeOptions, _props$itemRender = props.itemRender, itemRender = _props$itemRender === void 0 ? defaultItemRender : _props$itemRender, jumpPrevIcon = props.jumpPrevIcon, jumpNextIcon = props.jumpNextIcon, prevIcon = props.prevIcon, nextIcon = props.nextIcon;
var paginationRef = React.useRef(null);
var _useMergedState = useMergedState(10, {
value: pageSizeProp,
defaultValue: defaultPageSize
}), _useMergedState2 = _slicedToArray(_useMergedState, 2), pageSize = _useMergedState2[0], setPageSize = _useMergedState2[1];
var _useMergedState3 = useMergedState(1, {
value: currentProp,
defaultValue: defaultCurrent,
postState: function postState(c2) {
return Math.max(1, Math.min(c2, calculatePage(void 0, pageSize, total)));
}
}), _useMergedState4 = _slicedToArray(_useMergedState3, 2), current = _useMergedState4[0], setCurrent = _useMergedState4[1];
var _React$useState = React.useState(current), _React$useState2 = _slicedToArray(_React$useState, 2), internalInputVal = _React$useState2[0], setInternalInputVal = _React$useState2[1];
React.useEffect(function() {
setInternalInputVal(current);
}, [current]);
var jumpPrevPage = Math.max(1, current - (showLessItems ? 3 : 5));
var jumpNextPage = Math.min(calculatePage(void 0, pageSize, total), current + (showLessItems ? 3 : 5));
function getItemIcon(icon2, label) {
var iconNode = icon2 || /* @__PURE__ */ React.createElement("button", {
type: "button",
"aria-label": label,
className: "".concat(prefixCls, "-item-link")
});
if (typeof icon2 === "function") {
iconNode = /* @__PURE__ */ React.createElement(icon2, _objectSpread2({}, props));
}
return iconNode;
}
function getValidValue(e2) {
var inputValue = e2.target.value;
var allPages2 = calculatePage(void 0, pageSize, total);
var value;
if (inputValue === "") {
value = inputValue;
} else if (Number.isNaN(Number(inputValue))) {
value = internalInputVal;
} else if (inputValue >= allPages2) {
value = allPages2;
} else {
value = Number(inputValue);
}
return value;
}
function isValid(page) {
return isInteger(page) && page !== current && isInteger(total) && total > 0;
}
var shouldDisplayQuickJumper = total > pageSize ? showQuickJumper : false;
function handleKeyDown(event) {
if (event.keyCode === KeyCode.UP || event.keyCode === KeyCode.DOWN) {
event.preventDefault();
}
}
function handleKeyUp(event) {
var value = getValidValue(event);
if (value !== internalInputVal) {
setInternalInputVal(value);
}
switch (event.keyCode) {
case KeyCode.ENTER:
handleChange(value);
break;
case KeyCode.UP:
handleChange(value - 1);
break;
case KeyCode.DOWN:
handleChange(value + 1);
break;
}
}
function handleBlur(event) {
handleChange(getValidValue(event));
}
function changePageSize(size) {
var newCurrent = calculatePage(size, pageSize, total);
var nextCurrent = current > newCurrent && newCurrent !== 0 ? newCurrent : current;
setPageSize(size);
setInternalInputVal(nextCurrent);
onShowSizeChange === null || onShowSizeChange === void 0 || onShowSizeChange(current, size);
setCurrent(nextCurrent);
onChange === null || onChange === void 0 || onChange(nextCurrent, size);
}
function handleChange(page) {
if (isValid(page) && !disabled) {
var currentPage = calculatePage(void 0, pageSize, total);
var newPage = page;
if (page > currentPage) {
newPage = currentPage;
} else if (page < 1) {
newPage = 1;
}
if (newPage !== internalInputVal) {
setInternalInputVal(newPage);
}
setCurrent(newPage);
onChange === null || onChange === void 0 || onChange(newPage, pageSize);
return newPage;
}
return current;
}
var hasPrev = current > 1;
var hasNext = current < calculatePage(void 0, pageSize, total);
var showSizeChanger = showSizeChangerProp !== null && showSizeChangerProp !== void 0 ? showSizeChangerProp : total > totalBoundaryShowSizeChanger;
function prevHandle() {
if (hasPrev)
handleChange(current - 1);
}
function nextHandle() {
if (hasNext)
handleChange(current + 1);
}
function jumpPrevHandle() {
handleChange(jumpPrevPage);
}
function jumpNextHandle() {
handleChange(jumpNextPage);
}
function runIfEnter(event, callback) {
if (event.key === "Enter" || event.charCode === KeyCode.ENTER || event.keyCode === KeyCode.ENTER) {
for (var _len = arguments.length, restParams = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
restParams[_key - 2] = arguments[_key];
}
callback.apply(void 0, restParams);
}
}
function runIfEnterPrev(event) {
runIfEnter(event, prevHandle);
}
function runIfEnterNext(event) {
runIfEnter(event, nextHandle);
}
function runIfEnterJumpPrev(event) {
runIfEnter(event, jumpPrevHandle);
}
function runIfEnterJumpNext(event) {
runIfEnter(event, jumpNextHandle);
}
function renderPrev(prevPage2) {
var prevButton = itemRender(prevPage2, "prev", getItemIcon(prevIcon, "prev page"));
return /* @__PURE__ */ React.isValidElement(prevButton) ? /* @__PURE__ */ React.cloneElement(prevButton, {
disabled: !hasPrev
}) : prevButton;
}
function renderNext(nextPage2) {
var nextButton = itemRender(nextPage2, "next", getItemIcon(nextIcon, "next page"));
return /* @__PURE__ */ React.isValidElement(nextButton) ? /* @__PURE__ */ React.cloneElement(nextButton, {
disabled: !hasNext
}) : nextButton;
}
function handleGoTO(event) {
if (event.type === "click" || event.keyCode === KeyCode.ENTER) {
handleChange(internalInputVal);
}
}
var jumpPrev = null;
var dataOrAriaAttributeProps = pickAttrs(props, {
aria: true,
data: true
});
var totalText = showTotal && /* @__PURE__ */ React.createElement("li", {
className: "".concat(prefixCls, "-total-text")
}, showTotal(total, [total === 0 ? 0 : (current - 1) * pageSize + 1, current * pageSize > total ? total : current * pageSize]));
var jumpNext = null;
var allPages = calculatePage(void 0, pageSize, total);
if (hideOnSinglePage && total <= pageSize) {
return null;
}
var pagerList = [];
var pagerProps = {
rootPrefixCls: prefixCls,
onClick: handleChange,
onKeyPress: runIfEnter,
showTitle,
itemRender,
page: -1
};
var prevPage = current - 1 > 0 ? current - 1 : 0;
var nextPage = current + 1 < allPages ? current + 1 : allPages;
var goButton = showQuickJumper && showQuickJumper.goButton;
var gotoButton = goButton;
var simplePager = null;
if (simple) {
if (goButton) {
if (typeof goButton === "boolean") {
gotoButton = /* @__PURE__ */ React.createElement("button", {
type: "button",
onClick: handleGoTO,
onKeyUp: handleGoTO
}, locale$12.jump_to_confirm);
} else {
gotoButton = /* @__PURE__ */ React.createElement("span", {
onClick: handleGoTO,
onKeyUp: handleGoTO
}, goButton);
}
gotoButton = /* @__PURE__ */ React.createElement("li", {
title: showTitle ? "".concat(locale$12.jump_to).concat(current, "/").concat(allPages) : null,
className: "".concat(prefixCls, "-simple-pager")
}, gotoButton);
}
simplePager = /* @__PURE__ */ React.createElement("li", {
title: showTitle ? "".concat(current, "/").concat(allPages) : null,
className: "".concat(prefixCls, "-simple-pager")
}, /* @__PURE__ */ React.createElement("input", {
type: "text",
value: internalInputVal,
disabled,
onKeyDown: handleKeyDown,
onKeyUp: handleKeyUp,
onChange: handleKeyUp,
onBlur: handleBlur,
size: 3
}), /* @__PURE__ */ React.createElement("span", {
className: "".concat(prefixCls, "-slash")
}, "/"), allPages);
}
var pageBufferSize = showLessItems ? 1 : 2;
if (allPages <= 3 + pageBufferSize * 2) {
if (!allPages) {
pagerList.push(/* @__PURE__ */ React.createElement(Pager, _extends$1({}, pagerProps, {
key: "noPager",
page: 1,
className: "".concat(prefixCls, "-item-disabled")
})));
}
for (var i = 1; i <= allPages; i += 1) {
pagerList.push(/* @__PURE__ */ React.createElement(Pager, _extends$1({}, pagerProps, {
key: i,
page: i,
active: current === i
})));
}
} else {
var prevItemTitle = showLessItems ? locale$12.prev_3 : locale$12.prev_5;
var nextItemTitle = showLessItems ? locale$12.next_3 : locale$12.next_5;
var jumpPrevContent = itemRender(jumpPrevPage, "jump-prev", getItemIcon(jumpPrevIcon, "prev page"));
var jumpNextContent = itemRender(jumpNextPage, "jump-next", getItemIcon(jumpNextIcon, "next page"));
if (showPrevNextJumpers) {
jumpPrev = jumpPrevContent ? /* @__PURE__ */ React.createElement("li", {
title: showTitle ? prevItemTitle : null,
key: "prev",
onClick: jumpPrevHandle,
tabIndex: 0,
onKeyDown: runIfEnterJumpPrev,
className: classNames("".concat(prefixCls, "-jump-prev"), _defineProperty({}, "".concat(prefixCls, "-jump-prev-custom-icon"), !!jumpPrevIcon))
}, jumpPrevContent) : null;
jumpNext = jumpNextContent ? /* @__PURE__ */ React.createElement("li", {
title: showTitle ? nextItemTitle : null,
key: "next",
onClick: jumpNextHandle,
tabIndex: 0,
onKeyDown: runIfEnterJumpNext,
className: classNames("".concat(prefixCls, "-jump-next"), _defineProperty({}, "".concat(prefixCls, "-jump-next-custom-icon"), !!jumpNextIcon))
}, jumpNextContent) : null;
}
var left = Math.max(1, current - pageBufferSize);
var right = Math.min(current + pageBufferSize, allPages);
if (current - 1 <= pageBufferSize) {
right = 1 + pageBufferSize * 2;
}
if (allPages - current <= pageBufferSize) {
left = allPages - pageBufferSize * 2;
}
for (var _i = left; _i <= right; _i += 1) {
pagerList.push(/* @__PURE__ */ React.createElement(Pager, _extends$1({}, pagerProps, {
key: _i,
page: _i,
active: current === _i
})));
}
if (current - 1 >= pageBufferSize * 2 && current !== 1 + 2) {
pagerList[0] = /* @__PURE__ */ React.cloneElement(pagerList[0], {
className: classNames("".concat(prefixCls, "-item-after-jump-prev"), pagerList[0].props.className)
});
pagerList.unshift(jumpPrev);
}
if (allPages - current >= pageBufferSize * 2 && current !== allPages - 2) {
var lastOne = pagerList[pagerList.length - 1];
pagerList[pagerList.length - 1] = /* @__PURE__ */ React.cloneElement(lastOne, {
className: classNames("".concat(prefixCls, "-item-before-jump-next"), lastOne.props.className)
});
pagerList.push(jumpNext);
}
if (left !== 1) {
pagerList.unshift(/* @__PURE__ */ React.createElement(Pager, _extends$1({}, pagerProps, {
key: 1,
page: 1
})));
}
if (right !== allPages) {
pagerList.push(/* @__PURE__ */ React.createElement(Pager, _extends$1({}, pagerProps, {
key: allPages,
page: allPages
})));
}
}
var prev2 = renderPrev(prevPage);
if (prev2) {
var prevDisabled = !hasPrev || !allPages;
prev2 = /* @__PURE__ */ React.createElement("li", {
title: showTitle ? locale$12.prev_page : null,
onClick: prevHandle,
tabIndex: prevDisabled ? null : 0,
onKeyDown: runIfEnterPrev,
className: classNames("".concat(prefixCls, "-prev"), _defineProperty({}, "".concat(prefixCls, "-disabled"), prevDisabled)),
"aria-disabled": prevDisabled
}, prev2);
}
var next2 = renderNext(nextPage);
if (next2) {
var nextDisabled, nextTabIndex;
if (simple) {
nextDisabled = !hasNext;
nextTabIndex = hasPrev ? 0 : null;
} else {
nextDisabled = !hasNext || !allPages;
nextTabIndex = nextDisabled ? null : 0;
}
next2 = /* @__PURE__ */ React.createElement("li", {
title: showTitle ? locale$12.next_page : null,
onClick: nextHandle,
tabIndex: nextTabIndex,
onKeyDown: runIfEnterNext,
className: classNames("".concat(prefixCls, "-next"), _defineProperty({}, "".concat(prefixCls, "-disabled"), nextDisabled)),
"aria-disabled": nextDisabled
}, next2);
}
var cls = classNames(prefixCls, className, (_classNames5 = {}, _defineProperty(_classNames5, "".concat(prefixCls, "-simple"), simple), _defineProperty(_classNames5, "".concat(prefixCls, "-disabled"), disabled), _classNames5));
return /* @__PURE__ */ React.createElement("ul", _extends$1({
className: cls,
style: style2,
ref: paginationRef
}, dataOrAriaAttributeProps), totalText, prev2, simple ? simplePager : pagerList, next2, /* @__PURE__ */ React.createElement(Options, {
locale: locale$12,
rootPrefixCls: prefixCls,
disabled,
selectComponentClass,
selectPrefixCls,
changeSize: showSizeChanger ? changePageSize : null,
pageSize,
pageSizeOptions,
quickGo: shouldDisplayQuickJumper ? handleChange : null,
goButton: gotoButton
}));
};
const MiniSelect = (props) => /* @__PURE__ */ React__namespace.createElement(Select$1, Object.assign({}, props, {
showSearch: true,
size: "small"
}));
const MiddleSelect = (props) => /* @__PURE__ */ React__namespace.createElement(Select$1, Object.assign({}, props, {
showSearch: true,
size: "middle"
}));
MiniSelect.Option = Select$1.Option;
MiddleSelect.Option = Select$1.Option;
const genPaginationDisabledStyle = (token2) => {
const {
componentCls
} = token2;
return {
[`${componentCls}-disabled`]: {
"&, &:hover": {
cursor: "not-allowed",
[`${componentCls}-item-link`]: {
color: token2.colorTextDisabled,
cursor: "not-allowed"
}
},
"&:focus-visible": {
cursor: "not-allowed",
[`${componentCls}-item-link`]: {
color: token2.colorTextDisabled,
cursor: "not-allowed"
}
}
},
[`&${componentCls}-disabled`]: {
cursor: "not-allowed",
[`${componentCls}-item`]: {
cursor: "not-allowed",
"&:hover, &:active": {
backgroundColor: "transparent"
},
a: {
color: token2.colorTextDisabled,
backgroundColor: "transparent",
border: "none",
cursor: "not-allowed"
},
"&-active": {
borderColor: token2.colorBorder,
backgroundColor: token2.itemActiveBgDisabled,
"&:hover, &:active": {
backgroundColor: token2.itemActiveBgDisabled
},
a: {
color: token2.itemActiveColorDisabled
}
}
},
[`${componentCls}-item-link`]: {
color: token2.colorTextDisabled,
cursor: "not-allowed",
"&:hover, &:active": {
backgroundColor: "transparent"
},
[`${componentCls}-simple&`]: {
backgroundColor: "transparent",
"&:hover, &:active": {
backgroundColor: "transparent"
}
}
},
[`${componentCls}-simple-pager`]: {
color: token2.colorTextDisabled
},
[`${componentCls}-jump-prev, ${componentCls}-jump-next`]: {
[`${componentCls}-item-link-icon`]: {
opacity: 0
},
[`${componentCls}-item-ellipsis`]: {
opacity: 1
}
}
},
[`&${componentCls}-simple`]: {
[`${componentCls}-prev, ${componentCls}-next`]: {
[`&${componentCls}-disabled ${componentCls}-item-link`]: {
"&:hover, &:active": {
backgroundColor: "transparent"
}
}
}
}
};
};
const genPaginationMiniStyle = (token2) => {
const {
componentCls
} = token2;
return {
[`&${componentCls}-mini ${componentCls}-total-text, &${componentCls}-mini ${componentCls}-simple-pager`]: {
height: token2.itemSizeSM,
lineHeight: unit$1(token2.itemSizeSM)
},
[`&${componentCls}-mini ${componentCls}-item`]: {
minWidth: token2.itemSizeSM,
height: token2.itemSizeSM,
margin: 0,
lineHeight: unit$1(token2.calc(token2.itemSizeSM).sub(2).equal())
},
[`&${componentCls}-mini:not(${componentCls}-disabled) ${componentCls}-item:not(${componentCls}-item-active)`]: {
backgroundColor: "transparent",
borderColor: "transparent",
"&:hover": {
backgroundColor: token2.colorBgTextHover
},
"&:active": {
backgroundColor: token2.colorBgTextActive
}
},
[`&${componentCls}-mini ${componentCls}-prev, &${componentCls}-mini ${componentCls}-next`]: {
minWidth: token2.itemSizeSM,
height: token2.itemSizeSM,
margin: 0,
lineHeight: unit$1(token2.itemSizeSM)
},
[`&${componentCls}-mini:not(${componentCls}-disabled)`]: {
[`${componentCls}-prev, ${componentCls}-next`]: {
[`&:hover ${componentCls}-item-link`]: {
backgroundColor: token2.colorBgTextHover
},
[`&:active ${componentCls}-item-link`]: {
backgroundColor: token2.colorBgTextActive
},
[`&${componentCls}-disabled:hover ${componentCls}-item-link`]: {
backgroundColor: "transparent"
}
}
},
[`
&${componentCls}-mini ${componentCls}-prev ${componentCls}-item-link,
&${componentCls}-mini ${componentCls}-next ${componentCls}-item-link
`]: {
backgroundColor: "transparent",
borderColor: "transparent",
"&::after": {
height: token2.itemSizeSM,
lineHeight: unit$1(token2.itemSizeSM)
}
},
[`&${componentCls}-mini ${componentCls}-jump-prev, &${componentCls}-mini ${componentCls}-jump-next`]: {
height: token2.itemSizeSM,
marginInlineEnd: 0,
lineHeight: unit$1(token2.itemSizeSM)
},
[`&${componentCls}-mini ${componentCls}-options`]: {
marginInlineStart: token2.paginationMiniOptionsMarginInlineStart,
[`&-size-changer`]: {
top: token2.miniOptionsSizeChangerTop
},
[`&-quick-jumper`]: {
height: token2.itemSizeSM,
lineHeight: unit$1(token2.itemSizeSM),
input: Object.assign(Object.assign({}, genInputSmallStyle(token2)), {
width: token2.paginationMiniQuickJumperInputWidth,
height: token2.controlHeightSM
})
}
}
};
};
const genPaginationSimpleStyle = (token2) => {
const {
componentCls
} = token2;
return {
[`
&${componentCls}-simple ${componentCls}-prev,
&${componentCls}-simple ${componentCls}-next
`]: {
height: token2.itemSizeSM,
lineHeight: unit$1(token2.itemSizeSM),
verticalAlign: "top",
[`${componentCls}-item-link`]: {
height: token2.itemSizeSM,
backgroundColor: "transparent",
border: 0,
"&:hover": {
backgroundColor: token2.colorBgTextHover
},
"&:active": {
backgroundColor: token2.colorBgTextActive
},
"&::after": {
height: token2.itemSizeSM,
lineHeight: unit$1(token2.itemSizeSM)
}
}
},
[`&${componentCls}-simple ${componentCls}-simple-pager`]: {
display: "inline-block",
height: token2.itemSizeSM,
marginInlineEnd: token2.marginXS,
input: {
boxSizing: "border-box",
height: "100%",
marginInlineEnd: token2.marginXS,
padding: `0 ${unit$1(token2.paginationItemPaddingInline)}`,
textAlign: "center",
backgroundColor: token2.itemInputBg,
border: `${unit$1(token2.lineWidth)} ${token2.lineType} ${token2.colorBorder}`,
borderRadius: token2.borderRadius,
outline: "none",
transition: `border-color ${token2.motionDurationMid}`,
color: "inherit",
"&:hover": {
borderColor: token2.colorPrimary
},
"&:focus": {
borderColor: token2.colorPrimaryHover,
boxShadow: `${unit$1(token2.inputOutlineOffset)} 0 ${unit$1(token2.controlOutlineWidth)} ${token2.controlOutline}`
},
"&[disabled]": {
color: token2.colorTextDisabled,
backgroundColor: token2.colorBgContainerDisabled,
borderColor: token2.colorBorder,
cursor: "not-allowed"
}
}
}
};
};
const genPaginationJumpStyle = (token2) => {
const {
componentCls
} = token2;
return {
[`${componentCls}-jump-prev, ${componentCls}-jump-next`]: {
outline: 0,
[`${componentCls}-item-container`]: {
position: "relative",
[`${componentCls}-item-link-icon`]: {
color: token2.colorPrimary,
fontSize: token2.fontSizeSM,
opacity: 0,
transition: `all ${token2.motionDurationMid}`,
"&-svg": {
top: 0,
insetInlineEnd: 0,
bottom: 0,
insetInlineStart: 0,
margin: "auto"
}
},
[`${componentCls}-item-ellipsis`]: {
position: "absolute",
top: 0,
insetInlineEnd: 0,
bottom: 0,
insetInlineStart: 0,
display: "block",
margin: "auto",
color: token2.colorTextDisabled,
fontFamily: "Arial, Helvetica, sans-serif",
letterSpacing: token2.paginationEllipsisLetterSpacing,
textAlign: "center",
textIndent: token2.paginationEllipsisTextIndent,
opacity: 1,
transition: `all ${token2.motionDurationMid}`
}
},
"&:hover": {
[`${componentCls}-item-link-icon`]: {
opacity: 1
},
[`${componentCls}-item-ellipsis`]: {
opacity: 0
}
}
},
[`
${componentCls}-prev,
${componentCls}-jump-prev,
${componentCls}-jump-next
`]: {
marginInlineEnd: token2.marginXS
},
[`
${componentCls}-prev,
${componentCls}-next,
${componentCls}-jump-prev,
${componentCls}-jump-next
`]: {
display: "inline-block",
minWidth: token2.itemSize,
height: token2.itemSize,
color: token2.colorText,
fontFamily: token2.fontFamily,
lineHeight: `${unit$1(token2.itemSize)}`,
textAlign: "center",
verticalAlign: "middle",
listStyle: "none",
borderRadius: token2.borderRadius,
cursor: "pointer",
transition: `all ${token2.motionDurationMid}`
},
[`${componentCls}-prev, ${componentCls}-next`]: {
fontFamily: "Arial, Helvetica, sans-serif",
outline: 0,
button: {
color: token2.colorText,
cursor: "pointer",
userSelect: "none"
},
[`${componentCls}-item-link`]: {
display: "block",
width: "100%",
height: "100%",
padding: 0,
fontSize: token2.fontSizeSM,
textAlign: "center",
backgroundColor: "transparent",
border: `${unit$1(token2.lineWidth)} ${token2.lineType} transparent`,
borderRadius: token2.borderRadius,
outline: "none",
transition: `all ${token2.motionDurationMid}`
},
[`&:hover ${componentCls}-item-link`]: {
backgroundColor: token2.colorBgTextHover
},
[`&:active ${componentCls}-item-link`]: {
backgroundColor: token2.colorBgTextActive
},
[`&${componentCls}-disabled:hover`]: {
[`${componentCls}-item-link`]: {
backgroundColor: "transparent"
}
}
},
[`${componentCls}-slash`]: {
marginInlineEnd: token2.paginationSlashMarginInlineEnd,
marginInlineStart: token2.paginationSlashMarginInlineStart
},
[`${componentCls}-options`]: {
display: "inline-block",
marginInlineStart: token2.margin,
verticalAlign: "middle",
"&-size-changer.-select": {
display: "inline-block",
width: "auto"
},
"&-quick-jumper": {
display: "inline-block",
height: token2.controlHeight,
marginInlineStart: token2.marginXS,
lineHeight: unit$1(token2.controlHeight),
verticalAlign: "top",
input: Object.assign(Object.assign({}, genBasicInputStyle(token2)), {
width: token2.calc(token2.controlHeightLG).mul(1.25).equal(),
height: token2.controlHeight,
boxSizing: "border-box",
margin: 0,
marginInlineStart: token2.marginXS,
marginInlineEnd: token2.marginXS
})
}
}
};
};
const genPaginationItemStyle = (token2) => {
const {
componentCls
} = token2;
return {
[`${componentCls}-item`]: {
display: "inline-block",
minWidth: token2.itemSize,
height: token2.itemSize,
marginInlineEnd: token2.marginXS,
fontFamily: token2.fontFamily,
lineHeight: unit$1(token2.calc(token2.itemSize).sub(2).equal()),
textAlign: "center",
verticalAlign: "middle",
listStyle: "none",
backgroundColor: "transparent",
border: `${unit$1(token2.lineWidth)} ${token2.lineType} transparent`,
borderRadius: token2.borderRadius,
outline: 0,
cursor: "pointer",
userSelect: "none",
a: {
display: "block",
padding: `0 ${unit$1(token2.paginationItemPaddingInline)}`,
color: token2.colorText,
"&:hover": {
textDecoration: "none"
}
},
[`&:not(${componentCls}-item-active)`]: {
"&:hover": {
transition: `all ${token2.motionDurationMid}`,
backgroundColor: token2.colorBgTextHover
},
"&:active": {
backgroundColor: token2.colorBgTextActive
}
},
"&-active": {
fontWeight: token2.fontWeightStrong,
backgroundColor: token2.itemActiveBg,
borderColor: token2.colorPrimary,
a: {
color: token2.colorPrimary
},
"&:hover": {
borderColor: token2.colorPrimaryHover
},
"&:hover a": {
color: token2.colorPrimaryHover
}
}
}
};
};
const genPaginationStyle = (token2) => {
const {
componentCls
} = token2;
return {
[componentCls]: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, resetComponent(token2)), {
"ul, ol": {
margin: 0,
padding: 0,
listStyle: "none"
},
"&::after": {
display: "block",
clear: "both",
height: 0,
overflow: "hidden",
visibility: "hidden",
content: '""'
},
[`${componentCls}-total-text`]: {
display: "inline-block",
height: token2.itemSize,
marginInlineEnd: token2.marginXS,
lineHeight: unit$1(token2.calc(token2.itemSize).sub(2).equal()),
verticalAlign: "middle"
}
}), genPaginationItemStyle(token2)), genPaginationJumpStyle(token2)), genPaginationSimpleStyle(token2)), genPaginationMiniStyle(token2)), genPaginationDisabledStyle(token2)), {
// media query style
[`@media only screen and (max-width: ${token2.screenLG}px)`]: {
[`${componentCls}-item`]: {
"&-after-jump-prev, &-before-jump-next": {
display: "none"
}
}
},
[`@media only screen and (max-width: ${token2.screenSM}px)`]: {
[`${componentCls}-options`]: {
display: "none"
}
}
}),
// rtl style
[`&${token2.componentCls}-rtl`]: {
direction: "rtl"
}
};
};
const genPaginationFocusStyle = (token2) => {
const {
componentCls
} = token2;
return {
[`${componentCls}:not(${componentCls}-disabled)`]: {
[`${componentCls}-item`]: Object.assign({}, genFocusStyle(token2)),
[`${componentCls}-jump-prev, ${componentCls}-jump-next`]: {
"&:focus-visible": Object.assign({
[`${componentCls}-item-link-icon`]: {
opacity: 1
},
[`${componentCls}-item-ellipsis`]: {
opacity: 0
}
}, genFocusOutline(token2))
},
[`${componentCls}-prev, ${componentCls}-next`]: {
[`&:focus-visible ${componentCls}-item-link`]: Object.assign({}, genFocusOutline(token2))
}
}
};
};
const prepareComponentToken = (token2) => Object.assign({
itemBg: token2.colorBgContainer,
itemSize: token2.controlHeight,
itemSizeSM: token2.controlHeightSM,
itemActiveBg: token2.colorBgContainer,
itemLinkBg: token2.colorBgContainer,
itemActiveColorDisabled: token2.colorTextDisabled,
itemActiveBgDisabled: token2.controlItemBgActiveDisabled,
itemInputBg: token2.colorBgContainer,
miniOptionsSizeChangerTop: 0
}, initComponentToken(token2));
const prepareToken = (token2) => merge(token2, {
inputOutlineOffset: 0,
paginationMiniOptionsMarginInlineStart: token2.calc(token2.marginXXS).div(2).equal(),
paginationMiniQuickJumperInputWidth: token2.calc(token2.controlHeightLG).mul(1.1).equal(),
paginationItemPaddingInline: token2.calc(token2.marginXXS).mul(1.5).equal(),
paginationEllipsisLetterSpacing: token2.calc(token2.marginXXS).div(2).equal(),
paginationSlashMarginInlineStart: token2.marginXXS,
paginationSlashMarginInlineEnd: token2.marginSM,
paginationEllipsisTextIndent: "0.13em"
// magic for ui experience
}, initInputToken(token2));
const useStyle = genStyleHooks("Pagination", (token2) => {
const paginationToken = prepareToken(token2);
return [genPaginationStyle(paginationToken), genPaginationFocusStyle(paginationToken)];
}, prepareComponentToken);
const genBorderedStyle = (token2) => {
const {
componentCls
} = token2;
return {
[`${componentCls}${componentCls}-bordered${componentCls}-disabled:not(${componentCls}-mini)`]: {
"&, &:hover": {
[`${componentCls}-item-link`]: {
borderColor: token2.colorBorder
}
},
"&:focus-visible": {
[`${componentCls}-item-link`]: {
borderColor: token2.colorBorder
}
},
[`${componentCls}-item, ${componentCls}-item-link`]: {
backgroundColor: token2.colorBgContainerDisabled,
borderColor: token2.colorBorder,
[`&:hover:not(${componentCls}-item-active)`]: {
backgroundColor: token2.colorBgContainerDisabled,
borderColor: token2.colorBorder,
a: {
color: token2.colorTextDisabled
}
},
[`&${componentCls}-item-active`]: {
backgroundColor: token2.itemActiveBgDisabled
}
},
[`${componentCls}-prev, ${componentCls}-next`]: {
"&:hover button": {
backgroundColor: token2.colorBgContainerDisabled,
borderColor: token2.colorBorder,
color: token2.colorTextDisabled
},
[`${componentCls}-item-link`]: {
backgroundColor: token2.colorBgContainerDisabled,
borderColor: token2.colorBorder
}
}
},
[`${componentCls}${componentCls}-bordered:not(${componentCls}-mini)`]: {
[`${componentCls}-prev, ${componentCls}-next`]: {
"&:hover button": {
borderColor: token2.colorPrimaryHover,
backgroundColor: token2.itemBg
},
[`${componentCls}-item-link`]: {
backgroundColor: token2.itemLinkBg,
borderColor: token2.colorBorder
},
[`&:hover ${componentCls}-item-link`]: {
borderColor: token2.colorPrimary,
backgroundColor: token2.itemBg,
color: token2.colorPrimary
},
[`&${componentCls}-disabled`]: {
[`${componentCls}-item-link`]: {
borderColor: token2.colorBorder,
color: token2.colorTextDisabled
}
}
},
[`${componentCls}-item`]: {
backgroundColor: token2.itemBg,
border: `${unit$1(token2.lineWidth)} ${token2.lineType} ${token2.colorBorder}`,
[`&:hover:not(${componentCls}-item-active)`]: {
borderColor: token2.colorPrimary,
backgroundColor: token2.itemBg,
a: {
color: token2.colorPrimary
}
},
"&-active": {
borderColor: token2.colorPrimary
}
}
}
};
};
const BorderedStyle = genSubStyleComponent(["Pagination", "bordered"], (token2) => {
const paginationToken = prepareToken(token2);
return [genBorderedStyle(paginationToken)];
}, prepareComponentToken);
var __rest = globalThis && globalThis.__rest || function(s, e2) {
var t2 = {};
for (var p2 in s)
if (Object.prototype.hasOwnProperty.call(s, p2) && e2.indexOf(p2) < 0)
t2[p2] = s[p2];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
if (e2.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i]))
t2[p2[i]] = s[p2[i]];
}
return t2;
};
const Pagination2 = (props) => {
const {
prefixCls: customizePrefixCls,
selectPrefixCls: customizeSelectPrefixCls,
className,
rootClassName,
style: style2,
size: customizeSize,
locale: customLocale,
selectComponentClass,
responsive,
showSizeChanger
} = props, restProps = __rest(props, ["prefixCls", "selectPrefixCls", "className", "rootClassName", "style", "size", "locale", "selectComponentClass", "responsive", "showSizeChanger"]);
const {
xs
} = useBreakpoint(responsive);
const [, token2] = useToken();
const {
getPrefixCls,
direction,
pagination = {}
} = React__namespace.useContext(ConfigContext);
const prefixCls = getPrefixCls("pagination", customizePrefixCls);
const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);
const mergedShowSizeChanger = showSizeChanger !== null && showSizeChanger !== void 0 ? showSizeChanger : pagination.showSizeChanger;
const iconsProps = React__namespace.useMemo(() => {
const ellipsis2 = /* @__PURE__ */ React__namespace.createElement("span", {
className: `${prefixCls}-item-ellipsis`
}, "•••");
const prevIcon = /* @__PURE__ */ React__namespace.createElement("button", {
className: `${prefixCls}-item-link`,
type: "button",
tabIndex: -1
}, direction === "rtl" ? /* @__PURE__ */ React__namespace.createElement(RightOutlined$1, null) : /* @__PURE__ */ React__namespace.createElement(LeftOutlined$1, null));
const nextIcon = /* @__PURE__ */ React__namespace.createElement("button", {
className: `${prefixCls}-item-link`,
type: "button",
tabIndex: -1
}, direction === "rtl" ? /* @__PURE__ */ React__namespace.createElement(LeftOutlined$1, null) : /* @__PURE__ */ React__namespace.createElement(RightOutlined$1, null));
const jumpPrevIcon = /* @__PURE__ */ React__namespace.createElement("a", {
className: `${prefixCls}-item-link`
}, /* @__PURE__ */ React__namespace.createElement("div", {
className: `${prefixCls}-item-container`
}, direction === "rtl" ? /* @__PURE__ */ React__namespace.createElement(DoubleRightOutlined$1, {
className: `${prefixCls}-item-link-icon`
}) : /* @__PURE__ */ React__namespace.createElement(DoubleLeftOutlined$1, {
className: `${prefixCls}-item-link-icon`
}), ellipsis2));
const jumpNextIcon = /* @__PURE__ */ React__namespace.createElement("a", {
className: `${prefixCls}-item-link`
}, /* @__PURE__ */ React__namespace.createElement("div", {
className: `${prefixCls}-item-container`
}, direction === "rtl" ? /* @__PURE__ */ React__namespace.createElement(DoubleLeftOutlined$1, {
className: `${prefixCls}-item-link-icon`
}) : /* @__PURE__ */ React__namespace.createElement(DoubleRightOutlined$1, {
className: `${prefixCls}-item-link-icon`
}), ellipsis2));
return {
prevIcon,
nextIcon,
jumpPrevIcon,
jumpNextIcon
};
}, [direction, prefixCls]);
const [contextLocale] = useLocale$1("Pagination", locale$4);
const locale2 = Object.assign(Object.assign({}, contextLocale), customLocale);
const mergedSize = useSize$1(customizeSize);
const isSmall = mergedSize === "small" || !!(xs && !mergedSize && responsive);
const selectPrefixCls = getPrefixCls("select", customizeSelectPrefixCls);
const extendedClassName = classNames({
[`${prefixCls}-mini`]: isSmall,
[`${prefixCls}-rtl`]: direction === "rtl",
[`${prefixCls}-bordered`]: token2.wireframe
}, pagination === null || pagination === void 0 ? void 0 : pagination.className, className, rootClassName, hashId, cssVarCls);
const mergedStyle = Object.assign(Object.assign({}, pagination === null || pagination === void 0 ? void 0 : pagination.style), style2);
return wrapCSSVar(/* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, token2.wireframe && /* @__PURE__ */ React__namespace.createElement(BorderedStyle, {
prefixCls
}), /* @__PURE__ */ React__namespace.createElement(Pagination$2, Object.assign({}, iconsProps, restProps, {
style: mergedStyle,
prefixCls,
selectPrefixCls,
className: extendedClassName,
selectComponentClass: selectComponentClass || (isSmall ? MiniSelect : MiddleSelect),
locale: locale2,
showSizeChanger: mergedShowSizeChanger
}))));
};
const Pagination$1 = Pagination2;
function ThemePanel({ show }) {
const [entityData, setEntityData] = React.useState({
courseList: [],
page: {},
id: ""
});
const [subjectId, setSubjectId] = React.useState("");
const [groupList, setGroupList] = React.useState([]);
const [currentPage, setCurrentPage] = React.useState(1);
const [statusFilter, setStatusFilter] = React.useState("2");
const fetchCourseList = (page, subjectId2 = "") => {
return getMyAreaInfoCourse(page, subjectId2, statusFilter).then((res) => {
console.log(res.data);
setEntityData(res.data.entity);
});
};
const handlePageChange = (page) => {
setCurrentPage(page);
return fetchCourseList(page, subjectId);
};
React.useEffect(() => {
show && fetchCourseList(currentPage, subjectId);
}, [show, subjectId, statusFilter]);
React.useEffect(() => {
getMyAreaInfoResourceLibGroup().then((res) => {
const ll = res.data.entity.planLibGroupList;
setGroupList(ll.map((item) => ({ value: item.id, label: item.name })));
});
}, []);
const handleGroupSelect = (subjectId2) => {
setCurrentPage(1);
setSubjectId(subjectId2);
};
const handleCourseSubmit = (courseId) => {
return info(courseId).then((res) => {
const entity = res.data.entity;
console.log(entity);
entity.kpointList.map(async (kItem) => {
let kps = [kItem];
if (kItem.childKpointList && kItem.childKpointList.length > 0) {
kps = kItem.childKpointList;
}
for (let idx = 0; idx < kps.length; idx++) {
const k2 = kps[idx];
const kpointId = k2.id;
const playedTime = k2.userPlayTime || k2.userKopintPlayTime || 0;
const node2 = entity.courseNode.filter(
(i) => i.kpointId == kpointId
)[0];
const courseTime = node2.courseSeconds + node2.courseMinutes * 60;
const step = 179;
for (let i = playedTime + step; i <= courseTime + step; i += step) {
const n2 = {
courseId: entity.course.id,
type: "playback",
kpointId,
studyTime: i,
breakpoint: 1
};
await sleep(500);
await playtimeV2(n2);
}
}
});
return fetchCourseList(currentPage, subjectId);
});
};
const oneClick = async () => {
const courseList = entityData.courseList;
for (let i = 0; i < courseList.length; i++) {
const course = courseList[i];
console.log(course.name, course.id, course.courseProgress);
if (course.courseProgress >= 100) {
continue;
} else {
console.log("启动", course.name);
await handleCourseSubmit(course.id);
}
}
fetchCourseList(currentPage, subjectId);
};
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
"div",
{
className: "el-popover cbg_feedbackPoppver",
style: {
width: 460,
maxHeight: 680,
overflow: "auto",
position: "fixed",
bottom: 80,
right: 20,
transformOrigin: "right center",
zIndex: 100,
display: show ? "" : "none"
},
children: [
groupList.length > 1 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "el-row", children: [
"分类:",
/* @__PURE__ */ jsxRuntimeExports.jsx(
Select$1,
{
options: [{ value: "", label: "全部" }, ...groupList],
style: { minWidth: 180 },
onChange: (value) => {
handleGroupSelect(value);
}
}
),
/* @__PURE__ */ jsxRuntimeExports.jsx(
"div",
{
className: "el-divider el-divider--horizontal",
style: { margin: "10px 0" }
}
)
] }),
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "el-row", style: { marginBottom: 14 }, children: [
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "el-col-6", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Button$1, { type: "primary", onClick: oneClick, children: "一键通关!" }) }),
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "el-col-12", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Button$1, { onClick: () => {
fetchCourseList(currentPage, subjectId);
}, children: "刷新" }) }),
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "el-col-6", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
Select$1,
{
options: [{ value: "1", label: "全部" }, { value: "2", label: "未学习" }, { value: "3", label: "已完成" }, { value: "4", label: "未完成" }],
style: { minWidth: 120 },
onChange: (value) => {
setStatusFilter(value);
},
defaultValue: "2"
}
) })
] }),
entityData.courseList.map((i) => /* @__PURE__ */ jsxRuntimeExports.jsx(CourseItem, { item: i, onSubmit: handleCourseSubmit }, i.id)),
/* @__PURE__ */ jsxRuntimeExports.jsx(
Pagination$1,
{
current: entityData.page.currentPage,
total: entityData.page.totalPageSize * 10,
hideOnSinglePage: true,
showSizeChanger: false,
onChange: handlePageChange
}
),
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "sticky-text", children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { style: { fontSize: 16, fontWeight: 800 }, children: "点修改后不要马上关闭页面,等1分钟刷新确认进度(非实时,可进入课程内确认)" }) })
]
}
);
}
function CourseItem({ item, onSubmit }) {
const [loading, setLoading] = React.useState(false);
const handleClick = (kid) => {
setLoading(true);
onSubmit(kid).then(() => {
setLoading(false);
});
};
const finished = React.useMemo(() => {
return item.courseProgress >= 100;
}, [item]);
const buttonRender = (item2) => {
const { courseProgress, id } = item2;
if (courseProgress < 100) {
return /* @__PURE__ */ jsxRuntimeExports.jsx(
"button",
{
className: `el-button el-button--primary el-button--small ${loading ? "is-loading" : ""}`,
onClick: () => handleClick(id),
disabled: loading || finished,
children: loading ? "修改中" : finished ? "已启动" : "修改"
}
);
} else {
return /* @__PURE__ */ jsxRuntimeExports.jsx("button", { className: "el-button el-button--success el-button--small is-disabled", children: "已完成" });
}
};
return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "el-row", children: [
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "el-col-20", children: [
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "el-col-22", children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { style: { fontSize: 14 }, children: item.name }) }),
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "el-col-18", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "el-progress el-progress--line", children: [
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "el-progress-bar", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
"div",
{
className: "el-progress-bar__outer",
style: { height: 6, backgroundColor: "rgb(235, 238, 245)" },
children: /* @__PURE__ */ jsxRuntimeExports.jsx(
"div",
{
className: "el-progress-bar__inner",
style: { width: `${item.courseProgress}%` }
}
)
}
) }),
/* @__PURE__ */ jsxRuntimeExports.jsxs(
"div",
{
className: "el-progress__text",
style: { fontSize: "14px", color: "rgb(96, 98, 102)" },
children: [
item.courseProgress,
"%"
]
}
)
] }) })
] }),
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "el-col-4", children: buttonRender(item) })
] }),
/* @__PURE__ */ jsxRuntimeExports.jsx(
"div",
{
className: "el-divider el-divider--horizontal",
style: { margin: "10px 0" }
}
)
] });
}
function PartyPanel({ show }) {
const getCookie = (name) => {
let cookies2 = document.cookie.split("; ");
for (let i = 0; i < cookies2.length; i++) {
let parts = cookies2[i].split("=");
if (parts[0] === name) {
return parts[1];
}
}
return "";
};
const fetchCourseInfo = async () => {
const s = window.location.search;
const start = s.indexOf("courseId=") + 9;
const end = start + 36;
const partyCourseId = s.slice(start, end);
const token2 = getCookie("token");
const url2 = "https://party.chinaunicom.cn/api/xxpt/courseGetOrSet/getCourseDetailById?token=" + token2 + "&courseId=" + partyCourseId;
return await fetch(url2).then((res) => res.json()).then((res) => {
console.log(res);
return res.data.courseUrl;
});
};
React.useEffect(() => {
async function ins() {
if (document.querySelectorAll("#cmsang").length > 0) {
return;
}
const url2 = await fetchCourseInfo();
console.log(url2);
const b2 = document.querySelector(".detail_title>div");
const aa = document.createElement("a");
aa.setAttribute("href", url2);
aa.setAttribute("id", "cmsang");
aa.setAttribute("target", "__blank");
aa.setAttribute("style", "margin-left:10px;margin-right:10px");
aa.innerText = "点击跳转到党校学习";
b2.appendChild(aa);
}
ins();
}, []);
}
const icon = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAaIAAAGiCAYAAAClC8JvAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAP+lSURBVHhe7P2Fe1zX2fYNv//J873H+zzPfbcNGGVZsixGs4WGMKd32zSFFJK2SdMmDcfsmAS2JIuZDZJGAyLLFqOZkxhjts/vvNaardkajWQ5ke3AjI5Te8+m2Xvtta7fuhb+P2VlZfDqx6/S0tJ7UklZCUrLSnnuaJWWcl9JMcpk6ZSn476tjGt+W7mu5TksRmvk77vk6Viv7k2ewtUsT+e4a+Q5I9+3K866JPFdy/P1vPo+qLy8HHl5efhf/+t/4f+B9+P9eD/ej/fj/TyEz+XLl70g+il97ty5M6zbt2+PKeOYW/zjFvBonj1Sd+7cwp1bN7nKpazzWPdjvovUNb+DXNe6Q93tI8eM/H2XvJ/v/hkvfEUT+Yy8xsj37YrXw+JhShN5/d7PQ/14QfQT/HhMtGNIIDQWiFQqJ4SUPO3/jhppaO5drmt5QfTwP14QeT9jf7wg+gl+zImVSXhcjQsiarTRnzyNNDT3Lte1zJbI2GZ87mYgRd7P3T8TCcfxZP7ItczvzPg+8pyR79sEIA/yfr7fHy+IfkKf4eTMhGmISXhcmUHkUaOM/uRppKHxpJvjCnwCl0YbstHbxnoOI+TM+il/PIWHp3C7V7lfx/3axrvU30fGBfnuLs9QEnk/36+PF0Q/kc/I5OwZOp5kgMjTn+x1XXXyNdLQeBBujCtAYOQu4/pi0Mb7fjf9lI2Zp/AYXx7fn1nD700yEcY2ro/47rb/rnKBZ6w6UO/n+/Hxgugn8hkLRM6kPqakqYInmf/k+/2AkjSUMP4M4zJy641xdZtP4K6RUPIkz/cyvn5qH09hYIDcs0YCwoP4viamCVzLg7wg+n5/vCD6EX08mQd3MVlKUlZJ+vqd20rXuMeTrlM3eYYBH7Nku1meEv931c07N4d1+7bWLdM2F0615M5u8skMmQFkyJORHClPoXY3/dQ+nsLAC6LJ+7iH7Y//4wXRQ/qMmQhks1n38HGPvp5kmAspuLrOe7jGHxlL1ynDnIuPcZ1rhq+hYaS3C4g8/9p3kyDQAN0tMSaU8V1jxQUdLfOaHKHhZJYOgfEkge75fsaU+/syvzfzvnvVt/l4uo4nycfT9onIUxiosBsNoGHx3RktLF2AECA4xWPMMjIOoyXvcey/Edc06fZtKZ4jfG7xO8XIpGX+mJ/RLOMz1nb3j/sx5u/GtnE/7mH74/94QfStP+YYNaHYNfxhcmDiGC2VMJhozJFQ5fZVopUE7Z7YBScKKTzyOveOlOHbCFZu4yq3XeVZV5RuUNfwDbeILitdwUWX7vD7nYu4Ssny8u3zuHjra6Vvbl/A1VvncYX65tY5pWs3z+O60jmXbnD7t9BVpy7f+BqXnJL1yzdH6uKNM8O6dJPLW2d5b1/zns8rXb9zATeom3we0W1coi4zvAx9Q11xLo31q9Q1k657+O4u432Y3pMYXpGs81eVJJpMWIwTYjgl9z4h6eM9X8ss/lMaGc9GSg40rctX9RxGfDOHhyEJO0MShobG2n6VlzXrm2Hd4ru5Oaa+oXQcdmnkMfKOtb6hrmjd5m/c4X1Sainv7Y68O+OZdDry+Gxy3PCxxjulJF3SS78jgDXet4Qr38dwOBvBadZdP0bYG/rxf7wg+tYfiVFGRNGxy7xlpKQGxZUr1/l5rkvu0DAkdxjJbzOyM8HgjiRUIyHIuhhJMZyXqPM89xzP/orJ4gyu3D5FEJzAZerKnZM0xCdx6dZxGuejuHD9MC5eO4gLVwfw1eUenDrfjhPnDigdp45+tQ+Hv2zF0JlG9J+yoe9kPbpP1lH16DphQedxfj9ah46jteg4Uq/Ufngv2g/uwoGhKqV2WQ5Uor2vHAd6y7Cfau+hesvRoVSBzr7KCam9v1JdS7R/0LVso/aJhirROlCO1v5y7Bso0xos5/5y7B+q4L1Vo/PoLnQf342e43vQe2Iv+k/UYvBEPQ6etOLwaTuOnmnCsbPNSsfPtCqd+Wo/vjrXQXXi3PkeXLjUjwvfDOLSNwdx+eohQvE4QXtC6fqNE7hx4zRuEnq3b39JT+1rk87j5u1zzE9c4BvnuyLMlQGW90njJ/7jbRq0W7fpR1Lq/Q9nMExybpM4cdukOzzHXcP7eF25tizFo9DXMsdC+S7eBo9VkuOcALhzScmAsWw3ICtG+9ZtGntmPm7eOoUbN09SDIObDBOJY5cHnGKYUecu9eLchX58fa6P4dmNs191Kp3+qkPp1NdcUie5fvzsARw7vR+HT7Xx3Rjah4OnWpSGTmsNnmqmWjFwssVNTcMaPOEY1pBTB4834dCJZhzmsUdPtqnfOnGW93C2i/fSzfs9iIuXRENal4f4ro/g+q1juME0dBMnGGqn+F75ru98ybA4zzAxMjASRtRNht11brvJbUp83yod8x0IoMT7MoAk0qZCfUbai7v9mY/98X28IJrQZ2Kvn3lSHiV/BnQEOOKZXKV0AhfJ+i1GZsm93aABULl2RvJbzM3fvP0VE8JpXL52VOkcE8dXNIxfXuzH6Qs9OHOhCyfPMfGeZgI73Yjeo4TFoVqlzoN7lA4M1KCtr4qqwL7uErT1FKGluwBNXflo6sxTaqTs7TmwdlDtWXB0ZaOpNweOPq5zaevNhrUnG7buHDRwn6UrB5buXFj53dadzWOy0NSzk+fshKM7k+dnwN6ZDntHOhxcOri0H9gOGyXLu0mOs7ZvR0OHlsW0rO/cjjpR1w7eyw5Yu9KpDC3+tq0nE3beRyPvXZZ23pfxvYn36ejmPXbxuzwjn6G5Jw+tPQVo7S6kuGS47OssQFtXIfYzvPZ3F6twa+0qRUuXhB+h2FeNjv5d6DtUh/7D9Rg6asPBYzR2Jxpp8KiTjThCY3nsy/04/uUBfE3jfPEqjdwVZgauHFW6dJ0ZhZun8Q09uG9ufEl9hStcXrslOjusK/TursryFjMabroq+0wa3s5riK7f5DWv0zu8cgKXhnUc568cw7lvjuLrS0e0Lh+mDhIGnYQxMyhnqTMdVCefpw0DR1r5nC3oPdSM7iEHugct6OrfywzDbnT2E/hUR38V9vcx88FMiKG23lLsY7i1dhSjpb0ITfsL0Eg5DuRTEufyYHPK0VmI5u5SxiOzStDYXaRkZ7wV2fiebF3FsHYWjVRXgZKNskt8NslBNXbwd9v5u5RtPyX3IPfUzt85UIJmLlu4VOL2Zt5z+wAzTszwdB2sRs9hvu8jtXzHDhw9zUzLKYLsVCdOnu7EV+cHcfX6aRXet25L2r2glqDnrTIhBqyGM5XiTUlGQLKl+r9YFJ31cGVRtc0Y60+f4wXRT+YjeRVDruiiogxzoTduECTM7dyWsmdK6i9EEtnuEC43wUipioIucnmO389yjxgfMUaHcI5eyqmL3ThFqBz9ej9zdHb00PPoObqXYkJnImjtpSGkHJ35NNB5Sg3tubBJIuvKQ7NSrjKujZ1adq4LUBoJi8aeHBpdGuYDO5joU5lw07ifRl8k65StM5XisofberitNwX2/hTY+nm8qC8N1t40NPSmooHHKPG7jd/tfSmEVrKS3VDvNu7bxnMofrfdq/o9y+pUgyzlOOdvyLKB32Wb/P7w8cY2rtt7ud7Nc7u2Ujynh8/MZ1XP3L1DScLG2sHn7ZBwIUApW2cGGiiBXUPHTiqL2xi+EraUhLO9i+HrlE3CWsK8j++ln+ol8HrzKRrb3mKqhB6ceG403kM11C6ljkN70UvPs+9EHXqP7UXXEdlWQ++zBgcOi6qH1X7Is2Tf/kPMeBwUr7GCHmMZ4wWN+QgV8p4L+WxitLUcNPCN3cycEMxNvTTc3VoObrMRzhLXrB25fHadYbF1MGMi6typwsfeyQyAZAJMckjmhBmYJmZkGrl0MFy0JIOgj7FStl4Rr8PMgq2P1zTJ3sdjzZLjmKGw9YyUXMfak8F1EeM55eD7FNm70/nMGXxm3mcXf0sk98BMlPH+1Dvs5HtT4r2p4+SdS0aHYjywcpt6xwI2hllTB0HWQXB1lRG6DP+B3YQWM4MHLeg9bFUZka/EQ7x2mDqKq7dP0w5IKYbYg8u0DzpD6ipKp0frJlctrCEviH4AHzM0RKM/7kd4Pkp/9H79ynVrLCnmMMqPdXHG9VsXdP0Dcz7Xbl9kzvcsxVzoVcl1DuD0+U4ck2KHL6WooQn9xy3op6Fpp6FoHWBOcaCQBou5Mxor8T4cKvExwfQzAVG2XnoHNJZi+C296U7tQH13GizcJgmukctmHtdIMBhyONXYx+2Ug7Cw927l8V/wml9wfZOSrFt7Nyo19Gxk4hetpxFfB/vAelgHNyg1DGyEZWADxWX/F0oN/dzHYxv613L7mmE1iAbXoF7E9cmWXF+uLb9ldX4Xme/BuA8Lj5OlzSlr3zoCi/fL55NnauAzNajn2aTU0MfnkrBguNj6tihZGG71PYRXv8DOCeUBgmqA4UppYBNyogGCcWCrUsPAFmozLH2bGL6bKW7v4TE9KbyeKJWil0djKbLwXcq7tnK7tTsFDZSFx1uYKWhQYibAJKubjO0Wde1k1HVvU0v5PbPkehY5ziSV2RBY8xntfAZbH+NKH5+Fz6bFa/PZDdl4DQVygbvKBDifu98kuc4AMyo8V0vCidcaEUZb+Y5EfM4Bl3RYMjMxyGtQdsoh4jbJ+LjLJnG7l++LMuK2g2pU65sJPdkucj4XZZPnUBks3tOwXM9j4btvEPWLnO+fz2FjGrT1Enj0wO30rlXmgyCTzIkqVaAaDmShfv9OpssitNGrkgxHx+G96DtpxeBpesy0B19dGcCXUuxLb0rqu6SIVEpMbt65zMys1I9dUzLarLo8JBeERBOxZT+kz48ARObXIxr90XtceJG/4eNVpa3L49HNgCVH4ipS05Welwigr3Hx2nGcuTSIw2f349CZVgyeakT3EeaIjtThACNesxQhHMiFdT9zkO2MqMxNW5nbsnVLJGYOizBpoOGxMEFbJAFIIh1iohpiIjnIBENZmUiVQWNCqB/WNtQxgdRJYud6ExNXM9cb+zYTOO7aAgcTko3G1irGt0+M8Wom3jVKDVwXw2zIRqjY+lfTgPAYGnHrkFbD0FoNFgWXdUpi5C2Dq6lV3P75sOqGXKo9+N1kXMd8/YYBvbRwKesWWTftNx8nx8g+WVfnOVU3IPfsfJ5BPpvxTAJVAZWIIBb41on613P/RorAGtxM0BIsg1sowmuQ8BoWITZEuA3LCCe5HtflmnwX9QOGNg2/V4syeLxev8BeA1+OaVC/MXFZ1HU38p7lvpl5GL6eln6OkWoY0vdtHWLm4yAzF5L5EMl257O57tkFbpUpcWZQ9O+bw4IaIoS5fXQ4aVmo+qHRMh9jdcpG2Rledv6+u2x9vPde3jszGrZexmGTZJsS9zfwOMlASRg38FoNfIfyPiXMhu9JPYvcG59rUN67xA39/tW7J0jFI1eZEoE4M3xWyTAqSWYinRkCSpaUY4AZzP5cWAgtm2Q2+/PR2F+EfYOlyjNu69+NgRP7cOr8AM5dPoyrN07j+u2vaH0uUQIoKcaXhkZGO1EDRiPlBdFD/ZhAojT269C5CXmNulmoLq8V70ZetFQkS2ueS7h98ytcv3GGHg49m+tH8PWVQXz1TR9zMD04crZF1cHs76/Cvt4KVdTS1CNFG7nMddFtV0UIzCn1ZxAMjIT0RnSOjXBRuTEtyZkJJGw0Pjp3KEsRDdwQl1SDIafhs4jRYoLRBmAzjReP5fpo+DAHyH127hNZmcsXz0UZ134aRUqgJBLPRxLxCDGRGgnc6pR4D/U0OKI6GlstWdfbzDK2i/bSuI2lWsp8rCe5X1ukDYkYP9c2WVfbKPMxhozjzPuM7/pcGh8l1379nc9ukrwfeRcKIAyXOhUuNJ5OmY2xVRk6vW4YXL1fX8OQeufjyP0ejN+qc8r8+yJlVHmcBpKWp+NErms6ja8HEJjv03zf9UMjvxsy7tvCZ5U4O959GjKOcT9WriHhKLJROk4b8VvLNuzFiggbp6w99OxHiO+6l6LXL9LPruN1LUFVy3QhqmNmREvg44of6l7lmfiMFgJMe7xarvRLMXMoaqAHZ6GsQ8xkUgIwtZ3pX3tkInp0PZmqGLS5Jx/76UH1HKpC76E6DB1twZnz/bh87QQu3ziFyzfP0FpdoNWSUphLtGDS+tUoxhObJhlosYHy+eFi6UcAIsObkW3a2zH/aQiJZyMv8SJf39e4cecrXTF88zSu3TiJC/Rwzn7ZgaMnmzFw3IqOQ7uwf7ACbaplVjHd8HRYDjBStRMunVL8lc6IxFyQ8m6kWEQkRR+McIRNgxTJEDgCDCsjviE7E49IEpESt2nRUDHBiaGrY6SvdyZmJe7XRWK8Bs8R2fpGJ0yzjERqcYJIirZ0sZUUTQmMmGBpdEWue3Fdc9gYqnvSxsHdaIyn2rvI0zlmDRsk57Mbzy8yDK1x3LBhc+43wkjWxzrO/di7ySZhKkaW59TRONVS5vs0wkskx6qwE8NFo2023O7HjSf3ezA/j6cwMp5HlvLdONY4znyscU113gTu01iXfe4gMh8nUnGG11VhpAz+2Pdp7PN0n8ZxIomf5vgtMuL4KPV4kGm/vqZ4icz0EDy1A6spF4hku0gyJcZ9yjMJiO727CPCyMhYOo8Tr1fsgZ2ZUJGDnlVj3w5majPQJMV97dK4JwuN7dJ4pgydg7vRNVSL3qM2nLrUg3M3juKbOwIlqXOWumftOelGUEZjCJcddOmH8flBg0g7p64mqboC0Kjo07mG6/R4rgt47pzCpZv0dK7249y1AVV30yEVjQO7VLPj1s4CNKqy3p2o2y+ttXbo4jSpBCVc7OJxSLl/NyNVj5alZyvquU9rC+p4jBYjbi8TlDMXNpwbMyUId8n+OkoSsErEzu9GohQNQ2MCIJL6HwGRSmBMaPUDRjERYUQQGR7A8DXvGURijM3ydIyhiR6r9w8XHZmeXUAuS3cQKcNFGcepZ6dk3f04kXGcXG/42e8iFaZOYyLG1WxgRUZ4yTFG+IkBEgMvcjdcIiOsx5L7PZifZ8SzO59HJMfJc8k241jjONHws5uuOZH7lOeSdeNY4zjzsWKI5VgJI/XbbuHkfp+yvNu7NO5TZA4bdU+qDm50OhpLRp2oCiNJi4z7RtpQcoLISBdG2lD3wnQw3rOr+6HMYaQ9KAEYzzWexwkiKRGROrnG/hQ09W+n0mHr2g4HM7zN0hq1ayccHbQ97Zmw0SY195Wg68heVc90/Hw7Tl/swsWbh2jtTtPSfUnbd472UFrrCZSkyT1tolPSUk/spevPjCfj28itD+PzgwaR/pPyUwGQruAzwHSLAPrm+jl8/c0JHP26Dd3HdkP6mrQNlio19xbAIa2gpMUMoePo2M7IIC3CdKswqZDVRWrM1fQwMvUwMinJuoCGCY6JQaDjSe4QEnlKIIZkvwEfs74diJhIea4kJqMexCzLtwDRaImRcRV1eT5G5H7cSCM+Uubj5P5GPrssDeNl1nggcpdx3LcCEeXpmkZ4uYPIXcZxIiOsx5L7PYz1POOByF3Dz2665kTu03j28Y41QCTrnn57PBCNOI4yjhsPRCL1vB7SkrsMABkaL20Y6cJIG+penCAa69nVvVCybuyTZ1FpmDAefh5nGlPhNUggDW5j2NLOSAMPsTeUvSeZQOL3Ln5XSmPmV1ry7WTGOJvKhb0rD+2HKwmlJly80cOM9kHavuO0eV/h5i16SrcvK+l6JuljZthK+dMw0h+jVMnQw/v8YECkRh7Qa5QOOPF8JKBvEjqqPw5zBdJ67cRXAxg4egCdA01o7alFQ3sO6tsJF+Y4JOeh1C1K5YuXF72NoitNL8dGj0ZLIq2OwAZ8GnoESiLmdujx1PcxV6XkASAe5CmRGJL9Hq/jjMQiIyF9VxBN1COSMnp3Q+GSF0SGjPDygkive/rt+wWib6MHCiL1W87nYRpzHSfXNInAUs8rxfrSyrWb11QisAgn3e1At5i1qybpGWjsyUL7oWIMntqFs5dacP32cdrJr5VuE0rS+V3VhSsQuXCjLanLjrr08D7fexBJozZD0hNdu5q6KbWUj16+fhZfXjqEY193KNe1ra+Srm0xvZwCurXS/4a5iC56PKpZcxp0nxepMNTejvJ4CB5pwmuO+BpCI3NSI45nxHK1StIJTa+7ypjHlyvBGXIZkLtfxyoRV0kiuCG9zf1Y3RLMBR+pIxrdYMF4XtczGwZd3Zvzvtxh4ZLLmGh5OkbkDqKR1zQaIGiNDB9DRji5jhtb6poqTEZfx7NGX0OHqaHxrynvwVh33af5fC3X+zPL9S7N1zTLMN6e9rlLjpN78LTPrPGu6X4v4x1nPlauaYbKeJrI8xjXN8vTcZ4lYT76vYoEPua04fl8HY4TfXYj3A2Zjx2WGW5qmxE39LVG2h2BrrY9ym6pRlDiPW1Tkm4aLQPpGDpRi6/Ot+PytT5C6SCz6cdU0Z2uS5JSI511F8matqWyNEBkyOUzPajP9xxEdCPpCekhcG6S8gzQOxfUyAMXrhzGsTMH0HXQglbCx96dhwbV+YySyr+eDNWowNG7nUpVL8shLdeGc1PMnThftBE5RkcAzzKOH5YTTK7INHbEd8ntGk4ZBt/zOZ5kPt/T/nFA5Kn1nJJ+Ti+IPGui17yX+9SawDWd4eZpn7vkuDENoUn3ek1P290l1xR52ueuiV7z22vs9DQZIHLXhMJdQGTIw36zvRlLdun3pvq+MfPYuwlN3Rlo6cpFR38Jjpytw9fX9uGb24O4oeqSzlPST0mAJH2TpF7dC6IJfCRArhE80o/nIm7dOUfKn8RXF7tw6LgN7QOVaFFDgeQTPFkEjzQqSOXLkRECpPm0IQNCknO4TyDyqJERfrQ8nWMYBS+ItMzPZroXSs51HTe21DW9IBpX93pNT9vdJdcUedrnrole89trPBBJ2jBv83S+DsfJDvfxZLY3E9NmOHqcw2K1pdAuZqDjUDEOnq3HmW8O4PLNw0TO15S0ttMjO4xs/u0FkYePBIQQW7yfE3Q1h3DmfBv6j+1Be38RqS9jh9HT6RZvR4rbCBi+fC1pHkmXVdrqK9GFle/9AqHxQTS5Mkfu8SP5aE0uiNxl9Qgfs3S4mEGkNd59uR/r6RiRu7G9l2u6y9M5nuT+m+PJ0/me9LCv6dXENV4cE/0ww13Sp5V2TI0EIeqReu5tqj7JTihJhtzRm4m2oQL0n9qLc1e76SEdwdU7UlwnMDK8IkM/WRCNfmj5pnUVV24cxfGvmtErY2n1FaCxM51KJe0JFhnagy9BdXYbXAfr0CpqNdTwNAMEzYAGj3Q2U+ChjIpFkVQcenq5kydPEd7TcZ50t4Rjlvk8T/vHlxdE7vJ0vic97Gt6NXGNF8dEP+Rwd4KISwvTq6VX6rtl9JVk2jxmwqU1ngJTOg4cLMXBL634+uogrt6WvkjSyljDSLyjsSFkAMrQ5IPqIYJIHkY/mJ646hZu39E9g67duIIvLxxRI0nLAIUN7WmwddG76WLAdm1VrUmsvTSUjEAi2+B6k/idnpHukS1AEhFalEBpeJ37ZKSCiUg3ZhhHHiOIRG53eTpuLHk635PM53hKZONrZGW5MzzHBJHI+F33a411nPux8n2sY83HidyPc5dx3t3k6dyx5Ol8T/J07ljydL4neTrXq+8uCVsjTrmHuSFP5/1QpDPV9Xw+Gd5JFe2rhhDazimvid6SrUcaNWSg62gNjn3Zg/PXTuK6jBquxrgzPCSxwE7zPLwixXfmIjxjpzpgUj4PCUTyAMZDyQNKQ4TruH7rKs5f/hIDx9rR3F0Dy4EsWDrTYOneqpoxShNr3Xyagd/LHAADX1qWyegEhqczPC6V8V1ehHOwRbMs/Vv44iamYdfXo8YC0cOQ2YhPVKOvMz6IDEniHf86Wu7HjZfozceJPB3jlVf3KnMcHC/+/bCl61v1OHnDQzUJlJzPLbbQQShZu1Ph6CpC+8FaHD69HxeuHKcV1nVHekAA2uVhzoiNdi+6M2tyPg/VI5KZRxWEbl/Bxcuncfx0HzoHGmBvL0FdWxbqO9NhoRdkUR1IGaiq7w7h07dRyajglpYnUuxmLnrTw2gYxXN6xF+zfsogksrZ4bDzcB0viLz6cckcB8eLfz9k8dmkQZJAiHKNoG8894Zh2yj9kuo7MmBpl6kwijF4vBGXbhyjJZYJN+kdqQkWaaFHgEjPp6Rl9o4m5/NQ64jEDbx55yq+ungMfYcasa+nCnY130karF0p9IS20fuhW6kGLZRx02TIGkNiSHULFT0AoQaOq1GCS55ApIZ59wiWe9V3A5EYezH6nva56+7HuSLd+Bo/MU4MRGNros/zfZTRX8P6vcpgePXddDcQOetZRKP2/VBkPJ/AaD1tHtOvm4Yz6cygq5EcpDN/VwaaevMxdNqqZnq+evtrXJcpKQgePVGfSNchGRrZ0m5yPg/XI+KDnLt4Br0Hm9HaWQZH+07YuqQscz3FQCWAlPrWEUIiGQ9qnQlEuimwF0SGjMh4N3lBNJa8IPoxyguiYRBJqRHXdcd1rguQutLUxIhDJ5tx/toxIkgaMsgs0nqSPkM/GhAZxY56tKNbuHbzPAaPtaGlowwtXTI75A4GjATSGso1p4ie1ExPZ1BPENUzsEVSxKT6KqhiOYERjQgBY8gYYFC2m4dvV+JLURCZgMQojStGZN0Kz13miCINARgh3DRs9J3fjePNxxgyHycaeX2RJLKJyHWO+XqGhu+JMh/rSa7zdBiI1BBDpu/jh8vYMt/T3eTp/LvJfI+GvCD6sWp03HeJcVLe9w/6ncuzmUFEe6PEeO6UDOMljbhs3G7jcTaeoycOlLHt0tDYmYtDp5twhZ7RLZll+s43xI5M1OcOIpcln6zPgwMR79lgqB4l7huc+KoNrT1FsB7IUBBy9EhzQ5K7j4Ekcna6VJO7SdmnLIfJL/L0QrTEOIkx9bTvXmUYZs8yGy8CziyJ4MPXcTWLHk+GUfW0z12ua397ebquobuByAhjrc2UDgezRoXJPSR2872Mp2/juZmh40leEHn1w5PZNhryDF8915Mxl5muT3d0p6ClJwtDp6y4dkumOHfNf6Sl/zSIJvfzEEAkzQNv4Nw3J9A1VIMmmXK3IxWNMm6STPHbt0HJ3K9FOmC6AnZ0oHqSF0QTk6frGvKCyPO5Xnn1/ZTZThryBCJ6/0bjLgUiLZn12dGVitbeAjWCzW0195FMYy4DS/9YQMSPQEiGlrh++zwGjrWq+X8cnTIqNt3DHrqLveIBiSckHtFoGGm5B+rYMoz6iG1Ow3Uv0kZWJMbL/btnEKn1ESBy9c8xS8+1b1xPF/WJsXb9hkvm40TDxQmGTM/pSZ6fzZP09VX/Aw/XMTQWiHRn49FhMlEQeb63kc9ulvk+jXPN1/Oku4FIpIpdKU/ne+XV909G8aNZno5zgcgYNV1A1Mh9jb3baJMz0Ekn4fy1g3QZrlA3KReIxJUQFE0mjh4QiOTGNYRu3LmA0+cH0NazC9b27bB2MkC6CZjeNTRSq2kg1noEkUtiRDwF7sQ00rhNVIZxEsPn+i4GUGu0wVX7R4DI/ZpaAhdPhtv4bpb5OJH59+5m4EdC427S17+bEb4fIPJ8n6OhYYS5luuacrwXRF55NZ5Gg0gaMDjoQTm4Li2W7e3Z6DtqxZVbF9UwqQIjA0MCosltqvBAQCQQkgeQiesu45tbp9B7xArb/lxCKFlDqEcaJEweiIx+Rp5kzNQ4MfGFUSMNlMvgatBQXHeXa7/rvkYaV0Ou66lzKOP8u2nkb94PEDmvO4bESOv7H/kMZhnP893uc+Q7GO+acvyEQDTOPYu8APLqxy1tuyQjrdIXt9kHNiggNcgcSF070NxXjAvXThFC13D9jtQVCYxcEPpBgUjct1t3buLmncu4eucsjn3divbDFXDIaNndNBw962nsdcs4kTRMGB9EI2UuBx0GDiGiOsAOT2j3bUUjp6YFN3/fymvrGVoNjTzHs/R9jTzPfK6nfe6663HO5/c08d6Ycv7+WLLQu5mYXPehzxtLrvfk8X7GeW/u13Lt4zker2X8zuhrqkkQ1Ugdzm3O+3J9p0YkXK+8+hGKENIZS8nEOasPpK5IZjLoScPgmXpcunMM1+7IyN03aMtdEPoBgUiXJsoD3MAFfH1lCJ2Ha9Dcn8UHTSGACJHe9U4RRpTVaDHnATqe5AlE9bxufQ/XCbpvLxq77s1Kw8aJEGro2UYjyO00VDJVuGfDOFrq3kzH3hc5n9+TQR5THu7VJXlOT9DxJA/341EM23Hvk4nD4724rlHvlPmanq9l/M7oa44FIp2JcZ7nnmi98upHIiMNqvToTEdGSYdMviezFkin15b+PJy92kmf6Iwq1fqBekS6NPG2uHb4EicvtaNloBDWbj11g4BEwKNEGIncQTNaQm2XzBVyRuCOB6IGpzztGym+nGEQGRLDZRjezQpEZhiNNHQjv+uRcV3HaphNhkzXlN+QYimTITbLKHIcsd3tPrVczzwaOGPJdB/jSu7Raejd70XpCxV27uGn78WleiYY83UVbORcXsP8jPp3uM/temOCyCRzwvXKqx+ThuO5xHsjDfUxPahiaQGRTKVDGHXuwMEvG3DxlsxnpEfs1o3OflAg0v6QTOl96dYRDH1lQ/NgLgGSAhmcdHhytgkUxRnNunWHV5c8Be54ILJ2ad0dRnw5wyDSABoJIpGbMTQZOhtlNqbm47TM1/kuGn1tbZRdxlgkxtkmLROpETAy3aNLnp71bhp9H57FsHW+J/P9GZJR1SXsRO73NN5vGsep56OM6+nfYXiMuJYXRF79tDUczyXeG2loGERb1Ig0AiNbdyraD5fg1OUDuImvKRmpWzq2/oBApKb3lnJFXMJX13rRdqiUINmhH1L17p08EJkNiBdEfD6TcRd5QWS+lhdEXv20NRzPJd4bacgdRFRjfyoa2lNxmE7ELZwlgsQr+kGBSNcNSbni1Ttf49DXdjT15xAeadDjwjFAjJFiKReUnOpbT/DIEBTSxHkkfMxSLaSchsYildbKsMjSWJ9MGVDS392NoFcPTvc93OX6HhKwV179WOXqFylNup0gGtAT6x2gE/HNrcNEkIzQLcVzPxgQyTA+14iiK7h88xQ6DlcSKDth690OmT1Q2rCPDyLt/UwIRAId5cHIuptBmVR5QfR9kRdEXnk1uXLZVReIHHQaHP0paO7LwfFzrQSRTDMuXXF+YCCSMsVz147wQYpg7yGI+nY4QUSDrkC09h5BZFBbywCRUaTm0ahMmrwg+r7ICyKvvJpcjQbRFtWvSC27d6DrSA2+uX2Elv0HBiK54Zu4jCNn2+Hozqc3tJMPvJ3w2aamsdUgWkMQSSfWiYLIreNhr8CBhumBgMirn4y8IPLqJyaXjd1E+AiMuC62WLrXdG5Da38Bzl3vpoMh8xVpEIkmY6if+wqiO7iKi1dPo2OgnkTNJTQy+cCpzvnUmdAViO61aM4LIq8egLwg8uonq020yTIE0Bew9q+mjV0NWw/BRK9o8FQtruOcsu66Gbced+67fu4jiKTZ9mWcPNeN5p4iSJt0VRxnQGhoowtECjxGR1ZDBJHSRiVX3yH3ojltOLwg8mpS5QWRVz8ByXxuhlzbTSAaIIj61mhnoDsZ+4fycfHGIbimh6Cdv0MY6XnFv/XnPoJIJlK6gBNf70dTdwbsUhc0tIYAops3SAgNbTCByHPz7eEm26ZtLs9I68HWEXn1k5EXRF79BCQAklmuRRb5rrY7QSR2Wuy2jP+pWjBvRVNPGk5dbKN1v6hgdPPOdYKIftH3EURyU3dUhdZ5gugAQZQ5DCLrIEEkEPKCyKvvs7wg8uonIDOIhoE0wLivSq54zHCJlVSRbIW9MxnHvm4mhM7TF7rM5fcQRHIzt3k/t7iUOc+v3DqFjoG9aO7ZCcfgBmod7PSIbJSV31Vfov6NfFAzaFzygsirBymjFaSSFPl6SLheefVj0t1AJHbaRs9Iz1lEEPWkoOfoXly7/RVt/CWKDsf3FUQ3b9/GjTuX8PWVw9jXXY22wQIviLz63ssLIq9+aroXEKkm3b0p2NdXjgtXThBCMsqCgOjW9wdEchvDIJJpH3ABx78+wJsuwoHDhkdEqAyJNsLGB7bxgWX+GSth5GqM4JLRUGG8xgoiNSCm6tDqMipeeXWv0hCSYZsoiVduidYrr35sEhB5UoPAiEurDMVGGR6RozcZjV05OHVephKX4rmr3y8QGW3KZb6KG7dl2odz6D+2By2D29E0uAmNg+sJoo3D0h2lZMhxgclIL2d8jWy+rZtwSydTQyONi1demWV4zob3PMILoozxtu42gZ9XXv00tMHpKGyiN7QFjT3b0Ni9A4fO2NSMCt9bEIlu3rnBm/wK3Yer0DKQBkf/ejQOmEFECH1rEG1WfYdEXhB5da/ygsgrr+5F7iDaCmt7CvqO7sHl68cgI+fcvnPz+wkiGZ3168uHcWCwDHYSVOZCtxNGDj6Qgw+npAB0rxCS0ZldRsUAkgtCXhB5Nb68IPLKq3sRba6qEpFWc5vg6N2KBoLowEAFzl7sp6W//P0FkYwyd/pCP/YNyPhyW9EkZYx961SjAw0jPhAT+mjQjC8JEM8NE8wwchkdr7xylxdEXnl1b5IGYYYNtkvmvysNjq4CDJ5ohsy8fYf/v4cgEgxdwakLXWpsInsvPSJj7iFpAUcQyaR4ulhuJGjuJi+IvPqu8oLIK6/uTWYQSSlWQ882WLuz6GjswrU70oz7Gm7f1vVE3xZI9wFE13H1zlkcPN2Ipt4cgigZ9kGCZ0A319bSPXfNkJmo3A2LlhdEXk1M7iAasc8LIq+8GlfSvLuWzkRDfwqsPXm4eOsErt66jBu3bxJGdyjdp+heoTTpILpJb+jC9SPoPVoLB6kpY8xJwwSj35AZRMbDSRNuT9DxJHfjoeUFkVcTkxdEXnn17SUgqqMttwxsRX33Tpy41Ktazt28JV7R7YcNIhmJVUtAdO7aQXQerIa9KwO23i2w9W/gQ/Dm1ZARLhgZDzdxEHmL5rz6bhoPRDLTrwyia8icAL3yyiunRzSwEZahbajrzkD/mVbcvHMZN28/dBDJj+kBweVPQPTVlSHsHyiHrXM73TdCQuazIIjkIVwgcj3cREHkrSPy6rtqbBDxe69uHaTjmit+euWVV1rKI+rfiNrBrajrycCBQw345uZXtPzXv18gun7nkmqo0NxdAGtHqhdEXv1AxPjkBZFXXo0rXTT3BfYObEF9XzraDtbi6yvHxfI/LBC5mie4QCQN+c6h99ge2Np3EkQpaJChd3o2wEKI1FEWZzGdWbrD1GjwGLL2MhA8Gg+vvLq7zK3iXGLmReqC3BLacJyj3Pd55dVPXapoTkA0uAW1faloHCjE+euHafuvjQDQQwaRFM19ha4jlQRRJqydyWjoYqL3gsirhygzgFQjhGF5QeSVV/ciM4jqpCFa706cvCDjzn0vQCSzsWrdwJfoPFxOEGUQRIZHRAARJhYmbjOIZNRtgdDYINKjL5hHU/DKq3vVSBARPma5JTQj7nlB5JVXo6VBtIkiiPq30b6nY/BEI23/VYJnZLHcAwbRLeom125CZiG6eusUDgwWE0TbYetK1hDplbodwxBIG3QNIj2tw3jekDGWnNQBuQyLV17di7wg8sqryZGqIxrYTG1BPUFk6UpD18E63LpzhfbfCSJiQelhgEggJLp2W0BUCHtHKuzdAhGCp5fg4XKiIBIjoOQcS84LIq++i+4FRF555dXYcoFoM9e3wNKdhpaeCly8ekbxYCSIDEbc/TPJHtFNnPtmCK19ObB3psDWQ4j0bKDWa69I9dPgd6dcEJIiOBlpQaAjxoMPrTTSoHjl1XeVlfAxa7i+qJ+gYiLzlPi88sorLQvlAtFmWHpS0dhTgLOX+siAS9ohEQiJFIgm5hVNOoiOf9UBR+d2OLq2EUSETO86ai0hpGGkAeTuCQmIXEVw5r4eo5tqe+XVt5dR3GvI8Iws/ZKwdEIz5CkheuXVT1u0z/1bnSBiOulNhoOOx+GvmkiCr8gAPQCqri8SNkzsM4kgkqK5mzhyeh9s7alOEBE2CkRrCKF1JhC5F8d5QeTVg9HdQGTI6x155ZUnaRDVD2fcUmDvy8bAKSut/5e4fUf3J3poIBISXrv5DXoP22DvkGHCxwKRQMgwCHcDkUwBruVuUB62bB5kpTwd69X3Ry4I6UF3jQQmHpAkrJGJziuvvBoppqO+rVyKaJf7kmn7dqLnaC2u3TmlGHBreCRu4cPEPpMEohtcu86buIi+Iw0/PhBJ/ZbbtskCkTyzzDBr7d3qXJdtfOFqtAjP53j17eUFkVdefRcxHSkQbYOVMLLSIxIQdR7ejYvXj+LWHXN/ogcCIqmE0pIiudu8gSvXz6NzcC9BJHVEQkqBjMxDtIbGlSAihNRwPjIXUb8YAzEMIjEK2kCIsbh3EDGAJixP548j1eJP6rc28D42EKqb6YpuQyNfhpokqpvPRKnZC7nN1itt65NR35kMS2cKlymwMCwsBHNDt34+abQh9yLgkeNtvXyZkrPoX8vlGn4XqKXwujt4HM9zvyev7k0S3k5ZGde0GMYmEIm8xXFeeTUBMf1IcbaVULIRRvbe7WgbLMbZSz10SL4hgG6RB3eUJvr5DiAyPgKiW4qEl66cRWtXJRq70tHYnaKMs61/vdPAynhzNARqCgg+xACN9nDu1CXDK3KXC04uDe9XRkZa5W3UoziMJ/dzx5VcV0CkYWTjUqBT374ede0Ea+cGPuNWOHpTuZ4Me9cONPfloqWvEI6eUji6K9DUW4XGnjLUH8jieQRLdxqvyxwFr2/jubZeAojn25nDsA18zrBarcOiZzts3dkEEq896r68uhfpztSMG9SoROWVV17dm5yZOSlRsAuImAFv6s3Csa/bSIIvqeuqnOzWxDk0eSC6eecqLl45g33dNLwPEUR3lemaE5Pck4BDvB96c/ytpsGtaB5IpVeUTvjk0AMsQ1NXLVq6LbC0VqOitgRFNaUorC5HUXUVyvfWoMZeg4YDe3j8Lti6ytDA82zdmSo3Yad762CY2OklCpDk5YrnJVNoWBUMTc/q1T3LCyKvvJpEjQLRFjT17cRxgugmzpAGVx8OiKSxgkwPfvb8YXpEFSYQbeaNCojoPXApD/F9AZEqFvPw+yMlbmcqvZt0wmMnHISHozMXDftzCJ0aVOzJR2rmdqxel4y//WMN/vLXNXjttY/w/Av/wjPPvoennvoQTzzxAb9/jN+/sR7vvp+CLSllKKuxwba/CU0El727VBXBSRGdvWeHU/Jy1zPsVvE+GW7Gc3r1reQZRLKuO1abZdRbekdW8Morz9IQ0jZSqiNEUho0eNJKBJ2+3yCSq7rL+Mg4c9/g9NcH0dJZShClwdEtA+LxZmn8FYgGxgKRPJTrwb4riGQkB5f4e6MkEKKnNvybYwFJ35e1Jxm2zmx6PeVwtNWitKoUq9Zuxttvf4GXX/oAy5PeRvyStxG3+F+IXfgJYuetRdyCzYibl4Kl0WlYHJWKxdEpWLY0DbEL1iF+8Wo89cRa/PO9LOQU70VtUy0hV4SGbnpG3WmEUCpFKNFo2ulJWqVY0BQOXt27vCDyyqvJk9SvGvbRQVspstHm9x+vx5U7J5VTosbZMSPiLp97AJHRSs4s45fEI7qIU+f60NxdSAjRG6Ix1QZ9PBDJw8hDuR5Mj6zgwZhMEESGIbm7jN80zhHDv4niPUu9DT2Txr4cenYlqLIUIS0rC/96bxNefvETJMV+TLisRWz0FsTP30ptRsK8TYiNykBsRBHiIsoRF16JuLBqxIZXYUl4ORaFFSIuphAJCwoQv4DHLV5Hj2kN/v1BOoqqqmFtr+LLzISNALd1b9HeJMNQzedkCgev7l1eEHnl1eRJ0oaRTuxMWyJbZyr6jtXimzvHSINLyjWZRBDJldzho/sNaUn9kGy9ges4h8Nf7kNjD70HehEaRASLM8Hr0RSkTFGMvRTZCQRcD2RIj03nlNmY3DOIZN34XbNG/p4BSlv/Glh61qCuYyOa+nPR1l+HGstubErJwe9+vwaJCf/C4vkfY2nUViyNzEJ8WCniQyu4LENiRDFFyBA4CWF7kBAq2s31Xdy2C/GR1VQV4qIqEBddRhXTY8pC3PztWEIP6qUXNmDD5gJ6RxVo6slVjR9sEobd6YSSNI8kNI1n9ere9S0yKl4QeeWVu3RmTXfB0bZahm+zdtN+diajfbAcX18dIBkukBJ0TggHacY9kc89gMiAj+iGUxpEMvnDNXxJELXA0ZNFQhrFbjQCdwWRPJTLQNx/EJklxzk9oN7tsHSm0fDnon5fFZIz8gigdViy6D0sil6viteWRtOTicyj11NCAFURRHsQH1KHxBCrVuheJNILEiWFcxlRRVUqxSsI0VOKLqVnRK8ppkB5SEujcrF0XhoSY9fhs9XZqG+qp1dZSQhlEOYEUjfDks84EkTiJTmbgnv87tUIeUHklVeTIANE2n5K/bW1Zx21BraurdjXW4Szl7rIg/OkhLScIx8mH0Sq+skpgRCBxN3yOzIp0jWcwaHTjfSIsmjUNYiMwSQFRobhv/8g0kV8uujNuLYZPk5JIwrZ15MGe2chGruqUd+yCzsL8/Hnv32GpIR3ELdwFZbGpOnitnACJLzEKXpDYfSG6PXEBzcgMbgZiUEthBHXQ3cRQjVYFrYby8KpiN1IohIieawoit5RVDlio0qoSiRE0XuKqUFsTA7iFn+Gjz8uxG6LA809VfSMCEY+39ggkueWcPCCaFyZ4odZuh7RFfe0dPyRcnDPidErr36qcgORLHvXKtm7t6GtrwinL7aTDOeoa/cLRGYgOT0j/ogG0XVcv3MGgyesaOzWIDLG8FLDQDxQEIknJjKuL3LCx6x+UlyWPTuxf8CKyj278O57W/D0U59h8YKPCaAv6LHsRFxkIaFTrsETVoZ4gVA4lwpE4hXt0p4QoZRILykxvILgKcfy8Eosp0e0LJLeEZUQVUMRSFzGRxJEkRUE3G5CrRbxEfSsYkqRsGAHkpaux4cfFcLaYkfrQLEq5lQg6naFhYaOASIJJy+IxpUpfpj7lBnbzGXeRvyRlkGeE6NXXv1UNRJESk4QOXq2obm7ACfO7SMZviIlHiKI+o5aYO/ayRv8noGIgac9ICMAaXy4zSH9d3pKkZy5Hf/z2rtYuvh9zA9LxpKoLMRF5RMWRYQFQRReQBU5VewEkojfI/K5zCZQdhAwyUiM3oZl85KxYkEqli9MxTIqcV4aobaDykRcdDahU0BviDAihOLC63QdUkwhkubnYnFUMlYmrUPKjkrY26vp8qYTRjSMXcbzMmy7k7lk2Dqf2yKz4BqjNng1WmN4RIa8IPLKq4lobBDZumlvD2Tg4Gkrrt0xmnBPGojMH3cg8QfkN9TvXMfl68fRPbQXDoJIjUXExFzfT8mcFcP1ROYEb8gFIlUuT8PgPgrCWPJkdFwgMsRtA6uoz3j9tajrFADtQMtACeqaK/H5+s1IWvYWliz8kF5QKuFTTPhIMZx4PrIsIWxkSSiF5iMutADSMCExKpOwScfTsRl45als/P2PNVj/mQUZ2xtRkLsPZSVtKC9rQ0nRPmz+Yg/+8VYuXn6OkItZQ88nDYkxxYgLq0dcSDOXVnpeVfztMgKwVN3HH99IRsXeMrq8eYRzMuq7GAno+agRF3p0vyOJEJaedc7w0J1uPYXJT13mifFcYlgxfrjLiDdeEHnllbtGg8jet07JQRtu79yKrkOV+ObmcUJImnCL0zKxz+SB6NpxdAzs4s1kMkGPBFH9wEMG0eAn1EdcX88AS0djbzFK95ThL2+uQezSv2HpwtWIm5eB2GjxgMRTKSccpPiNYAjleig9lnBpdFCMpKhcJETuwIvLM/Cfv+9BVloXaioOwmY9iObWAzjQ1YQD3Ta0du5GU0cFGg+Uo7mjHvaWRlRUNePjj/Lx7JNrkLQohd5TNX/HwWvb6RXVEESV/P0aLKU3tjxxFbakZqKxu1LBp66TYSjPp0CUThAlD4Oont6SpWsrw2R0eHg1EkB6nCxDXhB55dXENTaIGrndQa+o42AZLt88ej9BZFDHJGOVILp09Sjae6uHQWRhYjaDSIrCRkPofoBIGkqYtRmOwc94vY9h76Un1LcbOaX5eOaZdzE/8iMkLk5G/LwsJEmLNun7E15BSTNsrXhCaGngHq7vxpMLqvDGS3as/6AfNYWX0FR3CW3NZ3HgwBD2tbeiqa0a+7pK0dZThJbebDT1pqG1fzvXM1T56f6+OjQfsCMzqwS/emUD4qJT6G1VISFiL0FECEWVEUS7uL0SC6M34M9/3YTapt18ybmqWbkMuqqK5FTRnMsjqu+ikfWCaEyNBNFo+JjlBZFXXo0lA0SGzaYXpGC0njZqIxp7NuPAUDEuXDt0P0Hk4WMC0YXLh+kJVMLRlemcOMkFIima0wR9ACBSo1mbtRWOAdKaHkRLzy5s3JqO55//ALHzNyJpXgkBVIFEqaORJtfSui2cYCCMpNGBKD6kAksCKrCc+16Kr8Pvn7fhX39sxrtv7ME7fy7Eu3/LwIcfpOLjjzdg89ZNyC/JwB5LMb2hKuzvr0JrbyEcnelKtvYMNHZlo623Bvn51Xj12a0ETwZ/X5p3S/+iUnpFe+kR1WJJTA6efGI9dhaVoLm/lCAi0Lulr5MUxclc8fQ6ZURw9V2DyFs051leEHnl1WTIDCJtvzWIaF8pAVFLbw6+utz3YEEkDLrN/3dwDV9fHqKBrYCjJ4M3u4kAcs12KTd/v0Gkx46jB6T6BGlPSM3x07MVjb3b0dRdhs2pGVi+7D3MC19DCJUTAHWqxZoASEAkQBIIaRBxf3iZFj2jpAhpDVfK74VIjMhHQmQq4iI2Ii5qLZbGfIJFUe8gftE7eOHpj/C736zFW29uQkpKNap22eBoa2DY7MW+3hLlHTk6M9De3YSs9CasXJzKaxUgPrqEICohiPZgaWQDYVSNxfM2Yc0XOWhoL1bTSmgQrdbP30XD6QXRhHQvIHLJCyKvvBqpsUEkXpFDGqJ17cCZi51E0CWyQWbuHq7IGffzrUGkIaRBdBtX8eXlAbT2l/OG0nmzTPTOm7cM1w/dHxAJgAzpaRVS6QElw87flcBpGUrBvr7d2LB1B5YtexeJC7cgMSZXDcMj9TIi8YKW0fArADk7oGrwiPS6ACkulLAILqGXJIASKBU5wVRAzyoPiVFZSIjJRNL8TCTMS8UTS9Px3IpNeOMP6/AFgVJWWY3GffXY312H/V1W1NV24Q+/ziZ8tvD4LIKoCLFRuwghwoie2qLoHfjbP7LR1NmC+gOZqO9aq2BU3y3FdPQ0VTit57r+7m6AvRotKyFjlhk+FnrwXhB55dVYElvu3srUsN9S/04wde/AobNN4poQRjJhqvDhPoLIIJ0w7ybdsNOXe9E8UMobEhDpm5YiOd1QwWg6bX4A9wf5diAyilJEMmGdo28H94l3RBBxf9tQMbal78Tzz3+OxVHrCAsCI7KMXkilqpcRGfDRABpL2ktKCNVKDOPxYdzmlNrP46SYLSmqkmDjNv5OfGQ6lkR9htj5/8ZLz36KD9/biZycGrS2teHA/tP4+F97EBezAQnzdxBExQRRNSFURS+rFIujd+K11zJgb+tAfXsuQbSecjZOkDAYDicBkQ4Pr8aXOb6IhiFESVGyLLW8IPLKK08aCSJD62l/xeamYeBUA67ckXmJXCC6G4y+E4h0jyIZVegyTl7qRlN/MW9mB29We0H1A6L1aBiQWVofDIjUtA0D22Ht2g57ZwmSM9Pw7HMfIG7hF/RWBEIy9M4uJETIciSERJ4hpCV1RroRg3hDJTxexpijV0QlRXI9ktsiSwmiMixXKsWy6AIkyGCoUVuwOHwVEhZ8hlee24h3/7EDhdkD2PhZB1Yu3q48ongZh84MopgsvPTSNux1NMMiIOpmeHpB9J1kji8idxAZsqj+b67E55VXXml5ApGVILLR7tu6U9F3sh7f3JZ5ifQwPwaIRGN9JgFE8kcQXeyGoycf9n4XiJTuCiKXRoFo2NBu0upx7lPfXUVRun5IGxbHQAqBlI6Wvmpk5RfihRc/QPzCjYRQPoFQrUcxIIw8gWYi0o0YpP6IMFIgcikpooQqo0qdICrDMsJJbY8UWBUQVNm6fil6I55dth2/eb4Uz8Zz33xCLKYK8TLyAkEUH1OG2JhsvOwEUUNHnvP5pShuJJANmQ2uV55lhpDohw8iU1oblmzzdKxXXt0fWfrWwk5bL30e9w9V4vKtU/SHdKfWBwQi7REdu9ABW1ceQSBFc6ZEMWkgkjoRTyCS88Sj2sSAkBZyUk+UieqGMvzpL+uxdMEaJMzPUeO7DY/1Fi1QoOcicAkfCSWjtZx527CkL5FzGB8tZ2MGp1x1SuVYHllBEFUQRLLNaOxgXKuCQCS8orMInwwkzcvD8gVVSIqR+9MgkhZ0S6MFRFsJohaCKN/5/OvpGQl4GB7iCY0Kj5+iJN44NbyNgKEszv0SdrLfI4gIHYtqYOOShfJs5HXC+/7ICyKvHr4s0p9okDaeIGobqiCITuMaviEbbisYCSseCIiOnm+HtTMXjeIRETpKKlHIPESeQCQVxyINIGPdBSLm/EeAiFLbDI9ADI1uwmxV199Ib2wbWgYz0bC/DG+9swoJcZ8hfgGN/TxCYN5uxBICCQpIhar4bEW0DEgqI2XLmHAaEuOCiErksYkCpGEYGRIvaZea/kEV8UWKRySNIGq4LsWAVBh/Tw2EuofbqOhyrFhQjOXzSuklVVB7qQbeXwPiVKOFfLz6UjrqHV1oaC9RAFIt5bpoODu3MQyc4dNFg9u1jeHxE4SRgs8XqOtajz3ta5gQtqFpMAOOPpmGfYcqppW40ziUrMJLmmXb6PEYahANMNwEPIPGktekrKrFpxh1s2SbiMc9VBn3IfdkpDWz3O/XK6++m6TOX4+SY96u45l4RLbBdfSIaIMHSvH11cP0iDSIzPVEY30mDURHvtoPa3uOBpFMb01Z+kTrCCXe5AgQ6SISnRt1Jiy1LmTdiHrJ9feu43KD1ggQmYe0ERDRHeyX6/OaPdvR2l+FlIwsrFzxIRIWbUfigjJ6GDVYShCsXCTGn0Y/ih6RFJ3FEBL0kJZF1NCD0Z7RaMCMBSXxcgyJN1SGpcElWBZTibiILMSGZyA2LB9LgosRT3glCfQIn0SCKJG/J7+bJB4TYbQsRpbyvZ7XaUZCeCuv0YAlkQX4w28LYG/phr2jGDLMj4zFV9+1FfWdKa66IkLI0pXC8PhhgMgoSrybPJ3rSXUd69E4kAp7XxoqGzciu/oz7Cj9GHm71hLYGWga2MnjnP3KBrapSRk9ScdD/rZkiBgX9SSOm03ScNJy3/egZQalJxAZ8sLIq8mRrvNnxndEnHLGs4E1sA7KuHNb0dRXiFMX+hWIZII8GW/OLE+fSQLRJRz6ch9sHfSIpLHCKBC5e0STCSK57kblEtq781HrqMdvf/8Z5kf9B0mLchWIZJqFhJjdSIimhzKvCMvFS4rOQnyE0zNywmiZzCE0IRA54SP1P07J+HMvJJZgwyd9+OBtC/7n2Uw8HZ+BZfNlSKBCXRQXWUqVUTw/itdRIKqkeF8Coug6XquRIGokiGqxODIb//xnERoPOODozuIzS46DEYLekAJRp3hCopSfJIj07LWb4ehPQ217MjZkvIllL4dgVsT/RfDCaVi4MhB//s+LKNzLhNOVgebBnQRRKg24G4zoSTf0JXMf49BgChyDaWqpjuO+YQ1soTxB4WHICyKvHqzGBREhJCCSBmNN/UVOEF3GzTtE0W3CSHS/QXQDFzF0ukWByNErIOKNDos3KWBSN2zcPA2JASKzuM8ziDZrgzsMIhozVRQlIJL+QsnK0LT0WbBxcxliF32EJTHbED+P3khMORLmVSFx3m7ERVVhafhOPJGwDf94w4KnlxZgxfxCLIsqVfU/CkTDUzm4w8csARHPURAqVpK+RM8kpKAotxsNdYdQu7sPWRlNeP+dMrz0RAqS5m/EigU7+HvScq/QCSMDRAQhvbZlUbuxLNLC60nxXA2WRKTj4w/L0dxuR1P3Tli7+LK7GaadEh7JVKpTAiKG308MRPb+ZEIole9+O/7x6Uvwi/4ZZoT8DFPn/gLTA6dgdtgMTJv7cyQ+H4O8ms3MqRUz/qQxrjHeUFaeb+1PQS3DzkZPvvlQFuwDmdjbQch3p6ptDX3bGQflOAJMjh+G2MOGkhNENAxSBztSRnoTmY2GV159e7lAZMQt0XoCSKRB5JD00ZmNg6dbZbwd0kH+pI5I6z6BSC4uc/FdwNCZJti78mDv3W6C0ARApFonUSYQWaQehF6Uhecr0cDqxgouEDWoIW6YIFVH1h2wdRWg2robr7y0GYuitmL54kqCR8+KKnP9xEfvole0B4vC0vC3P5eiMPsknluWhRULswgAwkTqiaTITDUqENDIcizJqAzSTJsgknMJpISIfDy3fDNqqvfjQEcX9nXY0dHbhP3tB1BaUo+P/p2F55evRxIBuTymgOcZIBKJR0QQKRjt5fa99N4qEBu9A3/63U7stdjRebBKQcjaxZcuMJLn79wBS6fUgUh9EcPVg7H+XshZj+MS739CGuNa6nqb0EjPRTIjX2T/DeGxPoTOL+AbOgs+wf6YEehPEAXCN8wPPqEz8Id//hq1bUU8PoNxjZmYfieI+lJ5nWwcOF6GYtt6/HPdy/j9e8vw9poXsTr9j6hqkY6vGYx327lMo/H3BCEppnOXef/90PcJRPIbd5On87z6IckjiBjfFIiG1sE2tJ5piWmqMxODp5rooMhMreKqSIMF3WjhPoLouupFO3DKQRDlEEQ0DncFESUdBlWnQRoXBSZZd4JISWDkXFcgMormKGV0eTy9Jakzkebats5KrNmcgaSlWxAbVYS4SHpAIhm/jYY/YX4JFoZl46WncpCb3Y29NV+r6RuW0UtZFkUPhZ7QsnABka7vuZtkGvAEmQqcQEnk78VHZePtv5SiqakbTQd2o7EzC83MVbd0p6G9vwRt7RaUFFjwwduVeGlZDpKicwgeKRoUmBFuqs6I9xC1i8tdSCSIEmJysWJpMj7/tAL2Vges7XxO5R2u4nOvVTDS9UMCaYa1u9H+XojvSuIB3+OwRsSPcaTesSHn9RSIZP8mNZ+UPPsf//0EHvf/b/hF+MM3JBAzA4PgExSCmcEhmBEcgOnBPohOikRWdQrDLYv3ICAiTPq30esRkO/Epyl/xbJXoxCwkDCL+f8wI+L/RdCSR/Ha28uRvetz2PqyCCJmspzNug3gSNyVhGkd/IIJkducjRxcwDDDScT7l0GAVUdvLdluG6TH38fEzuez9OnrWvlbZsl+uaYcq/ZzXacnGVTY+bvO70Y6U79pNMowMn/DmUBjqY91yXW+S5KGaXDUs8l+wxjJ/ettWgyLEftdx7nkfm2vfgi6G4gcQ2vRqDyiDPQet+DanS8JoxsKRSNBZJb+TAKIruHKnbPoPlpLEGWpDqUjDQpv1hOIxpELRk7JGGFijIxr0iBZZeyw7tU0JGtokDKw21GNX/7mUyyVCeiiZFpuK+FQi/h5ZfQscrAwYivil2zExrV2WK3HUZgziJdWypA8aQRLARJDddNsDRpp2j22pFgtMbwOCeH1SIypwOKIHXhm+U5kZx1AQ7Md9o58NNGYNPWvQmv/Z9jHe9zXm4yOnt1obe5ESW4//viqNFLYTiDlEWgabGpUBmk0ESmNGXgvXI+LKKF3tx2rPy+Ho80CS3sq6js/5nN/yLD6nOHBMDMb6ockc5NoLaM+UGvc9+sm4z3ryQ3drynbdXN9yZzY+lLw9G+i6Q09hplBszAjYA4VjOlzCaLAEEIoENOCZ8E3ejbW7GC49eXQ+EqdkBjhbXAMZmHV9rcwd8F0PDrn55ga+CimBv9fnvNz6nFMC/kvvPTnONR2pKuiO4sCBe/P+SwKIgZk1Hfxlgx5AhHvfYiZJ6UvKNmm78UmfeCGpH4qVcnBdUONBwnMXoFnMtd3cNt2NA7tQNPBDGonmg6JmPlRy0w0H85Ay5EMXieN1+U1B7bzWdOV7APczjRjH9jBY3aq6zXw2gJAGVFCg1Du3XX/NnWvNEJOr8s6KPAV6MgzO9+rSuNM6+b9TinPbdiAjYwPXv1QZH6HTjlBZJP6ocE1BBHTaVc6WnvLcfH6McLoqtMn0n+aHIYmHUSn0X1sLxzd0mw2ediQuDQeiCRRizztc0oShhg843rMZUtTb0vPGhrkDWjsy8P2nGwkJL5H7ycX8dF7CaE6vZQirphsxIStxd/+UgFr3TlUVQzht79MR8K8FKxclE+DL2PGCVyk2E1A5Kr78aTEKGluvZceVzUSFmQjdsk6/Ou9cliaDvAllKpK8aaBrbwvGY12E0G0lkDaiJbOdLTsr0ZL4yA++1czEqKTea0cNQGfHtnBCaFh7cKS4D08rgYr4rYgY+cueli7eN1kGpJVCsI6PFxAeFgaCQwDGgY43CLvOLIynFznGjKub1xPhoyS596M3W3rVQOFaXMfx4xAHyeICKC5oYSQgCiAcJmJKQFT8M9Vb6K+Jxt1fTI6/GZl7Gv2bcOKX8bgsTlStzQD0wKp4Ec0hHje1KBHMSvyv/BJ8h9oxDOcxtoVX8VI2welmE/qnTQojLonXa+UpmQjCEQCBi1Zl3qpbLQdLSJUpfhvJ/Ye2IFS+yYUWzegqGEDcveuRmb1J9THSC36Nzbn/AMbMt/EuvS3sHbHm4TrmwTpm/g87a9Ynfom9Vd8nvInfJr6R3yW9gd8lvoG9/0ZazLeQlrpx9hOZVetRsGejcjfvZ6/8QV27eP99Ofw+XLhGMhB4yA1JN+zVZ2ZjcDSz7OVAHQ24jAaejihaxvcpsLBTm9NPEOBrW3Q8JYkrCTM5B27ws6rH5pGp1cXiKQfkXhEW2DvIYj6SnHh+mGC6DJBJEP9aBjdJxDJOHNXcfXOGbpie9DYm0kjmTIMDJV7VDlI48Y9PZxEzDEipxTXiZx1QdIHREnqhWhI6jp1c0FHdzk+WJWMxYs+cdYH0SOi8U6I2kXJRHPZSFy0CRlp/bBbL+D9f5VgafQaek3ZWCZTQUQKfIyGCPR6PMDHLBnKZ/n83UhawGX8Frz/YQGq6pv5AmqYkNOYQ5WWIzLqN3PR3RQNZgvh2dKZirauIuzdY8NvX8jj729TIFo5T1rryfQT9IrU0EOG+AxhDYgLrcWSsEw8/+Rq7Kmzw9FZSM9TmiPTCCjpMPEEiAelkRCS7wZEJgNEIuOaBohkfYsC0YpfhmOK/yPwCfKFT+DcYRDNUB7RXIJoFn7m83O8+ucXGJcKCKFU5uz5To5kIqPqI4TF+2JGiA/B40+g+WFa0DRMDyKEAmZjytwp9Ip+hpW/ikZNG59NeS/OeKnE74yD9dJwRlre9aWh5WAWMyK5fEd5sPVIvWk+LJ052LMvHSUNm5FZ9TmB8m8C4y28u/q3+O0/nsazv43FU79eihWvLEL8c9GYvyJIKSpxDsKW+irNnTcVflEEY/jPVaMM0XRR8C+UBzc9SPQLfpdt/839/42ZYT+DT9gjPOdRBMybgYDoGQhZNBtRcYGIip+LxU+GY+Wri/HC7xMZPivx+tvP4Z1Vr2NVyjvYmvcxSiwp2N26E7UHMlHbTu+sPwv7DufzGQmpvgw+twyp5fSyxPNSHhjjJqFkaNhDVEWEHtL5KHlh9f2UpzQrHjDTLYFkpxzMmDkUiIpx/togrhNEesy5BwKiL9F7QkCUgUbmBl0gYu5xuChDbtrTw40HIkn0jMDKuI2UGF7Vj6YzDQ37d+H1P67F0oWbCaJqqka3louSDqy7uJ6D3/9PEer3nkPyNhtWJn7KbWkESgWNvXhB7q3h3OFDWA1vL1EeUTzhtTR6O/71bhn2OlppbKr5rKmquMUxJC7qFwpETczpNnZtRVPnFuzrykLLgVJ8sSEdSfM3EII7sDw6Fyt5z2rUhnAZAXw0kBLCaxAXVox5QZ/g/X/vhL2tAfaubBo5mTI8ZThMPAHiQcn1bqQ4zQyQyQKRIX09O+OHtNCRVnNvvPcsoUGPaK4PZs4N4FKDaGaQ1BEFYgYB9bj/VEQnRqCiZTsch3aipl064KVgS8Hb8IuZQm9oFqYFBGnRs5oW6MtrBhBMvpgd6YO5C6ehxMrfZs5fA0jAI+sMfxrglsPZvJ9M7Nm/BTvK/oUvdr6Lj754E39+71W88sZyLH9pPuYnBSqghCyaidkRj2Nm8KOE5WO816mYOofiPU6hZH3anGnDmh4wncfM4HPNIGh9CFx5zlmYScDO4HJ64GwuZ3ObP+VH+ap9M+nRKS9RjqOmz/Gl+Jz+fDY/fvenAmbymekFBvC36DU+OvtRPvMU+IbNhH+kL8KXBPK+I5H4wjz88q/x+MenL9Mj+ztya9ZgV2sa0yChO5SPfUdLmAGT8RDF8xMwMW4qL1C8QqMpvBPi7ul8hDzZCsNGjCXzsV7dP41Or8MSGNEzshNEwoGWviJ8fbUPNx4ciK6pSqme47sVCR2SOB8AiMT4WXu2oL59O/Y07sYTT32ApTHpSIihFzRP+g0RRNEVakifuKidWP95J+r2nMevfymt6j5GYkw+Db+zc+nwMD8eQCTFdKq4rhzLIktV67j4yJ1YvjAH779jw25LL6xdNXzGZL4IKZqQIh9pxijzuG+ht0bvqJveUUcavaFy1Ft24Xe/kt/fgicW5mJ5VCGWybUjpE6oRsFIlgKjJIIyPlLGpyshiEowb+4WvPDkJuQW7iLcKmDr3qn6T5nD5GHJ9W4eHIikhU7z0A58uOl3NOqP41HfR2hYxTgH06iGKBDNJIim0zD7hvjDJ2QGPt72Fj2hAr6vbWg+vANp5f9SIJoS4MtzggkfARENNc+ZERikQPY4jfSsiGlIKf6ImYxUJjrGPWVUJa4z80FvoKxxI/7+2QuIe94fYbGPwT+KcAt4FL+Y9V/KW5Pm5DMCp3PbFDzu95han04AzBBoEJ4z584dX4GB8AkIxKy5Wj7+gZjpx+3+QZg5J5hLEeHrz2fmthlzCGCCdEYAPURZVwrCLD6jb0AYZs8Nh19QBGby+wxe10euHxRIGPrxnvzhy+f2DSaICa6p/j58hsfw+Jz/w3D5v/AJ/RlhOgNLnw7BS28k4k//eQmfJr+J/NovUNeRxbifTzgVKjkG8phpzGZ4SUMPXQ9lpG/DS9INNAwb4G4rjO+67sklo7h/DNvh1X2QK52OkhlEfeIRFeKrK70PEkTXCaKv0HlsF6ySG2JOUTW5ZsQya3iivH56MhL5JCF7fNjRsvabDZ2WLorisjsLGQXZePrJNYifV4gkgihJRkyIoSGnp5EYVYUn44qRk3YOW9YOIDZaZmbNoaGnJ6SG3OHxCkSmhgojQMTv9Jqk/ujphZVYGLgRzyVuxsY1dbA29sDeTU+Iz1I3+CnqeterBGcbIJCYUOz9q3l/n6NJeht35OBAhwP5OTV4dtl/sCw6BSsIthX83eWUgGhZxC4sDazAiphaxIUTgNElvE+pu5KJ+yqxNDQPcdGpePtvebA02wjAPIbFNorhw9/wBIj7KqcBEY1+byMjqsBDJNObu7bfzYi4H2f+LpkcgX4asmo+psfyOIHxM5W7n0FDPZMg8gkUGIlHNIdG1p9A8sHKV5ehuiWT9yF1NKkoaPgcobG+eIzGVryhqTTc0+g9TA2cgSk0yFPke/BcTA/1xVufvQ7HwUzYDjHeDfFZaEgFQpWOzXj1L7GYGfLfmDLncV5HPI859DzmcKlhMHMugUFAitEXKMi62sbfnCn3OwwjWZf7537Kh5rFZxGAzJxDqPCaM/0D4EsIzRYRLrMJIl8CyJcgmjVHHztLoMXfnUUY6aVLvvxtX3qN+jiGkzTsEMlviIx74P0IzKbPYdhRqv6NHpfAc3qAhNd05cFNo0fnEzoNEUsDkfjcQvz+nVfw6ZZ3kF25FXtbihn/a9B+tIoZxx1Mt9Jy0Vm8zjgrQ8IoqQyMxBEpdnXFFyUZwktGT+mXOmFDhNFwfDDkHn+8uv+SBiyUapAiINqo6rAbu3bi+Ff7cOP2ZeLmhqLFSAhNKojuKBBJ0VzH0Wo0dNMNFxCZAGRoskEkOW8xhnbmtrakpyIp/hMkzpe6m11YNk8kMJJ6oko8HV+Gncnn8fKT0sx6BxIEMAKgsD13B5GSTO9QhJXzs/HG/xQhI6UJLS29aGzfgz0HUrGHAKrjS7AOSCW1VE5L5TUNVe9qNEqT1/ZNaGovxa6avXj9fz7DyiWfYXn0DkKI0CFkFIwiRdWIDdZDD6niPzUaQ5XTc5Nm3eWIjczGs09sRklVPV3gctWE2eZM1KNAcb/1MEHE9y+tyKR+Zm97CpJeoRGO+AVmhcykkRSjKbl8GnKV059L0YAH+sEvfA4+3PgW2o4UKW9mV9tWLH91IR73n0FQifdEBc0ifKZhatBsQokGOiQcj87xwRO/WYY9HTvReHgn70GKmtIZ7vl4f/3v4BP23/R6HlW/obwMAmE6vRRZimYGhA6vG98FlncHEYExh88m6/SCfAihWYSRghDlR+/H3y+Yy2DMJoh8eW1f5fkIiARCWr6mpS+B5ksYitR1nb81LAVN8agERIa0R6WhaoCK9xyow1WKCAVM0wKmEsaP8j1MQ/ACfyQ8uxi/+vML2LDjPyiqZYZtvzRoYhj2Z9BepFBSvJqictIaOMYoLIYIplEgknV3EN0tLnl1f2QG0To4BjeqUrHm7kyceNAgunLnDA4cqYJMZ62bgTrhY9akgWirU8xV0Rg29uZiY/IWxC/9APExRZBhfBKj6QmJ6A3JYKIvr6jF+g+PEFTpkNlZVd2QQGhCINIt6BIjc/BcQiaqi06ho+04WvbXwt6eyedNJoS2Ya905B1kjk/17dhEg8v7pmfooKGU3EFjWy0++iAVcfPfw8pFqVgRnaMApEFUjRXSHym8AL9/wYG//XY/IZrN++fvE6RqEFUZhkhG5Y4swMLoz7A5uQy2zhom4jSGxY/dIzKONZb6PPGILHxux2Am3tv4K8yK+r+YESL1LlKHMgezFIiCTDCiZxPgh+UvxWL3PmnCnE1DmI0//uuX9Hxm0HuioaUHNT1wJkFEg0ogTQ8iMEIi8ai/L+avWIiCukwazTKeWwRbTzksHdV49Y/P4ec+/G2e58PflSK0GfRSZtBLUdChfAQ8znXju0DGhyDyoVH3oVH3IYj0OuUEhPKGnCCaRRDNooc1i97WMIj8NIg0jELpHY0NIkOzCaLZJhAZMBoWQST3MFOgYwLRTF53Jpd6v5YGkuzn/RP2s0MJJnqeAiWp65oeMI2gmqEyCItWxODXbz6P/6z/C3JraBMO7GT6yEHzYJYaGsbaw/fbrVtE6vgiS0P8zkydtJI1trnigo4PXj0YyezbLoltpw0Y5LpqPUePqD8ZTQTR4VONDxJEN3D59mm0HSpHbbsMw8MbYiQR1Zn03UAkdQNOEKnWYrrFmHxv6svF5tRtSIr7CHFReTTUUq9SSQBpAy7QeSmxHr99zkpIZdNDKqI3spcg2jsBEDkbKXB7YmQuVi5ORuomB+y2NjTtL1KNEMQY1w1sQS1zxxZ6RA2qyMZ5v73M6fWko4WeS25hIZ5Z+T6WL0jDUwvLsGJeIQFUiZURe7AysoYgKlKNF7K2nUJV4Tm89EQ6YiO28znylXckfYzkeWT08IURm/D+f3Jg77DoBguqRRnD0xMs7qceKIg8nCPPTFn7UlDUsBrRK2n85v5vzCREfAJnw1eMpRlGXM6mdxM8PxCrUt6m4ctH00ApVqd9gFmh0mKOhjdY6ohmYmbYDA2i4FB+D+N15yJ4UTTSiqX12F6+13pYDtShxl6LpSuTaHB9MSvIMPw0zlJ3o+prnCDxJIEMQeSChhSdyboLEFLUJkVuvlL8JvDgMQITP0JJ5D8GiDRk3AHkApGcq70i5++MkHFPAkQBEAFpgpZZyqNTMJVwFgViNoE/m2HhGyhihkAgK/VtvHepb5LGFhFLg/H0LxPxwZq/oLw+lWGZBQczbDKxmoys4gKRUTcocVyK75x2QN79iLji1YOSxbDlTtWJFIj4nugZNQ2k0Damo+9wPW7cvPQgQCRjzd3EpWEQ6R7+44LIJE8P6VnOXI8Ux0nOSSroBUb0jJroEW1O3UoQfYDYqGyCSKZ5cIFIjVYQw2V0Eb2kAl3kFboLyyIIIhlJgUBaFi6jYsvAp3r4HsMLUkVyap4hns/1uIgtePnpNaiutKG5rcQJovV8CRtQS09IXkTDkM4VSA5PIOHoycNuezH++Kf3sSTmfd5HIZZH7sFyAmVF1C4s533IoKtJUTvxh1dz0GL7Gs2O0/jbnzOwIPRTekY7ec8yNp3u9BpPJS7Yiddf52+3WfkbmcMJ1CMs7qfuAUSe5ek82ebpWC2j86RZMkKCpScVb3zwBGaE/h/C5DHmwmcp46eNo9asoBD4h0bjcd9pWPxkKHJ2fwFHXzkqGwsQkTAPU6SoKSQIU6VVWvhsTJFituBwAioCUwNDMGfePGzKycGelkbsarJRjSjba0VM3ApM8Q3AdH9dbKWAwnXlwRBIImXwVT2OSQouGhoKMAoM8l1AIIZeQCXHGkVuFMEgUkVyzmI5f78QekYhmO0fxmPMxXMCLZOkSI7nqnol033oeiWn1LqcaxZ/k1BXYOI15N58nRCVRhTyzK6w1scqcZuujwojjKIItWgCK0IV8U3x9cVjPtPhHzIHkYvD8fqbv0Rq7nrUONKYvrfS8zHAI9KlINYeLlUmVJaM/+r9S7zQ8UiPxjJen0WvJkMjQbRB2b862jwziMQj6j8iIDpP3FwlKa4rWtxXEF28dUqNuFrXQWNoMk51zMXUMTfjApEMEeGCkqeHNMs4R8ogVeRygkj6a1h7kiGjODR25yIjNxNxi98hiDKRQHBIQwSR7iSqYZQgng2NvzQ8iA+j4ZcOo+IFhdVhWUgj4gMb6J04EB+8m96SXKMQK2V6BoJJd3Ql4CIykBizCu//YyccDgea2gmj/u28x3WoG1oDCyGkPCLp3CX1RHwZlrYqrNucgeVJHyB+Xiri5V7CLISgjR5RIyFYy++FeGJRCrIzmrH/QD/2t/fgk48ysCJ2FZYvzFDwUvcuHWijahBHz+k3v/kCtc21asBPI8foERYPSC6jIXK9Q+26O9/fhGSG0+j9BvSkI6mMAqCHwtmKPYx7+XVrELRkKr2YR+Ebxpx4kIaPS6HMjUdg+tw5mEZY/f5fL/Jey2jU9uD5P7yIR+fOxPTQuXg8aA6mhwRiCg3vVBrRGUHReHR2KJY8/TLyauzY3dRNg9mNamsXKi3tePKVN/Dz6UF4fLYY4lDM8NNekS8NtYaMNCjgUoHA5KFQfjTifjTW4snMnB2I6b5yfCj8AiPh408IzgrGNF53GkEzzS+UsAvjd3poviFKap/Il56bL++Vmu4r2wjU2XKMbA/FTL9wQiYS0/kcM3gt34BI3k8kt0UQElxSss0vMJrgkO2G5ybA4XMp74dLKY7js0k9kvTZ0nVbfF6u+wqEFIgEPgTisAjIgAineB+EmA9h5CNw5HVm+PF9zPbF3IhQLF0xH395/znk1nyKxr5sVWzXKM3BpZm8ZO4kfkkRXd9aZ+u5dYwLkuYYN/rXUQaIRK546NVkyJkGlR13aSSIpDpiG+zt29E1VINrN08RN5dJimuKFpocxkdApL9fvnzxu4LoFi7cPImGzhw17tnEQKTl+WFd0ufIsev58IxkXJcpnRv6Umnk01Q/HVtnHgorSrAi8T9qtOoEAiMhnB6R9MsR72GUdN8cPXgpIUUQLQ9zIDZQvCQaekIhMVIGQs2mCrSXJEV34bsIJGnJlo6nFq9H9nYHmltaUN+WrSK/ZehTajVBJPfI753JcHSVI7uwFM88/SEWRa0lxOiVRe7l7zfwus30hhrpGe3BkpAUvP/3arS09KC1vQEt+x3YuCELSUs+QCLhlRQjdUUaRIn0npZEpeB3v9+E3Y5dsCoQ6SIMT4B4UHIVmXgGkQz/YshlKMaSxA2Rh20CXMJHFcsRQCILc8qNQzuxtz0Tv33nWUwLegw+IX6YFTwSRD7BYczBh+u6oGAfLHwyCnl7mZkZsGJzXgpC4+fjkYA58Img10QjPIW598fmyPHz8MjsCPzh3VWotPWg2jGAavsQKq2D2MXlu5+l4TG/GEyjEZ/iH0wgiWEOo6GVOiBtyGeJhyJFXOI1+fsTDP6EwmxCYw4BRKD4aJBM9yUs/KJ5/gL4Bi2CX8hSzIlMgF9EPMIXP4WI2GcREfc85i17BfOXv0pxueIVLFjxKhYt/yUly1e0lvH7sF5F2KKnMTd6OXxDYhkOi5RmBS/B9ID59E4iMGUWYRS4kLCZT4hFEHy8F4JqOsNgxhxCjhCZKR2F54Y45aojkiblLg/IHUQjpb290ZpJD3K6Krp7DOGLfPDrv67EjtJPmNmSkUqy4ejfwXfFDCjtgk0aBzHD1zCwFvW9a1Ano6zIMEQHJX4YccYVD72aDOlwHQkiKRHSpUIGiOz0Vq0EUedgFa7ePErcXCApDBC5vKD7AiKrgKh7IiByyfPDumQGkXgdal3qlnrTYJOOot3ZaOwqQW2DDf/z8jYsCs0giMQb8jRKwUglhFVihXhFqn6oBAmRaXj5iUxs+LgNb/62GMvmb0Rc2HbuJwDCCKHQWtXAQYrUnpi3E79+LgO7q7rR3F7P3FoyX84nvD+CaJCGmPe3r28Xqmr34DevrVL9lhLmE27RUg9VqxVJRe1SIya8+MQO1FQMYF+7Hfu7d8PWaME/396EuPkfEV7pqhm3mr9I+hkRRIsit+FPf0rGnsZdsPUQxt8rEIm4zfkODRAZGvZu71nOeEHQWZjjskjxrDSV75NBdlMUiOz9Bcis3IzQJfRkAmZiRgiNpVkKRBShND3QH74Rs7EuYy1zcPtQ1WzHXz76BLOiluBnNMCP+s2jYvALGuRZhMGyF/6IrHIHyqw9KLP1UwPUICodB5FR1oKEF/6M/9+UuXjUPxK/8AumNxWGKTTgj/lxSQ9mmn8EDXY0ZofMx5yIxYiJewqLl7+IuCf/B8+88he8+vq/8du/foa33tuCD9Zk4dPNhVibUo7NWXuRWmhDcqEVO8qasKO8BemVrdhZ04adu/YjS7RbdAA5u7Ryqbwal3KV9jNsWpFW0ohNOXVYv3OX0ocbC/D3T7bjd+9swMu//w+e/tXbWPLkbxGy6FkExDwBn7A4httiTJ0TQ8ASVupZwgmvCMwIlH5I9DIJJV96gi7YCIi4zQQfszxByNAM6cc0xwf+YbP4jn6OwIXT8Nzri7Fm+99R5eA778kkkLarzswqQ0IbIfFCGgmpynOVCXKLM15NknS4jgTROkJIRE+UILISRKrfZ2caOgYqcfnaIbLiHJHzDXUDd+7cN49IF8019xeN8oikQ6t0VvtuRXO8DkGk3HCVI5bWNTRA3cwl9RRiXw+NsWM//vq7IiwMzEBcqBS9VSqNB6SEsGqsjJJm0YV4Nj4dH75ThpL8JnS1H0dNeQeeTvwY8ZHJPK4M8SEVCkRJoRYsC99NGBFUMTvwjz8VwOpowb6hMlU3Jv2IGvqZw+4rQh1h8s4/UxG7YBXiVCMJAZ7MwCqT31VjaYiMWZfPfRvxxZp6tLZ2o3F/KQ707kZhUSVeePpz7tvCY3IoelLimTlBJAO4/ueDQlgPNBB630cQibdivEd3z8asu+13l7x/mStoB38zQ42F1jQkGSBmTJhbdgwU8ber8dcP/4xpwb6YTo/IHUTiFfkE05Ay9z41wB+fbN6EmqZWAmYfyho68c6qLMSs+D1mRz2DgOhnsHjlb/GbP3+KrVl76AH1o7xhAKXWAZTYB1HiGEKp/RDK7cewtaARK3/zDoLjnoPv/CQELF6J6OUvI/7FP+DVP/8Hf/nPJvxrdTo+3pSHLzKrkEmolNT1oKJhCBWWw1weRbn1KCrtJ1DZeJI6pVTReAJlTUdR2nQMxY1HUNh4WKmY24qajqC4+ShKmo+hpIXisowqleMdoiNa9sO81yMobz2J8hZer/m48ziq0Tj2KMp4XDmfJ7+2FzsqWrA534IPNxfgH/T4/vDPtXjhtbexdOUvMSc8Dj70nGYExGCqbzg9qVB6cmHwJYRnE1CzpcMsAWWWJyCJ3I+T+rQZfuJh0TMNkk7F0k/p55gTPQUrXl6AVclvoe5ABpr6s7G3czPti5SQSFP6ZOUlS0tK7TUb8c+ryZNOh+5FcyIprTJAZKez4KBdaukuwtnz3WTFV7h15xJu37mhJ8lzTpCnR+KeJBBdJ+Uu3SaIaATuL4jWcpsYIqkfkkYAubB3liA99wu8/vo7iJ9Pwx1WSPAIiMqV3OuKtDSIlkXuRkIovZ2odKx6vx77Ww/jQKcDTa1VhEIzPvsgDysXptD4y4CkRfSMpD5JGjhUYzk9lBXzcvHsss34fFUG6por6RHm0iCm8CVkqikpPlm1DUmxhFlUJlQ/oFAbloU5sFxARC9LRkxYsSgLb/6hCLV7etDe3YxWPo+9tQZv/XU9Ehds4DGFBI80HZciPe0RSb+o+AXbsXlLHWz0xqSIUiAkRWKeAPGg9O1AJPvkGK6rjIa5fN/YL+9cL+1DvHZ/BoobvsAHm3+L1/6ZiL98/Ay2FP5DDS1T10HjdKACubsLEBG/GFOCgjA9JGxYMwggn2B6OEHRmEZjOSs4EmtTs5jT7kFJQx91mEA6hazqIWzLbUVyTiMyilpQVNOFqoaDKK2lJ2QdQrGNIoiK6Q2VOo5TpwimE8jZ24v0mhZsKbUgpcLO7wd4LM9xDNLAH0Q5wVXGc0t5jVLbQVQQYBX2UwTQWZRYTqPIcgrFooZTKKSKrCdRaDuJfPtJFPB3ChwnkN/E71RBM4+hCpq4jbDKowqoQqeKCbGSJpeKeU6e7RjyeR2RXM917EmlEnkWfi9pPE4d5fMdcULwMEoFwLu7UFS9HxkFDfh8Yx7efHc9XhI4LX8VgREJmD47ElN9pIiNYTtHYBQ+LN+5FMPcHUT+cyh6QkpzQtSxUm81Y7b0wwqkBytzS82kR/YYMw8yYsXjSHg+nEB/g+HKzF837YFMzyHdJ1T9scQ9qTt0xqvhOObVd5dOl3cDkY0gsss4m3QUzp7vIiu+JIguEjy3IA7RpINIdI0oklZzLfSIGggimcpa9aGRHDolrrLR5twMoYmAyGinbhn8nA/5Ka8n8+9kw95djl2OEny27gs8/fSbiA59C0vDUxAXXoz48BKqiCpWDRT0FAsCo5F1RMujdyM2NBdJ87egoqQHfYMH4Ni/kzDIQ1tXDfbubcJrL6cjNozeTNgegmsP4SbNqOkNEQyxwTl4cnE2nkz6HKvXZsDSvBuNPRVwdFYTjvl48bnPsDRmM8FRxvP3EnpWgsxONRBEe5AUU4ZXn81EYWEjWtsd2Nddg+b91Vi/fjtWxq/ieTvpPUkDC3pkfCbp2CqjdCfNK8CzK9JQUrEPrf319IhkiB+CSHKGHgDxoOQOIh0HxE1nBJWMxDBcpAm33m7EE92kexWsA2tUqxsxHvXMxDQwl2vpS0XLkVzYBrKRWfMJXn/3aUQk+mNayP/F9ND/oufyKHyjf4FX/rqCRr0A9p5G7GppwLtr1tArisRjNGyPz42gd0T4BDMHPzeKhm0Bfj4jFMue+x0yi62EwgCN/iEa/yMoajhOYJxBVctZ7Y0ILGiYyx3HUNlMg23jMXbKcZjLoyik8S5uOk1v5CwK7GLgjxAcB5WnUtbK81sIDbm29TDyqQIrvRpes9BGj6bhGAoImgLbaV6H5/N380V2WZ5GHgEkyiVUcgmKXN5PDn8vh/eTw/VcQsisPB4nkmPzHC7ly3fCKI/LfC5F6hjn8fnDOs3f5dI4V36fywLuE1BJWKjw4HNWMAwq6UVV2g4jp+IANqTtwl/e3YKXfv0vLE58GSFR8ZhKT0k00z8C03wJmcAo+AZGYoa/FM+Fwo9wmk0PyC8gxCndOEI1e+dSivxmBAZQMrKDH6bJ6BdzpuExv8cwO8wHy15chLVp76KmJZ1xkBnAAenHx/g3JHZjPeoZr2Q08HoZcszNtnj1baQzhMomD8sMIpkyhLZIgSiVIMrGlxc7SYnzZMWVYRC5PpMJojvXVD+ilv5iWAkiG0Gkc+ijH8QMoYmAaFgCoSGqdyfaBpuYQy3HP979DEnx7yAm5GNCKFONxRYfro22lkBIe0XaE6pxSkAks6HuxtKwHHoeG1FW0ob2nnrs681Cazdh1J1DOFiQmrwHT8XtQFzIHnVOgsxbFJVPQDibdUeWYQkBmBj7KTZsLIajpQOp24vwygufIjZmPWIj8nlfVYTQLsKIXpFqJl6rig2XLUrH5i9qCb02NHWUo7G9EuvWb8MLT65CbHgqj5NGEgKxcqycV8dzqgjFfN5vKt59u4ie0344ekoVgFQfCwLpYc5L5A4iHQcIG/FylLfjhBAjrxE/DMm4cfbBdQTSanrR6ymCrH87Gg/mqZEMthV9jF+//Rz8FkzHL/z+G1MDp2JmyEzKh5LheKYTTDPxu3f+guLaXfRwHPQyWvDn99fAPyYJP5sdg0f95+FnPhF4jMvH58xHROyLWJ3MDA1z/GWESqGdsBDIEBRFNK5FdopQKW4kNGj4C5sIDXoJBTS+RSKBCb0g8SyU4VaGXUsZfmOd+wrFmFP5PN5QEY28SPZnESru0uAxqem4U8eoo6bvJrmfc8867dQZ6qxLji+d2/QzybMUOu+/hCAts59GhcDbdgYVFoZR9QFsyazCm/+mV//0awiatxxT5kTTo4nB9IAYeqTzCRkNpDlBUWrcO2kpqJt5S0dfaQRBbzZQOhdrqREd5lCynCvfA+AXFoQ5kQF49teJ2Jj1LzXKiczbJABScygNbEVtN+ObmkjQg13xahKkPSQNos0Mc5nCX0+B00QYnTq/n7g5J6TQIBL2DH8mCURymWu3ryoQtd5HEKnWMXS37V3VqNhrxR/f/BxxcW8ibsEqxM/PRHwkwSN1OQIiqR8KreZSRq3W0gDaNUJSzBUbRo9owTZk7WhB6/4meiXFhFAmWnvTuCxAg82CD9+T2V5TsDQ0Hcvm5an6GmlJt4xwiw0poueSj4VhW/BEwhb86++leOW5DYiLWYP4iCzVXyk+uBYJIQSRqq+SYrYCxEdvxT//ng5rI72wfQ2w79uLtRs34oll7yIhegtWSr+nsFqtiDrCqFbN3BofmYEnEzchv6AFLd2NsHXTU5A+FdJSrXebR0A8KH0XEMkkhzJIrow/tu9wFloO52PX/u3YmPtvvPrmSoTE+eGxwEfwCxk8lPCZHuSLmcHSx8cPPpRvuIwH54e586ORml+EascB7GruI4y68f7GbMS+8CfMilqBxwNjEbDgWSS8+Bd8nlKOqsYjKG8U6AwRLoeUl1Ngk6V4PFrFhI9ASMGIKqBnJCqkV6BBJJ6ICzyeJIb7hwEiQ+IxGVAywGR4UVoCWwUkJ5SK7VI8eYpQOo6aVq439GN3C70n6yBWpZbjrY+34ZnfvoPAhU/qzIB/FKb4EUZzwhWUZtFrnUUg+Uhz+bnBStNNMHIHkeqvFSyjOfhgasDPEbxkBl57ZyWydn0Oh7SwG5BRT2TIsRSVsVENGzzYFq++q1wgkgYjGkRb1IDPjT0pOHK2kc7KGfLiCkVqPAwQKSNDGTetAPQtRlZwDKbA0ZuHWocVb/0tBfOi3yaENhIQOYgjEOLpbah6ISmOC62kCCAqMYwAErlBSCmccJBiu+gMbFpDCO0bQlPbXrR2FhJEqWjpSUZTez6qd+3GX/+wHXHzViFx3g6CROqM6FEJ3Ag+qcNJiC5AXFQOEmKkn5G0cstVnlhCKCESalUNHaSYMC4ijcetx+u/TEZ5eT1a2zpgs+/HRx8m44mkd7BsYQo9tVKsiKrF8nALVY8VkRYCrYrX5G/wHj77pJDeUDMcXRV0f3eqFnviCutm0w+veG4sEA2PFaZ6yrv3ltf3LBBtGkxH82Au9rZlYHPuh3jxj0kIWOSDx4Mfw6MBU9XApTKAqTS9NozTzKBgrWAareAQGrdgvLcmGZXWHlTZD6KG4KiiUS+oG8C2wkZ8mlqFL/KsyN3bQ6N5WFXaF4s3JFKwIXTs4u0IZEbWoxTSEI8SvYBCGmozdDzJAJFZBohk3TMAzNspT+AReYLWd5ana47e5ukZC20MN3qVpfQkyxm+FbzHCq6X8n3kW3qRUb0Pf/98O+JffINQeoKwWYBHZoXi8dmh9JbCCaAITCOMpgXy+1yZzoPvVt61Ez4uzeWx/nz/s6jpmBE6BTNDH8XCFaH4bOvbqLTvQH17Juo7U1DbuVENMyb11p7si1eTISmW2zwsO787ulMweKIB12+dJCmkU6unjybTdwbR9TvX8M3tMxMHEYlpaOSDjC2pjLS2V2BrCr2TpR8igQZ7SXguYkP3IjbYhriQBu0JRRTSeyjm9xIlBQoZvVrVDQmQDO3C8qh6ekXShycTv3k5G8UF+9Dc2obW9lq09uxEKw1kS08amvaXo7h4L17/9TYsDtvEcyt5zTp6KzJyt0wNUYSkqEJVn5Mgox/IaAyypEeWKMVxhJECUWQhloStwy+f3Yycnc3o7/sSFWX78affJSNx8SdYsTiFsClT/YpWRPL+6LGJZPTtJxaVYWn0Rvzxd5uwq24P762KL1kmJtvhBJEYdAnv7yGI6BGNDSLmnnhs81A6GgfysKP0U/zqrafgGzOV8JGpumfisQAf5qBlcM0I1WRYjJWafZVGSjXFDqTxoqZz/+P+kfjNmx+j3NKHXU0nUGE7SZ2i13NK1flUt32J8pbTKG2SnDwhQxU5PR0tAocezrBoYJUcUodjkoKQrBNEVJ7jlEsm4+xupM1SnoRz3WXcHzKIhuubzL8hHpjo7r8jXpI0nChpPYMC+zFkWw6q4s5SXkcaP5Q0HVGt9Xa1n0GRrR+b8vbij++uxcLlr2B2xFI87ifN3UPVSBbqPQeEOWGk+yvNEM9oGEpz4RM4h99nMw74Ks94FjXFfzp8Q2fh5d8/hYzSVWjozGA8S1H1RKNBpOs8xpb5WK/GlwaRskVSesXvdmbmB09acOPOaZJC+hGZ3SFZNzTJjRVGg0gG/6Shct7svTRWkPHltOSBMlFZX45f/fpzLIpah/gYegfhlYijkY8LtdDrkNEJ6AlFFNArysITC3LxUqJAIZPgyFV1OSMbLFTRy9jLcwijqDIsidiIXz63DR+9n4uy8gY07WvAgd5qtPUUoVWm/m5rQF6OBc+v2MzfyCIsdtMjkjHqpEk1IRRZQBDJb8i1jdZ5AsByHlNNoNBji8jGM/Gp+OJzBxot55CZug+/fjkNsfSQls3LxrKYMiyjJ7QsgteOrKLk2rzn6GIsCt+Il55fhZLyGjR2VNPlzVKVgfa+VOVNSBgr4HsAxIOSRxCpori1dNcFRnyXvXLcZtUpUXrJN0rlMmGfXfMZXnv7eQTM98Ej/j/H1KBpmBroQ/mpMd6mBtAYKQhFquVMGiqfoHAFIQ0lwig4moYsEq//7XNU2YZQ1nAYFQRDGYFR2nQGxY3ivZxCUbPoNApUpT0Np0CJBlRLWp4RDk65ez4uGdsFRqdpfA1Jhb9hkF0yX3NYvDdDuoGBGUKeQOQJEtRDBlE2w0+U4/yeQ+8nh15lHpf5PD9P1u3SgOPosOS7NDcvb+I7sg4gt7oV76/LxNP/8xbmxizDlDlSbBeBqf4i8ZRCCR0BUiCmBQRgxhxjIFZ/7RUFSgfiIKU54RI//FUru7Cls/D++tdRe2A74992WHqkVe9WqBFaxP4wXtb3rYGMyqBbbLq32hxpk7waTxpEdgUhA0Qp6D9RR0LI6ApXyQtCR3FH/hkEmQQQGc23pR+RzMg3GkTSespoSinwkRYWd2++rQc51bLzes29+SisKMfypI8QF52hx5OTjqvSGEEMvprdVOqG8vFcXAFS1x5H8Y7z+PcbViTJTKwR0sCAx4lhd4JCIJQYZtXbYrLV9BDx8zbg+Sc/x/v/zENhnh0t+/ahvceK/V0NaGxqRWaaDS8s24rl8zKxPLpUeUFK/O2kcHpIxvxGAiTxjKTYjh7TkqBsPLmwEFs/O4bizK/x9z+UE0pbkDR/G+IJy6QoQocAkjohaaEnM7IK1GSA0wUh2/HU8g1I21GM5o49sB8oha0ri2Gjx9uy9myGpZu5vR7m4DwA4kHJE4ikNZxVDeEvnhDjgnRE7U5GQzc93K4MlNRvxN8+eRXzV8iEdDMwPZg5XGo6c7pac1VuWBXPSL2BTMkgdQg0TlNnS+44DL4hUcwBR2OKdLAMWqg6gu5qPo4aAqeMHk+xeB4KGsylN+liNGVEpRWZfOdSoFSggEQQDX83iRCTc13b9LEGwEYcO0EZ3pRcO4+gdJfZ2I+QOygmE0SGPAFvQiAyzpM6LJEAjN/pbZqVp3QM0uqwzHYYlY5DqKZyK/bh881F+M1fP0XgvCcwbc4CgmYhlwSTfwjXdYfk6VyfOpvxYY4ebkiPXhGqhg/yC+Ixc2bDN2gWvav/Zkbm/+DZ3y5GWtGHaB0sRPPBbIJIpmthvB1YRxCthm2I0JF6TFNdphdE9yrPIOo7Xqs8IqkjkvnrdKs5+SejLAhBJglERofWiYPIpZEP4tJIEG1CU08+SqqqkZT4IWGRRRBVOEFUpqSL4KShQgF+9WQF0jcew+6iK6jK+Qbv/N6BFTK0jgKRSeECogaul9LryFOKi9yBJeFr+RvrsGLp5/jz7zcjNaUQNbv2orW1B/tbTiM7rRUvPbGRv5/Cc4sJEHo89MqWh9ixTMaQExgJ7OS60gdIqQh//20nPnlnEE/HyyyyG7FMIBSdThDl0fMRT2ovkkLrCaI61bBBzouNysCKuM1ISamHtaUR9o5y2DsLYeuWgU6lkcLDK4pzlwtAhmT7BjQObnZ6a9vQ1L8Ttp6dqN2fjtVpb2Hp0zQmwf+F6SGPY0Yoc7ghwZimRr/Wkk6nhqYFch81nUZHiul8Q6IJonDlLf3CNxBSLPfqH95DeX0/ShsOqk6hpTR4utWbAEYDw2VEBUJi9OnJqH1yjCeZQeParkGk5fnYu0jgRuV/KxCZ5OmYh6nhezN5Um7SRZYMLzvDz3EMpZQ0j69qPIoqekullgFsya7H6/9Yh/DYF5nBWIqZQYv57qMxlZ7SFHpK00V+Ah1p8i19j3Q/JRkl3C84kN6RL70oH8wO98Gjfv8b0Yn++GDjG9jTlommg/nMuKUQPNI3jXapV/ooGvDxFs19O40HorNuINIuDIZH5b5DEF140CASj0hr5IO4ZAaRqkfoyUV+Ob2guPcJCRlhuxJxBFF8JOFDGUCSCe8WB6VgxYJU/OaZQrzxYjXefr0NTy6QTq66T5GeDlxAJE2p99Lgi+eSr6AixWCJ83Ipgml+BhIWrkfi0vfw+q9X44P3cpCe3IS9FSeQnz6AN16R+ptsLJ1biOUyXp0CEWGiri/Fghp4cWHFWDGvAs8n7OZ9Sws/wieKMIrayd8roDckjR/ES9uDFVEOLA2sxtLwHCyJ2oSnl3+BNWvoAbW0oqmzlhDKJ4ToDfXSo1ATszFsGUZqOnZKOhMreQDF/dZoEElk3EIPiO+zJxmtB3MIoWyU1m/F7995FnPnTSVgHoVPiA9h5K8aG8wICeeSYq5WSXK/Ton3I+CZERSJqTQ6U2UMtOB5SrNCl+CZ/3kLO4sasZfeT0ndEYLoLEroDRXTK9KA0JDQXpABobNqKf1q9H4DJm4itDRAjG0ub0h7RIYEMDx2QtIgMmDkLl1U50nm4juRp2Pur8x1YqP3eyhWHLVfL/NUsSbDTerjbMeViqhimxTbnUZxw2Fszm7A629vROiSF/G433w84hPJ+EBPaU4MIRQFHwJpFjMhMmCrjOggkwf6BwXDL1A8pTnwD+W6zJEUPB0BMTPx2t+eRYUtA61DJajv0kXFUqchdkrZKkNuNsmru8kdRBRB1HmoGpdvHiUvvjGBSLyh7wWIJl40p+qZunJQtnsPXnphE2Kjdw6DKI4QEsUbIAovxZPz6aFEFyIudAeenFeI+FAZFUH6E8kxAgkpBqsghHTHVjV8jppmQcBBLyumBAnRFVgcms/fysCyJcmIjVmtmmQ/FbcVv34uFx/9owmfv9OPX67crWCUxN9YHl6JZREyfYQUAxJoahqKKlXPkxBRhLhwQieGoAzJ5r5ida/SEME1QOsu3usezAvIxpLojXj+mTXYkb4HTe1NaOquRGN3Eezd9CgIIZsULQwwbJ0NPoyRLKQJtFIPw9EDLO6ndAu4kZLxwJqGttOrTUe5TYrhXsS8Zf6YGfKIyqlK5fJMGcE5KJQwinKKhkZGyHaTjGs2IzASj/mF0/uJwrS5CzErPAEJz/8e736WipLdndgtQ+TUncDupgsoaaAhsxvFbS5Q3B1Esu4mgmFk0ZwBIl1X5No+EjDfRS7QfP8kADHkab9u7j2WRh6b5+A2x5dcfol8u4jPb2NY2nSrwnJmJmTEiw2ZdXjpDx9hTvRTeGz2AkybPY8gWkAPKJreUBRBpPsjBTBD408P2seP8PEPJqTESwqhd0QwMb7NCJqKpBcWI6tiAxx9MjxWCuo7mXFSU8vQS6LN8oLo28gTiJLRPlSBi9cOkheXyQujQ+t9BFHzfQVRJiytFrz99k4sidmCOMJD6oliacjV3ENSTMd1Zfilria8ihCqwRPRNVgWvguJYQIe3blVjbjtrCdSDRiUR0RwyPowiLiPUo0iosSLycKyedIQIhdLg7MUbJ5eVIyXk6rwxII8JIRlYLkarTuXHg5BpIbkMRpIiHckLelK1cgPiVECniqCUvo4SSdZAVUpkqTOib+XtHAb3vjdduQX1aKlw4bGrkI4ZFy1nnQ4pIFC/1adg+NLF40Iu4cGInlPrlZxMjOtldtaD2WieTAbW3L/ibhnQwiORxAQ7as6Ic4ODVCdEn2UpxNBGMVoENHjmU7gGJomIyFw30wZFUEaKwQuwtS5sYh9+g18tLFADepZ03gEVbYjKLccRRUNWmnDWZRyqeuHBC6GpHGCwMgAksBIiuYEIi5YjRIN6EgQORsreEHkcf+IzrAj5P5c8p3bHV+5xO/GtWVoo0LbCTV8UoWEee0gVqVU46Xff4w5ESvx+Oz5mOoXg+l+9IgYT3TH2LlczoXfXKk3CiOIIgiiSOfgrIGYNkeae89EyMLZ+GzbG9h/uBSNfbmwMpNn7c7QIBouojOlLa/uIs8eUftgOS5cfVAgunmSRrIADd3SGkpywxoinm/43qSuxdyKvacE+eWVeOmlNYgOlYFE6fXQi4iViv1I6RdUTeMuQCJEVKuzSiwnWNSkc074mKVApLwgGbZHml4TalGEVTQ9rBhCg2AQxUdLPyEuCawEOU6aaYsIFaOxguqoKt6QUfTH45RnFCX1P9KknOeqOY4EQjX0fMT7EW+KsIsswNKo7VgUsR5PLVuDD2Tm1aZ2QmgP7J1ZDNcUPr8UdUmdEF+2s2WPVYo2BxlGTnmaMG6kCAyV26NkYEiPQPl2EvBIM21LzxrYxUsjhKzdW1DdtAX/+PQ3CFrgixlzZ2G2jPNGuMwMDHVKN7+WOh+fIMMjcunR2VIsNw++YUuYC47A7Ih4vPj6+9iwfS+K9gyg0nocVVSJ/RgNl7TUchbD0cgVDsNiAt7LMGRc26R4zGxwJ19icCeiybuPkRCYmDxdx7PkPj3d/0Ql5+tnNX5bhhtSzd2dQFJFdvxeVH8I/95QjJiVv8XPfKLwyEwZyy4Kc+g5zwkK0fM7MW7NnivzH8lcSDJqg4wGLvMpSdPvOZjmPxNzY/zw1n/+gD3NzOx1V6CxtxD2QSltkM6ZYlglXbkyfVo6ran0N1yv5Ek/NZBpEBkSEIntau0uxPlv+kiKi8SNjL4tjRPuE4hkGghbF3MVJOBkg0gquqWewd6biZZeC7LzavHcs6sRu2Az4VCMpWEiGVtOe0TGED5J0lcoYjdlgEgXyQ0XzSkIuSQt1OKjCBUFopJhECkYyayuIgUiXQxo1DXp+iZpLMHryoyv9MDUUv0O9wsYCR5RQpiMsEAAScs41cm1DEsjU5G0dD1eeXEDUlIr0bK/HR39NjR15TCnRg+zh9BxejjibTT0ryN41uompyYQKXkIP5cIiPsEIvHCLD3r0XxQRneQ5tk7sL30XSx/mYAJfQyP+02hByRDt0TCL2SBAo8GkEs+UvSmABTt9IDmY/rcedR8BC94Aitf/jNWbytGhXUIu2ikKmiYygmhMqqYOWZdF3HC6d1oGfAxyyOIRuhLpXzKs8E0ZAaEp213k/la4+lerjm+zICZqDxdx7PkPj3d/0Tlutbwb/N9ScMGqUfKobeb03AUBZZjKJbxAFvOIrl0H15983MEzluJGXPEI5KJ/cI1hCjX4KoaQhpExhxKAfSM/DA7fDZ++cZzyK7YBsuBItqbHUwrUuyti75Hw8gLIs8aDaIm8mBfTyHOXe4lKe4ziG7xopcIIntXHo2mASLptDjWi6DhGpan/SMlUwY7BrdQqfSKitDU2YSSKiveficbKxO3YUm01BslI2leFlYsKMHyGBr9SGm5JhPdiWQOIIGCwMMlVWQmkiI0BSICaBhELghpEMk+ytQwYjSIBDoyQrc0w95D7VXNsWXivcRQi+rYmhSxB8uja3iPUsdViNioFHpBG/D+e7mo2bsPzR1WtHRXor4tnbmzFDTzue1S3NXLiE94DINoQEDE5RC/DxryHH4uMbzvF4iouo4v1OgI1u50fPjFa4hZNhNTAv6bnpAPps+ZDZndc07oPAIniuARr8gEIeZkZ4fKiNiElbSGI4we9RNvaAnin3kDa5MrUG0/jF0ydQFzw+U0RGW2kyiXcc6sergcozL8wYLI0Fjbx5P5nLvJ0/n3rpF1NROTp+uogVmdcm33dN/3orFBJO+riN9laCSp9xMYZdUeQp4MwrrvJFZnMOP3wh8Yz5iRmRMGv6Bw+NP79gSiWQSRwMgnIJAeehBmBcvo3lPxzK+XI7cyGY39xWg5SFvWnwarApIBHsPQekHkWTp8bE5pjyiZ9iwfX13sJmouUDdNIBIIyVKV1RFE36X5Nq+pQHTjJBwEkb2HsFAGU9cXeLxhqTMyDKKn/W5SEYC5fzW8+ECqmgnW2lEJa2sLCor24a9/TUNC3PtYMu8DxM3fSJAUKGgIUHQTamlAUOyUFJ+JdJGaoWEQCXRiBERuUt6S1EfxOCeIzN6UBpFxbYGUeEf0jBSIpEm3TA1OQMq9xORi2YI0rExYj3/+Ix8FhU1wtO5Hc1cDHN15fHk70Ny/Hc18VjsNvLVHoG60SpPIbQYRw9jQhEAkYU/J2G5uIPluEmCmo2DvGrz8p6UIiHkUs8Ifw6wQf0zzk74eoRShE0DjEBStiuEEPoZ8gyMJoihMnROsYRQWiZWv/Bafby5F8e4h1Ij3U3cEZfVHUWo5jhLrSZQSQiIZ36xIDBaNlatP0EjdHxD98DSyvmZi8nSdArtLnvZ/O40NolwCKI+er3T+Leb2Ir5zGalc9mfZjqK4+YSaLPAP76xBxKLlql/RDH9CRgFoJIi05LuxLZCZJV887v8Ylj45Hyn5q2HrKkLLUD7TCT18QsVVVOcF0djS4TNcP+QEkZTsnLnYQU58TRCJFyQgEnoIhLQ3JJ/JAxHJd39ARA3qaYGl45nM/tfQnQJHD3MuvS2oa2pCVv5ufPhxJn73+ja8+DQN/ZIMLInaRk8pjUolRHYQIhlUFsGRS08on+Ap4LrM91PCdXo+hJT2hipGQEhtuyuIpAl2kbNeSEZykJZzhE54JVVNSVFgDhYErcMTcVvw1z9kIiunBvaWFuzrcNDLq6ZHmc9nSoWjbxtfYCo9IpkKneHZpyUtemziyUgEH1jnBJETRoOEgchD+HnUpIGICbN3qyqKS6/4EEueDcK0kP/G4wE/x5S5U+ETHIpp/pFM6FIUF6kgY9QLCYBmBRqKxOOzgzFldiii45/EO5+uQ3l9C3Y5jnJ5DCW1hFAdAUSV2k6hrOkMSgmNEjFKHiEzAfFcL4juLk/XuT8aG0R5MrAsJUV0hYSRLPO4P8tBSDFDkUPPSCb9K7EOYFVKHmKfegFTpQOsZGoY37RknR6RtKgT+EhHWMJqpkzdHjCHx8/AtDlTGf9CsTX7UzQPltDWbFfpRYOHmUFm9mzOqQ68IHKXZxA1d+fi9IV2DyByFcvJ51uDSD63nSC6fPMU2ujS2mViOBpLVZykxBfmXld0jyBSGhCPSHImzu88V5oxO3pzCcASemO7YNtfD0tzE3bX9yM3vw0bv9iN998rxF/+lIFfvbwZLz7zBZ5ZsQkrYzchcSG1KA1JCwmnmCzCphCLw2RUbEKIwFHFcQSQQEh7Vi7oeAKR3iYt46RVXCGSovOwfL5MGZGDxaEpWBr5BZ6MX4+338zEzoxaWG2taO2oQ0tnBRztfIbOHWgSCNGoO/oYhn1p9IRS0TS4E7VtO9HUuxsNB2Ron0qGb44OO5kocEAPT2KVYoS+DIaNgErCR8LYua4kicKUMCYIIikONNaltZ4M0WPp3uCMaDJKwjbU96Thk5TfISxuFqYHT8U0GZpnbgCmB4WowSulFZwewDJU9Yyfxtyq4QnNlAEu/UMJoHCExDyL1/+6FulFTfSADqPCIsP0HFV1QKUWwshyAsUNJ1BoPYECSoppCiRnbCdQaLzMXs8oKHmEDnP0Tuh4khdEY8vTtb+7RoNIF7cSOnyHqrWjgEe8Iy4FUDmEUBaPkf3FlJqk0HoY20ub8as/f8r4twiPzArDo34S/yQDFIKZwXMZ92TsQmmxqcet85FO0wH+1CzGz6mYlxSGLdmfwNZThPquTNR1Mw3ImIkEkQElkSt9eTUWiFp68nDq/AFcv/MlWXEVMlW4ng5CiukEREbR3KXvDqJvCKIDg2UEkfaIJh1ElOEau7Yxh0JjaKPRtvVmUrn8bWnqXEmDvRu29j2obdqDusYGVNfWo7SyFvlFdUjP3IuU1L1Ys3ovfv9aHhZGfU7vKQWxMcxJRRV/BxBxmzSWkObkUfkE22YkLNiIZ5evxz/fykR2lgUNDfuwv6MF+7v3ormjEE0dWWjsSieE6P0w7Kzt2VwSTt27UVqbj3Up6/DOBx/g7ffWYOO2AjS0HCC0eJ2ubD6/eEarNYj6dhASO7nNGT53A5G8kwl0fpVGIlIkKBDa275OfW8cInyYMOs6t2J32za8+cmzCFgk48M9jmlBswmdAExlDlQpKJQKUZrG9WkCIwJIZkedSk0LiMAvZgYh8dnfYmumFVXWk6giWPJ3D6GSOd8yabrbQAhRxVIXJBDiNoFQHiWTx+XfBURiwPJpsPJVfyEviCZbnn7n22lsEJmliuqGdYowctYNEk4yHUUpr1ViZRyoHcLfPt6BkEXP4rGAGDw2R4/oPSOY3lCIP+Ohv/KE1Lh1c8RD0mPX+YUF4HG/RxC21B+rUt/DnrY8NDJDaB3cjFpmwmQyOC+IPMkziFp7C3DyXBtBdBY3b3+D27dvURpCkw+iW6fQMVRGI6o9IqNozjOI+AJHGcq7ST/kSBC54KRbuHBJt9kmFffiQfH60oqvoUv64BTA3llKQ1+KtoFaNNHQOw6I99SJN/+WhsULPkTcgm1YGiVjzpUpEBkQuhcQJYRVq9Z7SfMy8ctn07H6k10oLWqGo/EADnR0oKXNQRDV4UDvLuzrKkMr1dJVAdu+YtQ5SlBcWY11G7Pxl7c24dkXPkFs7HuIT/gPlsb+B/HxH+Nvf89ASbUD1o4ahl+y8opUsWV/Cp83VYWTCpu7gojrw32OXOBxl9kjks6p0iy7vvML7DuUh/w9a/D0azHwify/mBb835gSOIOwCWBiD1RTdE8JCsbjzGk+zu9aQZgaLGCK5LExmDJ3HkKWPIU3P9zEax3ArpbTKGo4goL6QyiTCun6wyikR1RkPaZFAEkTXulbomYtlaXTcAmQxgLRyD5DXhBNtjz9zrfTxEA0lvRID6fpGX2NfMtpVPD9ldNDWpu+Cwufeg2PBszDI/7hOnMUEsi4OodeEr0imeNoeBDVOZjq54uZQb54dPbPMDtqKt7f8FfG+RymhXTYB2REE8lAu6WnYTGtjNr2U5FnELX05OP41y24jjO4eeeyE0QaQpMOois3T6NrqAJNnTJv0L0AZqJygcglo4kl18VllibNBz+D9dBHXFKDnzDSrHHm+mVwUBprLi3SFLqXOZuuVDQTCJV1dYTRNsQu+hRJi3YSRNJKjoCRgUid8gSdUdsiy7AkJBsrF2Xik3/ZYa07ic7OI+gd6EVXdyta9jWgpdWKtgMOtLZZUWupQmV1FXakF+Gdt7/Aa79Zg2eeWI24RauwOGY9lsbQS4veidj5WYhbmIXYBemIW7IWH39aAktrA2w9Mrz9RiaO9ZTAn2CaZBCJN9RA70c8IcfgNtR2rEPLwQxkV69GwvPhhMn/xvTgR5m79OFyLiGkx4ibwnXRY4FzaAD88RgT/CP0lEQ/Z870kYAleOJX/8SmPAvKGmXyucMo4rKoSU9AJ/MBqTmBZJoG57oxf0+hszjObLgUiBzOQUSdALpXECnwNJkk3z0azB+uPIHku8rT73w7ud7n+CCSbeZjtPR5vI6dILJdpL5GCd9jZdtZbMipR+JLb+EXMkvvbPHQ6R0FyyC6gZilBk3VRXQaRtLR2g9T/afjZ7P+C3MXzMLfP/0dqpozaFxzYKFxtTCTbemT/nxG+hIxzdxjKc+PSx5ARJvU3J2Hw186CKLTQgp6RQKgO8MyPpcvX54cEHUfqkBjZzJBxBfi8Ua/i9xBRAD1J9MLkCaWqfq7FFENraF0HxvDI7L1MCfTS6+ofzsDh8f1rWOE+Qz2oVWo7VyLpt5K7GnYh7//PQeLozcQQrp47u4g0h1hRfERMjV5EeJjNuOzD3ajmQmio+MgmttscDTXYc/u3SgqLMeO1EKs/jQd/3hrHV596d94ZuV/EDf/IywK24DYqJ1IiClEwrxiAqjY2XS8HPHzqpC0cDdWxNUgfkkynn1uFUp21dDLyyMoNhFCaykpQpMWPs6wnyQQWQghua6e/VVa7W1BasnfEJPkh0d8/z9MDXgU0wVCMlJ2sBR9iIKdICKAAnkcE/Uv5s6hCKaQUPgvWIY/vp+M3No+guUwKvcRIgRQgVMydYBMSGdIJqgrsrtmNC2y0eOxndZ1QyZ5QXR3uUNkMuTpd76dJgNEZ+gpX0CO7SqyHZeQQ+8om8fnS4fn3b34n7+uwoyQWPzcL4xeeRgBFKxApBVAz2iOgtF0ekhSZ+QTMpuZrSn0jHzwm78/h4I6poeBHc4htWhHhtOXSNKcF0SjQNSTi8NnbbiGk1J2NvkgkksMg+j2GfQf3w07QWQjiKQ4ThXJKYNIozZ8syZjeM+S6xjiC++TeUXoBSgDLEaX1x6Q1ipyrPwut/em0AMisJS2qcp2NTVB31pu/xx2aRLek4qW3j3IL6/Cyy+txtJ5m5EwPx/LYqoIIxnqp3wYSCOh5AJRbGghVs6vwGf/3o/ampPYW3MI21N24dOPUwmdL/D6q1JX9AmWL/kPEhd8SNh8inhCLyEqVc28uiyKkAmrxdKQPVgaWoOl4dWIjawgnKQ5eSXiuD8umtvoGSUkrEZ2cS0c3ZUEw1Y+g4xmICAyeUTD4eQah87C92HhuxBpL9EQv3uQQMjSLc2yt6OxPxPW7kykFr2PhStnY+qcR+ETJMtZqvJ3RlAQoaSbXst0DdOCCKKgOYTQbDwWFEgIBeG//IIQ+9JvsTqzCiUyH42D0Gk4jPLW0yhpobGQUREoWaqRmR1aaoI6J4AUhAQ6bhASqfoiEY2SSFpVidwNVj6Nnll5Ykydun9G1qu7aywQjZb5WLPUOY6vqfPUOX7/CjsZZ7Itx+jRnEWJ5TD+8p90ekMr8Zj/YtXBetYcGQooiJrL7xpEUmekPCRmoKTTqw8zVdPmTsMzv0nEjrJPUN+VquqnZbI926AumRmu9x6RATQkdm+icj/3hyTaV5OkT2kj7cfAyd24cuc4buAybt65CZmXSCR/xudbg8jcfFtANHimDtbOkWPNjX4xk9SsUYypxxfuWcb9mCXGWIYqF2A6+neitX83Cit34ze/3oz5kZ8TAplImkcPKLpsDBBpGMlwP0tDCvHkomr87qXdeOWpdDyTuBUrFq8nQD5DXKRMGZHGc3m9aFEG1/OgR13Qs7iqERe4jOUyNqxGDVsUG0lFVPF8QihiD8FVjaULM/DKK9tRtqsZji6CqJ8gGlinPD2buY7IpBEgklZv4rF6AM9oMUfTLxPXZWB363as3/FPRMb54XE/6aTqrxMsvRxj2m4FoIAQSqZrkDqiIDxOCP3X7DmYEj4fv/z7R0ivbkVVm3RKlLlonMVvVD49HwUi5QXpZrrGTKZSCS1DvBTRC/LkCSkIUR6Nkge5G0B3+JjlfqxX91N3f3eGzMeapTvhjnx/ufYzjB/0lhuYkaFK7F/iw811CFrwa8z0X0AQRcBHppJwwsgAkZrrSHV+DWamS+ZCmsOM1xTEPh2BNWl/Y25/JxqHdqCuezPqe4yMMZeqDonpZ0Q6NDfrHk8/dBC5pMcL3YjGga3oOV6Ob+4cJYguEUQ3yIw7SgIj4zMJILpFEJ3FAEHU0LlVeUS6AyZv6H6B6B7lDiGR1KtYutcTRFtQ30HPqSMb+/rsKK204y9/2Y7lsZvouUjTbmmWPbJOSEmGCYqoRHw4PZdQgZWMXUfvKCyPykVCuB6Fexm3Lee+FZHVWK4GZRVJZ1c98kIi19UEf5ElBE8RIcRriEcUvpeqJ4QaEB+1F0ujsrB48Ud4598Ezj4r7N25fAYpmptcEEl9UH2XdKIl5Hq3M1x24uPNf1bzucwMfoS5wxlMrKNBJE1jZygYBamm29JY4b9858B/QQL+vjoZRdY+GoNBFFgOoViG+zeByFwUpz0hE4gIJZGAyBOERF4Q/Rh093dnyHzsSLmuZ7w/AVGewMjGZcNplLdcQIntLD7cWIOY2FcInAWMy1F6niuCR/oXDYOImaqZ0vE1WCZgJJSCZzGuP4rghdPwj09/yQxaKpqGcpipTaOdk2lZttI7YuaWtmVkWnQHzlj6cYKo+3gZLt8+hOsKRDfvF4huE0RfEkT1aOhIho05aT0KgEDo+wGi0drAyLKBRlmK6RiB1NBEKbD3ZKO1pw77unrw4X8KsHzJNno1+crr0QDS8HGNaeccOy50txrEVKZx0MvdSAyVURXqsZxaEWZ1k43brVhO0CRF8Fi5rgwvJNNDRJQRbtWII6jieG5C1G7Ezc/GiqQ1+Pu/NqCyvgIOGZxReUMbtPolzE11RCZ9WxDJem37Nqzb/g4C58vcQb/A7DBfzAikVBGGVO4SOoTPCBFI06jHmYAXPPkiPknJZ8IfUJOfFTpbv+n6Ht0YwQUgF3wMmY2MJwAZMoPIk+Eyy2ysDIMlyqGyneuG3I/16n5qou+QQPFwvvsoD+b3p4phrYQRVUAVCZAcZ7A6bQ9Cl76s+hs96hfOZTgzU06vXkZnYHyeNTcUsxmfZ9PLnx0cQBj50jN6nJmyR/HCa/GoaNhGu7ETDd3bVIOekXXZWu5p8scuKWUyMvzS77B5MAcXbx1UILp+R43BfX9AdPXOVyYQCYS0V/T9BRHvYWC9rlOiAbf3JdOgSws0qncHHJ0VePf9dVgQ+T5BlAsZ7FSNM2fASOYakkn1wuuU4kP3Ij7EKQNEMuZc+B4so9ezPNxCCXhEsl7nHJCVXpG6jkzSJ6Nx62K6eCouogZLw+iJLczE/7yagi0pxajfV4PGvgI0HSQ0Vd2QQIheEZ/h7iBywogaq0OrQEiWely7zfgs5TeISvSDjBk3PXAavR6BkD+BE8AcpHQC1CASL+jxOXOZkJmDDAnDo/z+xK//gIxKC2r2HUGJXbwggdBpVc8zWSAarhcyHefZeJk1EjTGuhdED1sTfYeeQaTq+0wyv78c8aa5zBdYWU4xQ3QGxdZTqGw6g1Xb9yAy6Vf04BdiytxIKoyZKOnnJiMzmIcFCsbsIBmbLhCzguYyLcyil/Q4nnhlHnaUvE/PaAdkehapM9L1RgIhwzsamSZ/7BoJoo1oGcrFhfsFIrmEaqxw5w6u4TwGTzcQRNJKzQCR3BBfggBp+Ca/R67nMIh4v/QubFx3HFzDe96A3S078cabH2BxzGeIjcwjjIqoYgUkXSxHj4gASVBFa3uwPGoP16u0wkUCqgo15twyek7L1UjgPE6phpJpKigZJVxNWW6nV9WIuGArzyXcosr5uzvxZHwm3vtXKWpqG2E/UIP6jlQ1AKzcq53PYGf4yggHdnpz4zdWkOamIg0kTx1ZpXGCYyANtQek5WMO1qT9Ff7Rj2BG8DQEREnvcz8FISmOmzY3kJIGCoGYGRTGY0IxgwBSLedCIvDLt95FXm0LKpsPqebZhbYjKLBJMZw0NhBJM2yBj6tRgmcQScW0lkwJ4C6z8ZqYERONBI35u8DI/N0wZF49CE30HXoGkbvM709aRAqMpJhOgFRg45IZovKWL1HRchrrsy2IXPEaHg1ajKlhi/BIQASmBcscWXoUbxkGaJaCkozoLdNLyAjfwfAPlZKBR7BoZQC25b2LtiO5zCBKHZFOZxpG8t1kd34CGgmiL9B6MA8Xbg4qEN2YbBDJxwDRDVzE0CkrQZSqQGRnjtu4EdV6zsPNPnyJdyYgMrvQ62mMmavprMQ/3t1KEH2BxPlliJeBVKML1Zh0umhOpgSvJ0wIEXo2saHaU5K6nrgwkTTxlgn3SpBELY8qo8qd4jqPTYqqQpKMEh7eQDVhWXgbAdXE61UjNioNTyRtwBcb98De2gZ7eymsndsJEGl6/jnDlOHbs52ScehkSCCGuxlEKgOgc2ITBVFD91bUtcv4dsVIyVuLsMUh9Hhk3v8g5v6k4lZaEUmjBPGCQlXx2xQpxgh2dhLk0m/eYvz5w9XI3dNCD6hXQ8h6lIn+GD0Yd9AYIHLf7pIaZ2w8mYzXxIyYaCRsxpPZsHl1vzXRdziyQYL5XXnabsj8W2rUcNUfjZ550ymUNJ/ER6k1CIj/FX4WtATTIhYzXkfT+4lURXM+fvSC/EPh6x+uNHtOxDCMZgf5Y7r/41iwLByfbvmLyhg6Dm6jVyT1RVoj7c6PXyNA1LUJ+w4W4tyNIYLoG7Li9v0D0U2S7uAZmzKW9p6tNIzjjKzwPZQBInGlbf2paOzeg41bS7Bk4WdYFLEDcTGFuqNrZDXi6dUkhtUjPpQKqVXFaUmRNVgWTe+GS5kLSRoyxEfkIy5COshmIjEmh1AqQFJ0MSVwkibhcvweBTQNIyvXaxEXno2VcevxxRcVaDnQhqbuQlilP0/vWgWhhr61sMpEeYSQDISqihVV0ZxE+ImCyCXJsagRFLqTVcOE7cWrMD8pghCaxdzeXIIoWGnm3GBVVDFd4BNI8FDTQiKZewzDz+eEYs7COLy3IQWl9i6UOAZRZD+IMpkVlRCSIXmk9ZvAI181zTaK4yYPRJ6N1mhJ8ZvI3fvxJLPx8up+67uBaKLSv+XsS0YQ5TKjlE8VMS7+J7kasxY9i1+ELMJjQTFqShI/mZbELwQ+/jLbK8FE+c6RGWEFRCEE0Vx6RgGY4jsVc+fNwvsbf810lY6mQ1lQY0DSnhhp8aciM4ik/2HboWKcv36QELpCVtwHEMll5GIyDezh041wdMhwOmIQnd6G2w2qKcJpLOv7Nyu5739YMkBkH9oMixj5rlLssTXiL2+lYNHCj7AoKhlLCJRYekYyW2tiNL0fNQJDMT2lfAIqCwtDkhFHT2b54kysWJKOZ5Iy8fv/Kcc//tiAXz5dhiVhKUiQkb+dXpWeQE+K7GRZhUWBBVgavgMvP52BjHQHmg/sQ3NPGSEkUFlFfcZ7XM0lXX4BT6+Gj7SYU40VjPBUEHLVzY0HIkvPBtR1SjHfVjWld0n9FsQ+E4lHfX+BWUEEzxwBkLP1EDUjgF6SeENMhFMDw/HY3Ej8H58QRCQ8h/UZJahy9KKy8SC9ocMoJmikI6rAZiRA5Lv0FZJm2yYQeagDGnmeB03YeLl0NxCNNpBePRg9WBBJXzMZyTtHhpViPJRhoYrpGb2zqQiPRSTh8eBFmELvJyB0Ib0fekf+EfD1i6I3RAXQ+2c68CeIRHOC6S0xfcwKmoPABT74zd+eRFHdJjQPyazVabQp0rRb0uXd5MxI/sBlBpGNPNg3WICvrgwQPlep+wqib3D0TBOaZRDPXmlGTEM3JogEQluU3Pc/LBkgstDbcBzaCEdfBuydNSjbswf//E8KnnxqHWIXr8bieauxMHodFkdtRMLCzVgZvwXPrUjGay9l4q+/z8V/3ivAhg2V2LHDgfKSg3BYv0HK5h68sDyTkEmhl5Srm2oLhFRjhmosi5RiuyLlOb36bCohZEfz/k7YO8rQOpSJpsFU5bFI3ZXRuMJKT0jq38Tr1EP8rIeNYas8IrfWip5BxOsocb1HRtbegjLbeiS+EImZwY/BJ8gfj830h09AxDCE3EE0bW4EHmXOMDzheXyaXICqxj5U2gZ4nSMEkTRG0B1PVV3OCIB4QeSVJz1YEMnvyBQi4hXpuY5OorDpOHUE/9yYh+nhCXhMwBO4gNCZpyA0yy9agcjXDKK5YfAPiIJfwALMCojGFD8fzAicgmUvzUP+7nVo6DJAZKTL8aTT7A9d7iBqHcjDl98IiK7dfxAdO9uCpo7sHzSIbEPSgEHqYGTEhQzUteVil6MSOSV7sTm5DGvXF2DdhlKsX1eGtLQ9yM+3oaKyBXv27IPNcQCOfQ1obN+Npv0OOJp6kJPdjFee24oVMuVETDY9okJVByQNHAwQSX+jZfMy8dITmcjZaUfrgQNo7apFc18ugUivR9UFpfOlpjCiymgR2wkiEV9y/1oCaBVBtEaDSOWqRkZqTyBSUCOIpIl9y8FM7N63Bb/+WxL8IqYRNNMwzV+GO4nGtNkyhbeey0X6VRggms6EONUvHBGxz2BNWinKGwdQ0tCPcnpCZTIcj7SMs51FoY05Ty+IvJqQHjyI1OC4MlpDwzHk2xgXGTdzbYe4/TD+9OEWzAqNhc/c+QTPPPgIhLj0JXRmMxM2e672hvyZKfMngAREvgExmB0SBr/wOZga8AvEPRuO9NJP4BjIZBqVqVqSCSUpdZGRB5xp1EOa/aHLDCJ77zaCKBdfXe4lJ65MPoik+baWXPAKTl1oZy4+i0Yz2ZnbXq+MXj1VJ0uB0PcURC6ZASpeiHTq3AFHT6maC0jU1C2qQEt3OVWC5u5iNHYVUQV8/gwuM9DcVY7y6l145eVP6D2tRdL8IsKmFMukbsjZoVW1oJNRE0Kz8fLybGRsI4DautHcuQuN3QIhibgpsPWm8YXSK5Kx9WSUbZnugZBU/YH6VhNAn2sgmV7+3SSgFS/L3p8Oe08B/v7xb+ATOpUJzw++0jw1MJLeUAwTYQxmMKFJ3wppQaSm9iaEfjE9ADGxTyMtby92tx5FWbMMWsrcJOGgijgIn0IajULTmG+G1Lwy7kD5zpKhXzwZLU/ybKA8abSx9OrhS0NkYprAOYw/xkgeelgoKaY7ioK6brz6x/eZ4YqhpzNfQUhpLoGk6oeM/kUiWQ+Fb2AQfOf6q24O0+fOxGOzp2B+YiQ2Z79Pz2gnLPSOpL+RlEJIs2ajiNyVLt3t0Q9PZjtjZ2bZ0bsFzT07cfp8J0khINLThY8ea+47zNCqJX9XcOJ8O6wdO2HrZs6dEPphgmikdO9gekoyO2oPgSCt1Ahae882QmkrtVlJz8G0hd5gCuztmahvKsfb76xFTPhbWL44i95QGVVJ8FQRQNKcW5pw78IyQumlhDokrzqJveVfw9rQAVvbXjT1lhBEMvR8Nn+bYSrzDQ2DKNMJIslBreZ9fsYIvJ7HSLP5kRFhLMmYe+Jh2RhBPtz4Z8ydN1P1GvcNkXLuUIIoiiCK5jJGeT9qMrtg8Y647heCuVGxWLM1F7X7pBhuAMVNR1DU4oKNwEjlNp3fzfKCyKvvpvsIIuf3QscxlDcfQcHuNjz76lsE0UKCZiFm+kcTNsycBYTCj+nBBSJRMPcxEyfj0wX6Y5aMwcj1KX7TEbpkFv656jXUtsmYjRmo76JnJHW/aiaAHzeIpIuJoysdx79sI4ikjug+gugOvtEgajdAJKTXRUFmENX9oEAk3hE9h2GJ8TZaA64nKNZSq+HoX0XPQrQa1q5NaOurQvL2DCxL/BcWRa1HfEy+anGXECV9iioVfJaFV2OFAClsD55bVI83XrThj68W4o3ff4H/fLwBqdmp2NtcCXuXjN9XwheaxUgqc6EIjOgp0UuTcmcrPSErf1vux8bvRv+t8bUJjYNpvO8MVWwQHjsbM4KmqI56M+fS6wkIoydEz4eaPkem9o5gguJ2ekSP+c5FUMxSfL5lJ3a1DKDE3o+S1mMoaDnKBHx8GDZjQUjkBZFX302TDCLVH036pTFu8LhcLmXsw7LGY9hLbz8ttxaLE17BYzPC4Re0CDPmRGBOWBRm+AXAN0A8oBCnZLy6YD2/UcBc7R0FSd2qHzNzjzMj9wj+/uFrqN+fh/0Hy1Tm9qfhEdHedG7H8bOt5MRl3FYzs94XEElp32WCqEPNMGrrTmXg8qYYwJ5B9P1rNedZAiLzdynXlUhD9a8n6dcSPmsUgLTWMNBTUW0txJ/fWoNFMZ8jNjofS8JLERdZokZmkA6uSWq8OSeIwvdiWVgNEsPyuH8rlkR/giWL/4G4pNfxxzc/QVGNA7Z2Kz2XfEZSekXSL6FfxrSSMBbwrFN1RApE4rmZIsHY2oTmgxkotW1E0ksRmB74CHyCfJnAQjDDnwlsDj0fekB6wEfCiYlrqp+MohCK2aHz8O9Vm1FiaUdF6yBK9h1GDr2hrOZjyGtirtIJGy+IvLp/mmwQuaTfu25gU2Q9grKGAVRa+rF5eyUiFz/DjFkM00MEZkkn7rl6Qj2Bzyxm2HyZPmR9BtPKTH9RiBpM1WcO05F0BP//s/cW7HEcW/fvJ7nPc+/93+d9z0liy6LhEYNlphgSQ9ABJ47DzOiYmW3JbDHLDKIRM5MtW5IZYuZ1166e1ozkseMkdk5yMkqWuwe7p7tq/2pX7dplDYAx2Beffj8LhdWZKGndwcakFjCk183/PhCtQglZoIMIdFju4gYBRGY8LhAdP19Hoykg2qQApOseELnJ0w/5y0hCKXsHETVJglStC0w3+pp3VKS0khd+K0G0E6+9sRgjojZgjKTpidxLEAmMJGybIFJjRISQJEGNPgRJ8/PM4N14dmgaJg1LwcRRm/H06CUYOfIHvPr6WqTuPITipp30gmRegkyQ43nQM5JsvwpE4ok1L3d2t/UtCPdKuhAlN9Z2vPftVJijnkJgqD+MQXZWoCgEmmVQVuZJhLJiscXH5wOtwfClJ2QIimKLbhn2lDQiu7QVSY4mpFR0Ip7e0I7y7j4gepC8IPLq4fVboPPHpd93Fdpd1M3GWid2Fx/F3pIj+H7pZgSEjYAvG2oD6Q0ZwiRoR2uouUDExpyFXhAhFGglhKwRVLgCkzUsDP6WQBiC/TDjveexq3gtittlPF1siYzXypi0bn9knNpdbnbpLy53eyMeUQl/V1HDJnSfqVScuN0LIk0aRf4AiORPeCYg4tfgJEFUXJOAwqZNCjya1lAEkBNEeW0rKX3f8w/5u8j9gmtag/w6eipVuZgxcwWGhscSRAcwNnK/llU7Kg1Py6J6kTuVNM9oH70hirCStEAi8ZyeHpqCcUPjMSpmA2a9swb7HAdR2JBGCMUqr8hBEOlJTwtaZBXaZSho0tx8kRRo/bzyGlaowdG8+nUqy3hJSwKWxH0BS/QgekO+BIwZksYkwMSWnmkYTObBsFhDYbFZYWOrzyKBCqZwemg/Yzfhs0/GhUo7WGEPI7G8CwnlPUqyAJ0n8PSXF0ReeZYGA+kicy1e+GC5Q8T9O1R3m5QL5+Pf8p26JNgmo6gH2cU92F3WjR17KjH9gx/gGzpELaoXEBJJKIUSRoSPjXWEMBIgad5QCPfZmFPZGLTnBVKy+J7BFgg/21OY/GoMUvcvQ3l7Km3mZiqW9Vofrvj7gkik2x9JQ1Yi8zMbNuPIqVLcwkXSQpaB0HSHAp8Vily+/MsfBZF80WWcOl+PkppEtrY34VDrKqX7g0iTpx/xd5EEMvQVPZLmzcit3IWPPluBmPAFGBmZgtERGSpfnejp6HQqU80l0jJ5SxZvQiiaIrTGRx0irA7Re9qPcYMl1U8qpk1divjMLFS07eUx4igWWEnrIyCS7sMWQkhApAJE+oJIEqJK5oSDNXT/6a0V1G9H2sFVGDMtGj5WWdLBRBBZCSJWKkOIBiN6RmaCyEpPyMbKFGAIwovT30fW3mocrDiuEpimlnYiiRBKpCeUVNajJCASyIg8AUiXF0ReeZYHaJRy35Ocr+uf0eT6jl4QsVyIxMPp/c7fID03YmZJD7JKOrFldxmef/8rPBFEr8hGGFkEPCLJvOAGIlsw90NgUqLHpCAk2yCY2PAzBvvDz/q/ePaVYUjetwYV7do4sCzk6Qrpdoq25e8mdxCVtrPhTNAeOV1K7PxCWgiEbij1BdGFRwei0pokgmgzIbRayTOIXPL0I/7OknxvRY3p2JGegeeem4uh0YsxMnoTJgxPwvihSRgXQxEu4wikCQSSrHM0fjA9IEJJSx90EOPcQRSThkkTFmD91m0obpABTmdIdy+IJFM2r6OC0EruE0JOGCk18T7UCSA1CEmo9usfTyCEnkBAUCBMYRZuzYSRDf4WG3zNQawgUmEi2JKLwED/IIyZOB1bk3Oxv7QLWbKgncwDKu3WICSekEDICSJdngCkywsirzxLg8i9IOpfhh4GRJSCkFY+Urjf+52/RWo+myxBfwIZpT3YWdWD5Yl7YB3zLP6PXxACzJLyRxbWi1RAkjEhDURBBBGhQyCJBEDiDYlMdhuMrHOmECN8LE9iyMQwrE9cgNLmHHoPyay30u2uRcjKgntarjoB0t8n60Jvjwz3JUmzeHztJ4txHeeJH4GQTGy9TnbcIDseMYhOX2hAWV0yipu2OAGk658DIrVEruSAq8/B6rgEvPjyEowYshQTR+3AuKHbMX5YPIGUiKdjkjFhcDI9oVQ8TTA9HZPBLYE0eBe1W+2PG0JPasgOPDNxLtZu2oKi+kwVPu5gQVU55hSItLEqHTzq5lOSuievcQW1Cvn1LNC1W1HYkILY5LkwRT0BP5s//G0CIVnoKxCDbH4IoHfkY7dQwfALjsKThlCYI8Zh0bpU7COEMh3HWCFpKEpP0QM6SRDRE/KCyKtHJg0gj6Zrrq9+T9ecKK1YJGsdycJ6Wsb4dEc73vlpBZ60xMDXEIUAYySBFI4Ap2fUp2tOPCIFH4JHyeoEk6wGy/oVFgI/ewAiRoVg+cZ5KGvfiaI2eka0oRIlm9sggUniJTkzM/xNYKSDSDWMxR41bETTsTxcvXMW1+5cpR90jdSQUO7rZIh4Rbdx6VGCqLw+BcVsfefRSOoh2ipCzjkm9N8PIlnxVQIXCOPKvdgcvxdvvrEJk8bGYdSQNRg9ZD0VhzExmzAmejNGU6OiqOitGD14Bz2geDU2NG7oVowbthEjY5Zj1qzV2H3oIEqbsum+axm3+4NIkwQraIEU+U0EUNNyyAq0+fUb6Q3FI/3Qegx/xk7o/IteDwFks3NrJnQM8A8zYGCQP3zYUhsYHIInbBEYEDwMX8yPw+7So8ihB5SuDP5pJJadoQREx70g8uoR6rdDwx027t/RX38cRGcIotNIKTyOzJIubN9fg3EvvU/PZhQCLdEIJIhMlnAYLWH0kNxBpAf9mCijApFRBTMQYOYI5UH5W+3wtQYiZGgIflj6MY12PIrpGeU3buU2gV7RRuSzbms2hg1OpXttz19JOoi0BvJKFDZuRuPRXFy5febRg0iDkAYiSXp6/korKlsyaCi38MKtp9ZpcgNRbvt/M4hI/7blKGhbzC1vRGMCCmt3I23PTqzflIn5ixPw3Y8J+PrbVHz3bRbmzTmAeT8fwJKFhZj78yF89H4ypk1ZjmFDvsXI4T9ixPAf8ObMWKRkHkJJQy6KGuTabqU2aV6Rgo4+iVW639Zr4nMSPp/ftFRJ+mcL6hPw/vcvwi/03wgM84cvvSE/ej6+dhtBZKY3ZMYAqz8GBdsIonA8ERyDqe9/h8TcZuQQONIdl1ZKI05vKLHsNBIIk8RSgshdbsZem6H+AEkf/iOXfO/DqL8B9OqvIQGLJrWiqpLsayBxyfW6+2f6f0ffe+7+nb9dAqJUgkjWMZIxoyyW95U7DiJ61AuEzTCYTFEwG8NgMoc6QSPziQglEb0fA70gAxt+shVYBVojuR9FCMkqsLLcSjDrow3mSBu+nv8Ript2o7QtE3l1stiejAsvp5apRq6k55LMKJ5t0F9DvR4Rz1N6Z6Qx3Hg0ry+I7l7H7bs3nCC6g0uXfieIXOHbAqJLOH+9A1XtbLUTRAVsrReoCBARW+hta/4BIOLvaRcQLVXJSSUztixBXtISj9KWLIJkDwqr8+GoroSjqhZFVHF1Lcpq6UnWNaGkuhEJabswe8EqzF64Bqtik3DAUYXypiI46tPgaEhSkNc8Ism8fX8QSSi3BqJlKGnbjrUJ3yFouA8Cwnw0DyiY3lCQLHAnIoyCrPSULPi30YhBIdEYOu0NrM0oIHyO0YPp0bwYgkikuuUUePrLBaJfU18j8WfL3fh59ddWf6CIdOg8SPeCyPP7Hk6ysqta3dX5OJXfl1HUiS/nx2FgYBQMxmiCKAJmEz0gBRptDpGKlrPJwnrO5ygNRDJnL1SNx0rknWQu8bOHwsdqhTnMjg+/fQe7HJIcIIk2hA1P2hYtjZfMF9Qm1f+VPaPeMSIBpiQ2+FUQ3SWIfmfUnAtEksaOHpGAqCNHtcAdbbJ2u7YoVKGsWNiueUX/7R6RK9xSxmuk24xAllQeDbLqKV3uplQqB8WNO1HUTGjTgyxqSlOgqjq8ByV8rbCOLaHqTJS17CO8dqGgNpUFMpnXlQXzHgjpIJJjaQDS5xNJAIMUiP2VG/Dye6Pxv4H/F/xD/QkhqxuEXAoMZcssJAKGyBH4buU2QqgNGZXdSC6TOUICIpfuhZAXRF49Dv01QZRSdBJZrBfx+yox4tk3MIgQMpojYLVy2wsi8Yj4WAUyaM8F8jUDvSaZa+R/D4hCEBAs2U3MsESZ8M6Xr2BfaSIboFL3JRPKBmdXvA6ivy6M/lQQyZ/WPSf/XcHFW8dQ08lWf+NmXjC5aPcDkR644PlH/H0l4ZYyqCjeoES5SFcdCwuluup4HbRxHbk2AmqCo301iviarApbzMfFBHhJG6HVtpHPb+Z3UbyeLk9ICqJATg9M0GAkN17d8KYVSvK4pD0WZR3bsDjuY4SNCmDhDqQ3JMkYQwgekQYgX+d+gKQjCYvCC+9+hsS8KmSUdyCx+AhB1BdCXhB55RXB5uhEZmk7FmxKhSV6DMESAVkeQsBjtEU5JSDSgxicnhAh1B9EKquJym5vR6B0lYcEwhDmh+nvPIfM3B0oYYNV5v8Vt26i7Vij5g/KIp76qgEP0n8iwMEdRLItbNiEpmO5uHrnDK7flcXx9HlEku5H5qEKiC79fhDJn+Te1kDUhdpj+5TRFHKrmcL/JBARCBJ2qUlgpIGosJ1g4O92dLDgtPM57muS5+lqd4h4s3g9JOpOzR1QCU0JLQJJMm+rpKsKOnxvq2RTEBddbrR4P+IFseXRsgz5zYuR17gU+Y1rCLStyHGswPhXIhAQ8SQhQxAF2VXrS+DjqyAUhEFsifnaCaXgUAyZNAUbs/Yhu7IVmVWdSCnvUuM/XhB55ZWbSk6xkXYM6eVHkVJYj1c+/Jb1KAqDzCFaCiBZyVWBSJvIqkfSydiRgpECTxj8KamP7iAKsBNEQUYMMA5EYIgJL858HpmHtqKoMc1pWwVEtB1iLxRsBEi65DnZ/lVApMGosHEjmrsO4erd05Dlwm+pEO5HDCL5EsmqeuVOD+q7DtAoSk40/UJIq98dRC4I/feByM0jEijpIOr1iJyFRcFIpBca98JD2MgEsHbxmCR0kyCXbjdZNVbdVAHRUmd/sbjoTu9IIlMkw0LLQhyqX4Sy9s3Iq92Crxa+Bt+QpxAQbiR0jE4vyAmiYAnTZiUJi4Z/cBTMUSPxw/KN2FN5GBllR5BeeQIpFQRHPwh5QeTVP13amkgnkFp2HFkV3YjfW4VR02YhIHg4Am2DNRCp+UXhMLCh5wKRBiNZ+ViXv+SnUyDilg3CAMlLR/laTCqy1RBiw8uzXiKMdqC8PYt1XXpLaA/U0IfYDLEdYmtEfzUQydgWodkYi/rOvWTESdy4q4NIYgvcQfQHUvzw85T8cw03755CY/chGs+tyOsgeCgBkC53AP1XgkikYKTffH3MSAqIq2D0l3wunzdN/w5XQZJ9ip/X+4U1b8gJItnXn6eK2iSyZjFy65eiqGUrMvJWY/TzkRgkABLohAh4XPINCeFz4TBFDGOrbASem/kNUg42IqdcWzY5uexcb6i2F0ReeeVSUvEZluOzSCk9raJJc1gnPp29GabQCfC3DiGEBquouEB7uEoerLydB0r3ioKdMNLFumq1wc8mntFzSNsfh+LmFDUvRxIfq8aq2Au9l0XB6K8GItqlpg2obs/BpZvdRNBl4ke65pxL5PWC6A+MEblAdF2BqKk7jwffRgitoXhS/zQQeVTfgtFf8h5JDqu/vz+IHPeAqJ+crxWLt9m4hDd9vZrA+t2Sd2CJCaD3Y1HezyCCSCnUzsfSLcfWWEgUBlqiEDRsKhZtzMHOsmNIdXRC5uYklp5FghdEXnl1jxSIis+xnhBG9I4y2HCL392AUZPfxSDTUHpFQ+kJRbtA5AYWSZLaXy4QOd+rA4rvF/nbzAgM8ceU18ciaY+kBMqisd9GGOmBYQKjv6pHtFTZJAHRxZtdRJCASDyiRwUiLVJB2/KLb+A0mrsLIAu35XWsu69HlO/hxP+79WsgchUU1/PyGQ8gUjfWE4hWqYCHIunSozeUXRSHIc+wQIf5UUHwCw11E58PZSEPiYCvPQr/NkTi9Y/nIbOwHdkCotIupJQTGOWEkKjslBdEXnnVR2cRX3gK6RUXkVzEbdFx7C07gUXrsmGJfEat6hpgj1HL6guIJOWPSM0jcgcQ5c8GoQtEsu+EEBUo4AriZ0LsMIQa4Bc0EGOmDcW2zNUolzWNWnao7AvauHRfu6LLM4j03pr+6v++36f+IHIQRBUtGTh/7QhBdAm37t4SBBEfrqUgfn/XXD8Q3cIZtPc4SD/xiLwgcunPAJHMG1qDksNbUNC0HT+u/ACWwf70evzhH8oWFQHkEgt3CAu8JDplq23w0y9jfWIedpYeQyalVlqtYKvPCyKvvPIo3SNKIpBkgm2qowc5RT3IONRGr+UrDDQPJWS01Y0VdDyBSHk8ErodoiLoPIOIkjXBgm0whFj4/kAEBBkweFwk1ib/jJL2VBS1SLLUTQSReEa67XDZnL8EiJrXo7w5HeeuHiYpvCD6D+lxgkiPnuP38GZLfqqMwlUY9XwYTFEB8JXJq/1AJN6QISScLbEItrKG46MfVmJ/ZbfKqp1ZfhxpFSeR4gWRV17dVwKi1LIL2FFwHKl8nF50gvWumzA6hkUbd8EeMxmDLDEEh4Ao7L4ekXhDhtAIwiZCA5GKoHOBKEDmFgmIgvh5ekXmiDAqnN8diJgJYdi+U9b8yVCNz4KWjU5bowcu3GtfXPrzQVTWlIazVztwHRf/KIhcU1h7CSTf4QxWuIVTaD9eqNZkz6Uh1VZj9ZRrrm/k3IPk6Uf+s6UXmBUoaFtGrUA+r1O+CpCIRVHbDsxZ+y7MMQMwKNiHIDJpIdvOAAV/KiAoBMZggsgWjqHjX8COnGLsLjuG7NIuZJT1IJUeUbJ0zRFGiaKyEw8lT8C5nzwD4s+SZ+PilVe/RSmEkabTSCs6iXR6RVnFx7Cv8jje/HQBvaLBBIkELEiaHwGQSEt2qrrlJLUPQRQ+YjSee30WvadwQilahXO75PSYWGfV/D9+hzzW0nNZMGrKaGxKX4my9hw1JKIFStE2EDSuRm1/uRq5rgAH7bHLvrjGrH+P3EEkQVSyGGdZM0F0pQPX7v5CCMn4kOBD2CF7+C0L47lDSPsaF4hkktJJtHfne0H0WHUviOQ65bdKbr+NOFi7BU9PD8NA+//AN0g8IknfI3OEXCCSSuBnCYGvJRxf/rwC+8sOI+lgE9KLu5BeyhYevSINRKcIIskt5xk8/eUJOPeTZ0D8WfJsWLzy6vdKlotIk665oi7sKjmG9Ul5CB0+Fb5W8YhkLtG9IPIXbyc4DIOsQfhh4TK8/dnXsERId144QeMOIg1YMt7kel5gZIePNQBDJkZic+YKBaOC5i2EkTZ9RMts8xcCkfKIDhNEFx4DiNSfbCVlw0m0Hs1FkQLROooAui+IdPUFT395+pH/bOkutQYiNUepg4WuIxZlnYnYkPYT/MP/B4OCBhBAhJAUeGlN9UJI1s/nc+ZgjJz4PBJ3FmFncQcyizqRXNiJVMkhJ1Fy5aeQVC7dc14QeeXVrynFuWZRmqOLOoLMgla8//US+Jgi4G+VZcRljS8NRNpCeaEwh0bi3/5GDDBZMeX1t5BxoBBvfPA5QoaMgp8tDIEhkQo+ahVYJ4g0aWCSno6AEDMbnH4YMXkItmauRX59Gg7VOrOxyLplqqtOICPbfiBScxn/ZBBdOYyrdx4ziG7eOYHmIwdQ1KSDSCDkCUTu6gue/pLxJF2efvA/UywoyhtaysKzkteGhas9DrmNW/DKh+PhH/YE/EICtVaTjRVBCjEhJF1y0k1gsEmrLALfzFmGXUVNyCrqQFZpN1KKtZxyakyIEBJ5QeSVV78uAZEotVjWLDqGrOLD2JxRgKiRU+Fn1FZq1byhsF4QSbCCr8XOOhoKU8RQzFm5Absd5fj0+zmwRg0loIJYd2UcN1p5ThqA3EEkk9MtkLRdPrYARI6OQVzyapS17ERpS4qWEowwkHmILhDpYHJC6E8HUcfjB9GN28fR3LGPHtHWXhDl0z3Mb+e2Xcu+/VtBpEvGQTz94H+mdBAt4f5ytfhgXnMckvOWIWKcCf6hA9hKMihvyB1EqitABkTZQosYNgHbM3KRkdeArJJjiM87jDTxgiSzdh8QeceIvPLq4SRLTZwgjLqRXtyJ7MI2vPPlIvhYoljvJMOClgjVpLayLARBYrHCX4BkD8fk12Yh/UAx9hbV4uPvF8AYPgwDWVd9FXx0r0iHkXTZCYhkfTHJnM/vCQ7C6GfHYFvGWlQd3qscAsnIohbrpC3WQERI6J7Qnw2i5jScudL++Lvmrt/qRmP7XjgatvSCqEDmtXSsR4FkWuAPfRCIZEypv/TXvCDqJwFR+yJ6Q5JNYSMKm3fg68UzERA+kN6QLwuoSfOIpOXFbaAUXAsfmyPZEhuJtz5ahH1Fx5FVcIyVpodwOK5FyZUJeAREZ5W058Qr+nV5As795BkQf5Y8GRGvvPqjIoikbMsqrmXdBNJRrM8pR9iEGfiXdRgGBcUoIJkIEqM1CGa7HUYbRbj4ElC2mDFYGpuNg6WnkHWwGd/MW6+SqT5lDsUgaVQqr0jrnnONE0mvB2UN5ndLHbciekwMthJGFe27kF+3lTDaRBDEoqhVYCQgEgBp+S91ALlA9Gh0XxBdbntMwQrqTwPRtZtdqG/d0wdEeS0EkLTYeXIaVH4fiEQqOozy9MP/eZJ1j8QjktDuLcirj8ek14fCx/4kC2yA5rIHaRE2ah4Ct8aQKBiChyJk8FQs37AX+0vPIDX3GFKK6NGUnkS8LHinMil4QeSVV79drDf0iGTtLunmTinpQmbVCbzy9Qr8K2gMBgYNo/cT2QsiK0FkpidjYiMxIChCZTh554tl2OPoxs58elSHmvH1/A0wRwmMCB6+RzwibSE98Yi0hqZ07ck8JH/JY2cPxkBzAEZNHo5tmbQNDWkoak4gCLQVEVTXnAdP6PGCSFasjlUgOn25Fdfx2EAkfzdU11zL4YP88a6uuUOE0KHmVdwKdCQ44eFB5A4fkf4+Tz/8v1viJveXBCtImOYGFLclYlPmAoSMMtCNH0QX3cACa6Gc3XEySBqiDZr6mKIx5dUvkHmgDTmFPUgr6FaVJ4EgSlBAOY0kbpMJIJHWNXcvdDzJE3DuJ8+A+LPkyYh45dUflQaiVHo08QWSoeQEMitPYWH8IQQOn4Z/24YQJkNgkKUhLDZYbDYFIhkvCrATROZoDB47HZvSi7G/vBv76FHtKmzHtws2whQxjqCKhCEsCgOtrNshrNsqnJuAojelg8iP3zvQ6IdBFh8MGR+B7Vlr1VpnhY1bUNAYpyLqCmVMmXZUGy/qK8/257fLHUQO2vmiljiUNqXg9MVm3MKlxwAi+R7Fo+u4dfc0OnscBNE25LauVyDKaxVvyBOAdLkA40n6D5Nghf7P/XMk4NH7bt0kcwbY0iltz8R7370M/9CnEEhvKDDYSC/ISkkLSQp5KIzBkRhkCuNro/Ddwm3YX9yDnQ5ZAvyEltLeDSjJrEgpBJIo2dlV9zDyBJz7yTMg/iz1NyBeefUoJCA6SQCdRkJhF9JYJ+ILjiAhvw1jXv8ST9hHEERD1RitwUwQWSwwWW0wiCdDT8lPgWokvpi3AQcru5F1qBUHWD8zD7bip6XxsA6eAB/WZd8QG+u6NDQlmEG8o3Bt7NemLUluDLLxGGyMWv0xcsJw7Mhag+JmWVxvGwGhZWCQ9dJcUXQuebY/v13uIBLvS0BU0piMk780EEEXKcm8/VhAJEnszuBIdxGKGna4QETKevaEdPUFT3/pP8wLov4g4nMsUIUt27G3fDsmvDIMvsED6LZLChATIWRTIDKwoIqk//gpQzBChk1Gyv5a7CWIsgkiybItSRvFC9KB4gWRV179HrEeSJ0iiFJYrzIqzvA5bazopw1Z8I96BoNsw+BviYDBEgSzxeoEkQQuhBMo0Rhkj8Hwya8i5UAVcvLakJNLryi/CwfLevDjsi0IGjoGhkjCKFRbW0xNzZBeD0JIZOJjc4hM0bDBJJGyVismvzIe8buXofboLoJhO20HPaNWbZkasSWaN6TNO/Jsf367dBAVylpEsvhny0YFouMXaskJ6Zp7bCCSlA1nCaJiNxC5ByjIxEsNPvn88bp0uNxP7j/unxXGfR8vqE3Ghih5T/NGVB7NwLrkeYgYZ4OvfRC9HxMlOansqmDK+icSMipuu68tCtPf/Q6HqgghFdlzQoFIuhBU2p5SQoIQUiAqP6mUXKY9p0n25X0SIecuF2AeVp4B8WfJkxHxyqs/rqQi1hs27KScyVaCF1LY6Nu2vwGjX/4IA6xDWBcjYbQQGISQApFNsnKHEixsMIZFwzx4FH5evRW7ClqxM/8YdhX2YC89rJz8JsxZuYWNyfHwk8woIXb4UQHBduc4cBAbnXws32knhHgMtR4Sn5v62rPIyt0OR3MKitu2qjXPXDZGtuINCZz626E/LgW6VoKoKQXHz9WRFBeIjFsudDj/vXz5oRfG+zUQnXOCKIEginWCSIfQcue+BiDdsHqCj7s8/bB/hh4MIlk2wtGyFUWtqfj45xnwDxvA1pSfE0KysJYbiOgNSXeANXo0FqxNRl7tCWRJYlNCxB1EyQSNQMgdRClqCQjtOe11J7R688t5QeSVV33Vt7ylsrzvqT6Fr5fH4ykFoih6QWEw0SsyKhBJ74U2z09WSx5oD8f0978kOBqwu6hbgWhX3lHsLerEHkcbfpZuuuiJ8LEKiAix4CB+XmDE77Gx7vM7AywCItZ7SzgGGfm9ZjOef3MK0nLXK6+oqH0jClrWUO72Rpe7Hfr90nuxdBDJGNHxc7W4ifOKF/3/Ll++/ChAJMNPAqKSRwaif47340kPBlFe02qUdMRjb8VmTJ05EgNs/1IpfQKkICoISTinBiKJ0vFloRw26WVszylCdlEHMsuOe0HklVePRf3L2wmkl3Qhfl8dYia+Ch9zBOETQQgF9wGRUijranAkQkc9i61ZxdhbLJ7QMewpPI7dBdzPPYzM/a34es5mmMJHE1wRWli38oosThARTr0gCoNRou34vC3aipmfP4+swnUobNmB/KZY2pE1yG922RXNzniyR79dLhCt5fE2o6QxBV2nK3Hj7hny4nGC6O4FHOkqRTFBlNcax5OQMSIZHxIQLaM0GLmDyNMPcJc24KX1OXp6/b9Xv+IRNa9B2ZFEbNk5H6Fj/OEXOgCGMBkbEjefhZItK5lAJ2vmW0JjYAobjhkf/oAcRyuyi4+yYvQoAN1PaQSQKFWBSAeVS14QeeXVQ4p1JKWoC3urT2DWV0sw0BRFQETATM/HxAajDiHxbAKCQwmjaMJlKD6fvZ5ekICoGzkFp7Cz4CRy8noIo2PYmduJr+dugTVqEvyCBsM3JJQwssFfAhUk07f0hAiE6BEZCKRAws7PHsD3B+D9b15FQX0a7UeaglF+8wo1J7GgfQFti9gZT/bot0sHkay8ICAqbkjC4Z5i3Lx9irx4zB5RJz2ikvoE5LcQRK3r1YkoELX/PhD9c/VgEEnEXHH7Dizc+DGM0f9GYIQvQWSBQQqyFGyCSKWflwSKLIym8BFYHJeO3eVHkcXWWdojA5G7PEPHkzwD4s+SB2PhlVePTdI9dxx7a85g+bb9sERNxMDAUDV+o6X9kRx04tHY2YgMQYD0YAQPxtgX3kPawWbsLjqFbIIomyAS5eSfxE4qbe9hfDF7C+xDn4EP671vqCQ4JojkuzyAKDDIDGOYEQEhfvhm4Yds4Geg9Eg87QntTfs8FHTM5b5MCelvi36f7gFRYyJBVIhbd06SF48NRFqwQmd3MUEU3wsiOZn81hXIp0eULy35e4yr68T7ez3eyat6n6379ZKCsgJFbbyxrelsYT2vouUMYVYYZJ2hYBa8YImWY0FngZZ1TnytEQgfPRVJB2qRWXqUgDmOFMmyTaDcT55BJPvaYwWe0h5NXhB55dV9lVR8iiAiSGRu3qFWTJz+KZ70j4DJHq0ms5oIH1NQEGWHUY33yCTVKNhinsXC2By14F5m4XFkFJ5ApuMk908hg0DKyu/BLkcXPpq9Bn4RQzGAn/ejDfCV8SI76781HAEmyXOnrYcUQBgFyER3mxHmSBMWrPtWTf3Ia4xDbtNSAoNqE3vjyRb9drlApI0RFTcmoKM7H7funiAybgg0+vw9IhBdJ4hOE0QOgmhHL4i0k5LJl+59kO7STrqQki64e36E8/E/W+4wcsKpeRv2lCax1TSCbrxBLa5lCI4mfGQrIdvcBkWyUMsEuAhMnfkZcsqOIKXkKFIkp5xzbOh+ejgQdXtB5JVXvyJZxTW15CzSis8gs+gEvpi3A4aQ8TAFDyOECCSBEQFkDrZSNvXYYI+CjzUGr3w0h/A5jAwCJ1UyexNK6YRRRhFBxO9Kzz/C19vw3o9LMTAsCk/Su/INkfQ/9IKslFmClQgia7CCUaBNIGWDr8WA8BEhiE1dgsLmFGozCttkfpEn+/P7pNlw2qyOlbTvsQpEskzQLRwnMq4LNPr8/TEQ9f4JiE4RRIWPFES6/tnekQ4i2WrPFbcnYlPGcoSNkgFOi1px1RBCECmPyAWiAEpSh3zy8xrsqSYsiruQXHGGMPAMIF2/D0Tu8gwgXffC4c+UZ4PhlVePQwKi5JJzBNFZZJWcxpbsWkSMfA1+5hgYWT9NQWFUMMxBNg1E9iD1/EBzJKLGv4KEA/X8HBuQjiNIK+wilAgixymkFwqQerSu9sJmvPrFz3gqdDCeCgrHINoBbV5RGPwthI+CkCY1hhRsh495EIY+G4Htu1egojMNjjaZ7ProJrW6QLSK9n0DQRRPjyiPnOh5DCDq9Yi0Ca2aRxTPHyThgQKiNQTQr4Oov7wguo9a1imVtKfg51VfqOXADWE2Fiy2foLFG3IHURT86eIHDZmEJVt3I7OsW+XBSio/q+Y4SMScJ90LIj1qzhU55xk+7vIMIF2eAfFnybPB8MqrxyF3EGUUn8Iu1rGXZv4MP9NQ1tFoFdUmE1El95zVbqUXw4YlPRqJrvMNGY2f16VjV0UXUgo7qKPKI0p3nKHOIl2WLHd001MiqApbMP2zn/FvfucT9IYG0ftR0zksZhgsEk3nBJLTOzIQegOtT+H5t8chLW8NClu2afbFk935HfLkEXV0F5ATj8MjcgPRHZVZwQmiZqFrrPOHsSXvBdGjkVp9MQ4FjYl487MX4Rfig4AQFjYWZBkPUn3DhJLuEflZIzH+hXe18SHJCFx2CgmlZ34VRLpSFHi8IPLKq9+r/iDaXXYaC9fsgi1yIhuK0fSA6BXRe1G556xmGM2EhjkIgywR+JchGtM/nI+cUgHQEaQXOT2iQkKo8DzSHPzeotPc9iC95Bi27qvCix//gP81h6icdL5WI8FjVGHiyhNygkgtjikBDGFGDLD+H7z26XgcrN2MonbpnnP1vPTd/23SbXjfMaLHDiJJ2SDziIoIooTfDSI5eV3uIFIw4vdo0l6X9/eGd3NfV//v/HtLCoKzMKjccrH8jZtwoHo7Js8YBx+7D2TJB23hO4mSExCJR+QMVLBF4vUPfkKWox3ZsgQ4IZBYdg4prBBpklnBg2R+kUzC0yW56FySxwIidxjpj93lGUC6PAPiz5Jng+GVV49DSfRaUkrOIpXb9JIzyGIZTNjdiNGT38Igs3TNRamABYtNUv6YCSU7/MyUNQJPGMIwfMpMJB9qQg4bklmsbwIi8YjSCKJUB1Uk3hHravFx5FSewKbdZXj6tXfxlCy6Zyds6GUZCR1tDSTxhtholX1Zo0yWiwn2hTnaFz8s/wAFTTvgaN2K/CZtmfH8Ftpogck9dunXpdtwF4iSCKJCgkiCFdxBpABCED2izAp3cQGHuwREiSpcr1ByGv1GEPWHT1/JnCSR9li8JB1E7kDq/51/b+nXSWZBa96QFJS0vLUY+oxMZpO1hywscFKoQhWIjARRoCRBlNQ+bG39tHQrdpYcQUZpDxIchET5BSSzFaW5+JpkzX13pSlQyYqThM89htwpVgqBksfX/tLybDC88upxKZUAEqXJtogNveIuvP3VUvhbo2EJGQwz662ZANJyz0n4Nesz67CP1Omo4Vi0aScyijqRzs+lO1g3CZ/UonNOyT7rKr83pegodtecwJqUfRg19RX4WMT7kfDwIEpbGdagek/oGUl0XbAVhhCJpjMjclQkVscvQln7bhyq20pbGou85hUqM4Jn2/Rg9QFRyyYNRF0OgugkWaFHzQk8hCUCokeSa+42NwIiCd9+dCDquzTEWkpbXiKXF0dbKsKVUFVCw7V97bP/Hd15+nVygqg5DsXt8YhNmwdTlD9B5A9fu5meT1Bv8kNjcCi3AiJ6RcHR2Jh0ELtKj7GgdiGRhTWp7Pw9IErrByJdKZRnY055QeSVVw8lHUSpJdxnnUpydGNhXBYs4aPgayQgrAQRASQgkrWKZB6Q1GHf4BD4hERh+kdzkXSolXX1mIqYS3fI9/SVlnS1C9mVx5Fd2oFV23MQMXISBhmD6XXJOJTMW+oPIhlfFhjZaT+MGDoxGtty1qCsIwuHGmIJoXX0ipw9Mr9RLhDp84iSnSA6RVbcFGjw77GA6CJBJBNa7wMiNQdGfpRLAgt36RDxLMnkrWsVcttFKynJ3KBLQKR5TvmUpwv095JASH6HpOJYj9zGDSg7koyFsV9goO0JJ4gsCkQSsimFVyayygCorHFiixqJxJ0lyCk+qgY1k9hySiw9R8CcdkbfaFIwcuqhQVQsEPKCyCuvfk06iFK4nyK9EhJgkNuAYRNfxgCjJCcNI4iCFYw0EMmk9DDWb8k9F4bBk17Hlp1VyJauOQnbplck8FHf51QyPaNE1te00pPILOnCruIO/Lx8K4Kjx8LHQMgFE0QqmEm679lgJZBk3pJBFz0jH/NAPP/GRGQXbEJhUzyKWjcRRH/UI9JBlEIQFf05IDpyXxAJhH7dA/IsGmF+vqhlmZuWktZLkN8uWkzJ46U8jkycpXf0Xwci3thmFojmjWohvI9/fh0DrE/CNyiQILISRJJdmyCS7jjuG4Ij4WsJw4hJLyHzYD2yHQKi45DJdYnSXy2T4pwQ0kGk6+FB9HfVvYbCK68ep5QnRMnYbLICUQ92lRzBzE9+RGBIDMETBgvrrokQUiCSoAKVZSEYg2S8N2Ic5qxNx+6y48hUc4lOKBD1OU7RWSQRdkncTysisAo6sdvRgS9/XgFz2GB+nwYi6bqXXhNt/lIw97XxogB6SIYgE6wRBrzzxYs4VL1dLajnUPOLxAb9Nnv6HwKRNkYkKX6KJVihdTOhQBDp6178JhDxfXx/IT2owtZlcLQuRWnLfFQ2/4SqJk3Vzm15y88oo4pb56GobQEv2iJ+9t7j/H3l+i35LatRengrcuu34uX3JxJEAwkiEwFk6wWRrGcvWz96QwPokr/01ifYWdCKrMJjLJzivZxCAgtrGj0jL4i88urPkWRWEEn5S5J6SFDklBzFwtg02AY/DT9TGKwhsjyE0yMSEDlz0PkRIE8Yo/DuV8uQ4+hEpkxsLTyuejXcjyHRedLI1IIjziCr9DQyCaPsvDoC7xt+VxQMAiO7BiGVXihI5iw5JUAKssESZkbUGCuWbf4KpW1JhIjY8BW0P2LDVz/0mFEviDpkWCEOJU3JaH/8Y0Q3uDmLo8eLUVi7DYcaY3GoaR1y6dbl0pjm8ofo4zdygvrJymNt/EfGfGTsZy1BshQlBEtFy2zUNH+P+qav0dz4MVob30Mbdbj+PRypE72PjvqP0NzwGWqbvuH7f6S3MJcXSu8G1OHXX67j/y2kJplJa0Ti8Tdgf/UmjH4+Gj42P9Ut52O3q5UbfWzhbNVEwdcqa5vQI7JH4ut5q7Cn+CiyHLL+kHhEJ1lYpU/ZCyKvvHq8cgX66CCS9Ym0sdXjaj2wHbubED3uNdZZQki8FVuwSoSq5Z8TSfLiCPzbPwTjX3gPqQcbkVF4FCkF3UhhXU12EECOM5o3RBApGDm3KaXSHXgCu6pOIn5POV5461O1FtLAAIsKFxfgmQg8XXI8iaYLtJvgb38SwyaakXxgCRv469Vy3wcbpMdJJqc+PIhypVfqsDSiNxBEiWhX4dvuUXOPCkS9f/LFZ9B1ogQFBNHBplgcaF6HQwKiFs8g0rwfkXNMh8ZWAg5KWhagSgDU+BVaGz4meN7FsbrX0V3/Ik7UvYhTNS/ibLVoOk5XzUB3zTsKSE2NX6jPaV6R1k13L4T+hiBSN15AtAJF7bFIL1iFIZPCMcgeoJIcDmKryZctnUEEkV9wJHwERMGD4Rscg3lr4wmiboKI7jxdehW+XSr9y33hI9IDFlJYcdzV14j/N8iT0fDKq0ctNxD1zsujN1Qi9bCHkODzeV2Y/sE8+FgG0xshjHoB5AKRLOfwpL+srjwFaxMPIoMNy2THMSTTK0ou5HEIolSCSIeRgCiBnlFimegMMspPq8wMG1JzMXryaxhkDEWgLJpH70utDkvJkhQCJ61L0EzvyReDLP8v3v92GhzNm1ByOE6NFUnggkTSOdp/PQOD5hGx8XyYdr1lPUGkpfjpO4/okYJItlcpAVEx8p0gOkgQKY+oF0Ra6HVfEGmBB4Wty9W4T2nLQtXt1tT4Gdrr30dP3QycIXguVD+LCzXjcZG6UjUe1yrG40bFJG6n4JdKwqn6NRytewvNTR/RK5qNgvb5BNFiHkf3isSQ67r3ov21pYFIXOOijjjs2LsAwSPNhI+JILLDNyhE9SMrELH1NNAagoE2Fuqo0Vi1Iwe7S3vozvcQNFIBtHk/4un0Bic42FITAFHuBlu8J5HrOalYrsr126V//mG+448e60HqbzC88upxyFV+U0t1se4RQkr0iLLoJS3cuJv1dzgC7AIi8YD0kGsNRJIzLsAeBf/g4Zi9MhHZJZ1IKaQc/C6CKIVeUUqReEUyPkQI6SAqPadglFB0HNvyOpBT0YN561MRFDMB/qZQgki+m8fj95skas8m0XtBMMh8pmAzLGGBMIYNxLw1H6CwcSsKZXy6fQMctEV5TdLr5MlWuaSDSFL8SMRvSdMOgiiXIOr+c0BUULsFh5o2UGsJoVVuINLgo4NIlNe6Tj2WAITypgWE0Gw0Nn6pvKDjta/hYtVkAmcsblaOwLWqEbjB7e3yEbhbNgIoG4m75aMIo6dxvnoyTtS+gI7GGSjp+Iru4M+EkayvoXtFfS/S30rO/E8CouKOjVib/A0MEYOc649Itt0wQoieEOVnDcdAFrABknF77DTEphzArpJugui4GsDUQKTByN0wu082TWCFcX+s64/D4d4K6lnyuv5eT6//Uenf7ZVXj1NuIHJ2zSkvSHlH8txppBJGm3dWsq6+wHobjgACQXklzq4yBSYCIpANzEHWKLz1xQJkOFqRrqJgj6ugI2lIyvGS+H0CIF0KRJSMCSfyuPGFR1X2/U/nboAxdDgCzbJwXjjhEwmzNQxWWxi9omBCygIzG7gq712IGSMmhiJ573IUtySikHa9pGMtHLTj99ipftJBlN+uDSkUNwqIDhFE7rnmHjmI5IvP4RhBVFizhe7bBgLICSJCyFPXXD5b+lpi1FUobV6Emsaf0djwLT2hD9FTOwPnqp9XEEJZDO6UxxBCIwmkkdwfqSCEsmG4UxGD6wTULzXjcLpuIjobX0BZ+ycE0fcoVOtryDpI916kv5/Ek1uJ8s6t+Hntu/AP9UFgSDACg8MJJHpCQVH0hiLV+JAPC64PW1DDp7yOLdkO5BQf6wVRihNEiawIIg0yp9W+AMhdUnj7wkiydntB5JVXD6cHg0gmt6roNkcHXnznGzxhCIWf2dk95gYioyQuZQPTzxaNEZPfQMKBWmSXdyONdVrmE6VRcjxPIEooO4946aIrP4P4oh4k0pNKLmjDax/NxsAAu1qgTwNROCwWzSOyBofBLMeW8Sru+1oG4u0vXkRRYzqKmreiSA9A82inXHL3iLRcczvQ1nUItx6fRyR/d/nfNZw624TC6u0EUawCkZyMhF7LWkT9PZP8VpmgugGFbOnXNP2EjrpPcbxmFs5VvoJLFc/T03kGNyvGEDYCnBG4VT4Gt8v4WBe9odsVhFMFvaKqMbhSNRZna55FY/MHKG/9BsVtc3jcZSoAQroA3Y/995O4t2vUHKLP5r0K/xAfGELpXodGICA4kp4RXXe2mvzs4h2FKo/o6envIvlgNTJZ+DQQScinVjESWSkkaEEKrwKR274OJ3fdW8lEDwKKp/frcv+cO3T+iB50Lv3l6fNeefX45AKRJsnbKNv0EumeO4bP5qxTWfJlSX+1xH8viERhfE6W+46GJXo81iYdwp7Kk0gv1JaESJesChK2XUrPp+xeSZLjhFLW8TKqmPCqOIUN2RWIGPsKnvCXAInBBJAAKVR5RJbgUIIoRMnI8zCH2hA02Ii12+eipCUFuXUbkN9Ie9pMmyTyaK88g6j12IF+IHL9PSIQ8e/uLZw+20YQxSOvZSO9IFkYTwDAk/EQvq15ROtQ0ryEntA36K55GxeqXsLViim4UfYsbpZPJHzG4lbFaNwuH+0CEHWbUBIwiQRWInnf5cpJKqqurulrFdYtHpFE4/29QSQ3W0C0HkUtyXj7m2n0iHwJoXAqSmVPCCSIpI/Zj60nP4LoSXMYnn/7C6Tl1ysQpbPl5Q4iHQAy5+Be0GjGWr3mVN/XdT3I+Ht6vy73z2nn8cf1oHPpL0+f98qrxyePICIcJHIukyBatnknQoc/q7rWA1h/DX1ApHXN+duj4Rs0DJ/+vEFNUJclIFSWhV8DEZ9P0rdsZEo2lNTibvy8PhsBIWPga4pEoCUctqBI5Q1Z1JIUohBCSTwyO48fgBfenIg9pdvpFSUSRBt+M4iKGrajpXP/nwAi3MSZc+1wVCcjv2WrglFBC0+YLXkNQn1BpGklypvno7nhc3pDb+CXqmm4Qk/oRsVEgmgCbpU9TdiMU+D5NRDdJIiuEETdte+gteELNd5U1LKEIJIL0v+4fyfJzea1I4hyG3bglQ+fhm/wIAIojGIhcoIokCDyFxCxBfWUORwzPp/LgtpC1/+YBiIJTOgHIs96WGP9IOPv6f3u0j/7oPP4LXrQufSXp8975dXjkycQpSiv6LiKgkvYW4Wxz81kI1LLoK+65HpBJAEM4Xw+Gk+ZojB5xpdIzW1BFkGUKSCSY9wHQiIBkLwu0kB0EimObtqGo5j1+UL4maMJoCEw28LpBUm3HD0iHUYy54jHH2QMhC3ChKWxP6GkKRN59XGEEG2TyKPN8gyixsN7cPPusUcNIpHzj0y6e/cmzl88gpL6dBQ0bkdB0xaeqA4jGXDXYeQUT7KodREqW35EW8MHOFUzHZerJBLuaYLoaYJoPEEkmoDbBNKdsnH3BZG2PxrX6UWdrXwLR2s+RWP9DyhrXsiLsUJdFE8X6+8hJ4joYR6q24Zpbw3HE6YnCByZuCqJTSWdD4HErRRimdT6FN38Wd8sRk5pBwucrOwo4dmnVH9y/4lwEvbZ5/H9jLUzMsf13G8EkTPEtO93eJIcx/lej697khdEXv11paf40aWBgc+XSsb7TmQVt+GV978jiCIha4pJXjiV+cApM+u2yS5dd4MxevIs7Mip0pYQV13uLNOEWqIs8ULwiO4Hol4AsmGaVdKD7TmliBn7HPyNBBCPbaYd0WCkdc3JvkWOLd2FVgNGThqMvUWJKG1JgKN5PRxqsqsnm+Wha44gqm3NwY3bxwgMfUKr6+8PgsjdK7qBCxcPE0QZhFACRRg16zBaz5OS8G0JWNAk40aSEaG6+Wt0NLyNMzXP4WrVOFyvHIMb1M1yekMKRJO0rRM8DwKRdOddLH8DJyo/Qmvdt6honkfgLeVFub8L+deXBiJJmZRbvx2TZsRgoHWgC0QstAGUpPBwgSgany+Iw+4KSZLYw4LHAk8Q6ckSVW4qXX85EP0eeUHk1V9XDwKRrCO0t/o4flqZiMCQoTCGRNAbkSSlYTAFyyqrAiLuS0MzaAiCYp7Fyi17nNMyupFGr0rWCHtoENEjyyg5jSx+RvLRzVu5HWGDx/IYkQp2WoJUgZAcl16SlY+tBKPdTkj6Ye7yr1SWBEdzHEEkwWaehz10EOUTRAVtsSikc1LbthPXCCJXZgXX3yMF0aUrR1Fcn4b85h3UVuS3SNK8WKjMCZKglDDSsijI+NFalLTOR02zhGu/hbPVU3GNALpeOVoDUcVYwmWcmzTguEPoHhFYN0pexoXyd9BZ8zVqG+ajuJlGvOXeC/X3kQYiR1sc9lVtxugXJCuvL4GjQUe64yTHnCRJFImHNNAegznr0pBd6uyWE2/ofiASD6TPYzHq7o91yfvc3yvvc5e7sXc+p8BzzoP4Pe665zv1xw+r/sd/kDx93iuvHp/6gyhFxmWlm44wSCGIJApudUoB7DGTYbBGwyjzAFmXjUHBBEAQvRINCsbgGPhYh+LT2esIoi6kF7Khye/QQHQSCeWnle4HIoGQ6h5kPcgQIBV2YVfhEbz18XwMNEkX/2AeU1++XAOg2UYwUrYQ7odZMG7KcGQcWkMnYjMKm/WhF91OuRr8AiKx+XkEUX57LAoat6G2Yzeu33ksXXM6iGR7A1eud6GoIRm5BJBExGlLNxBA7ctVlmwNRuuQ27qRgIqji7dIpec5Uv+2Cte+XjlOhWyruUMqAGGUU6M9g6ef7kgXXvFzuFIyEz2VX6Chfj5Km2Stor9rsIKctwtEO0vWY+S0EPixZRLAghLA1osGIhnQFBFMbNkMChqBRRuda5g4vSFZydEziB6VPBh9BaJfnJLlJ0QCorNI8egh6Z/9rUDygsirv676g0hgIOl+NBB1I6viBLblNrNuvw8/4xAEWggiG0FECJntNljVNgwGeiwDzFF46Z3vkeM4jKzCo24e0QlCSIPR/UCkj1FJ8lWZCJtWeIZe0Rms3pGP0JEvwc/OYwfry5cLiJxeERu3Nnpq1nA7LGFGzF/7CUrbtqOwKU6tCqDZKX3YRbNdOogOHZZVEmKR17gVtUf24NrjGSMSCYTu8N9ruHxdPKIE1RWnnZBEyy3VMmRLF5lzvEZSPqi0Dy1LUdP0IzrqP8SZ6ldwtXISrqsxontBpAUk3AsfdykQlUzDldIZ6Kn6FA11cwkiGvG/q0fkNrZW1L4R2UVrMeo5SeHjywIj6w1pAQoaiMQjilQDnr7BBNGmXchwdBJGAiLJyPt4QSStLV29Rv8BIJK0JBqMPIFIV99j3F9eEHn115VHEJUKiE6yvvSwHnQho6IH0z+ch0GBgxFgi1ZLQ0j4tMlmhY2ekUWCFmzh9IiiMGH6e8gsaFHZuOWzyWU9SCKE4h8SRMlsmEr9k5Vec3h+O4uOYdaXSzHINoSN2xgeR/OKXCAK1yLqQu3ws/jh9Q8nIK9hI/LqaeclBuBXQHSoIxa5BFFd515S4rGD6CouX+tEWe12lDeuRHnTUpQ3L1JRcaUt81QOOMmk7WhZocAgA11FLStR2TQfrfVf4FT1m7hcOY0gmngfEI1T0rrppNvOBSDX/KKxBNFkXCl7FT3VH9Ej+hmlzct5LBljWe3M5LBW7Re6uZF/HbndTIGQvowGVdyxCYn7l2DwJDP8Q/17QaS2LDTiDcl8A0mg6Bc8CqviD9J171TRcmLwRb3G/57uuN8mgVkf8fukgKfJQGipvMdp9OVY94DoPM9BW+Y4xQkl13e7A0PkOuaD5QWRV39deQSRQEEFDxxHgqML6eU9+G5ZAuEzEtbQkfSGItRqrSarFXYZs7HKvB6tfoeMnIyNGUXYVyljTN1IIsySKk5hB72ieOmikwnpZVoAQ5LUxz4gYqNR1VvNHuwqPYeM3MNYn3gIYSOnwcccjQDxyAghmVekBS9Q4iGFyFIRRr7PD9t2/oh8wii/KdbpeGg9N7otcwdRntMjqieIrj8OEN3Fbf7L7d3b1BVcutqJqurNaKpdjKa6+dQcNNX/hNrGH1VG7eKWRdRSFDevQFHzamotobUULXXf4UTVu/il8mU1kVUHjUxWlbBsHUIPB6JJBNHLBNH7aGj4EWXNSwi8FShs0eYt5VPasuJ/ZRCxhSEQ6vUsV6O4fQuSDi5F9AQTAkICYQiJpKI1GDmDFTQQRcEvZAxWx+d5BJFm+B8liKR1xeclescZHi590ErqmBedukARPmqd/XM8LzkntzEj9d3uwBD1Pe795QXRPeq9pnJtKGkJi/THvddMtv0++8DXvPqtui+InN1zkgQ1pfQYVu04gNDISTDYh2ggstlgslhgpzek8sHZo+Fni2L9H4HZK5PoEXX3giix4uRvAlFaMesglc39jEMd2FnYig+/X4FB1mEIlEmuThCZbDyuLNwnj4Ml24IFhvD/wTdLXkJVZwrtqhaM5glEEqyQ6waihiOPCUS3cJP/3cLdO7eB2xdx9VIt2quX4ljV5+iq+hTdoupPcKT2MzQ0fqMSmpY3L1AgchBCDrb6S5pWoL5+Lo5Wf44zVW/gWvlUFa6touAIIemqu66SnPYHkS4XiG4TRDL/6FLlVDUvSeYnVTTPUbnsCnksAZFILlShumh/JRjpN1K6M3UQaYOB+bxWxe07EJc+B5FPm1kQjYRQFDWYIIoiiCR0O6IXRIFh47AiIRephUdo9DUQCYD07e8BkXTn6Urj5zPZkpJovAw1F4Ji4ZcJevJcJgt7Jo1YJo1hpoMtLio1nx5TIQs9n0svOMnXCSnCKLFQBlEJI3Ucd2CI7j0Pz9IN58PI0+f/myT3llL3+TSSimT5jx4kFB5TS0mrkGEaq/TyU8iq4r0oZ6u6XB7r0h5rr8l15T2V+SfSxcvvTZVjsPHhXh5E956HV7ruBRGvmYKRdM3JOJHoODZlVyBm3MvwMUWyLkvXHD0iCz0iG0FkoVcUFK0mtg60xuDtr5chq+gw0kq6CKLjSOS9cgdRkkCIkug8HUTaMfmYdTDVCaLE3C56RaeoHsTvrELkyJcwyKwFS2gg4rEFRgLD4CCK9ifoCbz07gg4GhNoV7dqdqp3PFuzZ/1BlP+rILr0+0Ak3tBNfuGNu9cJomu4c7ED5w8n4RThc67iJZwvfxkXKl7DhfI3cLbiLXTVvI+2ui/oHf2MEoJITl5i0Yub16CycQlaan/ASXpFV8tfIlAmOrvjBETjqQmUO4jc5QKRgOlqJUFUNQmnal5CR/17PN53KGlZcg+IXN6HOwz+k+K5qAwUfUGU10QvrjkOafnLMHyqDZbBAQgMtTi75cQjIpC4L2nkZYxIQGSMGI+VBFFWmYRuayCSzLxinNT294DI6QGJMdpZeRHpLLzZ5awAh5qxJrUA365Kwfuz4/Da56vwyqcr8Sr13LuL8MwbczBpxs94+cPlmLN2N1IOtCGroBtZhScJMJ5PAb+fIJLVJX8/NLwg6pV4Qr2NDen+OcF7fpTG7ygSC9qxgcZm0Y5czN64Gz/GZuOzZTvw6dKtvfpkyVb8uCELC7cfwJqMUiTmt7GB0cWGh8xDI6RYntKdZcFdXhjdX/eCiFDoV2alXiXmtuHZmZ9jgCkCfgSPTCa1WO2wWQgECz0SycJNDbQOxuQ3vkTywUZ+zgmistMKQjqIJFRb5DFVl7pf0lvB81A9GtIwZL0uPIGX356NgQYZI5Iwcj2MW44drLIsGIPMPAcfjJk2GOmHNtKZkJgA6Z7ruzREL4gkaq6Nrzf8Gogu/16P6DZ9oavUOe6ewIXO3egsmY0zFW/iUsVkXKJnc7niRVwun87913G66i0cq/kILfXfEzyLCaDVBJG0+DeogILG+tn0nj7i+1/DrdLJBJF0zY2kJ/Q0bpSPVxD6NRDdJogEWpernlFrFh2te4ee2LcobVnM42hdcxqIdO/jrwYifVE/PlYgiqUntA17Kjdg5lcT8b/G/wuB4QaVZ07LqBCjtgYRW0sqWIEgChn+HGIzS+mZOBfQeqQgktQkJ7Fpdx1+2pCJMa9+BOPQSRgUPhYD7CPxlHUkBtrHwcfGx9YxeMo8Ck+ZRmGAeQyChr6IF2f9iO3ZlcgoOKxCyzPKziOR35uojuOqmJruPQ/P8oLIkyS7c3ppF1akFeDNH1ZizOufwv70K/CN4v2KnACf8HEYEDaaGokB4VQY7xMfP8WtT8RYWEZMxejpH+CbFQn0ao8gS4BU1K08YInG1Jasli5YNnbUPfB8Hv90PQyIBAi7qk7h0/nr4GOVuhyhQGSWRKTWYAJJusqk8TmYIIpG+Njp2Larih6RdM0dR4ITQg8LIrEFAiKtO/2U6qnYXXIWc1ekwxisjVFp2RWcGRboHRnsVp6XeET+CB1hRlzyQhS3JdNOxVGeQSTh2zKP6LGC6M7dS7h7twe3Lpeiu3YJjpa8g/MV03CdgLheNkHljLtRNpX7zxNGr9BbmoUjtZ8TOj8TRkvppcQht3UziprXobZ+AY7UfE4v6i2+/zlCZyxuVwwnXEYRNISQwEjPtiCTXT2BSLrmeFwZZ7pQ9SK6at9FU8M3KGtexIujzV8SFbbIbF+B0F+pa84JIipfls5oXMPzlBZHPH5c9Tb8I/4PAsIGwS/IxMIo6X36gYgtJT9zKAYYwzD2uXeQTE8lKf+wtka+eB7uYkXoUzAfQlrL6RRbxqexfV8zXvpwHkxDn8W/LVF4whqOp1hwB0ofdnAMAoIl+kZCQYfyHIdxX7bD4W8bwvMfhllfzEdGYROS2drOlCgf6T6S7h+3iqnJ87ncKy+IXKLnUiYGppvX9jjW55Qiauqb+B/7UAWYp0IJnOARGBQ6Cn587Bs6nPsx1GAqWsk3bDACIoep5/9tCYNP2BC88slPyHR0EEZHVVqaVIIps0xApJULr0d0f3kGkbwm5VaT1K+9NWewdHsO680wwmAwQRQKK2Vn/bLaCAY2NAPZ4PSxD4ZlyLPYkFbI+thD4OgTWmVc6CSSZNzJCaK+44L3npv+mvROZBecQFxCIcL43YFW6ZqTqD29e05AJMEKVtbnAFiifLFiy48oaUtxJi3wDKLeCa31W9F4eC9u3Dd8+w+ACHcvctOK80e3obP8A5yoeAFX6LXcLiNASkcRDuNwp3QC958hIKbhYsWrOF79Htprv0Zdwzwa3I3Y37pDbQVMHXz+TMV7uFL+Mj2bpwmiodpyD2WjVaYFLduCO4T6gkiCFW7LpNbyCbhY+Tx6at6mB/YNKpp0EMncJklNsQpFlPuF+49LuuWcK8vmSZQfb15Z5w5s2TkHURP98aT1/6GX4asWw5OM2wpCYuwl3JIFUzwitcpjyFB88P1yZBcfQ3aFGF4BEd1+Fn7ZKvVvIT1QUlClxUujw20aW8Mfz9uEQWFjMICA8QmNwkB6aH5BQXTZeW526UcOZUWSfFnc2kQsyEFhajlkX1s4goZPwPrUA8gp60RifjtSadD6rpH0W6GhnePDydPn/5sk4wDHkVl5AjvymjF+1lf4f1k2BkSNUNDxowJCRyAwbBgMIWwwsBHjFyRLiYSxESFTA0LgHxIKf+77h4TQAw/DoGDe16iRmBeXzXJ1mK3ndhpAbsuO0YBKa97TeXil6/4gckmuYU7VScRlF8ISM57GPorgiYCd9yaIELKzkWdlY1PquG8IG3v0WOetS0NmSRe/T4ISJFyb9ZogEjC5QPTrZV/ORTyiHMdJbM+owJAxL8KfjVqj1aaWhjBZNRBpue/stDn+MEcOIoh+oB2lR9S86b4g0lP8OJwgun+uud8NItFF3LxUiq76OegpfxG/VNEjqRyGu6VDgJLhAGGE0tHcH8fnJuJq+fM4U/Umuqo/QnPdD6pr7kDbdhrezShvXM3nfkJP1cf0il7HlcpnVeg2ykZoIHqIrjnNKxLvaaICkSwr0VL/9d8DRNIlRxA5OtiK4LmVHN7G1ucKvPjuaPgE/QuGCH+CyICBZhs9IIGQaCgNP0Eknge9DR9TBCa8+DaSD1QjrZCGovS4mq+QQOj0XepBk6dC6ZJWeLVlIWTA+7gCxrZDrQga/SK9ILagacgGhoSxBU2DxZaSyWYhdCi68OYgGx/bKW5ZeLVEiqE8z1A8aQzBe98tQlZJK1vVR3kcrZ/bVWEeXHHulRdELsm16MHOmtPYuLcSQRNfxv/Ss3lSRVgOYVkZAhMbKyYaM2OItkS1zFkx2CXTsgxIh8ASGgZrWBhsEaGw8N6aQ4PVwm1T3voeu8u7kV3ahZ0VsuqvgEiO5+k8vNL1cCA6hUxe0/iDVQgbMw2DJLVOcASsbLwFKSBFw0YQmSQ4iffzKWskPvxxBdJLjqhgh2RZd0jBh2X8d4BIulezqITddRj97Bvwt0i4uF0DkdMj0kAUBGNoIEyRA7Biq4Ao6YFdcy4QbUNjx4OSnv4RjwjnceX0Hpxu/kpB6HZlBFAepeCBMoGQrtEE0Rh6Ks/gQuVLOFE9E4drP0F500LI4nh5LZtQ2hCLuvql9Ja+oSfzDs5VvYpr5ZMJF0l4KvOK3EF0v/BtbV88p4uVz/3NQLSK12EJio+sRV7jOuTyxn25cAZMURIlJ2sPhVA0GCHi9WjwMQRLd9dQWNk6GhA4GOFDX8SG+FxkFXYgvagTaaXdLIj9F8ITaX3HngqlFFjxTtTcBLr9CkKyX9KNVFaUtTll8AsbC//QkdRgtprDeX4CIhZaAkdSkhitBA9lYUtKl9WuJVCUuRA+pjA8N/NTpOTWIbOcxkz6uYu8IHo0km6y48gqP4HYnBIEj3meDRjpwo2BiffLTPhYlKJ5r1iWJI8YQaQio2QsQrqD2GCw0SOys5Ehskn5sw3GsKdnIf3QYWQ5TiO9UELwz3s4vlf99TAgkrIpASUphQ0Y98r7anFLSbdjDYoggCLoFUXBZovk/ZGccJGqMTeFdSjd0UaISPi3dLnz3hNCEqCihWpLWXi4si+ebVLeEWzfXYURz7zK+ixzE60wWFif1aJ5zh4OiZ4LM8ES7YNlm75GcdvDgUiyb9e37cKN213khqdcc38ERBKk0J2CE7Xv4zJBdLeCICqLJnhGukFI092ykWqM52LVVJyuno5jtbNQ0/S9muQqcejFTXGobFiJ5vrvcaTuA8LqTeXV3CiTeUVPE0L3z6zQB0Qq7HscjzONIHqLIPpKAxEvlAtEsjz5XwREkn5I3cQ1KOJNO1C/DGWHE7AhbTZCRvlDxoRk3SFt/aEIZ9i2gGgYW7MjYY4Yg0GWoWyljMdPixKxp/godrLFmlEiBv4YAdSNBHpGiSycLhBp8lw4+Zx4J4RPsgQ7FBNA9FhSZKXXim7E7iyDZchktpAHs2XGFnUIz4mtaEMwW0uqOy4YBraiXC0pGeiUyBstVYiZFczHFI6nX3gHCfuqaTBZibwgemRK4m/MKD+D7MqT2La/FkOffRO+1iEEkHhBgwmjaO47IWQjhARElCwXLQPiVj5nY6PBRkNkZ2vcroBEEJmiMHjEDCTuadEiHgkimZT8ewJf/ml6OBCdQmLREWSUtuHt7xbDhx5QQD8Q2ekF2SiB0SDCYdRzrxEeDUiThqJ4pvSAfhuIXK+l0R5kso7HphUgaMh4GMMkq79Z1WMFIR1EbLQEBgciMPzfWBv/I0EkUXN6+LbLrvUHkSyMV9++CzcfB4ju3jyKs0e3ortqFi5VPk3YxAAlQ++BkAJR+QgFkitVE3Ghehrh9QqaGj9DWctcFTwg3XQSPVfXMBvtdZ+phfLOVU3HlYqpKoT794FoJkH0JT2vRch3A5EkQf3LTGgVCDknr+ZJJGFrHPZVbsSrH7MwRA+EKYKGXSavKhBR7iAKHglf2zAMNA/BzI8W4ACBsdPRiRx6MhJymyJzDMoIorKeXhCJq65vpZBKhegrPkcQSeqRNEIoXUVJSfLUo8iWMYFDjXhh5jfwDxrOAjmYAJSswIQOvSLp1hEQBdIbklnhstywNkYk4Z9has0Toz0aPsYIDBn/KrburEA2W+5qCXMVvdNf/SvO/eQFkUv0dgn1VMI9q/Qovl68FZbIp53dcdItR88omK1tNU+FnlB/EHFr5f2yUTPCgV4AAP/0SURBVHbeM2tQML2jEAQYwxAx7CXE76oliLrYEmc5cfx+CD140cX/Lj0ciKTe8bqWHsaPaxIQEDGSIIiCOZjwka457tvpEQmMBER+ljCEjXoGm7OLkcmGZpJDIMT6+6sgkrqiy/VaaskJ7GFd/GkFjx06DMbwcAUi1SXHcuECUSghOAimqCexJXM+itriaVslEllA1Ff5bbSxAiLa3OJGekQKRN1kxyMG0Z1b7Th7LJYgmomLhMVd8YRKRtwLobIRCkQy5nO9ciyuVE7A+eopaG98B5Ut3/FEl6iwakfzGlQ3zlNezNGaD9UE14uVL+Ba5cTfBaKeWoKo4UsVNacvTS4gEgD8tUCkhbFLAsHC1m2YH/ch7MMGwRJjgCFMQETPQ7whHUSqr38EPaJRGGQdjuff/ApJu6qwt/Ao9rFQZhULiHpYINlSEgiVsaCqQUytcGotJ22/fwVJYwFNY6GUEN1MfocswJVd1IWcomPYRSDtL+nE13PXqwg4X1YGS6gETsiSwi4QGSwEEWW0SiHWWlPKM6KRkzxWPsZIRI15CVtyKpDFc1MemFulcKl/Zb2fvCBySQcRveJitrDzm/Hj0k0IHTqe5YUQEhixta11s8g96QsiJUsw5QwbtgXBEhQCf2Moho2djtQDtcgsPII0Bxs6Dgkw8XQOniXGV6YAyL4ap3R77b9Z/euYyCOIWN8y2dhbnXwQQcOfZR0bDJnEqnlFfUEkY3uWyJFYsjkL2aznqWwUyERZBaFfBZH7c5rEI0ra34QXZ32Lp0z0htgAMQRZ2KBkHZauOZsTRPYQgsgHI54NQ0buBjhaZKUF8YjW0o73VUG7SOzsOhQ3bSWIdhJEx8mORwyi23facbIrFp3Vb+NCxbO4XTqWIHJCoXwUNYIarsKwb1WMVCCS+UGSS+4SPaOjDa+jpuVzUnU+3Thx5daoxewaG75HR+1nOF49C2erXsPlyilqPpG2NETf8aG+IJJlxUepLAy/VD2H7tq30NTwlUrzk8+LoYFIjL6Wb84jGP5sOecLFTTH0VPbil1l6zH2Zbq/EQNhjrJo40MCInpFgcH0PlTYtgYif9tIRIx8Aau378P+si7sISwkgaE7iBLLe+gR9QeRtJz0SnFWU7FIW75Y4JNDQ7PTcQx7CLe9BZ3YR+NzwHEEeSWHMX/ZFgTaaNSComAliAySlDE0FGaeqxrQdHbN3Q9EA02RiBQQ0SPKfCQg0iTdE6qLQj0+hUQ11iUeoBaVpyLz+Di1TEKc+VvvkWSM8CS+xvNJoyR6UGUvFtGo9orH7DUuMqFU5mhItxWvrUhN2JWtexi9U4l8/l45jXU/uf9ez5J7fBKJvGcSsJJd2IE9jiY889Lb9FQ9g8jIBoVJGhUeQKRgxPcJiMZPeRM7CxqRWdCm5hUJjCSTxr0h3LwHPAfN6GnXx33yqzynfk/v+/+71R9CIk8gkvqaVX4Mm3KKETHuefhZowkiwogekZX1RrrlZJxIwritYTEI5L38Zskm7CzrJoicgFHd6tIQ+XUQSU+E/v5M2odVO3IRPuIF+FikWy4IgXaLqscSNdfrERFEgUGBeO2DqcirSUFhEz2ipg0EzzoPIKJXRBBJb9QjBFH/P0l2ehqXLx1CV8M8nC6bgWtlk3CnVLwSAkJBZxhuVQ6hhmogUs9rQQdX6OWcrH0Z7Q3vorr5W574YhwkQaWbrrJpERrqZ+Nw7RcqZ9z5itdxtfw5XCPsZJxJ5gsJ6LRjuCQQuksYXS+fhLPV09FZ9z4aG79VmRXyJSiidYOSMv6eoPCnSFoIK51burDKG9qIwuatOFSXgI9nvw6foCdgjLA6PSCBkEQ8RaqQTlmNNYAF1BI2is+Pwec/byB8aHCKjiKnuAtZjqP0ZKQ7TWsZaenhaYSdINLEAkkDq6X5uIBMx0VkFp1DNgvkHn7PoYJ2OHIbUZZbj2pHAxrK2tBU3o4mblsrDyNu6WaEGHlufmY1wC2FVbLz6rOwdRC5jxFpImCtEfCjNzViyixs21ODDFY+qQgy0OpeSR4seZ+zAqvZ4TRqyhCeo8S4a4YureIcMqrOIr1Cq+SSviaF2x0FRxC7px6L4/Px4/psfLxwO96ftwkfzovDR9SHc2Px+eKtmBObiZVJudixrwGJB1uQmNeOtKJu5Eh6HIF6Ac89vxsp3KYWnlCZBzSjLOfE8+A1TSqSCbvnlPTHSTxPHUAJVHypJ51W0Y7uehggaYEoPBd6xjLXJ+1QCz3lw5gy/TM2HoapLjojy5GsAqoMixgYmbUvIDKHOEX4mOkJUTKr38rXDQTRi9Pfw97cGhx0tGK/ox37WU728Vruyj+GHF6DzELCWrpYS46yfEk0Fw0kH6dLcIMsO+DM/i7n6Q7a/r/hnykBQzeyK+hp5jVi5LSZaqE8S3CMAo94QQIji5pPJGsTERa0DR98v1QtgCkL7CVLVzzLtxZgpEmmb/SvP5JaKEkWzJQAJjZYpTtP6uEbny7DANNQBAQP1kBks1FBbDyGst6G0O5QtmD4E0TzVn2N/JpU2i3NI/IEonwniKThX9y0BXVtskJrD7lxUxHE/e8PgugK7tIrunIqA2fqvsb5spdxpWKi6n5TC9xVDcfNKg1Et8s1EGnzgcbjaqWW/eBY3UzC4guUtC4giCSybQ2KW5ajqmk+vZnvCKPP1ETYy+Uv41r5NNwk7CREW/N+RvbRLfGGyifgl8oXcKJmJtrrP1UJV4tblnkAkfRjegLF45YbiHq9oU0oak3ApqyFiHlG1hvyhSGMBaC3G06ingghAZG0iFhAfU2DMXbK20jaW4M9bBFl0RPKFBBRaua7E0QCIXcQ6fmm0qgsuvO7Cs5gT/5pHGDLtqC8C6XlR1FX2oG2klZ0ljSjp7IFJ2vo+Tp1rvEochN3YZhkcDDaaaxssEnYLwuoDiLZ19QXRGpMgq3xgeYovP3lYqQVdPA8pbKI16JVxoeXDi6tJZ4i3ocAQM2V4nP0cDIraOgcncis7EZCfit+isvBK18tw4jpn8I86iX4RT+DAWHj8IR9JDUUT9DLe9KpgUHD4B8xGqaYCQgb8wLGvPQhXvxgDt75cS0WbNqDrbvrec3pNQqUCHtZCTetsJsGl1u1hDPPgTASSZJXPfO5JHqVrZyrPr8rgYrXxQZCQhlBxOsRz/uVQCXynol0w/0g4y0gSpT7z3ufxt+eRVCIV/v+pytoTEbQgLE8sQxpy1FLSzcYBsLHZKIn5ASRlSAyE0JWKoj7dlMwgi3hWDhnJarKW1Fd3kEdRlVZBypL2lFa3IFCNmAOFNAjp9KKBUISlk8jx+uQ5jjH63KWWzZ+nCByn1LQ/zf8MyVluoueSRd2lXXipXe/USAy0AsyET4iC++bNrFVGhFh8DGFYPr737HetyOj7Cjh0vlQIJLnBD4yDhzPsrGz7jzmbNyHkGEvY6BpiIrKDSCABEQGBSJ6Qay/Adz6WeyIHBWBbVmrUSiLoDZuoS0TEPWFkAIRbXl++2rkNdOmN212gkg8oluKIO5/vxtEdxWIxMU6yU0lrvdswemaL3G+8lVcqp6IK2rZb3oqlcNxp4K6B0STcL7qeXTXzkBz46coa51LCMky4rJExAqUNi9ETdNsNDZ8i67qD+kVzcDFium4rDI3PKOAo09y1XW9YhIuVL6ME9Vv4UjtR+qz1Y1zCaIVBJALRK7BNU+geNwSEEkaH20QT40LtWxBfsM2vPXVs/AP+zfMUSYYw4IJnggWCg1Ekj1BEh7KWiV+FkJg8DP4eVk89soqrHkdqp84gy0qGdcRb0iU5gRRvBuIxF2XgeadhcdxsKAbRWzNlud2op5eVUtlB9or2nG8+gjOUOerDuN8dTvVRrUqXajrQIejEq+MexahgVZESKivxcYWm4wl0JhRkpfKBSEJDdYkUVoBrFiGkJFYvmUXz7UT6TKZlef620EkkkrGzxYdRyKNvyTmlIwCqWXHkVPFVjivzdLEQ3jz2xWImToLgUOexRNBI/C/1qH4F0H+hGUwnrREw5fG2T+UkgrolC+v98CgSJUx4ikagCfpyT1BT/Qp+xA8xe8wxjyLqTO/xUdzNmDx1r30muqQLnO36IVkyfgMIZXu4L2hdypdWBL0kU5YSVqcDHoJonQCM433Q3WhSCOBLVSRmgvSx5i4frPm8bh5hP2kXuc1UeMEbJzI2N5uGpt5y1N57YfDFCwekbbejHSzeASRdM2JN0SF8LHdaMUQNorys/bjeFMnjtW24yjLwrGqFqoZndy2lbehrqQDpY4O7C8+il383dmSKFW8IMd5brX1bwREAiAviPpL6yoTz2ZnaSc+/nE1PY8hvGfOpbplHE/BSFLv8DE9oicCrBj/EhujB2uQWU4I8bp7ApEWlOSU6jLlfaE9SGLZkF6CjfsbMerVr/Bk4Ageb4QKaPGXgCO7E0T0hAKlnLBu+7KuT5sxhXYnAaWtqchvilPDHIVtYs/+AyCSUaK7d4mjO5e514U7Vx34pXMjzjR8jrM1U3C5aiLhME51lUk4950yQqlcsmNrILpGaPxSNZWey6tobfgIlc2z+YOWaSF/bSvoISxBWct8Pj8HrXVfoYcwOlH9Nk5Xv6Gi6QRiEt7trvNVL6vkqhJ110QI1TT9rEK3ZT0idxBJYET+fxBE+QSjBqINOFi/FqUSrp3+HYJHPAlD+BMEkC9ModICERc8xim6y0EsIPYY+FmH4WMa1/0lR5BTeIQFl4aXxksFGLDy94KoRIOQDiLxhqTrJIcQyqPhrqKx6GAr6hQNyPmyJt6POlysbsSlymYCvxVX2Pq9UtFMNSldpi5WNeF8fQvi5i1CuMGMMKsNIUHBsAbZYQ2mEaO0HFXiHUl3nYRta5J19wWkk15+H8n7awlOGmieVyLPNVF5Ny6D+1CSikbJRFvJGK1alBXiDRzF0viDePmTuQgZ+xIhMgT/MobjCTOBQm/sKYJ8oEVCYCN4LSMRwHOTpTQMrNxGiVDkvn+wLMkeCh96DYNCWAFDwzGIzw0kYAfSgA/kvXmKxuEJfo8hejzGTf8A73y3HPM2pCPhQBXvSTs91cPYRY8hq7AZ2Y5Wqh3Zcr8cR5FDbyWbhiDbId4sGxBsnWZKQ4LbDOXVCrwkWlE8DMKMSuX9lfke2u/3ZMycHpEaC+N7JbsGv2dXYRc2JTkQOXwaAglSiZqTFThlKWpPXXNWekBWUxDsBFIkf7fRzx9vTpmGE+VVuNjQhLPVdaxrtSwv1bhcU4VL1PnqWpysqkdneSOaKo6ipuoESitPYS89xKwClstCWZpa65oTAEnXoxdE7nI2SAoFRF2YuyYFfrahvFe8X3beL7s2NqSmQASLNxsOX3Moosc9j41ZDmTzmsu8QW3OH+sFGyIitRIsv7dXtBOp0m0rCZEJLdG7C3bgf4LGs4E7Bv7mwfxuWZMoiFCysbFCABFGAiaBkDUiEnNWfI+C+mQ4mrbTjrFR37ZEZYTpA6J2J4ioPiC6dYK8eIQgUg6RZPm5zX/uXOCDY7h1uRjHCY6TNZJlYaqawIqSp50BDLLct2Q9EBBJPrhJhMdkvvdldDS8T2j8QPgsJojovRBG+fxhjrbFKG5dgJpGgdH3BMzXakmJztoP1DwkCWY44abumnfRXP8N6hp/VJ6QQKi4WXLarabx10GkJT5VXpEuj8B4XKJHJGGNLQQSb1BhyyYcqI3DjM9ZCEL/b4LoSRpBWQpcQqIjVHSMQEiBiIXSxxKD4RNfR8qeahysPI6dNDQ7aYhl7EIHkHTLCYT0rjkNRFqhlEH3AzRmVXz9cFkXzpa24mZJA+9PBW5XlPAeleNWWQ1ultXT82yg6ijZ13S1sh4XG5tRtXcvnhszmi1mE8KC7bBJ5FwIAaTCuOkRiWfEVrfWBaRJVpi0ho/A3BXxbDEfRhaPn0RvQTwArZWvG9n7S/cIeifdSr84W5FpMtu/9gw27q3B9C+XwjB0MoExBH68Zubw4QTNYAwyEyaULxVgETBqWYYltFwSTKrlkQkbUwi9hVCK2wBuJeWNLz0+XzsrI1uJ/pJvK5jbEDvvWRjv2XCCid6VdTDsw57BmOffwKezlyJpVz4cNe2oO3waNW2nUdVyijqDquazKKs/g+K6syioPo19NCB7y7p5L48STkcoGfPrQBbBlSVbKp3XS5LEpjloTNQ4lEi6JPt6R3Jt1Ho0vD7S9ZJJL2wXP5d9qA1vfzwHT/rLvZHfrYFI+v4NzmAFs1mHEb0jYzDs3A8y2xHNRlHOlk24wLJxo64WlyvL2TApw/WKIpaZAtyuLMSNyhJcqS5nQ6Ua5yraWB+P4nBtN6orOnGosE112WUWiDcuHpsXRPeKZZuNw3RCJIflYemmHJjCx7L+x7Bssoyy/ugNOumWM8qWDQrbkHFYk7wfOTJOxDogC+3pELo/iMQ2SBqoU1jKBop9wlv4/6yj2EgcxbIQTQ9IO4bBZudzNjbUJHWXDQMCAzFl+kvY5UhFaXua8obUMEP7IpUVppDQcYeRyyNa/TjHiAihO6SRgOjuFT46j9u3DuNwywZ01H6o5vCcr3pJZUe4SU/oWtUIXKscCX2xO8kl90vVFByvnY72hg9Q3SwgWuQE0Sq1laXFC1qXE0aL6R3NQ2XTHFQ3zUZdww+q26217ku0uUkgVNE0H8UtBFjLUhS1LIeDnxcAaB6R6D8NIs2NzSeQ8mSdobYExKXNRfgYAwJDfOFnD6ARpEusDLsUOEn1EU3jSBiFDccg+zB8t3AT9pZ00sAcQw4LrnT/SJRcOo2PSKK7RDI3QACUzEKXXkZo0WvYy/eX8PlWPj5ZdYxeTzPulFThbmkJ7pQX4Q5hdLuinKrErYpqqqaPrlfW4Ex1JU411GDJd18iyOiDIHsg7DTKJoGngpBm1N1B5G+WKJxQvDLzE6Tvq0UOjWtmydFeELnGrx4kVlhlvGh8+TvS+BvS2bITLyixoA1fr05G5LSZ+N/goRhAL9KfoDHy2qmuKPECZLkMWygC2dIXGXhORjVznNearT7JCiGp70000Abui6GWBoE/K2FAEMEjWzWAa9W6LficMua8R/42UTjvXwQ9rRC2HkMwbNwz+P7nhTjkKMexE+dx8w5wjdXlyg3g0jXqOmvN5TvoOXsNXWevo/PkFbT2XERtx2kC6jD2lbdgd2kLAdWIXWWtSC/oRHrhCRXFlyEGhg0OuccS7ShBGinFF2jQLtHQX+b2MkF1kZ7IeXpEZ7GPRm4VvbWQiNEINNMT4u8TQ2PgdZCoOaOAWWRmeTOGIpiwDjbwevj44fsPPkB3cTEuVZTiVk0lGySEUFkZ63Uxy0kxyw235XyN5eYmy82NcoFVA87WNKGnrhGt9JQK+Rt2FrYTjJ3KWEo6GsmPliIRZP3k2VD/d0vKtDa2x0YDvZRNmcWwxzzDMsXyS09dGkgW1ieRaiwJmEJiMIgNrHlxqdhVSY9ZBSxowT9qDEiA0w9EevdvdvU5xOd14Jm3Z+PfttHwsY9geRhCCEWxcSJ2hw0UKf+q7FsQEGZEYLgvFm74AWXt2WxAb1XDClpqssVOEIlt6w8isXMCoq1OEHmeR3Tp0kOvR3Tv3927si6R0E1AdBHXSbvG5mQ01M2l9/KlmpR6pvpl/FL9DN330WwxjSaMpHtuHEE0ga+9gGN1b6Kl4VO2En8iNMQj0saJ+moFctslIehSvmcpSmUZcno7VU3zqLm9qmxeoMAjAMtXXpXT4Le61iL6K4BI0yoUtsYht2YbZn46FcZwP7bAtX5YKQBi0GUxKosYchpQo2RHZqt70vQPkLyvGrukL5mtXWnxZqhxoR7lBSkpEGkFT1pFqWwpZfP9+0uPwUEvpKm8Bz3VPbhYdxQ3qhppSCpwt5zeEI3KbbZsb1eWuUTDoqlK6WZVFT9XjTP1Vajan4PXpz2NQN//gdli4vmKQdfCfTWx4jhbcQEmO8ZOnIJN8dk4UHyEHlEnjakzDRHPUWDkXmE8S0JhxejKe9miK5dlLtqxcWc5XvtiEQaEj8H/R6PqHz0UvuLRCAile5DX0CLdGSqQQiL6tHlOBoskdZTFxyjZOnPiyborWqZhtgRlP5hGm5JKqQZw+V6jgMspNdaiJPt8Tiowv9vXYFIKCgvH2+++h7SMDJw4eQI3bt3ETeqW0i3cZGPu+p07rKR3cYW0usztueu3cez8JTR1nUZ56zEUNR3F/nK557IUw1FIFuws3k/p3tSCU87QY5JVcK9Q15HquEHv4yqyCy5hV8E57MvrQmFhE36mp2Yx8vyNRpitZhWmbaYHZCJ4TCZRGGwEUogpBCH+Jnw+4w00H9yPq7znN6orCJkSesulvVIeNHVbPGpKedbUzYoKNloqcJmfuVBXhbaaehSU1LE13azGQVSW6DJXOHNvWPM/FkSuBlYm60T8vho1xUFCuI0hAiLWJ8pKCYjMhJM0UAcSVF8tjkMOy0ZqsQtEmtfjAURURvlZ5XnN+HI1vfjRtC1jYA0bwTJNO8O6qrxlmZgu5ZiNLVmIc4D9X3jmjSHYXRFHT2iz8oakR0cDkZas+V4Q0f6207HoAyLPmRUeCYhYffjoFwWihuZM1NauQnPtXHTUfY6jdW/jBL2eczWTcb56slo9VUKxZa0imXDaXv+RWjOorHk+DfNyQke8ob4gyqUOdKzFIel3JFRkifGi5lUquk5WX1WejywHroIAJCJN3zq/4y8HIgHkShS1b0b8noUIG+UHS2SA0+DRJRYQiUfErRhz6RMOoDENYGGZszoJe8qOquzamWzlSrRWfxC5Fz5l4Fmwpatnv6MVlZWdOFp9DBdrj+FWQyduVtbjLo3G3cpSJ4SoqnLcoW5Ximhcqipxt6qaz9MrqqnBNRqlczUVuNTehNz0eIwfEQmLwQCLSeaehMBOg2+j7LYwWKW7h0Zt7JhJWLqUBbe4CfuKjtCgHmGF0/q1k+nZKGA6z/lBSudvk65HaTXu5HVYuCkHURNfx1OyzETkKARExMBX5l7JBNsQGa+ScSutAovHI7DRsgqzgpnM8DcSFoEGAsMAPxpnP7MZfnze12SiEbCwMmrdErLvZ+Fj5RFJ37kGLk2aN+V6bKfXYVHP2QlEe3AI/A2BhLUFM2e+gcTEeFy6KN3Zd3BbIEQgXaMuXr9BEN3GrbtaVZUm3tU7d3GeUDp+8Tq6zt1E/dHLcNT34ED5YXpKrbyvLZR4GseQJeODRWepX5AhIfmF57Cz4BR253cjr6CDMOhE2cFifPXuhwg3G2EL9Eew0QI7PUPphrOZgmEzBiHIYENooAU/vPs+6vfuxIXqUlypKsH1KnpCAiIRPWe1Fc+IUjCi7pa5JI/leQHSSXpGjbVtyCtppifcgaTy4wSRNCy8IBK5gyhDQHSgDqOmva3GhI0h4v2wUaqPwSoYad6+LLvywU8reP8PE0RHe0GkZUeR+UQuW5BGT1rmyokn/fmiJNiGvkS7QhCx7pjtMjakdQG6QMTGV4gFvsGDEDzKgM07F9J27cDBOpl8H0sbKrZMB9HyXwHRNieIjrFUP2IQEUWUDDxJNtXLbNmdQEPTblRVb0dN7VrU189DY+PXaG18H0frZ6CrbgaO17yJU1UzcbL6XXpNX6Ch4Qfl2Wgh1gQGf0AvhJzQONS+DgfaN+BQGy9A6wa2DmNR2CzjPc7uNvUZLfS797NucqXRuY88wuLhJbnrRA87SVayax9s4O/lzfzwp6kwRPwvrIMNLFg0YqpLi26xGDbV4pZB/3AawnBMfeMTgqsKOdISZss4Q/qUneNB7tILn7R+ZM36dBZOWZM+r6ABzdUdOFvdxsZAA66X1dJQ0NMRI1KhgehOVSnQUIO7NZW4RY/oSokDl0uLcKWCBoXAukMQCYyu1NAzqq/GheYa7Nq+kZ7RCwiiEbMF2GA32GGjMbMF2tmyDsNLk6cjKzkHtaV1yM+vw14ZsC/qVCloBJLJZaw8vwIi8fDUZFu+byffv5Ne1dcLNyF4uJb3zk8ijNScq3AEEuhGATmvoQRN2EMjYOPzJqsW2ffUIH/4GcwIiYjGmPGT8ML0V/Ham7Pw5tvv4bVZ7yhNefkVDBs3HpEjRrJxEIpAVkw/gRe9IZGeT0+bL8WGQz+5z6WyShQhP2smnAyEnpmwmzXzLSQnJePc+fO4Rdhcv0nPiNXp2q073L+t9nXduMMaJt161OXbwAVWuaPnrqGqrQe5lU3YVVSPHEcjtxIcwWtTeorX5xS9jx7syu1ALqFfV3UUx3nfz9Q2o7OkFMu+/hxPh9sRYzQgzN8Aqy+hZDBiCK/Pi09PwMaFC9FRkIczZQX4pSIf54sO4UJhHq6WOgghlpH6GuUd3aBXJLpZShjpYllRYrm6QyDd4fZidS266ttQWdHC8ttKEGlekRdEmlwgku71HiQdasIzr32GATJfT3XFiUfEhp3yhiT1kuYRybpfH/xAEDna6RGzPrFBmlLEhh0bqCmUFlmqja9mVp7H7rpLWLyjAPYRL8PHPJwNphh6xVFqXFAyfcsxtK4/NuYIPUMIG2jBT+DLhW+pRfAUgJpoh5vWu4FI1lGjI0Bb2xdEtHXtKwkiCVZ4jF1zGohYM3pBdBJ1TYdQVp2BirodqGhcjYrmeahq/Rq1rR+ivvlDNDd+jNaGT1QOuLrGn1HVuBClKqBAVlB1BhP0QkTAogEml89LhIZDJUiNVcuM9xn3cb7XHUC6/mog0iLm1iDx0M8YNsUP/qH/B8YIX1hCaDj1QtDbhUQDaLQhePAoLIlLReqhBgLoKAudhAMfvwdCfUBEg5TIFpAkRdxDb6i0qJEeajsuV9XRYNBQUHqrVQzHbXpFAqK79HZulbMVXFSAjoxUVGyORfG6NajctBFtKck4deAgwUSPiJ7S+dpKXGhpQE2uA0t+WojXp07Hc2MnY+qYZ/Hm8zOwbuFaVOVX4nTHSTSWNqCMrfi9BZpHlFHc6QSRyyNSKYb6SdZBEslvlkizlH0NeOeLxTBHjMNAYzQ9lBiCIoqepAR30PgH27RrqbwUekaEkQp5pXcZHjMc73z0GTZs3o5cRynaj3bj5NlfcP7SNVy+dh0Xrl7DuSvXceLCRTQfO4byehr4Q3mYv2IlzKHaWFeAjDFZXdKzFOgzz+V4au6FhLzK6xYCULpZeU9tPCerwMw/ECYTPaS33sbOPfvxy+UruHLjpqpNN27RKyJ07hBQ4jHdvn1XPb7J7bW7d5WXdFVB6Q5OX7uB9hPnWM+OwVFzBPtLO7CnpBP7SrpwkNf3QH4TCoqaUF/ejB5HFU7kF+Mc7/WVplpUZiRh/Y/fYP5nH+P7997Fom+/RtKaNag7eACn6fWerSzGkX2ZqEvZgpKNa1Eatw5NSQk4sXcPveMKXC8tpgijEnpGpaUKQjfoHV2qrlS6WsnGTLnWVXe1spoQbEJzDe9/aQuSyzuQWCotdi+IRL0gknLO+prJhtYbn82nNx7DMq15KbKMikj2BUSS/kc8plc//EkFtEg3rYBIRVeyESIgUlMbiiS4h3WIjdJV6dUY//r38LON4veMgNkaDbslHDYLPWL5TsJI2SAFoSD4WJ7E+OkxyCrcwMb/FgWf/OZ1DwkifYzokYJIoNNfrA2sOtr6Eld4kJOoadmPktpUlDTs4ME3oLh5GYpb55Oms1HWOhvlzbNZaeYoQJU2L+HrK1QmbD0FT18QucGEBlyi36RbrrhJuuZ4MXpB5BR/vAtIEjrIiyafVSC6vyRT7MOqFyZyE5xSSVRl3+31B302n7+h7EgCfl77DkxR/4affQBvugWmEBYyFgIZAFcgovyNVgwMsGDy9LeQerAKGQUtSC08TO9AAhQeFkQn1Ez4ShqA4/WHcaW6Rg003ywr6QciGRfSul2ulhSiNSUR+5cuwu6Fc7F7wTzsmq/p4LJlqNq2FZ17d+M8P3Ohlt5RUyvON7bhRGUtWnILlY6WVrEV3ojGQ4UoTMtGSdZuFB+sxD5HF3IKj6l5NioDgJwvK2Oqg5VQSebeHKUIq5IjyC4/Sh1j4T+L7MIWzPhgNltzMSp5aoDMAzIREDLAKpNmee2MEkSgus/kOooIB17X0ROeRX4JwXnVVRFusBhfval5HQIB6RaToAJ5Xt6lB5pm7N2HoEh6XiZ6RQRLoESbOSUAEsjJsQRCgXxdNSacr8tYn3hHMn6mvDJuBUwBRjMC6JnZQyPx0adfoKauQQGHrMEtnsQtAkkCgu7cuaN0my/eIHxucl9q302+UXSVD85duYHuM5fQ2n0OZQ3HcKi4AQfyWF7SDiB+UyrSNyZg77oN2MV7V7JtI5qyUtB5YCeO0+PpqShCF8tDF72dbnrATfv3oCwtEY7tcdi/Zgn2LJuPnYvmUHOxk+Ugb9VydO3MZkPF0Qsi3RuSbrorhJRIPGgJXrhVXqm2l9gA6qxtxyGWw7SywwpEAh6RF0QuEEmo/q6KLnw2Zx3MYSPV1AIJ/NGmQ0hZo3fkBqJJr3yMDAkEYaOuF0TiDRFCEuCTUCQBCqcQt6cJ49+cDd/QiWxUSdBKNExmSR0UASthJAvvWYIiFYjMoXbCyh+hw02IS5uPvIZtym7lS5aalhWU7Is9k+k2OoikgS0w4vOUin7+1WAFKckCoosPCyKBzr1iNeF/N7i9iqsEUVXbbjgatqOocZPKqK15CyspAqd5FbcuqVBmZaQJDgUi3bPpCyEFEzdDLt8pnoxrXpC75HmBFCHj9pkHqf/x+iuX5yrKo6RbTVTA36Kr97lf+U7tNf72to04VJuAqTPHwjdokBqHCLSLCy6i8WKrXsYgxJCaaVztYUMwf/UmZDsaVUivpGsXL+ceAIlXoTwLHUSnWdnPqdf2F8os+Fb01Hfil5o6XKksUv39et++ipRzgugGDdPJA7twYNlC7FowR4Fo10JCaCENErdZc39GzoK52LtsCRz0kupSU9Cak42uAwdwvrhYqfvQQTRkZiBvUxx2rV6JDAItZ8UyZG9Nw+6D9IjyupBZ2EXQsOIRPsl5PYTsCf6+HuytPI68phMoOXIKtSfPo/HsRXRduYWSlm68/uF39IIiVULIAEskJAWKnzGU+1oaEpWSRMZo1FiOzA6X6DB6lSYrxj4zGQ3th1UXl4zFXCd5RDecW22fxp2SrTyWcZru02fx3PTXVONAuuVEytPh8fTVK6XLL4DH8Dda1DbQLONQPLbFrkAkj/XME6pVK1CiZF+6W6yE5cjRTyM2bguO95zkUfkndZS6S/iI7vB8JEhVYCXNv1tu4tMKmtdI0rO/XEHb4aPIO5SP7Ru2YtPitUhavhZpK5YiY/kipC2Zh8xl87BzFRsZ65dh17rl2L1mOfasXqa2WSsW8X0L+Z6FyCKEspbOQw4/I9q5eIG69+Wb1uNC/iGtW06CFvRuOUqVJyXxhiqVpIvuGr2inpo2OEpYhlXmBXrCTkPsBVE/EJV34dvFm2EKlakH4WxcaYE3epYSbV6epPyKwbgX3kV6fiuySrTGqYBI1iiS71Jz9IpOYHtuJ174cDGetD2NQbYRqgFnsETRWyd4rINhsgymrRFFwip5I8OMMIYOxPeL30dJcwaKW7ahoIk2rkVCtZcoO6bZM23ep5Ial9ckY+C59JYePKFVCrhwRED0yx8F0W3+q4PolBNE2+Bo0kG0hhIQrSSIXN1YCiZOoy3egifD7VECGQWhvyuI+NvbNmFl/LewDw+Af7A/Cxpb7RJa7AFEfgYrJr/wOvY4qpFT1IxMCXsu6yJcfgOIWCAlaamkY+mpP0IQ1eJKRbFHEEnXnICoIWELsuZ8r3lDThDtFBDREO0WqCyiMZs/F1nz5yN7AY3TooXYv4Ito/W8/uvWYvfypchaTEO2ZCEyqDR+LnvFEqRv2I6MrHLsym1BdgErT/FhZNLz2V1yHEUNl1B37DqOXLiFE9fv4Ly09FmyZFi/quMwXpj1Lp402AghWbQrAv5mGbiNJGQ0D8UFIpF0mxFIAg25joSDaOX6OOXtyJiLO4jIJac0EOmSv7gtW1XwgUW8LefYj57QVbpOdY9HwCLgCY8eQhjxPAklAZA8H2i2ukBEKQhJd50TRHZZYNBggZne1Dtvv4+CAgeuXr7Wp7r1ARFPzV3622R86RahderEcezNzML2VWuQvHotkpcvRyrvScbyJchavpiQmY+kBT8ikUpd/DMyFs9B5pK5ShkET/qS+ZQAa4GmpbzPAiO5jwvn4ODKJWhNS2JZkWhLwkgCF6Q8Ob1sTyC6ThCdIIhKSmWe1DHVbaQbYi+I+oIop/Qoflq5Q40BBco0BPGKxONXDR8NRiabBqKxz7+DNKlPThCJLVAeEeuUwH57bgfe/nETfIInYKB5BHxNMQRQNBXFhhS9IgUima/ELWFnDWf9CR6AGR88gz0lW2nLE1Aoc4Zo6wrpERXIGnK/CUTiEf0pIJLIuRsE0Zk/BUQuPRyI3I+py308x+Nx3KSDpj+A7hG/V/9OT8ptolfYQc+vYR3e/vpZBIT+G+YIEwsaoSNRMCFhLAACJRGNmwpaCMXiNRuRX02jTRDJAH9ayTECR2ZFu8HHXfeA6BT2FB5GWVErjtV24JfaWrZOCRzKE4iulhagaP1KZM/9kfD5WWkXYSTw2bmYnpEyRvOo+QpAOxcvUtq1hFq8mFuK3lLO0sXIpjKXLWLLejE9oiVIWb0em+KSsWt/KfIqmlHefhxNxy/h2PlbOHv1Ln6hC3KRResyS9Qvt27glzsSKdaBF2a+iaeMgSqSxxIaoa6NhGRLd5z0awuABNzukhBq8YY0OAVjkNGM0ROeQcfRo6oK/BqI5D2HjxzF6KcnsNLbeTwXcPQURmIYBDiyiJx0s8lrb73zAeG1Hc+99ArColjp+RkBUVjkYFh5P0VqJVSRE0SyEJ3IZObvM9sxYsQorF6xBmdPnVVV7ca1G7hDb4eM6QOiO9y/69Sdu/SObt3CrRvXUEcgJK1fi8Tly5C2khDi/Uh33odsekUClrQlcwgd8Xh4PwmbbHpAoiynN5TB5+U1d+UskUYHGycEVdnGDbhUlK/KjQ6j+4FIouhuVGggKi09wkZVlxdEbroHRCWdWLwhDbbI0arRpSZf2wgjq+YVWbhvJogMBNGYaTOReqiJ8OpBhtR/wie99CQyyvh9hV34YM5W+IRMwCDLcPibJJv3UDZ4BEAuiTck2fQDrVb4mJ7C6MnhSD9AT6YxHoV1G1FQvw6FzWvhEAA1SZSyZtPd4eMSbaXYO9lKDxdtYzF5UNeW3S+zwiMHkXQO3FQgqm7dp7rmPIHI4QRR/zGVPxNEKi+S83ldHo/jpl8DUb5TvwYiR/talB3biOzSRRj1nIkg+hdBZFRdc6ZQdxARQDRO0v0zeuJUpO7Jw76yBhbONhY0gVA3ISMT1qTvV5u45nosqXxOK0mGbQ1Ep7G74AiKHa04WtOBC/SI+oKIABLx8Z2qElwpySOIlmPnfAHRT0o5i36m5igjlLNIACTSPCGBUI5TOwkhJSeERFk0gtlsjYuSVq7EltiNqKquQffpMzh3/QYusjzKOIfmpdzBtTvXcfXOVVy5dQVtnW14acYrhIoR5hB6N0H0TMIIAQlGkCwOlAK2TM6UNfadEJLIQwGRBA9IV5rASHWp8bVFK1bh8o1bWjTafUB0h+fzy6Wr+PGnuQokeuoiWexPC9XmsSkBXQAhYyGYjASIvHfc05NU19iZC5eQs/cAXnvzbQUkA1/XQdQrNxDJYy3sPRSBgSaYTRZ8+N6HaGpsUQELd6kHgkgesD5eOncae5OTkUAApa1chnR6sBkES+YKgYwOHYJlOb0cQkeXAKivXO9V73eCaKd4RvSK8lYvwy+Fh5xdujI+9GCPSLrmjte2E0SHkSN50bwg6pUOIpWtXIJyio9g5ZYc2GQCsoAoiHIDkdUJIiNBNGrKm0g50IhsNcH7FBuqJ7Gr5gJ2Vp7Dl0tTYIicjCcNLH/WGATJonfmSBUpZ7LqHpGAiFt6Xb5mf4QPtyAuaQEKancgr3YDChrWUwSRLPdAGBXSjssqCYW/BUTNG/8sEN2g4TiLmrZ9KGrcQuhsvBdEYox5YloqCF0EBrcyDqSiLNTWAxD42TznWNLDgUgi4vjdVKGb3IMUdGnfqx1HHZ/upGxdECFkKHXxeVG1m8Dne7WGQKLU97mO65IWnZfXtAaHGldiTcpHCB4+CMZwXxjDzIQODZvk9JL5LzKXiECStYdkFcbX3/0CWbmV2FXSTIAdJlRk7o0zfUcZC7HkkKO0LR+XshVET0ggJBMGE8rOKSjtKjyG4qLD6Kztwi81TbheKS1U3WAQQBUluCvh29XFuFKaSxAtw84FP2DXop+Udi6eTdAQRiJ6RveAiN5QDg2eAMgdQtlLlxBEAqFl1HIkrliOhM2xOH2ii4bzBmFwkwCSAXgNBDfYor9x+yrL1A10dh3Ga2+8gkBTICuLiYbfQpBwK0AKJmRCgmGNkEg5AYwdtnCZES5dchIsEIJAi4BJ667rFV+LGTkGRWydSwmWcGkXhDQQ3aDnIVUkI2sXIqKGsOJr85EkmasGOvlepwcm3pZMjjXZYLLwOYEN378jMVWN10jww6lzv2DfwTy8+vpMhIZHKyDZCR7xosx8rzuIRDIPK4jnbRbAEabPPjsFu3ftxdUr19V53SSNekFEL0jlfKTuSN8df9Xp7i6kxsZhB8GfvnIJvR+BCKEj4z0CH25d+54AJHKCyvlekfKGqF2E0i56xodWLsXFwlw178zdI1LBL0oSfakFK4iuVtaiW3XNdRBEnSqySzfEXhBRzghRSZKb5ejA+oT9MIdJIlItItPVJScgimDZkS67wRg5+TUk7qtiI1XALr0h/I6iHvy4JgtBI16Ef5B0x0Wq90v2DFlkz6ISqUbAaIlgmaM3xH3JFmIJM+KnJR+jvCUDRU1bkd9IW9pIG9ZEG0blN4gN52NlEz1BSPQfAZEEK9zmfzdw/vI5VLbsQz7duAL+ADnxQjHCyjsRt24NimiYiwiJorb1/EGxBJFTrXHOfW1tC/Eeito3oPhwLIo7Yrkf59Sm3yQHVdhG17JFFp6LIxw1FcryC2oJBk2FLTxuqxxHjrme58fzJWREsi8q5nmXtPC1VlFs7/kXtQh0te+X75T1OXTlNfG9fD6frYqSts28Jusx88uxCAyVwUAaLhEBZA6jUWJL359GVdaLH8SC4msbgeWb9mCfTN4sPqbmD2WWyHLCkt5GS4uTLO58r/icEgs3K7SkUJFlBSQfWXb+UeTmH0ZDxXGcq+5Q3SRiKO6WicpwV2Ck5hGV4GppPiq3rMfuRbMJIU07CaCdS+Y6pQ1a71y8UAMQpQOoL4Q0b8gFohVIpHFMi9+CG5d/wd1b11V2gds3b2ndTiyfN8VN4d/JE6fxySefYeDAgTAYjKwsMgdIutsIboLA3yZdCPQawiUjsAVvf/IpZn70MVuPBAM9SQ084iXp+5okImiQyYwXXp1Br6VTgeKWG4huiXXnX0trB8ZPnAy/AB6DsJB5QyrtD4+tT1o1UxYeQ8Z1BEKytfDYBqMV0199A8d6TuEK3S35XnICZ85eUHB7jUBSGa5F/G4FIZ6XSKVxUUAiZOV8CaPAACNGjhyNJctW4MIvMmLGmkcY6QDSpQaR+Heqi4Zs61ZsY8MgZbl0xxEiS+dg57K5TqiIh+PqhnNBR57rCx9dOdROwmzXkoU4sGop9hBuCkSOfJYZDUS9IoRuspFzo6KCqlS6WlmDC9VN6KhoRUFRO7IdR1QXkm6I/+kgEsly+bI8S5osp+E4jNiEg7CGj2KZZ9ljWVDeOMuLBiINLMagaAyZMA3xewvU2LGAKJmNzoWb9iFs1CsYKJFxwbLKazTLmSw7Hs592hoVgceGmzUEdlluhsfwt/rjw6/eRF5lEhz125TNym9kA71Ji3yTKDmBinsvz/30HwKRoOgmQXQeta0Fql+xuGUHFU8jTLVyvz0eJVRx+w4adVGCS62JTsk+39+2nUBwfqYjgUrkPtWW5FTyA1VClVJlbSlKjpZEwiaBF3UHDtVuwcHazSocsaBpB4HpVNN2PrcFefWbKEm9sx6HqtdpquW+qCYWudWx3MZRG/k9G3GgZrPS/upNTm3Evqq4Xu2t5PurN2NfeSz2l8UiK285Jr4cAX+7gIgtndAQJVOY7NPwhEsG6Aga2VBMeP5tZOe2YE+JlhBTujNyJKNCcZfqR1ahzxIh0ysJ3XROZHMcV0kUVcp3vrbLcQx5rPylRR3oLG5SucCuVtbhRrkASVL4lOFmJVu1Mnue3lFLehL2LJHgBEJHwMN9vUWcQ2OkAYigWULQUH3hs7RXGQRQxrLlyFyxApnLVyJ+6VIUHtiNW1cu4e7N67hz8ya39KoJIAGRlM1LF6/iu29nY5BPAHwHBdAYS1JVzVBLd5ss2hUgXZiSkJRw+uS771He0IRJz78IX6NFwSbA2R3XX/5i2JXHFIqZ73yAFsJISrJ0d6kSzX9Kyyrx4suvwZ8QUl1u/Jx0ucnWLGNFNrYcKZkPpESPyGzlc+pxsAJSeGQM4jZto6dHr4jfec0JpGv8nafPXMCa1RswYuRYBIfSOPQDkQQzCIgEcjL3yMzfHGg0830h+Pyrb3Dy1BmeqZyrwEh0W0kH0bmTJ5G4IRbbea1Tl4tHpEW+3Q9EmSs0EGlQuhdC2cvnEkT8PL9HGh9SFgREjvWr1RhRfxCJpy2SjArXKyupKlXeTle2os7RjIMF7cgo8kbN9Zd4ROkEUXphF+v8MazeuhvBUePgz/LUm81DwUgDkSwJEWAOxbCJzyHpoAPZBFF60Qks3HwA0ePfIISGEUJDWR+i1LwjXaqMsSxJV7M1hF69lY07WwBefec5HChJRnlrBgrqNhJE0osjIFqJQ80re4O2JBDB5f38JUAkX6T9SRfdpSu/oKKhEHnlGdjjSEDqvjgk7lqLLZlLsXTzN1i2+WssiP0Mc9d8Qn2KOdTcNZ8rzVv7BSXbzzBv3SeYs/Yj/Lj8Pfyw7D18v/RdfLfkfTd9qPT90o/U9tvFH+DrRe/hqwXv4kvqq/nv4PM5b+GTH99QevurlzDjk2l4/eMpmP7+JLz0zgS8+M54vPD2eDz/1jhqDJ6fNRrPzRqJ594arumNIZg2I0bpuTeHaOJzz80Yxq2maW+MwJQ3qTdGUqMw9Y3RStr+KH7WKe5PeX0kJr8yHM+8NBQhQ0wwBltUJgXxgsyhNF4Co2C2qOkNSYSMryEEMSOm4svZ6/DFnDh8PjcWX8zdyO1GfLskHrPXZuCHtZlYvP0gVqc4sCGzDJt3VVNViN/fhLTCI8gsIrAKO5FFeO0t7cTB4hYczK9FU0kjztW240JtKy6xlXqluh43ampwt7kZt+sbcKuuDl0H9mPviuXIWDAfmYtorAieTIGMdLVRsq9J9sXrEQDpWoZMKoNKl2gtQih91SqkrlyFDBrI7pZG3L1+BXSFCKAbKjT51nXCSAZm+P/2bYnKYzCZxLhrnoMYaxV9RiAMlPk3wSHwo6H++NvvcPryFWzckQBfQkbCoQMkdLp/lxwlcFKLwdHI+zvDq998531U8vdfunIdh490Yc3aWEyYNAV+/ia2HgkHCZmVc9HPh8ew0yiYjISUQdLj2ClCibLJPt8nMBKvaNLkaSirrlW1REB0Tcal6ILdkHQJ/MvO3o0Qgkh1yTlBpMHI6RERuAIfgZHJYqVs8PUPxKx33kV3t8zHYC28xUot9FTSXK8r539B6qYt2Lp4KVIII4lalGg48YpyJBSbQJFu1CynJJhEBZSox4SRsytP4CXKXsbPEWI7+bx4RFkL+HjhHFTv2IwrpQ7cZuPlHhARQjeqKnGzuho3a2pxoaoJh4taUJrXjD0sk9I40hLdavDxgogqkuwhp5BZ2I19pV1YviETdnpEUuaVNy7lgHVApnTYZNxIokYJlrFTX0RaXimyWceXbcvDiMnvYoAhBtbQUfTco1meWMb6gEgmroZqY672AHpCT2Laq6Oxq3Arqjty1Bh/YUMcG+iyXtqaXgA9NIha1tB7Wsv3ylDLYwKR3vq6Q92+Qy/o/Dk4SgqxedtGzF80F8+9NBVDxw5B+LBQ2KOsCI6xI2xEMEKGWpRUTrXQQZSvyjYdGOJH+fOxPC9bX/V6QMhA+AYNgK/9KfjaBmCQVZcPNYjP+9IY+fOzAWrrF+QHP7vIl96Gm/i8r20QfMwD2ELg5y0D1fv057Xv8+E+ZZfXnuJrT8Lf9m/4Wv6l5Md9JesTbJ08ya2I5ybnZRvo9h2D+D5N/lSAU/48X3+LbHlcur+GICOhQ8NCmdWgu0hAxEImOdHEdaYrbbAOplEdQg9gBL9vGI9J2Ybz/EYjIPRpBISNhzFyEiyDJ8M6ZApsQ6fCGjMF0U/PwNMvfIRJr36BV96fgzc/XYQPvl2Kr+etwJzl67Fh9RbkbE1HXuouVO46iI78YvQ4SnG6uBznSqtwra4FF+gtVSZnIGOpeDIEyLKVSKVnk0awpKktIUOPR5TR6wFp3XBZy1bwOcJn+QpCaCUSCaCthFLK+g2oKWALmoXu7jWC6NZNiuVJupmcENq/Lxd26TYwaV1eIgONvIRB22RMhUbax0SIh4Tiix9+wslfLuH0pcuY+tJ0FRWneS59u+NcClYwkkmpauIpwSHvHzpsFMaMm4hhI8ao8R0f30B6Q2ZCkJXVwvtCuJgpOz8fys8HmcwYET0UTw8fg2CeZxC/zy5yA5EAVMKzJ01+DplZu3CWcLhB10i8o5v8zaUlFZj11nuwiVHp9YjCXVt+VpMYHq0LUIBkMPO38/fPmjULR44ccVZNXjgl8YrogV29DsfuvYjnPUgmiNKkEaE8Wm0ukO7RZjmVKTASCOnPKRi5gUh9RrrmFmogmv+zGiM6nJOuPGg9aq4/iMQbuiGqrsHxohrUHqxHQW4bchyS6JYegDfpaV8JiIpOKhDtLZbFDBNoE4bRW9EaT65oTZYRW7gqnyZqxITJvKaV2JB8kBB6Gz4WekI2ekJWmaAq8JHuONlqQNJAxLoUYqM9eRITX4xGyp7lKG1OIDC2oLA+Do7GDWpoRUCU10Lv5jeBSCa7ruN7tewKCkRNj9wjkg8DJ08dR3zCdrw+41WERoTBYDJSBgQYWYktJlZ4unsyw52tfhlYNoWyNRpmJWSoEBGNC5/XxPfQGGuyqdeNfJ8pTDwG+RyNixpPoRvplLzXz2ZBQJAVgTyOrgC7lcbfgkBuVe42lUjUTlhJGn++RsnxAggB+ax6vzzHfYN4KUFmfoYei91Ag6YpkPsig3Sn2STcmpJj20XyeTmuHN/eK21Au7/4G5zSlkpwigDSpSU01GZNGwkiJVsMFc2WkYRXDub1lbV1opWMIQKpIfQSogg5WVkxBgMN0Xw8WEFroHEIfAkw/6ChGMQCGBASTUMZiejQoRgRNQKTho/F86Mm4M0JU/Hes8/ju9dmYf77n2Httz9j2Wff4qdZH1AfYvGnX2PF199jxTffIm7uPOxYsgSJBE8SwSRzVCREOIPKXLkSWSvWIGf5GmSsXoPENauxfTW1bi0K9+zF5TNncZsQuitGUybFEEJ3aJhvXL+FpsZWjB0zAQOf8oUsVa2Pu5idRl0qoVRIyf320dffoufcBZXTI3PPPoTFDOV14X0gsHTPSSLktCWPZY5RqErP409wqJBveziCQqIUCPz8eV8NLC/0YgREErVmk1VlTQSKrM0jn6dHEmSzIizAH0N571fOno24RUsRzeMFSYZtekpBPFebhe8XA8F9ZTh47uERg1Wgwtff/IBvv5+Nz7/8FsOHjUYQARRMIyGBC1ZKMpXbg8V4CIjEK+J58vxl9Vvp+jPKMWRpEIGR0YiZM2ei65hkM+afqtNOIPF6Hq6tR8ra9UhauowgWkyvaIHmCfXpWn0QiMQr0pTt7JZVIJLn5v2AgysX4XTuXtyudgYqSNcudYO6VlmOq1VVuFReiQtl5bhQXo3mvBoUH2zGgbzD9NRPIqn0HHXWCyI3yViuZBaRSd27HUfwzZwNLO+ytLsEK7iDSLzkMFV+A1mep73yBrZn7sa4515ng5t2gp8x0xOSgAYr3ydBMQIgWeFVLawn+xKhGxSIYROCsC1jPqo70wihDcirW4USGU93jvH/ERBJsmkNRKtR1BiH2tYsXL/1B+cRyfwE+bt48SKys7MxadJEhEhGWIuFho0VmC1FNXBL6anxtW4QkbTy2coVCrPFp0v66R8kZbSDaFBo2APEqPCxtkiTLpknIhIXUzP2enbkvuLzzs8IJHRw6PCQz7rE7yOUTPyc5Hq7V9KnqrWue2UVQyehvHLO98o92kWXGEJtdrREevG53t8t10XmDciqjNGqQMmgpBQgbcngCB6H4lbStqv5BXyv0Sbv1yT7gUr0qlgoAwkhWWbcn9/hy2MFSDocGkwjW++BNL6BBgI1gI0Iv0AYA2iUA0yw8rkgtvJDWNDDaMAj+fuiWAEieW8jeY0ieI0Gs3ExanAUJowYitemPINPX30Vs995F8s++hRrP/sKa2l4186bhw30nopyc3GF3ssdgQ8L4O2bN9X+rRssVyyPhw934s2Zs+DjF6CVIUJFeRU06Jp3oeXfky61MZOeRWvnMVWED3f34PlXX+drhIZcO7m+zpaipM6R531NbGTQuAuIJBOCjddRgBHM6yHQscpicEYeRxK18j3aCqX0RkRm6Rrk+ViNhM0gDDf6YME7M1CfkYjG1Hh8/sx4BPsOQCQbN2G8f/J9YiQsbExowON58zeorAsGs7rWmuT3SV8/IcT3aJLoObZYxSPk85ISyMDP6V2CMlYkXXVmlkMDvT8//0C8+eYs9PSc0MaLVPecgOgOrl+4iKpDuUhlYyCZjYZ0wijbCR93aWN8i51Akm5WHUwyl8gJI74mn5VAlF0E0u5lc1CXtBHX1KJ49IbE66mqxtXqKlyurcaFulqcrqvHsao6tJfXo9pRi30F7SpbvCyVnsKWf2LJWeof7P14kAtEWtfcl7PXsnEVhQB65WJftGAFTRbWYTs9HClrI+jNj3j6Wdb3CNq5SGUXtNVc6TWxLKlkpmJr+F5Zrl9N8Db7YeSz0VifOBdFTdtR3LYRRYSOo4neCyEiKdQc3DoIlYfPoemSPiVHQCRBDp5B5Pr7TUlPT548ie+++w7h4fxRJrYCCQkrW2o2Gm0XiLSWoAptVRASw8r3U6ql7yb9+ftJ+w5Wxl4IifpCxN3jUOn3eS4GnpO7dCC5f9ZdLmC5PqPWqJFWLaW6e5QEQvxNlA4fd/0eEImx0lxvF7A1EGmAMSvxejkLki6jGFtVsPTvkvdoMrFAqtBMAVbQYHqA9KJYaH35Pj/eD1ka2yif5fFU4k7eswDeO1kaWNboka4wowzAUzK50sZroI2FcN9kgZmer9Hkz1a5n9oaDH4w+PnA7u+PiIBADPYNwCga25F8/3h6Kq9Mew4///gT9uzdi+bWFpw5dw7Xrt3AzRs31fwXCUueO3c+z1m8GR4ziPecjRu59nr3nF6mxNMJiYrB4lVrcKCgEN/8OFt11wnEtYwFYqgJG7nOYsD520IJJAsBE8IyZxPjr7rPxOshgKSM8RqoqDhpYPA3y4J5gUb+Xl4nCZ82mgJZ1gMI4wH4atpYVG5bg/akTTiVlYhdP36FSSFmRBr9Ec73BvG7rL33hDDhOfWKr4l3pQGWct53NXk5hACT1V55DWw8JxvBYwlkg8BogYEem0kaBnyvHsQgHpKB98LEe/XNN9/hxPFTWuNSWHTzNu4SRue6u7EnIR7xBE3q0qUEyjICZamCiq77g0iDkWTG0McBc2Q+GEF0aMMKHM/bjRt1FbheVYNrNY24WNOMc3VNON3QhGP0xloqqlFXUYfSkgbsz61DRuFRtTKry/AKhLwgcpe7R7S35Bg+/HIJ/EyRLPNa+ip3EEnXnMgkXccsWxIpKlk+tIYtbYTYD4mSo9ck5VvKn4WNGGnM+VkCEDHCjnXx8+n90BNq3QoVCSyeS69k2o3o3nmXDyN3EMljR0Msaloyce2mrND6G0GkzU2Q0g20t7djxowZCj7iCUkqew1E4g25PCIV5eO8WJohlosixpUVU1p7NAa6+oNHpD7DiqyJ3+GUXEBNrIACDQJEPKX+IFLJLp0SwyZb98+4S3/eXa7PiiHWjKAnEOkJLd2lzln95r56WBDp10lJgKJaNTpg+FwviPi9PJ72XWLstO/SpUBECYgkvNMQxFYVr71aRZTHMCiAaSBS587rKl6jjJ/Iom+aNAibuRXDqaLBuG+W62M1sWIE0r03wSbdrXZ6UvQYZHE8m9GIMIMRMTTK4TSkNoLJwkaLgbKEBiN08GCMf2YyPvj4U6xZsx5NTS1ITEohLHjOZnrXhJBN5lOJoZVuNoGQO4jUudIz4vfbw+nx8JxCIiRHlkCF15Xvs6nz5f2j1xDK7/n6vY/w9rSXEDooEBH0AMP5XBDvv4Xlx0RPRrp0/bivxDLkL+VMvHGW8RAbAWDwQbTVBz+9NQ0VsYtwJGEtuhPW4VxCHHq2rMeat1/FKP8BiPb3pdcYxO/WINMfRNJNp7oZeY5yLcXjV93E9Cz9Q3hdg60IDqFnZTHigxeew6zJzyBogA9CAi0Ipmcm0XkaiOS+2JSCCOAAgmrhgsW4JvOMbrO+st7ekCCQWzfQXluFtNh1SFy2FKmEUAZhlKGgJPARCMm+pkw+75IWeKLSMvG9aYsXIWXxfJUiqCYzDeeqKnCpoRmnKlvRU30YbeUtqC2pQ1VJLcpLq1FaWoOC4gbsKWhAVn6LSmTryfh65ZIOouyiHuwqPIJX3/menouAKMwJIqnvOohknIietzxvkrIqdcTN5jjtRyA9f3soG7O01Sa7CYNMTyFkqAGrt/5ECGXA0RyPwiaJFCZ0BD6EkMg9C84fAZGooJXfSxBV83jXbkqQze/wiARGv/zyC9577z3VLx0aGqoAFBwslV0m3Fk0KQhpIBLDJdKNrkg3ktrgmSZ346mJxlEMI8muljCWynqPxBDSSMnWDUC9czt4DmpLyfm4v9YfWrr0z/R9zv136NKN/x+X/pt1sLg/55IOov7PP+gzIvmMW7cdW0ayRIIkVhW5H1P/bRqM+kqe01/XGhe8/rw2AXYzjbZRE2HkH2qmIbXQqNKLCbLSk6BBZdkIIiyC+X67MxAjIJjfy7Ij91EmgEpAwsiR4zA4ZjiNKq85pdbtEY/IYnW753JcDUT6eQo0xdjLPXHPWCABBXYaeBXZ5u+H58eOwa7YjTi4YSO+fHYaxtBbG+zjSw/GgBBWTGuQjAvqDRH5zVq5MxhNsBsCEO7vgymhVix773VUb16OMykbCKDV+GX7SlzZsgrXtq1HF7Xi1ecx1m8gwgYNRLDFrIDhDiEFInW+zrLE6yLHlWsWyO8306uy0LsM4fE+e3EKKrfHwrFpHb544QVEG3g9Dc5ACH5W94oE2uL1icTb27lzt/IwZSrUTe7IRPPbN66grbYSmRvjsHXBfCQRROkrViCNYEpfugyZfCyekrvkuUyBFD2gzBXL6E0tRtKihYhfOB/58fHoLCxBd1ktjla0oc5xGJXFR1Fc2onc4jYccMjCh7XY46hVq7FmFndArRyqQrVP9TG8XvWVAlHRCQWitP2NmPj8e2oiqiT0FanGrlN641C2ElCjgmroOemNYb0xKyBSqzyzQWUJ9Ycl/EnMXv4O8uu3obB5G6GzhSCKRV4DPZcmmZivTdrvAyLKE2wepEcOosuXL2MFC654QAIc6YYTENlZkWT/4UGkSfrx9TDVew2ogEiMEFvklMsQyb4GoD6Sykz1h4jot4BI3ifvd/9MHxA536ctVOc0JG6/7fdI/80PBtH99DAgEo+T7xMvM5gA4n4g3y+56/TPatJ+jycQiaRb1CU+R69BAjT8acD9gi0YRCMq8qFn5Mutv8CIwJHQ46DgEGUs5XoHcj+Qno5RgjF4DgINiRYz0ohKtgHpjlMQ4vWXeyvBAb3n4Lze7iBSkvEbZ4PGKqJ3YOPzdno7QfTQIq0BWPzZh6hNTkZP9m60bNqBta+8gTd5PYYPHIDB9HRCrX4IYtkOljWfpDsukJ8NsCAswIiJPOevpzyLPXN+RE/SFpyJX08ArcCVbctwfctS3Nq0FDfjVuDStg3oJDQWTX8OY0x+CA4YRK+MjTR6uWrJdAJI99akXKmtlCcZiwwSaNFz4+dG0dP8/oXnUb5+DXrSN+Jo+hYUx23Aly+9jggDPT1ZAZefla47PbRbxtLUPKMAMyaMfxaNTa2QUbgbBNFNyQF5V0Lkr+JIXTUOpCQhfuUKbKF3k7RyGZIIGfGQshdrcgdRGiGVShgJgJKXLMIuWYsofx+OVZajJb8MNXvLUbKnBvl5R3GgoBu7i7poQDvVujhZRS1KacVHkFzSjcSSk84UNp4NsFe6ZDmUHuTwmm1MdyBy1PPwNbPuWkXS6+JqnEud1e2TQMjVQ6KDiOVN6oaNIGMdC7T6I3qkCT8ueRv5tZtR1LpRm3DfoGVNyFdbDUaFlHs3nQ6kXjD1g44nPVIQSbdcVlYWBkcPhsFgUNK74rRxIb1bTnJt3R9EWpZhgocVR9Zd11qH8rpcQLmw8rqEFYYpAAWYJJW+hS1dtopV94wTDgSg9OlLFJGMJcg4ghrXoRRc+Lq2Kmdfyet6V1wvwHSYifEj6BSAuC/hsao1zsrdK7f3yiJnAktZJ0iSXcpKn/40YnpBkK3y6GgkA2WsQTJDi2TfKc3bc73fk6R1o3XtCHQ08IjBVdeJW+05DebyuFdOwyySzxh47bWgCh6X5631M8uxNUlXkdyL3i5QHTryfvkcAREg4mPxQpR4HQN47QNsvP7Obk4VtRjM68etLKol/dbKi5LBdTY6ZLljyS5uVA0QDURBITKZU85VrgPvFT8nUmlzKB+5t/x8EK9FkESv8VwFhv7Bdoq/KzgSvtYw+PI3B8r8Kz5nZcsv2GJAtNkP370wBdWx63AmKQkXNm/Dja1JOLd1O4rnzcXiF6fi5Sgrxof6YUqwCZPo/UwlCF4KDcLMmMH4cdo0ZP34Ezq2bsPZhB0EUCwub1mJ65sX4yZ1e9MS3Nm4FHfiluNG3Cpc2roeRzatRsYPn2LGsFAMlTFUXyNCCIgw8VhYVsJZjsNYhqxGI8yBbJ2aAtS5hhv8MTkiFCtmvYX62Ficit+MywlLcTlpJU6nbkXp2jX4cvILiGG5CeF1CuK10eqcBC/wvpnoUdG7NARa8NnnX+E26+0tSqZY3Ll9Q0Un3rl2BZdPHkdDsQOZ27Zg26rliF9Fz2j1aqRImPeSpfR8lislE0RJfCzKXLsWVbt24VRHPa5fP4lrVy+goa4Z+QcItn2N2JfrXNKj4ATSHKeRWsSWfdEptu5PKsMq8EksPoskJe+Y0P0keeaSJIN+cTeyZA7R9r0who9ho08WfpTudKkXWp3Vt6r7V/ZZP1RdF3vAOqEWa2S5sMhyDmwU+hsDYAsPwNxlH+FAGQFUt4FezlrkNVGNq5Fbv5LwWQsHAeRoImwodxDdD0giTxAS/VYQicPTB0TSFSerQsqfTJp74YUXVGBCr+fjlDuE+oBIukzU2AKNBiuOZnjF8As4aFiUcRejT9FQaSn0g+HHSiSG3d9Iwy4gYivVRBCZeCwjv191xVHSAtShIM8JiPz5Hl+eo8jP2E98Tl4X4ynvDTCZFeD8+dqgQIN6j8xaV+JxA+W9lGShNQqcBH6iYN5YMZRyg8W48rzNNNiqQBAWweGDERo5BMFhgxEUGq0GCW00tNZgrRvSxgIi0uP4BRrymipAbNGI/Aw2teyDgE252QRSL9B0iDkfG/VWkPN92ro4WoEUSdSVRMzI4L7mVeiepVx3l2enNRhc0rvAtOAJHp+/1cjWlXyPympAaQP6ch81iKsuNWkIKPG7+f57Jd6ZJuUZi2QuhIKpQJbv4TWWJTA0z0uAw5Y/PxscYEVEYBC9BvFUCT+BHl+XoAsJwgjkNR8k58znQ61mDDb644PxI1G6fCG9mC24vmMbbsdtwt31G3EtLg7X4rfjdOIWlK6aj4NLfkT+/G+x94sPUPDjl6hdOg8ta5ajZ/MmXEhIxOUd8biymZ/ZuAo3Ni6jF7QYtzcuomRLEPG52/SKrm5ciStJsTifFofa2IWI++wTvDvuWYyiZzXcLwAj/AMxXEK/CaDB9JhCff6NEfSGpo8chvmvv4aiVatwKjkJFxN34Pr29cA2HmPHElymF3YxLQkNmzbj65enIzwgkNfBCLtZq5MyZqei6aSssA5FRcUgv6BARblKVOJdSVchEa83buDO1UvcXsGlkyfQUFqCgxlp2E3I5mzZjNQN65G8bi2SqKyNG5GXkoLKvftwqrERdy6cZ6P0Ei7jHK7gKk5evobq5hPYX9CGPXmHkUMQZRScQqrjPJKLfkESlVgsOucEkAYhL4juL3cQZZYexddLt8LHHsPGFkHEOqPGkJ0A0vZZX/pJIORP+6Aikgkgkyy2GWyAPcKAr2e/g9L6dJQ1xSO/XgOQZE3IV1qjUvkUcr+waZWKnHsQiPSk1Q/qsvvDIJI/gdG1a9eQxJakjAXJ2JAnEMlW+uJVFx1loJEXeKi5GLx4g4eOxvDR4zFizNMYNU40DiPHjMHI0aKxmDTlOTwz9Xk8O+0FTHn+JUx9/gW8/PrrePXNN6kZmPHmG3j9jRl4bcYMvDLjDUx/7XW84tSrb7yJGbNm4Y2338GMd97Fm+++i5nvvYdZH3yo6cMP8c5HHyl9+MUX+Pirr/DZ11/jW7Zyv/1pNn6YMxez58/Hz/MWYO78hZi3YBEWLFqChUuXYdHyFVi0ciUWU0vZYlwTu14pdvNmbKFh2rx9B7YnpmBHUqrabk9MQ3JaNlIzdnKbg6TUbCSkZCIhOYOSrUvxSRnq/aJtCalYG7sFS1asxdKV6zBv4TLMmb8UP81djB9mL8D3P83HN9/PwYeffIXXZ76HKc9Nx9gJkzFq7ERexwlKQ4aPRVTMSIRHDVMwDAojBBXg6DGY7RjoHwCfgABCNxC+BK8AWJYkkIAECQKwOBsN0jhQXaI6tJwwEq9IeUZ8TSaVqgXf+L2yXIHaEg4mbpX3KYP/AiKpKP1ApMPGXQpCqjWnvV88mkA1jiRel5Vgj8SXH35KYz0RwwZZEE2jHkoPwm4TsezR+Fos9PzMbAjwmGE00EP8/fBSWBB2z/0ep3bE0ZPZgOtbYwmNDUBcLO5ujMUt7l/etE69dj4+Fpfi43B+0xpc207gbN+Ea1s303vagttbtvG9G3Ezbg1uxRJCcYsJokVOLe71im4RRtc3L8Mv1Lntq3AxYwuOZyShnMY948dvsfWTD7DijVfww9SJ+H7qeMx5eTJWvfs6shf9hPrtm+mxpeJKciquJ2zHZR7r9ubVBNEK3N62Ejd4fue3bqSXtAOONSvx5qhhGBLox9/KayDBHbwvEl5uY8NEvCI/v0DMnDkLJwmb27dkJcw7hNFNDUh3ZPv/s/cXXm4cbdc3+pecddb61jrf+7y5E9tD4uEZMyUOMzMzM5PjOGZmGmYwexjMNMzmxIntxOx99q5WjzQajSHJnSdOLGenW1J3q6Xpvn61q66q+g04c5Kx4DROHz+KX3q6cLi9BQdbGul6mrlswvHDB3DmxDGcP6X5kM5z21M4c+YXnLhAGF04RRgBB4+fRc32LpSqg2pZJ3IrDtINCTw/GQe0yqRn2xCiagiia9VzA0pTeWeYIbu6kV/XgSfe/hrXuZON69dI/FYtgwCk+1Li/RIi44hYyHWZvohKuolG3FAX3vroaayrXoXa3Zmob1pF0My34NMQosYZvW1Ewa4nVOHAE6o/xRGpSu7AgQN44IEHTNuQ2oNs+PRxQUFQUp31TYTNhx9/asbYSkvPxrr1Zaiu3Yra+q3Yun0Htu/cgbKKChSXrkYJS1tFvVqL4jXrUbJuPUrXr8PqDeto+ddi/ab1Rhs2baLKqHKUlVWgvKIKFdW1PO4W1G3dhs3bd2Hrzj3Yumsv9ra0GDW0tqGlswvt3T1o7ermeidaOjrR5le73qM6+F531z50de9HV89+dPbsQ+c+Lm3xede+Hr+4zm2C1cn92jt6/NpH6bmljs4DPP4BbnOA2x7k831mGJm29h60tXG9bT/XrX06Og+ik9t2dHGdaue2OmYb1cp9mls7sXN3I3bsauDvuBfbtu/mb7obNbVbsJa/c15BCbJzCED+7ouWrMD0mXMJ2O/x7vsf4PkXX8ajjz+FBx56DHfefT8m3HwbRo8dj2EjRiI1ZRjilDos+BBQApYmgRO0BhNi9oyjETFufzUkS1l+eGmpTqBq57GqX3kcypeQbOTlDSEXqSkU7HbB3vZBuSOW4kybYC/46NjieDwqxuvCTWPGonTZKqybvRhfPPgk7mTJf5QjEkPdEUiKHozkKAbjwQ54b6DLcLhwF/f/5qEHUTbxKxxesRC/LZmF04umExTTCKDpgLRgulk/r9cXT8cZ6jTfP60qtvmWzsybiQt0BtJ5rp9d8APOLPqOx5rIfaheGFlAks4s+R6nlkzGb0vpjJbPIuDm4Mc0QiRjEbUYP6UROGkLcDhdmo8jGfPxU8YCHFu1BCeXLafjWoQzBOS5hTN5bjMAwujcEn720jmE3FwcXzoPP2Utw5pvP8GD8W6MccTQKboQR4grDd2kouvvwb9RPH/viopy3st0RectXTA6bYlgwTnqLEGjpam+k84QPAwSWgpiRsrEO4Wz1CnqJLf7jTHi1wvA/qOnUbv9MIoJopzyfXREVkq2Vbq3xSBLEF1L1b64BCJN5aK5xjI27cGYe59GZBwdEcFi1U6oxkIgCgUQ3ZJP2be2VOug6ng3fCk+vPL+k9iweTmqCaHahjTUNq1EZcNCwmYeNCOAmf7bBpEfIJdSOPCEStv9YRDpUVRU1A88oVLSgtqNlEn3+ptvYVN5JYPoPnTvO2SCr4KpgqqCtYJ2NwN5a1sbGhqasLexGbsbG7GrsYnLJuxpasbeZgGkGQ1tzWhsb0YLS2otXG/hPi1tHRQBQrW1d6HNgKSboOkmaBisFeT52a18vY1wEXya2jvQyH2NCCapOUQtbe2mM2Urj9uq43Z0mWMIWs1+tXV2+CWIWdvYam3nNi0dfmm9q1ctrQRgG89F8CFQWggTbadlSxufU60EkrZtatY+/vds8XjWOt+zX2vjcSlzTKqjkzDjsZu4b1NzB3/nQ4Sq/7fnex38bZpa+Js3tVJt2LJtN7WDIK/BasK/IL8IK1alY868Bfj+h6n4+Msv8bbg9coreJQuVJO73XbnvXRid2L0+JuRMnwUEpOGGmmKBA3uqcZ4pSbLUQlWkuClqlO161kgYrAk8AQnAyLK3FTcV21SoSByxrowlKW6L597EXvSctCwIhP5X3+NL596GC/ddSMeGp2Me+mYHhw+Gk+MvQmfPfIYcr/4DC1LFuKXjBX4hbA5t3AqLiyYTAD9gAuLfsD5xT/QbVBLLJ2V+Pz0wu+Nzggoi78nWKbi/IIZOD9/BiE2FSeXTMLx5d/gxLJv6JYmcptJISKclnxHTeLxv8d5Hvf00imE0lT8RmdzknA6uVQZdlw3z3lMvn9qyVScInTOLJjL/RZQs3k+06ipBkIXFs/iOdMhLSKQqGNLpuFQ+lwsevlp3BgZiZRoDxLoCtWJ1owGwXU3CwUREVGYNGkSNCDxuQvncJZAks5dOE0oncY5AuXcuZO9EmgEKDkmUiogBYwLSnjQvudw+pylk1w/KRjx7X2HL6B6x08oVGdVUz0n4Bzwy58lV3UNRJeSoL2qim6ovgcz0jfAOfQWOBJG894YCES6X6xqOgtA6srAJd+LUdNFvBfvfPI2yrZmo2rPUmzctgD1zWlmyu+qxkWo0owDzXMJiTkGSGaaGkJj40VkgyVY4SAkhYLoUh1aw1bNnTp1Cm+//TZtfmSv6/Hwy3kIH0mdWCW3BmJk6fn1N95kSX039h04ZIKzwNO976AJlAru7Z1yC3QfciAM7FI7IdHa3o4mwqCxtRVNhEVzO8HQ3mqpoxWtvWpjwBYs2rmf9lcAJoR43DYuWwQDvt/Uah0vIB43RM1G/BwuW7hs5T5GPLaRzquDQAhSWx/ZrupyQBQEDZ6zBRdr2yZuK3A0NncSEFpar7e09pUNSAuS1nGMzG9r/b4Cs5Zme56P3m/l5za3tBvpfM3vpe0Fc/O36KYDo8ujulVIsF0eXaD5m7To92rHnuZWbNu1B9V0nxvoRotXr0N2boFRVk4+Vq7KwMLFyzBr7gJM+mE6PvvyW4LsIzz30iu46777kThUoxt46ZjiEOVyE0wMlqo6SLBdkXWTqXFVo2g44wQjH0t1HiTFenEz3dLy9z7EoZxC9Cxfgc4VS9GwZB42z5yM6infYPOMSdg9bzr2rVyAI6sW4PiKeThGt3OaAf08IXRhIQMynct5uRdC4yydS0CTjc7wvdO2uP1pguvMgil0KNSiKQTR9/h12XcEC99bSmjxuRzQGULsjI6h5AU+P8d1we6CAd4US4umBWS/ZmRtc56O7PyiWQSNJJcmEPHcl8zgcQQjujieA3gupwnKn5dOw545U/HauJswKlpJEEpVD4DIdMB1uvHIIw/jyJFDfhgJJILRGUuEjq1z1HkCSFKGnaATLAtK5yygndfcTZo7iseiNKHgSb7d/eM5rKtTO1EnsivpjJR+XGWNoJBZdYT6EZkEkaXwgfia6Iiq96GAIHpr4iIMjhuNmARNEy64WMARhCTT5hvL+JsQz3VVp1sg8iYMQzRjsjvRiTc/fQZra+mEGpabjDhNRVOhQUx3EzoNmp5nLipbrCl3DIwoQSMcgCS9VxZG4SAk9QXRTAOinQZEwWPNBR4nToTJmlO13L333ovo6OheENkd6CQ7MSHa4cKdd9+L9RvLekveLQYwCp4MfqryUvUV3+tkcOxgABSANFhjG8HT1qEgSfF5KyFkZMDT0kdtfK2d72kfQaONamegNdVXRqrCsqAgh2O5HQGnpZ+a6LiatN7SjOZmS+qs22rAFNhHLkygHFjWdzSfabuVPhJ4AiAK3c6GVxNBJBg1NgsafI3fzXZqkn5TqZFAkLRuvR/4nXvPw7+PBTH/c7Pkc673QjdIcoNyme0GdDpXQVKfyd/CFA54DLlMgkt/Y/O37N7Xq64eOeBA9aPccCv/7rsaGlG7dSuyCgpYMvsQY268iTeMlTAiCKkeWzOrWiU7lvbibcVRsQSRkiBcSHLE4Ilhw1E3eRqOL12FX5csIxSWUgvx2/KZJpX6t2WT6TC+NzptHIogQUAIPpSSC85TZl3QMJrsh4HSsAkjOiKzXGC1+dg6R3d0liAwz7k02xsnxed0Lsa99ErAoRP7E3RhsUBECPG4BkQ8twv8zJPLZuLgyiWY++JrGBvhxXAGII0WIRCpX4nXy9+PwL/tttvQ2WkNimoPVNzrjAgRu8ruUrIGUrWSHiQzlJBJgLBGS1da08+nLmBz8xEzlb36DeVUd5uOmdl0R1mEUEB6Hi4IX1OmBjutp6usbsf4h17BfzyEStxQ0+5jV8NZICKQ1G4f50WUOpETRi7BitdBBAsg8cPi8fZnz6G0bh4qCZea1rmopvOpJnCqmjQXnOZW03xvAhGB1Dy7VzY4wikUNJdSPxDtJYj6DXoaeJw4caw/iLYygIwcOdKASG1ERmFApKHpp0ybYYKRAqgVDOUarKCm6qJGBdGmFuzetddo187d2LlzJ3bs2IGd1I7t27Ft+1Zs3bElrLZs34xdu3ehqakJjY2NaGEwVvBsM1V0ckWq/uvpIxNQ5WbaCBcqGEQt/qWqCA0MDdy4HWEkBW9rtjfHCAelviASbOxqMws2fwxExplRAkizwGJgEpD1fuAczPF/B4gMhMxvGR5ETfyuqp6U6wz9POszdWwCS9+F2tvUhj2UqjY7dF1w2UCHu7GyHB998RlSRo9ChIamMQ2qqs/WTUYg0Q0FYGRJCQs+XnsjVNX00CPYt3wVflm6DMcXLcSxxXNwgoH/hNzKku8IoUlGwVVmoSCSBgKRrX4g6gMaW7bj8T83jic8UH6vDIiWCETTLBDxM5UYcXLpTBxJW4aSrydhgiOBoA44ogCIPBg7dgzvu73mfu4dMT8MaC4lG0ABEAlCfl04T7BdwLGzF7D/xDlUNx5Afk0Tcqo6TcfMHJPOfQ1ElyOBKKemB/ML6hGVfBsGeYYj2owbaVW3BUCkAhwdUZyP94cGX6YD5v2jrhmR7mi88u7TWF+fjtrmVahpmY/aNgtCfUE020AoFEShMAmVnaxw5f2IZprRt3e1FtJRH+QVeZkgKsgvNuNayeJrhkijEBAJQsNHjjJJBApynd09hIICGYMsA9y2HTtRVVWDdes2oKRkNQrzClFA5eflIy8vr1e5ublUDnLyso1yQ5SXn4OCgnwUFxcbbdiwyUpYKKtEdVW9UV0tQbZlJ7Zt20XQ7THA27u3AQ0EV0NjA4N9Uy9obAk+tjoILUnOTK7Ift3e1nZOBoaUlraTUvWeoGgFdLq0tm4+5+/QQhARMC0ETAsDu9RKQNiBX9tZ2/J3a6Or43oHYWBco87FgIP7+c+jOUiCZ2dnJ9XVR3a1ZwfBZ8RjdbQTzh1+ad3I/1lUYF85Vet30OdbS6sKspWyCxcGPvz7Br6T5apUFWiD2LRn8fzlSuU+W7sIvJ4uNLS1YF1FOV579z3Tx0Fj22mpQWt1cyk1PqBERKk6wpuAZIcHt7p9WPne+ziychWOhQHRqSWTjIIB9HtA1Ash436C4dNX5+mULvgVDiR/VGofUtUcuA6CTjBSuvivBNShlUuxacpM3OkbhhSXBaGAEsz9mpqagtra6n5guZiCYRP6WvB7Noj0/Azd0m90Sb8xbrT/fAqrt7Yiu6IVuZX7KA1Z8yOfHzUgCheA/63KJJAF5YDoiOr249kPpmNQ3HhExmr6FwtEBj5aatBjv0PyJKjKW10zfASQhs+KxSvvPYO1NWnY0pyPmuZlqG3VjNYWcEKhE+61UJiE6i8H0ew5cxHjcEFTFZu+PGFApKHo77rnPlN6VqlYENq1Zy+qamqxjrAoWb0WRYUlhFohQZOPnOxco+zsHIrQyZEIIKNsZOdmGeWEUXYO5d8n2xzDUmZmjlFWpv+1rFzk8/OkwsJilJaWGq1btw7r16/Hxo0bUV5ejoqKClRWVhKUVUbbtm3DdjozubTdu3cb7d0rmO1FQ0MDoWKBSQCwArYgYQNLIBI4/C6NalUgJoSamxiwCaI2AshyXlbgVgDfs7sRe/Y0EpyNdIV7KTrFHXKLu8x5bN++zThTacuWLdi8eXOv6urqUF1d3U/296mq5HplTZBqQxR4z963vr7e/Aa2du7cgV27+FsQ6JYae9XYKAhbILJhZDs1yXZ1xlUSPo1tTSYJpamjDV2HD6KpswOTpk9DwjBNY2x1vNMyGETq+Bodl2yqJhK8SYgfEoVnJ9yCxnkLCaDFBkS/Egi/LZlskglOEUanuQyF0BWDaJGeS1cAIlXJ2QoByu/V+SWzKH8bkXFFPNcFk3Fi4XQcXrUUa7+bQhANRbIrAZq/SfIxQPkIb7XnjhwxAvWb667ICQXDJvS1flKbEqU2p5M4hxOMG4fPA7sO/4rc6jbCpxt5lQeRW/4T1382CQvX0rcDUtuZ5RAtl6iZWRcW7cCw25/FIO9YRJnpXzRgqQCkzLgUC0RmlIUkRLEAon5DSutWYsIr77yITVtyUNOQyaC/nG5oCarpiKr8VXCXA6JLtf0IQJc77lw4EO1uK/KD6AylpDhbQSBStpz98hdffYPBEVHQmFYa2UAKBZH6DL3w0isGRGrYVhZcJR1QfmERsnLykJNfQPcjB1RI51NAiPA1IwKpV5cHopxcG1rZhE42MjOsZVaWoJbLdcGI4vPe17L0vgUwC2I5fvdlKdiVaVoLqbCw0GQLSiUlJVi9ejXWrl3bCzEBrKamhiXNWiMF7y1bthJkAsdOwoQQobZvozvbupMubQc212/ltnVmPwGivLwCmzaVY/26jcYtlpasIbBLDbQ1VlhRUbH5fJ2LZJ+bRriwpXMO/HbhFPwbX0rWPvpN7N/AVjF/gzXr1huttbV+g3Gj+l47d+wiTC33uYeA2tMgB6osR4LJJJ4QRqoabacrUtZhN90S3ZHUwNeWpqcjNiXVdDh2E0RmniYjFnTkhuySIJdelxejvbFY+tLrOLZiJY4tnW9SpU8unWwgdGrJxD8JRAEghQOQrb4gsvVngWgGzhFE55bMMEkL8LcVnec5naBTOrxqGQq/+Ba3eVKQpKkq4pIsEUSaTE8gGjduHAtRe8wdHQyWi8mGTLjX+smA6LTJxDvNEu4JAu+XC+dx5BxQ1XAIeeVtFF1RxRHjiK6BKFiCz0+W5BgJory6w/hwajaiku5AhHccYtzDCZ2hvfBRG5DTo5FTNL1LEu8RTQeTCM2N9up7z6F8awHqmrJR17oCVc2LUCU31DqfsLl8ENnguFgSwuWqL4iUvr0Au+WIzquNSLOIqXXR1gWCyD8fUe88ZXz5m4nf4YaICGiUA3tso/4gcuHlV18zbQkqJZczyApC6QKF3EluniUFzbx844pClZ1LaPjVN5BayqN7knKpcO8H4BYsvR7stvpKATf4uQ2p4Oehr0mhEBMQguFlBW8ti/l6Ua/yCWR7v+DjC5a958zfKY+/UfBn2ZC09w2VvW2wwm0X7nfP5eeF3zYg65hc6ryC/n55ufo+1nohv59gvWbNGi7XYs3qdabqdPO2rdhMJ7d913Y0NDegqbUJHYSQElNMoggB1dRJd3lgP77+/nt4NK8VXZA625qRL0w2phexLnW4tRIa5JISCaPnR47FzukzcDRtGY4vV0r0ZAJIKdVWWnUwgGz4BCsAooCC9wkHIhs4A2rJtIvLJB5cWoKO0rYtCFmyXBHf53F0Tsf52iGCaMbTL5hkhSSP1TlYskGkQuIdd92JA4eUKtsfRGHBEqTQ7UMVvJ1AdEZJEFxXNt3p8+dx8OhpbKhvoxui6IpyQkAUTv2D9T9Pyhi0quF+JIDoFKt+NjAq3Pwzlq1uxMh7XsH1nvGI9o1nzB3BWJsKL+Hj9tD5eAke3gvq+qCq7Ai3E5rp+eV3n8aGunRsac9DdbNckKrj6IQIoarWeXxutQ/ZbUSVQSCqaKVa+oNoIIUDzkAKBVHFrnl+R7SfV+RJXpeqnrN1PghEtNVGfPkrguj6iEhE8oK2QWQPPKqheTQsTAyDxptvv4OGphbTTmSClYIu1Qshv+xgFqoAiIKCclAp/dIgunIFgqylcNC5UumYFlx0PLkyuTHruf1+3wDf//VQ6Px5IPojCvztbPgES38ruc6A/BDP57kU8Jzys7F6XSmq66qxbecO7G1qNA6pyYCIUOroQENbG979+BOCRg5IozdYY/2pwOOVE/fxmqNLEqgSeN2NjXJh6hNPoWPlUvy8ci5OLlcK9Xcwqdl9gPJHQRRwTGHhE6wlU/zS+p8DojNLLdnO6NzSaTi55Af8smI2WpbNx/Ojx2Is3ZDPqQxDC0RmYFX+TjFuN15+7VX8fPznsFVzwdAJp9DtL6XgTLxzdEXHTp7DtuYDKKmhK6roIYys1O20mkNIqw0MgHoNRHJFh1FY/yPenLgC/+MZhyGx4xDtHc1YO5T3AB0QpaXLx2U8HZBmv46NQfwIL978+Hmsq003nVXLdy+mE1qASrmgtrmEkCXb+UjhQFROENkKhs7FJMiEg0+w+oNoPva0F7OgcoAgUoviaUpVdDaIfrZApKHjjQyIJuE/kVEEkcZ5s0EkxRNEdEe+eETTLb3z3gfYun1Xb3VcHkvI0sXgExzIBCBbNohy6RRs5QVJMPozgGS5gb7A+7MUcDvhFbyNvU84ANjvXUyB7a3vI9nwupSCP+viCg+ivBxL+hvlED45vd/H2k8gkrLz+F2VcFLA7ekeq2qqTbuRXFGjRDetLEeNkvHw40+Ysf406KxTjkiFHp8G94yDj4rzJphRBFLcsXhk5CisnTIJPcsX0BXNpBMiNASZEIUDUV/ohNOVgwiLldUm8fmfBaIlc4xOaYy7BTzG8lk4kTYdR3LmY8Hrz2Kcy4kUwltj8akaU8kdvkQGLPXXcjoxfeZMnD53BucJhgt+2eAIB5+Lyd5vIAWng58l+H47exb7fv4NVbv3IWejZmY9YIKwQGSGsvEHZk2U9+8Ekb9tqPIQCuqOYGHhNtz48Jv4P64RGOIbQRCpbSjRxFoN+KxChrJM1a0hyhuFETcl4r2vn0Fp9WJsbsnFxh0LUdlACDXPp8OxABMMoF75IfRfB1Gjhgvi8Qg+SVOHV+xaQBCVBoFIEBoARGcpOaLvfpiGIQ6XGV8sAKGEXimXXUO9vP7Wu6ip24KCopJeN2Q7omD4BCs4oPVxTb0gYrDsJ8HIckehAflKZX/2Xwki2zEEv2bv0z/4W+cVul2oAtsHfs9w0Amn4M+6uMKDKJ8QkkwBgSAK/rtov5y8vpLrTc/MQGFxEcorK7G7YS8hpLakDrS1d0IjZGRk5SBJ7UUxDhZ01ElPIIo3Y6gluBMQzxvTGig1HiMSEvD500+iiSD6adlsnKYTCQedcDqz8Lte/b1BNJeaR6c3j8eYC6yai5+zZiLv0+dwZ+xgpHpiCGw3IgVtVV0SRqbaRsMgjRvH+7KWdzIIoAu9smERDjYXk73fpSQgyR2dZnH2BANJ8/7jKKpopivqRpYZifvfDSLJSlIglDftQy5/k+yKDjz+1iREJN+M69xDMdiXgkhe6yYt2+vmNa/7QKPes5AW78TQ8UlYkP4DynYvgdVJdR7K985lsJfUMdWCSj8ICTx/GYhmE0RzCCFLOrcAiNTJWm1EdrVcOEfEl/SYNmsuzHQBqm/uhVEwiBKhOS4efeIZFJesRabcShCIgsETquCAdg1Efy6Igo/x5+jPAZGUSwBqKXe0sbwMewgjuz+WMi6V4PDu+x/CjObNG88M98MAq9ECEjyJBkQq9Ud41X7kxL1jhmMHQbR/2TzTydMahDSMNEo2l+fNaNnfE0CCkaVzC/zyv2epP4jOB/cZ6ie7Ws6qmju/dFofXQxE8Lf/aJDT89RZPj+7ZDbOLp2H08sW4NSKxdQi/Dx/JjpnfIMVrz+Me+L/B0lD/h/E+2IQpWoa/l66T3WPxvCe1Mjyjz31FA4dOWLuZRtC1rrVn8jupDqQ/iiI1GakipfDv51B2Y5OFFa1IbtmH4FzwMge+uffAiL7O5rRx6t+pA4jv/YwSuoO4vsla+AadR/+r28k/uNLxmBe85GEUEysh9e/i3HYw7+vhr3yYLDrBrz5yQuo3lWAurbFqGTQr2hg4N+r4C8IzUK5puYmVIKhM5CCIfS3AREvOb5kXbBpmdlmXDDNuaO5dMyUA8rQYFDQLIEmm4nLpKEjsCojG7mFckTFfhUy4PQPXjZorgwAv2cfW9rH3v+PKtzx+ysYNJdSuP0vrXDnFlDw730xhdv3z9Ulzp3XRlFJKTZv3WYApP5JPfsPYP3GTRg7/ia6ngR/e4flgnw+pSdror9kuJKTEe2OxgifAznffo7uzOU4tmoBXdFMajpOLpqC3xb+YHSSbkVD/Whw07N87xx1hq+dWUgtIGTmEzDUeb/M+gLCRR1ZTfr2D2YUhTNm7LiBNBlnltmaEhAhJJ1bqs+V05nBY1k6Z+Cjtp85OLdsLs7x/M+sXITTq5bgxNJF+GnpQvyUvgyN82dg03efYe5zj+KZlHiM8kbB4xxi5jFy0xFpYFiTZUhwm/Y1p9vMT6TMRtVsnL1wnoVLDfKjWz0AooE0EIiCFQ5AAWmooNP8XGXSnccxfuju7h9RuqUJOfXNyKjtREaNZmoNuKJ/qqxpL+yRx0NgRBAX1R3GkrytGHvvK7jeNwaD40dQSYiI9yGKEFI2nENLut4oidf7yFuGIW/dEtQ1F6BcY8UJPAKQgZANCl4zzdMJFgLByAKTEbdRRtwmP6ykMq6HguaK5IdNOG1s5rKFTq2Zrm3PQuztWM3r4jA5o4T/MxQLL+YKvYDjdrICLzMDIqEonSVcNQ5rjiDTgYrQEYQsEKnu0notNjEV302Zhryi1ddARIUDzkAKt/+lFe7c/o66+LnLAWfytULCaMu27QZGqp5T/6O33nnfgCie15ZG8Pbw5lSVkyc+xfSb0PxISUOTkeyMxudPPY49aUvRTgdxcPFsaiaOLJ2Nn5bPxY/UTyvmmmkeflm5wNKK+fh11UKcWKG2pXn4bdl8o5NL6T6o09QZPj/H4xktm4PzRrN6dW7pzH7qfZ+ffX4pt6cu8DgSeEwsW2x0lrA5mU6Xk7EEZzJX4Ge+f3jJPPyctgzdi+aibf4cbJk0EUVvv4U5TzyG10ePwL2E7k1RN2DY4OvhdUTx3vPw91Eyh4vS0FuaC8yCUWS0A6++/iZ+O6Xx5Hg/nw+AyCpi2kgaQATXxZzRxUAUAJoVYAQi5UbtO3EKZXvbkVffiKxazdj67wCRNcirJattSOPuHTTK5fOcsk488OIXiEy6GYPiRmNI/FAMTkgwIIqk+9F0/DF0QxpTTh1WYxJcePvTV1Czuxg1TdkoI4h6IRQGRGW9EnxmGQVAFHitD1R+j8IAyFYoiPZ0XgGI9Chdt86Mkhzl4AUvENERRVMxhJCDELJ7+GoW0JdffxsFJWugaQguB0S5BEQug5AUPmAFyw5efyaIdC7BYLwchTt+f4UDzkAKt/+lFe7c7O9zpd/pvyn99qEKvN9bJct1jbqxhc6ouaXNDLxaUFhKV3Qz4hI0mWAyXZE1x4qbN6qLciek0iURRh4vbuKN+ty40XjjpjF4n3pvwmh8fvct+Oq+2/H1/Xdg0iP34vtH78MPjz2AqY8/iBlPPoIVr7+IlW++gqx33kDJx++j5KP3sfazj7Hh809Q9vmnqPv2S2z++ktsn/g19kyeiL0EQ8sPk9BKdUydjH2zpvdq/+zpODBnJg7OnYXDhMjh+XOpeUbd02eic+p0dEyZisZvv0fjxMmo+epL5H/wNjLffo16E0tfeRFTHn8E704YjxeGD8Wj8XG4K4bguf4GjPq/12H4dddjeGQEUqkkgtfrdfOe02R4LCDKDQlEakvzshTtdGH8TROwc/cea2DScwKRxoILBpH+LwXBJ1R/FEQMMOcZSfiqqZ47ehbYue8oira2IquGIKraRxFEVQzWUp/g/c9QJh2PLbWN5VBZFd0E0H7kVx9AXkUXXvl0DiKSbkJU8jgDoYiERAxJYGEi3ksQeRFNGMXEennNxyHS48C4O8cib/0KbGkrZVBfhorGAIhUDRacpWbByFbg9b7b/EkKA6BNTXONNjZz2UIIGRAtxp6OtbwmjvhBJAiFBZFVW6fHroYGjBp/IyIdypqz2oXUm1cSiKxhxy0Y3X7X/UjTiAYMIJcFoitq7wkObOHev5j6Br9eZRdYuqLAHe74/RUOOAMp3P6XVphzs7+P+U5h3r8KpD5IO3fuRqcZ4qgH733wCWKcViHImvbcApFTMNKMrM54xPOaHOaNxSiPByMc0RgeE4lhdAzDtPRraEwEX4vk+1EYSY1iMB/F10fy9bEK+E6n0a0uF25zu3E7dS+D+r10GQ8wwD/E0ukj8bF4MjkRT6cm4pnUJDw/PBXPD0sxeoHrL40ajpepV8eMxOvjxuD1sWO5HI+XRo7CiyNGcrsReMgTZ/QAg83tDCzjXU6Mita5xPC8nDzPGKQ4YpDqciOF5zDU4eb5e5AS40a8wwUfz8/pUXsBS8mm2ob3pc967mUpWm5INRiC+6nTLGkSQhaI1O4bgFHgcREYhYDIHsrnYiAKuCHuxyiiIu15/lNO1HF+VPuxs1i3t5sgakVmZTddwQFkVjBgmykjwgfzq1karkfSwK85lfuRW9GDQjrB7E3tKKzuxrvfLoVr+F2IShyLCF7PERodgdfX4FgXoggiTYUfw6UGNnXEueFJ9eGbGZ+htrEUlQ3pqGxaSgBZyQm9bTHhIPFXqB+EJIFoHkE0jyAiMJsXmPTyPR3rcPqCQHTKAMj+FxZEupSOHj+BV958y7QRCUIa7yu4as6ASHX4DBLJw0Zj6sy5KFD1XF4RAfRnVs39EQ0Aot+lcMfvr3DAGUjh9r+0wp3b1S917t2wvgyNDc10RQdQsno9hg4fzeAbx2tM15nmLxKMUqCRhhOSRpk2o0Q6o1Q690SWHOPjfIiNi+0nn6TBUz1uS24Gdgb7WAb3WEIgjk5CwV6Ki3EiNjoGPkLCFxMFL8Gl9hiPOxJuWy4to3qfe8w6tzWia3HHwOvhMehe4nhecXQvHsLOfCahqaWPy1g6uliCVKnpygTUqBIa0l9zybjcPnhdPgLIx2NranYGJ36HaD+E1HagRmyHwCQQjx2H2fMX4CQhdPbsOfx28lRv+5AtYaYXNhdTCIhCNRCIevc3EcQKLlpTs/SPDCybu39Bfn0bsio7CKL9BNGRfzSINA1GDr+nxtzLq+xCEQFUyO/+6Q/pcKXehcG+UYiOH0boJCI6IQ4RqopLpLNVG5FAlMC/e7yLzigaT7zyMNbV5aG6MZdOaCmqWhjYg9yQCf7hIPFf16wg+PRXoGqO2rOIIFoTUjVnSVdKWBDpsWR5Gkuk8XBoOmifqubiLRApUYGBwQKR1Zj80mtvEkLFDCoFDCqBRnOTWUXZIArOjgsvO+AyUGtonz5B+GIKBx1+Zh+XYAMweJvLVejn/Z0U7nyvLglE+bmFKC+vhJl3qqMTL7/6uqmC0zUWnzyUEFKHPhWANApDCt+zxlaLS0yELyHeOANPojUBX+9EfKafTTwDvaaU8I8MQqdjBu1VeiwDvFNZeKreotyxlrPwaPw7AkzTLUvOWJ+pq7cUS8URBJIAwoJaLLfXuSrTlGBx87mLx3HLrcSpasWNKKXfms/jZ5kEA26j+4v76Z5yxPGe8ssl+d9XR3JNMKh03mhCR+fm4nk4uS6NHDMOK9MzcFrOhfetmTOIELEAdI5osP9dokrOr2B3YyAzAHyCFbxP8LH0mWf4sSep/cfpirZ1ILuyhQDaZxxRetU/FUSHkVN9hG7oEHLK96OollDa1IKJ8wqQMPZB/F9HKqLiklmwIHB4fWhqfBU0nJpfiOuSO5kxlyAae8dwrCyaivqWHFQ1LUelOq0ywFcw0PcBkb/PzqamP6HdZyD1foYtfS5dj3FA/vMwcLLeu3QbURgQ6RKyQaTLSFNSjxg9vjd9O0ajKVAO3Ry8eUwnOkr9iW66+XYsWbIShQWlDCwFfyKI5BxsBQffUF0JiLQMt/3FFPp5fyfZ3+dKv9PfSErR12R7Wbmo37zV9C9aunwlkoYON4HYw1KjO4EynfrUeZPQ4XNNQy74WOJzKhREBkYChaqvBCDe/NZYdrzhGdwlwcVKF+d7CvQhsudMsqSCGM/DJ1hY1YZeXyqhOJTOi0uPnut1JVhwOwUWgkT9ogzEeA52arogZB1PBTtLBkIMUvbnmWnUub8UTffm5nMlJcQnJOH119/Etu07cOos3c95uh4GfAtAkhyR9X9bwZAYSMFQMZD5AyBSJ1qNtCB3dvz0BVTv6UF2RQPVY9xQeuVPYQP51a1DJjEho/wAssoPoqT+Z2RsbMNb3yyGa8Td+B/XMETT0Ufx7yiHG03XbK4LTe3A6yFG4np0nBcR3hh8Ne1DbOvIR+XexShvmOvvDzSTUoJCMIhsEQKhAPlTNJD7CQURtxUMeR4bm3kuPN9ynWsviA6RM7/yalRvM8kGkd2PiJeO7YpUdjr6ywm8+c77iHHzBmIw0E1hZgbUjeG/SQQiTQudwBLrl198i6LC1WYKiYuBKFj9AlJvcPWDqN+gpwMpXBAeCEQX22cgBe/3d1a4c786pGskMzMbRcWl2NPQZMYw1GgLGnsuyu3uBwe5DckGkOT+S0HEpaqtufT6/DDi0udJ9oOI52SG3uFx/SBx9kJI0rGsAp66RNhAchkYqQ3Wus9MWrbbgyiHE06XB8NGjMIbb75tBsnd16MBJIFTZ84aBdqELAipMViJA7aCITGQgqESDjrhFLxP32PRFdGhCUSaVnx7yyHkVzXTKfQwWKs/zT8LROlVB5FZQwBVa4K7gyioP4JV61vx4qcLcH3cBPwfxzAMiR+B6z1xiDJVsYSQnJAcNv/WptkjPoVw4vPEWDz3xovYuLkI1Y3pZlqH6paFBJH6AP3NQeSXmdm1VWniAtF8gqiE6DnIK1EgUjtROBCpNEWZTBsuz/Cq3lhRhYSUVFNdERhhIVCtYM2hziV/2GefeREZ6erQaE37cPkgCgWE9GeAKFT/VBCFO9+rU7lUBmFkz/g7c+5cU53lZgnRVGdpSbBobDUzvlq82o4ougMbRmoziSa4HF7u5/EZCAXLnmZCx+qFQhwhwRKoZGaHNeJn9YOS/dkEB699DUIpGLm59DCISF6PloSf+kKZz+LxfVabjqr47M+0gahqPd1TqnlQoU81DGqb1fBGEQ6HcUHjxk/Acy+8hEmTfzB9r46f+BXndZP679NTZ3hLn+UtfY5B3x/4LRAJSYF/wZAYSMFQCQedgRS8X+jxdBan+bRl3zEUVQtE3QTREWRWHUVWzZE+yqTCBfm/Sn36/PhldcBVynmwrE65Aen5fmTX7Ufe5v3Ire3B3LwtuP3pT/E/hFBE8gREJY7GkLgURPJaitZ1ob8//85WHOV1FaspHjRPVyySx4xEzupCbGmqRNXeVYSRNaDppUEUokulaPdWsWnbMO/36i8GkaQLWzb/0E9H8eBjj5sbQkOH9AeRXwTRuLETMGfOQuTnFV0D0V+qcOd79Uop3Rq3sLK6BmVV1bj1rrsxJDrGBG0LGmFARBkI8f0hMQ5E+BXJ/dTJ0xGkaLoLIwJLTkuK9kqa7ZLbmF7sApM+i9d7qEx1mkqvFjx0P/QHkQ2+OGiIFvX3Uaq14BhD6bMFS0nne/2QaJOhqhqG4aPH4fa778OTzz1nBh/WdCo7d+/G4R9/ImwCOCFrGOS5zhv1rA0gFSL7OKL/HRCFSmeh4cN6jpxCMR1RblU3sqt/pHO4ukEUeJ+qOozs2gMo2LoPS9fuwPtT0xB/y1OE0I2ISL0ZgxNGIjJREEowCQlWVpzaJhVDLYetbgrRvIYcKpwkxOGBpx7D4qw5BFEaapqWWe1DfUA0G2WmGsyCwMbGWb0KgOHvACKe894F2Nu1mthRG9FvvCYGAJF9KfLSYcmKpt6UrC5g2syZvOFYmlP1nGSqNwgjSvXVkjrU+XgTvf7G2yjUKAumnajA1Ptb0wZYyhGQjBh0NBRMKBwEHFu9bUO2grbrJ/tYoVJwC35+OfuEU/B+/5sKd259A/nVLBVYNHdVVnYuCgqLsW3HLnz02ecM5nINsbxRLQgIQk61G/kTGCwl4vFnn8eMufMxY848TJk+E199OwnvffiJGRPxtTffMXrp9TfwzIsv4bGnn8HDTzyJex58AHfcdw8m3HErxkwYh1E3jkXKyGGIT0lGXK9S+DzVr6FIoFTt1lsw89D5+OVxUyyYabBWVQV6CaI4BpWk5CSkDh+OcTfdiNvvuRsPPvoYnn7hBbz61tv4/OtvMX/JMhSVrsGW7TvR1tmN4ydP4YyG5+E9qYeWpoMqYWNe4//M+HFc6jW7jei8eU3b6B/BEiTrKJeWNUhqf6CEA1A49duHy1Ms4R44egYbtnYZEGXV/EjoEEZ/ExAFg6ePCJxVlQe4PIDs+sM8Pz3fj6y6H5FBrao8iOyan1BQdwx53Oa7pSW47en3EDnsTtwQPx6D4sdgUNwwRCUNpZIQlZCAGF4PTrluXstmQFN/layDzsidkEJAsVDFQs8gdwwSx8big++fRXGtpvxejtp2OiONsE0QbWqYAU31sElD6hACZqDRBgb/xplc18CjgkcADBZ0QmUDRQr3frCCt7UVBCGjwPZqI9pIN1Rm2ogWEURrDYjO4SSvRvU3s/qciTxhQXSOF7Iuel2W23Zsx40TbjJ19VY9t7J+rGoFjQlm3Wz8Yd1e3HTzLVixMo3wkStSFV2oLHdkSUE0JNBetgO6HNlBOtx7V6v6B+9/kvpeH/mord9sugEoM8xhUrkFIoo3qsOAyBptwbSz8KZ+5Oln8dPPvzDoWcFZpfCTdBHHT57BsZOnjZTi/POJE/jxl2M4evw4eg4dNOrc142G1kbsbtqD+h1bUF1fi5r6er82o2bzZlTV1WFjRYXRmg0bUbJ2vaXV64xKqdWlVMlaVFRUoqqmiqpEPY+1Y+c27G3Yi5a2VnT2dOPg0aM4euJX/PLbSZw4rZKhhQE9tDzN/52iTut7CEAGEHzB3miAR/DYctYdHazLe/zpIDrPci//GD/9eh41ew8SRJ1+6Pz9QZRRewiZdTyn2oNYUdnFbQWkH7GSyzS+l1V7GLnVRzA7fTuef3cOXEPvwP8TmWiSEgbFjUAEIRQZl4rIhGREJSYRQoSMyabk9evvI2eGrlK7IOVgoUrXdlR8nHFOkQnRBNj/xW2PD8O87M+xYecyVBFI5U3zUdO2CBv3zjbzD1Wq8+heAoggKmuc0au+IAoGxn9fypozmXNcD4DoR17Lp3g18rrwS9dmb9acfany8ukFkdJAfz35G958+21TVz0QiOSIpLiEJHzx5TcoKChhYFGigJzQNRD9eeofvP9J6nt9UPmFqK6tx1PPPGdVgwlG8WrMDwZRCjwsRXqTUhDl8aFmy3ZzHSuT7DfpzHmcZGlcgd2IgV1LuY3g1gyFbingH+QoAq9b7wV0+Q/LYYQ+7OOZ6nD/+hmem57rPUGUp25euxIQ9X3oqMG6vMcfBVF/cV+e94nTLNi2/oQ8AyK5i6vAEdUcRFq1Rg4/QBgd4Pnt53IfsjYfwKL1Dfhi4Wo8+c50pI5/Bjc4xiLKNxLRccMx2E33Q8hEGyXzNYrXrkCka1cOyHTUjk29KIiiEhh3U6MRmfgf+EYPxuufP4aS2oWoaVHH1mWoaFpMLUAFQVRGh7Rp73SjvxuIKvYuQkP3OmLnJ17LGgCK10V4EAX+2aWqc5qylQ9Nlx3HH0cj+9r9MoxU/cDSqORmkHC6fHj+hZcZVCwIXRaITFWcDaA/E0T/RIUJ4PaoCn0yBK9u2dfIqvQMbCyrwNz5C+m6E5GYOhyxCammJKkb1waRl6851c/NHYePP/uKV7BAdME4o1O8zo20Tp32D39jjzygIK85dDRq9FkzTlrgn0aR1qyjZ0yhzNJp3hNaWmO5WSCxw3x/RuhVGzPBCk8Twxn9z6wThvwcyb4f/7qHPqvvOf9eEFkdYbkvf4ZfzwC7On8miDoIHTqN2r4Q+juCaBVBtKqa4Kk/hByJEEqvasc3y0txxwvvwzHydgz2jUakeySvv+G8TofDE2tN8W1nWKpvmOBiy1QrGzfkv479S1sOAssRz+s5IZ4wiiXEPHAmujHYez3d1XW45cERmJPxDYN7FiobV6K8YQE27plOdzQNmxpCQTRQ244tVa2pnUcK9/7v18VBFPinx/ETxwYGkS5ILY8cOYJ7738ANwyOgEb3DQWRIORys8RKEI0aNQ6zZsxFfl4xsrMVUGwICUp6rkAjEURhIWTrGoz6K1zgViKIrXDvX33qLazkFZhp5zVS9/0PPEIHrkw0liT9nT6DHVE0HZOmQ5hwx93o3OdPayYsTvE6t6R1Gz62LLdhQ0ijRgeDyHpdadECjyQIaTu1oXJf3htyKjyUUV9U6BVByCrx9Vfww7rXgmXfg8H66x76rL7n+2eA6CR/ij1dvyC3up0QOugH0eE+yqTCgeK/rXAQklbpPDcfQjaVUd2NvLr9mJpZgaH3PYPrEpIRmZSKGILESfAobd/HpaUEuBUbtSSMTPtmvGSByeVL4T5BrshU0fE144jknASiBEKIzorHiGSsNePPJTgxxDsICePceOebZ7F261Js2rPAtBeVCzzGEVlTMZQ3EUYDtu3YEohshXv/9+t3gYiXeuCffeHzPw0ZouXceQtMPwYHZVfFBbshF0ujaqx1OLx48413TQk9O4vB0V9aD0DInuvGBtFFFDYY/5slFxmq8MH8apYNInuoKE0P8dnnX5n5djQit2ngVR27P1FB65rBUmmvicNHIn/1WnN5W/A5b3TayA8iXdcX1PBPETSW6IYIIlWC2ep9T9sZCUCEldlW79m3UnB1nv7p020IBUAU2Mq6+axH/6Bvtg0CUO/9+Jc9+p/TnwGi36hdPb8gq6oNaTUHzIytanPJpOuQQzIuybxmKzw0/hsKByFJ7UBqJ0qnK8qu24dFpdtx53Of4br4UXAOHQZXsgpDSYyHmtY7EV6l7lNxsZq6JNEkrphYqe4AaktX/zP1M4sbjoSUcYhyJSLKLeeUCk/iML8bUjuSX3wuEEWpu4CucWWGumPwH+dgRCdG4L7nxiN93feoalmMjbvVRjSHmkcQLTROqayP0wmFzaUg9cc0MIiUpBC4G/ToA6J+D75kV29v374TN46fwB9bbkjpqhaEAjCy+lPExHhx2613YeWKDOTmFBJGeWYIFyvI9J0Irn+gvaYrV/9AfjWrF0JcV4q/HJGmn5+/cDGGjxyFWD+IjHiTWrLAZAPp06+/wbHTp8w4ZycZQE8zIPY6GQGEl79AY7d9EE+U0kgp+7U+EgiCg/Fprmt7az8bXJasfwEI9QVR4H09dM/ZErj0uv3c2sda/6sfwZ8fUP/fxf49bOAMJG3HvwW/4u6eY8ioaMHKmv1YpYnyGOA1NURfEAVSpMNB47+pcDASiNJq9iGnrgefzM6Ga/h9iIgdDU/yMFMt7I0fCl/cUNOx2aNUfg/B4kyAy2nFRtUiWUNIJSLSEY/4lPF48/2JmL+8APc/8TLhMgyDXHRASryhw5dsIBkoxWkYoHjT0dWWk5CKjnPBkTwE4+6Px9ysT1HbarUbmWSGvcuoFYTSoiA4hEm1/i/CaGAQ8ZoJurL0uDwQcfnriZP49JPP+SNrrC7LdgYDyQaRyxVrSgOffPyFyZ5T9ZwFIikbuXlZlJbXHM+fr/DB/WpSKIiyeN2oX5Gq5x557Amry4DpKEr5R1dwUfZNe4PDifF33IGOQweJCAtEZ0y1mwBkKtx48TM4GvnhE6yQQGvJBpEFofPnT3HbgHS8i6v/P+thB3zbPWlpy75Nw9yX//WHfV59Fe63uRSIrPflLulQqT37jiOtsgUrqi0QZdT0UPuQVXvASCMT/P1ApOV+5Nb34M3vliA66TY4E8fBTQfj8YPISxCpis3pIUCMVGBKhS+Rr6nLAcEy2BGL0RMewNR5WSjctAvr6tqQt3EH3vx0CrzDb8V/XCmIjBtmBkONJpSiVeXMwlVfEHHJuOvkNR8T76ErisINsf8vUm9x4POZr2DTrnRUN2WjomEVtRJljYuD4BAGRMHq3e7PkQUi6zMtEK3lVX7Efw8Griw9ekHkf249dB2Gio8NGzYRMhZ81Ik1nDPyeOLhJZDuvechpK3KRlYmQURXZAUaOaKA+gfSa7q4LuUi+wb1q1U2jDTtfF5BITKysrFm3Xp8+PEnVqamH0RmrDkjOaEk3pxJiPBoLpc4rKksN9csw6GphpMbMn5FAbQ32Ae7FlvBt4hf5vrX/xR8BSs6IgTLfIpRfwhJ1r9AZYSOq4eOqXX7XOzzkuwbz3z4X/ywz2tghcKoP3wsWa+pShP4jYfd0n4U6ZVtWFHVjbRawoYQyhSETPWchsixIfS/A6JQpdOhWdqPvPp9+Hh6JpwpdxAGo+EgfEyyQZwSaNTOkwqHLxlRyohLHkFopGKIjy6I28QkjcRTb3yMeavWoKCsCfkVbcgtb8WaLftQUNmMSQvzccfjb8Iz/DZc7xmGyIRR1AhE+JIQzbiq4dUC4nMCyZkQC02YF5UQjUGx1yM6eRCef/9hFNcsR31rPjbuWoqNexcYEFj6O4LIur6Pnzh++SD65efjeOCBh+FUYgJBZIYxCQWRl6+5EzFs6BhM/n4GCvKtgVCtIHOtau6PSb/hxX63vgH9apXtiNQ+lK11LvMLi7Bg0WKMGDW61xXZY8qZQVH9IFLJcYjbjY+//spUzTEMmgteXRKEIAVO6xawg3+oArdIr8z1r/9xH4JICnZR9r6XA6LAcfXQMbVuwydY9o1nPvwvftjnNbCuBETnCSKNwn2MP1PZTg14ShBVdiPdgGi/5Yb6VM3ZUgadrfCg+G9L6dsmdZvAzKvdh++XrkX86AdwfXQyHLEp/qw4dULV7MGpJmU7Mj6FcBiG/3iTEJk0Anc+/SKmLM1CzqadhA5dECGcV92DnJpuZFd1IIdQKt28D4VVrXhv4iLEjrkfg+LG4QbfSAyis4piwd6hrFCvNdanpOtcTik6PhYRsSx8EUqDfTGE2H9w//O3E3JzsaUzB5saBCLBwJYfRAY+M/xLZdb9+VV0ARDN84NoDe8GdWjVPWGuIkprVwCicyzSqL10ztz5JjtOWXLhHJGSFjTMSTz/KM8+/TIKC1abYX+sIHMNRH9M+g3/HSCSMrNzkJ6ZjYKiEuOMlM5997330437CCJeZwOASFUY9z/xOA798gsDoFXmEoSkQDBVsA8GkC37/SBpN/9R/nwQXeo8zIf/xY/g3ym8LhdEkkny4CF//O0cS+tNyKxqw6qqHhPkrfYhuSFlzQWnb3NpBkY9ag2O+r80ZUQwiLJrec6bmnDvcx9jiHckwUAA0bE46Hxi6I5i4ofRwaQSICkYkjgCo+95DB9PmY/0DVuxemsXcgihtA10QoRtbi2/LwGcXXeAgKPbIpiK6zV/USumrdiAO576AIPjJ5gpI2I8qXB6leRAFyQnFEsnZEAUb5IYYtRZlkCM5r0Qk+jFYLqj2x4bjkX5X6GyeQXKmhdgQ4PgQAiZIX8EoOnW0gDIhlR/mPwRaYbWjU0WCCv2LvaD6CCveLWrmquI0lowiHTt2Qr38L/X3NRqkha8nljE8kfwEj5GhI/kdsUj1ptsQDRm9ATMmRU8/lwAQtdAdDHptwkfpPsqdL9w21y9stuI7LEJBaP3P/wIGsfNdB/g0gxgyhtQEHKq5zqhpHr0hBEjUVZba8K8Ll0bROGhEF7BwbaPgiBkFG6bS6j/5wk+4V6/uMIdWwq37eU/9IuF2z+MlA4XJPvz7eQNrWtNnYg7j/zGUn+jqZpLq95ngahas5keNmPPZVf/ZJRldJT6hTpG/Wy9FtIBNhw4ghWuvWcgBfazqwWD5AdRJh1Mbl0X5hbW4p7n30PcsAmI9g1HpGc4BrmG4noXXVHKjbj5kZfw+cwVWLmmHiX1bSioPkDXo/mJjiC78jBBfATp5vyUBKFjC8Z0hYRzjqYTJ5zS17fina9XIX7Uo4hwDEeMeyiiNUs2gSMAWW2iakMKSEAa4nMjOtGJ61z/g+G3JeKHJe+b5IVNe+ahrGEWypunUVOtZdN0lAlOjQspAYNQCq6qC1F5k6VLp4RbkhuyQVTVsBi724vx6+kuXQ1U4J8egTYiP2iMBnhoxN+Tv53CZ599gRjNZskfJRREPuXGE0ZaxrOU8N67HzOo2Onb10B0eboGIskGkC21GU2ZNh1Dh480IDJACgKRgyCysoxYMuR7U+fMwfHTasP5G4IoJIAbp0X30O/1ARTumMHiRmF0uQ/9YuH2D6MBzksQCvxTCj2wq+0I8sr3EkTtBkRpDNAZVQrAh/wgsmAk6GQb+NgSlP73QZRR08XP7UBOXTsWl9Th48nL8OAzH+LWB17FvU+9j2femoiJ8/KQsW4nius6UFTfgdKt+5BPZ5dTcRTZVFalHN6PBNERk76ufkpyXMZ1+T8vkyqu/wmZ6zvw/by1uPeRt+m+xmCIW1l1dF5qc4qXCCBVA/K5JV77CRpUVe1GURgSdz3ix0Xg2/mvYtPuJShvWGQm0xNMKuiMKpo1Rh2dkCBkQESAhAGQrT8EosYl2N0hEHXyavgjIOLr5+Sv+aiurkEcb3YPXZGvF0R0R0YWkCS1Fd1914PIzGAQ6W0nUpC9BqKLayAQ+dtOemVvayv4vatfoSBSW9Gq9EzcdsfdcGkQVF8cNBOqmZaBADIwMiXFRDPx2KPPPIsff/7FjKagy50h0n+JW/9MIL2IggN7H9G99FG4bS6h0ACOC5cPISncMYPFjcLoch+X/m16pc+SdE52tRyfnzMS8C2v98tvZ1G1vR25m3Yjq6ID6VV+EFULQocNjDIr6Y78bUMrN+1HesUhPiecBCC+ps6uqrqzgPQjtwsGSH+FA85ACuwXAiGdIx2LBaJunkcXz6cTudUdBEwnijS30rpm5G5sR0FVN1/rQT63lXL0vO4gXQ6/QyXhSmVpMkA/iKzPtpMhLBkQaapx/hb5/E1Wayy79c149cMZiBt5F24QjBJHEDipVmYdFeV3RhFKYkhMQEScC9FJMRgU+x9EJf5fxI4ZjHe+fQLle9JR3ZyGyualhJCGBZpPsMw3MCrTWHW9s7tqaa//URBZbquSjmhXeyELhm28ajToacA163rrHeLHXDG2Qh4mfZXXnO4Bweg3uqKnn34WTqebEGLJ1MgCkkYfjlUPY08SPK5EDE0Zg6+/mmR1cM3O7ZUVbEID8DVZGgAqZhifYBhp26D3/2EKBZGUV1CMF15+HWYAVK86CNr15nZ1hSX1J0odMQY7dzeYa1jpw1LgoSchQTVE4QL871EwQP4shfucYHGjMLrcx6V/m1AZCJ09jXPnTkOjUKhtzj4L9R9q2/cT1lbtRkFZA7LL2wmibgZeBtzaH5Fb8xNya48gh4FZMiNcl3cjrbwL6eX7CKT9hJTck9wCQeR3TZdKYgiFzcUU2C8ERAZCNogInWpLubUHkM/tMzfuR9bGg8gtO4y8Kjo+jRbB/bIEEwNZPq8SaLUkQE27VzCIgj/bDyIqhyDKpXIqDnBJqJW34fPpmUi95RFEJo9BROIwihAikCQ5o8jYRETExlFuRMRHUEMMjBypEYhJuQHvTnwBZbuz6U4yUdG4jKJDIizKW2ZRgo3dZuSHyZ8GooUmWWFHay5+OdXCa0Ig4vXil66SAIgu8rBBJJ3VSIx8rFqZTuAIPn1BpOo6t4vP6Y5ior1wOnx45OEn/H2KroHo8nQNRFJYEOUX4cuvv0N88jBrIFQ/hDQqdzCINKW9RoxfmZZhrleGZ6PA4xqIBn5cOYhMUoKB0BkDotM8R1XA/Hb2rBn1fNveLhRv3IXCsmbkV9BRMKibAUTpOLKq9mP5ujYsXduMRaV7MK9wB5as2YtsZZfVMZirDaXa2rYPiExQHxhGwaC5XAVDyEpUsEFkKUtViQREpkTHJpeTU/UzXd5RpBFGqyq4j2ASNI6eOR8dX+C8DBBJBmSVdIRGhFHNARTW78fkZasx/qGX8J/4YRhEAAlGZmTvhCSCKIGKR2Sch64omiCKwuDYSMQku8wo3tHJQ/D6Z89i/bYsOqMsa9BUuaKWGShvneYHURBM/hQQLTYgkiPa3pqDY6eaeVX8ThDpYYPIrp5raW7D7bfdGQKjWPj43GMy56yly+XD8OGjMG/+AhNcelNzjUID8DUNrH9e1dul1AdCOXTUVF5BCZYsX4VR426Cg9dXtIaXMmPPBSCkMb1UZae5s157802cOaN2HBamlPbJi/5SCg7owdlfl6Pg7LH/TYWD1+U/+v9O9m+hpf6pg/B508FXWXFncebsGZzh52ouM1XJnTh9Cqe51LBKLT37sKluD9ZUNKJwYwNWlW7H5KVr8O6UlXjqo+m495XPMe6R15B42+OIu/lhJHCZcOsTeOi17zA3dzMyyjuQWdXDAB0Mop8Z0H9/Np0NgVWhMm02oVIbTl8gGWDQ6ZhjERaSXW2okRiCleY/tg0iCz46bwtG9jllUpZ7kggzykBJ2xCAGZVKZujB4pJtuO+lDxE97EbcQCc0hCCKJIgEowhe95FxcVSsgZKy6eSUouLjcZ1jMKKTovD8e09g/dZs1Lflo8pU081ERct0Qma21YbUKz3XmHV0TH4I/T4QLUJVwxJsa87GLycvASKr1tz6F+5hg0jSrJCnTp3B99//ALfbaxQMI00KZksDo+q1l158xUx6JjcUgFG4gHtNA6t/sP4nayAQZXH5wCNPEETxdD7qx2EN79MXRJpqOwYTbr0Fre2t5hq2WoourWsgCg+ic+fOmO9oDQZrjVYhB3SGr58m7OWCzmo4H+6hh6aw2H/0F6ytrMWsxRl474sZePiFDzDu7mcZEG/Gdb7R+J+4kSzdj8D1CSPM8rq4VAxKGonBSWPxfzxjMfzul/DtkrUM0l2UnJH6Gyl54ZgFIn8Qv1INBKKVdQeNBCR1uJVsEPXCyLRtCRKWg0knJCT7NdMXqg+ILJnP7IXP5YNIDktAzBSIK/fTKfZgxbqdeOnzaRiSMsY4o0g6oyFxdES89pW0EBlLh6TOtb4Uq28T3xvsdSI6wQVXqpPO6Hms3awhgdKMK1LiQnnjXL+CYUT9CSDSVOdbm7Lwy28C0UXnIwr8C/ewIaRrVAOhauyo7dt2YtiwEb1tRQKSz2eBJ1hulxdjx4zH4sVLkZmZjZxs2xmFC7bXNLDCB+x/qsKBKDevGIXFa/DNpB/g8hJABJEmxrMny7NB5GYJ0KXZURMTULqmxFzDakAPDbDhdA1EA4FIwxtZANKwSadVFcd1oUdH1xxPJ+mM9v/4I+p37sSyjGw8/+pbuPGOe+FNHY0h3lTcQA3yDGUJfRSikkZhcMJQ3BCXzCUDaeJQDEni+wkpGBQ3FJEpNxJM4zH6wdewuHQncmsZhBm4M80U48eNuwiGy5XockBkSynW4UHkB0UfEMnBEEZBIAo4Kz+MKBtEwec0IIj8+2td7UdZ1ftQULcPxZu78fHM5XSRd+P/8j4YEk9XxOu/F0SURnmIIoQ0v5E6vUbGeQkrJxzJUXjhg0dRXEO30rwcFY0LCJ35/SH0hx3RIn+ywhLU783A0V8beLX8RvF++T0gsh+q3VAat67r06fP4IXnXzKgUb8ip8Mdtt1I1XV6/vnnXyI/v9C4Irmj8MH2mgZWmIDtH93caj8K8/5VrHAgysktNlq6NAMpqaMQ4+INRgXP5WKG26cjUh+jGJcTkyZN4rWqhvRwwbhvwJVCQaTA3hc4CsjBCrwXCgSJJTejcO/9t9QHQLYu+3FxEAXHCm2pyTPbu7qQnp2Djz//Arfde78pGNzgcGGw04shLp8JiNHxApBSkIfBlTQcTk2fnaBqIwZKLRNYomfBQTOZRqhPDJ3Rdb6RGJJ6Gz6elWOmYMigI/gjILJBYCsURMEAUvC3QBSAQbBs8ASrd4SIywGRv73ITmJQ/6LAuQaOGfx5BkSEXpaq6aq6UFDbgW8WZCF2/J24zs3frzeV20rn7p1gz4jrfC3C52PBwIfYEQ489sqtWF1npVdbINLI3bb6u6ErB5GVNVfRsBA1u1bgyPFdvGYEIhVf9E/XpUB09ApBxLeDr2u5m6Gpw+Fx84sROIFqOgtCkhkKne/fc899SE/P7IVR+GB7TQMrTMD+l4EoO7cImVmFWLkqB/fc9wghxAKQV1Vx/UGkDq8Olwv3P/gADv/0o7le7bYiq71Ij74BV7oGov4gMukedD96T7/dvoM9qKqtxrIVy/HaG69j/M03mz5dkQ4nBkU7Eakx/9RG4aM7pdNxJw9DjBrWWWJXHxhXcqrpgOzg38kRF8u/G5dm7DQqkeLfMCZpGG6IHY7/xI/DEx9OJYQ6sKqih8H7KLJrf/3HgCjzikDE41dRFYJRN3IFo+o2/LC8EDfe9wQGewifWPUtkjvSxHqa5dXjBxGfC1BqM/K6+fvHwJlyHZ555zas2UIYtSwmfOSMJFXR9YfQ7wPRfAtEu1fg8LGdvJp+pWwQWddWL4is1iHr30UffPvCeW5F6dHc3IL77r2PbsgBn78azmofCoDISxDF8csLWFOnTjcgUtVcdnZ2r8IH3oCycy9P4fa9uiVg2woXsFXFaSvc+1ezgr5bL3ALCaIC00701rsfEkReuBTseH0paUElcdNmxCDo8mlMRC8Sk5OxY+cuc72qDB+qwJqCNQMuGMwVdBm8e4M7nYCtUBAFA+APKegzLqlw+wepH4SkMA9B5bz6WamuvffB38RfD2+/furUKRw4sB8bNqzDd99PwkOPPIwRo0bA7fMixulAtNOJGP7WDq/PZDCqX5crkcChHAlyQxp+JhnO5BQ6Ib6WaLflMWZQnngqwcelDy6uC1DuhGEMmMMZQG/E81/MRM5mJSzIEalz66UdUTBwQqUEAjuJQLLbcUJBFAwhq71IMLFktRH1larXJGXJ9arPNta5BarmLCkJw1q33w98Tujnmaq7SmXsHaB66IoOYvXmg1iQvg53PvQ8oW71MxpC5xMV76UsEEWzoBCtqjreL9Gx/Dsl+hAZGwF3ajReev8JlNYuQXVTGio1YvdeQqjR6vjaH0SzAqJr6gsfaa7RBoJoQ7PVobWycSGqdy7FgaNbeaedoAQi3XW6vs7imA0ic7Vd5sMqUVoX6I8/HsGnn30Mn89D8SIKAyKldJuJouiYnn3medNOdA1El6uBAPQvULDbC1JWlkbmLsL3U2f0pnHbk+X1SsFQ1yMV43JjweIl5no1s6raMuixbgbrxlCJn4HcjJYQDkSETgiE/nwQWZ9xSYXbP0h9AGQrzEMZhaqyPEvHFlp1qedtbW0oLi7GJ598gjvuuAMJCfxd3S54GchU7emjk5E8sZr4Ten0seb3F4hMe12CoCP5R74wSrCUoFEx1CFZ7XkCEv9eCpBc99I1+RJU9ToC3qRb8e3SIuRv34+0KnUqtbPmfh+IggFkQ8iGTSiIeiHkfy/4OOE+8/dooGMGvx76nmCk9O4cuqNcrudxfXV1FzIKqnHHgy8g0pdK16mq0EDVnD2dhLXUeHV8nQWJaK5HxTnx8vtPYtP2TNS2pJkJ9gSicFVzfUQQlYUBkSC0PghEVU0LULVzMXp+rOP9ZYOIlyWf/TEQ8UDnzv+Gn38hmXNW4MabRiEhkSUiR0x/EPksELmcHowYMRKzZ89lQMm7BqLL0jUQhSpboiNasmwVxt98m3FF/UAUx9I2HZFxRSylv/z6GzjFkr86tVrTg+tWCAaR/v27QKT7WLCR6zH3tMmGPYXW1lYWFjMNfO69915TwHQ4HLyX6S4JEjeXTo+bMIq1QOSvBrVApPY6G0QaiDaF0JGCYWSBSMPRaAZSB2Hl5NJM5UG5tU/cMEQ4hmJw9Ejc/ejbWLp2OzJrO5BW+deAKLQ67u8IIls5dFJ51QdRXLkPZVsPYHHWRtz5+CuIpKMcoupR/o2iE6yRui0A9ZVmfdXcRrEjXHj3q+dQ25SN6pZlBM1cOp4Z/eETrAFApGq5AIjmoqZZVXNLsO8ngeg477VQEP105SCyH2fOHcO+g3tQU1+K5158APGJkXB7CKLeYX6SzFKzFsYRRG4XL+gYF95+613k5TKohA284RUOOuEUbt+rW9dA1AdCmn5eSQtUYdFqPPHks4hxCkR29Vxf6TU5pptvvxudPfuty553gGRGWzAgsm4Iocis+duHFLxNUDftO1cTiHTu/HKh8j8EHfuh9TOnz6Krs8dUmb/z9nsYM2Ys3G43YmJieD97eN+6CCNNeKn7OAFerrsJdy+ho/H+zJh/Qb+/k27GobHQjBsKB6IkxCRJajNKwSBvIgPlCETEDsUgpRsrlds1FNc5RmLCA29gXnY1S/8thE8Hg3C3FYzNqNx/PoiCFdw+E1DgOOE+8/co+JgXU+h+mXJFVG7VEaN8fo+Cqh6s2dyDZYXVuOeZNxCVNAyD6DIHxypbjg5ITtYUGOyO4HKlqkrVFOSD4Uy8AZ9PfRnVjWmobFiIqhYrtTtYfVxSCIgsabigeQZGkl6rIZBqdi8miGp5px0z91pfEP34+0F09vwv6DqwA5t3rMXy9KlIGREBty8SHm8SRQB5kwkiyqzzgvWRztEO3HLr7ViwcBFy8xhscnMDEAkCyt9J4QFhKdTV/flj6P1+EPUdxeIqVBgQSWYKeoKoqGQtvp04mddcvFU951ObQxCEVLqOS0K024f45KHILSwxl73mxlG/7MsFkdF/2REZxyIX5p9m4pLyu5wLQYkSvQkT5j1+uQFAZD9+/vlnlJdX4sMPP8GECbeYNlx1v3C7PXDR8Xh8XvgYtBKSdP/6uB5vZEY+9ysYRB6CyIKRHI4FIzkiyxVZIFL7kJPHi6YiE1IJoaH4v85k/MfL0nv8aESljodz5K0Yfe9zeOfbJVhWsoul/S5kVbYip7YbmRpqR20lpjPrvxxEfmkYITOeHaFUtOUnM6XEmm37sWJ1Le594VXcQOf5f1xODCZsIuMCIHLxvlEVtik8KNHE7aBDikTKOAdmLH8Pm9tWETTzCJ85QbpcEFntRAEQzSeIFhFENSEg0uMPgEiX9Znzx9C+fwvqdxWiZkcOHnxyFL/gDQwIPpaYeEETQG5fspHTTfvOL+5UXyPa9vc//gS5BfnIzMlCVh4DJpWZy4Cel4MsBv9QhQPEX6VwgMjK4nlTeYRpUVGRqUe/1Mji2lbLYHAFgyw/P9+ooKDAyPoMbWfNzxM2WA8gpccXFhbzvEqDshTDb/u3VRgISQZE2fkGRIsWL8ewkSzBKxAKQP4by7q51J+Ijsgba0D11cTvwRBuKuBOnjkbAiJJVc5W++cFNdL7A72BhQGRpfMXCKAghULl9ygAostUWBCpmk2v6dwt+Jw/o+dc93NIDqi7uxsrVqzEY489jgRVjcW44HR64HDR/Xh8iGVQUhKCquDcDFoOuiIvX1P1mxFh1SsDILqkWBY+Vf3uTUAM7/soLQkkd9JwRNPlKFU7ms9vcPlwAwsGQ/h38Y2+GTc98AIeePljPPv+93jvh8WYtDQf8wsrsWrTTuTUdaJwqzLR6II08nWdpmJQsoLcwMUhJIUL5rYEIxtIWoYmBtjJAf1fDxwj3Gf+HgUf82IKt69+CzOUEEGUW3vUVNXlc9ussk7kV7UTRnV48OV3MDiRDpN/28gEFgD4d3PoPlHBTQUHIzpUxmxXghdDPNdh5G2xWFH0PWpbCaO9Vjp3pRkk1YaRDSKN4B1Q8Fh1gYnx5qCa+1btWojuI9W8536h+M9///0hEOnGPXvhBFp76lC9KxP1DRn4Yd7riB9OexcXwy+mhkdd0Mn8wrTpmmGQF6CXdI6m7X/g0UexIiMNq7IykJWfSxjlIV1Qys9BJmEUrCwqHCD+KgXDxJbAUVhYiNraWjQ0NKC5uRnr1683EBJMwsHIBpEAo2VpaSkqKipQU1NjtGvXLuzevdto586dqK6uxrp1GwxQBBar71VIsA4jQWvtmvWoq9vMY+5BXe1mrF699uqDURgIGdENqZ2ooGg1Mgmkhx55Ar6EZMQmpvRCSHLo+ktIgpfBVtfePQ88jMNHf8ZpBuNeEFEBEAVkAYm3ie2M/OtG9vQPtsKA5XJkw6QXKsGf8bukc+6rs6f5OkF07uw5XqNN+O67ibjl5lvhY9BJpEuJ5++k6jYlEllwsd2Ota52H0tWvywjBi4vZTkgus7YZK5L1pTZztihiPGlQlNlR/qGmo6sUXEjkTT6dtx875N44d0v8O2c5ZiXsQ5LCuqRVd6E4i3dWLPzIEp3HjDTLGTWtiGjthPpdT1Iq6cLIoSy6gihmgP+wHvpQU/DKTS4B0DUX5faN/T9/w31gojSALJGfC27QnMg7UdR7QEsLqjDbU+8RleUgEF0qRryJ1pdHny8TyQWHJwe3i8EU4ySe3x0T65BuOWBsUgrmYLqxpVWm1HjfMJoLgE0cAKDGZfOD6NgEFU20Vltn4/OwxW8Y34kOzQuoRjC65SvHDtx5A84IpxAy/5aVO5agdrGpdi4dSFuuT+ZF2AEYeQ1JVInL1DN4x4tEPHCVv+OGJa0UkaNwleTJyEtNwsZBFGaHFFhHp9nI50wkkKBJIUDRbDC7fN7NJALs6EimKxevdpAqLOzE11dXdi+fXuvm7GhEyw1AAtgck9btmwx4BHA1DgcLGUqSVpXevyWLduwYcMmFORbEwyGDdpBkgOqqqzhMTpwYP8hMy5gbW29AdlVBaNQAFFyQ/Z6RhbdKF3Rex98YkAjGHnV8G2ckFK5uSSI5JLklhJShqGsusbAR8PPXAxExh2FDfaUDSCW5IzCQOZy1AdEYc7gcqRG38A/O/lCd6f1OH/2AloaWzCJbvDmm29BnEDi9sJF95NEcIcDkVxQAECqxrHuW5PhRrkZzNyxgj6djh88zthhvM+H8x4fjkjvcJaq+TzpJky473k8+9Y3+GL6SszP3Ii8TXuwdksXSuh28is7kFfZhcJ6jVLdzaCq9p8upFV3IJ0QSqvtwSoG0rS6g4TSQcKJ7qhW/XSugchWeBBpEr7DZvTu7PIeA6PlJVtx6+Ov4ToWChxJI/i34v0RBCOnN55wiqPogpXYQBhd77wedz0xDqvrl6OmJZMgWkQ3JBCFh5AUPEjqRjonVc8JTAEQlfPOOUIAnfK31dog+gNVcyfP/4zdnetR3bAUVQ0LzMB2b3/5BJwJ0fClaNiVBAMhJ+XgFzV9DFRtp4uaJazHnnkaGXQO6QzSWmbRSWTkqIqOCgMHKRwcghVun9+jS4FIoNm0aVMvNKSmpiasWbMGGRkZfUAk+AhcckplZWUGQIJXe3s7GhsbjTo6OsxzWzqeXuvq6kZnRzeaGEyqq2qN0ykosKde7y+BZs2addi7p9HsJ7W3daJhbxNKS9YQhjyn3PD7/u0UBCBbGsU9MyPXqp7LLTTD/UydPtu0AQlEvoQUBkl/NR1LePZ0ER4NjMpgO232bKuN6LyVQTcwiKxqLEtBEOojvcewHwYytvq03YS892eDSAA6pTHfzqoCEjh86AjmzV6AO269Cwn+ZKFE/j6S5hKLj9eU/skEUZI1ySV/K0kdU3WPmvs03i++ZlwmAe9JHMZgReh4UxiwNEX2CER4hsKRMA5DJzyI+555Fx//sBQzVq3HsuLtyKtoQ1FdDwprrXl61Pclq3IfMs30Dqp6O0LIECpGBIOduVZ3iDpiZL1nbWcH3nCB+XIVCpVwCrff303hQJRTQwlEFYeQX6Vquh6Ubj6Mhfm1GH3PM4hJHA1PwjDeF0lw0AkJSLpHYjwexmg37xP1B/Miwu1CDGP58+8+gtW1y1DbshKbds+gK7pESjdVRlkwmmOWlU1zCaJ5vSA6c/4kzvDmE4g0Ud7vzpqzQHQI29sLSMvFqOIHKkVvZeFkjL1tNCI9MaZqxMmLXPO6i7jq02FV2WkemVikjhhpAkNWfgGyWFrPZIC09PcHkarlNm/ebJyQDQ85GIHGbjuyIaRqOrUjqRpOEAoFjlzRnj17eqvltG47JbkawaSrq8csd+3cg/KySlNdFxq4BSFp/fqNBlwd7Tw3QkhqbWnHpo3lDOLZyL5aMvHCgMhkzNlLTUGfX4yV6Vm4WZPlETTqf6IqIwtEDKiUlrrRlLTw7Esv4afjx3GacfyPgYhh334/BDDB+qtApEFIT505be7LE7/+ipLiUtx15z1wRLngdfqQnJCKpKShcHFdsrpUWNms6mwuEPn4XPLISfqljCoj/Z6EVkxsMh1PMoa4UzDYk4LYYTdj/J2P49GXPsTXs1ZhSWENCmvaUFDbhRy6m9yq/QRPN8FzAFkVBEnlTwyeR5FZ8wsyq35BWtXPdCVU7S9+HeXzn4zSuJ7G19Jqf0YGn18DUX9dHERH6Dh/pA4ju2y/mbhvblYFxtz5BJ0rCxAe/j1dNAueOErwcVFOikDia9EeOuWhQ02n1y+nv4WNOxaitpVAabJTugdO7e4PotkE0VyCaBNBdIgg+s0PIl3FvzN9+zxvPpW/frtwCFvbcnhyC1HTOpvL+di0fQWef/MJDHIN4pf1EkSWIzIgMlbfckNSlNNl+ndkaAgXBpRMBp+rAUR2+9C2bdv6gEgOpqqqykDIbiOyoST3JMDYTicYRAKaquvUZiSpyk/tQ3v37iWQWtHSomq6drMUmBobm1FVWc1z6OuMbBCpXUnVcUrJtUHU1tphHJXVf+vqBVFWZh4dYQm/gz+NW66oaDWeevZFRLm8xvkIQjaIgqXqu1Hjb8S23XtMGL/6QaTSpO5EeSGu81x28Rr75NPPMWL4aJOA4GNA8XkIaA2F5ODv447zQ0huqK8j0us+ymr7UdsuC5AqSHKbaN7DUQSQI3444oZPwG0PPouXP/gOs1etxYqSLQx6zcirbkdOVQcDYTcyKjuRXtEJDdCZVaPpGwiSimNIqzyG9KrjDPRcryZ4qn/GyhrCh7DpFV+T0girNEIqAKIfr4EoRMEgsqWqOaVz5xH6RlU/Iaf8IEroLDdsP4pZK9Zi1K0PYVBMAmHDvy+vD5fH54cQYaR1dyLfS6YrojNOTkDq+DjMWvkpKvcuRVmDkhU0bYR0KRDN5pIuKghEZ3GYBaeT/qo5XckE0fGfrwxEuvHUwHSGN+OvBNG29lw6ovl0RDNR3TwX1Q0rMXXRp0geq7plNwHEgEALb2VoxPIiV7qn1dipRs+RY2/CgiXLkVtYiowcu2rOAlJgrLFAivf/hmwXZMsG0Y4dOwxU7LYdrQsgNohsGAksckLapqWlxUgAsverrKw02+qY2j49PR1r167tTYKwpW21nw0/JUoIYNZ58bOy+Ln8DVV9J2AJRAKYpOf19VvCOqmrVWovMyN08Dt/+dV3SGCJX4kJ3ngLRLq+JA+vPXUfcLl5/fH1ZasycJoAIgqMhAFbCur2P7vKKwCk8LIz1GyF20YaaDv7oTUbMZfzOHeOt/BZQc7aY/26jbj/vgfg5fd0u+JgzwkWLNPB3EsnxPtS8nE9lqCJjx9KGKXSEQ01SQcOBSFnAiJdSYj2DiN8bsGdj7yMj75bgHlppchetxk5ZQ3IqdW0BwyImuq74hABpNRqjUZ90D99gUatPkDoHKaO0OlcjvyOiPBKrw6dVjuQRh0uMF+pribohJMBkarfKAHIlhyRJa3/yIKC1WaUX7kfpfX78d38HPhG3IJIOlsVOpSEIiekNiLTVkQ3JBA51K9L1XbxHtx8301IL16K2pYMgmYagSNHJBj1d0YBEGk5nXyYhcqdc9F1pIx31BHqVG9BULbmikGkUpc1FfA5nDh/EFsJourmBahumYWqpjmobV6J9VtW4dEX7yCIonhB0wWxJBUORL54vR6Pdz/8lA6kCOks5WYwwFwtIFJmm9p6bKCEgkjb2lV4ek8QsSFkg0jP5ZTKy8tN9Z2OLdXV1Zk2J0kQ0lLVdjqOQKR99Xp9fX1v6ricjkBUUrLaVM2pOs52U/9EENnKyyvEkqUrcdPNt/OmstqH7A6uwSBy0x1EOtx45Y138OupM7z8r14QaT8BSCMjqD/QzBkzkZKSapIQYvl97dFNwoHIZ0QYMcjExw0lfFJ5Xw7j7zaC9+gIwieFLmg0kkffgbsefhlvfz4Ls1euQfbG3Vi9pQf5VW0sYbciq6IjAB0GQimNJfGADhImhBAhtYoB0+63czGlEUQWfGzZELoGonAKBlGwAiCyZEBkYHQI2RUaLLUVH05eDFfyeMR4ed3I9RoASfF+JRFOSQZEzkQ+j3fh0Rcexcadq0ybjzVFhMAjEPWFUXgQzUHXj5t4fR+hNCeRDaILv8MRUWpg0mDwx87tR31zNiob5xFGBFHjXNQ0LUNNYyZmLP0UicNdJK2XIGIQ0ICoPh+8Pt4MulEk2n4ff4A77n4AK9PoBLLyCaRCZDGYZv3NQaTEA9sR2S5HcNi4cWOf9G1V1QkY2k7vy+UITEpQkKvRezaMtG9JSYmpnhPkbAhpP22/YcMGs69es6v2tC5oab+srByTMafsup07d5vqORtE7e2d2LJ5m+UgrpaqucuVMgl53Tz/4qumgGOqlnh9WX3ZGIB5c9mKcfkwbsKt6Og5YMBjg8gCgKq6gv6xsCXZwOgj7mArGC5S8Ham0sy/PtB2euj/wQr30LZyQFoKQFoePXoUEydOpKMhdDw+wiUAGtORnCVbDwOKll43paV5L5lwTkG0IwFO33AMdqRikHMYksbcg1sfeAFvfTYNc9PWIW/TXpTUdqGgpgv5lGYIzdYEdVX7kF6xD2mVAg2Bw+BnKRhEen7ILC8FIrtfz8VBZEPI6s8TLjD/23SlIMqha82hU82p24fcmjY8+dY3iIodhcGuREQZF2RDKB5RvF5iBCMf3bHHjQhvNBxJMfjwuxdQvXcFY/4ylDfMRYUGR23s64wuBqILBNEFgkiXvmXmfy+IeAQDorP7UdeYg4q983lScwiieXREy6k0lFQvxj2PjKcr4sl73QwI6uTq48VvlcoklzseCYnDkJwyEl9/+wMyMgtM47OqWgIQ+vuByJYSEwQjwUWgUPq27U70vqrk9HpwNdzWrVvNNnZ7kV6zYaTjqN1J22hdINI2NsSUkSfXpNRvOTF7f22najpBJp/uQMkIZZsqTGKD7YrkiAQigSpsML+qxe9dWIqJ3/2ApJThfarinJSLAJIbshyRx1TfFZSsMddzAEQhEOK/QHtQABq9ugwQWW2pgecDbaeHDmOtDfywIXT2DM+aG6tj6meffWaG44mKikJsLO8tT6yVAedLogSbgHqH3uLr6u/joiKdqXQ/4zHylsfx1BvfYurSUqSt2Y6i6jYU13Ujv7qTAasHuXUHkK00alW3UVquqpQs0PSHUDCIjlwSRAHYXApEgU6l4QLzv02XC6JgZfM3ztl8xHQSzihvwv3PfYBBnmEET5IfQrYrUjtRoH9RdJwHkYznCaOcWJz1LeqbMlG5dwGNyAyCSFV1gTYjC0SzwoIIBBFw0lzD5v7hyvHLB5G547iLVWWh/x87sx+1BkQLCSLBaBFPjOtNS7G5JRtfTXmdtu8/pGoUIaSe2n1BpMAQp3RbltDuvOsB0zlRKbk5Gocuj6XcXglG4SHxVygUQLYEHEFF1WqCktp1BAq9Z1ev2Y5JwLBho+o0JSIIIHrfBpG20fuClACm1+R6tI0kQMktKfFB7+s1vW/vV1q6xozhJ8cj4Kxdu8H0P1Kfovq6LaYNQSOf//McUYHp3Lp46UqMHD2e15P6xCgbyBpRQRlztpRVF+X04otvvzNX9e8G0QAKBkwoiIL1e0AkFyQY6XHw4EF89NFHZkBSKS5OSQi8r1TjEGd1MjUigHplnKLSddWvj6VcXypuvfclfDJxOVYWbzc98Qvreuh8VHUjsdRM95Nbx4BHCGjgz4w6wqGWkKklQBgE+8NHUlXcIawMUjj4BCsAmyAJQtdAdFFpvLlwIBpY/PuoHY+/X1b9YRRuPYyV63bhpodexPVyRYzF0W7eK36ZjDqNTBJrDYwaE++AIz4Ct9w3HMUVi2g6VhBEs4NAZDkjTRFhdWoNBtFcdB8RiA5RvwWBCASRf4ZW62noQ7eGBaCArAoNlstw5Hgn6hryUNWwjG5oIWoIoKqGxVwuRF3TSuRvmI4b7yZF3f8/3ggeSiCyZ2+NNSBSFZ1KrolJw/DVN98zoJTQFckZBcPo7wkiuz1H64KSpGo5PVenViUoyLUINHZ1mu1iBBkbPpJKt9pGcBJkbDdkywaOXtd2Ao/213vmWM0tBjaqnjNtRf6GfFv2qAz/OAhRuXKBqtJlQea++x82DihKQ9YQQtG8zmIYnG2pyi6G19ujTz6Do7+c8DeYCkIWiIKv9QCIwknv94XL79XlPgQiTdug2Wa/+OILOh9C1unshZEgFCsIETZmokAlHcQNo4YiJi7VzEMTKaeUMg7j73oS709ciPS1e5Gn2T6V3VbZjeyq/VCWWxbhoWm5c+qO0Amx9EwACRjL+V44sCgRQQ6m97XavnP7rCJA7PcCYPljCheY/8kKBx2NLyeXYz/XNto2eJtgyUGlU2n8G5q+W/x7ZlR0Y9rKCoy5+ylEeFIR7WRMdsZSXt5DXjMAgRlxIdZNOYzcyU688fEzqNyRhYo9S1G+Zw6BpP5FwSBSh1ZlzQlEfH/HPHQfLueVHACRwQkfx49dNoi0hy2B6AyO/NKJ2r2FhA+p2EAn1LiMEFpCLUAtoVTfkIY3P7kXgxz/H0LIqp4LBpHW1Ztb7UcxLg8efvRxZLDEnldQRBUGwYgBR+PRhYHEX6Fg+AwkG0S25FwEFLsdx4aOXIw9EoPek/tRVZvafrQuwEhyTHa1n72PDTH7eKFqaGw2yQjhQBSscMH8apaqctWnqKCwFG+9/b6pjhOENHZWMIQkB1+LcnsxdMQY1NZpki5e0YTB7wORJWtfS+FAY2ug7S73YbshJcCoOi4lJcW0DWl6BqNYOsHYJAMhJ+EjCGla7mhqSFwKrnPFYvjtD+DTKYuRV0YHvXkfA1k3g9c+ZBhpHDdVu1kTvJlU4NqfkGVcEEvOdCQGRAYyfhEIUh8Q8fWVdQcpbmuWglFgn3BQ6Sttc+ntQgP1P11XAiL9/cKp7zGPIKf+qClsyPl+OTMLjsQbEelIYgEnHm6CyOmmCzKZdISRAZETQ5wx8CbHY+i4BMxa8gXKd6WZzq6VjYGpxcsII6Vtb6QTskFUtWM+eg5X8AoOVM31gujiVXOhINKNIGl4k9M49HMXanYXoWrPCuOEqhtXoIbuqJYgquHzuj2rkF36A5JGRBA0PHnVYat6xK/AuFaxiIpxYOToMZg0+QfjigSiHI2vRihlMdCHA8RfpXDgCVUoiDTunA0OuRgBRWCxq920VHuQEhTknuSs7D5EagvSul7Te0rvVvKC7Y4EHUHMdk8BOLWbPkQKzgNB558Ioqxsfq/8YlM9N2XaLJOsoGo4hw2fMIqmY5o3fxHO8dI+y//pSicWzP/t6z48gPqL/zcKBUyo9L69bfDrl/vQtvr733XXXQZEckTxCQl0QizgmaF5/E6I7ifCk4xIgShpJAYTSp5RN+Gx19/HnOy1KKxrQ351B7Iq2pFR2YV0JR4QQulVLB37QWSCWT8QHcCK2n2EyQHKdjrBIFLqtUBkQygYRAGFg0pAApC26VsN11eqrvtj/YiuRg1UDZcdBkSXq/QqK+U+h3/bHF4Pz38wFZHe0XAordurAYN9iNa0770gcrOQE48IpxvRvijccv8IFJYvMtnT5XsWYNPe2ShrnIay5h8IoCnY2EJ3RBCpa0/VjgUEURWvZIHolHWbGRBdso3IuiHtmzIYSOcJo4M/EUQ7i81YczUNS1HbuAp1TcuxuXkhNqudiCDa3piL9z552jgiM2S8v31ICgaRcUX8ck889QyDfx7yCwUgBnW6okxVgYUBxF+lcOAJJxtCWheIBAwBQrDQoKYqydptPHpfmW52VZ69nyQAqSOsxqbTc6WDC05qI1IKt6Cmaj9l5MlNmbYiSp1fNbipgrMNHLmjYAUH8H+OLEeURxhpsrxb77i7t01IIHL6O7RKSut28fUohwcvvPQqIeQvkvV7CBIWaC4l/t/oUiAaSL0PrdoK89CkdZ9++qmpjlObkGAUJ0dEIOneMiBSB3ICaDADyQ3uYbjek4qUW+7BF7OXIL1sGwNOEzLKW5FRQQBV9lCCUABEFowsEElyRarCEYgskOzvA5VeEPkhYYPIglUQsILUHyzBwfFSILKclxTY59+hgUAUrN8DIqXfyw3ns8CQtr4Bdz/zIa53DCV8UhFlqrcJI0oDFMTEEkoeZVqm0il54E2JwSsfPo7K3VmoaVJa9yLLEbV8h02tFF2RquuqlVG9fTH2HRSIftTVbK5zq43od4HIFgiiHlRtK0LZ9uXYsHUeNm1fgoqddEZ75qN27xLUCFA70pGWMwvjxt+IaPXsVrtQGBBJmiIiOXUY5i9cRAipXSiPEGLwNNVzWv7vVM/ZgLiUQkEkpyKpWk0ZdYKODZdg8ATva78uEGnMOm0vaV37C2YCmJyT3JTAJHekMemUrm2Pst0Loiz+ZtI/HUQmyUUZgwV4/a134Ym3xpbrnXfFhhCX6mekNO6x429GY1OLuZb7PwSJvsAJL6Xt/DUgUuFjxIgR8BBABkKEkdyQJqpT/zyNhC03FBM7HEO8w+FIuhETHngWs5bnobiuEauqG7CyuoVBnAAyKdcK9BIBpLYCfzbcNRD9PfXfA5GltE09yKvZj7k5NUi88REzOWGkSekWjFSoUzuRH0QaYZ3mwRHnQMIoF+alT8SW1kJUNC5DefMsgmgiQUTRDRkQNcxFLfmw72A1r+Sj1GlznVsgOofjxy6ZNWfdGRqiRMtz587g19+OY/XaUnz4+Xt47Ln78fCzd+Khp27BA0/ejEeevRVPvHgrHn/hNjzz0t144rk78MgTd2PkyDFm+BD1b/D51I+hP4hsGD3/4st+AMkN5fqr6fT80goHkj+qYGBcTMEgUTadqtPsJAM5I7kXZdcJJgKNnE/wPrb0ug0fjbJgS/soK0/ZeaquUzuSqmr0GdKOHbugAVGDgWMD6J8LIUmjK1jD/ah67rtJU5CQrEEdAxAKKM4Sb6LE5FT+ffODrvLghyChAtilxHuDO9riS1emvh8a9ODn+/+p4+rpM6fw1ddfwUUAOVUtF5cAh1vDsbgRn6wRxuMZGDT1hdqGRiHCNxIPvfABluXVori8AznUqqoeZNYfohTMGYQkE9wV9AWjYABYMg3ahFB6LQMV3xNctAxIrweAYT23tgsGUfA+wce/uOzzCxXPnwoXWP/JCtfmIxkABT0Pt+9AErgs8fesOGQGoy2s2493vlsGx9A7McStwYSHI9IpRxRLEHkIoQREueN5rRFOcS5E+aJw1+O3oKBiKTbtXoENu9VGNBllzZMIIiubrmbvXNTtWIp9B2p5bYcB0eWmb58lgLRne0crPvnkI4wZN5r2zIEYTzTtm4PrLrjj3bwhXIh2RyLSNYSBIBpeEtMX50F8rMa3SuqF0EAgUhXdyNFjMXP2XOQzYMsNXW0gssEiYAgWApGq6VSFJnDIxQgk6qC6bt06s50cjgClNiE5H1XHSYKS4COAqXpP7Ux2Rp2WNuTU5rRxQ1k/6PybQCTlEkaaLG8c3Y6q5vqByIxzaE325nC6MXnKNHN9634w90TQI9S5DCgbKr9HA4DISiA/jzPnTvP/59DY3IgJt96CGKcT0Q4HNDqyK04j2WuOrzi6Id5PCcPgih+JCM9wPPjsu1iUW4HCyh7kbzpMEMlF/GSN2WYPndMb2BX0bQj1lT0itqZh0HPL0YSTDQ7ruT2CdjCI+m4/kC4GoL4KF1j/bbJBFO69y5Hlso5QPyKby+zKg8ir3ofMshbc/dzHLNSM5/WWDKcniSDSVD4CUgBK0X45k5z4aPLr2NZVSlek8ehmoKzxB8JoKiob6Yj2zEH9juUEUT2v7p8pGpvfA6JTp07i7NnT+OqrL+DxEDbOaPgSfaSim+JNQemmcPk8hJNKak64fWoXUjZPrOntbQPoYiCKjSewEhLx4suv9mbOqb0oN18N0gw6QbAJhVDwe3+mQoEzkEJBJKioHUcQsp2LlvZzQUTtR3ouCVCqfpGTEnC0lPS6nbZtb6t97X5EVntRNQoLik36dnCQ/jeAKFvyV8tpjiIlLjz48OO8eaw+RGoT6hWvMSna5UZEVAyee+FF/HL8uP8qDzz6gEb/gp7LofRZD4VLkM7TJp0/11d9tgkBUe9x/f/Onj+LM+fPYMbsGTx/Dwt1+h663wifON5XGnrF5YKH940y5Ya4UnDjXU9ifvpalNa2I7esC7mbDhFEVpWWAZEtAxkbNId6FQyGayD6e+vPBJHGpDMZeOXWKBqzMssx+ubHERWjsUJTAiBiTLdkQUjr1zsHY9RdQ5G+Zg7K965C2d75VhUdHZEFotnYvHMFDhzcyqv8GOUHkbkBzhJERy8PRJrlUR00VUetlNFop4MnRwhROhFregdl7igbzpLJjlObkIYVsXt1m+FF/CDqVSCDzheXaPqBjBk3AfMWLDQQKixWFp1gpP4i1sjYwaNj/x1BJDcjZyM3o7YcZcjZGW7hJDDZsBJgbNnwClYw0NQ5VokMeXSOoRlxwRD6J4NIWXNKVsgkhASivIISvPPuh1Yat8tnlrqmzAgLdNwaaVhdCVQNPHrMOKzbsBFdPftw4NAhHDvxm+mIqvtDoLAfBirnWHYzYNENZN1EZ84EJTvonvLLbCud1bA857iuceEsmf11bHt7Pbi0ISTZ7U56u7OnG3fde4+pkrMSE3ifmTmDuEygy4tP4JKBIjYV8cNuxpxlhVhb10oANSN7YyeXh5H9u0EU/vX/nq6B6K+UDaLMSrqhiiME0E+mI3NWeTsKazrw2TdLEBs7noU6JSfIFbEQx1hvK4ogiozzICrBRUXi0Vfuxrptq7Bpz1JUtS5CRcsMaEDs2t1zsG13Go7+vJdX9AneY4Gp+tUV6NjFO7QGHupEN3v2bJOx4/bwhtBNQAfkkAMiJQPVH1bvbVvBQ4xYSqL0utQfRBobTOOFxSUk4/U33yYI8v3p3FcPiOxqNYFIz/WegKQRGAQkZb1JApNcjkBkw2UgEGmpTq+CjxyQACTABQY81TkMnC33TwaRxprL8rcRmSWh9MPUmUhOHWE6SzucLCgRQgZIamBVfzYFcl5vXgbxmybcgtvuuBN33XMfnnjqabz93nv4duJ3vN7nYsXyVfxbFvC3LsP2bTv5t2o3s95K+/cfxKFDR/DjkaP47ddThEwwcAQgSe5JkPHfSFfwsHfJ4t/XqQwlJSeEgEiT1jmVfBGbjOi4EXj5vYkoLNuL/PJmlm7bkVOxD5nlGhmbwGGpV9MxaHZTM8PpNRD969UHRHJE1Vyv6EaemcSwCwWrd+GRR95ClCOVsV4TISYQQHEEUCwB5DMQsuTGYF8kEsZ5MTvtG1Q3Z6FCGXR+ENXsmYvte9IDICKC+oLoMqvmBKJZs2bBJ9fCm1lD9nh4Mk4uHQSRUmSdPEkn4eM0/Tg0B1Eyb3zaOiOta7RtZTPR9QhUhJAt20UpcPjUO5xAGn/TLXRFi+mKivuAqB8o/sYgsmGkxAO19wgcyqhTm4/ApHYfJTHYqdlqUwpWcHWdOr2GJjtYn2t/dsAV/btAVGBGVTCuyA+i+QuX8vq5FU6/I1I1narmnJprxeM1zt2upnOo056L7t7DGypabTAuuDS3Ebf1aApyXtsJ8clITR2OG8ffjDvuuBt333Uf7rn7fjz44MN47rkX8Nqrb+C99z7ARx99YvT551/iqy+/wddff4vJ30/B99//gJkzZ2PhwsVYsGAR/4bFKCldg9I167B+4yaso6rr6rGDf+8GFjYOH/0Rv/x6gsuf8O6HH+L6iCE8Z54P7zkjgsiaSTXB9B2K9KYi9aYHsCS/EgWVbcja1Grq+nOqDjKwUAw0ApENITM/0DUQ/eslEBkY0S1nU6s27UMur4fc2gNmjMH88hbMXbEG8cNvxyBnopmXKpqxO4qxOpLXYVScl6IjUjWdAVIMHnz+LlQ15KG8YSnKmjWR3mxU7p6P7Q2Z+OVEE2lyQhgKAdHlVs2xSKdSvYYScTicveBQFYdkGoGDXJGZB11A4okHy37PkrW9ZtG03ZE9Tpg9Dt0bb73PUq4SFqzRFoJhEwwgW8EA+bMUCpyBZIMoGEZaD91OALEhItn7qE0pnAQeSccL3t4+tnU8HSskQP9rZDkitRFpvELBKC0jB4898Qxi6IY0rI9GWtC1Zmai9Mup6jk/jKxJG1nA4nVnu3SN/qHx2zRhXCwdvI+yqpnjjeypFdyElsvpgcvhgdPhNnLEuIx6nxu4cRvK6XQjISEJCUnJSEhJRcqwEUZJw4djxPjxuOmOO3D7/ffggccfxV0P3IfYJI3/pXYg3mM6R8r0yeP9ZTrvxqUQRCPw8IufoLCmE0X1B+mG9lMHkVVJN0SZdgQ/iDKvVc1dUxhpTqksLrO4zK45QPEa4vWUVdGIlz+ZgkjfCER5hyLKozmKNC5dvL+KjgU5AsnN6zmG12PS6BR8P/8TVDVlYFPjYpQ3zkPF7nnY0ZSNE6da6YaCQXSeIDp1+SBSo+yhQ4dw5513ICYmmjephzehC17J4+JN6oHX5zUyQ/fINQlUftAEpNcsWTBTlZx98/eVSrM3Tbgdy1akGVckRxQOPsEKB5I/KhsYl1IwIC4GonCy97GhY0PIPk7wNvZx7WNfA1Ega86ASIPncv3Djz4z15CmIbEz6Oxe4qanuMn+IYz8EAoHIh+vTWV6GhgNIGubgCx4WdJo2G63310Fi07LTbnsakK1u/KcIlwuI0d8LEuYXlwfFUnQ6DytmodQEHnNmHIMDrGj8N38fJTU7bOm5qYTUkDJIIRM73kFm2sguqbLkEmA4N8hi64oo7ID+bUdyFy/A7c/9AIhNNRMphfl0Yy9dEg0INFKXFASTbyyNgUrD8bfMxyrtyxFefNylDUtMANjb2/OwbGTzX4QnTVuqBdEJ368XEdkwaikuACjRw6FxxWDlIRYJHhiEOuMQLw7GgnuGC4diPM4jWK9bt6MHi4lrmt0BX9nPMnjIbx4I5rhfvzwEaxsp2Sme45NwJtvv4+ColKqmLBRFQyDjw2ffDqLIIUDSbDswB/uvYFk73Mp2XAIBkYwNH6PBjpGuM8PH6T/DQqAyJZGWZg6bRYSElMRTcdij8JtQ2ggEJlrUEkNfrdjDUdlJdco0SbWm2zJF+iKYNo4bbFgpQ6m9niKkkAUDCMDOG7rU8o1ZbX38JrXzcxzMOfD5xpKxRmnIfh13krVDmxrgSgBcQmpcHhTkTDiDqws3oy8ijZklHcxmBAi/sBiB257Kmmrb1CwuN0AwBno9f+eroHo90qu91K6nH5GFoh4rdQepEvqRh5d0Zr6Dkyekw5n/GhcH5OECO8wym4z8sERp0SGUQTROAxx8rof5sYHk59HdVuaaSvatHM+dnUU4NezrYTPcQMiIUh98TRk3PETP10aRKqWOysfxcepk78ia9UyPP7Q/RiZkoChcS4kuSKRRBglcykluqKoaMQ5IxHriIIvJsosJU9MBBzRkUZuDZ6nxAeVCg2ErJ7vlqz1GJYax910qxm6RdlzSl64GkBk60pAdLnHlMJtGz5I/xvUH0RKXNC0EONuvMWMKycQWaNxXyaI5Iz8MPK4+Lqb8sTD50nqByJ7e7fcj67lEBD1cUJ+EBkRMAKRAOT2Q8iWRoQwo0KYNiAWyOIT/RCytrUmmKQji6cbciXh5nufRc7GPcgpa0W2Oq76QRQcuK+B6B+kKv7dbFVbstKwpb7wCVYfEOl35LLf70pZ14pVRScQFdW0obh8Lx58+m0MdhJCnuF+EPldkZpd4m9EtGc8HLEjEB3vRMotMVi17luCaDE27ZqHPZ1F+PVcGyF0jNKMdkrkUdbpZYJID2HIZP6cP4Oelt3YkLcCBYtnIm/eZGTN/Brp0z6nvsCKyZ9g4TfvG83+/C3M+PxNTPvkTUx850V8++7L+Oqdl/DF2y/h83dexoTRKfA4Ilg6VHUebzqTzGC1HWk4Fo2UrMZYNTR/+PFnyDVtRAw6Csb+PkV/dxBdia7kmOG2DR+k/w3qDyLJ7k+kdiIbRDEhVXOq7jJuhDeT2ozMrK4CikT4uAkhyYDITQfjSeD1ShiZKjlNMme1Z/4hEAUBKBREGkHcm8j7gjAy7Vn+902VtqrmYlMxJCYBj7/wAfLLG5FDR5StkbTDgEiDmEp9ASQFYBMKnIFe/+/pGoguKQOgH6mf+kh9gS4FIimjir8xlcZjaToIqc/vSgWDKLe6C4W1HVi3uQszlhYhadRdGOIehkgfxXshmtehgwWiGO8YXrPj6eIJolgPBsf+D55973as374E1btXYk9HKUEkR2SDSJVz1iDaVwQi8zh7Cvt312PP6hVoX70EPSWL0V26yNIarq9ZiM7VC6j56FyzAO1rF6B17SK0rFtKLUPzuuXUCjRvTMfX7z2HeM8QeN1O3sRqSFaKYFLvTWjE0l+0241b7rwTi5evQG5REVZlZSGnMB9ZBE+ofg9A/hu6NDT+N6VzChfQr1aFB5FmbX3vg09MFqbdn8gGkqSqOlt24ceGkkcSKCiT9q2khF7gcHvt51+a/kkS1602z77qBVLwa7y2Ja2bPk1GQefUew+oZkCFM30Wz43b9wJL58ySaLQ7Ge98OhVFlS3Iq+roBVFwcAmvUAj8HXQNRGFlwGNL4LGWmVVHkVXpl4GRBSJ1TA0nM3qC3FMNoVX7o1Uw4fF7h3zyf162EUFUu9+AKL+qHSXVrchZvx0vvTsRN7iGwpEwks5nKKJVLRebDEfccIqva+BdwkkdXhPH+TB31WRs3rsGe9s24Lez7WTJceqMcUNXDCK7/51AdGBnDfaWLEFHyTzsK5pDzUZP8Sx0G81AV9F0dBZNQ0fxVG4zFa2lU9FWMg2tJdPRUmqpec0crF71A+6ZkAJX1PVQx1eXJ4WlPhtE9s3ImzaRpc+ERLz13vvILihAeg7dz98cRH9v/fNBpHRuOaI58xYhZehIk7QgWATDx5agJAh5Vf3ld0bqlqCOr+r0akPMlqm+E7T8kisyr/FYwbCxdSkQuXqz+C4GIq6bc7WhZffdS2ZJNBUffDUTxdXXQPSPVq8TCihT8DEQCnZDypoMLw3hk11xAJmV+5FBZVUe4PaSklssZVO5vH40R5G6ABTUdCOPhZycjbtNR+n04mqMvu0RXO+gE0oYTvdDV8RrNCY2hc6IECKYBCJVOQ/xRuKhZ+/FxpoCNLZXEERd5MgJ6rQFI8oC0WUmK/SC6NQJ7N9ahr3Fi9BZOgf7i6djH9VTNIX6wWhf8WSjnpJJBNQkdHPZVWqpY7Wl9tVT0LBpGb555wkkO26ANzoGHrduOKV9WzegJd648fHwEUbjb74Fi5YvJ4QKkUnQZOVLVwai3GxL4d779+jfASJlzy1fmYFRo8eb/mmCRW+gp6xAbkkw0jLG7aHD8FhLh4tymr5FlvTcY2XiGaj59yMcHEqIUHo2gSKHY4NGUvacsunMfFzGaVnwsUd4MDKAEsz80o2s0bS1NCAKTH0uBaCVhAhnEh5+5h0zpE9+dSfyajWdw/5+VS5WkA9WOBD8byv0nAdW2GB9BbL70AQr3HZ/L8nBWMqksuloculs1Pcnh/DIJlRyWBDJI0Ty1b5jYKJ1gWUfnQ3XK/chp6IbBbUHUVR3CIV8r1d8rbD6ALfp5pKqZMFmwx4sL6jFnBWlmDw3E19NWYKb73kag5wpiKB5sNqHhhJAqZSqkTUKPAt1jNvOBC/iUn2YNW8S9jZX47dzB/wgOmVB6IIfRMevyBHx36mj6K5fh4bihehePQP7Swmdku8JnO/ojCZiv1Q8EQdKJuJg8TdGB0q+5XYTud136C611Ll6MprWz0fpkol4ZMJwxEcOQTyDhdK6HQZAoqrljjTAY2xikoHR+x9/QhAVIDNPEMq9YhDlEUJSbpj3/j36F4CI0nA/GZm5uOvu+42rUf+0cCBSYPfEJeDWO+/B5998iw8++RSvv/02nnrmWdz3wEO45777cfOtt2HEqDEYOnwUklKGIT4pFXFUbFIKfNxXwLGXAozm1rKlfkTqZ+QkrOSwJA01ZLktC14Cns5RVdQCkdMrJ+Sf9ttAyDrPAIis7xDjiic4UzFs/P1IX7MduZXtSC/rYGn5gDXNA4OXJY1Y/XeFT6hsUPYFT6jCB+rLV3C7ia2+2wSCvqXQ969Eh4JE6Plfv5wsNluZ3FdJKCYRhb9TJgscSrFWf5/s2h7k1HQhV6rtImS6UVTfg5It+1G8eb95Xsj38giWnLIWpK9vwJKCrViUU4fZK8oxaW4Jvp6Rh/e/Xo4X3puOR174Arc//CbG3vkcht34COJH3glv8gS6nlGI8g03y0jvUEJIU0Vo1PcUFppSCSCByK/4RHgSeC17nHj0iftQt3kDTp49QpYIRCcpjcBNXTmIzuPCyR8JolI0lsxH95rp2E93s5/Q2S/YEDpGXD9YLFkgOkgw7aczErD2lcgpTaY7moKmouloWL0Ik99+GuN8MUiMiYZSujVkib6UXU2nOnuVUFVtMuH2O7B01Up/1VxfEGUHgSh8AL4mS/8OR2RgRBA98thTxsWYhBg/fILljU8y2Zl33HM/6rdtx66GRuxubMLuvY3YtmMXtmzbgdrNm1FRXY01mgE3Lw/LV63C4hUrjBYsWmI0e+48TJw0GR998hnefOttvP7GW5ZefxNvvP4WXn75VTz7/ItmoNXHn3zKDCl08623Gw0bMdIATsMSaSkwakRttQ3Z4AkFkYOuTCByeIfBkTAeb389H1nlzUiv6ER65X6KQc9U4fjbFBjMwgf+v6suDqPQQH2luhSI7HmPelXD35CypqGwnkuZfE+yqs64n7/fluWyCA+zVCq0dMC/PIRs/n2kHL5vK5f7WaLTkduh8ul48ul48uuo2kNmAru8OjofwiezioWOslZkVjRh5YZdWL52O5as3oLZOWWYk1OO75eV4IMpK/Dql3Px0qcz8eRb3+Gupz/E6LtfQPJNjyF2xH3wpN4NZ+LtiIqbgCHe8RjsHoMbHCNwXZTcjlKyx8CVMJoaSQANgzVhntWXKMbHdbpyDf/TB0QyEabg54PD7URiig8FRRk4de4ncuRXkuQkJVd0imS5wjYi7XD2eDc6qnPRXDoHPWun48Ca7w2MeuR2CJweOiI5o/6axPcDMtV4+dPQVTwXmxZ9g0fGxSLF+X8RF+viTZjMkuAwaihvRpYK42LNUPdqqI1LSsYHn35q2oqyC/IMjLLtVG7JH2zleOR8ggPwNUDZ+neAyO7c+tU3kxCfmGocRzgQmYny6MYTU4djBmFStGYN1m3ahKqaWlRW13JZg6raGtTU1aG2ntpch/otmwmordi6fZsB1dbtO40Erh279mD3ngbs3rXXqLGhGe1tnWhr70RLWzuaW9vR0NSMPQTezt17uP92lha3om7LVpRVVqGUn5+dn8cC1wp8+uWXGDqSpU+nkze1DSK5Id3kckpc8j6J8I3AyDufxqyMchTU70NGJYNUhUZWUEP2MepnBkcFyHAB/2pSAE7B0LhcCQrhAGQr2KGYQWIFIEI8jb9jetXPhDtV9Yu1XqXXjvKYaqOxlpkV3Kecv7N+eyq7/AByCZ18VXnVH0HR5iMETg8KCJL8ajqZsi4U0dVI+VXdyNzYjJVr9mLFmj1YWrITC/K3YW7OFsxMq8J3C1bjs+m5+Oj7dLz15SI8995U3PvsR7j5wVdx68OvYfQ9zyL+pgfgHnMPnHQw0UNvRUTSBAyKH4/r48bi+ljKOxrXuUfiOtdwXOcYihucwzCE6xHu4XQ2I80IHdGeEYjhUv3TYrxqg0w2SWSa7yqa7kfLGD6P1tQQ5n2ByGoXkhSzvb5kSuOKqu3fTRhFYsrUr8gR9SH6jTpJnTIyQ/xcftacWohO4+yxdnRWZ6Fl9WzsE4hWT8b+UjodyrQJmXah78KoL4jUhnSoeDq6C2aguXg+fnjrYSRF/3+RnKARhlPgiR1hwSiWUIqPMzAyPdDpim65404sY4nUdkVXAqJrjkn654NIskdYmLdgCRKThlptO2FApOBuVX/F4fW338HKjExk8jfSpIxmpmBdV7zOcvL529F1a5mdZ11HWTnZyMjORnpWFtIzs8w+GoqqqLgExcWlKC1dg8qqatTXb8Hehia0dXSitb3DqKWtA+2dXejo6uGyG109Pejq7kJrB2HV0YrWrnbsbGjAo089hYiYGD+EbEek6jvr/FWFHRVHGCWOw53PvIu0TXtZat7PgHeADukwsit+IYh+MaVwK63bUvhAH07WDK7h3/tv6GKf92eCKKiB3jTkaygkORjbxajx39ZPyCZ8sqqPIrv6Z+TU/ExX8gvy6wl5bmucDY9fUPcTAcN9N3UjbV0bVqymU1nThMWFOzA7sw5TV5bh+8Vr8cHkVXjt8/l44QO6lDe+w1NvTMJDL36OWx99Czc+8CrG3fsyRtzxLFJveRIJ4x6Dd+R9cCTfiSGxN+MG11gMco+lexmHCM8YDHaNoosZiRs8w/Ef9zD8hxAZTBcT4deQOG4TN5rL0YiI5dI3EkMIGymS+0QTQtHcL0YA4nMH5aLL1hihDroeS4KQZmtNIHhsCUrWusNnQUjyEEACkY8y3R5i1aYahS+/fpcgUur2bzhLEJ0NAtEvlw8ieaKTOHO0BZ0VGWhbPQs9a6aZNiJbpq2ICgZOX8k1WdpHYB0qnoKugh/QuWYuylZ8g5uHXo84bwS/CEHkGQU3Ce3Wl4pPoNWLNW1ESlwQjD787HM6onzkUAYsISCSQpMSsnNVdWcp+PV/n/4JINJ3sEVYGBj1lcYozM4tICByMGLkWN4MctVqe+kru71I1XOPP/MMVmRkICuXbpvHljIJmqycTL4mZfGay0Z+UR4KipQirnEQlaGn9qgsrFyVjrR0bpfF6y2L+2YSVBlZZr24ZDXWrt9IbTCuSc5IDslySW1obGlBU2szWjra0NLVhqb2JqoZ02bP5HUvAAU65log0nn7ePPHISY+mSAagf/Ej8ILn09Fetke5FZ3ImujUm8ZOFlaV/+RKweRgLDfvwz3/p8t+/MG+sw/DiK5lYyKfcirJTz4GXnVB1DA3yO3SvBW4746cR4kUOhk+HlF9T8aFfC1rIoupG9sx3LCZX7BdkzLqML3S9fjizkF+HhaNuGyCI+/OZlO5Qvc/NDbGHbrcxhx+/NIuulx+EY+ANfQuxGTfBuiEycgki5lCB1KBBXps2bVHeweiutiVLCgC6bLjZAzSRhn3o/2jUa0l9vRwThjxzD4j+Q1S3BQMQRHNAvuUbHDua86lFJcRsXpuaVovmfE7aI9Q41i+HlO1zAjF2EkOfm6BaJUrqdQBJH6CxkYBeATLIfuIxtEBJSH27ndCSYb2uFy8nkkFiyaTIbIEZ34IyBSD9jfcOZIAzrKVqGzdDb2r57qb/cJ6OIgmtirfdRBVecVfYeO1VOwu3Q6Pnj5FsT5Ivhj0AWR8h5SXtNGeO2+HVwqjVuTmt10621YvHwl8opKTOk1m4FDCh94JQGIAcEvPQ+/3b9BVzuIdP59v4/99w+nvPwiPPTwE73ZaKEyroJBXSC68777kcF9CktKWbDRSN50V+oLRgdkOSIWcAqzCR4VbLIMnDTWn0ZDz8rS0oJPFuGXncnz4nONfC4wZfD1dKMsU+0nR9TaLhC1GjUTQs1tTQRRC/a0NBgItfd0YFNVGUaOG2Oue6VvB6rmBCLNBeZhoPGxxJuI/ySk4PqU0YTRFORVNaGophs5Zfvoig4ijcE2jUG2r+zX7fdCA//FoPDf0H8XROpDk1tL11J3BMVbDqNk+2Gs3f4jVm8+iIKqLgKpm/BuQdravche34TlhdswL7MK38zOx+ufzcWjr36FOx5/F2PueQEptzwK3+j74Bp+ByITbsQg3xi6ktF0K9IoDGEMG8LnQxjHIgmbKMIjhvBx0pnEEAhqX1HbitM09EtW24o7LgkeFiwkrSsz0hLfp9x0Km4+N1PqeCi3gr6uY2VZqorMqkaLoUtx+J+rvd2a+YDifi5Cwkm53Pw8xVs3j+mXutEIQpb4mdxHsyoEgydUDspkd/Jz3XRNblc8z4uf4fAihm7+5ptHoqwslxz5BWcvHP/9ILJaiX7DyQN70LZhBTpL6IhKpvRC5kpB1F1kJTccXPMd2umO2jbOxtqsbzF2BEt7DkLHOZxfhNIPz0Dh0eRf/uFNlEEnKH346WcMCkWm9GoHnb4BKljXQBTQvwtE+QXFpmOrGdV9ABBZjsiLlOEjUFi6Gjv3NGD7zt1G23bs4HI7tu+ytRVbd2xG/Ra1F9WaCSNra2tRU12DqqoaVFZWo6KiCmvWrDPTPeRpWCpNxcFzV9VdBqFUXVt3URC1ddMldbagka5I65Om/EAA8aYOGjdPbUaaGVkg0hD8g2N9uJ4Ftf9hALsuYThe/uwH5JY3oqCiA7mV3cio2YdMKsMf4FdRKxnYVzGoG9UexkoG68DMqgeo/VhVt8+/zm37KDAD66UUboZWvdZvOyp0OyMDyAPm3O3MMTNKdB8RNJSqyDSvjpRbo9TmI8ij8ulq8pRosKEHi4v3YE5OFX5YsQYfT0/Ha1/Ox8ufzMIDz3+COx55C+PveREp4x9F7Ih74E6lgxFoPCNxPR3EILqFQZ5huJ4B+wZqiAadjaMbidPgs3QbdCKOuJEEjjTKGvJGCSV0OC6ue7itO47B3lx3KmCrX5lS/in+HW354r2UXtPUONpGqf9W+r81BiLFQolX1V+U6fTMbYxD5jaSU6/5FTwmYqBzNgtnAgdB5rGhRAfkMVP3EJKClqrddH9wP0nQsWWDyMry5P0kN0QAuZ2M2S5+blQMRo0Yih++/xQ9PTtx4cIfBJFVNUcQ7d+NtnXL0FU8k+AJgEhtQLb6wkeyq+SCQFTyNff/EgfWTER76SS0r5mJ9vUL8dkrDyPBHYVE/nA+/igeT6r5cmb+GH+Pci9vNqV033rnXZi7cBGy8/KRpaF/tGRgUgnWlGJNgLKr5AIQugaiqxVE1t/UEr+Hqlh7q1mD37Nl7ZeXV4gZs+YgOVUJMLxBCB/JBpHd1qIArwFSV2Rko6O7x7TnGHV2ob1L6qTa0dHTZpZtnW1oVVuOZssVTFoFEwKkpc20B+1taMSevY2oIqCKikvpouSu8owrqqmrRweP2dbRThjxOO0tPEZzr5p1PFXRtfP43KZ+6xbc+8CDiNJ0EgSQoKqRuzUSt2ZHdmiSMq5H8L6JiU/hMhnelDF49rWPsCx7LdbW0h1VdyKHpf6sagHJhtFhBv8jRgG4CDqUACTVC0Ta9kfCw5LWBa5VBmQDgymd6gchOi8tg0Gk9cB2fkdUpdGf9yNTVWY8nxy1e5me/uqcqSo09Xs5jAJ+hwKeQzG/Q0HVQWSs78DykkYsKtiJudn1mLayHF/MLsRzH87CPc9/gbEPvoHUO56FZ8y9cAy7HYPjx+M/7hH4Dwu/gzSGmr/9RI34ke5hiCB8VGU2RNliNnCoaP7OUXShkoa5sZRCpRI8XBJSRm5Vcam6K5UBfhh8BJfaUDS8k0bwMJMdxnn9EoQ08aiT7zl4vTrpUJTWrxE4KMJDMLI7SZtxOumK3cYZ+wg+H12XRBDxuMHjKApGvTMf6JonPNxGckl0Poy1pkqOkHWZdiKJ5873nR7GXBfhQ8BEx/DYDu7vEnQSzfiLcXw/1h2PWMEnwgVftA/DCdHnHrsRs6a8jfWrl+LHI3vJkZ9Jkl//CIg0HMOvOEWqta1ZSkdDEBX/QKiEA0+wQgAUBKL9Jd9gX+m3pk9RR+k0rs9D2fJJuHloDIbzj5DAH90nu6gfyv9j2qMPyyEpg06Ny5kEUFoWYaMb3YxFZ5WEFYQsEPWF0DUQBYL01aWQ76G/o9FAf0v/fnQky1aswi233c5rSZ1MQ0GkEqNAFIcopwcff/4VGgkTy60IFDaQLPi0d7WapQ0iy820oKmFDqa5lcs20+azc/deUwWnUeM1n5amMhGEtK4MO01PboGI0nHaCSECycCNr7V10jHx/XYuG5ubsGTZcgPTuATeDwxMPt4HlitSKVhzw2gqCb0m58f7hsEuyuHDuAm344PPJ2F5TjlKatoZvBnQqxngTdAnQBjQVxFMUnrdAUJpn6W6bi57uKS4XVr1L9Qx/9LWT5YMoAi0IFnVaBLhwGWmkdyMPnsfX7c+J10SeHheGVxmCJTcJq9e7TOHUbT5EArrD3C5D0U8l2KeUyn3yVjXgGVF27EguxbfzS3Gu18txbNvT8P9z36OCQ+8iVF3PI+EMQ/BkXIHIhIm4H+chI17pGm4HxSr5UgMoWNR20ykbziiGISjfAQMg68UQ5goK0zZYdGMQVGxFEv9ZiSBuARL8XQK/DsYxdIdqFpMMlVZVsaZ2ljkLlSl5qV8/Nsoo0yjp1udngUjvwgRAyS6XLfPxX0IGTkWBnprdmtLXhbONRq8JDDZTkhyxElKYmFhhc9t+JhCGK+PgDQiiNpxWGjpo1QjHyEaS3cTy2vN6+Y5Od3wuQhJFoZ80U6jFDqxVJcPQwnLcYmJjN2puO+m8Xj3maexYOInqCyZih2Vi7C9Kh0/HdqF8+d/+jNA9BtOdG5Da+kSdBfOQE/hZHQVfWcUHkLSACCi1MFVSQtdJT+gs3QqujX0z9qF+Pzl+zHKMwTJLhcSSGEf/xChILKr58bffKtJuc1niTOdAdaG0DUQXUz/NBDp7xnynpG1Xy4LJxos99HHnzQg0k2opeBjg0gQsh3RvQ8+gm0799DpKLMtHIj8TsgAQ7IckUC0t7EFe+iGlPat2VcFH2suLXWytarllLCwm26p07iuYBDRFYWAqIXH7uzuokPrwq49ezFx0vcsmbpN9YxKyla1SwKDjlWHb9fVWzBKgk/TRLCk6vKl4q6HnscHX8/DwtxqZJe3wzTWM9Bn12nuGQKCIMhigJcya7sJC7onBn6zXn2YTurXgKqO0akcQ0bVz1wqEcLqq5TJpWZ/NVOSE0am+kwdMSt5zIoeZFV2I7eqB7k13cjWpGu1VD1fq+9B/pZ9KNh6AAWbrfHNsstakU7YrCils8mswMT5efjwuyV46f2peOylz3HL/S9j+IRHETfibniTb4Mn6VZE+8Yj0juGrnA8nc1ogkPtMqMJjZGmIT/CO9SvVDNop2mroUOJ1jTYBhxqX6EDYKC3q56iPRbgDegZ2HvBczFpO//+vdVWlBryzTxSRjaItAx6nX9Pc40aAHFfV992HA8BoSYLW4KSR8f3f5YcvrnOeRyNEK8pR1SNF8tr3Ov2sXDvNXCJI0SkeF7zcSyAxTldiCdkEmIciI+KRkJ0BJIcERjqjcSoeCduTPHg1hFxuGdsMp65ZwLefvpBfPHqs5jx8VtY/N0nyJj+FUqWTEVZ2lxsKVyBho3p2LNhHraunoXNa5fg5307gLNHjKERhH43iHDhNxzeW4nmooWEEB1R4Q9XBiI6oO7ib631IrUrTTHqIYi6S63U79Y1s1CVMQV3pcRgaAxh5NSPJjvaF0Sq+9S0Eb6EZLzwyhvIUIZUfpEJOH1lDz6aw4CUHZB5zZpaO6CBpmwI3U4Kt12wwu0TUPjA+VfpageRquSCIGSU6Zf/eXBBg39XuZLX3njLusF582lcOCuIW4kK9pA5SlhIGT4Ka9aXGfjYILJSri04WDDqoDrRYarrOgmfvdi8dSsqqmpQyEKRff1pMkdrdmFLa9atN32G2jq66HR0XBtqApAfQpTtuAQ/QUifI9jtbWzECy+9RAhZQwR5VOrlfWDgwyBmQ8g0GhNEyjq1gqBScFnSd4/A8JsewQPPf4aPpmRhdnY9lq9uIBy6UUg3lEcASIUEUFH9PpRuPcjnBEXlQeQTPFJB9VG/fqKO8LUjKKr9CcX11OajKNnyi1kW1/+I4rqDdDAHsEaJAQRdYWUn1m3Zj6LqNuRWNCF94x4sLtmCWZnl+GHZGnwxOwevfjYXT701Gfc89SHG3f0SUm58FN5hdyIqbqzJHnPEjYEjdhTjwSgGeqUcDzVVX04CxklX4yRk1PXDpX6IccP5G2k91UipyDHq/0JpXU7FbsRXg7xVVeUHgbk+WEDxt7dEM/5oArj+0GEhgH+HwGuxPD9Vi1kORa7Eqhaz3HhYySH1SoCxHJDabhwuXqMskCvBQDLtOX74GGcjx2Ik4Mi9sIAS7UCC14cEjwdmGh5nFJI0T1xMBLxRg7geg2RqmNeJMYke3DI0AfePH44nbxuLl++7De89cR8+feEhTHnvGSz6hvF1+ocoXfwtKjNnoD5vHnaVLkXD2pVoXZ9OrULbuhVoW7uMWsoYvphaiObV89BUOgt7Vs/FnnXLcLS1FvhNQ/yoH9Fp6oyR2HLsxOVOFe5P3z6yuwLNhRaIegq+/wMg+h77iqdaIojM8D+rJ6KZ+2wvmIbv33wUw6NvwDBSOk4/bAiIzAXCH18af/NtmD57PvKKAgEgIBsMoSASdEIBcQ1Ef2/Z5x8KIgEow6+g1/3bq71QfXu+/2GqmX7e6ZKbEHyCQWSta5QFaemKVQz+3QFHRBC1dXRYUOjuQFdPlwHTzj27UVVTjXUb1qO4VO1Ahcb9SPY1qHm0NmwqMx1i9zY1EjQ6liBkOSFLzVQwiFr8aifoLMkZdfV08zi1xt1FMtgofVvnbcHIdnkMYJRgZJyRCVgKsqrrpxNwDccNrtG4zkGnkHI3ht/+Iu5++lM8994MfPh9Gr6bX4KZK8uxKLceS/K3YHnhDqSV7kHGmiZkrG1C9oYW5G5qQQ6VvZHPNzaioJJgqWzCijXbsCC/lqrBImpu5iZMWVqMr2dl4cNJS/HmZ7Px7Fvf4uEXPsKtj76GUXc/i5SbH0Ps6PvhSL0Dg2NvxPXuMRjsGUeNRQTXIz1jEOWloyFs1ObiInDccUP5XdXPhUBRdhalUdZVbRkbr3maGNz5XEFeBVYnnYWcoREdjuUc9JsFfrdeGXgw1lBKBnHEeggaD0HkpdNS+4tg5AcSj98rPdf78dwnzgunZJJJLLlj6UZ4bMsFWdLkiFLgNb2vNkAv5aYjciLGFcXzjmYhiUtXBL9rJJdD+Npgfq8hBJHEdcd/kOCLxIgUN4YnRGPcMA/uHJ+ER+8Zg+cfuwWvPHkbXn36dnz4+kOY9vVrmPrVq5jz3VtYMftTFC37HnVZc7E9bwF2FSzEnuJFaFmzhDBZhMaSeWgsnUPYaDaF+YTMPLSWzEFL8Wy0F89BJ9c7S2abvIGukhmM89ONukqm8f3paC6ZhUY6omMtNcCvBBENzR8D0fkT6N6y1jgiVc11FfpB1AucgeQHkQ0hI3VqpSOS/CDqWv0tWrjcmT8Z5ek/4P5RCRgaHYkk9ZXw8o9qbjpdJLpYaJP9GUTqGf/4089heVomg446MlqdEVUSzu2dmI4govIYhPMY1PqCgYGjFxA2SBT4rGXvdnRd6jxpPbeOawKdZPos2dv3PX74oEpl871wMqAIJzsQ/1HpWGHO528v+/yvHERKw563YJEZQudSw/1oOWX6LILC6nSqKrSmljbs2rMHW3ZsQ3VdDcoqy7F67Ro6rUJzfClL0m9L+AhIAtD6jZtM1t3exiYDHnVaVZJCa4fteGw3JBCpjcgCkg2iwPM27Du4nxDsxP5DB1FeWYmHH32UJXsP7wVlR1mOLiB9HwVZyxGpk6FPw/MTSDFuuoLY4WbMsCEeaSQGuQkn5zAMIqSifGPhSbkVCSPuRurYB+mgHsaNdz6N2x98Ebc+8ALufPRl3PnYq0Z3PO7Xk6/h5kdfxNj7nkbihPuRcNN9RvHj7oFr2C0Yoo6VdDPSYH6eSQagUxlM1yJFqp8LFanqM7qZwW4NHTOMjkcJA3QyhI8cjVKYHXIJfrBoKg5VQwlC1hxS+ttyKQciIDM2aOBYDTdjqtq4nxHXHfw7q2bF/HYEgNWwb0HI/KZSnM+4G8lUy2k77ufgZzr4W7ri/DMGEPKapdQZL2fk47Zu7uuBJ9HHa8rDbR2ERxScdCYuZyRcjiFwUx6jwfA6B8EbMwg+5w2Id1tK8g3CsIQIjEmlaxnqwI0jPbhtfBzuuTUZLz99G1555ja89fxd+OLtxzDx/Scx9dPnsGDi61g59T0UzP0MJfO/wMaVk1CfPxu7Vi/E9qI52El30rB+Pho2zEfjxrnUHKOm9bPRVEhw0MG0ESZNhVPQsXomTccU6ge00jC0ES5Sa/G0XnVQXSVTqSnoKv2BmoxuWxrOrXgy2nm8xrWL8OPeMgMi1aydx1mcv2BJGdnHjl8miEz69rnjaK4uomtZiM4gEFnOxwbM5ctK+RaEtOQxSifyi35H+k7DblJ4yrvPYKw3Cgka3sRDENFq2iVXyb7pIh1uU0X38utvIT0jF4VFqwkgBgj14aACLiUX+QSJpJTaACxYiiWM8his8hlA8vP5Ptdt5fNYej0vr8i/rb2fFRxN50Wl5/qloGn2ofJ43ODXe5XNEvOAEoyCtu2VHYj/qP6NIMo3HU3H33SLmShPgcu+joKvJxVsIh0efPbVN2YInvot21BWUYWS1WtNW09OvlKw1cHVko4t96MkhFU8vqrl1m3YSFBUE0A7zVA+barSs9uC2gUfq3ovACILQm1dzXQ+LUYt7Y1m2dGtqrsWNLY08lh70dTWhHa6JLmjpcuWYuTYMQxyHgZDdXa1Cma2rHtFMLKq7OSKTNWdArNf9nvqW+Kku5AcdB0OwcqVRKWwwJeMaGcCohxxiHDGYYgrDoNd8YRWAm6gE7me+g/h8B/ua1KaCQ1bg+hihhAoEYSepKQAM6EaoRLJAB5JWNiZZ7azcEiCht+1CJ4mq8svZXBJVhsKgaOqe25nVWfJ+VnfSQkbTh+353pvW48t/a0NvBlTVMD1w0eymwFs2Y39Gh1dkyFqdt5Y/q5x/HwfYejlb6Glqshcbg+8ymLzOHguDiQmepGS5MXoEQkYNyoRY0fE4e6bh+Gxu8fiSTqVZ+4bg7efuYu6Ax+/eB8mvvMkfvjwGSya9DbSpn+EvPlfYu2qqVi7cjI2pE1FRfYM1OTNwvbSBUa7Sudhb8l8NHHZRFfSunoOATKXsdRSl9wKXUtH0SwuZ6GDIOkgNDoYdzsYdztKv6MmGrWXfGuJsbmdBqKdsb2taBLair/nc6pI+0zh+g9m3X5ujlX6PTpXSxrQ2pIGt9YYo510Rs1rFuLAzvXAbweJEg14etaaj8jM0HoBx4//fLkgIrnO/IKWqiI0CUTFtGBFpJ6B0B8BUUAar66Dx2rhl2teOw8V6VPx+E286Ab9H14wA4NI9foqycanDMPzL7yCbydOxrJlq0zwNzCgK7KUjwKCQQqASG5IcLEAk5NtO52+wdq4IULickEUrLCv94NPsK6BKLzs8w/XRnRxEJnkFf7973+QLoIgiktUm0FfENnXVESMG6+9+TaKSkoJnyIDmbQMDeGj4XyU7GIN7WOBiE6bICouXY2NZRUmG66hiQ6mo4uw2Ef30+MHkAWhQPtPoPrNAlETmtuptkYDoc4evddk1vV+Z08711v4GRswZ/4cPPfCC7hxwgQWwFSCV22BDSJJnV77g+iiYvC2QaQsLyeBYkntL0o/1mtqyBcgFNg1B42yyGwlEypSyiVlUpu5vfa35rGx4NMLRz+AXAY0lmzIGNAEvR7u/d7t1EGUn6HfQL+F+V0YK5xcOukk3QS4x+siOFzwed3wal1LD5eUT3I74XPFIJZuJs4RhfjoSCRER8M7+Hr4Bv0HY+J9mJCShLvHjMSjd0zAsw/eibefewQfv/E0vnzneXz/0atYNOVTZC2YhOIV07Fm5UyUZc0lTOajNm8eNufPw+41S7Fn7TJCZRG1GE0bV2B36UL8Mq0OAABdJElEQVRTndWycRndCl9bvwitGxajed0C7CmejT2Fs9DAZVPJLFNF1lY8k4CYQThMY2yextgcTlMoZTrTQBA0XYrDBI9pMqG6ir72S+vfGnUUTKTpmMj1ScZ4KOYbA+KXxQCr76jidw+B1rP6WyN78Gs5pqbV8y0QnTpCEJ3qhdAVgugCdz4DnDyK1op8NJcsoOWaYQ1cyhOwQKIMOJ4IFQ46AdkOyt4voP3mC00mvX/gjzsdu+m6Fnz6JOJj/l9eRCz1EUSm0S+WF58uWP9NZOrBWbJSPXBEtAtJKcNx++1348UXX8Y330zEvDnzsWThEqxYuhIZqxhQVmQiM41BJJOQyCRQctTpsJiup9h0QCwuYsmX4BBoiopKCDO9V0KYFCI9LReZdF0atiUz0+pNb7ufXAZLy4UJPgKVXivsBYxey9J7WRbUBtZAILqU7EB9KV3tIApVODCFB9Fjj1sjcdtZc+E0OMqBp559HivT0s1+qmJTG5Oq2wQma9ifHBTw2thYVm4GLZXzCSQ2KMtOfYTUjuRvCzKuSE7Ilu2IArLagrhOByQnJEg1tTbSYa3D/IXz8PKrL2H0uNG8zh10KA4GasHHHRZEdiHtskGkgN3rOoJ71muoF/WB0WsK7NrWOmaws1L6eKCx/uKKiqO78rugqHi6k7g4AomOhbJAZ1Wj2e04Bkp9zvVS0vZqb7GTAbTOwqraXQgfASeO8InzOQigKHidqhobjHgPYeOOQII3GsnxTqQmuDA8yYkJQ324Y5gPdw7z4sGxSXj2jlF4/eFbMPW957F68RSsXToVG5fTraRNR032LGwtnk+wLMHedUvQtIEgWSuALOJyERpXL0TTmvlopltppntpXT3btKE0l2pJcSlX01gyk8FbmkHJUUxFC5dGLKibyUZLp9GNEDwM9Mo6VvaxqsO6zbif/sEF+ohxl8suxuhOwqaT0OksDie+R4AY0RVZIogYm8PLOnYPHVBPKSHkl7rmCETdPL9Gft/929cCpwmic2TJeTFFzT1+EB375TJBdO4U8OtPaC3P44+wkF9S/YiU8WaD5M8A0WTsI2F7qA7VS/JHr8/6As88oOoHlmYoZQmZTCGBx9hu2W/Kf6NY+fnKtU+gfU5EYkIKkhJTMGrEGNx685247+6H8NADj+GpJ57Ds0+/YPTmmx/gnXc+xLvvfYT3P/gEH3z4CT7//GtMpLOaMnUm5s5bZLRo0QosX56JZSvSGYgIFLqkbC7VbqTRnnNy5JgowqcgtwRF+atRVLAGhXmlRkX5XOdrBXmEG6Gn7YJBdQ1El1K47yJdPogef+Jpk6hgZc31h5DaGwdFxuD5l17h9prTiMeQk2bhRK5n/cYyVGgQ0y3bsLeRTsaAxmpLskCk7DoLRgFdHEQmEaGnE/sO7kP3/m66ombU1FfR+czEy6+9iAm3TkB8It2ax0kARSOKJXM34aMe906W4PuBSPcKC2ySNbmkBYvwQdtWEn8TDR9zcRDZ0OmTEWak6i1Lpl3FL6vx3odov7QeGR9LAMX1KpIwiuJvH8XCgdKkw8Eo/DkPLCt9OZ5uyaouc7lccDpi4JG7cccgzhWBePdgpMZGY/zweNx32xg88/CdePeVp/HVh29g2jcfY+7Ur5C2cCrWLJ+J8uXTULZ8CqoJmy1Zs7C3ZKHp2K/pcBoK1b4yg4XnGehYPQutRYRG/vemSmr/2v9/e+/5n8Vxtn//Kc+L5/O8+N2/O8WAJNTpxh07tuOaxDV2bMeOE3fHThwnccU0UYTo3QYM2KgXcG8YAwaEei8UG5BoasdzHDM71+51aSUkECBjXeLLttnZ2dnd85hzdmY2i9MFZD4NNkUjh4KRN9fzTFiQl3ho3ngrbpu+SqAqNDGHcarqTJ6FB22oHWBa43vOpufhY+wwjb/DfqLHYavKGvU6JYdeUATa5T6hrRbZFDba5FBor5tyZb9nRmO+SWeFqJQi2/hdIYXoiHVqzlmIOk9RiA4ZIaopWIbmggU8kHu/Q7zm16LBiFFfWBESTrUd5quu5qSo6nL7CnmBts/Dqhl/w1Xj45HKmyctNQmp+vIfb7YEvbxMmRJBD44GTE1JncxSz0QkJaYRGpgE3oxjNQyG5tMQN4YPa3wy1/GhSeDDw3DGOBG14dfYdipJpaVPwvgJV2LylVebz01PmnIN568l1+DmW27Hrbfdidvv/B3uu/9PuPe+h/D4Y3/FM0+9gKefeh7//ufreOM/7+CdN+cgY3YmMmZlYlHmcqxcRjFbtQHrKGbr6Z1tolcmMcrJLjDTD+l9ZdP70mgAqg6076603r6/UpWgq+ZzVX6bKSwGltJ7YYyxwnuYakftKyG1UwlpLGYb2cT4LXY5LOyFwwmQI3AeERESQSHSvIe3/X11dlZVKvPvvgcegj73HSZE8rRTWWiRED317PMoLC7Bdno8GgVB73v0zkgdVt1gpWYUBQ+7rP5EvlcUFCKNsm2aa9faJuB6z1Pf1EABsq3w9h3Yj+0fb0fGvAw8/OifMOUq3sPpiRSe0Yij8UxkKX4sSUxJpCBpyhJ+qoSIRjYoRMlWiOIoQiJMiKxxt1VXItInJcnro+KgACXyGdPnWEzz54gQOby8M0Kk9ykSIn1PjGlR2kmcNx09zjLKkGwYnS5SKUT0iJhO4xExffE8jukMmqh3VBMQr340XHYdQfXcmi/u8nlN4fFF4tgkikwSEukpJqsajWIzkce9amIabrluIh6+axqeuPc3eOGxu/HWS49i8VvPY9OiN5C/ejY+3bwY32SvxI6cVdhdsA57i9djX8kG7Nu2AaXbN6KieC1qClegtmgZBWEJ7Z/ew6jFWCYqKSw1ORmop5DU0muoy5EQ2EJ1C21YE424KVznCC1zG9E2gwy4Wafw1vY1MT6hr16rdbGrOmukp2LIpaiQFh6vhfE3E8XTQoHRJ3e03dFEm+ucBCtSTAP3a2Q6LZzPdmljWh0Uniadi6YezRTMZi9tUXC90q0arSCtPPZBpkFCpOrEhp0FXtXcAIWop6cnCvRwh44TQHsrhWgLL8JytFCIWgqYMG/k7cZC6xI66ilIYQSFKBRlvITILFO4KFBV9LzmPXc3piX+f7gyhTcZ3WqVXONTpxKN3zSVD4uGb9FnI/gA86GRECUn0S0PYOqNPcEx7e89VGoy4y8JbeMDYTDbJFI0XII3vx4ArVP1jt41iPg4Clo8t8VxmxknT0NdjEMKSUuagAlpUzCe6bruqhtx87TbcOtv7sBvb70Td931Bzz4wJ/w5F+eNh7Zv175L2bMmINFWcuwfPkarFyx1rzrklhJqCRGqjoUqjIUZjmb4kVcXxU7UKcdYUKfMRBujDOxRSJHj2zLhwqbS4Fh+BDcdhPmgxzGEx5usPT2APsgSoSC9CNEUestGylEypOly1fi+mk3UYjUa53XyxOgoBDpXaNaY77+1nRT3VZeKeFRdVkdxaMhIi7OAxLyjCRQbtm2tGtCfWOzmWqdpo3NavVWb4RIHVUPlJejoKgQc+Zm4M9PPI6rrrmG9yDvJ5beTa963eepiT6mSa8dziXJCBENMgVIQmTEyHhCEqFUGnN6REStxWxVFcXHm+p7X+qrksj7M5nGPnXsJHoILMAlOmj0PZK8zpR6P6QxyJzXZJFACHkg3jEoSlckjsUVSfG4IiUBo5nuUWkUofQkwxXjNJUAyTOy09EUsdFMa1wSvaEktYZTyzgWKpOupPcyFSlJU0w6U8byfMbEI+HXo0z/mEnMhyspZFPHpeAqHueO66bikbunUWxux+vPPYjlM17CxoWvoXDN29j94WxU0jupJjUlFBJSQ++lumAhhSWTArMQdZrPz7TofUsEeiZqIaYqMHosdfRk6ig0tbRVeqGvqivzDsVMCY26eX/iTYPVWCpox2LEx8PYvlgihfiYwjyPFUtsV5oo2yvb6tZ7aZNAWkGZY4QwGgmdphJNzVvxbGaaeguRFbggLRSh1hx5cBnYl7sQDd/mA6cODbxqrn8h2syLtowiND8iQkMrRMp8P8NEPS982dYMzHrqTlyX8r8Yn3QFUtNUCtOH86wAJTkBIqn0jFLOKkQSHNtCJlFVfmZe6wN1y3poJVZa74UVyVw2YkRRSqA35UaajRxLHc60TgP/kRRuS+X6dD78SfTIxozS56P5EI7ig0o0L5FLS50QYfy4yZg0YSquv+4m3HH773DPH+7HPffejz8/9gRefvmfeOedmViwYCGWLV2B5ctWYuWqNXh3/Ua8t2GjeX/hBEgG2PZroVdFkVLLL/OJBL2voig4cdlCoRFRgvGTESIS4wX567fgw61bsXL1Gnqvd5vrp+ttOytGC5GQCGn6zqw5xovRMDz2e0H2m0G+EDnRUZWb++Cd9YgkRFqnfkhq+q14tE4e0Zdff4VlK5bjn//+F+64+y5MmDSJwpOAUXFjWKiJNyKTQg9Bw7xEiZDwhCiIHX07IEREU3OOJFmCpSm9pWQKcFJCAhLj4pCSMBbjElMwngWqCfGE9+V4CpMYx/t1HO/hcTT+4+gZpfNZSqXg6B5OoeBE0DIFKoUCJVT4UwdaeVy2ajCVno2EUZ6SPCahfPcKfS5tDJeSpB7/hPmfEp+E5DFjkZ6QyHQxnfHxmEJPcBq9mzuunYyHb78RLz52H1579s9Y8vYryF2Vic82r8Tnm5fjmw+XYU/+chwoXoWKElKsKrSlqNu+hCxGTdECVNMwVtOmVNPIquVXHZGxVMld075ROP+9SER4wqDhdsY+KES9RIY4EZIohW0P2sKITQw7ZhgK62yvicuzrV7cEiAnKOFCJGYYb8stNxuhkfAIl/6zCVEm6o0QHTxPIeo8iTOHqlGunrS5WWjhRWviCbmquYGIkIjN0N4oo7zM8tBFbeDJ7Hp/Jp75w7W4Ln0UJqbqpeN4PiB6SCZFSPNI5wOURlJJCpdTUuTWq7pB4uIJjMQoCoqJ3jHF4MJaj0mGjA+T+jBQhBJU3ceH141ea4Zl90qKkSoPCZCpMlT1giVVVSJq8cNSXuJYxmmqDmmAWCrUQ54sb4zrJFJ2KHWJl+q6U0zT0YkTrsTUqddSqG40YjVt2s249bY7cMtv78CDDz2MJ578Gx7/y1/x95f+gdfefAsZ8xaYfjQyyCtXrcOq1e/h3ffexwcUmdy8IiNC6zfKcEuw8ilY9MC25nO7PK18ZHN5K6cKL4xoSZwkaAE2bqL3JbxlNdAQoUJzNkJFyBGspuuNadFIL1CNSDZs3IRHHnvcdgA1/UzstXTiE93wJc10BVj//hYjPHUNzRQV1+jA4XtDQuFsGCtATnzKK+14c2r6PWfufPz1qWfMNdIYcXE0sGPiNaAlRYSl+yQaaa3X1IwvphZd9Hai6S1EelfkhCiZhbP0CRQMTuPjRtOoxyM1IQ7jxsZhYmIcbr5qIp750/148oG7cfPkVNw4IQnXp41l4W4srkqMx/jRVxjGjR5tPts/IT4OE8Ymcf8EikIcUuNHUcCuQHKC1/eFx0geI9HgsUkSSYxLQnz8WBJvhv/XNFktXseMQVIcvZlRTBfjTeP6tDGjkB53BaYwbVOTxjA9Kbjjmkm4Z9pUPPH7W/Gvxx/AnJf/hqzXnsOaWS9j69LXULJmBr58fz525y1DWclqVG5fh8qSdSjNXYbKAopOIad5WajIno+qbPVzmU9PZ4FB41nW0I7U0nBaZplpPXHvbOz7mj6QkATsU6jhd9BmOSGKCEofnLcQmWOFYwv1SgO9H8bVaKZunk4Ehag5O8PQrxAZnBA5ERq4EO3NyUTdjjzbfLvrzHkIUddJtDXsR1nRWlTyIjfzoqkOMZI5QyZEIWx9i8fjydGt/mpjBp77460YzwchPTGZpLHUxtJbBJXiPOjiGzEaKiGiCCWo+adBImSFKI4lSH3BUKjuXR3c9Olch/nErsF/AWuHEZGXZkUnhQKkqUP130lcJxJ5HHlM6sMg/O0SRBoub3sC80PDvmgsMhm5MRqpmct655U2fgImTJ6CSVdOxeSp1+Cqa6dh2k23slT+B/z+3gfx8COP01A+h+deeBn/eOU/eOXV1/Cvf7+ON6fPxPzMxVi8bBVWrH4Xa97diJVr3sM6Ts0XUOUtEYmOPKccilq26cdFsQp4P65hRnjjjD4IFaCBo/df6sf19vQZzO9Ukx+RcbyIEyLzcpvXSegd0R2/vwff7NxDMWkyBKvhJEQSHfvOp8F4S6qC07yq577esdP0JVq0ZBmefvZ53HTzrWagUl2HOJbwg1N5LJq6+aDXLW/BoS9cmmmoEMnboKE31XTyinjNKRrpiQm44cqJePCu2/D6S89i45K5+DaHBnvbJuwr3ogdW1cie/F0LHz1aUx/9mG8/Ke78ee7rse9N4zHb6eMxY3jR1OgfoVrUn6Jq1N/iakp/4spyf9Dz+R/MDmV8yLl11xHb4XHnJKUyGkCJnJ5cnoCJqXFcRqHayYn4TdXj8cd067EH2+7Eff85ho8fs9v8Y8/34uZf/8Llrz+Ala/83fkLn0bH703F19vWYzvspdiN4VlLzlQuJxCswLV2xajalsWKovmoYqCUl04HzVqNVYwHw1FmWgpWoT6bHo0H8qwziVz0EJat3JZIuJ1tqxnoVleQl2erVITqtLq/+sBltgwUWIQCw32wITIN+oSiNAw3vGC+MfyjxNGMB5fNHwkRMonQ59CFE20EAW50EJkdjiJow376PKyFEIhMgdWqwqXORdQiA4VzMAhtRxh5tTypty2aib++odbMJVe0TiW+iYkJmI8RWIcjXY6vYw0GnhVJ4g0ik8qPRLVidsxnCQsEgCJiweNkYHrfQEK7uMZL1XH8Th+p0EafU5HUwjUyifSBJUl7DGueSoZxbhNiyC33TOAplRuBI6eEAXNiIuXJuN9mSnDSnC8qVtnqhg5demSIEmI9P5DpWxXNaOPqdne9wyvprJcHk1D6N6HaLRpzcfT0xpDj8vEyTSacfyY9nE0ohp77Ybf3Iqbbr3dDKc07ebbcOfv78Wf/vwX/PWZF/Dk08/jWQqYhOudGXOwYOESLFuxBqvpdalBxsYNW0yTddds3TTK+CDXoKbxev9lmsjL++I6t93vr+XjREbzkcYaJChAwq63jS0epTc0Jp7nTDHy89eJkFqj6XztCARjEpIxZ/5CVHsiVFXbaITIeTvuvY9EZ/f3e7Fj53emUcP8zIX4y1//ht/efgemXn0t1GRY10KeTzy9CnljmrqhXOT9uBGX7byPPg1grhc9G/NFYm5XtZapFqbgGBFSjYCq65LieO/Q2xg7Gon0VK6+Mh0P/u4WzPznM/hwxTzsLNyE3SUf4PuiDajZvhbVRSuN51BbwgIln+VyehWlhavwPT2M77IXUwgy8fF7s5Cz9N/YMPcFvJfxAt6d+yLWznkeq2Y+h5WznkPWm39D5uviKfI0Ml97hjxrp68/i7UL/ot1mf/B+kWvYevK6chfOxsfb8zEzpwV+HLzInozK1FapOOuwIGCZajevhI1H1FsSpYyTYtQUZCJysJMCg7FpnAe6ornob54LgWHYlJEo1pAu0CaKCyiUUaPtuEQDd5BTluzZ+EQOUyOSIxocOtllwp92yS74oy5hChoQMPESOuCYYL7h0KDHSYG0XBbIN5LI0Sx4hMkWoActmru7MRWzdV+nQOcOF8h6mjD0brvzU1bmUMhYoIujhCp2eHbaMmfblrWaTyjxvxlKM1ejnUZr+KJe27CdePjMX4s3XyWylJkZMz7GopQ6hSkpk3hg05BUVVYKo0Np2rQEMT2IKf3kqhm4LbZqloKuQYQSR4J3B6XQA8oniVWip7EQYNlSpBUFx4cHFFDsY9R81TOX8HS7CgymmGEwqoKSAJivB7POBoD6RlHYyAZxnVMdJhtFA4XxoazYRPVaorGzgmR6QDM42qoEg1Rorp6u8x40hgHcaKqTsFCHf7M1FuvZU3H8BxHU+hGeYzmstZFwhGlQe/WJkyYgokTr8SVU67BjdNuwZ13/B5/vP9PeIg8/OCj+MtfnsJLf38F//jHq6aZfMacBchauNSghhrL6H2toYht2PA+hcuOUhERmE0fGC8nL7fA9NdSn65N73tVcVs47wmecCJ3771/RArTlZY+MdLYxAqRquN07VXAYGGD98dNt96Jr3d+j4rqBlRU1aGq2no+EqO9+w+YkbOXrViJ1954C4/++QnT+EFCIpGzno3EwhOUFOVHUGSs8Fj89Sm8DkKfxBcaVV7f39L3auTNuvHIFHcq149LT8V4eh2pyb/AuNH/L+65KhEv/fFWLKcQfLx6HkufS1BVsoiik4VaUaiX8Br7S31NNMr9PDTQwDcUqdqKRp4Gv75wAddlct1CNBRncUoPg/s2FC8mSzyWkmWoK1pKNKWgFROKm2UVWU3hWEM4X0iBodDUFiyFxiSrzmM6PNSkuVbNnU0TZa8fDL2WOnkthlmcp8eS/w7naXALaagLKTrEvZduUZPlPE3n4CBpNU2Y5d3QVtBumJZj3st9Y3sYp2md66Ahl31ReLU2s91LYu1POFF2LfAOqL93QaoKswLQ22iLswpRX9sHiN+wwE+HbcEXFJ8wbGMFP53ReRGLtiucL0RzTN+pum9ygfZmT4goNIOvmmPgzuM4Wr8b+wtWoCp3HhopQhenak43lkZhEMy8PIqgbubcxdibnYXvcpbi/azX8Y8nH8DdN7PkPnUSJqXxgU1IQBpL/2n0BsbTCI9X/bnW0zhYNFSHHa7DNDQIoM9OpOrlrHn/5L2oZTi9nFUTcH0RcSxL2Aks7Y7lMRIogPH0ytRbW81oDaouSUum8U+i0R5riGMYfQXUei5WLFTlZ6raAiJk+2lQ8JhO1x9EmGVvmyMoRPpQmprwmg+mOSHiuYs4nvsYlqbjOTUDNtLgmWNwP/PVxYCgOFERtglwujm+xtoKYpoIe/u78DLwOh+951L+murDBKYn3pLEeb0LS0ubwOsxERPGT8HkSVdFmHrltZh2w8249ZY78Ad6XQ8++BAep+f1/HMv4tlnn8e/XnkVb781HbNmzcHCzMVYsXwNVq1ah9Wr1ppPdL+7bgMFbDNycgqQm6M+W3l45JEnjACl8phGhKKEaDxSxmn0AF4DpmfZyrWoqmvGgYpa7Pzue/P+TNVsL//zX7jnvgdw3Q3TjGiMjlPVZ4J3HeWtWHHRNg24aYSFy0GCjV6C630h4rwYR89+HJd5/XR/adj+dM5P4HUce8UvcWVaPG6Zmoy/3D8Ni157Ep+sm4XSAg1QuQY1ResoAEto3GfTiPN55NQyJ0JjQQYNuiW4PgKNvI+e6eAy4zVkGPSZ/9rCuWReBPWfkcCpo2U9DV8djV4dDVodjZk6RppWZhSMIBoOJpZ6iZDZRjsgEaFQNRXOodjMM7QEOJg31whSM8+5kfvZ/R3KB50bxYBTO6yYNcS+EPE4AdEy5Kng6yMhiFoXCXc+QuR7Y9bA8zjmWIF9nS28YELkCBMhESNEJp+ccLt8s3kn+hKiGnlEbUMmRMspRPMvohDxxuKFtTcPM5I3nKGQglSyGFX5Wca9/54P4udblmLz8pnImv4SXnvuETx5329x5/XjcMOEBExNuQITx/4KE+J/xVLkL5B6xf8iffSvMFHDo8eNwcT4OM7HYZIYSw8rfgzGxY1GOqfjE+ORnjAGaXGjkMblNIZNHxuH8Umqi+fyWIZJSaDYJVK04ilYY2iEE5Ccohe1nCYn0UtT3X0iEscm0xBbklmCtp/8tUIUFCFn/I2x99BycLswXhH3tUIQLkRWfKwQaWp6uNNYxtH4RQTOeHa9hcgdU4M99hIiou0mjBfeGPlA4wsJUjo9jQnpkw3jOJ+k7eq/ZZq+JyF+TJLtG0Jc4wztN2ZMAr1PGnvmW4IRfkKPT+KdzvRPmHAlrr56Gm64/jemscbtt91F8bofD/3xMTz55LN44cVX8PLL/8bv//AA84PxeX3GnBBpVGpTHcf0pDBt/3j1deQVbcfCJSvw16efx11332sHSaVXqKpSVVVKTEyVKq9dKvNx3Hh52xKUMCHSOrteWCGyuHWRMBSnNIpQ2jgWknid0lIoPizEpLEAo/trEu+nG8dTfO7+DZa99QJKVs/ELhbESguX4gAf8uqSlSjLW4zynCxU8/ms4/NiDKIxwNFECRGNu4VhI88wnzsackPh9F7UFwmKBKmLMD2C3c55hc3n1PTUd9je+/UaUiaAH78VESskns0waWK6md4mpr2ZAifUYMrRaoRI22QnFN7f3xcixpEnG0IUzhhV6zXZeWtzIvsFhMWJS9Q6xmvfOcWsJ0EBcA0DeguRjks76i1HeRoMFyGyjucRXD8Agsc1DRM0jeBXt1nCRMjhvwNSfvkEBcmm8wIL0TEcrdt18YWIGdZID8x6QsTcbFRybxwjueZ1XF9TQFEqXoEDxctwoGQ5yrevwu68JfjkvVnIXfIGNsx9BSveeh5zX3oCMylSb/71j/jP4/fhnw/fjRfuvR2P33od/nj9ZDx801Q8RO65dgJ+d3U67r4m3QzvcdPEeFyXNpqMwXXpFKv4/6WA/Q/Gx3Ea/wvz8Sj1cRqnUXRH/x+kxP0CaQkUvUS1WkpA0qjRSKJh1beV0ln61gep9HEq87GqPoRIOKEQsduEESKDhMCKT19C5IinNxRPY2lgHFaIfDGJEDimvvgYO1SL/QpkTDp0LjT2RoR4nqkeem+XKk/TW07xwjixch6UUH5YIeN5qDm13q0wr4T1HLkf06d3dxpnTC0YFV5ClpggIWQ6Epg+zidwXt6O8360v8U2FtE6jeIsb0jvva654RaTF6MpkKa5P8Oazs3jJiF9/GSKjBWaZJ6rRnoeq3dspjrOFxfnDYV5P7FYYWM4etOpvDYa80y9/1NYIJqYOhY3Xj0JTz/+IOa//U8ULs/A/uxVqC5ag7ptK1CZvwDVhQtQr34xBZkUHw3Dn0mDO4/MjRjfWIJC5CNDz2etX2hkSEMRKeazH4GGqJgiUkxBCVBfRAokNFaQrIdjvZxou8A4nPB53k/0PAujXjqbSLPEiEh4YmmW12TC+/sakXXnTmyhlkaZhVzb0ZP2xMwzLG1OJF0h4hK7ri+CYuB7II6LK0TuuL3FZSZas316b4/GT3cQCfnAhMi8I2prGgKPSEJUeImESJ8m53GNSy0Ryn8TR3LewOHct3CIN1qTxl5iSafCMNe2rCmaj3LNs9RYVbQKNcVrUL99PSpUjZHH5aL3uG49t7+Hsty12PvhCuymV7V7yzJ898FSfLtlCXZsWYyP381A0eoZ2LzwNazL+CfWUdSWvP08Fr3xHBb+91lMf/HPeO3ph/HKX+7D84/ejacevA2P/X4a7r1lCu68diJum3olpk2YgOvGjcckeizjEsYiNS7ewhJ/EpcTVcWX6PeOt4O82nnTKEICQ6Nme7H7AtGXEJlqOpFCL4hiNMaIEAVHVXLpEygiNMDE9rynMWdcdmj7GHgsI1YUnTEGDctih2hx6zR16dEQ+a76yzZFlwjZBiSxQpTsCZFa/CWN9YXJVO2psQQFwXxdUl5a/FjjEdnOx05MJCwTGFZVp35Vq4TI9RsbE6dOx8y3foRoDLenpE8y+aiR3K2g2u0apTs1XV6PvCEJDJFnxHNQupVW06+M+aRGBfqEvW1goAYQPB9iBceKlX3fo6lFTZuTEnleCfGIH/VrjKcQ3XzdVDzz2P3IeP1lbFEfmZz12Fm8ifcw718WrurMd1/4TBTNQx2Nk6q9GvPVklWFNdUY2BJ/UHyChAtRAD5LjXx+LHzWCxZ4aN57v1RIoTPQqypivAYavyLaAAPnNTKKJwK2D04G6jWMjWF+AImmUFWhV10YsCdCaTZpJ76QhGCq32g3jJC5/W0aeu8/IkQXUog0+oMvREsG7xH1/nEHCtGP1Tuxv2g5Df4C49Y1m3pVe3D3AlAvA926IcFkKG8iB9e5IS6ac+kRmQvppYM3oW4C9Xqu441lHlLOaxDV2twMLvMBYtrrdPPnzOf8QkN9rt45WWrzFqEmP4selu11bXpeF2Wx5Ml5teQpWWioLuG64kVkCSqp9voaYVn+YhzIXcxS62Ls2jQfX1PAPl81B5+umIuPV8xDbubb2DznP1g/619Y/O+/IfNff8Hbzz6AFx66BY/efRXuv/Uq3DltMm65dhxunJqGyfSwJtHTmpQ8GuM1GCNJjf8lxsbrw1h6L2WFy4hPCj2HNHoEFInEcTSkEojUFFuFRmOob6+MZak/kajzrxn2X32fNCwSUSONuJRJ3GcixcUymoyi0R1ND2CUYRzn040IjeFxzLfxKXLuPZRDgmkML0v6KR6pNNjy/tIoLNYT5HoPs56CkEYRsYJFY+0ZelPN5wy+JyL2/Y4VCn8EZoUnFCEz9dZLUNTz34pWGPKYKOKMb4zEX0LKvFODEPcZccVjwkqIKHAppjWlWlZaj8mEYT5bMaL4SIy0nXlsBJHxJ7EwkUTvLpXTdOZRSnICEuOvwISxo3BjWiJ+f/VE/PvPD2LdzDdQsmoB9hTwfirmfSXvng9xhffRsWaKhCv1a1it1iJ6AjT4zrhakeE0Iiw0RgMiuE8QilLoPIWB1HHfaALG3+DNM23RONHxhMdhquCEn7aIoPD5duGCgmJFRVNrgxxRdoT2IOrdC+eDrePCWsoNFb2N9/njxx84p37wBYl548UxuKo5H9t8u3eaRPR5axgiX4hqv8lBz/FGaslpX4SMEHWhbWDfI7JC9EPVDpQWrbjIQqSMDsY5wyhuVOlhMAQuTiRuipQprXnU8uGw3+ugiHnYF7RqyTMzgJa1ng8kS3QGlkprcyl2NBx1efpq4VIK3XJuW4nmbevQ+vG7aP3kPXpmK1FJ8drHsN/n0PDQ49uTt8x8irdg5TvYsuh1rJ/3Kla+83fMe/VJvPXcQ/jv0w/hhUfuwkN334jfTpuKG6+dhBuumYSrrxxnvnmSlhaHsQm/ouEcxVJ7PEvg8Sx1J9JwJtJT4HYJgl6uxyUiOSEZE2hITXN3kizDTUNrqqpogONZohdjopD3M87gquVML/kYIu9B5M14OE9IpNF4S3xSE+khGShCXgdkQ+JEs05pMq0KPS/JeTN2OBnXDN/ihEcNT4Rbtn22/HC94TkwfXHMG9OqkGJiBZWep8SbGNFJFRTJ5InGA1NnamEG1jTo3J3XYz0f+80a5gW93pR4eb9x5l1jOgsSN00dh8fu/S2mv/A4Cyf/xe7NK1Ceuw5V+RvQuG0jPXXeP8X0eEgjPRBbJUVDwHuuhfdec6EHl4Ojm/QWleD6/gjuEy0EfdFA7DdoookIxznS6zhmvbwU1baosGk9rMYA6itkxrrkM27hPsHn3uGe+7BtF4gwg32++PHzXKJsWt/ECpEw49RdNCHKRfex8xWijmM4VP6VqZq7qEI01MRcHMtAhMg2LY166IwIab3Ccsr9DHkSJXpdBZl8gBYZ6lnCrafwCDWDrS9WQ4sF9LgW0ONaiEp6XqUUJX2St7x4GSpLVqFq22pUbV+LSlJesgalxeuwt2gNdhWswmdbFiN/zRzkrp6N9xe9hZVzXkHW2y9g5itP4L/P/dEM7qjqwftunYJ7fzMFd98wAbfSy7pxYiKmjR+Lq5PHYEr8rzEx7leYQNLjf2XeaaWQpLG/MoI2NmE0jXqCeX9hUCMLGmwz9p4EhgZY73aSaWzdex5Vxanazb0fcu9+bPWcquY09arpKDYWdTyeHEVqoudN6P1NLyEabzy6oKCECZE6G5uRm71t4YJkhUiNNawQOc+uDyHiuUhgVGUoYU+hF5XC/dQgJZWCr3EQk/VeMDWB5zGGAvRrTEgcheuY77+7YRL+/qc/YPHrL6Fk3ULs2LoKpYVrUb1tLeq3rUEjr7OaPdfkL+X9xcJMkasGkxj93IXIVfn7jQOCz7CMbOjzHosJz/jCtl0gwgz2+eLHz3MJ5EN/DJUQBRsuxBJ93k6IMnCgYLHp0Npj3hGdsxD1AKd+QP3uj7C3YCn0KdmfixA5oRH2M7i9HzyH2c79XJVDo3lprH4aCwx2OHg71Eikqau8KT789eZ7InZax/X16tNRuJDLCxluIddlcb/FnNd4WSxdUKxEVZHefy1DdQkLCKZj4CoKlxptLMeBwqX45v0M7Ng0D59vmI38Ja8jd9Fr2DzvFbw34yWsfOMZzHj+Qbzxt3vxr8fvwouP/BZPP3gTHrprCu757XjcdkMabpiUghsmp2Jqusb+ugJJo36B8UkUpzH0usbEUbwSkThqtHnXNS4xCeljRSLSOZ+WqKbHSRSlJBpnzuuFvEcajXcavQgLvSR5D4Li4PA9qkC1nOe1mdGk6Z0IO5ySFRaJl5DwxFHANJBmvIdEKShCRuhMnHrvRvFJSw4Ikd7HqZqRx+axLBRXCpRt1ZaEcRSdtGR6nomjjejoWzZpCb/EpLRRuHZiPO674xq8/PT9WDD9BWxe9Q6+3LwYZbmrUV24zvS3UR+bmqLF9IAW8fqy4GJagmaShaZVqHtP08R7yAlRf/jG++IIkXAiMZT0dYzIuxuP0Od7GBJmsM+XsOOcjbB4BiNErdkW15zbIS1w8UUfzwqRCuf7NLLCt25khaEQIpbWLj8h8l8yil6ekESmiA+F0INhXsqGwHD+A8VlipI+VmX7XNhOe5aguNnwqlZQZ7yWPDvAoG6Q5pwZ0LDxpiTDdDXnzjVEmrB7qEmqxuLT4I3qs9FYNB+t2xfj0MdLzbBI9Xq/lTcfVbkUNopXjTyz4hU4+Pl7aPn0PdTQ89I35ffkL8aO7AX4KnsePa452E7xKn53FgrWzMQHy97Amvn/xKJ3XsDc117Emy8/hZf/+gieevgePH7/nXjwzpvwwB034v7bpuH26yfjGnoAV09OwtSJCUgZ+wskk5RES2rSLy2Jv6YBvwLpyaM4Hc1pHKFxN54FBUteBj0OvVdRnxozzJLxUuwwSvKKRH9CpM9COzGKraYLCpGEJ55CFHznJSHSex/bwk3TVHo9TE+KvJ1RSB37SyTH/19MSh2Fm64eR+G5Hi8+eR8WvvMSNi1/B9u3LMTOktXY9/m72PMJvZ985nuOoJes95Omk6mMPh/sEl5fYlumaWqFwbUS07zEpskzzk583PKlwr/fh46+jjEiRD5hxzkbYfGcrxDFxhd9PPseXwX7vRpZISJEJz0R6qS0dFBfJEQ//MyEyNQdxxAiRLbBA5clJiEPh3lAPAHy18mIzDCYoUdoYISqMOpjKZK4cVuRt0+B9qEA8VhB3DAm9uW0m3fLDm8d42020GgVUqRUujWlaZa0KU5N9LKaS7K4LA9tPtPFKanOn8sSOm+U7VmoKuYyS+VV3KeChrKK6+u20RMrWYQq7luxbQnKStbhQMkG7C9Zj71F72J3/hp8m7MK32avxDcfLkfxmrnIXTETG7Nex6o5FK/pz1O4HsHrf38Y/37uATz72O0UrxsoXlNx92/G4ZZrEkkyrp0wBpOTf4kJiZZx8b8gvzRVhqlCo2fQA0lL0jdn6IGoGozziQmqDlMDBwoLBSiZgqPqNPUT0mgJ6ic0Rk275UUReVUWzTNMmr48OsFWz1H0TKdjzqsaMl5x03tLojjqOzdX8vg3X5mKP9w0Gc88dDtee/qPWJPxKgrWzjPfs9lDb2d/0Rrm43JU0Zsty8lgHs5HdfF8M9Kz+aqxChZ6Vgp07fnsFNOwFr6DRk6beD9ZcbH3junAyQJLkwh4KpoPLg8O7Rfc1x4rOszwYUSIehN2nLMRFk9fQuREJ4i/nbZJ+3px+O/lYo9pOwvXSIhY8Gr8vhg9Toh6JEI/ayEKIZc3OQXJUctzUKs7zZuWOnwIQh+QXkLkHmhbbx8srbqwsQT3Cdt+TtDImGa1Bv89g4/X7JZEqhW9fc14XO6hZ964Ma3cwJAS6ro8Dc+ib7Zkotq0NMyid6f3X8sYz3KyEvUlqyheK1FTvJICthLlJSsoYGI5Pa9F+HLTbHz1wVx8unEWita8ge3vzUTe8jewPuNlrH7reaya/iJm/vMx/Otv9+DFR+/CM3+6HY/efQMe+O1U/P6mibjt2jRMm5KAq8eNwpTUOJKC8fSgUsYmIHHMGMSPHm0+eWDgOvsOJ5mikmRExY5mrf5WyRSyZIpYKtLT6B3Fj7VVh0mJFD715xmN66+eiN/deSOefvT3WP7mSyhaOQtfb1qEffmrUV68DuWFnBbwHPOWoSLPDmfTSAE6yIf7oB7WnOlozH6bDy3Je4twWvA2r7ntyNmofjlFzF8WTJqKKDDEFmq4L6+H836iq83OVo3m7quwbdpH+7plhdPx+tvn0jEiRL0JO87ZCIvnXIQo2Fih/0ZjatY9nQWyDHxfsAgtpR+h+1QLdaedknLGB50Dr5rroRDV7ZEQLTNCZBISaDv+kxYiErzBa0mdN+8egtAHxDPeYdsGKkQXhAsgRK5vgD4z7Pd/YIlH1Ydcb8f8oidmsEOw6AuT+nKl3rs10tMy0Dto8Ob1zX19e1/U0+uqL1GV4RLow4s1hStxYNsq7KKwfct7bmf+Cny1dTG++DALn27KRPG79LpWzsTmJdOxPvMNrJz9Kua99hzefPEJ/OOJB/DX++/AQ3dMw8MUkD/85ircenU6pk3SCNG/wiR6WxMTf4EJCb/EeHpdE+h1Gcb8AuPH/F/cMD4Bv7t+Ep5/+C5kvfV3fLhqDgo2LMAXPH6lBgstXIGKAr2fW2HGWqukGFflSpR5TqTe9Hvjw6uHW9UTFKImCpG+rikhasynGAWFiB5xg7xoCVGxxYqQiBaiSH8d7/qFC5Hd3xeX2O19CVF/+1w6RoSoN2HHORth8ZyvEIUdx0f68I55vr8vXILmA5+g57S+RyQhOu2DjoF7RD2nf0Ttno+xR9/8yM/0XLGflxCZqi9jELwHxDPeblnVY85oOLQuGPaiECVEZyFsf++c9XVclz9WgKyrbUv1b0ahgWk12oW+U3+Q+Sb0qWAnWM28IQ35qn7kA6BqqUDeyjCq+lCDcqqflxp1VBWQoixUFWpE5izTBLRqG0VqOwXgo1WoplDVbF9tppUlq1FRvIphLKUUrl0fLMJ3W+h9bZiHT9bOwsdrZyJ3yX+xftbzyHrlEbzxxB34+33X46k7r8Tf77kOrz16G5a9+jjys/6Dz9fNwr5sHlfftylahnJ6cWX0BCty5lFs5jGdtl9Pfb76o1HcIx01KfIU3yY1KTbYh9aWHFVCtKML+CMJqCrX5kEzr5v6BAndO2ZQz8C9ZIQoBisoDncvKj4JinD5G2REiC4mzmgPJWHHORth8QxEiILr7DwLRwzv4uhdJRdkBp/jeSjlM/pj7bfA6SNe1VyHz8AbK0i4jqFm98d0sVagKn8hHyzerCNCZHDLl50Q6by9a2o+gkgaKST1BRpH7G0PO6ZYHUv0dTRi8q6soSM6dxliQaPqsB0T6X2ZxhpqKUjDLS+pUH2wKER5EiKh1oNqdagWhVxPbytIU5FGjNZ+xDSVVytD9d9SPy5u47JZR9GoVatF0lC8CI36WmfxYorKfFTlZeLAlrko+yDDejP5WRRChqXY1OVkoGYr74dsnjMfvMjnAjivfiutfMBamLZmenwtXNaAkqqSE2Z0A4/6mKpfW+Wr/GV+mnuE+3KqT++3Mi9aOdUAnhKioBiNCFH0cxr2HA9HnMEeSsKOczbC4rnwQjSTejGfQrQaR2u/M92AzkuI0NmGxtIvsa9oNSopRLYt/uUtREaMnEHmAyEhcsJiHhDPcLtlbXM4EXLhowz9hcYIkaO38YraHra/d87mvL1r6tA6CU5tkaWmaJahtmhOhPoiCoeQgJCGGNz6yHZTXah+V1ZsNHyNwjVSfGSkbS965iWPbxtnOJi3Lo15nCf2K5p23oxJxvO1cSgs4+GypmYEAh1b0HPRKNH1fMjUcKWRD1qDhq+KMJ0FL3qD8uyIadnIYxqRkFhQWFpUXcFpY47EiKg60iPYEMZhRgfw7g87dhrjkQBx3kxjhMjeR8Hraa9fRPQNCuNgWvoUlNjwLmx/+1w63L0YfEZF2HM8HHEd8AdCUCT6w9ZIDY6weCQoDic4TnT6EiKN2B0rRH2hZ1GFvfKP1qG9ab/REdN8O9JYgaCbQnR0gI0VcAo/1H2PfSVrUZ63kCVG3hyXsRAZWGJVCd8Y5JAHpD+M8QhZf/FRyTeWWKPVN84IxGLeIwWWo/dzhm4wcD8ZW6Km71qn1mLKR5OXurcCxwgVUEc/28PzIwaJhIf1YCQe7v7QgJ3e5wm4rHM3aTP3EfOCQtYXsWKkZ8UKrH+efeGfu/JK6Qyuu7yJ3HMm/33CnuOfMrqHgiJxsXGCczb6G1khFglRpRo2ff4+uo7WUoQkRBprzutDZPoRDXisOQpRz2kcqZUQraMQZaFWpcZAJo4IUTQyHpeDEF1K+jbGNE4hIjMQwvMjGjeemekH5oSD97V/j0SPIO3fR/0LUSym2tJ7bkxzfXqaDneesdXBP0dGhOjiECY6YQxKiHLnUIgWovqzTRSiOgqP+hDRCzpnIeo6hZNHanHgk00oz1+MaibIVIl4XG5CFFY1NxjCRMhV1dlqlv4ZbLi+w0p0YgkLN/zoT4hiCROdMMKEJ5ZBC1GIyAyEKCGSAEmMPILnNjwKNJeOESG6OISJThiDE6IMVOZmoe7Lreg2w/ucIhIgjazgwd+Ahai78xR6Th5G1Vc5KFfT1Ww+tHph7D1IjstJiMzN7j0EYQ/IYBmoUXWlYHE2IzTQOH+KBM/tbOcXJjphhAtzNK4xhWlQ4armeF/790isEPEeGTRMS0CITFNt3mcDLYD8nBgRoouDHTHh7LiOrGeHz03uPJTnLUL9V7noOXGQwnMGPcYTonPj4K/t+PGBVs11oOfUEdTtLMIBNWmVEOXpJXLgYSKXqxANFvMSPYZgPvUXTkTyk/ODjfNshD3sw5HBCNFQEswrc08MuGpuEMQIUfAjcCIsXT8XgvkQxM//88j3YcylF6KBMVAh0j2uFrBl+UvR8E2+cWRULee+c+fQr61tQEKkH12orjb8WPk1SvOXoUZ9KHigoCEUw12IYm/mgRL2YPSH8qE/BhtusGH7I+z8zpew45wvYefoGExYh20yPXDCzjOMsPtsIETFcY7HvhwZaF6E5elPmctNiDSUVW3ePCNELbtLADoyPV0ddIJ60EXnxiEpOj5wIeKv+wR+oBDt90ZXUMu5n4sQDZawYwcZbLjBhr0cCDtHx2DCBrHezGDpfbwgrqPq4IiOI9JAxiO4bYRwYq/tT51LLkTqmjAANLRb2P6xyCOqphAdoBA17SlBz5kf0NN9huLTDfpFBidEx9oH5RG141jNdygrWY26oiyWMIPviHjwESGKEHbsIIMNN9iwlwNh5+gYTNgg4UJzNnofL4jtxuAIE50wouNwjWMcwW0jhBN7bX/qXH5CNAtVuRkoK1yGI+WfAWd+pBB1GPE5ZyGyL5hOouNQORq/2IzaQn3wbW5AiGagWZl5mQjRuewTJLj/xSYsPT9Fws7tfAkXmrPRO21B/PjPXYhGGDx+vl8eXI4eUUX2HJQXr8CJpl1A51FqyHkIkd4n9XSp7fdpdLc148juYlQVLEGtxtTKt+NpaVwxjTSspn1hmTxcCLuhwziXfYIE97/YhKXnp0jYuZ0v4UJzNnqnLYgf/4gQXUz8fL88uOyEKM8ToqLlaG/ZQ/1oo5B0np9HZDoeqf336Q6crKtG1ccfoDJ7KQ+YycTNxiEm7kj2LBzMmd0rg4cXYUZhhMsbCcTwvv5W8IIt8cLDjXD50kjcIMHDm4EJkYbZqsyZg4qSlTgjIeo8FiNE3Zy3UnSsfUD9iOQVUYQ6qV1yjI4dR+N3n6Ayby0acxdFhOgHCtHh7NlG2aON/3Ai/CYY4XJmRIhGGP5cnkKUMdRCpF6wFCJ1hO08gx9rd6Ny23rU5GZBA0q2MhMPZ88c8YhGGIb8lITIEhZmhMuby1GIqnLnouajNeg8uO/8hUjao+Ca2l8XzhyrRe1XH6IsNxP1RRrVeDpaeXB5R9GGf7gRfhOMcDkz/IVohBEuNyFSq7nagoVo+WoLcLSaQtJGh8YKkcUXouNtAxCiLoN2tKKk/3u6j+BI+ScoL1mK6pIMNBQzI/OtCkYb/uFG+E0wwggjjHApudyESN/hqqYQNX/9AdBWS2/oBJXjPIRI4kPp8aZeNR1OobOtATU7crCfYlRZNB+1GiRymLeas6XjMAI3Rf706OUoAmEVrs+wA40z5vgjcfrLUZxHnFHbRxhheDLchUjps8wgtpVfGE6I1Hy7siATzTs+pBDVUzzaI9Kj0RW6qSPdanswUCHSTzIk5VJTOztGkMToDNoPV6LyG4pR4RJU5s9D7bAXor4IGq+3OQ0zYAqjsN6yMZwKGwzjCIszuN0x2DgDy4OKsy+DPJg4Y85nQHEOMo8uRJzmWjqCYUcYYfgw3IXIT6uzL+G4D/xpjMby/IVo2pkDnGigZpw074aMD+RpiGkEx+W2gQqR5wuZORsJpalbX9prw7HG782nYMvohtXmZ4QmbvgTZryCmS/cBfCWzyoasXEGtzsGG2dgeVBx9mWEBxNnzPlcCNG4IHEGiAo7wgjDh8tPiOagtCALjbvygJON1AxfiOQRnaMQ9f51MpKu7hPoOXMIjXuKUFayAlUFC8zQ+WEJHN4EjFefuAvgLZ9VNGIMYtR2x2DjDCwPKs6BGHjSb5wx53NBRONCxBkgKuwIIwwfLjchqjNCtBSHSz+iELWgh1oxBB5R9E++UQcj6ug5A43KfeZwBZq/y0VlfmafiQtbP3wIGK8+cRfAWz6raMQYxKjtjsHGGVgeVJwDMfCk3zhjzueCiMaFiDNAVNgRRhg+XHZClEshKlyGQ6WfAKcOUojkEekt0RAKkXbuZESdPerhqs+/HsOJg2Wo+mw9avLmUg3Vem4WM3cGmpg4EfZia6CEnfDQ4gxtwIiFEjRyMoh9Gc6YeEy4sGPELA86zsByhJE4I8suzn7jHmGES8+lEKLGweCl0T5fYTbU4oSohh5R2bbVOFb3Lb2Ww1FCZBsquMYK3TjedvRchYiRMMouekTdPacY9Ul0d7fjRMt+NHz+Lj2jBagtmGs6uzbnz7BQmIL4A6b2z8UfSLX3TTI0XIxjjDDCCD9FLokQxaShP/x9+hciYYQoNwMNX29Gd3st0HWUQnQKHXqdQ7VwTbfd0vH2H89diGz/2A5yOoKU73TjTtR+vgHlhYtRrXdG3uciRoToYhxjhBFG+CnyUxeiqM+YMEx1/lwc+r4QON0EdOoTEFaI7HuiIRQi19WV6sPIxBnOt/PAh3C88XtUffkh9hWtREV+Fpropv10hEgEqneGjGD8YdtHGGGEnys/VSHS2Ij6mGNNQZAZqCych7bqLyhCB30h4t8FECInRtYz6vaAquvOHMXx5jJU7yxG+fa1TPDZhUiCE7vOrQ+e+MXhQgiR4nSEbR9hhBF+rgx3IfLfFUV3aG2QEFF8KotmorxoFiqKZ6Ks8B1UfZyFzsN7qQ/6DtHxgBD5IuT8o+PtPwyVEPnRa9rTQ0HqPomTPzaiZe8nqCteTJctg4meh8YC9TWyo3RHxMZ8n57rvOVLJ0COEbEYYYQRLh7DXYgcYUP8SIyqC2fRC5qDsoI5OFCUgSP7s4ET9dQHfYeonQpxCmeMEPki1MXl8xQi/dSI2wmSj5rkmWZ5pkUE5+kdnWr8Ds07t6Lqo1WoLsqi6zYfDXTdGgvnBsggGkB1thEiCUI9T1r0FooLzXkKUWyz4ZGmwyOMMEI/XAoh6o/Y9PnbZqCZ4tOSY2nVVxeyZ3M6Fw05C1Cek4XGrzaj+8cyakAbFUH9h4SE6IwRH9Wc2dc5dFi4pq39nFvN6de/EEUEiS6Z3hv1tNXhaMUXqP/yfVRvW44qCVJRJmpJfeGCiDA1UVEvSyEKErbPCCOM8LNluAqRPlESTGfQI7JiNItkoCl7AapzFqPpyy043bgLONVE+99GATpJ+ZEIOSHyG7eZBm4Uo7Zzf0eknxl5LoRoYeru6US3xKirnYk7hDOHy3Co9CNUfb4GB0oWoSx/IaryFqKeNOVRiLyquXCBOA80Dp4jbHsU5yJE2sehZfVbUf+VcxGiYFyXG2HnGyRsn8uRsHMf4WJivwMVTlj4oSb2eBKjgRAmHENNWBotwQ84ilmoy52LSopQzUfr0d6wEzjThO6uQ+jqPo6OnpPktKGz5wwV4gxlIgClqr3tvIQo7BcrRD3o4irp3hnTm5auWKcE6SDaW79B8/4cVH+6jkK0DLVbF9O1kxDZd0e9xeF8kADN9tFyaDjHuRgK7eP2d+vORYiC8VxunC1fL+dzj+Vc7rERhpLeRtYnLPxQc67HDBOOgaIGB2HrY4kcz0tbnUcthUit5Cyan4Eq1Wh9sQknG781ItTVfYT2/hg6utrQ0W2FSCJkhUgN2gLQR2o/9w6tff1ihYiH4aoTnJ4kOqw8pJ6uE+juqEd3exlO1n+DwzsK0VCykSeaReaYcYpqc/VZiTnMDEHxkAKT+qgHeQYz1sfPSN99tGFHhGh4cLZ8vZzPPRa1PuK9ygc5lvC8GWGoiRWCIGHhh5pzPWZQMBwtuW/3ojl3emS7u+9MIzFvXTPvQTcfi2slp+MpbXUFVojUPLuyYDYqCuagvDADFYVz0fDle+jQV1i7NYLCj0aETum9kMaXC4hQX0J0nu+IBv5zbeu6IkKlF1WSpnZ0dx7F6eMt6DjahJMN3+Lg7mxUbluNfdmLUJm7DHWFi1BXNB91xfNQyxOvYyYYtzB/OjNVmR3MfF0QMcPUX1oxms0MDYhQLBHDMNQEDEqYGAlTfeeFCY1j6Omrmfz5EHacaNw59kXYPpc39jrI+5+B5kI+9AW8X3rBsKZFaTRh1yAW1+p0oO9ZI9UtIccLEjxGWDwXguAxB0tY61t3rgMhdl9Hf2HdMDdh9LWvcPuHERanaTQgW0fB8W3gW2iiXRSNXB98xpQX5l7IUcGdy5w2CcWl9z0mLmdDpzN+iZHuHe7Pee1blj8X+7evQOXXm3Cw7BOcPFiK7hMtNOtyN2jXKTxdPafsqDvdngCZd0MdRArgN1QwosR1xy6WENlf0FvyGjJwav2kTo9j6DlVT3UtxfHSL9DyZT4qitdgf/4CMh8HSGXRAlRThWvzZ1OhmbFeydK6nLo4syw5s5nJcwyNJFSERMwFHzq8CyjCREiMCJFH2D6XN+46NFNsWopoDAq5zmNEiKIJHnOwXPZCZASE3o0RDuIJUGOUbbHPWKM8btolK2Az0UoRauX+EiFtV22Tvp6gqWxrbV4Gasz7nzmoyqUtLVmEpq/W43Dlpzj9QzkdmkM06+202/Zdj2y731CNrgc9HitADl+I1HJO6+SeXGQhiv657xqZUVi7hQZQpap2/gCcPgKcOAz82IyOllIcqdiO2h0f4MBHa7G3eDn2FS9BaWEWSvPmo7xgPqq91ncNFKrGvHmWHMd8Cg7dR1XzRbgQQqQbPojWeWIUJkKiTyGKjWvoaBwETRT7gRC2bzR8CEyBwSs09ELbHWH7nztheTAcuNBCJHQv/dSEKPpe8OCxYgmmoz8UNvYY7lyDw9LEEsmPmH0dbnsQt22gQhR7PLd/GMaD8QjG15yjQrfW6zw9e2P2iT1vLTM/tB8FyHhAREKkWqMDBfOwr3A+YaG/OBN7CxeibPtqVH+6EXVff2CG6zlR8yW6fiilfW6kAaedRjuFRGONSlCsEAWx/UuDSIhcv1P1I9J896UVosiPjhK1CPpYksYi6qA7192lcevIGdLVRg6i81gV2lv240jtDrSUfoyandko+2w9DnxMcdq2jJm3FFV5i1GbvYhkoT6HwpS7kA/hAjKfSIwyPAJiFHWxzgPTIi8ocIEbI0yERKgQxcRziWjMk8ioKf1Q4AwDb/rAuxAft30oj2nReYSd36VGIhmsmmsqpEgHxMhCw1HIsEQiYIyV2cflV/9E3Z9nwRnHWOGJ5VzjHwgSnWD8/R0nLFwY/QmR/9K9N5H8iNnX4bYHcdsGIkQSn+DxguIXhotb+PHxHHUvEX0RVV6Mj5Z9tN2EYdg62kBRS5sou1hF0fm2ZDn2fLEBFd9tRWN5CVprPsOPDXtx6scG6xicomPQwWknp10UoZ42mu7TRkxcJ1VbyxUQooh31BuNvG09pB4K0Xl8GO+8fqqlc9OIEPFcuaiaxtOc76TA9sjjkyB1HUd3x4/o4RTdR9FzogkdP1Ti1MF9aGvahZay7aimx1S3fQPqi9aitmAVXcklqMrJQnVeJmroOdXlzjOZbskgFKO8OZ4ragle7Gi0zRG2nRghCmDWS4goNmEiJKKESGG9kmtsXBE8I3YxOCch8r2kaJxh4MMTJUBaFm67wvYTn9IUla7ANkNwX4vOI/T8AsTmqcvn4PrguiC+0PnXyR5Tpc8g0euaeC81m3N/xxMieoZGjJgvFCELw6mDt8SIImAMUlR+9U/U/XkW6hlexAqPjhvkXOMP0svjCeDHr3l7n/jPiE/0feSh/Zmvhsg9wXQH4tfxnXEPeiSxhAlAENuMORq3LShEqgbT1Hkzdl97DF+IrHiYa8C0R3DrIulQnvPcTJyaqg/PbPMaoiY/A5WFGagqIPlzzaCjoorrq5kP1bwnaxhHZd48lBUupwe0EhUl69D0xQc4sncbWhu/xo8/UHhOVKK7u4FmmYJj3vt44mKq2mihe7hO4CS32CF73Pt/CYwJ+5MRotifxIh08D+91rJff2ViCbo6eE6nKVanrafUw2k33cHOk9zGDCE9p49Rq1pw5nA5zrTux6nGXfih9BM07MhB5UfrUbFtDSpLVqE0fwlZjDJ6TvvpMe3+IIPT+ThAj6mMQlVBqvJ4AXmxavPnoU7fVlLpgRe6Nps3y1beFNk0Frm66WMegij0oEz3eJu8FU3BW3yoPdToohc0SiT44NmWgfZmljtuOpIxTQa52LwpB4LthBaCi6ufOFv4ENhxAt1D7j/slrC8cPDhCdDMh6LZjEEoZkeOcZAGu5XnZuA5W97BQYp2a97bnH+L82+b5YNaz+0Wu69lDvf34HxLPyjMIXI4ew6O8LzFIR77oIc5b+IMXLDazz9vUkDPhucpcdHUvPjlPaJpK8/VLbcG4bVuLeC58D5oyX+T8bxB3vTikFDZ/DZ5rmuvl8y8LjI8MkCOZp6zy0fhrklDKBTNEBq5vzAtVD1MYcTA4/McLIFrauZ1PZmuGMx6s180OheTLyEoHnvuNg+F8rV3VS7F29verHnzjoQob7IzCK9tToYHj+m2E9cazLUIixT+QnBiZIVGrcfcVPA55bVzhcom3o9NjC+YP3aAUMJj2X2dCHleC/NC327TZ7VtLU0GGngv6p12k+YNXE9BaaCg1OcJtSjOQA3D1PD8anPmcnmerVormo+9hQuwpyATpSWLcWDbUpRvX47qT1ej4ZuNqN/xPppVxda4H20NpSzIV9KxaWGp/yiNcFsEdUTt6tJULdskQhIYGmgjMPIQ9F5f73mslAh9GCgoQgNBe+nX1n58mAiR97NKSaGh8qrFhat71HqbeP8n4TJulNqHS7C6lTl6cUavSXQeQXd7I04eqkR7ywF6TqU4WLGDfIPD5Z+jdU8xL0w2qj7bRDaibPs67M1fin0FnlgZwVqE8tyFKMvORDmppGhV86LXUKjqJFS8OeoK5vSGJdkILEUaguuC66Og22ywyyopqVGGbZgh7827GZmGBtKU48Ebs5mi2Zt5ZH4AGzYUF1cfcaqzcaN5IHTe9DAjcLmAgm0IyQuD8skLE9i/gd6qZQEf2vk8htIYTDsNieC5txTIONGYROCyMWwyvoG0slDRnJtJo+ThzTdxGkTrW7i+lRzitT2UvYDCM9/Qyoe7hZ6zCDv3ei/99Xz4RZ2ZymCIDJ6L55Fx6ottEAoIr60RrIJ3DGrl1ECRVUtQW9Cxwi8RFDKyTSwENWXzvCU+sZi0Kh+cN0jDT2I9Gn0jrJHbgzQxzS7/dN0b1Z+PNGd70Oj5uOMpfTLuekHuG1+HChom/UG4jy1wUIQNPHeer+IxcJ3280XPimQ9RVg0GDG2ONFVvrRuZT5u5f4sKLZunUsyCAsZBm7PZgGGtOQwraTJo4Fpl0g08LgGHjNWiCKeCwWx1jRhnk7eNkiMGvLe4jPJa2agOBlxE9qfzzGnwnk+7nmuZZ6LGt5XtSr4GuYb6gwLTE1OFe/nitwFKON9Wsr7tJT36QHaJlFWuAxVLGRXbF+D2h2bULf7Q9TvycGhyo9wtP4rHGv8Bu2tu3D6h1KW12vQebIOXacP2gK8BhkwVU56tyNxkQ3llLa0p8tCI+xDS2zRvOyxlR95NPZP688FWu3hJUQ6GTl5XquKswqREyAihWZ4eU4Wekl6t9RNYZI7ab4iS3HrPMHgvAgqAZxqQvexGnQcLCdlON2yD+31O3Gi/lscOfAJWr8vwUGKVetusqsIjd/kouazzaj7fBPKtq3FgZLVKKOXdaBkBVmO/UUUscIlHotZOlnEdYtRqoYVRPPiQIAyhvNZEj2vMIWLSBZLO2IRygq4jVN7I3KZQinvzghmflYMWre4F2XaL5/iGsTEE4P257HKeWwXpz0+jx0L02zSaVhIMgNomfvyXPzzFEsZ17IALL0Jeq3lLAyoIFCex6k5P+5v0prJ+SBKO7dF0q2w2mcJKhinqMznw+pRnWepIbW5nHrU5oil3EZyF/PhX8z9sgyR/OR5lildXvqVxgquqzDTRajk+VXyPKs8qgsWooZ5VyuY9jqGCVLPMHUsudYW0OgU0ghRrGspIqZwI+NLYRPybmz1H71xGt16lvD9RjceFKBGiqRKzhJMO0JJtNg0Mi6DhNIL52jivq6w0sQCTiONn2imKBto/JppBEWTmS6kAGkfeTK2UBDxDD2ame4Wnk8s8lat92qx3pDCe/vyXI1nxjRbT2AuDToLX0Tn6TDnKPGU10PBaRb0hKxHRIGiZ2sE0wg3Bc40U6aXYgTHio5tJUaUt0yD3qEEPUJdhxqmqZpUUcSrSQ0LioZCiomHnaenomtIqlngqmbhRNMKLotynocaVlWQ8oIFnGYayiLPhuB9xmk57UVZMZ+FbatR/9Vm1H79IRq/K0LL99sNx6p24Fj1t7RXu3FGtss0oa6nrjSj53QzcIZeDo6gR+9z1LINx2j/aPN6NKUtNALkbKqg7aU9FV2kk6s6WcjXvFvv/9w+Q8WwEyKXMGWQFR9HMNG9f9EqbdVdLiUzmxhRI2rX3qWGEFpHr8vWd0qkVL0nD4oXquNH4rXaO8ULeJKcECxFtLXyWjZTvJpx8mA1SxoVaKOndbx5L9qa96G16hvUl36GhgOfk08N9aVk/ydo2PcJqneXoGpnEapJzY5ClmAKUfeNpZ5Uf5GLqs/poX2+1fLFB6j8fAvZTN4nm1DBaRm9t9JPNmLfxxuw7xOx3vD9x+tieJe8F4LWx4btHW4v2ffJu4b93EeU8jgVXzA9XzJdpOoLS/VXYrPHxgDvk01kM2q+tg9U3TfZ9ERzeM55qNvhU/ttHmoM+ajmcv2uYjTsLkIDCwENu0rMtP67AtTuzEXtdzkBtOyxk/GI7/LRuIeFB+7fRMx0VyEad+ajgdTvyEXdV9lkK+q/dGj5Q9TwvETll+/zXDdaOF/OvC//jOs43f8R86Z4LfYWrSGrsKdwJVmB71lC3VuoQskKGhIWUjgtpRiW5qtO3oPhLFpearzvUopVqTFKFFaKd1kRS8CFC2iU5qOSBk1U0JCV0Vspo+dTQcGIgoatnMJXwf2ruH+tETiWqLl/tUcl9zcwfCxVLH1X00OsprDXUOxr9IVlolK5haJJca+jUNdoKJecJRRNiaytEdDXmGsKo6mVp0iv0S/tE6bdViXpRbnttF6bSyPuUUOqKR6iypBhUBNiUR3Aj3Meaig+QnHXUUD1Pti8E+Z2A8+7gWm03quEn3lCMaukuFVShF0+mLzkfo4y7ltKsdvPcPu5b6muTbEKW5nYy7B7GZcpbJYsYWGUhSkWSsu2rcSB7atQum0V9pPyT99FxWfv8X7ayHs4B427ctG6twiHSz9igfdjHCn/DEervqSwfIXjdd+grX4HTrXupfkppRmqoA1qok2ioMg+dVJIDCxkG1jQ9l5PWIGxdHe1syDfji6u7+T6ThbChenf001byMK73tGo6O+sZ4wFNS6BbYRgm1nHtn47l6q4cC4bIQr+3P7eizLjUQkKEFTlJwHisnnxZo9hx8LzPDC9i+qS58SLaeA+Bu7v0dWhqdZpO28AM4ARBc1hbgat583QdQwdFLXOU0fQcfIwOk8cRlf7Id4/h6h9B9F1jBw9SIE7SP1rIc3UwibSQOpJLdfRa/uxilSi42gVzhwjx2twpq2O1BLNV+N0W2VvjnN9LG1VIeG4rle4apxp57EE9zEwXOexaqY5Bq1juiwVMVSSKnQzzu7jtehu04gaDabatLu9ic8Q4cPWTbpOtni0slTHAoEKBQ4tn+EDqaqF0yzx9QVLgz2cdp9ioYGlQx8ew5vX8TpONPA61KNL6RHHOX+8jmmtIdXoYNpPHy03nDkmlP9cf5T5fYR5dqicxoIcLiMHWGYp5fJ+zpOD+1hY2Y+TNCgnG/fgZMNunKzfhZN13+Fk7U7yLee/RVvNVzhSRoNUzpLuPgrlnlyKL43Vnmw0iN0f+Ozagrqd9Mh3bkHDdx9GUbfzQwo5RfTbDyj4m1Dz6XrUfvoePfh3DRpGq4zG0bKmF+X08PXiunLbOs6vIPT0SOW2JR4rUFmyxlDNMDWkmnFVq2PjtuUMS7bHQINcWbISFcUrLBTlcopvJcW4koJdWbTUg/HTmBvkVVJQHVUeNfQUfBZRWBcxTnrM25lOUrV9CdOyFFUaTJnG31G9fTVqmM4aTms/WoOaj5juj95FFQtVFR/xnD9ZRygSLGBVfroBDV9/gMZv6H3ssDR8uxXNu/PQur8IzftYmCENpLlsOw5Xf45D1V/gaONOFkT3mBa9J3k/nDxciZO8P04eqcIJcuYon9NjelZ5f/G+tvCZpz3ooV3oOcPC72mKizjDAvGZoNCQDopNZ7t5J97dKduk1xayV4JSQVGx79MpDaTT0BXhDG2cRd1KO0zLZIWxQuTe00RXrOlth7whDVDahROEx6Ztkw2VPDkbOzRchkJks9Vi+idpX14A0+JDcfLiWQHSNi+sMlxuqHFFdYF0Qd2F1Xrqv9vuoVKEj3c8788/B5UaeKNQ+MxN02Wn5l2W0uTVxxo6SQfXd1DIDBSzDoqZQTejbkrepKbVIOdNJzKGiSDh4/pYXAuXIOY9Wmw4VWGGhY2F4VTdaZrUk07OC7ccQesEHypDYL08UFNVSlgwMBgxD6KqA8E8CWK8XG533mxf8BgqFXYFUboj8YrYYwru6/JTzVOV1x6q6u2JlEIDBPPDXB8SuT6Kh/Pax11HZ2zOsIQrIyQvXH3njMjS+xaa78Uhnjo5QyEOofsUBVziS2HvPk6hN8La4NPmcZyCL9oaPez67uMsGByzrVHPUFRFR+s+D82Xo6OlHGeay3C6qRSnmii4ZlqKE5wP42RjKUXY50QD15OT9RTqCBTr+u89KNr1uw2n6nZFOM1lQ52mWt7F+HehvdlyspX7kdOHmNYjTCc5o+kPFczaSsIC1A8sRPzAgptgAa+b5y5M3hzTtNm+uG9nIejEQZYnLTjNvDeFoSPMZwnHD+gx18x5KLyevC+6eY27KBpdLJx2kq4uGm+9DmDB1hRwvdoZg7FBskuyE7IXtBuq/hK0N8YeqNkw6eliQZl0eVjxCdok3nZ9Em23LNpX9o8BIujYNhmCwUwyrPejQrymFsbAQC7dIrDjOSEhart0QuTqHqOx4hGNFY1Ywn7BrIn9hcXRF8Ff2PbzpZM3odBN1R+982I4EX5d7H3tlsOu59AQEXHzxPCaBXDH59Ej8356LFHhCGP14bItWdpSZiz2Za41En46LME02ioMmw4VcpwRiI5PhR7F1zcujPZVKdcvEfv0OI/eM3osA3vrmc4AtGbGSrnlbhaUFNYMySKhV8tUev6g128KRGf6gqLdwXDnjY4TJCyMh9JEj8BAQ28LNSd4HvQYDBQEdfUgnSwQWNpp1x0nfehh9EeHRyeFpMuju4t5zAJl9LXXvWTvKaEr7hO89wZO9P0Rjdseu08Qk6wQdNsbvHB6Bnxo7AIoXHDewVPyNxjMivP6tbe3X15CdCF+Ycc+X5wQdckQ9EPvvBhO9PEw6IaNLIddz6HBf8J4wKgHyk8LQ3LRXw4SDHchhMj1k3BxdjIv+o+zb1wYK0SaD7lX9P4zgMb40vuAXuFM2v045LErrNvPCprFNACi8e0Txn/JkGjGYKvdNeW5RMF8OEf0XrmL4i66Oz0RUj7qHjQ3u4yEtRX6yTRzS4TgPTdQgvdFLC5M7C+4v0lWf7g4op4bRuJQwr352H3tueo/LQzNbxgK0cC5WL+wY58vQcPQH86oXVzC09wvMTerv00PTn9xuu394R6+6PW+8ecBox4oP36G5KK/3Fc4J0Ru2ayLMQBBBiNEwTj7I5iuWFwYHtlLpz1GX8cW+jPvATx6x2nXq9xu0xlO7DGicNbqrCgs82rICTtWLDq2I2z7ucA85L8ovJ+3NfILXuOhIuwXFYaJOCuKh9MIwWwKZFXsflEnN0S/ESEawC/s2OdLmOiEQkMQcfJjDMS54uLrO87wNPeHDLnD3eSWcxciP53hQuTjtuvBsrhlbrVpCiEYbrBCZKvK7DUKpkXG2c0PVoj6IiqdTCNj5Lx3vCCBYwv9RQmR4vLis3Ha9cpjE/YcsCkaCArLvBoSFBfPh//3j6ymQ+FFcF1vgmkO2+7D+GMP5/28rZFf8FoOFWG/qDBMxFlRPJyejdj9ok5uiH4jQjSAX9ixz5cosemHLhoK9+cMx/kiA9J/nOFp7g/uFcHd5BY+1P3G6bb3xv9TGIUND3fphMgSTMvFFqIgZxOiYHw2Trs+eD/E/vEO7Be798VFeaD/z/5TGAfP2RBc15vgX9h2H8blonR4P29r5OfyfSgJ+0WFYSLOiuLh9GzE7hd1ckP0GxGiAfzCjn3+WCNgqjeCxouPmv5il/v6c+GChMUpgsuBGHoRll7feFkUTgYhuNwfLlyQ3nEqbb6ohMVjsWfgzicoRBeCYBqF0tCXuA2UCxGnnx99EbaPUP754YL3R5j4BLGhz44VD572BWLgP+Z9YM/YlAX/guF6o3iG1y/82vqEnkY/BMUnyIU49REhGsAv7Njnj33o+xKigf65/YIMLs6ggbeEpVeGM2g89fhG7xf8i90WHZcjNk67r1Lbe/9oYs/I3ycYfxgunNIftj2MYBqFiyOWSxFn8DoE74Ew+L+Ns1c8jCUQbjD3YNBw9/+ntPK0LyLhP+Z9IFR/f8FwvVE8w+sXfU17E3oaAWIFpy8uxKmPCNEAfmHHPl+cWAxONHr/BQ2IY3Bx+obMEXrzebhlaYjp9BbZT0dxRMcngnE5InF6eWLTE75/72MF//x9gnkchoywI2y7ObEQgmH8dETTl2iExSeCYcLiE2cVogBWUPqm7/OODefjX9NwuMcA4SlfZEJ/PF8D0yTC02pxYfqmn98Agw3lr/d1jYYn1RuaigiB9bz0fXIhzumSCtHP+xe8U30G+xcWRyz9//XeYyC/sP36YyC//tLUm9g/u/5i/KLTEc25/sLiclzKX1h6goz8fuK/YXIxrRD9P/j/AcPqlPHyYTIRAAAAAElFTkSuQmCC";
function idenUrl() {
const url2 = window.location.href;
if (url2.indexOf("ThemeCourses") > 0)
return "theme";
if (url2.indexOf("curriculum.html") > 0 || url2.indexOf("iCourse") > 0)
return "course";
if (url2.indexOf("party.chinaunicom.cn") > 0)
return "party";
return false;
}
function App() {
const [showPanel, setShowPanel] = React.useState(false);
const urlFlag = idenUrl();
const handleShowPanel = () => {
setShowPanel(!showPanel);
};
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
urlFlag && /* @__PURE__ */ jsxRuntimeExports.jsx(
"img",
{
src: icon,
style: {
width: 64,
position: "fixed",
bottom: 0,
right: 0,
opacity: 0.6,
zIndex: 99999999
},
onClick: handleShowPanel
}
),
urlFlag == "course" && /* @__PURE__ */ jsxRuntimeExports.jsx(VideoPanel, { show: showPanel }),
urlFlag == "theme" && /* @__PURE__ */ jsxRuntimeExports.jsx(ThemePanel, { show: showPanel }),
urlFlag == "party" && /* @__PURE__ */ jsxRuntimeExports.jsx(PartyPanel, { show: showPanel })
] });
}
client.createRoot(
(() => {
const app = document.createElement("div");
document.body.append(app);
return app;
})()
).render(
/* @__PURE__ */ jsxRuntimeExports.jsx(React.StrictMode, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(App, {}) })
);
})(React, ReactDOM);