@esri/hub-common 9.30.0 → 9.31.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  /* @preserve
2
- * @esri/hub-common - v9.29.0 - Mon May 09 2022 16:03:22 GMT+0000 (Coordinated Universal Time)
2
+ * @esri/hub-common - v9.31.0 - Thu May 12 2022 17:09:06 GMT+0000 (Coordinated Universal Time)
3
3
  * Copyright (c) 2022 Environmental Systems Research Institute, Inc.
4
4
  * Apache-2.0
5
5
  */
@@ -3509,6 +3509,29 @@
3509
3509
  var url = getItemBaseUrl(id, requestOptions) + "/groups";
3510
3510
  return request(url, requestOptions);
3511
3511
  }
3512
+ /**
3513
+ * ```js
3514
+ * import { getItemStatus } from "@esri/arcgis-rest-portal";
3515
+ * //
3516
+ * getItemStatus({
3517
+ * id: "30e5fe3149c34df1ba922e6f5bbf808f",
3518
+ * authentication
3519
+ * })
3520
+ * .then(response)
3521
+ * ```
3522
+ * Inquire about status when publishing an item, adding an item in async mode, or adding with a multipart upload. See the [REST Documentation](https://developers.arcgis.com/rest/users-groups-and-items/status.htm) for more information.
3523
+ *
3524
+ * @param id - The Id of the item to get status for.
3525
+ * @param requestOptions - Options for the request
3526
+ * @returns A Promise to get the item status.
3527
+ */
3528
+ function getItemStatus(requestOptions) {
3529
+ return determineOwner(requestOptions).then(function (owner) {
3530
+ var url = getPortalUrl$1(requestOptions) + "/content/users/" + owner + "/items/" + requestOptions.id + "/status";
3531
+ var options = appendCustomParams(requestOptions, ["jobId", "jobType"], { params: __assign({}, requestOptions.params) });
3532
+ return request(url, options);
3533
+ });
3534
+ }
3512
3535
  /**
3513
3536
  * ```
3514
3537
  * import { getItemInfo } from "@esri/arcgis-rest-portal";
@@ -3611,6 +3634,27 @@
3611
3634
 
3612
3635
  /* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
3613
3636
  * Apache-2.0 */
3637
+ function getSharingUrl(requestOptions) {
3638
+ var username = requestOptions.authentication.username;
3639
+ var owner = requestOptions.owner || username;
3640
+ return getPortalUrl$1(requestOptions) + "/content/users/" + encodeURIComponent(owner) + "/items/" + requestOptions.id + "/share";
3641
+ }
3642
+ function isItemOwner(requestOptions) {
3643
+ var username = requestOptions.authentication.username;
3644
+ var owner = requestOptions.owner || username;
3645
+ return owner === username;
3646
+ }
3647
+ /**
3648
+ * Check it the user is a full org_admin
3649
+ * @param requestOptions
3650
+ * @returns Promise resolving in a boolean indicating if the user is an ArcGIS Organization administrator
3651
+ */
3652
+ function isOrgAdmin(requestOptions) {
3653
+ var session = requestOptions.authentication;
3654
+ return session.getUser(requestOptions).then(function (user) {
3655
+ return user && user.role === "org_admin" && !user.roleId;
3656
+ });
3657
+ }
3614
3658
  /**
3615
3659
  * Get the User Membership for a particular group. Use this if all you have is the groupId.
3616
3660
  * If you have the group object, check the `userMembership.memberType` property instead of calling this method.
@@ -4105,6 +4149,83 @@
4105
4149
  return genericSearch(search, "item");
4106
4150
  }
4107
4151
 
4152
+ /* Copyright (c) 2017-2019 Environmental Systems Research Institute, Inc.
4153
+ * Apache-2.0 */
4154
+ /**
4155
+ * ```js
4156
+ * import { addItemPart } from "@esri/arcgis-rest-portal";
4157
+ * //
4158
+ * addItemPart({
4159
+ * id: "30e5fe3149c34df1ba922e6f5bbf808f",
4160
+ * file: data,
4161
+ * partNum: 1,
4162
+ * authentication
4163
+ * })
4164
+ * .then(response)
4165
+ * ```
4166
+ * Add Item Part allows the caller to upload a file part when doing an add or update item operation in multipart mode. See the [REST Documentation](https://developers.arcgis.com/rest/users-groups-and-items/add-item-part.htm) for more information.
4167
+ *
4168
+ * @param requestOptions - Options for the request
4169
+ * @returns A Promise to add the item part status.
4170
+ */
4171
+ function addItemPart(requestOptions) {
4172
+ var partNum = requestOptions.partNum;
4173
+ if (!Number.isInteger(partNum) || partNum < 1 || partNum > 10000) {
4174
+ return Promise.reject(new Error('The part number must be an integer between 1 to 10000, inclusive.'));
4175
+ }
4176
+ return determineOwner(requestOptions).then(function (owner) {
4177
+ // AGO adds the "partNum" parameter in the query string, not in the body
4178
+ var url = getPortalUrl$1(requestOptions) + "/content/users/" + owner + "/items/" + requestOptions.id + "/addPart?partNum=" + partNum;
4179
+ var options = appendCustomParams(requestOptions, ["file"], { params: __assign({}, requestOptions.params) });
4180
+ return request(url, options);
4181
+ });
4182
+ }
4183
+ /**
4184
+ * ```js
4185
+ * import { commitItemUpload } from "@esri/arcgis-rest-portal";
4186
+ * //
4187
+ * commitItemUpload({
4188
+ * id: "30e5fe3149c34df1ba922e6f5bbf808f",
4189
+ * authentication
4190
+ * })
4191
+ * .then(response)
4192
+ * ```
4193
+ * Commit is called once all parts are uploaded during a multipart Add Item or Update Item operation. See the [REST Documentation](https://developers.arcgis.com/rest/users-groups-and-items/commit.htm) for more information.
4194
+ *
4195
+ * @param requestOptions - Options for the request
4196
+ * @returns A Promise to get the commit result.
4197
+ */
4198
+ function commitItemUpload(requestOptions) {
4199
+ return determineOwner(requestOptions).then(function (owner) {
4200
+ var url = getPortalUrl$1(requestOptions) + "/content/users/" + owner + "/items/" + requestOptions.id + "/commit";
4201
+ var options = appendCustomParams(requestOptions, [], {
4202
+ params: __assign(__assign({}, requestOptions.params), serializeItem(requestOptions.item))
4203
+ });
4204
+ return request(url, options);
4205
+ });
4206
+ }
4207
+ /**
4208
+ * ```js
4209
+ * import { cancelItemUpload } from "@esri/arcgis-rest-portal";
4210
+ * //
4211
+ * cancelItemUpload({
4212
+ * id: "30e5fe3149c34df1ba922e6f5bbf808f",
4213
+ * authentication
4214
+ * })
4215
+ * .then(response)
4216
+ * ```
4217
+ * Cancels a multipart upload on an item. See the [REST Documentation](https://developers.arcgis.com/rest/users-groups-and-items/cancel.htm) for more information.
4218
+ *
4219
+ * @param requestOptions - Options for the request
4220
+ * @returns A Promise to get the commit result.
4221
+ */
4222
+ function cancelItemUpload(requestOptions) {
4223
+ return determineOwner(requestOptions).then(function (owner) {
4224
+ var url = getPortalUrl$1(requestOptions) + "/content/users/" + owner + "/items/" + requestOptions.id + "/cancel";
4225
+ return request(url, requestOptions);
4226
+ });
4227
+ }
4228
+
4108
4229
  /* Copyright (c) 2019 Environmental Systems Research Institute, Inc.
4109
4230
  * Apache-2.0 */
4110
4231
  function chunk(array, size) {
@@ -4520,6 +4641,61 @@
4520
4641
  return genericSearch(search, "user");
4521
4642
  }
4522
4643
 
