@jscrpt/common 1.2.0 → 2.0.0-beta.20211108120022
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.
- package/changelog.md +24 -0
- package/dist/es2015/decorators/bindThis.decorator.js +24 -24
- package/dist/es2015/decorators/bindThis.decorator.js.map +1 -0
- package/dist/es2015/decorators/callOnce.decorator.js +29 -28
- package/dist/es2015/decorators/callOnce.decorator.js.map +1 -0
- package/dist/es2015/decorators/debounceCall.decorator.js +25 -26
- package/dist/es2015/decorators/debounceCall.decorator.js.map +1 -0
- package/dist/es2015/decorators/index.js +4 -4
- package/dist/es2015/decorators/index.js.map +1 -0
- package/dist/es2015/encoder/encoder.js +220 -231
- package/dist/es2015/encoder/encoder.js.map +1 -0
- package/dist/es2015/enums/index.js +2 -2
- package/dist/es2015/enums/index.js.map +1 -0
- package/dist/es2015/enums/orderByDirection.js +15 -15
- package/dist/es2015/enums/orderByDirection.js.map +1 -0
- package/dist/es2015/index.js +10 -24
- package/dist/es2015/index.js.map +1 -0
- package/dist/es2015/indexNode.js +2 -2
- package/dist/es2015/indexNode.js.map +1 -0
- package/dist/es2015/initJsDevMode.js +8 -0
- package/dist/es2015/initJsDevMode.js.map +1 -0
- package/dist/es2015/jsDevMode.js +8 -8
- package/dist/es2015/jsDevMode.js.map +1 -0
- package/dist/es2015/normalizer/charMaps.js +20 -27
- package/dist/es2015/normalizer/charMaps.js.map +1 -0
- package/dist/es2015/normalizer/index.js +3 -3
- package/dist/es2015/normalizer/index.js.map +1 -0
- package/dist/es2015/normalizer/normalizer.js +14 -14
- package/dist/es2015/normalizer/normalizer.js.map +1 -0
- package/dist/es2015/paginator/paginator.js +230 -224
- package/dist/es2015/paginator/paginator.js.map +1 -0
- package/dist/es2015/types/dictionaries.js +2 -1
- package/dist/es2015/types/dictionaries.js.map +1 -0
- package/dist/es2015/types/enums.js +2 -0
- package/dist/es2015/types/enums.js.map +1 -0
- package/dist/es2015/types/functions.js +2 -0
- package/dist/es2015/types/functions.js.map +1 -0
- package/dist/es2015/types/index.js +5 -3
- package/dist/es2015/types/index.js.map +1 -0
- package/dist/es2015/types/valueNamePair.js +2 -1
- package/dist/es2015/types/valueNamePair.js.map +1 -0
- package/dist/es2015/utils/common.js +209 -215
- package/dist/es2015/utils/common.js.map +1 -0
- package/dist/es2015/utils/index.js +4 -4
- package/dist/es2015/utils/index.js.map +1 -0
- package/dist/es2015/utils/lang.js +79 -79
- package/dist/es2015/utils/lang.js.map +1 -0
- package/dist/es2015/utils/nameof.js +6 -6
- package/dist/es2015/utils/nameof.js.map +1 -0
- package/dist/es2020/decorators/bindThis.decorator.js +23 -0
- package/dist/es2020/decorators/bindThis.decorator.js.map +1 -0
- package/dist/es2020/decorators/callOnce.decorator.js +28 -0
- package/dist/es2020/decorators/callOnce.decorator.js.map +1 -0
- package/dist/es2020/decorators/debounceCall.decorator.js +24 -0
- package/dist/es2020/decorators/debounceCall.decorator.js.map +1 -0
- package/dist/es2020/decorators/index.js +4 -0
- package/dist/es2020/decorators/index.js.map +1 -0
- package/dist/es2020/encoder/encoder.js +220 -0
- package/dist/es2020/encoder/encoder.js.map +1 -0
- package/dist/es2020/enums/index.js +2 -0
- package/dist/es2020/enums/index.js.map +1 -0
- package/dist/es2020/enums/orderByDirection.js +15 -0
- package/dist/es2020/enums/orderByDirection.js.map +1 -0
- package/dist/es2020/index.js +10 -0
- package/dist/es2020/index.js.map +1 -0
- package/dist/es2020/indexNode.js +2 -0
- package/dist/es2020/indexNode.js.map +1 -0
- package/dist/es2020/initJsDevMode.js +8 -0
- package/dist/es2020/initJsDevMode.js.map +1 -0
- package/dist/es2020/jsDevMode.js +8 -0
- package/dist/es2020/jsDevMode.js.map +1 -0
- package/dist/es2020/normalizer/charMaps.js +20 -0
- package/dist/es2020/normalizer/charMaps.js.map +1 -0
- package/dist/es2020/normalizer/index.js +3 -0
- package/dist/es2020/normalizer/index.js.map +1 -0
- package/dist/es2020/normalizer/normalizer.js +14 -0
- package/dist/es2020/normalizer/normalizer.js.map +1 -0
- package/dist/es2020/paginator/paginator.js +230 -0
- package/dist/es2020/paginator/paginator.js.map +1 -0
- package/dist/es2020/types/dictionaries.js +2 -0
- package/dist/es2020/types/dictionaries.js.map +1 -0
- package/dist/es2020/types/enums.js +2 -0
- package/dist/es2020/types/enums.js.map +1 -0
- package/dist/es2020/types/functions.js +2 -0
- package/dist/es2020/types/functions.js.map +1 -0
- package/dist/es2020/types/index.js +5 -0
- package/dist/es2020/types/index.js.map +1 -0
- package/dist/es2020/types/valueNamePair.js +2 -0
- package/dist/es2020/types/valueNamePair.js.map +1 -0
- package/dist/es2020/utils/common.js +208 -0
- package/dist/es2020/utils/common.js.map +1 -0
- package/dist/es2020/utils/index.js +4 -0
- package/dist/es2020/utils/index.js.map +1 -0
- package/dist/es2020/utils/lang.js +79 -0
- package/dist/es2020/utils/lang.js.map +1 -0
- package/dist/es2020/utils/nameof.js +6 -0
- package/dist/es2020/utils/nameof.js.map +1 -0
- package/dist/es5/decorators/bindThis.decorator.js +24 -24
- package/dist/es5/decorators/bindThis.decorator.js.map +1 -0
- package/dist/es5/decorators/callOnce.decorator.js +33 -28
- package/dist/es5/decorators/callOnce.decorator.js.map +1 -0
- package/dist/es5/decorators/debounceCall.decorator.js +30 -27
- package/dist/es5/decorators/debounceCall.decorator.js.map +1 -0
- package/dist/es5/decorators/index.js +4 -4
- package/dist/es5/decorators/index.js.map +1 -0
- package/dist/es5/encoder/encoder.js +222 -233
- package/dist/es5/encoder/encoder.js.map +1 -0
- package/dist/es5/enums/index.js +2 -2
- package/dist/es5/enums/index.js.map +1 -0
- package/dist/es5/enums/orderByDirection.js +15 -15
- package/dist/es5/enums/orderByDirection.js.map +1 -0
- package/dist/es5/index.js +10 -24
- package/dist/es5/index.js.map +1 -0
- package/dist/es5/indexNode.js +2 -2
- package/dist/es5/indexNode.js.map +1 -0
- package/dist/es5/initJsDevMode.js +8 -0
- package/dist/es5/initJsDevMode.js.map +1 -0
- package/dist/es5/jsDevMode.js +8 -8
- package/dist/es5/jsDevMode.js.map +1 -0
- package/dist/es5/normalizer/charMaps.js +20 -35
- package/dist/es5/normalizer/charMaps.js.map +1 -0
- package/dist/es5/normalizer/index.js +3 -3
- package/dist/es5/normalizer/index.js.map +1 -0
- package/dist/es5/normalizer/normalizer.js +14 -14
- package/dist/es5/normalizer/normalizer.js.map +1 -0
- package/dist/es5/paginator/paginator.js +232 -226
- package/dist/es5/paginator/paginator.js.map +1 -0
- package/dist/es5/types/dictionaries.js +2 -1
- package/dist/es5/types/dictionaries.js.map +1 -0
- package/dist/es5/types/enums.js +2 -0
- package/dist/es5/types/enums.js.map +1 -0
- package/dist/es5/types/functions.js +2 -0
- package/dist/es5/types/functions.js.map +1 -0
- package/dist/es5/types/index.js +5 -3
- package/dist/es5/types/index.js.map +1 -0
- package/dist/es5/types/valueNamePair.js +2 -1
- package/dist/es5/types/valueNamePair.js.map +1 -0
- package/dist/es5/utils/common.js +220 -232
- package/dist/es5/utils/common.js.map +1 -0
- package/dist/es5/utils/index.js +4 -4
- package/dist/es5/utils/index.js.map +1 -0
- package/dist/es5/utils/lang.js +79 -79
- package/dist/es5/utils/lang.js.map +1 -0
- package/dist/es5/utils/nameof.js +6 -6
- package/dist/es5/utils/nameof.js.map +1 -0
- package/dist/module/decorators/bindThis.decorator.js +28 -28
- package/dist/module/decorators/bindThis.decorator.js.map +1 -0
- package/dist/module/decorators/callOnce.decorator.js +33 -32
- package/dist/module/decorators/callOnce.decorator.js.map +1 -0
- package/dist/module/decorators/debounceCall.decorator.js +29 -30
- package/dist/module/decorators/debounceCall.decorator.js.map +1 -0
- package/dist/module/decorators/index.js +7 -16
- package/dist/module/decorators/index.js.map +1 -0
- package/dist/module/encoder/encoder.js +224 -235
- package/dist/module/encoder/encoder.js.map +1 -0
- package/dist/module/enums/index.js +5 -14
- package/dist/module/enums/index.js.map +1 -0
- package/dist/module/enums/orderByDirection.js +18 -18
- package/dist/module/enums/orderByDirection.js.map +1 -0
- package/dist/module/index.js +13 -37
- package/dist/module/index.js.map +1 -0
- package/dist/module/indexNode.js +5 -14
- package/dist/module/indexNode.js.map +1 -0
- package/dist/module/initJsDevMode.js +10 -0
- package/dist/module/initJsDevMode.js.map +1 -0
- package/dist/module/jsDevMode.js +12 -12
- package/dist/module/jsDevMode.js.map +1 -0
- package/dist/module/normalizer/charMaps.js +23 -31
- package/dist/module/normalizer/charMaps.js.map +1 -0
- package/dist/module/normalizer/index.js +6 -15
- package/dist/module/normalizer/index.js.map +1 -0
- package/dist/module/normalizer/normalizer.js +18 -18
- package/dist/module/normalizer/normalizer.js.map +1 -0
- package/dist/module/paginator/paginator.js +234 -228
- package/dist/module/paginator/paginator.js.map +1 -0
- package/dist/module/types/dictionaries.js +3 -3
- package/dist/module/types/dictionaries.js.map +1 -0
- package/dist/module/types/enums.js +3 -0
- package/dist/module/types/enums.js.map +1 -0
- package/dist/module/types/functions.js +3 -0
- package/dist/module/types/functions.js.map +1 -0
- package/dist/module/types/index.js +8 -15
- package/dist/module/types/index.js.map +1 -0
- package/dist/module/types/valueNamePair.js +3 -3
- package/dist/module/types/valueNamePair.js.map +1 -0
- package/dist/module/utils/common.js +232 -240
- package/dist/module/utils/common.js.map +1 -0
- package/dist/module/utils/index.js +7 -16
- package/dist/module/utils/index.js.map +1 -0
- package/dist/module/utils/lang.js +99 -99
- package/dist/module/utils/lang.js.map +1 -0
- package/dist/module/utils/nameof.js +10 -9
- package/dist/module/utils/nameof.js.map +1 -0
- package/package.json +45 -16
- package/src/decorators/bindThis.decorator.d.ts +5 -7
- package/src/decorators/bindThis.decorator.d.ts.map +1 -1
- package/src/decorators/callOnce.decorator.d.ts +5 -5
- package/src/decorators/callOnce.decorator.d.ts.map +1 -1
- package/src/decorators/debounceCall.decorator.d.ts +5 -5
- package/src/decorators/debounceCall.decorator.d.ts.map +1 -1
- package/src/decorators/index.d.ts +3 -3
- package/src/encoder/encoder.d.ts +45 -45
- package/src/encoder/encoder.d.ts.map +1 -1
- package/src/enums/index.d.ts +1 -1
- package/src/enums/orderByDirection.d.ts +13 -13
- package/src/index.d.ts +9 -17
- package/src/index.d.ts.map +1 -1
- package/src/indexNode.d.ts +1 -1
- package/src/initJsDevMode.d.ts +2 -0
- package/src/initJsDevMode.d.ts.map +1 -0
- package/src/jsDevMode.d.ts +8 -8
- package/src/jsDevMode.d.ts.map +1 -1
- package/src/normalizer/charMaps.d.ts +5 -9
- package/src/normalizer/charMaps.d.ts.map +1 -1
- package/src/normalizer/index.d.ts +2 -2
- package/src/normalizer/normalizer.d.ts +7 -6
- package/src/normalizer/normalizer.d.ts.map +1 -1
- package/src/paginator/paginator.d.ts +129 -129
- package/src/paginator/paginator.d.ts.map +1 -1
- package/src/types/dictionaries.d.ts +15 -6
- package/src/types/dictionaries.d.ts.map +1 -1
- package/src/types/enums.d.ts +7 -0
- package/src/types/enums.d.ts.map +1 -0
- package/src/types/functions.d.ts +14 -0
- package/src/types/functions.d.ts.map +1 -0
- package/src/types/index.d.ts +4 -2
- package/src/types/index.d.ts.map +1 -1
- package/src/types/valueNamePair.d.ts +13 -13
- package/src/utils/common.d.ts +181 -122
- package/src/utils/common.d.ts.map +1 -1
- package/src/utils/index.d.ts +3 -3
- package/src/utils/lang.d.ts +41 -41
- package/src/utils/lang.d.ts.map +1 -1
- package/src/utils/nameof.d.ts +5 -5
- package/src/utils/nameof.d.ts.map +1 -1
- package/version.bak +1 -1
- package/.jsbeautifyrc +0 -7
- package/appveyor.yml +0 -67
|
@@ -1,231 +1,220 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A Javascript object to encode and/or decode html characters using HTML or Numeric entities that handles double or partial encoding
|
|
3
|
-
* Author: R Reid
|
|
4
|
-
* source: http://www.strictly-software.com/htmlencode
|
|
5
|
-
* Licences: GPL, The MIT License (MIT)
|
|
6
|
-
* Copyright: (c) 2011 Robert Reid - Strictly-Software.com
|
|
7
|
-
*
|
|
8
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the
|
|
9
|
-
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
10
|
-
* THE SOFTWARE IS PROVIDED
|
|
11
|
-
*
|
|
12
|
-
* Revision:
|
|
13
|
-
* 2011-07-14, Jacques-Yves Bleau:
|
|
14
|
-
* - fixed conversion error with capitalized accentuated characters
|
|
15
|
-
* + converted arr1 and arr2 to object property to remove redundancy
|
|
16
|
-
*
|
|
17
|
-
* Revision:
|
|
18
|
-
* 2011-11-10, Ce-Yi Hio:
|
|
19
|
-
* - fixed conversion error with a number of capitalized entity characters
|
|
20
|
-
*
|
|
21
|
-
* Revision:
|
|
22
|
-
* 2011-11-10, Rob Reid:
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* Revision:
|
|
26
|
-
* 2012-09-23, Alex Oss:
|
|
27
|
-
*
|
|
28
|
-
*/
|
|
29
|
-
export class Encoder {
|
|
30
|
-
constructor() {
|
|
31
|
-
// When encoding do we convert characters into html or numerical entities
|
|
32
|
-
this.EncodeType =
|
|
33
|
-
// arrays for conversion from HTML Entities to Numerical values
|
|
34
|
-
this.arr1 = [' ', '¡', '¢', '£', '¤', '¥', '¦', '§', '¨', '©', 'ª', '«', '¬', '­', '®', '¯', '°', '±', '²', '³', '´', 'µ', '¶', '·', '¸', '¹', 'º', '»', '¼', '½', '¾', '¿', 'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', '×', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'Þ', 'ß', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ð', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', '÷', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'þ', 'ÿ', '"', '&', '<', '>', 'Œ', 'œ', 'Š', 'š', 'Ÿ', 'ˆ', '˜', ' ', ' ', ' ', '‌', '‍', '‎', '‏', '–', '—', '‘', '’', '‚', '“', '”', '„', '†', '‡', '‰', '‹', '›', '€', 'ƒ', 'Α', 'Β', 'Γ', 'Δ', 'Ε', 'Ζ', 'Η', 'Θ', 'Ι', 'Κ', 'Λ', 'Μ', 'Ν', 'Ξ', 'Ο', 'Π', 'Ρ', 'Σ', 'Τ', 'Υ', 'Φ', 'Χ', 'Ψ', 'Ω', 'α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ', 'λ', 'μ', 'ν', 'ξ', 'ο', 'π', 'ρ', 'ς', 'σ', 'τ', 'υ', 'φ', 'χ', 'ψ', 'ω', 'ϑ', 'ϒ', 'ϖ', '•', '…', '′', '″', '‾', '⁄', '℘', 'ℑ', 'ℜ', '™', 'ℵ', '←', '↑', '→', '↓', '↔', '↵', '⇐', '⇑', '⇒', '⇓', '⇔', '∀', '∂', '∃', '∅', '∇', '∈', '∉', '∋', '∏', '∑', '−', '∗', '√', '∝', '∞', '∠', '∧', '∨', '∩', '∪', '∫', '∴', '∼', '≅', '≈', '≠', '≡', '≤', '≥', '⊂', '⊃', '⊄', '⊆', '⊇', '⊕', '⊗', '⊥', '⋅', '⌈', '⌉', '⌊', '⌋', '⟨', '⟩', '◊', '♠', '♣', '♥', '♦'];
|
|
35
|
-
this.arr2 = [' ', '¡', '¢', '£', '¤', '¥', '¦', '§', '¨', '©', 'ª', '«', '¬', '­', '®', '¯', '°', '±', '²', '³', '´', 'µ', '¶', '·', '¸', '¹', 'º', '»', '¼', '½', '¾', '¿', 'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', '×', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'Þ', 'ß', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ð', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', '÷', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'þ', 'ÿ', '"', '&', '<', '>', 'Œ', 'œ', 'Š', 'š', 'Ÿ', 'ˆ', '˜', ' ', ' ', ' ', '‌', '‍', '‎', '‏', '–', '—', '‘', '’', '‚', '“', '”', '„', '†', '‡', '‰', '‹', '›', '€', 'ƒ', 'Α', 'Β', 'Γ', 'Δ', 'Ε', 'Ζ', 'Η', 'Θ', 'Ι', 'Κ', 'Λ', 'Μ', 'Ν', 'Ξ', 'Ο', 'Π', 'Ρ', 'Σ', 'Τ', 'Υ', 'Φ', 'Χ', 'Ψ', 'Ω', 'α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ', 'λ', 'μ', 'ν', 'ξ', 'ο', 'π', 'ρ', 'ς', 'σ', 'τ', 'υ', 'φ', 'χ', 'ψ', 'ω', 'ϑ', 'ϒ', 'ϖ', '•', '…', '′', '″', '‾', '⁄', '℘', 'ℑ', 'ℜ', '™', 'ℵ', '←', '↑', '→', '↓', '↔', '↵', '⇐', '⇑', '⇒', '⇓', '⇔', '∀', '∂', '∃', '∅', '∇', '∈', '∉', '∋', '∏', '∑', '−', '∗', '√', '∝', '∞', '∠', '∧', '∨', '∩', '∪', '∫', '∴', '∼', '≅', '≈', '≠', '≡', '≤', '≥', '⊂', '⊃', '⊄', '⊆', '⊇', '⊕', '⊗', '⊥', '⋅', '⌈', '⌉', '⌊', '⌋', '〈', '〉', '◊', '♠', '♣', '♥', '♦'];
|
|
36
|
-
}
|
|
37
|
-
isEmpty(val) {
|
|
38
|
-
if (val) {
|
|
39
|
-
return ((val === null) || val.length == 0 || /^\s+$/.test(val));
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
return true;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
a.push(
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
}
|
|
82
|
-
//
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
if
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
//
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
if (
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
s = s.replace(
|
|
163
|
-
s = s.replace(
|
|
164
|
-
s = s.replace(/</g,
|
|
165
|
-
s = s.replace(/>/g,
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
return
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
//
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
;
|
|
222
|
-
inArray(item, arr) {
|
|
223
|
-
for (var i = 0, x = arr.length; i < x; i++) {
|
|
224
|
-
if (arr[i] === item) {
|
|
225
|
-
return i;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
return -1;
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbmNvZGVyL2VuY29kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJCRztBQUVILE1BQU0sT0FBTyxPQUFPO0lBQXBCO1FBRUMseUVBQXlFO1FBQ3pFLGVBQVUsR0FBVyxRQUFRLENBQUMsQ0FBRSxzQkFBc0I7UUFjdEQsK0RBQStEO1FBQy9ELFNBQUksR0FBYSxDQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxVQUFVLEVBQUMsT0FBTyxFQUFDLFVBQVUsRUFBQyxRQUFRLEVBQUMsT0FBTyxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLE9BQU8sRUFBQyxPQUFPLEVBQUMsT0FBTyxFQUFDLFFBQVEsRUFBQyxPQUFPLEVBQUMsVUFBVSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsVUFBVSxFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxVQUFVLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsVUFBVSxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUMsVUFBVSxFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLE9BQU8sRUFBQyxVQUFVLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsVUFBVSxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxVQUFVLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxVQUFVLEVBQUMsVUFBVSxFQUFDLFNBQVMsRUFBQyxVQUFVLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxVQUFVLEVBQUMsVUFBVSxFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsT0FBTyxFQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUMsVUFBVSxFQUFDLFNBQVMsRUFBQyxVQUFVLEVBQUMsUUFBUSxFQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxVQUFVLEVBQUMsUUFBUSxFQUFDLE9BQU8sRUFBQyxPQUFPLEVBQUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxXQUFXLEVBQUMsUUFBUSxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxVQUFVLEVBQUMsTUFBTSxFQUFDLE1BQU0sRUFBQyxNQUFNLEVBQUMsV0FBVyxFQUFDLE1BQU0sRUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE9BQU8sRUFBQyxXQUFXLEVBQUMsT0FBTyxFQUFDLE9BQU8sRUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxXQUFXLEVBQUMsUUFBUSxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxVQUFVLEVBQUMsTUFBTSxFQUFDLE1BQU0sRUFBQyxNQUFNLEVBQUMsV0FBVyxFQUFDLE1BQU0sRUFBQyxPQUFPLEVBQUMsVUFBVSxFQUFDLFNBQVMsRUFBQyxPQUFPLEVBQUMsV0FBVyxFQUFDLE9BQU8sRUFBQyxPQUFPLEVBQUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxZQUFZLEVBQUMsU0FBUyxFQUFDLE9BQU8sRUFBQyxRQUFRLEVBQUMsVUFBVSxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxVQUFVLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsV0FBVyxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsVUFBVSxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLE1BQU0sRUFBQyxRQUFRLEVBQUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxVQUFVLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLEVBQUMsT0FBTyxFQUFDLE9BQU8sRUFBQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE9BQU8sRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLE1BQU0sRUFBQyxTQUFTLEVBQUMsTUFBTSxFQUFDLE1BQU0sRUFBQyxPQUFPLEVBQUMsT0FBTyxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxVQUFVLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxPQUFPLEVBQUMsVUFBVSxFQUFDLFNBQVMsRUFBQyxVQUFVLEVBQUMsU0FBUyxDQUFDLENBQUM7UUFDMzRFLFNBQUksR0FBYSxDQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLE9BQU8sRUFBQyxPQUFPLEVBQUMsT0FBTyxFQUFDLE9BQU8sRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxRQUFRLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxDQUFDLENBQUM7SUFtUXgwRSxDQUFDO0lBalJBLE9BQU8sQ0FBQyxHQUFPO1FBRWQsSUFBRyxHQUFHLEVBQ0E7WUFDTCxPQUFP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YW5kL29yIGRlY29kZSBodG1sIGNoYXJhY3RlcnMgdXNpbmcgSFRNTCBvciBOdW1lcmljIGVudGl0aWVzIHRoYXQgaGFuZGxlcyBkb3VibGUgb3IgcGFydGlhbCBlbmNvZGluZ1xyXG4gKiBBdXRob3I6IFIgUmVpZFxyXG4gKiBzb3VyY2U6IGh0dHA6Ly93d3cuc3RyaWN0bHktc29mdHdhcmUuY29tL2h0bWxlbmNvZGVcclxuICogTGljZW5jZXM6IEdQTCwgVGhlIE1JVCBMaWNlbnNlIChNSVQpXHJcbiAqIENvcHlyaWdodDogKGMpIDIwMTEgUm9iZXJ0IFJlaWQgLSBTdHJpY3RseS1Tb2Z0d2FyZS5jb21cclxuICpcclxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcclxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXHJcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxyXG4gKlxyXG4gKiBSZXZpc2lvbjpcclxuICogIDIwMTEtMDctMTQsIEphY3F1ZXMtWXZlcyBCbGVhdTpcclxuICogICAgICAgLSBmaXhlZCBjb252ZXJzaW9uIGVycm9yIHdpdGggY2FwaXRhbGl6ZWQgYWNjZW50dWF0ZWQgY2hhcmFjdGVyc1xyXG4gKiAgICAgICArIGNvbnZlcnRlZCBhcnIxIGFuZCBhcnIyIHRvIG9iamVjdCBwcm9wZXJ0eSB0byByZW1vdmUgcmVkdW5kYW5jeVxyXG4gKlxyXG4gKiBSZXZpc2lvbjpcclxuICogIDIwMTEtMTEtMTAsIENlLVlpIEhpbzpcclxuICogICAgICAgLSBmaXhlZCBjb252ZXJzaW9uIGVycm9yIHdpdGggYSBudW1iZXIgb2YgY2FwaXRhbGl6ZWQgZW50aXR5IGNoYXJhY3RlcnNcclxuICpcclxuICogUmV2aXNpb246XHJcbiAqICAyMDExLTExLTEwLCBSb2IgUmVpZDpcclxuICpcdFx0IC0gY2hhbmdlZCBhcnJheSBmb3JtYXRcclxuICpcclxuICogUmV2aXNpb246XHJcbiAqICAyMDEyLTA5LTIzLCBBbGV4IE9zczpcclxuICpcdFx0IC0gcmVwbGFjZWQgc3RyaW5nIGNvbmNhdG9uYXRpb24gaW4gbnVtRW5jb2RlIHdpdGggc3RyaW5nIGJ1aWxkZXIsIHB1c2ggYW5kIGpvaW4gZm9yIHBlZm9ybWFuY2Ugd2l0aCBhbW1lbmRtZW50cyBieSBSb2IgUmVpZFxyXG4gKi9cclxuXHJcbmV4cG9ydCBjbGFzcyBFbmNvZGVyXHJcbntcclxuXHQvLyBXaGVuIGVuY29kaW5nIGRvIHdlIGNvbnZlcnQgY2hhcmFjdGVycyBpbnRvIGh0bWwgb3IgbnVtZXJpY2FsIGVudGl0aWVzXHJcblx0RW5jb2RlVHlwZTogc3RyaW5nID0gXCJlbnRpdHlcIjsgIC8vIGVudGl0eSBPUiBudW1lcmljYWxcclxuXHJcblx0aXNFbXB0eSh2YWw6YW55KVxyXG4gICAge1xyXG5cdFx0aWYodmFsKVxyXG4gICAgICAgIHtcclxuXHRcdFx0cmV0dXJuICgodmFsPT09bnVsbCkgfHwgdmFsLmxlbmd0aD09MCB8fCAvXlxccyskLy50ZXN0KHZhbCkpO1xyXG5cdFx0fVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICB7XHJcblx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0fVxyXG5cdH07XHJcblxyXG5cdC8vIGFycmF5cyBmb3IgY29udmVyc2lvbiBmcm9tIEhUTUwgRW50aXRpZXMgdG8gTnVtZXJpY2FsIHZhbHVlc1xyXG5cdGFycjE6IHN0cmluZ1tdID0gWycmbmJzcDsnLCcmaWV4Y2w7JywnJmNlbnQ7JywnJnBvdW5kOycsJyZjdXJyZW47JywnJnllbjsnLCcmYnJ2YmFyOycsJyZzZWN0OycsJyZ1bWw7JywnJmNvcHk7JywnJm9yZGY7JywnJmxhcXVvOycsJyZub3Q7JywnJnNoeTsnLCcmcmVnOycsJyZtYWNyOycsJyZkZWc7JywnJnBsdXNtbjsnLCcmc3VwMjsnLCcmc3VwMzsnLCcmYWN1dGU7JywnJm1pY3JvOycsJyZwYXJhOycsJyZtaWRkb3Q7JywnJmNlZGlsOycsJyZzdXAxOycsJyZvcmRtOycsJyZyYXF1bzsnLCcmZnJhYzE0OycsJyZmcmFjMTI7JywnJmZyYWMzNDsnLCcmaXF1ZXN0OycsJyZBZ3JhdmU7JywnJkFhY3V0ZTsnLCcmQWNpcmM7JywnJkF0aWxkZTsnLCcmQXVtbDsnLCcmQXJpbmc7JywnJkFFbGlnOycsJyZDY2VkaWw7JywnJkVncmF2ZTsnLCcmRWFjdXRlOycsJyZFY2lyYzsnLCcmRXVtbDsnLCcmSWdyYXZlOycsJyZJYWN1dGU7JywnJkljaXJjOycsJyZJdW1sOycsJyZFVEg7JywnJk50aWxkZTsnLCcmT2dyYXZlOycsJyZPYWN1dGU7JywnJk9jaXJjOycsJyZPdGlsZGU7JywnJk91bWw7JywnJnRpbWVzOycsJyZPc2xhc2g7JywnJlVncmF2ZTsnLCcmVWFjdXRlOycsJyZVY2lyYzsnLCcmVXVtbDsnLCcmWWFjdXRlOycsJyZUSE9STjsnLCcmc3psaWc7JywnJmFncmF2ZTsnLCcmYWFjdXRlOycsJyZhY2lyYzsnLCcmYXRpbGRlOycsJyZhdW1sOycsJyZhcmluZzsnLCcmYWVsaWc7JywnJmNjZWRpbDsnLCcmZWdyYXZlOycsJyZlYWN1dGU7JywnJmVjaXJjOycsJyZldW1sOycsJyZpZ3JhdmU7JywnJmlhY3V0ZTsnLCcmaWNpcmM7JywnJml1bWw7JywnJmV0aDsnLCcmbnRpbGRlOycsJyZvZ3JhdmU7JywnJm9hY3V0ZTsnLCcmb2NpcmM7JywnJm90aWxkZTsnLCcmb3VtbDsnLCcmZGl2aWRlOycsJyZvc2xhc2g7JywnJnVncmF2ZTsnLCcmdWFjdXRlOycsJyZ1Y2lyYzsnLCcmdXVtbDsnLCcmeWFjdXRlOycsJyZ0aG9ybjsnLCcmeXVtbDsnLCcmcXVvdDsnLCcmYW1wOycsJyZsdDsnLCcmZ3Q7JywnJk9FbGlnOycsJyZvZWxpZzsnLCcmU2Nhcm9uOycsJyZzY2Fyb247JywnJll1bWw7JywnJmNpcmM7JywnJnRpbGRlOycsJyZlbnNwOycsJyZlbXNwOycsJyZ0aGluc3A7JywnJnp3bmo7JywnJnp3ajsnLCcmbHJtOycsJyZybG07JywnJm5kYXNoOycsJyZtZGFzaDsnLCcmbHNxdW87JywnJnJzcXVvOycsJyZzYnF1bzsnLCcmbGRxdW87JywnJnJkcXVvOycsJyZiZHF1bzsnLCcmZGFnZ2VyOycsJyZEYWdnZXI7JywnJnBlcm1pbDsnLCcmbHNhcXVvOycsJyZyc2FxdW87JywnJmV1cm87JywnJmZub2Y7JywnJkFscGhhOycsJyZCZXRhOycsJyZHYW1tYTsnLCcmRGVsdGE7JywnJkVwc2lsb247JywnJlpldGE7JywnJkV0YTsnLCcmVGhldGE7JywnJklvdGE7JywnJkthcHBhOycsJyZMYW1iZGE7JywnJk11OycsJyZOdTsnLCcmWGk7JywnJk9taWNyb247JywnJlBpOycsJyZSaG87JywnJlNpZ21hOycsJyZUYXU7JywnJlVwc2lsb247JywnJlBoaTsnLCcmQ2hpOycsJyZQc2k7JywnJk9tZWdhOycsJyZhbHBoYTsnLCcmYmV0YTsnLCcmZ2FtbWE7JywnJmRlbHRhOycsJyZlcHNpbG9uOycsJyZ6ZXRhOycsJyZldGE7JywnJnRoZXRhOycsJyZpb3RhOycsJyZrYXBwYTsnLCcmbGFtYmRhOycsJyZtdTsnLCcmbnU7JywnJnhpOycsJyZvbWljcm9uOycsJyZwaTsnLCcmcmhvOycsJyZzaWdtYWY7JywnJnNpZ21hOycsJyZ0YXU7JywnJnVwc2lsb247JywnJnBoaTsnLCcmY2hpOycsJyZwc2k7JywnJm9tZWdhOycsJyZ0aGV0YXN5bTsnLCcmdXBzaWg7JywnJnBpdjsnLCcmYnVsbDsnLCcmaGVsbGlwOycsJyZwcmltZTsnLCcmUHJpbWU7JywnJm9saW5lOycsJyZmcmFzbDsnLCcmd2VpZXJwOycsJyZpbWFnZTsnLCcmcmVhbDsnLCcmdHJhZGU7JywnJmFsZWZzeW07JywnJmxhcnI7JywnJnVhcnI7JywnJnJhcnI7JywnJmRhcnI7JywnJmhhcnI7JywnJmNyYXJyOycsJyZsQXJyOycsJyZ1QXJyOycsJyZyQXJyOycsJyZkQXJyOycsJyZoQXJyOycsJyZmb3JhbGw7JywnJnBhcnQ7JywnJmV4aXN0OycsJyZlbXB0eTsnLCcmbmFibGE7JywnJmlzaW47JywnJm5vdGluOycsJyZuaTsnLCcmcHJvZDsnLCcmc3VtOycsJyZtaW51czsnLCcmbG93YXN0OycsJyZyYWRpYzsnLCcmcHJvcDsnLCcmaW5maW47JywnJmFuZzsnLCcmYW5kOycsJyZvcjsnLCcmY2FwOycsJyZjdXA7JywnJmludDsnLCcmdGhlcmU0OycsJyZzaW07JywnJmNvbmc7JywnJmFzeW1wOycsJyZuZTsnLCcmZXF1aXY7JywnJmxlOycsJyZnZTsnLCcmc3ViOycsJyZzdXA7JywnJm5zdWI7JywnJnN1YmU7JywnJnN1cGU7JywnJm9wbHVzOycsJyZvdGltZXM7JywnJnBlcnA7JywnJnNkb3Q7JywnJmxjZWlsOycsJyZyY2VpbDsnLCcmbGZsb29yOycsJyZyZmxvb3I7JywnJmxhbmc7JywnJnJhbmc7JywnJmxvejsnLCcmc3BhZGVzOycsJyZjbHViczsnLCcmaGVhcnRzOycsJyZkaWFtczsnXTtcclxuXHRhcnIyOiBzdHJpbmdbXSA9IFsnJiMxNjA7JywnJiMxNjE7JywnJiMxNjI7JywnJiMxNjM7JywnJiMxNjQ7JywnJiMxNjU7JywnJiMxNjY7JywnJiMxNjc7JywnJiMxNjg7JywnJiMxNjk7JywnJiMxNzA7JywnJiMxNzE7JywnJiMxNzI7JywnJiMxNzM7JywnJiMxNzQ7JywnJiMxNzU7JywnJiMxNzY7JywnJiMxNzc7JywnJiMxNzg7JywnJiMxNzk7JywnJiMxODA7JywnJiMxODE7JywnJiMxODI7JywnJiMxODM7JywnJiMxODQ7JywnJiMxODU7JywnJiMxODY7JywnJiMxODc7JywnJiMxODg7JywnJiMxODk7JywnJiMxOTA7JywnJiMxOTE7JywnJiMxOTI7JywnJiMxOTM7JywnJiMxOTQ7JywnJiMxOTU7JywnJiMxOTY7JywnJiMxOTc7JywnJiMxOTg7JywnJiMxOTk7JywnJiMyMDA7JywnJiMyMDE7JywnJiMyMDI7JywnJiMyMDM7JywnJiMyMDQ7JywnJiMyMDU7JywnJiMyMDY7JywnJiMyMDc7JywnJiMyMDg7JywnJiMyMDk7JywnJiMyMTA7JywnJiMyMTE7JywnJiMyMTI7JywnJiMyMTM7JywnJiMyMTQ7JywnJiMyMTU7JywnJiMyMTY7JywnJiMyMTc7JywnJiMyMTg7JywnJiMyMTk7JywnJiMyMjA7JywnJiMyMjE7JywnJiMyMjI7JywnJiMyMjM7JywnJiMyMjQ7JywnJiMyMjU7JywnJiMyMjY7JywnJiMyMjc7JywnJiMyMjg7JywnJiMyMjk7JywnJiMyMzA7JywnJiMyMzE7JywnJiMyMzI7JywnJiMyMzM7JywnJiMyMzQ7JywnJiMyMzU7JywnJiMyMzY7JywnJiMyMzc7JywnJiMyMzg7JywnJiMyMzk7JywnJiMyNDA7JywnJiMyNDE7JywnJiMyNDI7JywnJiMyNDM7JywnJiMyNDQ7JywnJiMyNDU7JywnJiMyNDY7JywnJiMyNDc7JywnJiMyNDg7JywnJiMyNDk7JywnJiMyNTA7JywnJiMyNTE7JywnJiMyNTI7JywnJiMyNTM7JywnJiMyNTQ7JywnJiMyNTU7JywnJiMzNDsnLCcmIzM4OycsJyYjNjA7JywnJiM2MjsnLCcmIzMzODsnLCcmIzMzOTsnLCcmIzM1MjsnLCcmIzM1MzsnLCcmIzM3NjsnLCcmIzcxMDsnLCcmIzczMjsnLCcmIzgxOTQ7JywnJiM4MTk1OycsJyYjODIwMTsnLCcmIzgyMDQ7JywnJiM4MjA1OycsJyYjODIwNjsnLCcmIzgyMDc7JywnJiM4MjExOycsJyYjODIxMjsnLCcmIzgyMTY7JywnJiM4MjE3OycsJyYjODIxODsnLCcmIzgyMjA7JywnJiM4MjIxOycsJyYjODIyMjsnLCcmIzgyMjQ7JywnJiM4MjI1OycsJyYjODI0MDsnLCcmIzgyNDk7JywnJiM4MjUwOycsJyYjODM2NDsnLCcmIzQwMjsnLCcmIzkxMzsnLCcmIzkxNDsnLCcmIzkxNTsnLCcmIzkxNjsnLCcmIzkxNzsnLCcmIzkxODsnLCcmIzkxOTsnLCcmIzkyMDsnLCcmIzkyMTsnLCcmIzkyMjsnLCcmIzkyMzsnLCcmIzkyNDsnLCcmIzkyNTsnLCcmIzkyNjsnLCcmIzkyNzsnLCcmIzkyODsnLCcmIzkyOTsnLCcmIzkzMTsnLCcmIzkzMjsnLCcmIzkzMzsnLCcmIzkzNDsnLCcmIzkzNTsnLCcmIzkzNjsnLCcmIzkzNzsnLCcmIzk0NTsnLCcmIzk0NjsnLCcmIzk0NzsnLCcmIzk0ODsnLCcmIzk0OTsnLCcmIzk1MDsnLCcmIzk1MTsnLCcmIzk1MjsnLCcmIzk1MzsnLCcmIzk1NDsnLCcmIzk1NTsnLCcmIzk1NjsnLCcmIzk1NzsnLCcmIzk1ODsnLCcmIzk1OTsnLCcmIzk2MDsnLCcmIzk2MTsnLCcmIzk2MjsnLCcmIzk2MzsnLCcmIzk2NDsnLCcmIzk2NTsnLCcmIzk2NjsnLCcmIzk2NzsnLCcmIzk2ODsnLCcmIzk2OTsnLCcmIzk3NzsnLCcmIzk3ODsnLCcmIzk4MjsnLCcmIzgyMjY7JywnJiM4MjMwOycsJyYjODI0MjsnLCcmIzgyNDM7JywnJiM4MjU0OycsJyYjODI2MDsnLCcmIzg0NzI7JywnJiM4NDY1OycsJyYjODQ3NjsnLCcmIzg0ODI7JywnJiM4NTAxOycsJyYjODU5MjsnLCcmIzg1OTM7JywnJiM4NTk0OycsJyYjODU5NTsnLCcmIzg1OTY7JywnJiM4NjI5OycsJyYjODY1NjsnLCcmIzg2NTc7JywnJiM4NjU4OycsJyYjODY1OTsnLCcmIzg2NjA7JywnJiM4NzA0OycsJyYjODcwNjsnLCcmIzg3MDc7JywnJiM4NzA5OycsJyYjODcxMTsnLCcmIzg3MTI7JywnJiM4NzEzOycsJyYjODcxNTsnLCcmIzg3MTk7JywnJiM4NzIxOycsJyYjODcyMjsnLCcmIzg3Mjc7JywnJiM4NzMwOycsJyYjODczMzsnLCcmIzg3MzQ7JywnJiM4NzM2OycsJyYjODc0MzsnLCcmIzg3NDQ7JywnJiM4NzQ1OycsJyYjODc0NjsnLCcmIzg3NDc7JywnJiM4NzU2OycsJyYjODc2NDsnLCcmIzg3NzM7JywnJiM4Nzc2OycsJyYjODgwMDsnLCcmIzg4MDE7JywnJiM4ODA0OycsJyYjODgwNTsnLCcmIzg4MzQ7JywnJiM4ODM1OycsJyYjODgzNjsnLCcmIzg4Mzg7JywnJiM4ODM5OycsJyYjODg1MzsnLCcmIzg4NTU7JywnJiM4ODY5OycsJyYjODkwMTsnLCcmIzg5Njg7JywnJiM4OTY5OycsJyYjODk3MDsnLCcmIzg5NzE7JywnJiM5MDAxOycsJyYjOTAwMjsnLCcmIzk2NzQ7JywnJiM5ODI0OycsJyYjOTgyNzsnLCcmIzk4Mjk7JywnJiM5ODMwOyddO1xyXG5cclxuXHQvLyBDb252ZXJ0IEhUTUwgZW50aXRpZXMgaW50byBudW1lcmljYWwgZW50aXRpZXNcclxuXHRIVE1MMk51bWVyaWNhbChzOmFueSlcclxuICAgIHtcclxuXHRcdHJldHVybiB0aGlzLnN3YXBBcnJheVZhbHMocywgdGhpcy5hcnIxLCB0aGlzLmFycjIpO1xyXG5cdH07XHJcblxyXG5cdC8vIENvbnZlcnQgTnVtZXJpY2FsIGVudGl0aWVzIGludG8gSFRNTCBlbnRpdGllc1xyXG5cdE51bWVyaWNhbFRvSFRNTChzOmFueSlcclxuICAgIHtcclxuXHRcdHJldHVybiB0aGlzLnN3YXBBcnJheVZhbHMocywgdGhpcy5hcnIyLCB0aGlzLmFycjEpO1xyXG5cdH07XHJcblxyXG5cclxuXHQvLyBOdW1lcmljYWxseSBlbmNvZGVzIGFsbCB1bmljb2RlIGNoYXJhY3RlcnNcclxuXHRudW1FbmNvZGUoczphbnkpXHJcbiAgICB7XHJcblx0XHRpZih0aGlzLmlzRW1wdHkocykpXHJcbiAgICAgICAgeyBcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfVxyXG5cclxuXHRcdHZhciBhID0gW10sXHJcblx0XHRcdGwgPSBzLmxlbmd0aDtcclxuXHJcblx0XHRmb3IgKHZhciBpPTA7IGkgPCBsOyBpKyspXHJcbiAgICAgICAge1xyXG5cdFx0XHR2YXIgYyA9IHMuY2hhckF0KGkpO1xyXG5cdFx0XHRcclxuICAgICAgICAgICAgaWYgKGMgPCBcIiBcIiB8fCBjID4gXCJ+XCIpXHJcbiAgICAgICAgICAgIHtcclxuXHRcdFx0XHRhLnB1c2goXCImI1wiKTtcclxuXHRcdFx0XHRhLnB1c2goYy5jaGFyQ29kZUF0KCkpOyAvL251bWVyaWMgdmFsdWUgb2YgY29kZSBwb2ludFxyXG5cdFx0XHRcdGEucHVzaChcIjtcIik7XHJcblx0XHRcdH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB7XHJcblx0XHRcdFx0YS5wdXNoKGMpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIGEuam9pbihcIlwiKTtcclxuXHR9O1xyXG5cclxuXHQvLyBIVE1MIERlY29kZSBudW1lcmljYWwgYW5kIEhUTUwgZW50aXRpZXMgYmFjayB0byBvcmlnaW5hbCB2YWx1ZXNcclxuXHRodG1sRGVjb2RlKHM6YW55KVxyXG4gICAge1xyXG5cdFx0dmFyIGMsbSxkID0gcztcclxuXHJcblx0XHRpZih0aGlzLmlzRW1wdHkoZCkpIFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfVxyXG5cclxuXHRcdC8vIGNvbnZlcnQgSFRNTCBlbnRpdGVzIGJhY2sgdG8gbnVtZXJpY2FsIGVudGl0ZXMgZmlyc3RcclxuXHRcdGQgPSB0aGlzLkhUTUwyTnVtZXJpY2FsKGQpO1xyXG5cclxuXHRcdC8vIGxvb2sgZm9yIG51bWVyaWNhbCBlbnRpdGllcyAmIzM0O1xyXG5cdFx0dmFyIGFyciA9IGQubWF0Y2goLyYjWzAtOV17MSw1fTsvZyk7XHJcblxyXG5cdFx0Ly8gaWYgbm8gbWF0Y2hlcyBmb3VuZCBpbiBzdHJpbmcgdGhlbiBza2lwXHJcblx0XHRpZihhcnIhPW51bGwpXHJcbiAgICAgICAge1xyXG5cdFx0XHRmb3IodmFyIHg9MDsgeCA8IGFyci5sZW5ndGg7IHgrKylcclxuICAgICAgICAgICAge1xyXG5cdFx0XHRcdG0gPSBhcnJbeF07XHJcblx0XHRcdFx0YyA9IG0uc3Vic3RyaW5nKDIsbS5sZW5ndGgtMSk7IC8vZ2V0IG51bWVyaWMgcGFydCB3aGljaCBpcyByZWZlcm5jZSB0byB1bmljb2RlIGNoYXJhY3RlclxyXG5cdFx0XHRcdC8vIGlmIGl0cyBhIHZhbGlkIG51bWJlciB3ZSBjYW4gZGVjb2RlXHJcblx0XHRcdFx0aWYoYyA+PSAtMzI3NjggJiYgYyA8PSA2NTUzNSlcclxuICAgICAgICAgICAgICAgIHtcclxuXHRcdFx0XHRcdC8vIGRlY29kZSBldmVyeSBzaW5nbGUgbWF0Y2ggd2l0aGluIHN0cmluZ1xyXG5cdFx0XHRcdFx0ZCA9IGQucmVwbGFjZShtLCBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcclxuXHRcdFx0XHR9XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB7XHJcblx0XHRcdFx0XHRkID0gZC5yZXBsYWNlKG0sIFwiXCIpOyAvL2ludmFsaWQgc28gcmVwbGFjZSB3aXRoIG5hZGFcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gZDtcclxuXHR9O1xyXG5cclxuXHQvLyBlbmNvZGUgYW4gaW5wdXQgc3RyaW5nIGludG8gZWl0aGVyIG51bWVyaWNhbCBvciBIVE1MIGVudGl0aWVzXHJcblx0aHRtbEVuY29kZShzOmFueSwgZGJsOmFueSlcclxuICAgIHtcclxuXHRcdGlmKHRoaXMuaXNFbXB0eShzKSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH1cclxuXHJcblx0XHQvLyBkbyB3ZSBhbGxvdyBkb3VibGUgZW5jb2Rpbmc/IEUuZyB3aWxsICZhbXA7IGJlIHR1cm5lZCBpbnRvICZhbXA7YW1wO1xyXG5cdFx0ZGJsID0gZGJsIHx8IGZhbHNlOyAvL2RlZmF1bHQgdG8gcHJldmVudCBkb3VibGUgZW5jb2RpbmdcclxuXHJcblx0XHQvLyBpZiBhbGxvd2luZyBkb3VibGUgZW5jb2Rpbmcgd2UgZG8gYW1wZXJzYW5kcyBmaXJzdFxyXG5cdFx0aWYoZGJsKVxyXG4gICAgICAgIHtcclxuXHRcdFx0aWYodGhpcy5FbmNvZGVUeXBlPT1cIm51bWVyaWNhbFwiKVxyXG4gICAgICAgICAgICB7XHJcblx0XHRcdFx0cyA9IHMucmVwbGFjZSgvJi9nLCBcIiYjMzg7XCIpO1xyXG5cdFx0XHR9XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAge1xyXG5cdFx0XHRcdHMgPSBzLnJlcGxhY2UoLyYvZywgXCImYW1wO1wiKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC8vIGNvbnZlcnQgdGhlIHhzcyBjaGFycyB0byBudW1lcmljYWwgZW50aXRpZXMgJyBcIiA8ID5cclxuXHRcdHMgPSB0aGlzLlhTU0VuY29kZShzLGZhbHNlKTtcclxuXHJcblx0XHRpZih0aGlzLkVuY29kZVR5cGU9PVwibnVtZXJpY2FsXCIgfHwgIWRibClcclxuICAgICAgICB7XHJcblx0XHRcdC8vIE5vdyBjYWxsIGZ1bmN0aW9uIHRoYXQgd2lsbCBjb252ZXJ0IGFueSBIVE1MIGVudGl0aWVzIHRvIG51bWVyaWNhbCBjb2Rlc1xyXG5cdFx0XHRzID0gdGhpcy5IVE1MMk51bWVyaWNhbChzKTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBOb3cgZW5jb2RlIGFsbCBjaGFycyBhYm92ZSAxMjcgZS5nIHVuaWNvZGVcclxuXHRcdHMgPSB0aGlzLm51bUVuY29kZShzKTtcclxuXHJcblx0XHQvLyBub3cgd2Uga25vdyBhbnl0aGluZyB0aGF0IG5lZWRzIHRvIGJlIGVuY29kZWQgaGFzIGJlZW4gY29udmVydGVkIHRvIG51bWVyaWNhbCBlbnRpdGllcyB3ZVxyXG5cdFx0Ly8gY2FuIGVuY29kZSBhbnkgYW1wZXJzYW5kcyAmIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIGVuY29kZWQgZW50aXRpZXNcclxuXHRcdC8vIHRvIGhhbmRsZSB0aGUgZmFjdCB0aGF0IEkgbmVlZCB0byBkbyBhIG5lZ2F0aXZlIGNoZWNrIGFuZCBoYW5kbGUgbXVsdGlwbGUgYW1wZXJzYW5kcyAmJiZcclxuXHRcdC8vIEkgYW0gZ29pbmcgdG8gdXNlIGEgcGxhY2Vob2xkZXJcclxuXHJcblx0XHQvLyBpZiB3ZSBkb24ndCB3YW50IGRvdWJsZSBlbmNvZGVkIGVudGl0aWVzIHdlIGlnbm9yZSB0aGUgJiBpbiBleGlzdGluZyBlbnRpdGllc1xyXG5cdFx0aWYoIWRibClcclxuICAgICAgICB7XHJcblx0XHRcdHMgPSBzLnJlcGxhY2UoLyYjL2csXCIjI0FNUEhBU0gjI1wiKTtcclxuXHJcblx0XHRcdGlmKHRoaXMuRW5jb2RlVHlwZT09XCJudW1lcmljYWxcIilcclxuICAgICAgICAgICAge1xyXG5cdFx0XHRcdHMgPSBzLnJlcGxhY2UoLyYvZywgXCImIzM4O1wiKTtcclxuXHRcdFx0fVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHtcclxuXHRcdFx0XHRzID0gcy5yZXBsYWNlKC8mL2csIFwiJmFtcDtcIik7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHMgPSBzLnJlcGxhY2UoLyMjQU1QSEFTSCMjL2csXCImI1wiKTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyByZXBsYWNlIGFueSBtYWxmb3JtZWQgZW50aXRpZXNcclxuXHRcdHMgPSBzLnJlcGxhY2UoLyYjXFxkKihbXlxcZDtdfCQpL2csIFwiJDFcIik7XHJcblxyXG5cdFx0aWYoIWRibClcclxuICAgICAgICB7XHJcblx0XHRcdC8vIHNhZmV0eSBjaGVjayB0byBjb3JyZWN0IGFueSBkb3VibGUgZW5jb2RlZCAmYW1wO1xyXG5cdFx0XHRzID0gdGhpcy5jb3JyZWN0RW5jb2Rpbmcocyk7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gbm93IGRvIHdlIG5lZWQgdG8gY29udmVydCBvdXIgbnVtZXJpY2FsIGVuY29kZWQgc3RyaW5nIGludG8gZW50aXRpZXNcclxuXHRcdGlmKHRoaXMuRW5jb2RlVHlwZT09XCJlbnRpdHlcIilcclxuICAgICAgICB7XHJcblx0XHRcdHMgPSB0aGlzLk51bWVyaWNhbFRvSFRNTChzKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gcztcclxuXHR9O1xyXG5cclxuXHQvLyBFbmNvZGVzIHRoZSBiYXNpYyA0IGNoYXJhY3RlcnMgdXNlZCB0byBtYWxmb3JtIEhUTUwgaW4gWFNTIGhhY2tzXHJcblx0WFNTRW5jb2RlKHM6YW55LGVuOmFueSlcclxuICAgIHtcclxuXHRcdGlmKCF0aGlzLmlzRW1wdHkocykpXHJcbiAgICAgICAge1xyXG5cdFx0XHRlbiA9IGVuIHx8IHRydWU7XHJcblx0XHRcdC8vIGRvIHdlIGNvbnZlcnQgdG8gbnVtZXJpY2FsIG9yIGh0bWwgZW50aXR5P1xyXG5cdFx0XHRpZihlbilcclxuICAgICAgICAgICAge1xyXG5cdFx0XHRcdHMgPSBzLnJlcGxhY2UoL1xcJy9nLFwiJiMzOTtcIik7IC8vbm8gSFRNTCBlcXVpdmFsZW50IGFzICZhcG9zIGlzIG5vdCBjcm9zcyBicm93c2VyIHN1cHBvcnRlZFxyXG5cdFx0XHRcdHMgPSBzLnJlcGxhY2UoL1xcXCIvZyxcIiZxdW90O1wiKTtcclxuXHRcdFx0XHRzID0gcy5yZXBsYWNlKC88L2csXCImbHQ7XCIpO1xyXG5cdFx0XHRcdHMgPSBzLnJlcGxhY2UoLz4vZyxcIiZndDtcIik7XHJcblx0XHRcdH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB7XHJcblx0XHRcdFx0cyA9IHMucmVwbGFjZSgvXFwnL2csXCImIzM5O1wiKTsgLy9ubyBIVE1MIGVxdWl2YWxlbnQgYXMgJmFwb3MgaXMgbm90IGNyb3NzIGJyb3dzZXIgc3VwcG9ydGVkXHJcblx0XHRcdFx0cyA9IHMucmVwbGFjZSgvXFxcIi9nLFwiJiMzNDtcIik7XHJcblx0XHRcdFx0cyA9IHMucmVwbGFjZSgvPC9nLFwiJiM2MDtcIik7XHJcblx0XHRcdFx0cyA9IHMucmVwbGFjZSgvPi9nLFwiJiM2MjtcIik7XHJcblx0XHRcdH1cclxuICAgICAgICAgICAgXHJcblx0XHRcdHJldHVybiBzO1xyXG5cdFx0fVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICB7XHJcblx0XHRcdHJldHVybiBcIlwiO1xyXG5cdFx0fVxyXG5cdH07XHJcblxyXG5cdC8vIHJldHVybnMgdHJ1ZSBpZiBhIHN0cmluZyBjb250YWlucyBodG1sIG9yIG51bWVyaWNhbCBlbmNvZGVkIGVudGl0aWVzXHJcblx0aGFzRW5jb2RlZChzOmFueSlcclxuICAgIHtcclxuXHRcdGlmKC8mI1swLTldezEsNX07L2cudGVzdChzKSlcclxuICAgICAgICB7XHJcblx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0fVxyXG4gICAgICAgIGVsc2UgaWYoLyZbQS1aXXsyLDZ9Oy9naS50ZXN0KHMpKVxyXG4gICAgICAgIHtcclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHR9XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgIHtcclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cdH07XHJcblxyXG5cdC8vIHdpbGwgcmVtb3ZlIGFueSB1bmljb2RlIGNoYXJhY3RlcnNcclxuXHRzdHJpcFVuaWNvZGUoczphbnkpXHJcbiAgICB7XHJcblx0XHRyZXR1cm4gcy5yZXBsYWNlKC9bXlxceDIwLVxceDdFXS9nLFwiXCIpO1xyXG5cdH07XHJcblxyXG5cdC8vIGNvcnJlY3RzIGFueSBkb3VibGUgZW5jb2RlZCAmYW1wOyBlbnRpdGllcyBlLmcgJmFtcDthbXA7XHJcblx0Y29ycmVjdEVuY29kaW5nKHM6YW55KVxyXG4gICAge1xyXG5cdFx0cmV0dXJuIHMucmVwbGFjZSgvKCZhbXA7KShhbXA7KSsvLFwiJDFcIik7XHJcblx0fTtcclxuXHJcblx0Ly8gRnVuY3Rpb24gdG8gbG9vcCB0aHJvdWdoIGFuIGFycmF5IHN3YXBpbmcgZWFjaCBpdGVtIHdpdGggdGhlIHZhbHVlIGZyb20gYW5vdGhlciBhcnJheSBlLmcgc3dhcCBIVE1MIGVudGl0aWVzIHdpdGggTnVtZXJpY2Fsc1xyXG5cdHN3YXBBcnJheVZhbHMoczphbnksYXJyMTphbnksYXJyMjphbnkpXHJcbiAgICB7XHJcblx0XHRpZih0aGlzLmlzRW1wdHkocykpXHJcbiAgICAgICAgeyBcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG5cdFx0dmFyIHJlO1xyXG4gICAgICAgIFxyXG5cdFx0aWYoYXJyMSAmJiBhcnIyKVxyXG4gICAgICAgIHtcclxuXHRcdFx0Ly9TaG93RGVidWcoXCJpbiBzd2FwQXJyYXlWYWxzIGFycjEubGVuZ3RoID0gXCIgKyBhcnIxLmxlbmd0aCArIFwiIGFycjIubGVuZ3RoID0gXCIgKyBhcnIyLmxlbmd0aClcclxuXHRcdFx0Ly8gYXJyYXkgbGVuZ3RocyBtdXN0IG1hdGNoXHJcblx0XHRcdGlmKGFycjEubGVuZ3RoID09IGFycjIubGVuZ3RoKVxyXG4gICAgICAgICAgICB7XHJcblx0XHRcdFx0Zm9yKHZhciB4PTAsIGkgPSBhcnIxLmxlbmd0aDsgeCA8IGk7IHgrKylcclxuICAgICAgICAgICAgICAgIHtcclxuXHRcdFx0XHRcdHJlID0gbmV3IFJlZ0V4cChhcnIxW3hdLCAnZycpO1xyXG5cdFx0XHRcdFx0cyA9IHMucmVwbGFjZShyZSxhcnIyW3hdKTsgLy9zd2FwIGFycjEgaXRlbSB3aXRoIG1hdGNoaW5nIGl0ZW0gZnJvbSBhcnIyXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcbiAgICAgICAgXHJcblx0XHRyZXR1cm4gcztcclxuXHR9O1xyXG5cclxuXHRpbkFycmF5KCBpdGVtOmFueSwgYXJyOmFueSApIFxyXG4gICAge1xyXG5cdFx0Zm9yICggdmFyIGkgPSAwLCB4ID0gYXJyLmxlbmd0aDsgaSA8IHg7IGkrKyApXHJcbiAgICAgICAge1xyXG5cdFx0XHRpZiAoIGFycltpXSA9PT0gaXRlbSApXHJcbiAgICAgICAgICAgIHtcclxuXHRcdFx0XHRyZXR1cm4gaTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG4gICAgICAgIFxyXG5cdFx0cmV0dXJuIC0xO1xyXG5cdH1cclxuXHJcbn1cclxuIl19
|
|
1
|
+
/**
|
|
2
|
+
* A Javascript object to encode and/or decode html characters using HTML or Numeric entities that handles double or partial encoding
|
|
3
|
+
* Author: R Reid
|
|
4
|
+
* source: http://www.strictly-software.com/htmlencode
|
|
5
|
+
* Licences: GPL, The MIT License (MIT)
|
|
6
|
+
* Copyright: (c) 2011 Robert Reid - Strictly-Software.com
|
|
7
|
+
*
|
|
8
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
9
|
+
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
10
|
+
* THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
11
|
+
*
|
|
12
|
+
* Revision:
|
|
13
|
+
* 2011-07-14, Jacques-Yves Bleau:
|
|
14
|
+
* - fixed conversion error with capitalized accentuated characters
|
|
15
|
+
* + converted arr1 and arr2 to object property to remove redundancy
|
|
16
|
+
*
|
|
17
|
+
* Revision:
|
|
18
|
+
* 2011-11-10, Ce-Yi Hio:
|
|
19
|
+
* - fixed conversion error with a number of capitalized entity characters
|
|
20
|
+
*
|
|
21
|
+
* Revision:
|
|
22
|
+
* 2011-11-10, Rob Reid:
|
|
23
|
+
* - changed array format
|
|
24
|
+
*
|
|
25
|
+
* Revision:
|
|
26
|
+
* 2012-09-23, Alex Oss:
|
|
27
|
+
* - replaced string concatonation in numEncode with string builder, push and join for peformance with ammendments by Rob Reid
|
|
28
|
+
*/
|
|
29
|
+
export class Encoder {
|
|
30
|
+
constructor() {
|
|
31
|
+
// When encoding do we convert characters into html or numerical entities
|
|
32
|
+
this.EncodeType = 'entity'; // entity OR numerical
|
|
33
|
+
// arrays for conversion from HTML Entities to Numerical values
|
|
34
|
+
this.arr1 = [' ', '¡', '¢', '£', '¤', '¥', '¦', '§', '¨', '©', 'ª', '«', '¬', '­', '®', '¯', '°', '±', '²', '³', '´', 'µ', '¶', '·', '¸', '¹', 'º', '»', '¼', '½', '¾', '¿', 'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', '×', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'Þ', 'ß', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ð', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', '÷', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'þ', 'ÿ', '"', '&', '<', '>', 'Œ', 'œ', 'Š', 'š', 'Ÿ', 'ˆ', '˜', ' ', ' ', ' ', '‌', '‍', '‎', '‏', '–', '—', '‘', '’', '‚', '“', '”', '„', '†', '‡', '‰', '‹', '›', '€', 'ƒ', 'Α', 'Β', 'Γ', 'Δ', 'Ε', 'Ζ', 'Η', 'Θ', 'Ι', 'Κ', 'Λ', 'Μ', 'Ν', 'Ξ', 'Ο', 'Π', 'Ρ', 'Σ', 'Τ', 'Υ', 'Φ', 'Χ', 'Ψ', 'Ω', 'α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ', 'λ', 'μ', 'ν', 'ξ', 'ο', 'π', 'ρ', 'ς', 'σ', 'τ', 'υ', 'φ', 'χ', 'ψ', 'ω', 'ϑ', 'ϒ', 'ϖ', '•', '…', '′', '″', '‾', '⁄', '℘', 'ℑ', 'ℜ', '™', 'ℵ', '←', '↑', '→', '↓', '↔', '↵', '⇐', '⇑', '⇒', '⇓', '⇔', '∀', '∂', '∃', '∅', '∇', '∈', '∉', '∋', '∏', '∑', '−', '∗', '√', '∝', '∞', '∠', '∧', '∨', '∩', '∪', '∫', '∴', '∼', '≅', '≈', '≠', '≡', '≤', '≥', '⊂', '⊃', '⊄', '⊆', '⊇', '⊕', '⊗', '⊥', '⋅', '⌈', '⌉', '⌊', '⌋', '⟨', '⟩', '◊', '♠', '♣', '♥', '♦'];
|
|
35
|
+
this.arr2 = [' ', '¡', '¢', '£', '¤', '¥', '¦', '§', '¨', '©', 'ª', '«', '¬', '­', '®', '¯', '°', '±', '²', '³', '´', 'µ', '¶', '·', '¸', '¹', 'º', '»', '¼', '½', '¾', '¿', 'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', '×', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'Þ', 'ß', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ð', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', '÷', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'þ', 'ÿ', '"', '&', '<', '>', 'Œ', 'œ', 'Š', 'š', 'Ÿ', 'ˆ', '˜', ' ', ' ', ' ', '‌', '‍', '‎', '‏', '–', '—', '‘', '’', '‚', '“', '”', '„', '†', '‡', '‰', '‹', '›', '€', 'ƒ', 'Α', 'Β', 'Γ', 'Δ', 'Ε', 'Ζ', 'Η', 'Θ', 'Ι', 'Κ', 'Λ', 'Μ', 'Ν', 'Ξ', 'Ο', 'Π', 'Ρ', 'Σ', 'Τ', 'Υ', 'Φ', 'Χ', 'Ψ', 'Ω', 'α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ', 'λ', 'μ', 'ν', 'ξ', 'ο', 'π', 'ρ', 'ς', 'σ', 'τ', 'υ', 'φ', 'χ', 'ψ', 'ω', 'ϑ', 'ϒ', 'ϖ', '•', '…', '′', '″', '‾', '⁄', '℘', 'ℑ', 'ℜ', '™', 'ℵ', '←', '↑', '→', '↓', '↔', '↵', '⇐', '⇑', '⇒', '⇓', '⇔', '∀', '∂', '∃', '∅', '∇', '∈', '∉', '∋', '∏', '∑', '−', '∗', '√', '∝', '∞', '∠', '∧', '∨', '∩', '∪', '∫', '∴', '∼', '≅', '≈', '≠', '≡', '≤', '≥', '⊂', '⊃', '⊄', '⊆', '⊇', '⊕', '⊗', '⊥', '⋅', '⌈', '⌉', '⌊', '⌋', '〈', '〉', '◊', '♠', '♣', '♥', '♦'];
|
|
36
|
+
}
|
|
37
|
+
isEmpty(val) {
|
|
38
|
+
if (val) {
|
|
39
|
+
return ((val === null) || val.length == 0 || /^\s+$/.test(val));
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// Convert HTML entities into numerical entities
|
|
46
|
+
HTML2Numerical(s) {
|
|
47
|
+
return this.swapArrayVals(s, this.arr1, this.arr2);
|
|
48
|
+
}
|
|
49
|
+
// Convert Numerical entities into HTML entities
|
|
50
|
+
NumericalToHTML(s) {
|
|
51
|
+
return this.swapArrayVals(s, this.arr2, this.arr1);
|
|
52
|
+
}
|
|
53
|
+
// Numerically encodes all unicode characters
|
|
54
|
+
numEncode(s) {
|
|
55
|
+
if (this.isEmpty(s)) {
|
|
56
|
+
return '';
|
|
57
|
+
}
|
|
58
|
+
const a = [], l = s.length;
|
|
59
|
+
for (let i = 0; i < l; i++) {
|
|
60
|
+
const c = s.charAt(i);
|
|
61
|
+
if (c < ' ' || c > '~') {
|
|
62
|
+
a.push('&#');
|
|
63
|
+
a.push(c.charCodeAt()); //numeric value of code point
|
|
64
|
+
a.push(';');
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
a.push(c);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return a.join('');
|
|
71
|
+
}
|
|
72
|
+
// HTML Decode numerical and HTML entities back to original values
|
|
73
|
+
htmlDecode(s) {
|
|
74
|
+
let c, m, d = s;
|
|
75
|
+
if (this.isEmpty(d)) {
|
|
76
|
+
return '';
|
|
77
|
+
}
|
|
78
|
+
// convert HTML entites back to numerical entites first
|
|
79
|
+
d = this.HTML2Numerical(d);
|
|
80
|
+
// look for numerical entities "
|
|
81
|
+
const arr = d.match(/&#[0-9]{1,5};/g);
|
|
82
|
+
// if no matches found in string then skip
|
|
83
|
+
if (arr != null) {
|
|
84
|
+
for (let x = 0; x < arr.length; x++) {
|
|
85
|
+
m = arr[x];
|
|
86
|
+
c = m.substring(2, m.length - 1); //get numeric part which is refernce to unicode character
|
|
87
|
+
// if its a valid number we can decode
|
|
88
|
+
if (c >= -32768 && c <= 65535) {
|
|
89
|
+
// decode every single match within string
|
|
90
|
+
d = d.replace(m, String.fromCharCode(c));
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
d = d.replace(m, ''); //invalid so replace with nada
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return d;
|
|
98
|
+
}
|
|
99
|
+
// encode an input string into either numerical or HTML entities
|
|
100
|
+
htmlEncode(s, dbl) {
|
|
101
|
+
if (this.isEmpty(s)) {
|
|
102
|
+
return '';
|
|
103
|
+
}
|
|
104
|
+
// do we allow double encoding? E.g will & be turned into &amp;
|
|
105
|
+
dbl = dbl || false; //default to prevent double encoding
|
|
106
|
+
// if allowing double encoding we do ampersands first
|
|
107
|
+
if (dbl) {
|
|
108
|
+
if (this.EncodeType == 'numerical') {
|
|
109
|
+
s = s.replace(/&/g, '&');
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
s = s.replace(/&/g, '&');
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// convert the xss chars to numerical entities ' ' < >
|
|
116
|
+
s = this.XSSEncode(s, false);
|
|
117
|
+
if (this.EncodeType == 'numerical' || !dbl) {
|
|
118
|
+
// Now call function that will convert any HTML entities to numerical codes
|
|
119
|
+
s = this.HTML2Numerical(s);
|
|
120
|
+
}
|
|
121
|
+
// Now encode all chars above 127 e.g unicode
|
|
122
|
+
s = this.numEncode(s);
|
|
123
|
+
// now we know anything that needs to be encoded has been converted to numerical entities we
|
|
124
|
+
// can encode any ampersands & that are not part of encoded entities
|
|
125
|
+
// to handle the fact that I need to do a negative check and handle multiple ampersands &&&
|
|
126
|
+
// I am going to use a placeholder
|
|
127
|
+
// if we don't want double encoded entities we ignore the & in existing entities
|
|
128
|
+
if (!dbl) {
|
|
129
|
+
s = s.replace(/&#/g, '##AMPHASH##');
|
|
130
|
+
if (this.EncodeType == 'numerical') {
|
|
131
|
+
s = s.replace(/&/g, '&');
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
s = s.replace(/&/g, '&');
|
|
135
|
+
}
|
|
136
|
+
s = s.replace(/##AMPHASH##/g, '&#');
|
|
137
|
+
}
|
|
138
|
+
// replace any malformed entities
|
|
139
|
+
s = s.replace(/&#\d*([^\d;]|$)/g, '$1');
|
|
140
|
+
if (!dbl) {
|
|
141
|
+
// safety check to correct any double encoded &
|
|
142
|
+
s = this.correctEncoding(s);
|
|
143
|
+
}
|
|
144
|
+
// now do we need to convert our numerical encoded string into entities
|
|
145
|
+
if (this.EncodeType == 'entity') {
|
|
146
|
+
s = this.NumericalToHTML(s);
|
|
147
|
+
}
|
|
148
|
+
return s;
|
|
149
|
+
}
|
|
150
|
+
// Encodes the basic 4 characters used to malform HTML in XSS hacks
|
|
151
|
+
XSSEncode(s, en) {
|
|
152
|
+
if (!this.isEmpty(s)) {
|
|
153
|
+
en = en || true;
|
|
154
|
+
// do we convert to numerical or html entity?
|
|
155
|
+
if (en) {
|
|
156
|
+
s = s.replace(/'/g, '''); //no HTML equivalent as &apos is not cross browser supported
|
|
157
|
+
s = s.replace(/"/g, '"');
|
|
158
|
+
s = s.replace(/</g, '<');
|
|
159
|
+
s = s.replace(/>/g, '>');
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
s = s.replace(/'/g, '''); //no HTML equivalent as &apos is not cross browser supported
|
|
163
|
+
s = s.replace(/"/g, '"');
|
|
164
|
+
s = s.replace(/</g, '<');
|
|
165
|
+
s = s.replace(/>/g, '>');
|
|
166
|
+
}
|
|
167
|
+
return s;
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
return '';
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// returns true if a string contains html or numerical encoded entities
|
|
174
|
+
hasEncoded(s) {
|
|
175
|
+
if (/&#[0-9]{1,5};/g.test(s)) {
|
|
176
|
+
return true;
|
|
177
|
+
}
|
|
178
|
+
else if (/&[A-Z]{2,6};/gi.test(s)) {
|
|
179
|
+
return true;
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
return false;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
// will remove any unicode characters
|
|
186
|
+
stripUnicode(s) {
|
|
187
|
+
return s.replace(/[^\x20-\x7E]/g, '');
|
|
188
|
+
}
|
|
189
|
+
// corrects any double encoded & entities e.g &amp;
|
|
190
|
+
correctEncoding(s) {
|
|
191
|
+
return s.replace(/(&)(amp;)+/, '$1');
|
|
192
|
+
}
|
|
193
|
+
// Function to loop through an array swaping each item with the value from another array e.g swap HTML entities with Numericals
|
|
194
|
+
swapArrayVals(s, arr1, arr2) {
|
|
195
|
+
if (this.isEmpty(s)) {
|
|
196
|
+
return '';
|
|
197
|
+
}
|
|
198
|
+
let re;
|
|
199
|
+
if (arr1 && arr2) {
|
|
200
|
+
//ShowDebug('in swapArrayVals arr1.length = ' + arr1.length + ' arr2.length = ' + arr2.length)
|
|
201
|
+
// array lengths must match
|
|
202
|
+
if (arr1.length == arr2.length) {
|
|
203
|
+
for (let x = 0, i = arr1.length; x < i; x++) {
|
|
204
|
+
re = new RegExp(arr1[x], 'g');
|
|
205
|
+
s = s.replace(re, arr2[x]); //swap arr1 item with matching item from arr2
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return s;
|
|
210
|
+
}
|
|
211
|
+
inArray(item, arr) {
|
|
212
|
+
for (let i = 0, x = arr.length; i < x; i++) {
|
|
213
|
+
if (arr[i] === item) {
|
|
214
|
+
return i;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return -1;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=encoder.js.map
|