| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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
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
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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
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 |
1×
4×
2×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
6×
6×
1×
1×
1×
1×
1×
1×
1×
1×
6×
6×
1×
1×
1×
1×
1×
1×
| 'use strict';
// istanbul ignore next
var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; Iif (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); Iif (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else Eif ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };
// istanbul ignore next
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; Eif ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { Eif (protoProps) defineProperties(Constructor.prototype, protoProps); Iif (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
// istanbul ignore next
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
// istanbul ignore next
function _inherits(subClass, superClass) { Iif (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); Eif (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
// istanbul ignore next
function _classCallCheck(instance, Constructor) { Iif (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
var _reactAddons = require('react/addons');
var _reactAddons2 = _interopRequireDefault(_reactAddons);
var _chai = require('chai');
var _sinon = require('sinon');
var _sinon2 = _interopRequireDefault(_sinon);
var _Utils = require('../Utils');
var _ = require('../');
describe('Utils', function () {
describe('onPrototype', function () {
var Foo = (function () {
function Foo() {
_classCallCheck(this, Foo);
}
_createClass(Foo, [{
key: 'a',
value: function a() {}
}, {
key: 'b',
value: function b() {}
}, {
key: 'componentDidUpdate',
value: function componentDidUpdate() {}
}]);
return Foo;
})();
var lifecycleSpy = _sinon2['default'].spy();
var methodSpy = _sinon2['default'].spy();
(0, _Utils.onPrototype)(Foo, lifecycleSpy, methodSpy);
(0, _chai.expect)(lifecycleSpy.callCount).to.equal(1);
(0, _chai.expect)(lifecycleSpy.args[0][0]).to.equal(Foo.prototype);
(0, _chai.expect)(lifecycleSpy.args[0][1]).to.equal('componentDidUpdate');
(0, _chai.expect)(methodSpy.callCount).to.equal(2);
(0, _chai.expect)(methodSpy.args[0][0]).to.equal(Foo.prototype);
(0, _chai.expect)(methodSpy.args[0][1]).to.equal('a');
(0, _chai.expect)(methodSpy.args[1][1]).to.equal('b');
});
(0, _.describeWithDOM)('getNode', function () {
it('should return a DOMNode when a DOMComponent is given', function () {
var div = (0, _.mount)(_reactAddons2['default'].createElement('div', null)).node;
(0, _chai.expect)((0, _Utils.getNode)(div)).to.be.instanceOf(window.HTMLElement);
});
it('should return the component when a component is given', function () {
var Foo = (function (_React$Component) {
_inherits(Foo, _React$Component);
function Foo() {
_classCallCheck(this, Foo);
_get(Object.getPrototypeOf(Foo.prototype), 'constructor', this).apply(this, arguments);
}
_createClass(Foo, [{
key: 'render',
value: function render() {
return _reactAddons2['default'].createElement('div', null);
}
}]);
return Foo;
})(_reactAddons2['default'].Component);
var foo = (0, _.mount)(_reactAddons2['default'].createElement(Foo, null)).node;
(0, _chai.expect)((0, _Utils.getNode)(foo)).to.equal(foo);
});
});
describe('nodeEqual', function () {
it('should match empty elements of same tag', function () {
(0, _chai.expect)((0, _Utils.nodeEqual)(_reactAddons2['default'].createElement('div', null), _reactAddons2['default'].createElement('div', null))).to.be['true'];
});
it('should not match empty elements of different type', function () {
(0, _chai.expect)((0, _Utils.nodeEqual)(_reactAddons2['default'].createElement('div', null), _reactAddons2['default'].createElement('nav', null))).to.be['false'];
});
it('should match basic prop types', function () {
(0, _chai.expect)((0, _Utils.nodeEqual)(_reactAddons2['default'].createElement('div', { className: 'foo' }), _reactAddons2['default'].createElement('div', { className: 'foo' }))).to.be['true'];
(0, _chai.expect)((0, _Utils.nodeEqual)(_reactAddons2['default'].createElement('div', { id: 'foo', className: 'bar' }), _reactAddons2['default'].createElement('div', { id: 'foo', className: 'bar' }))).to.be['true'];
(0, _chai.expect)((0, _Utils.nodeEqual)(_reactAddons2['default'].createElement('div', { id: 'foo', className: 'baz' }), _reactAddons2['default'].createElement('div', { id: 'foo', className: 'bar' }))).to.be['false'];
});
it('should check children as well', function () {
(0, _chai.expect)((0, _Utils.nodeEqual)(_reactAddons2['default'].createElement(
'div',
null,
_reactAddons2['default'].createElement('div', null)
), _reactAddons2['default'].createElement('div', null))).to.be['false'];
(0, _chai.expect)((0, _Utils.nodeEqual)(_reactAddons2['default'].createElement(
'div',
null,
_reactAddons2['default'].createElement('div', null)
), _reactAddons2['default'].createElement(
'div',
null,
_reactAddons2['default'].createElement('div', null)
))).to.be['true'];
(0, _chai.expect)((0, _Utils.nodeEqual)(_reactAddons2['default'].createElement(
'div',
null,
_reactAddons2['default'].createElement('div', { className: 'foo' })
), _reactAddons2['default'].createElement(
'div',
null,
_reactAddons2['default'].createElement('div', { className: 'foo' })
))).to.be['true'];
(0, _chai.expect)((0, _Utils.nodeEqual)(_reactAddons2['default'].createElement(
'div',
null,
_reactAddons2['default'].createElement('div', { className: 'foo' })
), _reactAddons2['default'].createElement(
'div',
null,
_reactAddons2['default'].createElement('div', null)
))).to.be['false'];
});
it('should test deepEquality with object props', function () {
(0, _chai.expect)((0, _Utils.nodeEqual)(_reactAddons2['default'].createElement('div', { foo: { a: 1, b: 2 } }), _reactAddons2['default'].createElement('div', { foo: { a: 1, b: 2 } }))).to.be['true'];
(0, _chai.expect)((0, _Utils.nodeEqual)(_reactAddons2['default'].createElement('div', { foo: { a: 2, b: 2 } }), _reactAddons2['default'].createElement('div', { foo: { a: 1, b: 2 } }))).to.be['false'];
});
});
describe('propFromEvent', function () {
var fn = _Utils.propFromEvent;
it('should work', function () {
(0, _chai.expect)(fn('click')).to.equal('onClick');
(0, _chai.expect)(fn('mouseEnter')).to.equal('onMouseEnter');
});
});
describe('iuSimpleSelector', function () {
describe('prohibited selectors', function () {
function isComplex(selector) {
it(selector, function () {
(0, _chai.expect)((0, _Utils.isSimpleSelector)(selector)).to.be['false'];
});
}
isComplex('.foo .bar');
isComplex('input[name="foo"]');
isComplex(':visible');
isComplex('.foo>.bar');
isComplex('.foo > .bar');
isComplex('.foo~.bar');
});
describe('allowed selectors', function () {
function isSimple(selector) {
it(selector, function () {
(0, _chai.expect)((0, _Utils.isSimpleSelector)(selector)).to.be['true'];
});
}
isSimple('.foo');
isSimple('.foo-and-foo');
isSimple('.FoOaNdFoO');
isSimple('tag');
isSimple('.foo.bar');
isSimple('input.foo');
});
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9sZWxhbmRfcmljaGFyZHNvbi9jb2RlL3JlYWdlbnQvc3JjL19fdGVzdHNfXy9VdGlscy1zcGVjLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MkJBQWtCLGNBQWM7Ozs7b0JBQ1QsTUFBTTs7cUJBQ1gsT0FBTzs7OztxQkFPbEIsVUFBVTs7Z0JBSVYsS0FBSzs7QUFFWixRQUFRLENBQUMsT0FBTyxFQUFFLFlBQU07O0FBRXRCLFVBQVEsQ0FBQyxhQUFhLEVBQUUsWUFBTTtRQUN0QixHQUFHO2VBQUgsR0FBRzs4QkFBSCxHQUFHOzs7bUJBQUgsR0FBRzs7ZUFDTixhQUFHLEVBQUU7OztlQUNMLGFBQUcsRUFBRTs7O2VBQ1ksOEJBQUcsRUFBRTs7O2FBSG5CLEdBQUc7OztBQU1ULFFBQU0sWUFBWSxHQUFHLG1CQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ2pDLFFBQU0sU0FBUyxHQUFHLG1CQUFNLEdBQUcsRUFBRSxDQUFDOztBQUU5Qiw0QkFBWSxHQUFHLEVBQUUsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDOztBQUUxQyxzQkFBTyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQyxzQkFBTyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDeEQsc0JBQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQzs7QUFFL0Qsc0JBQU8sU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEMsc0JBQU8sU0FBUyxDQUFDLElBQUksQ0FB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O0FBQ2hCLGNBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNyQixjQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7S0FFdkIsQ0FBQyxDQUFDO0dBRUosQ0FBQyxDQUFDO0NBRUosQ0FBQyxDQUFDIiwiZmlsZSI6Ii9Vc2Vycy9sZWxhbmRfcmljaGFyZHNvbi9jb2RlL3JlYWdlbnQvc3JjL19fdGVzdHNfXy9VdGlscy1zcGVjLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0L2FkZG9ucyc7XG5pbXBvcnQgeyBleHBlY3QgfSBmcm9tICdjaGFpJztcbmltcG9ydCBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQge1xuICBvblByb3RvdHlwZSxcbiAgZ2V0Tm9kZSxcbiAgbm9kZUVxdWFsLFxuICBpc1NpbXBsZVNlbGVjdG9yLFxuICBwcm9wRnJvbUV2ZW50LFxufSBmcm9tICcuLi9VdGlscyc7XG5pbXBvcnQge1xuICBkZXNjcmliZVdpdGhET00sXG4gIG1vdW50LFxufSBmcm9tICcuLi8nO1xuXG5kZXNjcmliZSgnVXRpbHMnLCAoKSA9PiB7XG5cbiAgZGVzY3JpYmUoJ29uUHJvdG90eXBlJywgKCkgPT4ge1xuICAgIGNsYXNzIEZvbyB7XG4gICAgICBhKCkge31cbiAgICAgIGIoKSB7fVxuICAgICAgY29tcG9uZW50RGlkVXBkYXRlKCkge31cbiAgICB9XG5cbiAgICBjb25zdCBsaWZlY3ljbGVTcHkgPSBzaW5vbi5zcHkoKTtcbiAgICBjb25zdCBtZXRob2RTcHkgPSBzaW5vbi5zcHkoKTtcblxuICAgIG9uUHJvdG90eXBlKEZvbywgbGlmZWN5Y2xlU3B5LCBtZXRob2RTcHkpO1xuXG4gICAgZXhwZWN0KGxpZmVjeWNsZVNweS5jYWxsQ291bnQpLnRvLmVxdWFsKDEpO1xuICAgIGV4cGVjdChsaWZlY3ljbGVTcHkuYXJnc1swXVswXSkudG8uZXF1YWwoRm9vLnByb3RvdHlwZSk7XG4gICAgZXhwZWN0KGxpZmVjeWNsZVNweS5hcmdzWzBdWzFdKS50by5lcXVhbCgnY29tcG9uZW50RGlkVXBkYXRlJyk7XG5cbiAgICBleHBlY3QobWV0aG9kU3B5LmNhbGxDb3VudCkudG8uZXF1YWwoMik7XG4gICAgZXhwZWN0KG1ldGhvZFNweS5hcmdzWzBdWzBdKS50by5lcXVhbChGb28ucHJvdG90eXBlKTtcbiAgICBleHBlY3QobWV0aG9kU3B5LmFyZ3NbMF1bMV0pLnRvLmVxdWFsKCdhJyk7XG4gICAgZXhwZWN0KG1ldGhvZFNweS5hcmdzWzFdWzFdKS50by5lcXVhbCgnYicpO1xuXG4gIH0pO1xuXG4gIGRlc2NyaWJlV2l0aERPTSgnZ2V0Tm9kZScsICgpID0+IHtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgRE9NTm9kZSB3aGVuIGEgRE9NQ29tcG9uZW50IGlzIGdpdmVuJywgKCkgPT4ge1xuICAgICAgY29uc3QgZGl2ID0gbW91bnQoPGRpdiAvPikubm9kZTtcbiAgICAgIGV4cGVjdChnZXROb2RlKGRpdikpLnRvLmJlLmluc3RhbmNlT2Yod2luZG93LkhUTUxFbGVtZW50KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBjb21wb25lbnQgd2hlbiBhIGNvbXBvbmVudCBpcyBnaXZlbicsICgpID0+IHtcbiAgICAgIGNsYXNzIEZvbyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gICAgICAgIHJlbmRlcigpIHsgcmV0dXJuIDxkaXYgLz47IH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IGZvbyA9IG1vdW50KDxGb28gLz4pLm5vZGU7XG4gICAgICBleHBlY3QoZ2V0Tm9kZShmb28pKS50by5lcXVhbChmb28pO1xuICAgIH0pO1xuXG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdub2RlRXF1YWwnLCAoKSA9PiB7XG5cbiAgICBpdCgnc2hvdWxkIG1hdGNoIGVtcHR5IGVsZW1lbnRzIG9mIHNhbWUgdGFnJywgKCkgPT4ge1xuXG4gICAgICBleHBlY3Qobm9kZUVxdWFsKFxuICAgICAgICA8ZGl2IC8+LFxuICAgICAgICA8ZGl2IC8+XG4gICAgICApKS50by5iZS50cnVlO1xuXG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIG5vdCBtYXRjaCBlbXB0eSBlbGVtZW50cyBvZiBkaWZmZXJlbnQgdHlwZScsICgpID0+IHtcblxuICAgICAgZXhwZWN0KG5vZGVFcXVhbChcbiAgICAgICAgPGRpdiAvPixcbiAgICAgICAgPG5hdiAvPlxuICAgICAgKSkudG8uYmUuZmFsc2U7XG5cbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbWF0Y2ggYmFzaWMgcHJvcCB0eXBlcycsICgpID0+IHtcblxuICAgICAgZXhwZWN0KG5vZGVFcXVhbChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb29cIiAvPixcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb29cIiAvPlxuICAgICAgKSkudG8uYmUudHJ1ZTtcblxuICAgICAgZXhwZWN0KG5vZGVFcXVhbChcbiAgICAgICAgPGRpdiBpZD1cImZvb1wiIGNsYXNzTmFtZT1cImJhclwiIC8+LFxuICAgICAgICA8ZGl2IGlkPVwiZm9vXCIgY2xhc3NOYW1lPVwiYmFyXCIgLz5cbiAgICAgICkpLnRvLmJlLnRydWU7XG5cbiAgICAgIGV4cGVjdChub2RlRXF1YWwoXG4gICAgICAgIDxkaXYgaWQ9XCJmb29cIiBjbGFzc05hbWU9XCJiYXpcIiAvPixcbiAgICAgICAgPGRpdiBpZD1cImZvb1wiIGNsYXNzTmFtZT1cImJhclwiIC8+XG4gICAgICApKS50by5iZS5mYWxzZTtcblxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjaGVjayBjaGlsZHJlbiBhcyB3ZWxsJywgKCkgPT4ge1xuXG4gICAgICBleHBlY3Qobm9kZUVxdWFsKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgPC9kaXY+LFxuICAgICAgICA8ZGl2IC8+XG4gICAgICApKS50by5iZS5mYWxzZTtcblxuICAgICAgZXhwZWN0KG5vZGVFcXVhbChcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgIDwvZGl2PixcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSkudG8uYmUudHJ1ZTtcblxuICAgICAgZXhwZWN0KG5vZGVFcXVhbChcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvb1wiIC8+XG4gICAgICAgIDwvZGl2PixcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvb1wiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSkudG8uYmUudHJ1ZTtcblxuICAgICAgZXhwZWN0KG5vZGVFcXVhbChcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvb1wiIC8+XG4gICAgICAgIDwvZGl2PixcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSkudG8uYmUuZmFsc2U7XG5cbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGVzdCBkZWVwRXF1YWxpdHkgd2l0aCBvYmplY3QgcHJvcHMnLCAoKSA9PiB7XG5cbiAgICAgIGV4cGVjdChub2RlRXF1YWwoXG4gICAgICAgIDxkaXYgZm9vPXt7IGE6IDEsIGI6IDIgfX0gLz4sXG4gICAgICAgIDxkaXYgZm9vPXt7IGE6IDEsIGI6IDIgfX0gLz5cbiAgICAgICkpLnRvLmJlLnRydWU7XG5cbiAgICAgIGV4cGVjdChub2RlRXF1YWwoXG4gICAgICAgIDxkaXYgZm9vPXt7IGE6IDIsIGI6IDIgfX0gLz4sXG4gICAgICAgIDxkaXYgZm9vPXt7IGE6IDEsIGI6IDIgfX0gLz5cbiAgICAgICkpLnRvLmJlLmZhbHNlO1xuXG4gICAgfSk7XG5cbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Byb3BGcm9tRXZlbnQnLCAoKSA9PiB7XG5cbiAgICBjb25zdCBmbiA9IHByb3BGcm9tRXZlbnQ7XG5cbiAgICBpdCgnc2hvdWxkIHdvcmsnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoZm4oJ2NsaWNrJykpLnRvLmVxdWFsKCdvbkNsaWNrJyk7XG4gICAgICBleHBlY3QoZm4oJ21vdXNlRW50ZXInKSkudG8uZXF1YWwoJ29uTW91c2VFbnRlcicpO1xuICAgIH0pO1xuXG4gIH0pO1xuXG5cbiAgZGVzY3JpYmUoJ2l1U2ltcGxlU2VsZWN0b3InLCAoKSA9PiB7XG5cbiAgICBkZXNjcmliZSgncHJvaGliaXRlZCBzZWxlY3RvcnMnLCAoKSA9PiB7XG4gICAgICBmdW5jdGlvbiBpc0NvbXBsZXgoc2VsZWN0b3IpIHtcbiAgICAgICAgaXQoc2VsZWN0b3IsICgpID0+IHtcbiAgICAgICAgICBleHBlY3QoaXNTaW1wbGVTZWxlY3RvcihzZWxlY3RvcikpLnRvLmJlLmZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaXNDb21wbGV4KCcuZm9vIC5iYXInKTtcbiAgICAgIGlzQ29tcGxleCgnaW5wdXRbbmFtZT1cImZvb1wiXScpO1xuICAgICAgaXNDb21wbGV4KCc6dmlzaWJsZScpO1xuICAgICAgaXNDb21wbGV4KCcuZm9vPi5iYXInKTtcbiAgICAgIGlzQ29tcGxleCgnLmZvbyA+IC5iYXInKTtcbiAgICAgIGlzQ29tcGxleCgnLmZvb34uYmFyJyk7XG5cbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdhbGxvd2VkIHNlbGVjdG9ycycsICgpID0+IHtcbiAgICAgIGZ1bmN0aW9uIGlzU2ltcGxlKHNlbGVjdG9yKSB7XG4gICAgICAgIGl0KHNlbGVjdG9yLCAoKSA9PiB7XG4gICAgICAgICAgZXhwZWN0KGlzU2ltcGxlU2VsZWN0b3Ioc2VsZWN0b3IpKS50by5iZS50cnVlO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaXNTaW1wbGUoJy5mb28nKTtcbiAgICAgIGlzU2ltcGxlKCcuZm9vLWFuZC1mb28nKTtcbiAgICAgIGlzU2ltcGxlKCcuRm9PYU5kRm9PJyk7XG4gICAgICBpc1NpbXBsZSgndGFnJyk7XG4gICAgICBpc1NpbXBsZSgnLmZvby5iYXInKTtcbiAgICAgIGlzU2ltcGxlKCdpbnB1dC5mb28nKTtcblxuICAgIH0pO1xuXG4gIH0pO1xuXG59KTtcbiJdfQ== |