4644
+ /* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
4645
+ * Apache-2.0 */
4646
+ /**
4647
+ * ```js
4648
+ * import { setItemAccess } from "@esri/arcgis-rest-portal";
4649
+ * //
4650
+ * setItemAccess({
4651
+ * id: "abc123",
4652
+ * access: "public", // 'org' || 'private'
4653
+ * authentication: session
4654
+ * })
4655
+ * ```
4656
+ * Change who is able to access an item.
4657
+ *
4658
+ * @param requestOptions - Options for the request.
4659
+ * @returns A Promise that will resolve with the data from the response.
4660
+ */
4661
+ function setItemAccess(requestOptions) {
4662
+ var url = getSharingUrl(requestOptions);
4663
+ if (isItemOwner(requestOptions)) {
4664
+ // if the user owns the item, proceed
4665
+ return updateItemAccess(url, requestOptions);
4666
+ }
4667
+ else {
4668
+ // otherwise we need to check to see if they are an organization admin
4669
+ return isOrgAdmin(requestOptions).then(function (admin) {
4670
+ if (admin) {
4671
+ return updateItemAccess(url, requestOptions);
4672
+ }
4673
+ else {
4674
+ // if neither, updating the sharing isnt possible
4675
+ throw Error("This item can not be shared by " + requestOptions.authentication.username + ". They are neither the item owner nor an organization admin.");
4676
+ }
4677
+ });
4678
+ }
4679
+ }
4680
+ function updateItemAccess(url, requestOptions) {
4681
+ requestOptions.params = __assign({ org: false, everyone: false }, requestOptions.params);
4682
+ // if the user wants to make the item private, it needs to be unshared from any/all groups as well
4683
+ if (requestOptions.access === "private") {
4684
+ requestOptions.params.groups = " ";
4685
+ }
4686
+ if (requestOptions.access === "org") {
4687
+ requestOptions.params.org = true;
4688
+ }
4689
+ // if sharing with everyone, share with the entire organization as well.
4690
+ if (requestOptions.access === "public") {
4691
+ // this is how the ArcGIS Online Home app sets public access
4692
+ // setting org = true instead of account = true will cancel out all sharing
4693
+ requestOptions.params.account = true;
4694
+ requestOptions.params.everyone = true;
4695
+ }
4696
+ return request(url, requestOptions);
4697
+ }
4698
+
4523
4699
  /**
4524
4700
  * ```js
4525
4701
  * import { isItemSharedWithGroup } from "@esri/arcgis-rest-portal";
@@ -8046,8 +8222,6 @@
8046
8222
  return msg;
8047
8223
  }
8048
8224
 
8049
- var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
8050
-
8051
8225
  function createCommonjsModule(fn, basedir, module) {
8052
8226
  return module = {
8053
8227
  path: basedir,
@@ -8063,52 +8237,56 @@
8063
8237
  }
8064
8238
 
8065
8239
  var util = createCommonjsModule(function (module, exports) {
8066
- var getAllMatches = function(string, regex) {
8067
- var matches = [];
8068
- var match = regex.exec(string);
8240
+
8241
+ const nameStartChar = ':A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD';
8242
+ const nameChar = nameStartChar + '\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040';
8243
+ const nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*';
8244
+ const regexName = new RegExp('^' + nameRegexp + '$');
8245
+
8246
+ const getAllMatches = function(string, regex) {
8247
+ const matches = [];
8248
+ let match = regex.exec(string);
8069
8249
  while (match) {
8070
- var allmatches = [];
8071
- var len = match.length;
8072
- for (var index = 0; index < len; index++) {
8073
- allmatches.push(match[index]);
8074
- }
8250
+ const allmatches = [];
8251
+ allmatches.startIndex = regex.lastIndex - match[0].length;
8252
+ const len = match.length;
8253
+ for (let index = 0; index < len; index++) {
8254
+ allmatches.push(match[index]);
8255
+ }
8075
8256
  matches.push(allmatches);
8076
8257
  match = regex.exec(string);
8077
8258
  }
8078
8259
  return matches;
8079
8260
  };
8080
8261
 
8081
-
8082
- var doesMatch = function(string,regex){
8083
- var match = regex.exec(string);
8084
- if(match === null || typeof match === "undefined") return false;
8085
- else return true;
8086
- };
8087
-
8088
- var doesNotMatch = function(string,regex){
8089
- return !doesMatch(string,regex);
8262
+ const isName = function(string) {
8263
+ const match = regexName.exec(string);
8264
+ return !(match === null || typeof match === 'undefined');
8090
8265
  };
8091
8266
 
8092
-
8093
- exports.isExist= function(v){
8094
- return typeof v !== "undefined";
8267
+ exports.isExist = function(v) {
8268
+ return typeof v !== 'undefined';
8095
8269
  };
8096
8270
 
8097
- exports.isEmptyObject= function(obj) {
8098
- return Object.keys(obj).length === 0
8271
+ exports.isEmptyObject = function(obj) {
8272
+ return Object.keys(obj).length === 0;
8099
8273
  };
8100
8274
 
8101
8275
  /**
8102
8276
  * Copy all the properties of a into b.
8103
8277
  * @param {*} target
8104
- * @param {*} a
8105
- */
8106
- exports.merge =function (target,a){
8107
- if(a){
8108
- var keys = Object.keys(a); // will return an array of own properties
8109
- var len = keys.length; //don't make it inline
8110
- for(var i = 0; i < len; i++){
8111
- target[keys[i]] = a[keys[i]] ;
8278
+ * @param {*} a
8279
+ */
8280
+ exports.merge = function(target, a, arrayMode) {
8281
+ if (a) {
8282
+ const keys = Object.keys(a); // will return an array of own properties
8283
+ const len = keys.length; //don't make it inline
8284
+ for (let i = 0; i < len; i++) {
8285
+ if (arrayMode === 'strict') {
8286
+ target[keys[i]] = [ a[keys[i]] ];
8287
+ } else {
8288
+ target[keys[i]] = a[keys[i]];
8289
+ }
8112
8290
  }
8113
8291
  }
8114
8292
  };
@@ -8116,597 +8294,1520 @@
8116
8294
  return Object.assign(b,a);
8117
8295
  } */
8118
8296
 
8119
- exports.getValue = function (v){
8120
- if(exports.isExist(v)){
8121
- return v;
8122
- }else {
8123
- return "";
8297
+ exports.getValue = function(v) {
8298
+ if (exports.isExist(v)) {
8299
+ return v;
8300
+ } else {
8301
+ return '';
8302
+ }
8303
+ };
8304
+
8305
+ // const fakeCall = function(a) {return a;};
8306
+ // const fakeCallNoReturn = function() {};
8307
+
8308
+ exports.buildOptions = function(options, defaultOptions, props) {
8309
+ let newOptions = {};
8310
+ if (!options) {
8311
+ return defaultOptions; //if there are not options
8312
+ }
8313
+
8314
+ for (let i = 0; i < props.length; i++) {
8315
+ if (options[props[i]] !== undefined) {
8316
+ newOptions[props[i]] = options[props[i]];
8317
+ } else {
8318
+ newOptions[props[i]] = defaultOptions[props[i]];
8319
+ }
8320
+ }
8321
+ return newOptions;
8322
+ };
8323
+
8324
+ /**
8325
+ * Check if a tag name should be treated as array
8326
+ *
8327
+ * @param tagName the node tagname
8328
+ * @param arrayMode the array mode option
8329
+ * @param parentTagName the parent tag name
8330
+ * @returns {boolean} true if node should be parsed as array
8331
+ */
8332
+ exports.isTagNameInArrayMode = function (tagName, arrayMode, parentTagName) {
8333
+ if (arrayMode === false) {
8334
+ return false;
8335
+ } else if (arrayMode instanceof RegExp) {
8336
+ return arrayMode.test(tagName);
8337
+ } else if (typeof arrayMode === 'function') {
8338
+ return !!arrayMode(tagName, parentTagName);
8124
8339
  }
8340
+
8341
+ return arrayMode === "strict";
8125
8342
  };
8126
8343
 
8127
- exports.doesMatch = doesMatch;
8128
- exports.doesNotMatch = doesNotMatch;
8344
+ exports.isName = isName;
8129
8345
  exports.getAllMatches = getAllMatches;
8346
+ exports.nameRegexp = nameRegexp;
8130
8347
  });
8131
8348
 
8132
- var xmlNode = function(tagname,parent,val){
8133
- this.tagname = tagname;
8134
- this.parent = parent;
8135
- this.child = [];//child tags
8136
- this.attrsMap;//attributes map
8137
- this.val = val;//text only
8138
- this.addChild = function (child){
8139
- this.child.push(child);
8140
- };
8141
- };
8349
+ const convertToJson = function(node, options, parentTagName) {
8350
+ const jObj = {};
8142
8351
 
8143
- var he = createCommonjsModule(function (module, exports) {
8144
- (function(root) {
8145
-
8146
- // Detect free variables `exports`.
8147
- var freeExports = exports;
8148
-
8149
- // Detect free variable `module`.
8150
- var freeModule = module &&
8151
- module.exports == freeExports && module;
8152
-
8153
- // Detect free variable `global`, from Node.js or Browserified code,
8154
- // and use it as `root`.
8155
- var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal;
8156
- if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {
8157
- root = freeGlobal;
8158
- }
8159
-
8160
- /*--------------------------------------------------------------------------*/
8161
-
8162
- // All astral symbols.
8163
- var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
8164
- // All ASCII symbols (not just printable ASCII) except those listed in the
8165
- // first column of the overrides table.
8166
- // https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides
8167
- var regexAsciiWhitelist = /[\x01-\x7F]/g;
8168
- // All BMP symbols that are not ASCII newlines, printable ASCII symbols, or
8169
- // code points listed in the first column of the overrides table on
8170
- // https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides.
8171
- var regexBmpWhitelist = /[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g;
8172
-
8173
- var regexEncodeNonAscii = /<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g;
8174
- var encodeMap = {'\xAD':'shy','\u200C':'zwnj','\u200D':'zwj','\u200E':'lrm','\u2063':'ic','\u2062':'it','\u2061':'af','\u200F':'rlm','\u200B':'ZeroWidthSpace','\u2060':'NoBreak','\u0311':'DownBreve','\u20DB':'tdot','\u20DC':'DotDot','\t':'Tab','\n':'NewLine','\u2008':'puncsp','\u205F':'MediumSpace','\u2009':'thinsp','\u200A':'hairsp','\u2004':'emsp13','\u2002':'ensp','\u2005':'emsp14','\u2003':'emsp','\u2007':'numsp','\xA0':'nbsp','\u205F\u200A':'ThickSpace','\u203E':'oline','_':'lowbar','\u2010':'dash','\u2013':'ndash','\u2014':'mdash','\u2015':'horbar',',':'comma',';':'semi','\u204F':'bsemi',':':'colon','\u2A74':'Colone','!':'excl','\xA1':'iexcl','?':'quest','\xBF':'iquest','.':'period','\u2025':'nldr','\u2026':'mldr','\xB7':'middot','\'':'apos','\u2018':'lsquo','\u2019':'rsquo','\u201A':'sbquo','\u2039':'lsaquo','\u203A':'rsaquo','"':'quot','\u201C':'ldquo','\u201D':'rdquo','\u201E':'bdquo','\xAB':'laquo','\xBB':'raquo','(':'lpar',')':'rpar','[':'lsqb',']':'rsqb','{':'lcub','}':'rcub','\u2308':'lceil','\u2309':'rceil','\u230A':'lfloor','\u230B':'rfloor','\u2985':'lopar','\u2986':'ropar','\u298B':'lbrke','\u298C':'rbrke','\u298D':'lbrkslu','\u298E':'rbrksld','\u298F':'lbrksld','\u2990':'rbrkslu','\u2991':'langd','\u2992':'rangd','\u2993':'lparlt','\u2994':'rpargt','\u2995':'gtlPar','\u2996':'ltrPar','\u27E6':'lobrk','\u27E7':'robrk','\u27E8':'lang','\u27E9':'rang','\u27EA':'Lang','\u27EB':'Rang','\u27EC':'loang','\u27ED':'roang','\u2772':'lbbrk','\u2773':'rbbrk','\u2016':'Vert','\xA7':'sect','\xB6':'para','@':'commat','*':'ast','/':'sol','undefined':null,'&':'amp','#':'num','%':'percnt','\u2030':'permil','\u2031':'pertenk','\u2020':'dagger','\u2021':'Dagger','\u2022':'bull','\u2043':'hybull','\u2032':'prime','\u2033':'Prime','\u2034':'tprime','\u2057':'qprime','\u2035':'bprime','\u2041':'caret','`':'grave','\xB4':'acute','\u02DC':'tilde','^':'Hat','\xAF':'macr','\u02D8':'breve','\u02D9':'dot','\xA8':'die','\u02DA':'ring','\u02DD':'dblac','\xB8':'cedil','\u02DB':'ogon','\u02C6':'circ','\u02C7':'caron','\xB0':'deg','\xA9':'copy','\xAE':'reg','\u2117':'copysr','\u2118':'wp','\u211E':'rx','\u2127':'mho','\u2129':'iiota','\u2190':'larr','\u219A':'nlarr','\u2192':'rarr','\u219B':'nrarr','\u2191':'uarr','\u2193':'darr','\u2194':'harr','\u21AE':'nharr','\u2195':'varr','\u2196':'nwarr','\u2197':'nearr','\u2198':'searr','\u2199':'swarr','\u219D':'rarrw','\u219D\u0338':'nrarrw','\u219E':'Larr','\u219F':'Uarr','\u21A0':'Rarr','\u21A1':'Darr','\u21A2':'larrtl','\u21A3':'rarrtl','\u21A4':'mapstoleft','\u21A5':'mapstoup','\u21A6':'map','\u21A7':'mapstodown','\u21A9':'larrhk','\u21AA':'rarrhk','\u21AB':'larrlp','\u21AC':'rarrlp','\u21AD':'harrw','\u21B0':'lsh','\u21B1':'rsh','\u21B2':'ldsh','\u21B3':'rdsh','\u21B5':'crarr','\u21B6':'cularr','\u21B7':'curarr','\u21BA':'olarr','\u21BB':'orarr','\u21BC':'lharu','\u21BD':'lhard','\u21BE':'uharr','\u21BF':'uharl','\u21C0':'rharu','\u21C1':'rhard','\u21C2':'dharr','\u21C3':'dharl','\u21C4':'rlarr','\u21C5':'udarr','\u21C6':'lrarr','\u21C7':'llarr','\u21C8':'uuarr','\u21C9':'rrarr','\u21CA':'ddarr','\u21CB':'lrhar','\u21CC':'rlhar','\u21D0':'lArr','\u21CD':'nlArr','\u21D1':'uArr','\u21D2':'rArr','\u21CF':'nrArr','\u21D3':'dArr','\u21D4':'iff','\u21CE':'nhArr','\u21D5':'vArr','\u21D6':'nwArr','\u21D7':'neArr','\u21D8':'seArr','\u21D9':'swArr','\u21DA':'lAarr','\u21DB':'rAarr','\u21DD':'zigrarr','\u21E4':'larrb','\u21E5':'rarrb','\u21F5':'duarr','\u21FD':'loarr','\u21FE':'roarr','\u21FF':'hoarr','\u2200':'forall','\u2201':'comp','\u2202':'part','\u2202\u0338':'npart','\u2203':'exist','\u2204':'nexist','\u2205':'empty','\u2207':'Del','\u2208':'in','\u2209':'notin','\u220B':'ni','\u220C':'notni','\u03F6':'bepsi','\u220F':'prod','\u2210':'coprod','\u2211':'sum','+':'plus','\xB1':'pm','\xF7':'div','\xD7':'times','<':'lt','\u226E':'nlt','<\u20D2':'nvlt','=':'equals','\u2260':'ne','=\u20E5':'bne','\u2A75':'Equal','>':'gt','\u226F':'ngt','>\u20D2':'nvgt','\xAC':'not','|':'vert','\xA6':'brvbar','\u2212':'minus','\u2213':'mp','\u2214':'plusdo','\u2044':'frasl','\u2216':'setmn','\u2217':'lowast','\u2218':'compfn','\u221A':'Sqrt','\u221D':'prop','\u221E':'infin','\u221F':'angrt','\u2220':'ang','\u2220\u20D2':'nang','\u2221':'angmsd','\u2222':'angsph','\u2223':'mid','\u2224':'nmid','\u2225':'par','\u2226':'npar','\u2227':'and','\u2228':'or','\u2229':'cap','\u2229\uFE00':'caps','\u222A':'cup','\u222A\uFE00':'cups','\u222B':'int','\u222C':'Int','\u222D':'tint','\u2A0C':'qint','\u222E':'oint','\u222F':'Conint','\u2230':'Cconint','\u2231':'cwint','\u2232':'cwconint','\u2233':'awconint','\u2234':'there4','\u2235':'becaus','\u2236':'ratio','\u2237':'Colon','\u2238':'minusd','\u223A':'mDDot','\u223B':'homtht','\u223C':'sim','\u2241':'nsim','\u223C\u20D2':'nvsim','\u223D':'bsim','\u223D\u0331':'race','\u223E':'ac','\u223E\u0333':'acE','\u223F':'acd','\u2240':'wr','\u2242':'esim','\u2242\u0338':'nesim','\u2243':'sime','\u2244':'nsime','\u2245':'cong','\u2247':'ncong','\u2246':'simne','\u2248':'ap','\u2249':'nap','\u224A':'ape','\u224B':'apid','\u224B\u0338':'napid','\u224C':'bcong','\u224D':'CupCap','\u226D':'NotCupCap','\u224D\u20D2':'nvap','\u224E':'bump','\u224E\u0338':'nbump','\u224F':'bumpe','\u224F\u0338':'nbumpe','\u2250':'doteq','\u2250\u0338':'nedot','\u2251':'eDot','\u2252':'efDot','\u2253':'erDot','\u2254':'colone','\u2255':'ecolon','\u2256':'ecir','\u2257':'cire','\u2259':'wedgeq','\u225A':'veeeq','\u225C':'trie','\u225F':'equest','\u2261':'equiv','\u2262':'nequiv','\u2261\u20E5':'bnequiv','\u2264':'le','\u2270':'nle','\u2264\u20D2':'nvle','\u2265':'ge','\u2271':'nge','\u2265\u20D2':'nvge','\u2266':'lE','\u2266\u0338':'nlE','\u2267':'gE','\u2267\u0338':'ngE','\u2268\uFE00':'lvnE','\u2268':'lnE','\u2269':'gnE','\u2269\uFE00':'gvnE','\u226A':'ll','\u226A\u0338':'nLtv','\u226A\u20D2':'nLt','\u226B':'gg','\u226B\u0338':'nGtv','\u226B\u20D2':'nGt','\u226C':'twixt','\u2272':'lsim','\u2274':'nlsim','\u2273':'gsim','\u2275':'ngsim','\u2276':'lg','\u2278':'ntlg','\u2277':'gl','\u2279':'ntgl','\u227A':'pr','\u2280':'npr','\u227B':'sc','\u2281':'nsc','\u227C':'prcue','\u22E0':'nprcue','\u227D':'sccue','\u22E1':'nsccue','\u227E':'prsim','\u227F':'scsim','\u227F\u0338':'NotSucceedsTilde','\u2282':'sub','\u2284':'nsub','\u2282\u20D2':'vnsub','\u2283':'sup','\u2285':'nsup','\u2283\u20D2':'vnsup','\u2286':'sube','\u2288':'nsube','\u2287':'supe','\u2289':'nsupe','\u228A\uFE00':'vsubne','\u228A':'subne','\u228B\uFE00':'vsupne','\u228B':'supne','\u228D':'cupdot','\u228E':'uplus','\u228F':'sqsub','\u228F\u0338':'NotSquareSubset','\u2290':'sqsup','\u2290\u0338':'NotSquareSuperset','\u2291':'sqsube','\u22E2':'nsqsube','\u2292':'sqsupe','\u22E3':'nsqsupe','\u2293':'sqcap','\u2293\uFE00':'sqcaps','\u2294':'sqcup','\u2294\uFE00':'sqcups','\u2295':'oplus','\u2296':'ominus','\u2297':'otimes','\u2298':'osol','\u2299':'odot','\u229A':'ocir','\u229B':'oast','\u229D':'odash','\u229E':'plusb','\u229F':'minusb','\u22A0':'timesb','\u22A1':'sdotb','\u22A2':'vdash','\u22AC':'nvdash','\u22A3':'dashv','\u22A4':'top','\u22A5':'bot','\u22A7':'models','\u22A8':'vDash','\u22AD':'nvDash','\u22A9':'Vdash','\u22AE':'nVdash','\u22AA':'Vvdash','\u22AB':'VDash','\u22AF':'nVDash','\u22B0':'prurel','\u22B2':'vltri','\u22EA':'nltri','\u22B3':'vrtri','\u22EB':'nrtri','\u22B4':'ltrie','\u22EC':'nltrie','\u22B4\u20D2':'nvltrie','\u22B5':'rtrie','\u22ED':'nrtrie','\u22B5\u20D2':'nvrtrie','\u22B6':'origof','\u22B7':'imof','\u22B8':'mumap','\u22B9':'hercon','\u22BA':'intcal','\u22BB':'veebar','\u22BD':'barvee','\u22BE':'angrtvb','\u22BF':'lrtri','\u22C0':'Wedge','\u22C1':'Vee','\u22C2':'xcap','\u22C3':'xcup','\u22C4':'diam','\u22C5':'sdot','\u22C6':'Star','\u22C7':'divonx','\u22C8':'bowtie','\u22C9':'ltimes','\u22CA':'rtimes','\u22CB':'lthree','\u22CC':'rthree','\u22CD':'bsime','\u22CE':'cuvee','\u22CF':'cuwed','\u22D0':'Sub','\u22D1':'Sup','\u22D2':'Cap','\u22D3':'Cup','\u22D4':'fork','\u22D5':'epar','\u22D6':'ltdot','\u22D7':'gtdot','\u22D8':'Ll','\u22D8\u0338':'nLl','\u22D9':'Gg','\u22D9\u0338':'nGg','\u22DA\uFE00':'lesg','\u22DA':'leg','\u22DB':'gel','\u22DB\uFE00':'gesl','\u22DE':'cuepr','\u22DF':'cuesc','\u22E6':'lnsim','\u22E7':'gnsim','\u22E8':'prnsim','\u22E9':'scnsim','\u22EE':'vellip','\u22EF':'ctdot','\u22F0':'utdot','\u22F1':'dtdot','\u22F2':'disin','\u22F3':'isinsv','\u22F4':'isins','\u22F5':'isindot','\u22F5\u0338':'notindot','\u22F6':'notinvc','\u22F7':'notinvb','\u22F9':'isinE','\u22F9\u0338':'notinE','\u22FA':'nisd','\u22FB':'xnis','\u22FC':'nis','\u22FD':'notnivc','\u22FE':'notnivb','\u2305':'barwed','\u2306':'Barwed','\u230C':'drcrop','\u230D':'dlcrop','\u230E':'urcrop','\u230F':'ulcrop','\u2310':'bnot','\u2312':'profline','\u2313':'profsurf','\u2315':'telrec','\u2316':'target','\u231C':'ulcorn','\u231D':'urcorn','\u231E':'dlcorn','\u231F':'drcorn','\u2322':'frown','\u2323':'smile','\u232D':'cylcty','\u232E':'profalar','\u2336':'topbot','\u233D':'ovbar','\u233F':'solbar','\u237C':'angzarr','\u23B0':'lmoust','\u23B1':'rmoust','\u23B4':'tbrk','\u23B5':'bbrk','\u23B6':'bbrktbrk','\u23DC':'OverParenthesis','\u23DD':'UnderParenthesis','\u23DE':'OverBrace','\u23DF':'UnderBrace','\u23E2':'trpezium','\u23E7':'elinters','\u2423':'blank','\u2500':'boxh','\u2502':'boxv','\u250C':'boxdr','\u2510':'boxdl','\u2514':'boxur','\u2518':'boxul','\u251C':'boxvr','\u2524':'boxvl','\u252C':'boxhd','\u2534':'boxhu','\u253C':'boxvh','\u2550':'boxH','\u2551':'boxV','\u2552':'boxdR','\u2553':'boxDr','\u2554':'boxDR','\u2555':'boxdL','\u2556':'boxDl','\u2557':'boxDL','\u2558':'boxuR','\u2559':'boxUr','\u255A':'boxUR','\u255B':'boxuL','\u255C':'boxUl','\u255D':'boxUL','\u255E':'boxvR','\u255F':'boxVr','\u2560':'boxVR','\u2561':'boxvL','\u2562':'boxVl','\u2563':'boxVL','\u2564':'boxHd','\u2565':'boxhD','\u2566':'boxHD','\u2567':'boxHu','\u2568':'boxhU','\u2569':'boxHU','\u256A':'boxvH','\u256B':'boxVh','\u256C':'boxVH','\u2580':'uhblk','\u2584':'lhblk','\u2588':'block','\u2591':'blk14','\u2592':'blk12','\u2593':'blk34','\u25A1':'squ','\u25AA':'squf','\u25AB':'EmptyVerySmallSquare','\u25AD':'rect','\u25AE':'marker','\u25B1':'fltns','\u25B3':'xutri','\u25B4':'utrif','\u25B5':'utri','\u25B8':'rtrif','\u25B9':'rtri','\u25BD':'xdtri','\u25BE':'dtrif','\u25BF':'dtri','\u25C2':'ltrif','\u25C3':'ltri','\u25CA':'loz','\u25CB':'cir','\u25EC':'tridot','\u25EF':'xcirc','\u25F8':'ultri','\u25F9':'urtri','\u25FA':'lltri','\u25FB':'EmptySmallSquare','\u25FC':'FilledSmallSquare','\u2605':'starf','\u2606':'star','\u260E':'phone','\u2640':'female','\u2642':'male','\u2660':'spades','\u2663':'clubs','\u2665':'hearts','\u2666':'diams','\u266A':'sung','\u2713':'check','\u2717':'cross','\u2720':'malt','\u2736':'sext','\u2758':'VerticalSeparator','\u27C8':'bsolhsub','\u27C9':'suphsol','\u27F5':'xlarr','\u27F6':'xrarr','\u27F7':'xharr','\u27F8':'xlArr','\u27F9':'xrArr','\u27FA':'xhArr','\u27FC':'xmap','\u27FF':'dzigrarr','\u2902':'nvlArr','\u2903':'nvrArr','\u2904':'nvHarr','\u2905':'Map','\u290C':'lbarr','\u290D':'rbarr','\u290E':'lBarr','\u290F':'rBarr','\u2910':'RBarr','\u2911':'DDotrahd','\u2912':'UpArrowBar','\u2913':'DownArrowBar','\u2916':'Rarrtl','\u2919':'latail','\u291A':'ratail','\u291B':'lAtail','\u291C':'rAtail','\u291D':'larrfs','\u291E':'rarrfs','\u291F':'larrbfs','\u2920':'rarrbfs','\u2923':'nwarhk','\u2924':'nearhk','\u2925':'searhk','\u2926':'swarhk','\u2927':'nwnear','\u2928':'toea','\u2929':'tosa','\u292A':'swnwar','\u2933':'rarrc','\u2933\u0338':'nrarrc','\u2935':'cudarrr','\u2936':'ldca','\u2937':'rdca','\u2938':'cudarrl','\u2939':'larrpl','\u293C':'curarrm','\u293D':'cularrp','\u2945':'rarrpl','\u2948':'harrcir','\u2949':'Uarrocir','\u294A':'lurdshar','\u294B':'ldrushar','\u294E':'LeftRightVector','\u294F':'RightUpDownVector','\u2950':'DownLeftRightVector','\u2951':'LeftUpDownVector','\u2952':'LeftVectorBar','\u2953':'RightVectorBar','\u2954':'RightUpVectorBar','\u2955':'RightDownVectorBar','\u2956':'DownLeftVectorBar','\u2957':'DownRightVectorBar','\u2958':'LeftUpVectorBar','\u2959':'LeftDownVectorBar','\u295A':'LeftTeeVector','\u295B':'RightTeeVector','\u295C':'RightUpTeeVector','\u295D':'RightDownTeeVector','\u295E':'DownLeftTeeVector','\u295F':'DownRightTeeVector','\u2960':'LeftUpTeeVector','\u2961':'LeftDownTeeVector','\u2962':'lHar','\u2963':'uHar','\u2964':'rHar','\u2965':'dHar','\u2966':'luruhar','\u2967':'ldrdhar','\u2968':'ruluhar','\u2969':'rdldhar','\u296A':'lharul','\u296B':'llhard','\u296C':'rharul','\u296D':'lrhard','\u296E':'udhar','\u296F':'duhar','\u2970':'RoundImplies','\u2971':'erarr','\u2972':'simrarr','\u2973':'larrsim','\u2974':'rarrsim','\u2975':'rarrap','\u2976':'ltlarr','\u2978':'gtrarr','\u2979':'subrarr','\u297B':'suplarr','\u297C':'lfisht','\u297D':'rfisht','\u297E':'ufisht','\u297F':'dfisht','\u299A':'vzigzag','\u299C':'vangrt','\u299D':'angrtvbd','\u29A4':'ange','\u29A5':'range','\u29A6':'dwangle','\u29A7':'uwangle','\u29A8':'angmsdaa','\u29A9':'angmsdab','\u29AA':'angmsdac','\u29AB':'angmsdad','\u29AC':'angmsdae','\u29AD':'angmsdaf','\u29AE':'angmsdag','\u29AF':'angmsdah','\u29B0':'bemptyv','\u29B1':'demptyv','\u29B2':'cemptyv','\u29B3':'raemptyv','\u29B4':'laemptyv','\u29B5':'ohbar','\u29B6':'omid','\u29B7':'opar','\u29B9':'operp','\u29BB':'olcross','\u29BC':'odsold','\u29BE':'olcir','\u29BF':'ofcir','\u29C0':'olt','\u29C1':'ogt','\u29C2':'cirscir','\u29C3':'cirE','\u29C4':'solb','\u29C5':'bsolb','\u29C9':'boxbox','\u29CD':'trisb','\u29CE':'rtriltri','\u29CF':'LeftTriangleBar','\u29CF\u0338':'NotLeftTriangleBar','\u29D0':'RightTriangleBar','\u29D0\u0338':'NotRightTriangleBar','\u29DC':'iinfin','\u29DD':'infintie','\u29DE':'nvinfin','\u29E3':'eparsl','\u29E4':'smeparsl','\u29E5':'eqvparsl','\u29EB':'lozf','\u29F4':'RuleDelayed','\u29F6':'dsol','\u2A00':'xodot','\u2A01':'xoplus','\u2A02':'xotime','\u2A04':'xuplus','\u2A06':'xsqcup','\u2A0D':'fpartint','\u2A10':'cirfnint','\u2A11':'awint','\u2A12':'rppolint','\u2A13':'scpolint','\u2A14':'npolint','\u2A15':'pointint','\u2A16':'quatint','\u2A17':'intlarhk','\u2A22':'pluscir','\u2A23':'plusacir','\u2A24':'simplus','\u2A25':'plusdu','\u2A26':'plussim','\u2A27':'plustwo','\u2A29':'mcomma','\u2A2A':'minusdu','\u2A2D':'loplus','\u2A2E':'roplus','\u2A2F':'Cross','\u2A30':'timesd','\u2A31':'timesbar','\u2A33':'smashp','\u2A34':'lotimes','\u2A35':'rotimes','\u2A36':'otimesas','\u2A37':'Otimes','\u2A38':'odiv','\u2A39':'triplus','\u2A3A':'triminus','\u2A3B':'tritime','\u2A3C':'iprod','\u2A3F':'amalg','\u2A40':'capdot','\u2A42':'ncup','\u2A43':'ncap','\u2A44':'capand','\u2A45':'cupor','\u2A46':'cupcap','\u2A47':'capcup','\u2A48':'cupbrcap','\u2A49':'capbrcup','\u2A4A':'cupcup','\u2A4B':'capcap','\u2A4C':'ccups','\u2A4D':'ccaps','\u2A50':'ccupssm','\u2A53':'And','\u2A54':'Or','\u2A55':'andand','\u2A56':'oror','\u2A57':'orslope','\u2A58':'andslope','\u2A5A':'andv','\u2A5B':'orv','\u2A5C':'andd','\u2A5D':'ord','\u2A5F':'wedbar','\u2A66':'sdote','\u2A6A':'simdot','\u2A6D':'congdot','\u2A6D\u0338':'ncongdot','\u2A6E':'easter','\u2A6F':'apacir','\u2A70':'apE','\u2A70\u0338':'napE','\u2A71':'eplus','\u2A72':'pluse','\u2A73':'Esim','\u2A77':'eDDot','\u2A78':'equivDD','\u2A79':'ltcir','\u2A7A':'gtcir','\u2A7B':'ltquest','\u2A7C':'gtquest','\u2A7D':'les','\u2A7D\u0338':'nles','\u2A7E':'ges','\u2A7E\u0338':'nges','\u2A7F':'lesdot','\u2A80':'gesdot','\u2A81':'lesdoto','\u2A82':'gesdoto','\u2A83':'lesdotor','\u2A84':'gesdotol','\u2A85':'lap','\u2A86':'gap','\u2A87':'lne','\u2A88':'gne','\u2A89':'lnap','\u2A8A':'gnap','\u2A8B':'lEg','\u2A8C':'gEl','\u2A8D':'lsime','\u2A8E':'gsime','\u2A8F':'lsimg','\u2A90':'gsiml','\u2A91':'lgE','\u2A92':'glE','\u2A93':'lesges','\u2A94':'gesles','\u2A95':'els','\u2A96':'egs','\u2A97':'elsdot','\u2A98':'egsdot','\u2A99':'el','\u2A9A':'eg','\u2A9D':'siml','\u2A9E':'simg','\u2A9F':'simlE','\u2AA0':'simgE','\u2AA1':'LessLess','\u2AA1\u0338':'NotNestedLessLess','\u2AA2':'GreaterGreater','\u2AA2\u0338':'NotNestedGreaterGreater','\u2AA4':'glj','\u2AA5':'gla','\u2AA6':'ltcc','\u2AA7':'gtcc','\u2AA8':'lescc','\u2AA9':'gescc','\u2AAA':'smt','\u2AAB':'lat','\u2AAC':'smte','\u2AAC\uFE00':'smtes','\u2AAD':'late','\u2AAD\uFE00':'lates','\u2AAE':'bumpE','\u2AAF':'pre','\u2AAF\u0338':'npre','\u2AB0':'sce','\u2AB0\u0338':'nsce','\u2AB3':'prE','\u2AB4':'scE','\u2AB5':'prnE','\u2AB6':'scnE','\u2AB7':'prap','\u2AB8':'scap','\u2AB9':'prnap','\u2ABA':'scnap','\u2ABB':'Pr','\u2ABC':'Sc','\u2ABD':'subdot','\u2ABE':'supdot','\u2ABF':'subplus','\u2AC0':'supplus','\u2AC1':'submult','\u2AC2':'supmult','\u2AC3':'subedot','\u2AC4':'supedot','\u2AC5':'subE','\u2AC5\u0338':'nsubE','\u2AC6':'supE','\u2AC6\u0338':'nsupE','\u2AC7':'subsim','\u2AC8':'supsim','\u2ACB\uFE00':'vsubnE','\u2ACB':'subnE','\u2ACC\uFE00':'vsupnE','\u2ACC':'supnE','\u2ACF':'csub','\u2AD0':'csup','\u2AD1':'csube','\u2AD2':'csupe','\u2AD3':'subsup','\u2AD4':'supsub','\u2AD5':'subsub','\u2AD6':'supsup','\u2AD7':'suphsub','\u2AD8':'supdsub','\u2AD9':'forkv','\u2ADA':'topfork','\u2ADB':'mlcp','\u2AE4':'Dashv','\u2AE6':'Vdashl','\u2AE7':'Barv','\u2AE8':'vBar','\u2AE9':'vBarv','\u2AEB':'Vbar','\u2AEC':'Not','\u2AED':'bNot','\u2AEE':'rnmid','\u2AEF':'cirmid','\u2AF0':'midcir','\u2AF1':'topcir','\u2AF2':'nhpar','\u2AF3':'parsim','\u2AFD':'parsl','\u2AFD\u20E5':'nparsl','\u266D':'flat','\u266E':'natur','\u266F':'sharp','\xA4':'curren','\xA2':'cent','$':'dollar','\xA3':'pound','\xA5':'yen','\u20AC':'euro','\xB9':'sup1','\xBD':'half','\u2153':'frac13','\xBC':'frac14','\u2155':'frac15','\u2159':'frac16','\u215B':'frac18','\xB2':'sup2','\u2154':'frac23','\u2156':'frac25','\xB3':'sup3','\xBE':'frac34','\u2157':'frac35','\u215C':'frac38','\u2158':'frac45','\u215A':'frac56','\u215D':'frac58','\u215E':'frac78','\uD835\uDCB6':'ascr','\uD835\uDD52':'aopf','\uD835\uDD1E':'afr','\uD835\uDD38':'Aopf','\uD835\uDD04':'Afr','\uD835\uDC9C':'Ascr','\xAA':'ordf','\xE1':'aacute','\xC1':'Aacute','\xE0':'agrave','\xC0':'Agrave','\u0103':'abreve','\u0102':'Abreve','\xE2':'acirc','\xC2':'Acirc','\xE5':'aring','\xC5':'angst','\xE4':'auml','\xC4':'Auml','\xE3':'atilde','\xC3':'Atilde','\u0105':'aogon','\u0104':'Aogon','\u0101':'amacr','\u0100':'Amacr','\xE6':'aelig','\xC6':'AElig','\uD835\uDCB7':'bscr','\uD835\uDD53':'bopf','\uD835\uDD1F':'bfr','\uD835\uDD39':'Bopf','\u212C':'Bscr','\uD835\uDD05':'Bfr','\uD835\uDD20':'cfr','\uD835\uDCB8':'cscr','\uD835\uDD54':'copf','\u212D':'Cfr','\uD835\uDC9E':'Cscr','\u2102':'Copf','\u0107':'cacute','\u0106':'Cacute','\u0109':'ccirc','\u0108':'Ccirc','\u010D':'ccaron','\u010C':'Ccaron','\u010B':'cdot','\u010A':'Cdot','\xE7':'ccedil','\xC7':'Ccedil','\u2105':'incare','\uD835\uDD21':'dfr','\u2146':'dd','\uD835\uDD55':'dopf','\uD835\uDCB9':'dscr','\uD835\uDC9F':'Dscr','\uD835\uDD07':'Dfr','\u2145':'DD','\uD835\uDD3B':'Dopf','\u010F':'dcaron','\u010E':'Dcaron','\u0111':'dstrok','\u0110':'Dstrok','\xF0':'eth','\xD0':'ETH','\u2147':'ee','\u212F':'escr','\uD835\uDD22':'efr','\uD835\uDD56':'eopf','\u2130':'Escr','\uD835\uDD08':'Efr','\uD835\uDD3C':'Eopf','\xE9':'eacute','\xC9':'Eacute','\xE8':'egrave','\xC8':'Egrave','\xEA':'ecirc','\xCA':'Ecirc','\u011B':'ecaron','\u011A':'Ecaron','\xEB':'euml','\xCB':'Euml','\u0117':'edot','\u0116':'Edot','\u0119':'eogon','\u0118':'Eogon','\u0113':'emacr','\u0112':'Emacr','\uD835\uDD23':'ffr','\uD835\uDD57':'fopf','\uD835\uDCBB':'fscr','\uD835\uDD09':'Ffr','\uD835\uDD3D':'Fopf','\u2131':'Fscr','\uFB00':'fflig','\uFB03':'ffilig','\uFB04':'ffllig','\uFB01':'filig','fj':'fjlig','\uFB02':'fllig','\u0192':'fnof','\u210A':'gscr','\uD835\uDD58':'gopf','\uD835\uDD24':'gfr','\uD835\uDCA2':'Gscr','\uD835\uDD3E':'Gopf','\uD835\uDD0A':'Gfr','\u01F5':'gacute','\u011F':'gbreve','\u011E':'Gbreve','\u011D':'gcirc','\u011C':'Gcirc','\u0121':'gdot','\u0120':'Gdot','\u0122':'Gcedil','\uD835\uDD25':'hfr','\u210E':'planckh','\uD835\uDCBD':'hscr','\uD835\uDD59':'hopf','\u210B':'Hscr','\u210C':'Hfr','\u210D':'Hopf','\u0125':'hcirc','\u0124':'Hcirc','\u210F':'hbar','\u0127':'hstrok','\u0126':'Hstrok','\uD835\uDD5A':'iopf','\uD835\uDD26':'ifr','\uD835\uDCBE':'iscr','\u2148':'ii','\uD835\uDD40':'Iopf','\u2110':'Iscr','\u2111':'Im','\xED':'iacute','\xCD':'Iacute','\xEC':'igrave','\xCC':'Igrave','\xEE':'icirc','\xCE':'Icirc','\xEF':'iuml','\xCF':'Iuml','\u0129':'itilde','\u0128':'Itilde','\u0130':'Idot','\u012F':'iogon','\u012E':'Iogon','\u012B':'imacr','\u012A':'Imacr','\u0133':'ijlig','\u0132':'IJlig','\u0131':'imath','\uD835\uDCBF':'jscr','\uD835\uDD5B':'jopf','\uD835\uDD27':'jfr','\uD835\uDCA5':'Jscr','\uD835\uDD0D':'Jfr','\uD835\uDD41':'Jopf','\u0135':'jcirc','\u0134':'Jcirc','\u0237':'jmath','\uD835\uDD5C':'kopf','\uD835\uDCC0':'kscr','\uD835\uDD28':'kfr','\uD835\uDCA6':'Kscr','\uD835\uDD42':'Kopf','\uD835\uDD0E':'Kfr','\u0137':'kcedil','\u0136':'Kcedil','\uD835\uDD29':'lfr','\uD835\uDCC1':'lscr','\u2113':'ell','\uD835\uDD5D':'lopf','\u2112':'Lscr','\uD835\uDD0F':'Lfr','\uD835\uDD43':'Lopf','\u013A':'lacute','\u0139':'Lacute','\u013E':'lcaron','\u013D':'Lcaron','\u013C':'lcedil','\u013B':'Lcedil','\u0142':'lstrok','\u0141':'Lstrok','\u0140':'lmidot','\u013F':'Lmidot','\uD835\uDD2A':'mfr','\uD835\uDD5E':'mopf','\uD835\uDCC2':'mscr','\uD835\uDD10':'Mfr','\uD835\uDD44':'Mopf','\u2133':'Mscr','\uD835\uDD2B':'nfr','\uD835\uDD5F':'nopf','\uD835\uDCC3':'nscr','\u2115':'Nopf','\uD835\uDCA9':'Nscr','\uD835\uDD11':'Nfr','\u0144':'nacute','\u0143':'Nacute','\u0148':'ncaron','\u0147':'Ncaron','\xF1':'ntilde','\xD1':'Ntilde','\u0146':'ncedil','\u0145':'Ncedil','\u2116':'numero','\u014B':'eng','\u014A':'ENG','\uD835\uDD60':'oopf','\uD835\uDD2C':'ofr','\u2134':'oscr','\uD835\uDCAA':'Oscr','\uD835\uDD12':'Ofr','\uD835\uDD46':'Oopf','\xBA':'ordm','\xF3':'oacute','\xD3':'Oacute','\xF2':'ograve','\xD2':'Ograve','\xF4':'ocirc','\xD4':'Ocirc','\xF6':'ouml','\xD6':'Ouml','\u0151':'odblac','\u0150':'Odblac','\xF5':'otilde','\xD5':'Otilde','\xF8':'oslash','\xD8':'Oslash','\u014D':'omacr','\u014C':'Omacr','\u0153':'oelig','\u0152':'OElig','\uD835\uDD2D':'pfr','\uD835\uDCC5':'pscr','\uD835\uDD61':'popf','\u2119':'Popf','\uD835\uDD13':'Pfr','\uD835\uDCAB':'Pscr','\uD835\uDD62':'qopf','\uD835\uDD2E':'qfr','\uD835\uDCC6':'qscr','\uD835\uDCAC':'Qscr','\uD835\uDD14':'Qfr','\u211A':'Qopf','\u0138':'kgreen','\uD835\uDD2F':'rfr','\uD835\uDD63':'ropf','\uD835\uDCC7':'rscr','\u211B':'Rscr','\u211C':'Re','\u211D':'Ropf','\u0155':'racute','\u0154':'Racute','\u0159':'rcaron','\u0158':'Rcaron','\u0157':'rcedil','\u0156':'Rcedil','\uD835\uDD64':'sopf','\uD835\uDCC8':'sscr','\uD835\uDD30':'sfr','\uD835\uDD4A':'Sopf','\uD835\uDD16':'Sfr','\uD835\uDCAE':'Sscr','\u24C8':'oS','\u015B':'sacute','\u015A':'Sacute','\u015D':'scirc','\u015C':'Scirc','\u0161':'scaron','\u0160':'Scaron','\u015F':'scedil','\u015E':'Scedil','\xDF':'szlig','\uD835\uDD31':'tfr','\uD835\uDCC9':'tscr','\uD835\uDD65':'topf','\uD835\uDCAF':'Tscr','\uD835\uDD17':'Tfr','\uD835\uDD4B':'Topf','\u0165':'tcaron','\u0164':'Tcaron','\u0163':'tcedil','\u0162':'Tcedil','\u2122':'trade','\u0167':'tstrok','\u0166':'Tstrok','\uD835\uDCCA':'uscr','\uD835\uDD66':'uopf','\uD835\uDD32':'ufr','\uD835\uDD4C':'Uopf','\uD835\uDD18':'Ufr','\uD835\uDCB0':'Uscr','\xFA':'uacute','\xDA':'Uacute','\xF9':'ugrave','\xD9':'Ugrave','\u016D':'ubreve','\u016C':'Ubreve','\xFB':'ucirc','\xDB':'Ucirc','\u016F':'uring','\u016E':'Uring','\xFC':'uuml','\xDC':'Uuml','\u0171':'udblac','\u0170':'Udblac','\u0169':'utilde','\u0168':'Utilde','\u0173':'uogon','\u0172':'Uogon','\u016B':'umacr','\u016A':'Umacr','\uD835\uDD33':'vfr','\uD835\uDD67':'vopf','\uD835\uDCCB':'vscr','\uD835\uDD19':'Vfr','\uD835\uDD4D':'Vopf','\uD835\uDCB1':'Vscr','\uD835\uDD68':'wopf','\uD835\uDCCC':'wscr','\uD835\uDD34':'wfr','\uD835\uDCB2':'Wscr','\uD835\uDD4E':'Wopf','\uD835\uDD1A':'Wfr','\u0175':'wcirc','\u0174':'Wcirc','\uD835\uDD35':'xfr','\uD835\uDCCD':'xscr','\uD835\uDD69':'xopf','\uD835\uDD4F':'Xopf','\uD835\uDD1B':'Xfr','\uD835\uDCB3':'Xscr','\uD835\uDD36':'yfr','\uD835\uDCCE':'yscr','\uD835\uDD6A':'yopf','\uD835\uDCB4':'Yscr','\uD835\uDD1C':'Yfr','\uD835\uDD50':'Yopf','\xFD':'yacute','\xDD':'Yacute','\u0177':'ycirc','\u0176':'Ycirc','\xFF':'yuml','\u0178':'Yuml','\uD835\uDCCF':'zscr','\uD835\uDD37':'zfr','\uD835\uDD6B':'zopf','\u2128':'Zfr','\u2124':'Zopf','\uD835\uDCB5':'Zscr','\u017A':'zacute','\u0179':'Zacute','\u017E':'zcaron','\u017D':'Zcaron','\u017C':'zdot','\u017B':'Zdot','\u01B5':'imped','\xFE':'thorn','\xDE':'THORN','\u0149':'napos','\u03B1':'alpha','\u0391':'Alpha','\u03B2':'beta','\u0392':'Beta','\u03B3':'gamma','\u0393':'Gamma','\u03B4':'delta','\u0394':'Delta','\u03B5':'epsi','\u03F5':'epsiv','\u0395':'Epsilon','\u03DD':'gammad','\u03DC':'Gammad','\u03B6':'zeta','\u0396':'Zeta','\u03B7':'eta','\u0397':'Eta','\u03B8':'theta','\u03D1':'thetav','\u0398':'Theta','\u03B9':'iota','\u0399':'Iota','\u03BA':'kappa','\u03F0':'kappav','\u039A':'Kappa','\u03BB':'lambda','\u039B':'Lambda','\u03BC':'mu','\xB5':'micro','\u039C':'Mu','\u03BD':'nu','\u039D':'Nu','\u03BE':'xi','\u039E':'Xi','\u03BF':'omicron','\u039F':'Omicron','\u03C0':'pi','\u03D6':'piv','\u03A0':'Pi','\u03C1':'rho','\u03F1':'rhov','\u03A1':'Rho','\u03C3':'sigma','\u03A3':'Sigma','\u03C2':'sigmaf','\u03C4':'tau','\u03A4':'Tau','\u03C5':'upsi','\u03A5':'Upsilon','\u03D2':'Upsi','\u03C6':'phi','\u03D5':'phiv','\u03A6':'Phi','\u03C7':'chi','\u03A7':'Chi','\u03C8':'psi','\u03A8':'Psi','\u03C9':'omega','\u03A9':'ohm','\u0430':'acy','\u0410':'Acy','\u0431':'bcy','\u0411':'Bcy','\u0432':'vcy','\u0412':'Vcy','\u0433':'gcy','\u0413':'Gcy','\u0453':'gjcy','\u0403':'GJcy','\u0434':'dcy','\u0414':'Dcy','\u0452':'djcy','\u0402':'DJcy','\u0435':'iecy','\u0415':'IEcy','\u0451':'iocy','\u0401':'IOcy','\u0454':'jukcy','\u0404':'Jukcy','\u0436':'zhcy','\u0416':'ZHcy','\u0437':'zcy','\u0417':'Zcy','\u0455':'dscy','\u0405':'DScy','\u0438':'icy','\u0418':'Icy','\u0456':'iukcy','\u0406':'Iukcy','\u0457':'yicy','\u0407':'YIcy','\u0439':'jcy','\u0419':'Jcy','\u0458':'jsercy','\u0408':'Jsercy','\u043A':'kcy','\u041A':'Kcy','\u045C':'kjcy','\u040C':'KJcy','\u043B':'lcy','\u041B':'Lcy','\u0459':'ljcy','\u0409':'LJcy','\u043C':'mcy','\u041C':'Mcy','\u043D':'ncy','\u041D':'Ncy','\u045A':'njcy','\u040A':'NJcy','\u043E':'ocy','\u041E':'Ocy','\u043F':'pcy','\u041F':'Pcy','\u0440':'rcy','\u0420':'Rcy','\u0441':'scy','\u0421':'Scy','\u0442':'tcy','\u0422':'Tcy','\u045B':'tshcy','\u040B':'TSHcy','\u0443':'ucy','\u0423':'Ucy','\u045E':'ubrcy','\u040E':'Ubrcy','\u0444':'fcy','\u0424':'Fcy','\u0445':'khcy','\u0425':'KHcy','\u0446':'tscy','\u0426':'TScy','\u0447':'chcy','\u0427':'CHcy','\u045F':'dzcy','\u040F':'DZcy','\u0448':'shcy','\u0428':'SHcy','\u0449':'shchcy','\u0429':'SHCHcy','\u044A':'hardcy','\u042A':'HARDcy','\u044B':'ycy','\u042B':'Ycy','\u044C':'softcy','\u042C':'SOFTcy','\u044D':'ecy','\u042D':'Ecy','\u044E':'yucy','\u042E':'YUcy','\u044F':'yacy','\u042F':'YAcy','\u2135':'aleph','\u2136':'beth','\u2137':'gimel','\u2138':'daleth'};
8175
-
8176
- var regexEscape = /["&'<>`]/g;
8177
- var escapeMap = {
8178
- '"': '&quot;',
8179
- '&': '&amp;',
8180
- '\'': '&#x27;',
8181
- '<': '&lt;',
8182
- // See https://mathiasbynens.be/notes/ambiguous-ampersands: in HTML, the
8183
- // following is not strictly necessary unless it’s part of a tag or an
8184
- // unquoted attribute value. We’re only escaping it to support those
8185
- // situations, and for XML support.
8186
- '>': '&gt;',
8187
- // In Internet Explorer ≤ 8, the backtick character can be used
8188
- // to break out of (un)quoted attribute values or HTML comments.
8189
- // See http://html5sec.org/#102, http://html5sec.org/#108, and
8190
- // http://html5sec.org/#133.
8191
- '`': '&#x60;'
8192
- };
8193
-
8194
- var regexInvalidEntity = /&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/;
8195
- var regexInvalidRawCodePoint = /[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;
8196
- var regexDecode = /&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)([=a-zA-Z0-9])?/g;
8197
- var decodeMap = {'aacute':'\xE1','Aacute':'\xC1','abreve':'\u0103','Abreve':'\u0102','ac':'\u223E','acd':'\u223F','acE':'\u223E\u0333','acirc':'\xE2','Acirc':'\xC2','acute':'\xB4','acy':'\u0430','Acy':'\u0410','aelig':'\xE6','AElig':'\xC6','af':'\u2061','afr':'\uD835\uDD1E','Afr':'\uD835\uDD04','agrave':'\xE0','Agrave':'\xC0','alefsym':'\u2135','aleph':'\u2135','alpha':'\u03B1','Alpha':'\u0391','amacr':'\u0101','Amacr':'\u0100','amalg':'\u2A3F','amp':'&','AMP':'&','and':'\u2227','And':'\u2A53','andand':'\u2A55','andd':'\u2A5C','andslope':'\u2A58','andv':'\u2A5A','ang':'\u2220','ange':'\u29A4','angle':'\u2220','angmsd':'\u2221','angmsdaa':'\u29A8','angmsdab':'\u29A9','angmsdac':'\u29AA','angmsdad':'\u29AB','angmsdae':'\u29AC','angmsdaf':'\u29AD','angmsdag':'\u29AE','angmsdah':'\u29AF','angrt':'\u221F','angrtvb':'\u22BE','angrtvbd':'\u299D','angsph':'\u2222','angst':'\xC5','angzarr':'\u237C','aogon':'\u0105','Aogon':'\u0104','aopf':'\uD835\uDD52','Aopf':'\uD835\uDD38','ap':'\u2248','apacir':'\u2A6F','ape':'\u224A','apE':'\u2A70','apid':'\u224B','apos':'\'','ApplyFunction':'\u2061','approx':'\u2248','approxeq':'\u224A','aring':'\xE5','Aring':'\xC5','ascr':'\uD835\uDCB6','Ascr':'\uD835\uDC9C','Assign':'\u2254','ast':'*','asymp':'\u2248','asympeq':'\u224D','atilde':'\xE3','Atilde':'\xC3','auml':'\xE4','Auml':'\xC4','awconint':'\u2233','awint':'\u2A11','backcong':'\u224C','backepsilon':'\u03F6','backprime':'\u2035','backsim':'\u223D','backsimeq':'\u22CD','Backslash':'\u2216','Barv':'\u2AE7','barvee':'\u22BD','barwed':'\u2305','Barwed':'\u2306','barwedge':'\u2305','bbrk':'\u23B5','bbrktbrk':'\u23B6','bcong':'\u224C','bcy':'\u0431','Bcy':'\u0411','bdquo':'\u201E','becaus':'\u2235','because':'\u2235','Because':'\u2235','bemptyv':'\u29B0','bepsi':'\u03F6','bernou':'\u212C','Bernoullis':'\u212C','beta':'\u03B2','Beta':'\u0392','beth':'\u2136','between':'\u226C','bfr':'\uD835\uDD1F','Bfr':'\uD835\uDD05','bigcap':'\u22C2','bigcirc':'\u25EF','bigcup':'\u22C3','bigodot':'\u2A00','bigoplus':'\u2A01','bigotimes':'\u2A02','bigsqcup':'\u2A06','bigstar':'\u2605','bigtriangledown':'\u25BD','bigtriangleup':'\u25B3','biguplus':'\u2A04','bigvee':'\u22C1','bigwedge':'\u22C0','bkarow':'\u290D','blacklozenge':'\u29EB','blacksquare':'\u25AA','blacktriangle':'\u25B4','blacktriangledown':'\u25BE','blacktriangleleft':'\u25C2','blacktriangleright':'\u25B8','blank':'\u2423','blk12':'\u2592','blk14':'\u2591','blk34':'\u2593','block':'\u2588','bne':'=\u20E5','bnequiv':'\u2261\u20E5','bnot':'\u2310','bNot':'\u2AED','bopf':'\uD835\uDD53','Bopf':'\uD835\uDD39','bot':'\u22A5','bottom':'\u22A5','bowtie':'\u22C8','boxbox':'\u29C9','boxdl':'\u2510','boxdL':'\u2555','boxDl':'\u2556','boxDL':'\u2557','boxdr':'\u250C','boxdR':'\u2552','boxDr':'\u2553','boxDR':'\u2554','boxh':'\u2500','boxH':'\u2550','boxhd':'\u252C','boxhD':'\u2565','boxHd':'\u2564','boxHD':'\u2566','boxhu':'\u2534','boxhU':'\u2568','boxHu':'\u2567','boxHU':'\u2569','boxminus':'\u229F','boxplus':'\u229E','boxtimes':'\u22A0','boxul':'\u2518','boxuL':'\u255B','boxUl':'\u255C','boxUL':'\u255D','boxur':'\u2514','boxuR':'\u2558','boxUr':'\u2559','boxUR':'\u255A','boxv':'\u2502','boxV':'\u2551','boxvh':'\u253C','boxvH':'\u256A','boxVh':'\u256B','boxVH':'\u256C','boxvl':'\u2524','boxvL':'\u2561','boxVl':'\u2562','boxVL':'\u2563','boxvr':'\u251C','boxvR':'\u255E','boxVr':'\u255F','boxVR':'\u2560','bprime':'\u2035','breve':'\u02D8','Breve':'\u02D8','brvbar':'\xA6','bscr':'\uD835\uDCB7','Bscr':'\u212C','bsemi':'\u204F','bsim':'\u223D','bsime':'\u22CD','bsol':'\\','bsolb':'\u29C5','bsolhsub':'\u27C8','bull':'\u2022','bullet':'\u2022','bump':'\u224E','bumpe':'\u224F','bumpE':'\u2AAE','bumpeq':'\u224F','Bumpeq':'\u224E','cacute':'\u0107','Cacute':'\u0106','cap':'\u2229','Cap':'\u22D2','capand':'\u2A44','capbrcup':'\u2A49','capcap':'\u2A4B','capcup':'\u2A47','capdot':'\u2A40','CapitalDifferentialD':'\u2145','caps':'\u2229\uFE00','caret':'\u2041','caron':'\u02C7','Cayleys':'\u212D','ccaps':'\u2A4D','ccaron':'\u010D','Ccaron':'\u010C','ccedil':'\xE7','Ccedil':'\xC7','ccirc':'\u0109','Ccirc':'\u0108','Cconint':'\u2230','ccups':'\u2A4C','ccupssm':'\u2A50','cdot':'\u010B','Cdot':'\u010A','cedil':'\xB8','Cedilla':'\xB8','cemptyv':'\u29B2','cent':'\xA2','centerdot':'\xB7','CenterDot':'\xB7','cfr':'\uD835\uDD20','Cfr':'\u212D','chcy':'\u0447','CHcy':'\u0427','check':'\u2713','checkmark':'\u2713','chi':'\u03C7','Chi':'\u03A7','cir':'\u25CB','circ':'\u02C6','circeq':'\u2257','circlearrowleft':'\u21BA','circlearrowright':'\u21BB','circledast':'\u229B','circledcirc':'\u229A','circleddash':'\u229D','CircleDot':'\u2299','circledR':'\xAE','circledS':'\u24C8','CircleMinus':'\u2296','CirclePlus':'\u2295','CircleTimes':'\u2297','cire':'\u2257','cirE':'\u29C3','cirfnint':'\u2A10','cirmid':'\u2AEF','cirscir':'\u29C2','ClockwiseContourIntegral':'\u2232','CloseCurlyDoubleQuote':'\u201D','CloseCurlyQuote':'\u2019','clubs':'\u2663','clubsuit':'\u2663','colon':':','Colon':'\u2237','colone':'\u2254','Colone':'\u2A74','coloneq':'\u2254','comma':',','commat':'@','comp':'\u2201','compfn':'\u2218','complement':'\u2201','complexes':'\u2102','cong':'\u2245','congdot':'\u2A6D','Congruent':'\u2261','conint':'\u222E','Conint':'\u222F','ContourIntegral':'\u222E','copf':'\uD835\uDD54','Copf':'\u2102','coprod':'\u2210','Coproduct':'\u2210','copy':'\xA9','COPY':'\xA9','copysr':'\u2117','CounterClockwiseContourIntegral':'\u2233','crarr':'\u21B5','cross':'\u2717','Cross':'\u2A2F','cscr':'\uD835\uDCB8','Cscr':'\uD835\uDC9E','csub':'\u2ACF','csube':'\u2AD1','csup':'\u2AD0','csupe':'\u2AD2','ctdot':'\u22EF','cudarrl':'\u2938','cudarrr':'\u2935','cuepr':'\u22DE','cuesc':'\u22DF','cularr':'\u21B6','cularrp':'\u293D','cup':'\u222A','Cup':'\u22D3','cupbrcap':'\u2A48','cupcap':'\u2A46','CupCap':'\u224D','cupcup':'\u2A4A','cupdot':'\u228D','cupor':'\u2A45','cups':'\u222A\uFE00','curarr':'\u21B7','curarrm':'\u293C','curlyeqprec':'\u22DE','curlyeqsucc':'\u22DF','curlyvee':'\u22CE','curlywedge':'\u22CF','curren':'\xA4','curvearrowleft':'\u21B6','curvearrowright':'\u21B7','cuvee':'\u22CE','cuwed':'\u22CF','cwconint':'\u2232','cwint':'\u2231','cylcty':'\u232D','dagger':'\u2020','Dagger':'\u2021','daleth':'\u2138','darr':'\u2193','dArr':'\u21D3','Darr':'\u21A1','dash':'\u2010','dashv':'\u22A3','Dashv':'\u2AE4','dbkarow':'\u290F','dblac':'\u02DD','dcaron':'\u010F','Dcaron':'\u010E','dcy':'\u0434','Dcy':'\u0414','dd':'\u2146','DD':'\u2145','ddagger':'\u2021','ddarr':'\u21CA','DDotrahd':'\u2911','ddotseq':'\u2A77','deg':'\xB0','Del':'\u2207','delta':'\u03B4','Delta':'\u0394','demptyv':'\u29B1','dfisht':'\u297F','dfr':'\uD835\uDD21','Dfr':'\uD835\uDD07','dHar':'\u2965','dharl':'\u21C3','dharr':'\u21C2','DiacriticalAcute':'\xB4','DiacriticalDot':'\u02D9','DiacriticalDoubleAcute':'\u02DD','DiacriticalGrave':'`','DiacriticalTilde':'\u02DC','diam':'\u22C4','diamond':'\u22C4','Diamond':'\u22C4','diamondsuit':'\u2666','diams':'\u2666','die':'\xA8','DifferentialD':'\u2146','digamma':'\u03DD','disin':'\u22F2','div':'\xF7','divide':'\xF7','divideontimes':'\u22C7','divonx':'\u22C7','djcy':'\u0452','DJcy':'\u0402','dlcorn':'\u231E','dlcrop':'\u230D','dollar':'$','dopf':'\uD835\uDD55','Dopf':'\uD835\uDD3B','dot':'\u02D9','Dot':'\xA8','DotDot':'\u20DC','doteq':'\u2250','doteqdot':'\u2251','DotEqual':'\u2250','dotminus':'\u2238','dotplus':'\u2214','dotsquare':'\u22A1','doublebarwedge':'\u2306','DoubleContourIntegral':'\u222F','DoubleDot':'\xA8','DoubleDownArrow':'\u21D3','DoubleLeftArrow':'\u21D0','DoubleLeftRightArrow':'\u21D4','DoubleLeftTee':'\u2AE4','DoubleLongLeftArrow':'\u27F8','DoubleLongLeftRightArrow':'\u27FA','DoubleLongRightArrow':'\u27F9','DoubleRightArrow':'\u21D2','DoubleRightTee':'\u22A8','DoubleUpArrow':'\u21D1','DoubleUpDownArrow':'\u21D5','DoubleVerticalBar':'\u2225','downarrow':'\u2193','Downarrow':'\u21D3','DownArrow':'\u2193','DownArrowBar':'\u2913','DownArrowUpArrow':'\u21F5','DownBreve':'\u0311','downdownarrows':'\u21CA','downharpoonleft':'\u21C3','downharpoonright':'\u21C2','DownLeftRightVector':'\u2950','DownLeftTeeVector':'\u295E','DownLeftVector':'\u21BD','DownLeftVectorBar':'\u2956','DownRightTeeVector':'\u295F','DownRightVector':'\u21C1','DownRightVectorBar':'\u2957','DownTee':'\u22A4','DownTeeArrow':'\u21A7','drbkarow':'\u2910','drcorn':'\u231F','drcrop':'\u230C','dscr':'\uD835\uDCB9','Dscr':'\uD835\uDC9F','dscy':'\u0455','DScy':'\u0405','dsol':'\u29F6','dstrok':'\u0111','Dstrok':'\u0110','dtdot':'\u22F1','dtri':'\u25BF','dtrif':'\u25BE','duarr':'\u21F5','duhar':'\u296F','dwangle':'\u29A6','dzcy':'\u045F','DZcy':'\u040F','dzigrarr':'\u27FF','eacute':'\xE9','Eacute':'\xC9','easter':'\u2A6E','ecaron':'\u011B','Ecaron':'\u011A','ecir':'\u2256','ecirc':'\xEA','Ecirc':'\xCA','ecolon':'\u2255','ecy':'\u044D','Ecy':'\u042D','eDDot':'\u2A77','edot':'\u0117','eDot':'\u2251','Edot':'\u0116','ee':'\u2147','efDot':'\u2252','efr':'\uD835\uDD22','Efr':'\uD835\uDD08','eg':'\u2A9A','egrave':'\xE8','Egrave':'\xC8','egs':'\u2A96','egsdot':'\u2A98','el':'\u2A99','Element':'\u2208','elinters':'\u23E7','ell':'\u2113','els':'\u2A95','elsdot':'\u2A97','emacr':'\u0113','Emacr':'\u0112','empty':'\u2205','emptyset':'\u2205','EmptySmallSquare':'\u25FB','emptyv':'\u2205','EmptyVerySmallSquare':'\u25AB','emsp':'\u2003','emsp13':'\u2004','emsp14':'\u2005','eng':'\u014B','ENG':'\u014A','ensp':'\u2002','eogon':'\u0119','Eogon':'\u0118','eopf':'\uD835\uDD56','Eopf':'\uD835\uDD3C','epar':'\u22D5','eparsl':'\u29E3','eplus':'\u2A71','epsi':'\u03B5','epsilon':'\u03B5','Epsilon':'\u0395','epsiv':'\u03F5','eqcirc':'\u2256','eqcolon':'\u2255','eqsim':'\u2242','eqslantgtr':'\u2A96','eqslantless':'\u2A95','Equal':'\u2A75','equals':'=','EqualTilde':'\u2242','equest':'\u225F','Equilibrium':'\u21CC','equiv':'\u2261','equivDD':'\u2A78','eqvparsl':'\u29E5','erarr':'\u2971','erDot':'\u2253','escr':'\u212F','Escr':'\u2130','esdot':'\u2250','esim':'\u2242','Esim':'\u2A73','eta':'\u03B7','Eta':'\u0397','eth':'\xF0','ETH':'\xD0','euml':'\xEB','Euml':'\xCB','euro':'\u20AC','excl':'!','exist':'\u2203','Exists':'\u2203','expectation':'\u2130','exponentiale':'\u2147','ExponentialE':'\u2147','fallingdotseq':'\u2252','fcy':'\u0444','Fcy':'\u0424','female':'\u2640','ffilig':'\uFB03','fflig':'\uFB00','ffllig':'\uFB04','ffr':'\uD835\uDD23','Ffr':'\uD835\uDD09','filig':'\uFB01','FilledSmallSquare':'\u25FC','FilledVerySmallSquare':'\u25AA','fjlig':'fj','flat':'\u266D','fllig':'\uFB02','fltns':'\u25B1','fnof':'\u0192','fopf':'\uD835\uDD57','Fopf':'\uD835\uDD3D','forall':'\u2200','ForAll':'\u2200','fork':'\u22D4','forkv':'\u2AD9','Fouriertrf':'\u2131','fpartint':'\u2A0D','frac12':'\xBD','frac13':'\u2153','frac14':'\xBC','frac15':'\u2155','frac16':'\u2159','frac18':'\u215B','frac23':'\u2154','frac25':'\u2156','frac34':'\xBE','frac35':'\u2157','frac38':'\u215C','frac45':'\u2158','frac56':'\u215A','frac58':'\u215D','frac78':'\u215E','frasl':'\u2044','frown':'\u2322','fscr':'\uD835\uDCBB','Fscr':'\u2131','gacute':'\u01F5','gamma':'\u03B3','Gamma':'\u0393','gammad':'\u03DD','Gammad':'\u03DC','gap':'\u2A86','gbreve':'\u011F','Gbreve':'\u011E','Gcedil':'\u0122','gcirc':'\u011D','Gcirc':'\u011C','gcy':'\u0433','Gcy':'\u0413','gdot':'\u0121','Gdot':'\u0120','ge':'\u2265','gE':'\u2267','gel':'\u22DB','gEl':'\u2A8C','geq':'\u2265','geqq':'\u2267','geqslant':'\u2A7E','ges':'\u2A7E','gescc':'\u2AA9','gesdot':'\u2A80','gesdoto':'\u2A82','gesdotol':'\u2A84','gesl':'\u22DB\uFE00','gesles':'\u2A94','gfr':'\uD835\uDD24','Gfr':'\uD835\uDD0A','gg':'\u226B','Gg':'\u22D9','ggg':'\u22D9','gimel':'\u2137','gjcy':'\u0453','GJcy':'\u0403','gl':'\u2277','gla':'\u2AA5','glE':'\u2A92','glj':'\u2AA4','gnap':'\u2A8A','gnapprox':'\u2A8A','gne':'\u2A88','gnE':'\u2269','gneq':'\u2A88','gneqq':'\u2269','gnsim':'\u22E7','gopf':'\uD835\uDD58','Gopf':'\uD835\uDD3E','grave':'`','GreaterEqual':'\u2265','GreaterEqualLess':'\u22DB','GreaterFullEqual':'\u2267','GreaterGreater':'\u2AA2','GreaterLess':'\u2277','GreaterSlantEqual':'\u2A7E','GreaterTilde':'\u2273','gscr':'\u210A','Gscr':'\uD835\uDCA2','gsim':'\u2273','gsime':'\u2A8E','gsiml':'\u2A90','gt':'>','Gt':'\u226B','GT':'>','gtcc':'\u2AA7','gtcir':'\u2A7A','gtdot':'\u22D7','gtlPar':'\u2995','gtquest':'\u2A7C','gtrapprox':'\u2A86','gtrarr':'\u2978','gtrdot':'\u22D7','gtreqless':'\u22DB','gtreqqless':'\u2A8C','gtrless':'\u2277','gtrsim':'\u2273','gvertneqq':'\u2269\uFE00','gvnE':'\u2269\uFE00','Hacek':'\u02C7','hairsp':'\u200A','half':'\xBD','hamilt':'\u210B','hardcy':'\u044A','HARDcy':'\u042A','harr':'\u2194','hArr':'\u21D4','harrcir':'\u2948','harrw':'\u21AD','Hat':'^','hbar':'\u210F','hcirc':'\u0125','Hcirc':'\u0124','hearts':'\u2665','heartsuit':'\u2665','hellip':'\u2026','hercon':'\u22B9','hfr':'\uD835\uDD25','Hfr':'\u210C','HilbertSpace':'\u210B','hksearow':'\u2925','hkswarow':'\u2926','hoarr':'\u21FF','homtht':'\u223B','hookleftarrow':'\u21A9','hookrightarrow':'\u21AA','hopf':'\uD835\uDD59','Hopf':'\u210D','horbar':'\u2015','HorizontalLine':'\u2500','hscr':'\uD835\uDCBD','Hscr':'\u210B','hslash':'\u210F','hstrok':'\u0127','Hstrok':'\u0126','HumpDownHump':'\u224E','HumpEqual':'\u224F','hybull':'\u2043','hyphen':'\u2010','iacute':'\xED','Iacute':'\xCD','ic':'\u2063','icirc':'\xEE','Icirc':'\xCE','icy':'\u0438','Icy':'\u0418','Idot':'\u0130','iecy':'\u0435','IEcy':'\u0415','iexcl':'\xA1','iff':'\u21D4','ifr':'\uD835\uDD26','Ifr':'\u2111','igrave':'\xEC','Igrave':'\xCC','ii':'\u2148','iiiint':'\u2A0C','iiint':'\u222D','iinfin':'\u29DC','iiota':'\u2129','ijlig':'\u0133','IJlig':'\u0132','Im':'\u2111','imacr':'\u012B','Imacr':'\u012A','image':'\u2111','ImaginaryI':'\u2148','imagline':'\u2110','imagpart':'\u2111','imath':'\u0131','imof':'\u22B7','imped':'\u01B5','Implies':'\u21D2','in':'\u2208','incare':'\u2105','infin':'\u221E','infintie':'\u29DD','inodot':'\u0131','int':'\u222B','Int':'\u222C','intcal':'\u22BA','integers':'\u2124','Integral':'\u222B','intercal':'\u22BA','Intersection':'\u22C2','intlarhk':'\u2A17','intprod':'\u2A3C','InvisibleComma':'\u2063','InvisibleTimes':'\u2062','iocy':'\u0451','IOcy':'\u0401','iogon':'\u012F','Iogon':'\u012E','iopf':'\uD835\uDD5A','Iopf':'\uD835\uDD40','iota':'\u03B9','Iota':'\u0399','iprod':'\u2A3C','iquest':'\xBF','iscr':'\uD835\uDCBE','Iscr':'\u2110','isin':'\u2208','isindot':'\u22F5','isinE':'\u22F9','isins':'\u22F4','isinsv':'\u22F3','isinv':'\u2208','it':'\u2062','itilde':'\u0129','Itilde':'\u0128','iukcy':'\u0456','Iukcy':'\u0406','iuml':'\xEF','Iuml':'\xCF','jcirc':'\u0135','Jcirc':'\u0134','jcy':'\u0439','Jcy':'\u0419','jfr':'\uD835\uDD27','Jfr':'\uD835\uDD0D','jmath':'\u0237','jopf':'\uD835\uDD5B','Jopf':'\uD835\uDD41','jscr':'\uD835\uDCBF','Jscr':'\uD835\uDCA5','jsercy':'\u0458','Jsercy':'\u0408','jukcy':'\u0454','Jukcy':'\u0404','kappa':'\u03BA','Kappa':'\u039A','kappav':'\u03F0','kcedil':'\u0137','Kcedil':'\u0136','kcy':'\u043A','Kcy':'\u041A','kfr':'\uD835\uDD28','Kfr':'\uD835\uDD0E','kgreen':'\u0138','khcy':'\u0445','KHcy':'\u0425','kjcy':'\u045C','KJcy':'\u040C','kopf':'\uD835\uDD5C','Kopf':'\uD835\uDD42','kscr':'\uD835\uDCC0','Kscr':'\uD835\uDCA6','lAarr':'\u21DA','lacute':'\u013A','Lacute':'\u0139','laemptyv':'\u29B4','lagran':'\u2112','lambda':'\u03BB','Lambda':'\u039B','lang':'\u27E8','Lang':'\u27EA','langd':'\u2991','langle':'\u27E8','lap':'\u2A85','Laplacetrf':'\u2112','laquo':'\xAB','larr':'\u2190','lArr':'\u21D0','Larr':'\u219E','larrb':'\u21E4','larrbfs':'\u291F','larrfs':'\u291D','larrhk':'\u21A9','larrlp':'\u21AB','larrpl':'\u2939','larrsim':'\u2973','larrtl':'\u21A2','lat':'\u2AAB','latail':'\u2919','lAtail':'\u291B','late':'\u2AAD','lates':'\u2AAD\uFE00','lbarr':'\u290C','lBarr':'\u290E','lbbrk':'\u2772','lbrace':'{','lbrack':'[','lbrke':'\u298B','lbrksld':'\u298F','lbrkslu':'\u298D','lcaron':'\u013E','Lcaron':'\u013D','lcedil':'\u013C','Lcedil':'\u013B','lceil':'\u2308','lcub':'{','lcy':'\u043B','Lcy':'\u041B','ldca':'\u2936','ldquo':'\u201C','ldquor':'\u201E','ldrdhar':'\u2967','ldrushar':'\u294B','ldsh':'\u21B2','le':'\u2264','lE':'\u2266','LeftAngleBracket':'\u27E8','leftarrow':'\u2190','Leftarrow':'\u21D0','LeftArrow':'\u2190','LeftArrowBar':'\u21E4','LeftArrowRightArrow':'\u21C6','leftarrowtail':'\u21A2','LeftCeiling':'\u2308','LeftDoubleBracket':'\u27E6','LeftDownTeeVector':'\u2961','LeftDownVector':'\u21C3','LeftDownVectorBar':'\u2959','LeftFloor':'\u230A','leftharpoondown':'\u21BD','leftharpoonup':'\u21BC','leftleftarrows':'\u21C7','leftrightarrow':'\u2194','Leftrightarrow':'\u21D4','LeftRightArrow':'\u2194','leftrightarrows':'\u21C6','leftrightharpoons':'\u21CB','leftrightsquigarrow':'\u21AD','LeftRightVector':'\u294E','LeftTee':'\u22A3','LeftTeeArrow':'\u21A4','LeftTeeVector':'\u295A','leftthreetimes':'\u22CB','LeftTriangle':'\u22B2','LeftTriangleBar':'\u29CF','LeftTriangleEqual':'\u22B4','LeftUpDownVector':'\u2951','LeftUpTeeVector':'\u2960','LeftUpVector':'\u21BF','LeftUpVectorBar':'\u2958','LeftVector':'\u21BC','LeftVectorBar':'\u2952','leg':'\u22DA','lEg':'\u2A8B','leq':'\u2264','leqq':'\u2266','leqslant':'\u2A7D','les':'\u2A7D','lescc':'\u2AA8','lesdot':'\u2A7F','lesdoto':'\u2A81','lesdotor':'\u2A83','lesg':'\u22DA\uFE00','lesges':'\u2A93','lessapprox':'\u2A85','lessdot':'\u22D6','lesseqgtr':'\u22DA','lesseqqgtr':'\u2A8B','LessEqualGreater':'\u22DA','LessFullEqual':'\u2266','LessGreater':'\u2276','lessgtr':'\u2276','LessLess':'\u2AA1','lesssim':'\u2272','LessSlantEqual':'\u2A7D','LessTilde':'\u2272','lfisht':'\u297C','lfloor':'\u230A','lfr':'\uD835\uDD29','Lfr':'\uD835\uDD0F','lg':'\u2276','lgE':'\u2A91','lHar':'\u2962','lhard':'\u21BD','lharu':'\u21BC','lharul':'\u296A','lhblk':'\u2584','ljcy':'\u0459','LJcy':'\u0409','ll':'\u226A','Ll':'\u22D8','llarr':'\u21C7','llcorner':'\u231E','Lleftarrow':'\u21DA','llhard':'\u296B','lltri':'\u25FA','lmidot':'\u0140','Lmidot':'\u013F','lmoust':'\u23B0','lmoustache':'\u23B0','lnap':'\u2A89','lnapprox':'\u2A89','lne':'\u2A87','lnE':'\u2268','lneq':'\u2A87','lneqq':'\u2268','lnsim':'\u22E6','loang':'\u27EC','loarr':'\u21FD','lobrk':'\u27E6','longleftarrow':'\u27F5','Longleftarrow':'\u27F8','LongLeftArrow':'\u27F5','longleftrightarrow':'\u27F7','Longleftrightarrow':'\u27FA','LongLeftRightArrow':'\u27F7','longmapsto':'\u27FC','longrightarrow':'\u27F6','Longrightarrow':'\u27F9','LongRightArrow':'\u27F6','looparrowleft':'\u21AB','looparrowright':'\u21AC','lopar':'\u2985','lopf':'\uD835\uDD5D','Lopf':'\uD835\uDD43','loplus':'\u2A2D','lotimes':'\u2A34','lowast':'\u2217','lowbar':'_','LowerLeftArrow':'\u2199','LowerRightArrow':'\u2198','loz':'\u25CA','lozenge':'\u25CA','lozf':'\u29EB','lpar':'(','lparlt':'\u2993','lrarr':'\u21C6','lrcorner':'\u231F','lrhar':'\u21CB','lrhard':'\u296D','lrm':'\u200E','lrtri':'\u22BF','lsaquo':'\u2039','lscr':'\uD835\uDCC1','Lscr':'\u2112','lsh':'\u21B0','Lsh':'\u21B0','lsim':'\u2272','lsime':'\u2A8D','lsimg':'\u2A8F','lsqb':'[','lsquo':'\u2018','lsquor':'\u201A','lstrok':'\u0142','Lstrok':'\u0141','lt':'<','Lt':'\u226A','LT':'<','ltcc':'\u2AA6','ltcir':'\u2A79','ltdot':'\u22D6','lthree':'\u22CB','ltimes':'\u22C9','ltlarr':'\u2976','ltquest':'\u2A7B','ltri':'\u25C3','ltrie':'\u22B4','ltrif':'\u25C2','ltrPar':'\u2996','lurdshar':'\u294A','luruhar':'\u2966','lvertneqq':'\u2268\uFE00','lvnE':'\u2268\uFE00','macr':'\xAF','male':'\u2642','malt':'\u2720','maltese':'\u2720','map':'\u21A6','Map':'\u2905','mapsto':'\u21A6','mapstodown':'\u21A7','mapstoleft':'\u21A4','mapstoup':'\u21A5','marker':'\u25AE','mcomma':'\u2A29','mcy':'\u043C','Mcy':'\u041C','mdash':'\u2014','mDDot':'\u223A','measuredangle':'\u2221','MediumSpace':'\u205F','Mellintrf':'\u2133','mfr':'\uD835\uDD2A','Mfr':'\uD835\uDD10','mho':'\u2127','micro':'\xB5','mid':'\u2223','midast':'*','midcir':'\u2AF0','middot':'\xB7','minus':'\u2212','minusb':'\u229F','minusd':'\u2238','minusdu':'\u2A2A','MinusPlus':'\u2213','mlcp':'\u2ADB','mldr':'\u2026','mnplus':'\u2213','models':'\u22A7','mopf':'\uD835\uDD5E','Mopf':'\uD835\uDD44','mp':'\u2213','mscr':'\uD835\uDCC2','Mscr':'\u2133','mstpos':'\u223E','mu':'\u03BC','Mu':'\u039C','multimap':'\u22B8','mumap':'\u22B8','nabla':'\u2207','nacute':'\u0144','Nacute':'\u0143','nang':'\u2220\u20D2','nap':'\u2249','napE':'\u2A70\u0338','napid':'\u224B\u0338','napos':'\u0149','napprox':'\u2249','natur':'\u266E','natural':'\u266E','naturals':'\u2115','nbsp':'\xA0','nbump':'\u224E\u0338','nbumpe':'\u224F\u0338','ncap':'\u2A43','ncaron':'\u0148','Ncaron':'\u0147','ncedil':'\u0146','Ncedil':'\u0145','ncong':'\u2247','ncongdot':'\u2A6D\u0338','ncup':'\u2A42','ncy':'\u043D','Ncy':'\u041D','ndash':'\u2013','ne':'\u2260','nearhk':'\u2924','nearr':'\u2197','neArr':'\u21D7','nearrow':'\u2197','nedot':'\u2250\u0338','NegativeMediumSpace':'\u200B','NegativeThickSpace':'\u200B','NegativeThinSpace':'\u200B','NegativeVeryThinSpace':'\u200B','nequiv':'\u2262','nesear':'\u2928','nesim':'\u2242\u0338','NestedGreaterGreater':'\u226B','NestedLessLess':'\u226A','NewLine':'\n','nexist':'\u2204','nexists':'\u2204','nfr':'\uD835\uDD2B','Nfr':'\uD835\uDD11','nge':'\u2271','ngE':'\u2267\u0338','ngeq':'\u2271','ngeqq':'\u2267\u0338','ngeqslant':'\u2A7E\u0338','nges':'\u2A7E\u0338','nGg':'\u22D9\u0338','ngsim':'\u2275','ngt':'\u226F','nGt':'\u226B\u20D2','ngtr':'\u226F','nGtv':'\u226B\u0338','nharr':'\u21AE','nhArr':'\u21CE','nhpar':'\u2AF2','ni':'\u220B','nis':'\u22FC','nisd':'\u22FA','niv':'\u220B','njcy':'\u045A','NJcy':'\u040A','nlarr':'\u219A','nlArr':'\u21CD','nldr':'\u2025','nle':'\u2270','nlE':'\u2266\u0338','nleftarrow':'\u219A','nLeftarrow':'\u21CD','nleftrightarrow':'\u21AE','nLeftrightarrow':'\u21CE','nleq':'\u2270','nleqq':'\u2266\u0338','nleqslant':'\u2A7D\u0338','nles':'\u2A7D\u0338','nless':'\u226E','nLl':'\u22D8\u0338','nlsim':'\u2274','nlt':'\u226E','nLt':'\u226A\u20D2','nltri':'\u22EA','nltrie':'\u22EC','nLtv':'\u226A\u0338','nmid':'\u2224','NoBreak':'\u2060','NonBreakingSpace':'\xA0','nopf':'\uD835\uDD5F','Nopf':'\u2115','not':'\xAC','Not':'\u2AEC','NotCongruent':'\u2262','NotCupCap':'\u226D','NotDoubleVerticalBar':'\u2226','NotElement':'\u2209','NotEqual':'\u2260','NotEqualTilde':'\u2242\u0338','NotExists':'\u2204','NotGreater':'\u226F','NotGreaterEqual':'\u2271','NotGreaterFullEqual':'\u2267\u0338','NotGreaterGreater':'\u226B\u0338','NotGreaterLess':'\u2279','NotGreaterSlantEqual':'\u2A7E\u0338','NotGreaterTilde':'\u2275','NotHumpDownHump':'\u224E\u0338','NotHumpEqual':'\u224F\u0338','notin':'\u2209','notindot':'\u22F5\u0338','notinE':'\u22F9\u0338','notinva':'\u2209','notinvb':'\u22F7','notinvc':'\u22F6','NotLeftTriangle':'\u22EA','NotLeftTriangleBar':'\u29CF\u0338','NotLeftTriangleEqual':'\u22EC','NotLess':'\u226E','NotLessEqual':'\u2270','NotLessGreater':'\u2278','NotLessLess':'\u226A\u0338','NotLessSlantEqual':'\u2A7D\u0338','NotLessTilde':'\u2274','NotNestedGreaterGreater':'\u2AA2\u0338','NotNestedLessLess':'\u2AA1\u0338','notni':'\u220C','notniva':'\u220C','notnivb':'\u22FE','notnivc':'\u22FD','NotPrecedes':'\u2280','NotPrecedesEqual':'\u2AAF\u0338','NotPrecedesSlantEqual':'\u22E0','NotReverseElement':'\u220C','NotRightTriangle':'\u22EB','NotRightTriangleBar':'\u29D0\u0338','NotRightTriangleEqual':'\u22ED','NotSquareSubset':'\u228F\u0338','NotSquareSubsetEqual':'\u22E2','NotSquareSuperset':'\u2290\u0338','NotSquareSupersetEqual':'\u22E3','NotSubset':'\u2282\u20D2','NotSubsetEqual':'\u2288','NotSucceeds':'\u2281','NotSucceedsEqual':'\u2AB0\u0338','NotSucceedsSlantEqual':'\u22E1','NotSucceedsTilde':'\u227F\u0338','NotSuperset':'\u2283\u20D2','NotSupersetEqual':'\u2289','NotTilde':'\u2241','NotTildeEqual':'\u2244','NotTildeFullEqual':'\u2247','NotTildeTilde':'\u2249','NotVerticalBar':'\u2224','npar':'\u2226','nparallel':'\u2226','nparsl':'\u2AFD\u20E5','npart':'\u2202\u0338','npolint':'\u2A14','npr':'\u2280','nprcue':'\u22E0','npre':'\u2AAF\u0338','nprec':'\u2280','npreceq':'\u2AAF\u0338','nrarr':'\u219B','nrArr':'\u21CF','nrarrc':'\u2933\u0338','nrarrw':'\u219D\u0338','nrightarrow':'\u219B','nRightarrow':'\u21CF','nrtri':'\u22EB','nrtrie':'\u22ED','nsc':'\u2281','nsccue':'\u22E1','nsce':'\u2AB0\u0338','nscr':'\uD835\uDCC3','Nscr':'\uD835\uDCA9','nshortmid':'\u2224','nshortparallel':'\u2226','nsim':'\u2241','nsime':'\u2244','nsimeq':'\u2244','nsmid':'\u2224','nspar':'\u2226','nsqsube':'\u22E2','nsqsupe':'\u22E3','nsub':'\u2284','nsube':'\u2288','nsubE':'\u2AC5\u0338','nsubset':'\u2282\u20D2','nsubseteq':'\u2288','nsubseteqq':'\u2AC5\u0338','nsucc':'\u2281','nsucceq':'\u2AB0\u0338','nsup':'\u2285','nsupe':'\u2289','nsupE':'\u2AC6\u0338','nsupset':'\u2283\u20D2','nsupseteq':'\u2289','nsupseteqq':'\u2AC6\u0338','ntgl':'\u2279','ntilde':'\xF1','Ntilde':'\xD1','ntlg':'\u2278','ntriangleleft':'\u22EA','ntrianglelefteq':'\u22EC','ntriangleright':'\u22EB','ntrianglerighteq':'\u22ED','nu':'\u03BD','Nu':'\u039D','num':'#','numero':'\u2116','numsp':'\u2007','nvap':'\u224D\u20D2','nvdash':'\u22AC','nvDash':'\u22AD','nVdash':'\u22AE','nVDash':'\u22AF','nvge':'\u2265\u20D2','nvgt':'>\u20D2','nvHarr':'\u2904','nvinfin':'\u29DE','nvlArr':'\u2902','nvle':'\u2264\u20D2','nvlt':'<\u20D2','nvltrie':'\u22B4\u20D2','nvrArr':'\u2903','nvrtrie':'\u22B5\u20D2','nvsim':'\u223C\u20D2','nwarhk':'\u2923','nwarr':'\u2196','nwArr':'\u21D6','nwarrow':'\u2196','nwnear':'\u2927','oacute':'\xF3','Oacute':'\xD3','oast':'\u229B','ocir':'\u229A','ocirc':'\xF4','Ocirc':'\xD4','ocy':'\u043E','Ocy':'\u041E','odash':'\u229D','odblac':'\u0151','Odblac':'\u0150','odiv':'\u2A38','odot':'\u2299','odsold':'\u29BC','oelig':'\u0153','OElig':'\u0152','ofcir':'\u29BF','ofr':'\uD835\uDD2C','Ofr':'\uD835\uDD12','ogon':'\u02DB','ograve':'\xF2','Ograve':'\xD2','ogt':'\u29C1','ohbar':'\u29B5','ohm':'\u03A9','oint':'\u222E','olarr':'\u21BA','olcir':'\u29BE','olcross':'\u29BB','oline':'\u203E','olt':'\u29C0','omacr':'\u014D','Omacr':'\u014C','omega':'\u03C9','Omega':'\u03A9','omicron':'\u03BF','Omicron':'\u039F','omid':'\u29B6','ominus':'\u2296','oopf':'\uD835\uDD60','Oopf':'\uD835\uDD46','opar':'\u29B7','OpenCurlyDoubleQuote':'\u201C','OpenCurlyQuote':'\u2018','operp':'\u29B9','oplus':'\u2295','or':'\u2228','Or':'\u2A54','orarr':'\u21BB','ord':'\u2A5D','order':'\u2134','orderof':'\u2134','ordf':'\xAA','ordm':'\xBA','origof':'\u22B6','oror':'\u2A56','orslope':'\u2A57','orv':'\u2A5B','oS':'\u24C8','oscr':'\u2134','Oscr':'\uD835\uDCAA','oslash':'\xF8','Oslash':'\xD8','osol':'\u2298','otilde':'\xF5','Otilde':'\xD5','otimes':'\u2297','Otimes':'\u2A37','otimesas':'\u2A36','ouml':'\xF6','Ouml':'\xD6','ovbar':'\u233D','OverBar':'\u203E','OverBrace':'\u23DE','OverBracket':'\u23B4','OverParenthesis':'\u23DC','par':'\u2225','para':'\xB6','parallel':'\u2225','parsim':'\u2AF3','parsl':'\u2AFD','part':'\u2202','PartialD':'\u2202','pcy':'\u043F','Pcy':'\u041F','percnt':'%','period':'.','permil':'\u2030','perp':'\u22A5','pertenk':'\u2031','pfr':'\uD835\uDD2D','Pfr':'\uD835\uDD13','phi':'\u03C6','Phi':'\u03A6','phiv':'\u03D5','phmmat':'\u2133','phone':'\u260E','pi':'\u03C0','Pi':'\u03A0','pitchfork':'\u22D4','piv':'\u03D6','planck':'\u210F','planckh':'\u210E','plankv':'\u210F','plus':'+','plusacir':'\u2A23','plusb':'\u229E','pluscir':'\u2A22','plusdo':'\u2214','plusdu':'\u2A25','pluse':'\u2A72','PlusMinus':'\xB1','plusmn':'\xB1','plussim':'\u2A26','plustwo':'\u2A27','pm':'\xB1','Poincareplane':'\u210C','pointint':'\u2A15','popf':'\uD835\uDD61','Popf':'\u2119','pound':'\xA3','pr':'\u227A','Pr':'\u2ABB','prap':'\u2AB7','prcue':'\u227C','pre':'\u2AAF','prE':'\u2AB3','prec':'\u227A','precapprox':'\u2AB7','preccurlyeq':'\u227C','Precedes':'\u227A','PrecedesEqual':'\u2AAF','PrecedesSlantEqual':'\u227C','PrecedesTilde':'\u227E','preceq':'\u2AAF','precnapprox':'\u2AB9','precneqq':'\u2AB5','precnsim':'\u22E8','precsim':'\u227E','prime':'\u2032','Prime':'\u2033','primes':'\u2119','prnap':'\u2AB9','prnE':'\u2AB5','prnsim':'\u22E8','prod':'\u220F','Product':'\u220F','profalar':'\u232E','profline':'\u2312','profsurf':'\u2313','prop':'\u221D','Proportion':'\u2237','Proportional':'\u221D','propto':'\u221D','prsim':'\u227E','prurel':'\u22B0','pscr':'\uD835\uDCC5','Pscr':'\uD835\uDCAB','psi':'\u03C8','Psi':'\u03A8','puncsp':'\u2008','qfr':'\uD835\uDD2E','Qfr':'\uD835\uDD14','qint':'\u2A0C','qopf':'\uD835\uDD62','Qopf':'\u211A','qprime':'\u2057','qscr':'\uD835\uDCC6','Qscr':'\uD835\uDCAC','quaternions':'\u210D','quatint':'\u2A16','quest':'?','questeq':'\u225F','quot':'"','QUOT':'"','rAarr':'\u21DB','race':'\u223D\u0331','racute':'\u0155','Racute':'\u0154','radic':'\u221A','raemptyv':'\u29B3','rang':'\u27E9','Rang':'\u27EB','rangd':'\u2992','range':'\u29A5','rangle':'\u27E9','raquo':'\xBB','rarr':'\u2192','rArr':'\u21D2','Rarr':'\u21A0','rarrap':'\u2975','rarrb':'\u21E5','rarrbfs':'\u2920','rarrc':'\u2933','rarrfs':'\u291E','rarrhk':'\u21AA','rarrlp':'\u21AC','rarrpl':'\u2945','rarrsim':'\u2974','rarrtl':'\u21A3','Rarrtl':'\u2916','rarrw':'\u219D','ratail':'\u291A','rAtail':'\u291C','ratio':'\u2236','rationals':'\u211A','rbarr':'\u290D','rBarr':'\u290F','RBarr':'\u2910','rbbrk':'\u2773','rbrace':'}','rbrack':']','rbrke':'\u298C','rbrksld':'\u298E','rbrkslu':'\u2990','rcaron':'\u0159','Rcaron':'\u0158','rcedil':'\u0157','Rcedil':'\u0156','rceil':'\u2309','rcub':'}','rcy':'\u0440','Rcy':'\u0420','rdca':'\u2937','rdldhar':'\u2969','rdquo':'\u201D','rdquor':'\u201D','rdsh':'\u21B3','Re':'\u211C','real':'\u211C','realine':'\u211B','realpart':'\u211C','reals':'\u211D','rect':'\u25AD','reg':'\xAE','REG':'\xAE','ReverseElement':'\u220B','ReverseEquilibrium':'\u21CB','ReverseUpEquilibrium':'\u296F','rfisht':'\u297D','rfloor':'\u230B','rfr':'\uD835\uDD2F','Rfr':'\u211C','rHar':'\u2964','rhard':'\u21C1','rharu':'\u21C0','rharul':'\u296C','rho':'\u03C1','Rho':'\u03A1','rhov':'\u03F1','RightAngleBracket':'\u27E9','rightarrow':'\u2192','Rightarrow':'\u21D2','RightArrow':'\u2192','RightArrowBar':'\u21E5','RightArrowLeftArrow':'\u21C4','rightarrowtail':'\u21A3','RightCeiling':'\u2309','RightDoubleBracket':'\u27E7','RightDownTeeVector':'\u295D','RightDownVector':'\u21C2','RightDownVectorBar':'\u2955','RightFloor':'\u230B','rightharpoondown':'\u21C1','rightharpoonup':'\u21C0','rightleftarrows':'\u21C4','rightleftharpoons':'\u21CC','rightrightarrows':'\u21C9','rightsquigarrow':'\u219D','RightTee':'\u22A2','RightTeeArrow':'\u21A6','RightTeeVector':'\u295B','rightthreetimes':'\u22CC','RightTriangle':'\u22B3','RightTriangleBar':'\u29D0','RightTriangleEqual':'\u22B5','RightUpDownVector':'\u294F','RightUpTeeVector':'\u295C','RightUpVector':'\u21BE','RightUpVectorBar':'\u2954','RightVector':'\u21C0','RightVectorBar':'\u2953','ring':'\u02DA','risingdotseq':'\u2253','rlarr':'\u21C4','rlhar':'\u21CC','rlm':'\u200F','rmoust':'\u23B1','rmoustache':'\u23B1','rnmid':'\u2AEE','roang':'\u27ED','roarr':'\u21FE','robrk':'\u27E7','ropar':'\u2986','ropf':'\uD835\uDD63','Ropf':'\u211D','roplus':'\u2A2E','rotimes':'\u2A35','RoundImplies':'\u2970','rpar':')','rpargt':'\u2994','rppolint':'\u2A12','rrarr':'\u21C9','Rrightarrow':'\u21DB','rsaquo':'\u203A','rscr':'\uD835\uDCC7','Rscr':'\u211B','rsh':'\u21B1','Rsh':'\u21B1','rsqb':']','rsquo':'\u2019','rsquor':'\u2019','rthree':'\u22CC','rtimes':'\u22CA','rtri':'\u25B9','rtrie':'\u22B5','rtrif':'\u25B8','rtriltri':'\u29CE','RuleDelayed':'\u29F4','ruluhar':'\u2968','rx':'\u211E','sacute':'\u015B','Sacute':'\u015A','sbquo':'\u201A','sc':'\u227B','Sc':'\u2ABC','scap':'\u2AB8','scaron':'\u0161','Scaron':'\u0160','sccue':'\u227D','sce':'\u2AB0','scE':'\u2AB4','scedil':'\u015F','Scedil':'\u015E','scirc':'\u015D','Scirc':'\u015C','scnap':'\u2ABA','scnE':'\u2AB6','scnsim':'\u22E9','scpolint':'\u2A13','scsim':'\u227F','scy':'\u0441','Scy':'\u0421','sdot':'\u22C5','sdotb':'\u22A1','sdote':'\u2A66','searhk':'\u2925','searr':'\u2198','seArr':'\u21D8','searrow':'\u2198','sect':'\xA7','semi':';','seswar':'\u2929','setminus':'\u2216','setmn':'\u2216','sext':'\u2736','sfr':'\uD835\uDD30','Sfr':'\uD835\uDD16','sfrown':'\u2322','sharp':'\u266F','shchcy':'\u0449','SHCHcy':'\u0429','shcy':'\u0448','SHcy':'\u0428','ShortDownArrow':'\u2193','ShortLeftArrow':'\u2190','shortmid':'\u2223','shortparallel':'\u2225','ShortRightArrow':'\u2192','ShortUpArrow':'\u2191','shy':'\xAD','sigma':'\u03C3','Sigma':'\u03A3','sigmaf':'\u03C2','sigmav':'\u03C2','sim':'\u223C','simdot':'\u2A6A','sime':'\u2243','simeq':'\u2243','simg':'\u2A9E','simgE':'\u2AA0','siml':'\u2A9D','simlE':'\u2A9F','simne':'\u2246','simplus':'\u2A24','simrarr':'\u2972','slarr':'\u2190','SmallCircle':'\u2218','smallsetminus':'\u2216','smashp':'\u2A33','smeparsl':'\u29E4','smid':'\u2223','smile':'\u2323','smt':'\u2AAA','smte':'\u2AAC','smtes':'\u2AAC\uFE00','softcy':'\u044C','SOFTcy':'\u042C','sol':'/','solb':'\u29C4','solbar':'\u233F','sopf':'\uD835\uDD64','Sopf':'\uD835\uDD4A','spades':'\u2660','spadesuit':'\u2660','spar':'\u2225','sqcap':'\u2293','sqcaps':'\u2293\uFE00','sqcup':'\u2294','sqcups':'\u2294\uFE00','Sqrt':'\u221A','sqsub':'\u228F','sqsube':'\u2291','sqsubset':'\u228F','sqsubseteq':'\u2291','sqsup':'\u2290','sqsupe':'\u2292','sqsupset':'\u2290','sqsupseteq':'\u2292','squ':'\u25A1','square':'\u25A1','Square':'\u25A1','SquareIntersection':'\u2293','SquareSubset':'\u228F','SquareSubsetEqual':'\u2291','SquareSuperset':'\u2290','SquareSupersetEqual':'\u2292','SquareUnion':'\u2294','squarf':'\u25AA','squf':'\u25AA','srarr':'\u2192','sscr':'\uD835\uDCC8','Sscr':'\uD835\uDCAE','ssetmn':'\u2216','ssmile':'\u2323','sstarf':'\u22C6','star':'\u2606','Star':'\u22C6','starf':'\u2605','straightepsilon':'\u03F5','straightphi':'\u03D5','strns':'\xAF','sub':'\u2282','Sub':'\u22D0','subdot':'\u2ABD','sube':'\u2286','subE':'\u2AC5','subedot':'\u2AC3','submult':'\u2AC1','subne':'\u228A','subnE':'\u2ACB','subplus':'\u2ABF','subrarr':'\u2979','subset':'\u2282','Subset':'\u22D0','subseteq':'\u2286','subseteqq':'\u2AC5','SubsetEqual':'\u2286','subsetneq':'\u228A','subsetneqq':'\u2ACB','subsim':'\u2AC7','subsub':'\u2AD5','subsup':'\u2AD3','succ':'\u227B','succapprox':'\u2AB8','succcurlyeq':'\u227D','Succeeds':'\u227B','SucceedsEqual':'\u2AB0','SucceedsSlantEqual':'\u227D','SucceedsTilde':'\u227F','succeq':'\u2AB0','succnapprox':'\u2ABA','succneqq':'\u2AB6','succnsim':'\u22E9','succsim':'\u227F','SuchThat':'\u220B','sum':'\u2211','Sum':'\u2211','sung':'\u266A','sup':'\u2283','Sup':'\u22D1','sup1':'\xB9','sup2':'\xB2','sup3':'\xB3','supdot':'\u2ABE','supdsub':'\u2AD8','supe':'\u2287','supE':'\u2AC6','supedot':'\u2AC4','Superset':'\u2283','SupersetEqual':'\u2287','suphsol':'\u27C9','suphsub':'\u2AD7','suplarr':'\u297B','supmult':'\u2AC2','supne':'\u228B','supnE':'\u2ACC','supplus':'\u2AC0','supset':'\u2283','Supset':'\u22D1','supseteq':'\u2287','supseteqq':'\u2AC6','supsetneq':'\u228B','supsetneqq':'\u2ACC','supsim':'\u2AC8','supsub':'\u2AD4','supsup':'\u2AD6','swarhk':'\u2926','swarr':'\u2199','swArr':'\u21D9','swarrow':'\u2199','swnwar':'\u292A','szlig':'\xDF','Tab':'\t','target':'\u2316','tau':'\u03C4','Tau':'\u03A4','tbrk':'\u23B4','tcaron':'\u0165','Tcaron':'\u0164','tcedil':'\u0163','Tcedil':'\u0162','tcy':'\u0442','Tcy':'\u0422','tdot':'\u20DB','telrec':'\u2315','tfr':'\uD835\uDD31','Tfr':'\uD835\uDD17','there4':'\u2234','therefore':'\u2234','Therefore':'\u2234','theta':'\u03B8','Theta':'\u0398','thetasym':'\u03D1','thetav':'\u03D1','thickapprox':'\u2248','thicksim':'\u223C','ThickSpace':'\u205F\u200A','thinsp':'\u2009','ThinSpace':'\u2009','thkap':'\u2248','thksim':'\u223C','thorn':'\xFE','THORN':'\xDE','tilde':'\u02DC','Tilde':'\u223C','TildeEqual':'\u2243','TildeFullEqual':'\u2245','TildeTilde':'\u2248','times':'\xD7','timesb':'\u22A0','timesbar':'\u2A31','timesd':'\u2A30','tint':'\u222D','toea':'\u2928','top':'\u22A4','topbot':'\u2336','topcir':'\u2AF1','topf':'\uD835\uDD65','Topf':'\uD835\uDD4B','topfork':'\u2ADA','tosa':'\u2929','tprime':'\u2034','trade':'\u2122','TRADE':'\u2122','triangle':'\u25B5','triangledown':'\u25BF','triangleleft':'\u25C3','trianglelefteq':'\u22B4','triangleq':'\u225C','triangleright':'\u25B9','trianglerighteq':'\u22B5','tridot':'\u25EC','trie':'\u225C','triminus':'\u2A3A','TripleDot':'\u20DB','triplus':'\u2A39','trisb':'\u29CD','tritime':'\u2A3B','trpezium':'\u23E2','tscr':'\uD835\uDCC9','Tscr':'\uD835\uDCAF','tscy':'\u0446','TScy':'\u0426','tshcy':'\u045B','TSHcy':'\u040B','tstrok':'\u0167','Tstrok':'\u0166','twixt':'\u226C','twoheadleftarrow':'\u219E','twoheadrightarrow':'\u21A0','uacute':'\xFA','Uacute':'\xDA','uarr':'\u2191','uArr':'\u21D1','Uarr':'\u219F','Uarrocir':'\u2949','ubrcy':'\u045E','Ubrcy':'\u040E','ubreve':'\u016D','Ubreve':'\u016C','ucirc':'\xFB','Ucirc':'\xDB','ucy':'\u0443','Ucy':'\u0423','udarr':'\u21C5','udblac':'\u0171','Udblac':'\u0170','udhar':'\u296E','ufisht':'\u297E','ufr':'\uD835\uDD32','Ufr':'\uD835\uDD18','ugrave':'\xF9','Ugrave':'\xD9','uHar':'\u2963','uharl':'\u21BF','uharr':'\u21BE','uhblk':'\u2580','ulcorn':'\u231C','ulcorner':'\u231C','ulcrop':'\u230F','ultri':'\u25F8','umacr':'\u016B','Umacr':'\u016A','uml':'\xA8','UnderBar':'_','UnderBrace':'\u23DF','UnderBracket':'\u23B5','UnderParenthesis':'\u23DD','Union':'\u22C3','UnionPlus':'\u228E','uogon':'\u0173','Uogon':'\u0172','uopf':'\uD835\uDD66','Uopf':'\uD835\uDD4C','uparrow':'\u2191','Uparrow':'\u21D1','UpArrow':'\u2191','UpArrowBar':'\u2912','UpArrowDownArrow':'\u21C5','updownarrow':'\u2195','Updownarrow':'\u21D5','UpDownArrow':'\u2195','UpEquilibrium':'\u296E','upharpoonleft':'\u21BF','upharpoonright':'\u21BE','uplus':'\u228E','UpperLeftArrow':'\u2196','UpperRightArrow':'\u2197','upsi':'\u03C5','Upsi':'\u03D2','upsih':'\u03D2','upsilon':'\u03C5','Upsilon':'\u03A5','UpTee':'\u22A5','UpTeeArrow':'\u21A5','upuparrows':'\u21C8','urcorn':'\u231D','urcorner':'\u231D','urcrop':'\u230E','uring':'\u016F','Uring':'\u016E','urtri':'\u25F9','uscr':'\uD835\uDCCA','Uscr':'\uD835\uDCB0','utdot':'\u22F0','utilde':'\u0169','Utilde':'\u0168','utri':'\u25B5','utrif':'\u25B4','uuarr':'\u21C8','uuml':'\xFC','Uuml':'\xDC','uwangle':'\u29A7','vangrt':'\u299C','varepsilon':'\u03F5','varkappa':'\u03F0','varnothing':'\u2205','varphi':'\u03D5','varpi':'\u03D6','varpropto':'\u221D','varr':'\u2195','vArr':'\u21D5','varrho':'\u03F1','varsigma':'\u03C2','varsubsetneq':'\u228A\uFE00','varsubsetneqq':'\u2ACB\uFE00','varsupsetneq':'\u228B\uFE00','varsupsetneqq':'\u2ACC\uFE00','vartheta':'\u03D1','vartriangleleft':'\u22B2','vartriangleright':'\u22B3','vBar':'\u2AE8','Vbar':'\u2AEB','vBarv':'\u2AE9','vcy':'\u0432','Vcy':'\u0412','vdash':'\u22A2','vDash':'\u22A8','Vdash':'\u22A9','VDash':'\u22AB','Vdashl':'\u2AE6','vee':'\u2228','Vee':'\u22C1','veebar':'\u22BB','veeeq':'\u225A','vellip':'\u22EE','verbar':'|','Verbar':'\u2016','vert':'|','Vert':'\u2016','VerticalBar':'\u2223','VerticalLine':'|','VerticalSeparator':'\u2758','VerticalTilde':'\u2240','VeryThinSpace':'\u200A','vfr':'\uD835\uDD33','Vfr':'\uD835\uDD19','vltri':'\u22B2','vnsub':'\u2282\u20D2','vnsup':'\u2283\u20D2','vopf':'\uD835\uDD67','Vopf':'\uD835\uDD4D','vprop':'\u221D','vrtri':'\u22B3','vscr':'\uD835\uDCCB','Vscr':'\uD835\uDCB1','vsubne':'\u228A\uFE00','vsubnE':'\u2ACB\uFE00','vsupne':'\u228B\uFE00','vsupnE':'\u2ACC\uFE00','Vvdash':'\u22AA','vzigzag':'\u299A','wcirc':'\u0175','Wcirc':'\u0174','wedbar':'\u2A5F','wedge':'\u2227','Wedge':'\u22C0','wedgeq':'\u2259','weierp':'\u2118','wfr':'\uD835\uDD34','Wfr':'\uD835\uDD1A','wopf':'\uD835\uDD68','Wopf':'\uD835\uDD4E','wp':'\u2118','wr':'\u2240','wreath':'\u2240','wscr':'\uD835\uDCCC','Wscr':'\uD835\uDCB2','xcap':'\u22C2','xcirc':'\u25EF','xcup':'\u22C3','xdtri':'\u25BD','xfr':'\uD835\uDD35','Xfr':'\uD835\uDD1B','xharr':'\u27F7','xhArr':'\u27FA','xi':'\u03BE','Xi':'\u039E','xlarr':'\u27F5','xlArr':'\u27F8','xmap':'\u27FC','xnis':'\u22FB','xodot':'\u2A00','xopf':'\uD835\uDD69','Xopf':'\uD835\uDD4F','xoplus':'\u2A01','xotime':'\u2A02','xrarr':'\u27F6','xrArr':'\u27F9','xscr':'\uD835\uDCCD','Xscr':'\uD835\uDCB3','xsqcup':'\u2A06','xuplus':'\u2A04','xutri':'\u25B3','xvee':'\u22C1','xwedge':'\u22C0','yacute':'\xFD','Yacute':'\xDD','yacy':'\u044F','YAcy':'\u042F','ycirc':'\u0177','Ycirc':'\u0176','ycy':'\u044B','Ycy':'\u042B','yen':'\xA5','yfr':'\uD835\uDD36','Yfr':'\uD835\uDD1C','yicy':'\u0457','YIcy':'\u0407','yopf':'\uD835\uDD6A','Yopf':'\uD835\uDD50','yscr':'\uD835\uDCCE','Yscr':'\uD835\uDCB4','yucy':'\u044E','YUcy':'\u042E','yuml':'\xFF','Yuml':'\u0178','zacute':'\u017A','Zacute':'\u0179','zcaron':'\u017E','Zcaron':'\u017D','zcy':'\u0437','Zcy':'\u0417','zdot':'\u017C','Zdot':'\u017B','zeetrf':'\u2128','ZeroWidthSpace':'\u200B','zeta':'\u03B6','Zeta':'\u0396','zfr':'\uD835\uDD37','Zfr':'\u2128','zhcy':'\u0436','ZHcy':'\u0416','zigrarr':'\u21DD','zopf':'\uD835\uDD6B','Zopf':'\u2124','zscr':'\uD835\uDCCF','Zscr':'\uD835\uDCB5','zwj':'\u200D','zwnj':'\u200C'};
8198
- var decodeMapLegacy = {'aacute':'\xE1','Aacute':'\xC1','acirc':'\xE2','Acirc':'\xC2','acute':'\xB4','aelig':'\xE6','AElig':'\xC6','agrave':'\xE0','Agrave':'\xC0','amp':'&','AMP':'&','aring':'\xE5','Aring':'\xC5','atilde':'\xE3','Atilde':'\xC3','auml':'\xE4','Auml':'\xC4','brvbar':'\xA6','ccedil':'\xE7','Ccedil':'\xC7','cedil':'\xB8','cent':'\xA2','copy':'\xA9','COPY':'\xA9','curren':'\xA4','deg':'\xB0','divide':'\xF7','eacute':'\xE9','Eacute':'\xC9','ecirc':'\xEA','Ecirc':'\xCA','egrave':'\xE8','Egrave':'\xC8','eth':'\xF0','ETH':'\xD0','euml':'\xEB','Euml':'\xCB','frac12':'\xBD','frac14':'\xBC','frac34':'\xBE','gt':'>','GT':'>','iacute':'\xED','Iacute':'\xCD','icirc':'\xEE','Icirc':'\xCE','iexcl':'\xA1','igrave':'\xEC','Igrave':'\xCC','iquest':'\xBF','iuml':'\xEF','Iuml':'\xCF','laquo':'\xAB','lt':'<','LT':'<','macr':'\xAF','micro':'\xB5','middot':'\xB7','nbsp':'\xA0','not':'\xAC','ntilde':'\xF1','Ntilde':'\xD1','oacute':'\xF3','Oacute':'\xD3','ocirc':'\xF4','Ocirc':'\xD4','ograve':'\xF2','Ograve':'\xD2','ordf':'\xAA','ordm':'\xBA','oslash':'\xF8','Oslash':'\xD8','otilde':'\xF5','Otilde':'\xD5','ouml':'\xF6','Ouml':'\xD6','para':'\xB6','plusmn':'\xB1','pound':'\xA3','quot':'"','QUOT':'"','raquo':'\xBB','reg':'\xAE','REG':'\xAE','sect':'\xA7','shy':'\xAD','sup1':'\xB9','sup2':'\xB2','sup3':'\xB3','szlig':'\xDF','thorn':'\xFE','THORN':'\xDE','times':'\xD7','uacute':'\xFA','Uacute':'\xDA','ucirc':'\xFB','Ucirc':'\xDB','ugrave':'\xF9','Ugrave':'\xD9','uml':'\xA8','uuml':'\xFC','Uuml':'\xDC','yacute':'\xFD','Yacute':'\xDD','yen':'\xA5','yuml':'\xFF'};
8199
- var decodeMapNumeric = {'0':'\uFFFD','128':'\u20AC','130':'\u201A','131':'\u0192','132':'\u201E','133':'\u2026','134':'\u2020','135':'\u2021','136':'\u02C6','137':'\u2030','138':'\u0160','139':'\u2039','140':'\u0152','142':'\u017D','145':'\u2018','146':'\u2019','147':'\u201C','148':'\u201D','149':'\u2022','150':'\u2013','151':'\u2014','152':'\u02DC','153':'\u2122','154':'\u0161','155':'\u203A','156':'\u0153','158':'\u017E','159':'\u0178'};
8200
- var invalidReferenceCodePoints = [1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65000,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111];
8201
-
8202
- /*--------------------------------------------------------------------------*/
8203
-
8204
- var stringFromCharCode = String.fromCharCode;
8205
-
8206
- var object = {};
8207
- var hasOwnProperty = object.hasOwnProperty;
8208
- var has = function(object, propertyName) {
8209
- return hasOwnProperty.call(object, propertyName);
8210
- };
8211
-
8212
- var contains = function(array, value) {
8213
- var index = -1;
8214
- var length = array.length;
8215
- while (++index < length) {
8216
- if (array[index] == value) {
8217
- return true;
8218
- }
8219
- }
8220
- return false;
8221
- };
8352
+ // when no child node or attr is present
8353
+ if (!options.alwaysCreateTextNode && (!node.child || util.isEmptyObject(node.child)) && (!node.attrsMap || util.isEmptyObject(node.attrsMap))) {
8354
+ return util.isExist(node.val) ? node.val : '';
8355
+ }
8222
8356
 
8223
- var merge = function(options, defaults) {
8224
- if (!options) {
8225
- return defaults;
8226
- }
8227
- var result = {};
8228
- var key;
8229
- for (key in defaults) {
8230
- // A `hasOwnProperty` check is not needed here, since only recognized
8231
- // option names are used anyway. Any others are ignored.
8232
- result[key] = has(options, key) ? options[key] : defaults[key];
8233
- }
8234
- return result;
8235
- };
8236
-
8237
- // Modified version of `ucs2encode`; see https://mths.be/punycode.
8238
- var codePointToSymbol = function(codePoint, strict) {
8239
- var output = '';
8240
- if ((codePoint >= 0xD800 && codePoint <= 0xDFFF) || codePoint > 0x10FFFF) {
8241
- // See issue #4:
8242
- // “Otherwise, if the number is in the range 0xD800 to 0xDFFF or is
8243
- // greater than 0x10FFFF, then this is a parse error. Return a U+FFFD
8244
- // REPLACEMENT CHARACTER.”
8245
- if (strict) {
8246
- parseError('character reference outside the permissible Unicode range');
8247
- }
8248
- return '\uFFFD';
8249
- }
8250
- if (has(decodeMapNumeric, codePoint)) {
8251
- if (strict) {
8252
- parseError('disallowed character reference');
8253
- }
8254
- return decodeMapNumeric[codePoint];
8255
- }
8256
- if (strict && contains(invalidReferenceCodePoints, codePoint)) {
8257
- parseError('disallowed character reference');
8258
- }
8259
- if (codePoint > 0xFFFF) {
8260
- codePoint -= 0x10000;
8261
- output += stringFromCharCode(codePoint >>> 10 & 0x3FF | 0xD800);
8262
- codePoint = 0xDC00 | codePoint & 0x3FF;
8263
- }
8264
- output += stringFromCharCode(codePoint);
8265
- return output;
8266
- };
8357
+ // otherwise create a textnode if node has some text
8358
+ if (util.isExist(node.val) && !(typeof node.val === 'string' && (node.val === '' || node.val === options.cdataPositionChar))) {
8359
+ const asArray = util.isTagNameInArrayMode(node.tagname, options.arrayMode, parentTagName);
8360
+ jObj[options.textNodeName] = asArray ? [node.val] : node.val;
8361
+ }
8362
+
8363
+ util.merge(jObj, node.attrsMap, options.arrayMode);
8364
+
8365
+ const keys = Object.keys(node.child);
8366
+ for (let index = 0; index < keys.length; index++) {
8367
+ const tagName = keys[index];
8368
+ if (node.child[tagName] && node.child[tagName].length > 1) {
8369
+ jObj[tagName] = [];
8370
+ for (let tag in node.child[tagName]) {
8371
+ if (node.child[tagName].hasOwnProperty(tag)) {
8372
+ jObj[tagName].push(convertToJson(node.child[tagName][tag], options, tagName));
8373
+ }
8374
+ }
8375
+ } else {
8376
+ const result = convertToJson(node.child[tagName][0], options, tagName);
8377
+ const asArray = (options.arrayMode === true && typeof result === 'object') || util.isTagNameInArrayMode(tagName, options.arrayMode, parentTagName);
8378
+ jObj[tagName] = asArray ? [result] : result;
8379
+ }
8380
+ }
8267
8381
 
8268
- var hexEscape = function(codePoint) {
8269
- return '&#x' + codePoint.toString(16).toUpperCase() + ';';
8270
- };
8382
+ //add value
8383
+ return jObj;
8384
+ };
8271
8385
 
8272
- var decEscape = function(codePoint) {
8273
- return '&#' + codePoint + ';';
8274
- };
8386
+ var convertToJson_1 = convertToJson;
8275
8387
 
8276
- var parseError = function(message) {
8277
- throw Error('Parse error: ' + message);
8278
- };
8388
+ var node2json = {
8389
+ convertToJson: convertToJson_1
8390
+ };
8279
8391
 
8280
- /*--------------------------------------------------------------------------*/
8392
+ var xmlNode = function(tagname, parent, val) {
8393
+ this.tagname = tagname;
8394
+ this.parent = parent;
8395
+ this.child = {}; //child tags
8396
+ this.attrsMap = {}; //attributes map
8397
+ this.val = val; //text only
8398
+ this.addChild = function(child) {
8399
+ if (Array.isArray(this.child[child.tagname])) {
8400
+ //already presents
8401
+ this.child[child.tagname].push(child);
8402
+ } else {
8403
+ this.child[child.tagname] = [child];
8404
+ }
8405
+ };
8406
+ };
8281
8407
 
8282
- var encode = function(string, options) {
8283
- options = merge(options, encode.options);
8284
- var strict = options.strict;
8285
- if (strict && regexInvalidRawCodePoint.test(string)) {
8286
- parseError('forbidden code point');
8287
- }
8288
- var encodeEverything = options.encodeEverything;
8289
- var useNamedReferences = options.useNamedReferences;
8290
- var allowUnsafeSymbols = options.allowUnsafeSymbols;
8291
- var escapeCodePoint = options.decimal ? decEscape : hexEscape;
8292
-
8293
- var escapeBmpSymbol = function(symbol) {
8294
- return escapeCodePoint(symbol.charCodeAt(0));
8295
- };
8296
-
8297
- if (encodeEverything) {
8298
- // Encode ASCII symbols.
8299
- string = string.replace(regexAsciiWhitelist, function(symbol) {
8300
- // Use named references if requested & possible.
8301
- if (useNamedReferences && has(encodeMap, symbol)) {
8302
- return '&' + encodeMap[symbol] + ';';
8303
- }
8304
- return escapeBmpSymbol(symbol);
8305
- });
8306
- // Shorten a few escapes that represent two symbols, of which at least one
8307
- // is within the ASCII range.
8308
- if (useNamedReferences) {
8309
- string = string
8310
- .replace(/&gt;\u20D2/g, '&nvgt;')
8311
- .replace(/&lt;\u20D2/g, '&nvlt;')
8312
- .replace(/&#x66;&#x6A;/g, '&fjlig;');
8313
- }
8314
- // Encode non-ASCII symbols.
8315
- if (useNamedReferences) {
8316
- // Encode non-ASCII symbols that can be replaced with a named reference.
8317
- string = string.replace(regexEncodeNonAscii, function(string) {
8318
- // Note: there is no need to check `has(encodeMap, string)` here.
8319
- return '&' + encodeMap[string] + ';';
8320
- });
8321
- }
8322
- // Note: any remaining non-ASCII symbols are handled outside of the `if`.
8323
- } else if (useNamedReferences) {
8324
- // Apply named character references.
8325
- // Encode `<>"'&` using named character references.
8326
- if (!allowUnsafeSymbols) {
8327
- string = string.replace(regexEscape, function(string) {
8328
- return '&' + encodeMap[string] + ';'; // no need to check `has()` here
8329
- });
8330
- }
8331
- // Shorten escapes that represent two symbols, of which at least one is
8332
- // `<>"'&`.
8333
- string = string
8334
- .replace(/&gt;\u20D2/g, '&nvgt;')
8335
- .replace(/&lt;\u20D2/g, '&nvlt;');
8336
- // Encode non-ASCII symbols that can be replaced with a named reference.
8337
- string = string.replace(regexEncodeNonAscii, function(string) {
8338
- // Note: there is no need to check `has(encodeMap, string)` here.
8339
- return '&' + encodeMap[string] + ';';
8340
- });
8341
- } else if (!allowUnsafeSymbols) {
8342
- // Encode `<>"'&` using hexadecimal escapes, now that they’re not handled
8343
- // using named character references.
8344
- string = string.replace(regexEscape, escapeBmpSymbol);
8345
- }
8346
- return string
8347
- // Encode astral symbols.
8348
- .replace(regexAstralSymbols, function($0) {
8349
- // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
8350
- var high = $0.charCodeAt(0);
8351
- var low = $0.charCodeAt(1);
8352
- var codePoint = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000;
8353
- return escapeCodePoint(codePoint);
8354
- })
8355
- // Encode any remaining BMP symbols that are not printable ASCII symbols
8356
- // using a hexadecimal escape.
8357
- .replace(regexBmpWhitelist, escapeBmpSymbol);
8358
- };
8359
- // Expose default options (so they can be overridden globally).
8360
- encode.options = {
8361
- 'allowUnsafeSymbols': false,
8362
- 'encodeEverything': false,
8363
- 'strict': false,
8364
- 'useNamedReferences': false,
8365
- 'decimal' : false
8366
- };
8367
-
8368
- var decode = function(html, options) {
8369
- options = merge(options, decode.options);
8370
- var strict = options.strict;
8371
- if (strict && regexInvalidEntity.test(html)) {
8372
- parseError('malformed character reference');
8373
- }
8374
- return html.replace(regexDecode, function($0, $1, $2, $3, $4, $5, $6, $7) {
8375
- var codePoint;
8376
- var semicolon;
8377
- var decDigits;
8378
- var hexDigits;
8379
- var reference;
8380
- var next;
8381
- if ($1) {
8382
- // Decode decimal escapes, e.g. `&#119558;`.
8383
- decDigits = $1;
8384
- semicolon = $2;
8385
- if (strict && !semicolon) {
8386
- parseError('character reference was not terminated by a semicolon');
8387
- }
8388
- codePoint = parseInt(decDigits, 10);
8389
- return codePointToSymbol(codePoint, strict);
8390
- }
8391
- if ($3) {
8392
- // Decode hexadecimal escapes, e.g. `&#x1D306;`.
8393
- hexDigits = $3;
8394
- semicolon = $4;
8395
- if (strict && !semicolon) {
8396
- parseError('character reference was not terminated by a semicolon');
8397
- }
8398
- codePoint = parseInt(hexDigits, 16);
8399
- return codePointToSymbol(codePoint, strict);
8400
- }
8401
- if ($5) {
8402
- // Decode named character references with trailing `;`, e.g. `&copy;`.
8403
- reference = $5;
8404
- if (has(decodeMap, reference)) {
8405
- return decodeMap[reference];
8406
- } else {
8407
- // Ambiguous ampersand. https://mths.be/notes/ambiguous-ampersands
8408
- if (strict) {
8409
- parseError(
8410
- 'named character reference was not terminated by a semicolon'
8411
- );
8412
- }
8413
- return $0;
8414
- }
8415
- }
8416
- // If we’re still here, it’s a legacy reference for sure. No need for an
8417
- // extra `if` check.
8418
- // Decode named character references without trailing `;`, e.g. `&amp`
8419
- // This is only a parse error if it gets converted to `&`, or if it is
8420
- // followed by `=` in an attribute context.
8421
- reference = $6;
8422
- next = $7;
8423
- if (next && options.isAttributeValue) {
8424
- if (strict && next == '=') {
8425
- parseError('`&` did not start a character reference');
8426
- }
8427
- return $0;
8428
- } else {
8429
- if (strict) {
8430
- parseError(
8431
- 'named character reference was not terminated by a semicolon'
8432
- );
8433
- }
8434
- // Note: there is no need to check `has(decodeMapLegacy, reference)`.
8435
- return decodeMapLegacy[reference] + (next || '');
8436
- }
8437
- });
8438
- };
8439
- // Expose default options (so they can be overridden globally).
8440
- decode.options = {
8441
- 'isAttributeValue': false,
8442
- 'strict': false
8443
- };
8444
-
8445
- var escape = function(string) {
8446
- return string.replace(regexEscape, function($0) {
8447
- // Note: there is no need to check `has(escapeMap, $0)` here.
8448
- return escapeMap[$0];
8449
- });
8450
- };
8451
-
8452
- /*--------------------------------------------------------------------------*/
8453
-
8454
- var he = {
8455
- 'version': '1.1.1',
8456
- 'encode': encode,
8457
- 'decode': decode,
8458
- 'escape': escape,
8459
- 'unescape': decode
8460
- };
8461
-
8462
- // Some AMD build optimizers, like r.js, check for specific condition patterns
8463
- // like the following:
8464
- if (freeExports && !freeExports.nodeType) {
8465
- if (freeModule) { // in Node.js, io.js, or RingoJS v0.8.0+
8466
- freeModule.exports = he;
8467
- } else { // in Narwhal or RingoJS v0.7.0-
8468
- for (var key in he) {
8469
- has(he, key) && (freeExports[key] = he[key]);
8470
- }
8471
- }
8472
- } else { // in Rhino or a web browser
8473
- root.he = he;
8474
- }
8408
+ const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;
8409
+ const numRegex = /^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;
8410
+ // const octRegex = /0x[a-z0-9]+/;
8411
+ // const binRegex = /0x[a-z0-9]+/;
8475
8412
 
8476
- }(commonjsGlobal));
8477
- });
8478
8413
 
8479
- var TagType = {"OPENING":1, "CLOSING":2, "SELF":3, "CDATA": 4};
8480
-
8481
- //var tagsRegx = new RegExp("<(\\/?[\\w:\\-\._]+)([^>]*)>(\\s*"+cdataRegx+")*([^<]+)?","g");
8482
- //var tagsRegx = new RegExp("<(\\/?)((\\w*:)?([\\w:\\-\._]+))([^>]*)>([^<]*)("+cdataRegx+"([^<]*))*([^<]+)?","g");
8483
-
8484
- //treat cdata as a tag
8485
-
8486
-
8487
- var defaultOptions = {
8488
- attributeNamePrefix : "@_",
8489
- attrNodeName: false,
8490
- textNodeName : "#text",
8491
- ignoreAttributes : true,
8492
- ignoreNameSpace : false,
8493
- allowBooleanAttributes : false, //a tag can have attributes without any value
8494
- //ignoreRootElement : false,
8495
- parseNodeValue : true,
8496
- parseAttributeValue : false,
8497
- arrayMode : false,
8498
- trimValues: true, //Trim string values of tag and attributes
8499
- decodeHTMLchar: false,
8500
- cdataTagName: false,
8501
- cdataPositionChar: "\\c"
8502
- //decodeStrict: false,
8414
+ //polyfill
8415
+ if (!Number.parseInt && window.parseInt) {
8416
+ Number.parseInt = window.parseInt;
8417
+ }
8418
+ if (!Number.parseFloat && window.parseFloat) {
8419
+ Number.parseFloat = window.parseFloat;
8420
+ }
8421
+
8422
+
8423
+ const consider = {
8424
+ hex : true,
8425
+ leadingZeros: true,
8426
+ decimalPoint: "\.",
8427
+ eNotation: true
8428
+ //skipLike: /regex/
8503
8429
  };
8504
8430
 
8505
- var getTraversalObj =function (xmlData,options){
8506
- //options = buildOptions(options);
8507
- options = Object.assign({},defaultOptions,options);
8508
- //xmlData = xmlData.replace(/\r?\n/g, " ");//make it single line
8509
- xmlData = xmlData.replace(/<!--[\s\S]*?-->/g, "");//Remove comments
8510
-
8511
- var xmlObj = new xmlNode('!xml');
8512
- var currentNode = xmlObj;
8513
-
8514
- var tagsRegx = new RegExp("<((!\\[CDATA\\[([\\s\\S]*?)(\\]\\]>))|(([\\w:\\-\\._]*:)?([\\w:\\-\\._]+))([^>]*)>|((\\/)(([\\w:\\-\\._]*:)?([\\w:\\-\\._]+))>))([^<]*)","g");
8515
- var tag = tagsRegx.exec(xmlData);
8516
- var nextTag = tagsRegx.exec(xmlData);
8517
- while (tag) {
8518
- var tagType = checkForTagType(tag);
8519
-
8520
- if(tagType === TagType.CLOSING){
8521
- //add parsed data to parent node
8522
- if(currentNode.parent && tag[14]){
8523
- currentNode.parent.val = util.getValue(currentNode.parent.val) + "" + processTagValue(tag[14],options);
8524
- }
8431
+ function toNumber(str, options = {}){
8432
+ // const options = Object.assign({}, consider);
8433
+ // if(opt.leadingZeros === false){
8434
+ // options.leadingZeros = false;
8435
+ // }else if(opt.hex === false){
8436
+ // options.hex = false;
8437
+ // }
8525
8438
 
8526
- currentNode = currentNode.parent;
8527
- }else if(tagType === TagType.CDATA){
8528
- if(options.cdataTagName){
8529
- //add cdata node
8530
- var childNode = new xmlNode( options.cdataTagName,currentNode,tag[3]);
8531
- childNode.attrsMap = buildAttributesMap(tag[8],options);
8532
- currentNode.addChild(childNode);
8533
- //for backtracking
8534
- currentNode.val = util.getValue(currentNode.val) + options.cdataPositionChar;
8535
- //add rest value to parent node
8536
- if(tag[14]){
8537
- currentNode.val += processTagValue(tag[14],options);
8439
+ options = Object.assign({}, consider, options );
8440
+ if(!str || typeof str !== "string" ) return str;
8441
+
8442
+ let trimmedStr = str.trim();
8443
+ // if(trimmedStr === "0.0") return 0;
8444
+ // else if(trimmedStr === "+0.0") return 0;
8445
+ // else if(trimmedStr === "-0.0") return -0;
8446
+
8447
+ if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;
8448
+ else if (options.hex && hexRegex.test(trimmedStr)) {
8449
+ return Number.parseInt(trimmedStr, 16);
8450
+ // } else if (options.parseOct && octRegex.test(str)) {
8451
+ // return Number.parseInt(val, 8);
8452
+ // }else if (options.parseBin && binRegex.test(str)) {
8453
+ // return Number.parseInt(val, 2);
8454
+ }else {
8455
+ //separate negative sign, leading zeros, and rest number
8456
+ const match = numRegex.exec(trimmedStr);
8457
+ if(match){
8458
+ const sign = match[1];
8459
+ const leadingZeros = match[2];
8460
+ let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros
8461
+ //trim ending zeros for floating number
8462
+
8463
+ const eNotation = match[4] || match[6];
8464
+ if(!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== ".") return str; //-0123
8465
+ else if(!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== ".") return str; //0123
8466
+ else {//no leading zeros or leading zeros are allowed
8467
+ const num = Number(trimmedStr);
8468
+ const numStr = "" + num;
8469
+ if(numStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation
8470
+ if(options.eNotation) return num;
8471
+ else return str;
8472
+ }else if(eNotation){ //given number has enotation
8473
+ if(options.eNotation) return num;
8474
+ else return str;
8475
+ }else if(trimmedStr.indexOf(".") !== -1){ //floating number
8476
+ // const decimalPart = match[5].substr(1);
8477
+ // const intPart = trimmedStr.substr(0,trimmedStr.indexOf("."));
8478
+
8479
+
8480
+ // const p = numStr.indexOf(".");
8481
+ // const givenIntPart = numStr.substr(0,p);
8482
+ // const givenDecPart = numStr.substr(p+1);
8483
+ if(numStr === "0" && (numTrimmedByZeros === "") ) return num; //0.0
8484
+ else if(numStr === numTrimmedByZeros) return num; //0.456. 0.79000
8485
+ else if( sign && numStr === "-"+numTrimmedByZeros) return num;
8486
+ else return str;
8538
8487
  }
8539
- }else {
8540
- currentNode.val = (currentNode.val || "") + (tag[3] || "") + processTagValue(tag[14],options);
8541
- }
8542
- }else if(tagType === TagType.SELF){
8543
- var childNode = new xmlNode( options.ignoreNameSpace ? tag[7] : tag[5],currentNode, "");
8544
- if(tag[8] && tag[8].length > 1){
8545
- tag[8] = tag[8].substr(0,tag[8].length -1);
8488
+
8489
+ if(leadingZeros){
8490
+ // if(numTrimmedByZeros === numStr){
8491
+ // if(options.leadingZeros) return num;
8492
+ // else return str;
8493
+ // }else return str;
8494
+ if(numTrimmedByZeros === numStr) return num;
8495
+ else if(sign+numTrimmedByZeros === numStr) return num;
8496
+ else return str;
8497
+ }
8498
+
8499
+ if(trimmedStr === numStr) return num;
8500
+ else if(trimmedStr === sign+numStr) return num;
8501
+ // else{
8502
+ // //number with +/- sign
8503
+ // trimmedStr.test(/[-+][0-9]);
8504
+
8505
+ // }
8506
+ return str;
8546
8507
  }
8547
- childNode.attrsMap = buildAttributesMap(tag[8],options);
8548
- currentNode.addChild(childNode);
8549
- }else {//TagType.OPENING
8550
- var childNode = new xmlNode( options.ignoreNameSpace ? tag[7] : tag[5],currentNode,processTagValue(tag[14],options));
8551
- childNode.attrsMap = buildAttributesMap(tag[8],options);
8552
- currentNode.addChild(childNode);
8553
- currentNode = childNode;
8508
+ // else if(!eNotation && trimmedStr && trimmedStr !== Number(trimmedStr) ) return str;
8509
+
8510
+ }else { //non-numeric string
8511
+ return str;
8554
8512
  }
8513
+ }
8514
+ }
8555
8515
 
8556
- tag = nextTag;
8557
- nextTag = tagsRegx.exec(xmlData);
8516
+ /**
8517
+ *
8518
+ * @param {string} numStr without leading zeros
8519
+ * @returns
8520
+ */
8521
+ function trimZeros(numStr){
8522
+ if(numStr && numStr.indexOf(".") !== -1){//float
8523
+ numStr = numStr.replace(/0+$/, ""); //remove ending zeros
8524
+ if(numStr === ".") numStr = "0";
8525
+ else if(numStr[0] === ".") numStr = "0"+numStr;
8526
+ else if(numStr[numStr.length-1] === ".") numStr = numStr.substr(0,numStr.length-1);
8527
+ return numStr;
8558
8528
  }
8529
+ return numStr;
8530
+ }
8531
+ var strnum = toNumber;
8532
+
8533
+ const buildOptions$3 = util.buildOptions;
8534
+
8559
8535
 
8560
- return xmlObj;
8536
+
8537
+ '<((!\\[CDATA\\[([\\s\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\/)(NAME)\\s*>))([^<]*)'
8538
+ .replace(/NAME/g, util.nameRegexp);
8539
+
8540
+ //const tagsRegx = new RegExp("<(\\/?[\\w:\\-\._]+)([^>]*)>(\\s*"+cdataRegx+")*([^<]+)?","g");
8541
+ //const tagsRegx = new RegExp("<(\\/?)((\\w*:)?([\\w:\\-\._]+))([^>]*)>([^<]*)("+cdataRegx+"([^<]*))*([^<]+)?","g");
8542
+
8543
+ //polyfill
8544
+ if (!Number.parseInt && window.parseInt) {
8545
+ Number.parseInt = window.parseInt;
8546
+ }
8547
+ if (!Number.parseFloat && window.parseFloat) {
8548
+ Number.parseFloat = window.parseFloat;
8549
+ }
8550
+
8551
+ const defaultOptions$2 = {
8552
+ attributeNamePrefix: '@_',
8553
+ attrNodeName: false,
8554
+ textNodeName: '#text',
8555
+ ignoreAttributes: true,
8556
+ ignoreNameSpace: false,
8557
+ allowBooleanAttributes: false, //a tag can have attributes without any value
8558
+ //ignoreRootElement : false,
8559
+ parseNodeValue: true,
8560
+ parseAttributeValue: false,
8561
+ arrayMode: false,
8562
+ trimValues: true, //Trim string values of tag and attributes
8563
+ cdataTagName: false,
8564
+ cdataPositionChar: '\\c',
8565
+ numParseOptions: {
8566
+ hex: true,
8567
+ leadingZeros: true
8568
+ },
8569
+ tagValueProcessor: function(a, tagName) {
8570
+ return a;
8571
+ },
8572
+ attrValueProcessor: function(a, attrName) {
8573
+ return a;
8574
+ },
8575
+ stopNodes: [],
8576
+ alwaysCreateTextNode: false
8577
+ //decodeStrict: false,
8561
8578
  };
8562
8579
 
8563
- function processTagValue(val,options){
8564
- if(val){
8565
- if(options.trimValues){
8566
- val = val.trim();
8567
- }
8568
- if(options.decodeHTMLchar){
8569
- val = he.decode(val);
8570
- }
8571
- val = parseValue(val,options.parseNodeValue);
8580
+ var defaultOptions_1 = defaultOptions$2;
8581
+
8582
+ const props$2 = [
8583
+ 'attributeNamePrefix',
8584
+ 'attrNodeName',
8585
+ 'textNodeName',
8586
+ 'ignoreAttributes',
8587
+ 'ignoreNameSpace',
8588
+ 'allowBooleanAttributes',
8589
+ 'parseNodeValue',
8590
+ 'parseAttributeValue',
8591
+ 'arrayMode',
8592
+ 'trimValues',
8593
+ 'cdataTagName',
8594
+ 'cdataPositionChar',
8595
+ 'tagValueProcessor',
8596
+ 'attrValueProcessor',
8597
+ 'parseTrueNumberOnly',
8598
+ 'numParseOptions',
8599
+ 'stopNodes',
8600
+ 'alwaysCreateTextNode'
8601
+ ];
8602
+ var props_1 = props$2;
8603
+
8604
+ /**
8605
+ * Trim -> valueProcessor -> parse value
8606
+ * @param {string} tagName
8607
+ * @param {string} val
8608
+ * @param {object} options
8609
+ */
8610
+ function processTagValue(tagName, val, options) {
8611
+ if (val) {
8612
+ if (options.trimValues) {
8613
+ val = val.trim();
8572
8614
  }
8615
+ val = options.tagValueProcessor(val, tagName);
8616
+ val = parseValue(val, options.parseNodeValue, options.numParseOptions);
8617
+ }
8573
8618
 
8574
- return val;
8619
+ return val;
8575
8620
  }
8576
8621
 
8577
- function checkForTagType(match){
8578
- if(match[4] === "]]>"){
8579
- return TagType.CDATA;
8580
- }else if(match[10] === "/"){
8581
- return TagType.CLOSING;
8582
- }else if(typeof match[8] !== "undefined" && match[8].substr(match[8].length-1) === "/"){
8583
- return TagType.SELF;
8584
- }else {
8585
- return TagType.OPENING;
8622
+ function resolveNameSpace(tagname, options) {
8623
+ if (options.ignoreNameSpace) {
8624
+ const tags = tagname.split(':');
8625
+ const prefix = tagname.charAt(0) === '/' ? '/' : '';
8626
+ if (tags[0] === 'xmlns') {
8627
+ return '';
8586
8628
  }
8629
+ if (tags.length === 2) {
8630
+ tagname = prefix + tags[1];
8631
+ }
8632
+ }
8633
+ return tagname;
8587
8634
  }
8588
8635
 
8589
- var xml2json = function (xmlData,options){
8590
- options = Object.assign({},defaultOptions,options);
8591
- return convertToJson(getTraversalObj(xmlData,options), options);
8592
- };
8636
+ function parseValue(val, shouldParse, options) {
8637
+ if (shouldParse && typeof val === 'string') {
8638
+ //console.log(options)
8639
+ const newval = val.trim();
8640
+ if(newval === 'true' ) return true;
8641
+ else if(newval === 'false' ) return false;
8642
+ else return strnum(val, options);
8643
+ } else {
8644
+ if (util.isExist(val)) {
8645
+ return val;
8646
+ } else {
8647
+ return '';
8648
+ }
8649
+ }
8650
+ }
8593
8651
 
8594
- function resolveNameSpace(tagname,options){
8595
- if(options.ignoreNameSpace ){
8596
- var tags = tagname.split(":");
8597
- var prefix = tagname.charAt(0) === "/" ? "/" : "";
8598
- if(tags[0] === "xmlns") {
8599
- return "";
8600
- }
8601
- if(tags.length === 2) {
8602
- tagname = prefix + tags[1];
8652
+ //TODO: change regex to capture NS
8653
+ //const attrsRegx = new RegExp("([\\w\\-\\.\\:]+)\\s*=\\s*(['\"])((.|\n)*?)\\2","gm");
8654
+ const attrsRegx = new RegExp('([^\\s=]+)\\s*(=\\s*([\'"])(.*?)\\3)?', 'g');
8655
+
8656
+ function buildAttributesMap(attrStr, options) {
8657
+ if (!options.ignoreAttributes && typeof attrStr === 'string') {
8658
+ attrStr = attrStr.replace(/\r?\n/g, ' ');
8659
+ //attrStr = attrStr || attrStr.trim();
8660
+
8661
+ const matches = util.getAllMatches(attrStr, attrsRegx);
8662
+ const len = matches.length; //don't make it inline
8663
+ const attrs = {};
8664
+ for (let i = 0; i < len; i++) {
8665
+ const attrName = resolveNameSpace(matches[i][1], options);
8666
+ if (attrName.length) {
8667
+ if (matches[i][4] !== undefined) {
8668
+ if (options.trimValues) {
8669
+ matches[i][4] = matches[i][4].trim();
8670
+ }
8671
+ matches[i][4] = options.attrValueProcessor(matches[i][4], attrName);
8672
+ attrs[options.attributeNamePrefix + attrName] = parseValue(
8673
+ matches[i][4],
8674
+ options.parseAttributeValue,
8675
+ options.numParseOptions
8676
+ );
8677
+ } else if (options.allowBooleanAttributes) {
8678
+ attrs[options.attributeNamePrefix + attrName] = true;
8603
8679
  }
8680
+ }
8604
8681
  }
8605
- return tagname;
8682
+ if (!Object.keys(attrs).length) {
8683
+ return;
8684
+ }
8685
+ if (options.attrNodeName) {
8686
+ const attrCollection = {};
8687
+ attrCollection[options.attrNodeName] = attrs;
8688
+ return attrCollection;
8689
+ }
8690
+ return attrs;
8691
+ }
8606
8692
  }
8607
8693
 
8608
- function parseValue(val,shouldParse){
8609
- if(shouldParse && typeof val === "string"){
8610
- if(val.trim() === "" || isNaN(val)){
8611
- val = val === "true" ? true : val === "false" ? false : val;
8694
+ const getTraversalObj = function(xmlData, options) {
8695
+ xmlData = xmlData.replace(/\r\n?/g, "\n");
8696
+ options = buildOptions$3(options, defaultOptions$2, props$2);
8697
+ const xmlObj = new xmlNode('!xml');
8698
+ let currentNode = xmlObj;
8699
+ let textData = "";
8700
+
8701
+ //function match(xmlData){
8702
+ for(let i=0; i< xmlData.length; i++){
8703
+ const ch = xmlData[i];
8704
+ if(ch === '<'){
8705
+ if( xmlData[i+1] === '/') {//Closing Tag
8706
+ const closeIndex = findClosingIndex(xmlData, ">", i, "Closing Tag is not closed.");
8707
+ let tagName = xmlData.substring(i+2,closeIndex).trim();
8708
+
8709
+ if(options.ignoreNameSpace){
8710
+ const colonIndex = tagName.indexOf(":");
8711
+ if(colonIndex !== -1){
8712
+ tagName = tagName.substr(colonIndex+1);
8713
+ }
8714
+ }
8715
+
8716
+ /* if (currentNode.parent) {
8717
+ currentNode.parent.val = util.getValue(currentNode.parent.val) + '' + processTagValue2(tagName, textData , options);
8718
+ } */
8719
+ if(currentNode){
8720
+ if(currentNode.val){
8721
+ currentNode.val = util.getValue(currentNode.val) + '' + processTagValue(tagName, textData , options);
8722
+ }else {
8723
+ currentNode.val = processTagValue(tagName, textData , options);
8724
+ }
8725
+ }
8726
+
8727
+ if (options.stopNodes.length && options.stopNodes.includes(currentNode.tagname)) {
8728
+ currentNode.child = [];
8729
+ if (currentNode.attrsMap == undefined) { currentNode.attrsMap = {};}
8730
+ currentNode.val = xmlData.substr(currentNode.startIndex + 1, i - currentNode.startIndex - 1);
8731
+ }
8732
+ currentNode = currentNode.parent;
8733
+ textData = "";
8734
+ i = closeIndex;
8735
+ } else if( xmlData[i+1] === '?') {
8736
+ i = findClosingIndex(xmlData, "?>", i, "Pi Tag is not closed.");
8737
+ } else if(xmlData.substr(i + 1, 3) === '!--') {
8738
+ i = findClosingIndex(xmlData, "-->", i, "Comment is not closed.");
8739
+ } else if( xmlData.substr(i + 1, 2) === '!D') {
8740
+ const closeIndex = findClosingIndex(xmlData, ">", i, "DOCTYPE is not closed.");
8741
+ const tagExp = xmlData.substring(i, closeIndex);
8742
+ if(tagExp.indexOf("[") >= 0){
8743
+ i = xmlData.indexOf("]>", i) + 1;
8612
8744
  }else {
8613
- if(val.indexOf(".") !== -1){
8614
- val = Number.parseFloat(val);
8615
- }else {
8616
- val = Number.parseInt(val,10);
8617
- }
8745
+ i = closeIndex;
8746
+ }
8747
+ }else if(xmlData.substr(i + 1, 2) === '![') {
8748
+ const closeIndex = findClosingIndex(xmlData, "]]>", i, "CDATA is not closed.") - 2;
8749
+ const tagExp = xmlData.substring(i + 9,closeIndex);
8750
+
8751
+ //considerations
8752
+ //1. CDATA will always have parent node
8753
+ //2. A tag with CDATA is not a leaf node so it's value would be string type.
8754
+ if(textData){
8755
+ currentNode.val = util.getValue(currentNode.val) + '' + processTagValue(currentNode.tagname, textData , options);
8756
+ textData = "";
8618
8757
  }
8619
- return val;
8620
- }else {
8621
- if(util.isExist(val)) return val;
8622
- else return "";
8623
- }
8624
- }
8625
8758
 
8626
- //TODO: change regex to capture NS
8627
- //var attrsRegx = new RegExp("([\\w\\-\\.\\:]+)\\s*=\\s*(['\"])((.|\n)*?)\\2","gm");
8628
- var attrsRegx = new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])(.*?)\\3)?","g");
8629
- function buildAttributesMap(attrStr,options){
8630
- if( !options.ignoreAttributes && typeof attrStr === "string" ){
8631
- attrStr = attrStr.replace(/\r?\n/g, " ");
8632
- //attrStr = attrStr || attrStr.trim();
8633
-
8634
- var matches = util.getAllMatches(attrStr,attrsRegx);
8635
- var len = matches.length; //don't make it inline
8636
- var attrs = {};
8637
- for (var i = 0; i < len ; i++) {
8638
- var attrName = resolveNameSpace(matches[i][1],options);
8639
- if(attrName.length) {
8640
- if(matches[i][4] !== undefined){
8641
- if(options.trimValues){
8642
- matches[i][4] = matches[i][4].trim();
8643
- }
8644
- if(options.decodeHTMLchar){
8645
- matches[i][4] = he.decode(matches[i][4], {isAttributeValue : true});
8646
- }
8647
- attrs[options.attributeNamePrefix + attrName] = parseValue(matches[i][4],options.parseAttributeValue);
8648
- }else if(options.allowBooleanAttributes){
8649
- attrs[options.attributeNamePrefix + attrName] = true;
8650
- }
8651
-
8652
- }
8759
+ if (options.cdataTagName) {
8760
+ //add cdata node
8761
+ const childNode = new xmlNode(options.cdataTagName, currentNode, tagExp);
8762
+ currentNode.addChild(childNode);
8763
+ //for backtracking
8764
+ currentNode.val = util.getValue(currentNode.val) + options.cdataPositionChar;
8765
+ //add rest value to parent node
8766
+ if (tagExp) {
8767
+ childNode.val = tagExp;
8768
+ }
8769
+ } else {
8770
+ currentNode.val = (currentNode.val || '') + (tagExp || '');
8653
8771
  }
8654
- if(!Object.keys(attrs).length){
8655
- return;
8772
+
8773
+ i = closeIndex + 2;
8774
+ }else {//Opening tag
8775
+ const result = closingIndexForOpeningTag(xmlData, i+1);
8776
+ let tagExp = result.data;
8777
+ const closeIndex = result.index;
8778
+ const separatorIndex = tagExp.indexOf(" ");
8779
+ let tagName = tagExp;
8780
+ let shouldBuildAttributesMap = true;
8781
+ if(separatorIndex !== -1){
8782
+ tagName = tagExp.substr(0, separatorIndex).replace(/\s\s*$/, '');
8783
+ tagExp = tagExp.substr(separatorIndex + 1);
8656
8784
  }
8657
- if(options.attrNodeName){
8658
- var attrCollection = {};
8659
- attrCollection[options.attrNodeName] = attrs;
8660
- return attrCollection;
8785
+
8786
+ if(options.ignoreNameSpace){
8787
+ const colonIndex = tagName.indexOf(":");
8788
+ if(colonIndex !== -1){
8789
+ tagName = tagName.substr(colonIndex+1);
8790
+ shouldBuildAttributesMap = tagName !== result.data.substr(colonIndex + 1);
8791
+ }
8661
8792
  }
8662
- return attrs;
8663
- }
8664
- }
8665
8793
 
8666
- var convertToJson = function (node, options){
8667
- var jObj = {};
8794
+ //save text to parent node
8795
+ if (currentNode && textData) {
8796
+ if(currentNode.tagname !== '!xml'){
8797
+ currentNode.val = util.getValue(currentNode.val) + '' + processTagValue( currentNode.tagname, textData, options);
8798
+ }
8799
+ }
8668
8800
 
8669
- //traver through all the children
8670
- for (var index = 0; index < node.child.length; index++) {
8671
- var prop = node.child[index].tagname;
8672
- var obj = convertToJson(node.child[index],options);
8673
- if(typeof jObj[prop] !== "undefined"){
8674
- if(!Array.isArray(jObj[prop])){
8675
- var swap = jObj[prop];
8676
- jObj[prop] = [];
8677
- jObj[prop].push(swap);
8678
- }
8679
- jObj[prop].push(obj);
8680
- }else {
8681
- jObj[prop] = options.arrayMode ? [obj] : obj;
8801
+ if(tagExp.length > 0 && tagExp.lastIndexOf("/") === tagExp.length - 1){//selfClosing tag
8802
+
8803
+ if(tagName[tagName.length - 1] === "/"){ //remove trailing '/'
8804
+ tagName = tagName.substr(0, tagName.length - 1);
8805
+ tagExp = tagName;
8806
+ }else {
8807
+ tagExp = tagExp.substr(0, tagExp.length - 1);
8808
+ }
8809
+
8810
+ const childNode = new xmlNode(tagName, currentNode, '');
8811
+ if(tagName !== tagExp){
8812
+ childNode.attrsMap = buildAttributesMap(tagExp, options);
8813
+ }
8814
+ currentNode.addChild(childNode);
8815
+ }else {//opening tag
8816
+
8817
+ const childNode = new xmlNode( tagName, currentNode );
8818
+ if (options.stopNodes.length && options.stopNodes.includes(childNode.tagname)) {
8819
+ childNode.startIndex=closeIndex;
8820
+ }
8821
+ if(tagName !== tagExp && shouldBuildAttributesMap){
8822
+ childNode.attrsMap = buildAttributesMap(tagExp, options);
8823
+ }
8824
+ currentNode.addChild(childNode);
8825
+ currentNode = childNode;
8682
8826
  }
8683
- }
8684
- util.merge(jObj,node.attrsMap);
8685
- //add attrsMap as new children
8686
- if(util.isEmptyObject(jObj)){
8687
- return util.isExist(node.val)? node.val : "";
8827
+ textData = "";
8828
+ i = closeIndex;
8829
+ }
8688
8830
  }else {
8689
- if(util.isExist(node.val)){
8690
- if(!(typeof node.val === "string" && (node.val === "" || node.val === options.cdataPositionChar))){
8691
- jObj[options.textNodeName] = node.val;
8692
- }
8693
- }
8831
+ textData += xmlData[i];
8694
8832
  }
8695
- //add value
8696
- return jObj;
8833
+ }
8834
+ return xmlObj;
8697
8835
  };
8698
8836
 
8699
- var parse$1 = xml2json;
8700
- var getTraversalObj_1 = getTraversalObj;
8701
- var convertToJson_1 = convertToJson;
8837
+ function closingIndexForOpeningTag(data, i){
8838
+ let attrBoundary;
8839
+ let tagExp = "";
8840
+ for (let index = i; index < data.length; index++) {
8841
+ let ch = data[index];
8842
+ if (attrBoundary) {
8843
+ if (ch === attrBoundary) attrBoundary = "";//reset
8844
+ } else if (ch === '"' || ch === "'") {
8845
+ attrBoundary = ch;
8846
+ } else if (ch === '>') {
8847
+ return {
8848
+ data: tagExp,
8849
+ index: index
8850
+ }
8851
+ } else if (ch === '\t') {
8852
+ ch = " ";
8853
+ }
8854
+ tagExp += ch;
8855
+ }
8856
+ }
8702
8857
 
8703
- var x2j = {
8704
- parse: parse$1,
8705
- getTraversalObj: getTraversalObj_1,
8706
- convertToJson: convertToJson_1
8858
+ function findClosingIndex(xmlData, str, i, errMsg){
8859
+ const closingIndex = xmlData.indexOf(str, i);
8860
+ if(closingIndex === -1){
8861
+ throw new Error(errMsg)
8862
+ }else {
8863
+ return closingIndex + str.length - 1;
8864
+ }
8865
+ }
8866
+
8867
+ var getTraversalObj_1 = getTraversalObj;
8868
+
8869
+ var xmlstr2xmlnode = {
8870
+ defaultOptions: defaultOptions_1,
8871
+ props: props_1,
8872
+ getTraversalObj: getTraversalObj_1
8873
+ };
8874
+
8875
+ const defaultOptions$1 = {
8876
+ allowBooleanAttributes: false, //A tag can have attributes without any value
8707
8877
  };
8708
8878
 
8709
- var parse = x2j.parse;
8879
+ const props$1 = ['allowBooleanAttributes'];
8880
+
8881
+ //const tagsPattern = new RegExp("<\\/?([\\w:\\-_\.]+)\\s*\/?>","g");
8882
+ var validate = function (xmlData, options) {
8883
+ options = util.buildOptions(options, defaultOptions$1, props$1);
8884
+
8885
+ //xmlData = xmlData.replace(/(\r\n|\n|\r)/gm,"");//make it single line
8886
+ //xmlData = xmlData.replace(/(^\s*<\?xml.*?\?>)/g,"");//Remove XML starting tag
8887
+ //xmlData = xmlData.replace(/(<!DOCTYPE[\s\w\"\.\/\-\:]+(\[.*\])*\s*>)/g,"");//Remove DOCTYPE
8888
+ const tags = [];
8889
+ let tagFound = false;
8890
+
8891
+ //indicates that the root tag has been closed (aka. depth 0 has been reached)
8892
+ let reachedRoot = false;
8893
+
8894
+ if (xmlData[0] === '\ufeff') {
8895
+ // check for byte order mark (BOM)
8896
+ xmlData = xmlData.substr(1);
8897
+ }
8898
+
8899
+ for (let i = 0; i < xmlData.length; i++) {
8900
+
8901
+ if (xmlData[i] === '<' && xmlData[i+1] === '?') {
8902
+ i+=2;
8903
+ i = readPI(xmlData,i);
8904
+ if (i.err) return i;
8905
+ }else if (xmlData[i] === '<') {
8906
+ //starting of tag
8907
+ //read until you reach to '>' avoiding any '>' in attribute value
8908
+ let tagStartPos = i;
8909
+ i++;
8910
+
8911
+ if (xmlData[i] === '!') {
8912
+ i = readCommentAndCDATA(xmlData, i);
8913
+ continue;
8914
+ } else {
8915
+ let closingTag = false;
8916
+ if (xmlData[i] === '/') {
8917
+ //closing tag
8918
+ closingTag = true;
8919
+ i++;
8920
+ }
8921
+ //read tagname
8922
+ let tagName = '';
8923
+ for (; i < xmlData.length &&
8924
+ xmlData[i] !== '>' &&
8925
+ xmlData[i] !== ' ' &&
8926
+ xmlData[i] !== '\t' &&
8927
+ xmlData[i] !== '\n' &&
8928
+ xmlData[i] !== '\r'; i++
8929
+ ) {
8930
+ tagName += xmlData[i];
8931
+ }
8932
+ tagName = tagName.trim();
8933
+ //console.log(tagName);
8934
+
8935
+ if (tagName[tagName.length - 1] === '/') {
8936
+ //self closing tag without attributes
8937
+ tagName = tagName.substring(0, tagName.length - 1);
8938
+ //continue;
8939
+ i--;
8940
+ }
8941
+ if (!validateTagName(tagName)) {
8942
+ let msg;
8943
+ if (tagName.trim().length === 0) {
8944
+ msg = "Invalid space after '<'.";
8945
+ } else {
8946
+ msg = "Tag '"+tagName+"' is an invalid name.";
8947
+ }
8948
+ return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));
8949
+ }
8950
+
8951
+ const result = readAttributeStr(xmlData, i);
8952
+ if (result === false) {
8953
+ return getErrorObject('InvalidAttr', "Attributes for '"+tagName+"' have open quote.", getLineNumberForPosition(xmlData, i));
8954
+ }
8955
+ let attrStr = result.value;
8956
+ i = result.index;
8957
+
8958
+ if (attrStr[attrStr.length - 1] === '/') {
8959
+ //self closing tag
8960
+ const attrStrStart = i - attrStr.length;
8961
+ attrStr = attrStr.substring(0, attrStr.length - 1);
8962
+ const isValid = validateAttributeString(attrStr, options);
8963
+ if (isValid === true) {
8964
+ tagFound = true;
8965
+ //continue; //text may presents after self closing tag
8966
+ } else {
8967
+ //the result from the nested function returns the position of the error within the attribute
8968
+ //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute
8969
+ //this gives us the absolute index in the entire xml, which we can use to find the line at last
8970
+ return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));
8971
+ }
8972
+ } else if (closingTag) {
8973
+ if (!result.tagClosed) {
8974
+ return getErrorObject('InvalidTag', "Closing tag '"+tagName+"' doesn't have proper closing.", getLineNumberForPosition(xmlData, i));
8975
+ } else if (attrStr.trim().length > 0) {
8976
+ return getErrorObject('InvalidTag', "Closing tag '"+tagName+"' can't have attributes or invalid starting.", getLineNumberForPosition(xmlData, tagStartPos));
8977
+ } else {
8978
+ const otg = tags.pop();
8979
+ if (tagName !== otg.tagName) {
8980
+ let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);
8981
+ return getErrorObject('InvalidTag',
8982
+ "Expected closing tag '"+otg.tagName+"' (opened in line "+openPos.line+", col "+openPos.col+") instead of closing tag '"+tagName+"'.",
8983
+ getLineNumberForPosition(xmlData, tagStartPos));
8984
+ }
8985
+
8986
+ //when there are no more tags, we reached the root level.
8987
+ if (tags.length == 0) {
8988
+ reachedRoot = true;
8989
+ }
8990
+ }
8991
+ } else {
8992
+ const isValid = validateAttributeString(attrStr, options);
8993
+ if (isValid !== true) {
8994
+ //the result from the nested function returns the position of the error within the attribute
8995
+ //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute
8996
+ //this gives us the absolute index in the entire xml, which we can use to find the line at last
8997
+ return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));
8998
+ }
8999
+
9000
+ //if the root level has been reached before ...
9001
+ if (reachedRoot === true) {
9002
+ return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));
9003
+ } else {
9004
+ tags.push({tagName, tagStartPos});
9005
+ }
9006
+ tagFound = true;
9007
+ }
9008
+
9009
+ //skip tag text value
9010
+ //It may include comments and CDATA value
9011
+ for (i++; i < xmlData.length; i++) {
9012
+ if (xmlData[i] === '<') {
9013
+ if (xmlData[i + 1] === '!') {
9014
+ //comment or CADATA
9015
+ i++;
9016
+ i = readCommentAndCDATA(xmlData, i);
9017
+ continue;
9018
+ } else if (xmlData[i+1] === '?') {
9019
+ i = readPI(xmlData, ++i);
9020
+ if (i.err) return i;
9021
+ } else {
9022
+ break;
9023
+ }
9024
+ } else if (xmlData[i] === '&') {
9025
+ const afterAmp = validateAmpersand(xmlData, i);
9026
+ if (afterAmp == -1)
9027
+ return getErrorObject('InvalidChar', "char '&' is not expected.", getLineNumberForPosition(xmlData, i));
9028
+ i = afterAmp;
9029
+ }
9030
+ } //end of reading tag text value
9031
+ if (xmlData[i] === '<') {
9032
+ i--;
9033
+ }
9034
+ }
9035
+ } else {
9036
+ if (xmlData[i] === ' ' || xmlData[i] === '\t' || xmlData[i] === '\n' || xmlData[i] === '\r') {
9037
+ continue;
9038
+ }
9039
+ return getErrorObject('InvalidChar', "char '"+xmlData[i]+"' is not expected.", getLineNumberForPosition(xmlData, i));
9040
+ }
9041
+ }
9042
+
9043
+ if (!tagFound) {
9044
+ return getErrorObject('InvalidXml', 'Start tag expected.', 1);
9045
+ }else if (tags.length == 1) {
9046
+ return getErrorObject('InvalidTag', "Unclosed tag '"+tags[0].tagName+"'.", getLineNumberForPosition(xmlData, tags[0].tagStartPos));
9047
+ }else if (tags.length > 0) {
9048
+ return getErrorObject('InvalidXml', "Invalid '"+
9049
+ JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\r?\n/g, '')+
9050
+ "' found.", {line: 1, col: 1});
9051
+ }
9052
+
9053
+ return true;
9054
+ };
9055
+
9056
+ /**
9057
+ * Read Processing insstructions and skip
9058
+ * @param {*} xmlData
9059
+ * @param {*} i
9060
+ */
9061
+ function readPI(xmlData, i) {
9062
+ const start = i;
9063
+ for (; i < xmlData.length; i++) {
9064
+ if (xmlData[i] == '?' || xmlData[i] == ' ') {
9065
+ //tagname
9066
+ const tagname = xmlData.substr(start, i - start);
9067
+ if (i > 5 && tagname === 'xml') {
9068
+ return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));
9069
+ } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {
9070
+ //check if valid attribut string
9071
+ i++;
9072
+ break;
9073
+ } else {
9074
+ continue;
9075
+ }
9076
+ }
9077
+ }
9078
+ return i;
9079
+ }
9080
+
9081
+ function readCommentAndCDATA(xmlData, i) {
9082
+ if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {
9083
+ //comment
9084
+ for (i += 3; i < xmlData.length; i++) {
9085
+ if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {
9086
+ i += 2;
9087
+ break;
9088
+ }
9089
+ }
9090
+ } else if (
9091
+ xmlData.length > i + 8 &&
9092
+ xmlData[i + 1] === 'D' &&
9093
+ xmlData[i + 2] === 'O' &&
9094
+ xmlData[i + 3] === 'C' &&
9095
+ xmlData[i + 4] === 'T' &&
9096
+ xmlData[i + 5] === 'Y' &&
9097
+ xmlData[i + 6] === 'P' &&
9098
+ xmlData[i + 7] === 'E'
9099
+ ) {
9100
+ let angleBracketsCount = 1;
9101
+ for (i += 8; i < xmlData.length; i++) {
9102
+ if (xmlData[i] === '<') {
9103
+ angleBracketsCount++;
9104
+ } else if (xmlData[i] === '>') {
9105
+ angleBracketsCount--;
9106
+ if (angleBracketsCount === 0) {
9107
+ break;
9108
+ }
9109
+ }
9110
+ }
9111
+ } else if (
9112
+ xmlData.length > i + 9 &&
9113
+ xmlData[i + 1] === '[' &&
9114
+ xmlData[i + 2] === 'C' &&
9115
+ xmlData[i + 3] === 'D' &&
9116
+ xmlData[i + 4] === 'A' &&
9117
+ xmlData[i + 5] === 'T' &&
9118
+ xmlData[i + 6] === 'A' &&
9119
+ xmlData[i + 7] === '['
9120
+ ) {
9121
+ for (i += 8; i < xmlData.length; i++) {
9122
+ if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {
9123
+ i += 2;
9124
+ break;
9125
+ }
9126
+ }
9127
+ }
9128
+
9129
+ return i;
9130
+ }
9131
+
9132
+ const doubleQuote = '"';
9133
+ const singleQuote = "'";
9134
+
9135
+ /**
9136
+ * Keep reading xmlData until '<' is found outside the attribute value.
9137
+ * @param {string} xmlData
9138
+ * @param {number} i
9139
+ */
9140
+ function readAttributeStr(xmlData, i) {
9141
+ let attrStr = '';
9142
+ let startChar = '';
9143
+ let tagClosed = false;
9144
+ for (; i < xmlData.length; i++) {
9145
+ if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {
9146
+ if (startChar === '') {
9147
+ startChar = xmlData[i];
9148
+ } else if (startChar !== xmlData[i]) ; else {
9149
+ startChar = '';
9150
+ }
9151
+ } else if (xmlData[i] === '>') {
9152
+ if (startChar === '') {
9153
+ tagClosed = true;
9154
+ break;
9155
+ }
9156
+ }
9157
+ attrStr += xmlData[i];
9158
+ }
9159
+ if (startChar !== '') {
9160
+ return false;
9161
+ }
9162
+
9163
+ return {
9164
+ value: attrStr,
9165
+ index: i,
9166
+ tagClosed: tagClosed
9167
+ };
9168
+ }
9169
+
9170
+ /**
9171
+ * Select all the attributes whether valid or invalid.
9172
+ */
9173
+ const validAttrStrRegxp = new RegExp('(\\s*)([^\\s=]+)(\\s*=)?(\\s*([\'"])(([\\s\\S])*?)\\5)?', 'g');
9174
+
9175
+ //attr, ="sd", a="amit's", a="sd"b="saf", ab cd=""
9176
+
9177
+ function validateAttributeString(attrStr, options) {
9178
+ //console.log("start:"+attrStr+":end");
9179
+
9180
+ //if(attrStr.trim().length === 0) return true; //empty string
9181
+
9182
+ const matches = util.getAllMatches(attrStr, validAttrStrRegxp);
9183
+ const attrNames = {};
9184
+
9185
+ for (let i = 0; i < matches.length; i++) {
9186
+ if (matches[i][1].length === 0) {
9187
+ //nospace before attribute name: a="sd"b="saf"
9188
+ return getErrorObject('InvalidAttr', "Attribute '"+matches[i][2]+"' has no space in starting.", getPositionFromMatch(matches[i]))
9189
+ } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {
9190
+ //independent attribute: ab
9191
+ return getErrorObject('InvalidAttr', "boolean attribute '"+matches[i][2]+"' is not allowed.", getPositionFromMatch(matches[i]));
9192
+ }
9193
+ /* else if(matches[i][6] === undefined){//attribute without value: ab=
9194
+ return { err: { code:"InvalidAttr",msg:"attribute " + matches[i][2] + " has no value assigned."}};
9195
+ } */
9196
+ const attrName = matches[i][2];
9197
+ if (!validateAttrName(attrName)) {
9198
+ return getErrorObject('InvalidAttr', "Attribute '"+attrName+"' is an invalid name.", getPositionFromMatch(matches[i]));
9199
+ }
9200
+ if (!attrNames.hasOwnProperty(attrName)) {
9201
+ //check for duplicate attribute.
9202
+ attrNames[attrName] = 1;
9203
+ } else {
9204
+ return getErrorObject('InvalidAttr', "Attribute '"+attrName+"' is repeated.", getPositionFromMatch(matches[i]));
9205
+ }
9206
+ }
9207
+
9208
+ return true;
9209
+ }
9210
+
9211
+ function validateNumberAmpersand(xmlData, i) {
9212
+ let re = /\d/;
9213
+ if (xmlData[i] === 'x') {
9214
+ i++;
9215
+ re = /[\da-fA-F]/;
9216
+ }
9217
+ for (; i < xmlData.length; i++) {
9218
+ if (xmlData[i] === ';')
9219
+ return i;
9220
+ if (!xmlData[i].match(re))
9221
+ break;
9222
+ }
9223
+ return -1;
9224
+ }
9225
+
9226
+ function validateAmpersand(xmlData, i) {
9227
+ // https://www.w3.org/TR/xml/#dt-charref
9228
+ i++;
9229
+ if (xmlData[i] === ';')
9230
+ return -1;
9231
+ if (xmlData[i] === '#') {
9232
+ i++;
9233
+ return validateNumberAmpersand(xmlData, i);
9234
+ }
9235
+ let count = 0;
9236
+ for (; i < xmlData.length; i++, count++) {
9237
+ if (xmlData[i].match(/\w/) && count < 20)
9238
+ continue;
9239
+ if (xmlData[i] === ';')
9240
+ break;
9241
+ return -1;
9242
+ }
9243
+ return i;
9244
+ }
9245
+
9246
+ function getErrorObject(code, message, lineNumber) {
9247
+ return {
9248
+ err: {
9249
+ code: code,
9250
+ msg: message,
9251
+ line: lineNumber.line || lineNumber,
9252
+ col: lineNumber.col,
9253
+ },
9254
+ };
9255
+ }
9256
+
9257
+ function validateAttrName(attrName) {
9258
+ return util.isName(attrName);
9259
+ }
9260
+
9261
+ // const startsWithXML = /^xml/i;
9262
+
9263
+ function validateTagName(tagname) {
9264
+ return util.isName(tagname) /* && !tagname.match(startsWithXML) */;
9265
+ }
9266
+
9267
+ //this function returns the line number for the character at the given index
9268
+ function getLineNumberForPosition(xmlData, index) {
9269
+ const lines = xmlData.substring(0, index).split(/\r?\n/);
9270
+ return {
9271
+ line: lines.length,
9272
+
9273
+ // column number is last line's length + 1, because column numbering starts at 1:
9274
+ col: lines[lines.length - 1].length + 1
9275
+ };
9276
+ }
9277
+
9278
+ //this function returns the position of the first character of match within attrStr
9279
+ function getPositionFromMatch(match) {
9280
+ return match.startIndex + match[1].length;
9281
+ }
9282
+
9283
+ var validator = {
9284
+ validate: validate
9285
+ };
9286
+
9287
+ const char = function(a) {
9288
+ return String.fromCharCode(a);
9289
+ };
9290
+
9291
+ const chars = {
9292
+ nilChar: char(176),
9293
+ missingChar: char(201),
9294
+ nilPremitive: char(175),
9295
+ missingPremitive: char(200),
9296
+
9297
+ emptyChar: char(178),
9298
+ emptyValue: char(177), //empty Premitive
9299
+
9300
+ boundryChar: char(179),
9301
+
9302
+ objStart: char(198),
9303
+ arrStart: char(204),
9304
+ arrayEnd: char(185),
9305
+ };
9306
+
9307
+ const charsArr = [
9308
+ chars.nilChar,
9309
+ chars.nilPremitive,
9310
+ chars.missingChar,
9311
+ chars.missingPremitive,
9312
+ chars.boundryChar,
9313
+ chars.emptyChar,
9314
+ chars.emptyValue,
9315
+ chars.arrayEnd,
9316
+ chars.objStart,
9317
+ chars.arrStart,
9318
+ ];
9319
+
9320
+ const _e = function(node, e_schema, options) {
9321
+ if (typeof e_schema === 'string') {
9322
+ //premitive
9323
+ if (node && node[0] && node[0].val !== undefined) {
9324
+ return getValue(node[0].val);
9325
+ } else {
9326
+ return getValue(node);
9327
+ }
9328
+ } else {
9329
+ const hasValidData = hasData(node);
9330
+ if (hasValidData === true) {
9331
+ let str = '';
9332
+ if (Array.isArray(e_schema)) {
9333
+ //attributes can't be repeated. hence check in children tags only
9334
+ str += chars.arrStart;
9335
+ const itemSchema = e_schema[0];
9336
+ //const itemSchemaType = itemSchema;
9337
+ const arr_len = node.length;
9338
+
9339
+ if (typeof itemSchema === 'string') {
9340
+ for (let arr_i = 0; arr_i < arr_len; arr_i++) {
9341
+ const r = getValue(node[arr_i].val);
9342
+ str = processValue(str, r);
9343
+ }
9344
+ } else {
9345
+ for (let arr_i = 0; arr_i < arr_len; arr_i++) {
9346
+ const r = _e(node[arr_i], itemSchema, options);
9347
+ str = processValue(str, r);
9348
+ }
9349
+ }
9350
+ str += chars.arrayEnd; //indicates that next item is not array item
9351
+ } else {
9352
+ //object
9353
+ str += chars.objStart;
9354
+ const keys = Object.keys(e_schema);
9355
+ if (Array.isArray(node)) {
9356
+ node = node[0];
9357
+ }
9358
+ for (let i in keys) {
9359
+ const key = keys[i];
9360
+ //a property defined in schema can be present either in attrsMap or children tags
9361
+ //options.textNodeName will not present in both maps, take it's value from val
9362
+ //options.attrNodeName will be present in attrsMap
9363
+ let r;
9364
+ if (!options.ignoreAttributes && node.attrsMap && node.attrsMap[key]) {
9365
+ r = _e(node.attrsMap[key], e_schema[key], options);
9366
+ } else if (key === options.textNodeName) {
9367
+ r = _e(node.val, e_schema[key], options);
9368
+ } else {
9369
+ r = _e(node.child[key], e_schema[key], options);
9370
+ }
9371
+ str = processValue(str, r);
9372
+ }
9373
+ }
9374
+ return str;
9375
+ } else {
9376
+ return hasValidData;
9377
+ }
9378
+ }
9379
+ };
9380
+
9381
+ const getValue = function(a /*, type*/) {
9382
+ switch (a) {
9383
+ case undefined:
9384
+ return chars.missingPremitive;
9385
+ case null:
9386
+ return chars.nilPremitive;
9387
+ case '':
9388
+ return chars.emptyValue;
9389
+ default:
9390
+ return a;
9391
+ }
9392
+ };
9393
+
9394
+ const processValue = function(str, r) {
9395
+ if (!isAppChar(r[0]) && !isAppChar(str[str.length - 1])) {
9396
+ str += chars.boundryChar;
9397
+ }
9398
+ return str + r;
9399
+ };
9400
+
9401
+ const isAppChar = function(ch) {
9402
+ return charsArr.indexOf(ch) !== -1;
9403
+ };
9404
+
9405
+ function hasData(jObj) {
9406
+ if (jObj === undefined) {
9407
+ return chars.missingChar;
9408
+ } else if (jObj === null) {
9409
+ return chars.nilChar;
9410
+ } else if (
9411
+ jObj.child &&
9412
+ Object.keys(jObj.child).length === 0 &&
9413
+ (!jObj.attrsMap || Object.keys(jObj.attrsMap).length === 0)
9414
+ ) {
9415
+ return chars.emptyChar;
9416
+ } else {
9417
+ return true;
9418
+ }
9419
+ }
9420
+
9421
+
9422
+ const buildOptions$2 = util.buildOptions;
9423
+
9424
+ const convert2nimn = function(node, e_schema, options) {
9425
+ options = buildOptions$2(options, xmlstr2xmlnode.defaultOptions, xmlstr2xmlnode.props);
9426
+ return _e(node, e_schema, options);
9427
+ };
9428
+
9429
+ var convert2nimn_1 = convert2nimn;
9430
+
9431
+ var nimndata = {
9432
+ convert2nimn: convert2nimn_1
9433
+ };
9434
+
9435
+ const buildOptions$1 = util.buildOptions;
9436
+
9437
+
9438
+ //TODO: do it later
9439
+ const convertToJsonString = function(node, options) {
9440
+ options = buildOptions$1(options, xmlstr2xmlnode.defaultOptions, xmlstr2xmlnode.props);
9441
+
9442
+ options.indentBy = options.indentBy || '';
9443
+ return _cToJsonStr(node, options);
9444
+ };
9445
+
9446
+ const _cToJsonStr = function(node, options, level) {
9447
+ let jObj = '{';
9448
+
9449
+ //traver through all the children
9450
+ const keys = Object.keys(node.child);
9451
+
9452
+ for (let index = 0; index < keys.length; index++) {
9453
+ const tagname = keys[index];
9454
+ if (node.child[tagname] && node.child[tagname].length > 1) {
9455
+ jObj += '"' + tagname + '" : [ ';
9456
+ for (let tag in node.child[tagname]) {
9457
+ jObj += _cToJsonStr(node.child[tagname][tag], options) + ' , ';
9458
+ }
9459
+ jObj = jObj.substr(0, jObj.length - 1) + ' ] '; //remove extra comma in last
9460
+ } else {
9461
+ jObj += '"' + tagname + '" : ' + _cToJsonStr(node.child[tagname][0], options) + ' ,';
9462
+ }
9463
+ }
9464
+ util.merge(jObj, node.attrsMap);
9465
+ //add attrsMap as new children
9466
+ if (util.isEmptyObject(jObj)) {
9467
+ return util.isExist(node.val) ? node.val : '';
9468
+ } else {
9469
+ if (util.isExist(node.val)) {
9470
+ if (!(typeof node.val === 'string' && (node.val === '' || node.val === options.cdataPositionChar))) {
9471
+ jObj += '"' + options.textNodeName + '" : ' + stringval(node.val);
9472
+ }
9473
+ }
9474
+ }
9475
+ //add value
9476
+ if (jObj[jObj.length - 1] === ',') {
9477
+ jObj = jObj.substr(0, jObj.length - 2);
9478
+ }
9479
+ return jObj + '}';
9480
+ };
9481
+
9482
+ function stringval(v) {
9483
+ if (v === true || v === false || !isNaN(v)) {
9484
+ return v;
9485
+ } else {
9486
+ return '"' + v + '"';
9487
+ }
9488
+ }
9489
+
9490
+ var convertToJsonString_1 = convertToJsonString;
9491
+
9492
+ var node2json_str = {
9493
+ convertToJsonString: convertToJsonString_1
9494
+ };
9495
+
9496
+ //parse Empty Node as self closing node
9497
+ const buildOptions = util.buildOptions;
9498
+
9499
+ const defaultOptions = {
9500
+ attributeNamePrefix: '@_',
9501
+ attrNodeName: false,
9502
+ textNodeName: '#text',
9503
+ ignoreAttributes: true,
9504
+ cdataTagName: false,
9505
+ cdataPositionChar: '\\c',
9506
+ format: false,
9507
+ indentBy: ' ',
9508
+ supressEmptyNode: false,
9509
+ tagValueProcessor: function(a) {
9510
+ return a;
9511
+ },
9512
+ attrValueProcessor: function(a) {
9513
+ return a;
9514
+ },
9515
+ };
9516
+
9517
+ const props = [
9518
+ 'attributeNamePrefix',
9519
+ 'attrNodeName',
9520
+ 'textNodeName',
9521
+ 'ignoreAttributes',
9522
+ 'cdataTagName',
9523
+ 'cdataPositionChar',
9524
+ 'format',
9525
+ 'indentBy',
9526
+ 'supressEmptyNode',
9527
+ 'tagValueProcessor',
9528
+ 'attrValueProcessor',
9529
+ 'rootNodeName', //when array as root
9530
+ ];
9531
+
9532
+ function Parser(options) {
9533
+ this.options = buildOptions(options, defaultOptions, props);
9534
+ if (this.options.ignoreAttributes || this.options.attrNodeName) {
9535
+ this.isAttribute = function(/*a*/) {
9536
+ return false;
9537
+ };
9538
+ } else {
9539
+ this.attrPrefixLen = this.options.attributeNamePrefix.length;
9540
+ this.isAttribute = isAttribute;
9541
+ }
9542
+ if (this.options.cdataTagName) {
9543
+ this.isCDATA = isCDATA;
9544
+ } else {
9545
+ this.isCDATA = function(/*a*/) {
9546
+ return false;
9547
+ };
9548
+ }
9549
+ this.replaceCDATAstr = replaceCDATAstr;
9550
+ this.replaceCDATAarr = replaceCDATAarr;
9551
+
9552
+ this.processTextOrObjNode = processTextOrObjNode;
9553
+
9554
+ if (this.options.format) {
9555
+ this.indentate = indentate;
9556
+ this.tagEndChar = '>\n';
9557
+ this.newLine = '\n';
9558
+ } else {
9559
+ this.indentate = function() {
9560
+ return '';
9561
+ };
9562
+ this.tagEndChar = '>';
9563
+ this.newLine = '';
9564
+ }
9565
+
9566
+ if (this.options.supressEmptyNode) {
9567
+ this.buildTextNode = buildEmptyTextNode;
9568
+ this.buildObjNode = buildEmptyObjNode;
9569
+ } else {
9570
+ this.buildTextNode = buildTextValNode;
9571
+ this.buildObjNode = buildObjectNode;
9572
+ }
9573
+
9574
+ this.buildTextValNode = buildTextValNode;
9575
+ this.buildObjectNode = buildObjectNode;
9576
+ }
9577
+
9578
+ Parser.prototype.parse = function(jObj) {
9579
+ if(Array.isArray(jObj) && this.options.rootNodeName && this.options.rootNodeName.length > 1){
9580
+ jObj = {
9581
+ [this.options.rootNodeName] : jObj
9582
+ };
9583
+ }
9584
+ return this.j2x(jObj, 0).val;
9585
+ };
9586
+
9587
+ Parser.prototype.j2x = function(jObj, level) {
9588
+ let attrStr = '';
9589
+ let val = '';
9590
+ for (let key in jObj) {
9591
+ if (typeof jObj[key] === 'undefined') ; else if (jObj[key] === null) {
9592
+ val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;
9593
+ } else if (jObj[key] instanceof Date) {
9594
+ val += this.buildTextNode(jObj[key], key, '', level);
9595
+ } else if (typeof jObj[key] !== 'object') {
9596
+ //premitive type
9597
+ const attr = this.isAttribute(key);
9598
+ if (attr) {
9599
+ attrStr += ' ' + attr + '="' + this.options.attrValueProcessor('' + jObj[key]) + '"';
9600
+ } else if (this.isCDATA(key)) {
9601
+ if (jObj[this.options.textNodeName]) {
9602
+ val += this.replaceCDATAstr(jObj[this.options.textNodeName], jObj[key]);
9603
+ } else {
9604
+ val += this.replaceCDATAstr('', jObj[key]);
9605
+ }
9606
+ } else {
9607
+ //tag value
9608
+ if (key === this.options.textNodeName) {
9609
+ if (jObj[this.options.cdataTagName]) ; else {
9610
+ val += this.options.tagValueProcessor('' + jObj[key]);
9611
+ }
9612
+ } else {
9613
+ val += this.buildTextNode(jObj[key], key, '', level);
9614
+ }
9615
+ }
9616
+ } else if (Array.isArray(jObj[key])) {
9617
+ //repeated nodes
9618
+ if (this.isCDATA(key)) {
9619
+ val += this.indentate(level);
9620
+ if (jObj[this.options.textNodeName]) {
9621
+ val += this.replaceCDATAarr(jObj[this.options.textNodeName], jObj[key]);
9622
+ } else {
9623
+ val += this.replaceCDATAarr('', jObj[key]);
9624
+ }
9625
+ } else {
9626
+ //nested nodes
9627
+ const arrLen = jObj[key].length;
9628
+ for (let j = 0; j < arrLen; j++) {
9629
+ const item = jObj[key][j];
9630
+ if (typeof item === 'undefined') ; else if (item === null) {
9631
+ val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;
9632
+ } else if (typeof item === 'object') {
9633
+ val += this.processTextOrObjNode(item, key, level);
9634
+ } else {
9635
+ val += this.buildTextNode(item, key, '', level);
9636
+ }
9637
+ }
9638
+ }
9639
+ } else {
9640
+ //nested node
9641
+ if (this.options.attrNodeName && key === this.options.attrNodeName) {
9642
+ const Ks = Object.keys(jObj[key]);
9643
+ const L = Ks.length;
9644
+ for (let j = 0; j < L; j++) {
9645
+ attrStr += ' ' + Ks[j] + '="' + this.options.attrValueProcessor('' + jObj[key][Ks[j]]) + '"';
9646
+ }
9647
+ } else {
9648
+ val += this.processTextOrObjNode(jObj[key], key, level);
9649
+ }
9650
+ }
9651
+ }
9652
+ return {attrStr: attrStr, val: val};
9653
+ };
9654
+
9655
+ function processTextOrObjNode (object, key, level) {
9656
+ const result = this.j2x(object, level + 1);
9657
+ if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {
9658
+ return this.buildTextNode(result.val, key, result.attrStr, level);
9659
+ } else {
9660
+ return this.buildObjNode(result.val, key, result.attrStr, level);
9661
+ }
9662
+ }
9663
+
9664
+ function replaceCDATAstr(str, cdata) {
9665
+ str = this.options.tagValueProcessor('' + str);
9666
+ if (this.options.cdataPositionChar === '' || str === '') {
9667
+ return str + '<![CDATA[' + cdata + ']]' + this.tagEndChar;
9668
+ } else {
9669
+ return str.replace(this.options.cdataPositionChar, '<![CDATA[' + cdata + ']]' + this.tagEndChar);
9670
+ }
9671
+ }
9672
+
9673
+ function replaceCDATAarr(str, cdata) {
9674
+ str = this.options.tagValueProcessor('' + str);
9675
+ if (this.options.cdataPositionChar === '' || str === '') {
9676
+ return str + '<![CDATA[' + cdata.join(']]><![CDATA[') + ']]' + this.tagEndChar;
9677
+ } else {
9678
+ for (let v in cdata) {
9679
+ str = str.replace(this.options.cdataPositionChar, '<![CDATA[' + cdata[v] + ']]>');
9680
+ }
9681
+ return str + this.newLine;
9682
+ }
9683
+ }
9684
+
9685
+ function buildObjectNode(val, key, attrStr, level) {
9686
+ if (attrStr && val.indexOf('<') === -1) {
9687
+ return (
9688
+ this.indentate(level) +
9689
+ '<' +
9690
+ key +
9691
+ attrStr +
9692
+ '>' +
9693
+ val +
9694
+ //+ this.newLine
9695
+ // + this.indentate(level)
9696
+ '</' +
9697
+ key +
9698
+ this.tagEndChar
9699
+ );
9700
+ } else {
9701
+ return (
9702
+ this.indentate(level) +
9703
+ '<' +
9704
+ key +
9705
+ attrStr +
9706
+ this.tagEndChar +
9707
+ val +
9708
+ //+ this.newLine
9709
+ this.indentate(level) +
9710
+ '</' +
9711
+ key +
9712
+ this.tagEndChar
9713
+ );
9714
+ }
9715
+ }
9716
+
9717
+ function buildEmptyObjNode(val, key, attrStr, level) {
9718
+ if (val !== '') {
9719
+ return this.buildObjectNode(val, key, attrStr, level);
9720
+ } else {
9721
+ return this.indentate(level) + '<' + key + attrStr + '/' + this.tagEndChar;
9722
+ //+ this.newLine
9723
+ }
9724
+ }
9725
+
9726
+ function buildTextValNode(val, key, attrStr, level) {
9727
+ return (
9728
+ this.indentate(level) +
9729
+ '<' +
9730
+ key +
9731
+ attrStr +
9732
+ '>' +
9733
+ this.options.tagValueProcessor(val) +
9734
+ '</' +
9735
+ key +
9736
+ this.tagEndChar
9737
+ );
9738
+ }
9739
+
9740
+ function buildEmptyTextNode(val, key, attrStr, level) {
9741
+ if (val !== '') {
9742
+ return this.buildTextValNode(val, key, attrStr, level);
9743
+ } else {
9744
+ return this.indentate(level) + '<' + key + attrStr + '/' + this.tagEndChar;
9745
+ }
9746
+ }
9747
+
9748
+ function indentate(level) {
9749
+ return this.options.indentBy.repeat(level);
9750
+ }
9751
+
9752
+ function isAttribute(name /*, options*/) {
9753
+ if (name.startsWith(this.options.attributeNamePrefix)) {
9754
+ return name.substr(this.attrPrefixLen);
9755
+ } else {
9756
+ return false;
9757
+ }
9758
+ }
9759
+
9760
+ function isCDATA(name) {
9761
+ return name === this.options.cdataTagName;
9762
+ }
9763
+
9764
+ //formatting
9765
+ //indentation
9766
+ //\n after each closing or self closing tag
9767
+
9768
+ var json2xml = Parser;
9769
+
9770
+ var parser = createCommonjsModule(function (module, exports) {
9771
+
9772
+
9773
+
9774
+ const x2xmlnode = xmlstr2xmlnode;
9775
+ const buildOptions = util.buildOptions;
9776
+
9777
+
9778
+ exports.parse = function(xmlData, givenOptions = {}, validationOption) {
9779
+ if( validationOption){
9780
+ if(validationOption === true) validationOption = {};
9781
+
9782
+ const result = validator.validate(xmlData, validationOption);
9783
+ if (result !== true) {
9784
+ throw Error( result.err.msg)
9785
+ }
9786
+ }
9787
+ if(givenOptions.parseTrueNumberOnly
9788
+ && givenOptions.parseNodeValue !== false
9789
+ && !givenOptions.numParseOptions){
9790
+
9791
+ givenOptions.numParseOptions = {
9792
+ leadingZeros: false,
9793
+ };
9794
+ }
9795
+ let options = buildOptions(givenOptions, x2xmlnode.defaultOptions, x2xmlnode.props);
9796
+
9797
+ const traversableObj = xmlstr2xmlnode.getTraversalObj(xmlData, options);
9798
+ //print(traversableObj, " ");
9799
+ return node2json.convertToJson(traversableObj, options);
9800
+ };
9801
+ exports.convertTonimn = nimndata.convert2nimn;
9802
+ exports.getTraversalObj = xmlstr2xmlnode.getTraversalObj;
9803
+ exports.convertToJson = node2json.convertToJson;
9804
+ exports.convertToJsonString = node2json_str.convertToJsonString;
9805
+ exports.validate = validator.validate;
9806
+ exports.j2xParser = json2xml;
9807
+ exports.parseToNimn = function(xmlData, schema, options) {
9808
+ return exports.convertTonimn(exports.getTraversalObj(xmlData, options), schema, options);
9809
+ };
9810
+ });
8710
9811
 
8711
9812
  function parseMetadataXml(metadataXml) {
8712
9813
  var opts = {
@@ -8715,7 +9816,7 @@
8715
9816
  attributeNamePrefix: "@_",
8716
9817
  textNodeName: "#value",
8717
9818
  };
8718
- return parse(metadataXml, opts);
9819
+ return parser.parse(metadataXml, opts);
8719
9820
  }
8720
9821
  /**
8721
9822
  * Fetch an [item's metadata](https://doc.arcgis.com/en/arcgis-online/manage-data/metadata.htm) from a portal
@@ -8796,7 +9897,7 @@
8796
9897
  var enrichServer = function (input) {
8797
9898
  var data = input.data, stack = input.stack, requestOptions = input.requestOptions;
8798
9899
  var opId = stack.start("enrichServer");
8799
- var url = data.item.url;
9900
+ var url = parseServiceUrl(data.item.url);
8800
9901
  var options = __assign(__assign({}, requestOptions), { url: url });
8801
9902
  return getService(options)
8802
9903
  .then(function (server) {
@@ -11603,6 +12704,218 @@
11603
12704
  return request(url, options);
11604
12705
  }
11605
12706
 
12707
+ /**
12708
+ * Takes a file, file owner, and file AGO item id along with a size limit
12709
+ * Then chunks the file up based on that file limit.
12710
+ * The chunks are added to addItemPart calls and added to a queue array.
12711
+ *
12712
+ * @export
12713
+ * @param {*} file File to be uploaded
12714
+ * @param {string} owner file owner
12715
+ * @param {string} id file ID from AGO
12716
+ * @param {number} sizeLimit How large should the chunks be?
12717
+ * @param {IUserRequestOptions} requestOptions
12718
+ * @return {*} {IBatch}
12719
+ */
12720
+ function _prepareUploadRequests(file, owner, id, sizeLimit, requestOptions) {
12721
+ var queue = [];
12722
+ // part number starts from 1
12723
+ var partIndex = 1;
12724
+ var sizeIndex = 0;
12725
+ // Slice the file data and create an upload request for each part
12726
+ while (sizeIndex < file.size) {
12727
+ queue.push(__assign({ file: file.slice(sizeIndex, sizeIndex + sizeLimit, file.type), owner: owner,
12728
+ id: id, partNum: partIndex }, requestOptions));
12729
+ partIndex += 1;
12730
+ sizeIndex += sizeLimit;
12731
+ }
12732
+ return queue.reverse();
12733
+ }
12734
+
12735
+ /**
12736
+ * Creates an item in online from a local file/item.
12737
+ * Upload is multithreaded as the item is chunked up.
12738
+ *
12739
+ * @export
12740
+ * @param {IItemAdd} item Item to be uploaded into online.
12741
+ * @param {IUserRequestOptions} requestOptions
12742
+ * @return {*} {Promise<string>} Newly created item id
12743
+ */
12744
+ function createItemFromFile(item, requestOptions) {
12745
+ return __awaiter(this, void 0, void 0, function () {
12746
+ var file, createResult, itemId, sizeLimit, uploadQueue, e_1;
12747
+ var _this = this;
12748
+ return __generator(this, function (_a) {
12749
+ switch (_a.label) {
12750
+ case 0:
12751
+ file = item.file;
12752
+ // make a shadow copy of the item parameter and remove the file object
12753
+ // so that it won't trigger the direct upload at the createContent
12754
+ // request
12755
+ item = Object.assign({}, item);
12756
+ delete item.file;
12757
+ return [4 /*yield*/, createItem(__assign({ item: item, filename: file.name, async: true, multipart: true, overwrite: true }, requestOptions))];
12758
+ case 1:
12759
+ createResult = _a.sent();
12760
+ itemId = createResult.id;
12761
+ _a.label = 2;
12762
+ case 2:
12763
+ _a.trys.push([2, 5, , 7]);
12764
+ sizeLimit = 6 * 1000 * 1000;
12765
+ uploadQueue = _prepareUploadRequests(file, item.owner, itemId, sizeLimit, requestOptions);
12766
+ // execute up to 5 concurrent requests
12767
+ return [4 /*yield*/, batch(uploadQueue,
12768
+ // We are doing this to catch individual response failures
12769
+ // and throwing them to stop further xhr's
12770
+ function (opts) { return __awaiter(_this, void 0, void 0, function () {
12771
+ var resp;
12772
+ return __generator(this, function (_a) {
12773
+ switch (_a.label) {
12774
+ case 0: return [4 /*yield*/, addItemPart(opts)];
12775
+ case 1:
12776
+ resp = _a.sent();
12777
+ // If the response did not return with success then throw an error
12778
+ if (!resp.success) {
12779
+ throw new Error("addItemPart failed");
12780
+ }
12781
+ return [2 /*return*/];
12782
+ }
12783
+ });
12784
+ }); }, 5)];
12785
+ case 3:
12786
+ // execute up to 5 concurrent requests
12787
+ _a.sent();
12788
+ // Commit is called once all parts are uploaded during a multipart add item or update item operation.
12789
+ return [4 /*yield*/, commitItemUpload(__assign({ id: itemId, item: item, owner: item.owner }, requestOptions))];
12790
+ case 4:
12791
+ // Commit is called once all parts are uploaded during a multipart add item or update item operation.
12792
+ _a.sent();
12793
+ return [3 /*break*/, 7];
12794
+ case 5:
12795
+ e_1 = _a.sent();
12796
+ // If an error is thrown then cancel item upload
12797
+ return [4 /*yield*/, cancelItemUpload(__assign({ id: itemId, owner: item.owner }, requestOptions))];
12798
+ case 6:
12799
+ // If an error is thrown then cancel item upload
12800
+ _a.sent();
12801
+ throw e_1;
12802
+ case 7: return [2 /*return*/, createResult];
12803
+ }
12804
+ });
12805
+ });
12806
+ }
12807
+
12808
+ /**
12809
+ * Create AGO item from a URL
12810
+ *
12811
+ * @export
12812
+ * @param {IItemAdd} item Item to be uploaded into online.
12813
+ * @param {IUserRequestOptions} requestOptions
12814
+ * @return {*} {Promise<string>} Newly created item ID
12815
+ */
12816
+ function createItemFromUrl(item, requestOptions) {
12817
+ return __awaiter(this, void 0, void 0, function () {
12818
+ var createResult;
12819
+ return __generator(this, function (_a) {
12820
+ switch (_a.label) {
12821
+ case 0: return [4 /*yield*/, createItem(__assign({ item: item, owner: item.owner, file: item.file, dataUrl: item.dataUrl, text: item.text, multipart: item.multipart, async: item.async }, requestOptions))];
12822
+ case 1:
12823
+ createResult = _a.sent();
12824
+ // return the newly created item id
12825
+ return [2 /*return*/, createResult];
12826
+ }
12827
+ });
12828
+ });
12829
+ }
12830
+
12831
+ function delay(milliseconds) {
12832
+ return new Promise(function (resolve) { return setTimeout(resolve, milliseconds); });
12833
+ }
12834
+ /**
12835
+ * Helper function which takes an itemId and checks the status
12836
+ * of the item every 2 seconds until it is either complete or failed.
12837
+ *
12838
+ * @export
12839
+ * @param {string} itemId AGO item id
12840
+ * @param {IUserRequestOptions} requestOptions
12841
+ */
12842
+ function _waitForItemReady(itemId, requestOptions) {
12843
+ return __awaiter(this, void 0, void 0, function () {
12844
+ var statusResult;
12845
+ return __generator(this, function (_a) {
12846
+ switch (_a.label) {
12847
+ case 0: return [4 /*yield*/, delay(2000)];
12848
+ case 1:
12849
+ _a.sent();
12850
+ return [4 /*yield*/, getItemStatus(__assign({ id: itemId }, requestOptions))];
12851
+ case 2:
12852
+ statusResult = _a.sent();
12853
+ if (statusResult.status === "failed") {
12854
+ throw new Error(statusResult.statusMessage);
12855
+ }
12856
+ _a.label = 3;
12857
+ case 3:
12858
+ if (statusResult.status !== "completed") return [3 /*break*/, 0];
12859
+ _a.label = 4;
12860
+ case 4: return [2 /*return*/];
12861
+ }
12862
+ });
12863
+ });
12864
+ }
12865
+
12866
+ /**
12867
+ * Creates an item in online from either url or file.
12868
+ * Once created we wait for the item to be ready (or throw an error if creation failed)
12869
+ * If access is not private then we make a call to update that.
12870
+ *
12871
+ * @export
12872
+ * @param {ICreateItemFromUrlOrFileOptions} createItemFromUrlOrFileOptions Input params (item, groups?, requestoptions)
12873
+ * @return {*} {Promise<string>} AGO item id
12874
+ */
12875
+ function createItemFromUrlOrFile(createItemFromUrlOrFileOptions) {
12876
+ return __awaiter(this, void 0, void 0, function () {
12877
+ var item, groups, userRequestOptions, shouldWaitForItemReady, createdItem, failSafeShare_1;
12878
+ return __generator(this, function (_a) {
12879
+ switch (_a.label) {
12880
+ case 0:
12881
+ item = createItemFromUrlOrFileOptions.item, groups = createItemFromUrlOrFileOptions.groups, userRequestOptions = __rest(createItemFromUrlOrFileOptions, ["item", "groups"]);
12882
+ shouldWaitForItemReady = item.dataUrl || item.file;
12883
+ if (!item.file) return [3 /*break*/, 2];
12884
+ return [4 /*yield*/, createItemFromFile(item, userRequestOptions)];
12885
+ case 1:
12886
+ createdItem = _a.sent();
12887
+ return [3 /*break*/, 4];
12888
+ case 2: return [4 /*yield*/, createItemFromUrl(item, userRequestOptions)];
12889
+ case 3:
12890
+ createdItem = _a.sent();
12891
+ _a.label = 4;
12892
+ case 4:
12893
+ if (!shouldWaitForItemReady) return [3 /*break*/, 6];
12894
+ return [4 /*yield*/, _waitForItemReady(createdItem.id, userRequestOptions)];
12895
+ case 5:
12896
+ _a.sent();
12897
+ _a.label = 6;
12898
+ case 6:
12899
+ if (!(item.access !== "private")) return [3 /*break*/, 8];
12900
+ return [4 /*yield*/, setItemAccess(__assign({ id: createdItem.id, owner: item.owner, access: item.access }, userRequestOptions))];
12901
+ case 7:
12902
+ _a.sent();
12903
+ _a.label = 8;
12904
+ case 8:
12905
+ if (!(groups === null || groups === void 0 ? void 0 : groups.length)) return [3 /*break*/, 10];
12906
+ failSafeShare_1 = failSafe(shareItemWithGroup);
12907
+ return [4 /*yield*/, Promise.all(groups.map(function (group) {
12908
+ return failSafeShare_1(__assign({ id: createdItem.id, owner: item.owner, groupId: group.id, confirmItemControl: isUpdateGroup(group) }, userRequestOptions));
12909
+ }))];
12910
+ case 9:
12911
+ _a.sent();
12912
+ _a.label = 10;
12913
+ case 10: return [2 /*return*/, createdItem];
12914
+ }
12915
+ });
12916
+ });
12917
+ }
12918
+
11606
12919
  /* Copyright (c) 2018-2021 Environmental Systems Research Institute, Inc.
11607
12920
  * Apache-2.0 */
11608
12921
  /**
@@ -17145,6 +18458,9 @@
17145
18458
  exports.convertUrlsToAnchorTags = convertUrlsToAnchorTags;
17146
18459
  exports.createExtent = createExtent;
17147
18460
  exports.createId = createId;
18461
+ exports.createItemFromFile = createItemFromFile;
18462
+ exports.createItemFromUrl = createItemFromUrl;
18463
+ exports.createItemFromUrlOrFile = createItemFromUrlOrFile;
17148
18464
  exports.createModel = createModel;
17149
18465
  exports.createOperationPipeline = createOperationPipeline;
17150
18466
  exports.createProject = createProject;