appium-ios-simulator 4.1.7 → 4.2.0
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
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## [4.2.0](https://github.com/appium/appium-ios-simulator/compare/v4.1.8...v4.2.0) (2022-12-09)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* add setReduceTransparency ([#342](https://github.com/appium/appium-ios-simulator/issues/342)) ([ef57f51](https://github.com/appium/appium-ios-simulator/commit/ef57f51570a756b999bf1b0739b8d7149e1a1b0d))
|
|
7
|
+
|
|
8
|
+
## [4.1.8](https://github.com/appium/appium-ios-simulator/compare/v4.1.7...v4.1.8) (2022-12-09)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Miscellaneous Chores
|
|
12
|
+
|
|
13
|
+
* Bump fs-extra from 10.1.0 to 11.1.0 ([#340](https://github.com/appium/appium-ios-simulator/issues/340)) ([14b9e4c](https://github.com/appium/appium-ios-simulator/commit/14b9e4c949839b399fbf7b172a6ac98994c73c7b))
|
|
14
|
+
|
|
1
15
|
## [4.1.7](https://github.com/appium/appium-ios-simulator/compare/v4.1.6...v4.1.7) (2022-12-01)
|
|
2
16
|
|
|
3
17
|
|
package/build/lib/settings.js
CHANGED
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.read = read;
|
|
8
8
|
exports.readSettings = readSettings;
|
|
9
9
|
exports.setReduceMotion = setReduceMotion;
|
|
10
|
+
exports.setReduceTransparency = setReduceTransparency;
|
|
10
11
|
exports.stub = stub;
|
|
11
12
|
exports.update = update;
|
|
12
13
|
exports.updateLocale = updateLocale;
|
|
@@ -144,6 +145,15 @@ async function setReduceMotion(sim, reduceMotion = true) {
|
|
|
144
145
|
});
|
|
145
146
|
}
|
|
146
147
|
}
|
|
148
|
+
async function setReduceTransparency(sim, reduceTransparency) {
|
|
149
|
+
_logger.default.debug(`Updating reduce tranceparency. Setting to ${reduceTransparency}.`);
|
|
150
|
+
const paths = await plistPaths(sim, 'accessibilitySettings');
|
|
151
|
+
for (const file of paths) {
|
|
152
|
+
await update(file, {
|
|
153
|
+
EnhancedBackgroundContrastEnabled: reduceTransparency ? 1 : 0
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
147
157
|
async function updateSafariGlobalSettings(sim, settingSet) {
|
|
148
158
|
_logger.default.debug('Updating Safari global settings');
|
|
149
159
|
let updated = false;
|
|
@@ -230,4 +240,4 @@ async function updateLocale(sim, language, locale, calendarFormat) {
|
|
|
230
240
|
async function stub() {
|
|
231
241
|
return await plistPaths;
|
|
232
242
|
}
|
|
233
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwbGlzdFBhdGhzIiwic2ltIiwiaWRlbnRpZmllciIsInBhdGhzIiwic2ltRGlyZWN0b3J5IiwiZ2V0RGlyIiwicHVzaCIsInBhdGgiLCJyZXNvbHZlIiwiZ2V0QXBwRGlyIiwic2VtdmVyIiwibHQiLCJjb2VyY2UiLCJ4Y29kZVZlcnNpb24iLCJ2ZXJzaW9uU3RyaW5nIiwidXBkYXRlU2V0dGluZ3MiLCJwbGlzdCIsInVwZGF0ZXMiLCJCIiwicmVkdWNlIiwicmVkdWNlciIsInVwZGF0ZWQiLCJ1cGRhdGUiLCJwYXRoVG9QbGlzdCIsImN1cnJlbnRTZXR0aW5ncyIsInJlYWQiLCJuZXdTZXR0aW5ncyIsIk9iamVjdCIsImFzc2lnbiIsIl8iLCJpc0VxdWFsIiwidXBkYXRlUGxpc3RGaWxlIiwicmVhZFNldHRpbmdzIiwic2V0dGluZ3MiLCJwYXJzZVBsaXN0RmlsZSIsInVwZGF0ZUxvY2F0aW9uU2V0dGluZ3MiLCJidW5kbGVJZCIsImF1dGhvcml6ZWQiLCJuZXdDYWNoZVByZWZzIiwiTGFzdEZlbmNlQWN0aXZpdHlUaW1lc3RhbXAiLCJDbGVhblNodXRkb3duIiwibmV3Q2xpZW50UHJlZnMiLCJCdW5kbGVJZCIsIkF1dGhvcml6ZWQiLCJXaGl0ZWxpc3RlZCIsImZpbGUiLCJsb2ciLCJkZWJ1ZyIsIndlaXJkTG9jS2V5IiwiaGFzIiwiQnVuZGxlUGF0aCIsIkV4ZWN1dGFibGUiLCJSZWdpc3RlcmVkIiwiYmFzZVNldHRpbmciLCJkZWZhdWx0cyIsInNldFJlZHVjZU1vdGlvbiIsInJlZHVjZU1vdGlvbiIsIlJlZHVjZU1vdGlvbkVuYWJsZWQiLCJ1cGRhdGVTYWZhcmlHbG9iYWxTZXR0aW5ncyIsInNldHRpbmdTZXQiLCJzYWZhcmlTZXR0aW5nU2V0IiwidG9QYWlycyIsImtleSIsInZhbHVlIiwiaXNFbXB0eSIsInVwZGF0ZVNhZmFyaVVzZXJTZXR0aW5ncyIsIm5ld1VzZXJTZXR0aW5ncyIsInNhZmFyaUFsbG93SmF2YVNjcmlwdCIsIldlYktpdEphdmFTY3JpcHRFbmFibGVkIiwic2FmYXJpQWxsb3dQb3B1cHMiLCJXZWJLaXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5Iiwic2FmYXJpRm9yY2VGcmF1ZFdhcm5pbmciLCJXYXJuQWJvdXRGcmF1ZHVsZW50V2Vic2l0ZXMiLCJ1c2VyU2V0dGluZ1NldCIsInJlc3RyaWN0ZWRCb29sIiwidXBkYXRlTG9jYWxlIiwibGFuZ3VhZ2UiLCJsb2NhbGUiLCJjYWxlbmRhckZvcm1hdCIsImdsb2JhbFByZWZzIiwiZGF0YSIsInN1cHBvcnRlZExhbmdzIiwiQXBwbGVMYW5ndWFnZXMiLCJpbmRleE9mIiwiY29uY2F0Iiwid2l0aG91dCIsImNhbFNwbGl0IiwiY3VyTG9jYWxlQW5kQ2FsIiwiQXBwbGVMb2NhbGUiLCJzcGxpdCIsImN1ckxvYyIsIm5ld0xvY2FsZUFuZENhbCIsInNpemUiLCJzdHViIl0sInNvdXJjZXMiOlsiLi4vLi4vbGliL3NldHRpbmdzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBwbGlzdCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuXG5cbi8vIHJldHVybnMgcGF0aCB0byBwbGlzdCBiYXNlZCBvbiBpZCBmb3IgcGxpc3QuXG4vLyB0aGVzZSBpZHMgYXJlIGFwcGl1bSB0ZXJtc1xuYXN5bmMgZnVuY3Rpb24gcGxpc3RQYXRocyAoc2ltLCBpZGVudGlmaWVyKSB7XG4gIGxldCBwYXRocyA9IFtdO1xuICBsZXQgc2ltRGlyZWN0b3J5ID0gc2ltLmdldERpcigpO1xuXG4gIHN3aXRjaCAoaWRlbnRpZmllcikge1xuICAgIGNhc2UgJ3dlYkluc3BlY3Rvcic6XG4gICAgICBwYXRocy5wdXNoKHBhdGgucmVzb2x2ZShzaW1EaXJlY3RvcnksICdMaWJyYXJ5JywgJ1ByZWZlcmVuY2VzJywgJ2NvbS5hcHBsZS53ZWJJbnNwZWN0b3IucGxpc3QnKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdtb2JpbGVTYWZhcmknOlxuICAgICAgcGF0aHMucHVzaChwYXRoLnJlc29sdmUoYXdhaXQgc2ltLmdldEFwcERpcignY29tLmFwcGxlLm1vYmlsZXNhZmFyaScpLCAnTGlicmFyeScsICdQcmVmZXJlbmNlcycsICdjb20uYXBwbGUubW9iaWxlc2FmYXJpLnBsaXN0JykpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZ2xvYmFsTW9iaWxlU2FmYXJpJzpcbiAgICAgIHBhdGhzLnB1c2gocGF0aC5yZXNvbHZlKHNpbURpcmVjdG9yeSwgJ0xpYnJhcnknLCAnUHJlZmVyZW5jZXMnLCAnY29tLmFwcGxlLm1vYmlsZXNhZmFyaS5wbGlzdCcpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dlYlVJJzpcbiAgICAgIHBhdGhzLnB1c2gocGF0aC5yZXNvbHZlKHNpbURpcmVjdG9yeSwgJ0xpYnJhcnknLCAnUHJlZmVyZW5jZXMnLCAnY29tLmFwcGxlLldlYlVJLnBsaXN0JykpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnd2ViRm91bmRhdGlvbic6XG4gICAgICBwYXRocy5wdXNoKHBhdGgucmVzb2x2ZShzaW1EaXJlY3RvcnksICdMaWJyYXJ5JywgJ1ByZWZlcmVuY2VzJywgJ2NvbS5hcHBsZS5XZWJGb3VuZGF0aW9uLnBsaXN0JykpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncHJlZmVyZW5jZXMnOlxuICAgICAgcGF0aHMucHVzaChwYXRoLnJlc29sdmUoc2ltRGlyZWN0b3J5LCAnTGlicmFyeScsICdQcmVmZXJlbmNlcycsICdjb20uYXBwbGUuUHJlZmVyZW5jZXMucGxpc3QnKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdsb2NhdGlvblNlcnZpY2VzJzpcbiAgICAgIHBhdGhzLnB1c2gocGF0aC5yZXNvbHZlKHNpbURpcmVjdG9yeSwgJ0xpYnJhcnknLCAnUHJlZmVyZW5jZXMnLCAnY29tLmFwcGxlLmxvY2F0aW9uZC5wbGlzdCcpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2xvY2F0aW9uQ2xpZW50cyc6XG4gICAgICBwYXRocy5wdXNoKHBhdGgucmVzb2x2ZShzaW1EaXJlY3RvcnksICdMaWJyYXJ5JywgJ0NhY2hlcycsICdsb2NhdGlvbmQnLCAnY2xpZW50cy5wbGlzdCcpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2xvY2F0aW9uQ2FjaGUnOlxuICAgICAgcGF0aHMucHVzaChwYXRoLnJlc29sdmUoc2ltRGlyZWN0b3J5LCAnTGlicmFyeScsICdDYWNoZXMnLCAnbG9jYXRpb25kJywgJ2NhY2hlLnBsaXN0JykpO1xuICAgICAgcGF0aHMucHVzaChwYXRoLnJlc29sdmUoc2ltRGlyZWN0b3J5LCAnTGlicmFyeScsICdQcmVmZXJlbmNlcycsICdjb20uYXBwbGUubG9jYXRpb25kLnBsaXN0JykpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndXNlclNldHRpbmdzJzpcbiAgICAgIGlmIChzZW12ZXIubHQoc2VtdmVyLmNvZXJjZShzaW0ueGNvZGVWZXJzaW9uLnZlcnNpb25TdHJpbmcpLCBzZW12ZXIuY29lcmNlKCc3LjMnKSkpIHtcbiAgICAgICAgcGF0aHMucHVzaChwYXRoLnJlc29sdmUoc2ltRGlyZWN0b3J5LCAnTGlicmFyeScsICdDb25maWd1cmF0aW9uUHJvZmlsZXMnLCAnVXNlclNldHRpbmdzLnBsaXN0JykpO1xuICAgICAgICBwYXRocy5wdXNoKHBhdGgucmVzb2x2ZShzaW1EaXJlY3RvcnksICdMaWJyYXJ5JywgJ0NvbmZpZ3VyYXRpb25Qcm9maWxlcycsICdFZmZlY3RpdmVVc2VyU2V0dGluZ3MucGxpc3QnKSk7XG4gICAgICAgIHBhdGhzLnB1c2gocGF0aC5yZXNvbHZlKHNpbURpcmVjdG9yeSwgJ0xpYnJhcnknLCAnQ29uZmlndXJhdGlvblByb2ZpbGVzJywgJ1B1YmxpY0luZm8nLCAnUHVibGljRWZmZWN0aXZlVXNlclNldHRpbmdzLnBsaXN0JykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGF0aHMucHVzaChwYXRoLnJlc29sdmUoc2ltRGlyZWN0b3J5LCAnTGlicmFyeScsICdVc2VyQ29uZmlndXJhdGlvblByb2ZpbGVzJywgJ1VzZXJTZXR0aW5ncy5wbGlzdCcpKTtcbiAgICAgICAgcGF0aHMucHVzaChwYXRoLnJlc29sdmUoc2ltRGlyZWN0b3J5LCAnTGlicmFyeScsICdVc2VyQ29uZmlndXJhdGlvblByb2ZpbGVzJywgJ0VmZmVjdGl2ZVVzZXJTZXR0aW5ncy5wbGlzdCcpKTtcbiAgICAgICAgcGF0aHMucHVzaChwYXRoLnJlc29sdmUoc2ltRGlyZWN0b3J5LCAnTGlicmFyeScsICdVc2VyQ29uZmlndXJhdGlvblByb2ZpbGVzJywgJ1B1YmxpY0luZm8nLCAnUHVibGljRWZmZWN0aXZlVXNlclNldHRpbmdzLnBsaXN0JykpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZWZmZWN0aXZlVXNlclNldHRpbmdzJzpcbiAgICAgIHBhdGhzLnB1c2gocGF0aC5yZXNvbHZlKHNpbURpcmVjdG9yeSwgJ0xpYnJhcnknLCAnQ29uZmlndXJhdGlvblByb2ZpbGVzJywgJ0VmZmVjdGl2ZVVzZXJTZXR0aW5ncy5wbGlzdCcpKTtcbiAgICAgIHBhdGhzLnB1c2gocGF0aC5yZXNvbHZlKHNpbURpcmVjdG9yeSwgJ0xpYnJhcnknLCAnQ29uZmlndXJhdGlvblByb2ZpbGVzJywgJ1B1YmxpY0luZm8nLCAnUHVibGljRWZmZWN0aXZlVXNlclNldHRpbmdzLnBsaXN0JykpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYWNjZXNzaWJpbGl0eVNldHRpbmdzJzpcbiAgICAgIHBhdGhzLnB1c2gocGF0aC5yZXNvbHZlKHNpbURpcmVjdG9yeSwgJ0xpYnJhcnknLCAnUHJlZmVyZW5jZXMnLCAnY29tLmFwcGxlLkFjY2Vzc2liaWxpdHkucGxpc3QnKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd1aVN0eWxlU2V0dGluZ3MnOlxuICAgICAgcGF0aHMucHVzaChwYXRoLnJlc29sdmUoc2ltRGlyZWN0b3J5LCAnTGlicmFyeScsICdQcmVmZXJlbmNlcycsICdjb20uYXBwbGUudWlraXRzZXJ2aWNlcy51c2VySW50ZXJmYWNlU3R5bGVNb2RlLnBsaXN0JykpO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gcGF0aHM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVNldHRpbmdzIChzaW0sIHBsaXN0LCB1cGRhdGVzKSB7XG4gIHJldHVybiBhd2FpdCBCLnJlZHVjZShhd2FpdCBwbGlzdFBhdGhzKHNpbSwgcGxpc3QpLCBhc3luYyBmdW5jdGlvbiByZWR1Y2VyICh1cGRhdGVkLCBwYXRoKSB7XG4gICAgcmV0dXJuIGF3YWl0IHVwZGF0ZShwYXRoLCB1cGRhdGVzKSB8fCB1cGRhdGVkO1xuICB9LCBmYWxzZSk7XG59XG5cbi8vIHVwZGF0ZSBhIHBsaXN0IGZpbGUsIGxvY2F0ZWQgYXQgcGF0aFRvUGxpc3Rcbi8vIHBhc3MgaW4gYW4gb2JqZWN0LCBhbGwgc2V0dGluZ3Mgc3BlY2lmaWVkIGluIHRoZSBvYmplY3Qgd2lsbCBiZVxuLy8gdXBkYXRlZCBvbiB0aGUgcGxpc3QsIGFsbCBvdGhlcnMgbGVmdCBhcy1pc1xuYXN5bmMgZnVuY3Rpb24gdXBkYXRlIChwYXRoVG9QbGlzdCwgdXBkYXRlcykge1xuICBjb25zdCBjdXJyZW50U2V0dGluZ3MgPSBhd2FpdCByZWFkKHBhdGhUb1BsaXN0KTtcbiAgY29uc3QgbmV3U2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCBjdXJyZW50U2V0dGluZ3MsIHVwZGF0ZXMpO1xuXG4gIGlmIChfLmlzRXF1YWwoY3VycmVudFNldHRpbmdzLCBuZXdTZXR0aW5ncykpIHtcbiAgICAvLyBubyBzZXR0aW5nIGNoYW5nZXMsIHNvIGRvIG5vdGhpbmdcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBhd2FpdCBwbGlzdC51cGRhdGVQbGlzdEZpbGUocGF0aFRvUGxpc3QsIG5ld1NldHRpbmdzLCB0cnVlLCBmYWxzZSk7XG4gIHJldHVybiB0cnVlO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkU2V0dGluZ3MgKHNpbSwgcGxpc3QpIHtcbiAgbGV0IHNldHRpbmdzID0ge307XG4gIGZvciAobGV0IHBhdGggb2YgYXdhaXQgcGxpc3RQYXRocyhzaW0sIHBsaXN0KSkge1xuICAgIHNldHRpbmdzW3BhdGhdID0gYXdhaXQgcmVhZChwYXRoKTtcbiAgfVxuICByZXR1cm4gc2V0dGluZ3M7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWQgKHBhdGhUb1BsaXN0KSB7XG4gIHJldHVybiBhd2FpdCBwbGlzdC5wYXJzZVBsaXN0RmlsZShwYXRoVG9QbGlzdCwgZmFsc2UpO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1cGRhdGVMb2NhdGlvblNldHRpbmdzIChzaW0sIGJ1bmRsZUlkLCBhdXRob3JpemVkKSB7XG4gIC8vIHVwZGF0ZSBsb2NhdGlvbiBjYWNoZVxuICBjb25zdCBuZXdDYWNoZVByZWZzID0ge1xuICAgIExhc3RGZW5jZUFjdGl2aXR5VGltZXN0YW1wOiA0MTIxMjIxMDMuMjMyOTgzLFxuICAgIENsZWFuU2h1dGRvd246IHRydWVcbiAgfTtcbiAgbGV0IHVwZGF0ZWQgPSBhd2FpdCB1cGRhdGVTZXR0aW5ncyhzaW0sICdsb2NhdGlvbkNhY2hlJywge1tidW5kbGVJZF06IG5ld0NhY2hlUHJlZnN9KTtcblxuICAvLyB1cGRhdGUgbG9jYXRpb24gY2xpZW50c1xuICBjb25zdCBuZXdDbGllbnRQcmVmcyA9IHtcbiAgICBCdW5kbGVJZDogYnVuZGxlSWQsXG4gICAgQXV0aG9yaXplZDogISFhdXRob3JpemVkLFxuICAgIFdoaXRlbGlzdGVkOiBmYWxzZSxcbiAgfTtcbiAgZm9yIChjb25zdCBmaWxlIG9mIGF3YWl0IHBsaXN0UGF0aHMoc2ltLCAnbG9jYXRpb25DbGllbnRzJykpIHtcbiAgICBsb2cuZGVidWcoYFVwZGF0aW5nIGxvY2F0aW9uIGNsaWVudCBmaWxlOiAke2ZpbGV9YCk7XG5cbiAgICBsZXQgdXBkYXRlcyA9IHt9O1xuXG4gICAgLy8gc2VlIGlmIHRoZSBidW5kbGUgaXMgYWxyZWFkeSB0aGVyZVxuICAgIGNvbnN0IHBsaXN0ID0gYXdhaXQgcmVhZChmaWxlKTtcblxuICAgIC8vIHJhbmRvbSBkYXRhIHRoYXQgYWx3YXlzIHNlZW1zIHRvIGJlIGluIHRoZSBjbGllbnRzLnBsaXN0XG4gICAgY29uc3Qgd2VpcmRMb2NLZXkgPSAnY29tLmFwcGxlLmxvY2F0aW9uZC5idW5kbGUtL1N5c3RlbS9MaWJyYXJ5LycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ1ByaXZhdGVGcmFtZXdvcmtzL0FPU05vdGlmaWNhdGlvbi5mcmFtZXdvcmsnO1xuICAgIGlmICghXy5oYXMocGxpc3QsIHdlaXJkTG9jS2V5KSkge1xuICAgICAgdXBkYXRlc1t3ZWlyZExvY0tleV0gPSB7XG4gICAgICAgIEJ1bmRsZVBhdGg6ICcvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvQU9TTm90aWZpY2F0aW9uLmZyYW1ld29yaycsXG4gICAgICAgIFdoaXRlbGlzdGVkOiBmYWxzZSxcbiAgICAgICAgRXhlY3V0YWJsZTogJycsXG4gICAgICAgIFJlZ2lzdGVyZWQ6ICcnXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIGNyZWF0ZSB0aGUgdXBkYXRlLCBhbmQgbWFrZSBzdXJlIGl0IGhhcyBzZW5zaWJsZSB2YWx1ZXNcbiAgICBjb25zdCBiYXNlU2V0dGluZyA9IF8uaGFzKHBsaXN0LCBidW5kbGVJZCkgPyBwbGlzdFtidW5kbGVJZF0gOiB7fTtcbiAgICB1cGRhdGVzW2J1bmRsZUlkXSA9IF8uZGVmYXVsdHMobmV3Q2xpZW50UHJlZnMsIGJhc2VTZXR0aW5nKTtcbiAgICB1cGRhdGVzW2J1bmRsZUlkXS5FeGVjdXRhYmxlID0gdXBkYXRlc1tidW5kbGVJZF0uRXhlY3V0YWJsZSB8fCAnJztcbiAgICB1cGRhdGVzW2J1bmRsZUlkXS5SZWdpc3RlcmVkID0gdXBkYXRlc1tidW5kbGVJZF0uUmVnaXN0ZXJlZCB8fCAnJztcblxuICAgIHVwZGF0ZWQgPSBhd2FpdCB1cGRhdGUoZmlsZSwgdXBkYXRlcykgfHwgdXBkYXRlZDtcbiAgfVxuXG4gIHJldHVybiB1cGRhdGVkO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzZXRSZWR1Y2VNb3Rpb24gKHNpbSwgcmVkdWNlTW90aW9uID0gdHJ1ZSkge1xuICBsb2cuZGVidWcoYFVwZGF0aW5nIHJlZHVjZSBtb3Rpb24uIFNldHRpbmcgdG8gJHtyZWR1Y2VNb3Rpb259LmApO1xuICBjb25zdCBwYXRocyA9IGF3YWl0IHBsaXN0UGF0aHMoc2ltLCAnYWNjZXNzaWJpbGl0eVNldHRpbmdzJyk7XG4gIGZvciAoY29uc3QgZmlsZSBvZiBwYXRocykge1xuICAgIGF3YWl0IHVwZGF0ZShmaWxlLCB7XG4gICAgICBSZWR1Y2VNb3Rpb25FbmFibGVkOiByZWR1Y2VNb3Rpb24gPyAxIDogMFxuICAgIH0pO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVNhZmFyaUdsb2JhbFNldHRpbmdzIChzaW0sIHNldHRpbmdTZXQpIHtcbiAgbG9nLmRlYnVnKCdVcGRhdGluZyBTYWZhcmkgZ2xvYmFsIHNldHRpbmdzJyk7XG5cbiAgbGV0IHVwZGF0ZWQgPSBmYWxzZTtcbiAgZm9yIChjb25zdCBbZmlsZSwgc2FmYXJpU2V0dGluZ1NldF0gb2YgXy50b1BhaXJzKGF3YWl0IHJlYWRTZXR0aW5ncyhzaW0sICdnbG9iYWxNb2JpbGVTYWZhcmknKSkpIHtcbiAgICBsZXQgbmV3U2V0dGluZ3MgPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBfLnRvUGFpcnMoc2V0dGluZ1NldCkpIHtcbiAgICAgIGlmIChzYWZhcmlTZXR0aW5nU2V0W2tleV0gIT09IHZhbHVlKSB7XG4gICAgICAgIG5ld1NldHRpbmdzW2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKF8uaXNFbXB0eShuZXdTZXR0aW5ncykpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHVwZGF0ZWQgPSBhd2FpdCB1cGRhdGUoZmlsZSwgbmV3U2V0dGluZ3MpIHx8IHVwZGF0ZWQ7XG4gIH1cbiAgcmV0dXJuIHVwZGF0ZWQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVNhZmFyaVVzZXJTZXR0aW5ncyAoc2ltLCBzZXR0aW5nU2V0KSB7XG4gIGxvZy5kZWJ1ZygnVXBkYXRpbmcgU2FmYXJpIHVzZXIgc2V0dGluZ3MnKTtcblxuICAvLyBhZGQgZXh0cmEgc3R1ZmYgdG8gVXNlclNldHRpbmdzLnBsaXN0IGFuZCBFZmZlY3RpdmVVc2VyU2V0dGluZ3MucGxpc3RcbiAgbGV0IG5ld1VzZXJTZXR0aW5ncyA9IHt9O1xuICBpZiAoXy5oYXMoc2V0dGluZ1NldCwgJ1dlYktpdEphdmFTY3JpcHRFbmFibGVkJykpIHtcbiAgICBuZXdVc2VyU2V0dGluZ3Muc2FmYXJpQWxsb3dKYXZhU2NyaXB0ID0gc2V0dGluZ1NldC5XZWJLaXRKYXZhU2NyaXB0RW5hYmxlZDtcbiAgfVxuICBpZiAoXy5oYXMoc2V0dGluZ1NldCwgJ1dlYktpdEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHknKSkge1xuICAgIG5ld1VzZXJTZXR0aW5ncy5zYWZhcmlBbGxvd1BvcHVwcyA9IHNldHRpbmdTZXQuV2ViS2l0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseTtcbiAgfVxuICBpZiAoXy5oYXMoc2V0dGluZ1NldCwgJ1dhcm5BYm91dEZyYXVkdWxlbnRXZWJzaXRlcycpKSB7XG4gICAgbmV3VXNlclNldHRpbmdzLnNhZmFyaUZvcmNlRnJhdWRXYXJuaW5nID0gIXNldHRpbmdTZXQuV2FybkFib3V0RnJhdWR1bGVudFdlYnNpdGVzO1xuICB9XG5cbiAgaWYgKF8uaXNFbXB0eShuZXdVc2VyU2V0dGluZ3MpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgbGV0IHVwZGF0ZWQgPSBmYWxzZTtcbiAgZm9yIChjb25zdCBbZmlsZSwgdXNlclNldHRpbmdTZXRdIG9mIF8udG9QYWlycyhhd2FpdCByZWFkU2V0dGluZ3Moc2ltLCAndXNlclNldHRpbmdzJykpKSB7XG4gICAgLy8gdGhlIHVzZXIgc2V0dGluZ3MgcGxpc3QgaGFzIHR3byBidWNrZXRzLCBvbmUgZm9yXG4gICAgLy8gYm9vbGVhbiBzZXR0aW5ncyAoYHJlc3RyaWN0ZWRCb29sYCkgYW5kIG9uZSBmb3JcbiAgICAvLyBvdGhlciB2YWx1ZSBzZXR0aW5ncyAoYHJlc3RyaWN0ZWRWYWx1ZWApLiBJbiBlYWNoLCB0aGUgdmFsdWVcbiAgICAvLyBpcyBpbiBhIGB2YWx1ZWAgc3ViLWZpZWxkLlxuICAgIGlmICghXy5oYXModXNlclNldHRpbmdTZXQsICdyZXN0cmljdGVkQm9vbCcpKSB7XG4gICAgICB1c2VyU2V0dGluZ1NldC5yZXN0cmljdGVkQm9vbCA9IHt9O1xuICAgIH1cbiAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgXy50b1BhaXJzKG5ld1VzZXJTZXR0aW5ncykpIHtcbiAgICAgIHVzZXJTZXR0aW5nU2V0LnJlc3RyaWN0ZWRCb29sW2tleV0gPSB7dmFsdWV9O1xuICAgIH1cblxuICAgIC8vIGFjdHVhbGx5IGRvIHRoZSB1cGRhdGVcbiAgICB1cGRhdGVkID0gYXdhaXQgdXBkYXRlKGZpbGUsIHVzZXJTZXR0aW5nU2V0KSB8fCB1cGRhdGVkO1xuICB9XG5cbiAgcmV0dXJuIHVwZGF0ZWQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUxvY2FsZSAoc2ltLCBsYW5ndWFnZSwgbG9jYWxlLCBjYWxlbmRhckZvcm1hdCkge1xuICBsZXQgZ2xvYmFsUHJlZnMgPSBwYXRoLnJlc29sdmUoc2ltLmdldERpcigpLCAnTGlicmFyeScsICdQcmVmZXJlbmNlcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLkdsb2JhbFByZWZlcmVuY2VzLnBsaXN0Jyk7XG5cbiAgLy8gZ2V0IHRoZSBjdXJyZW50IGRhdGFcbiAgbGV0IGRhdGEgPSBhd2FpdCByZWFkKGdsb2JhbFByZWZzKTtcbiAgbGV0IHVwZGF0ZXMgPSB7fTtcblxuICAvLyBpZiB3ZSBhcmUgc2V0dGluZyB0aGUgbGFuZ3VhZ2UsIGFkZCBpdCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaXN0IG9mIGxhbmd1YWdlc1xuICBpZiAobGFuZ3VhZ2UpIHtcbiAgICBsb2cuZGVidWcoYE5ldyBsYW5ndWFnZTogJHtsYW5ndWFnZX1gKTtcbiAgICBsZXQgc3VwcG9ydGVkTGFuZ3MgPSBkYXRhLkFwcGxlTGFuZ3VhZ2VzIHx8IFtdO1xuICAgIC8vIGlmIHRoZSBsYW5ndWFnZSBpcyBmaXJzdCwgd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZ1xuICAgIGlmIChzdXBwb3J0ZWRMYW5ncy5pbmRleE9mKGxhbmd1YWdlKSAhPT0gMCkge1xuICAgICAgdXBkYXRlcy5BcHBsZUxhbmd1YWdlcyA9IFtsYW5ndWFnZV0uY29uY2F0KF8ud2l0aG91dChzdXBwb3J0ZWRMYW5ncywgbGFuZ3VhZ2UpKTtcbiAgICB9XG4gIH1cbiAgLy8gaWYgd2UgYXJlIHNldHRpbmcgdGhlIGxvY2FsZSBvciBjYWxlbmRhciBmb3JtYXQsIHNldCB0aGVtIGFzIGFwcHJvcHJpYXRlXG4gIGlmIChsb2NhbGUgfHwgY2FsZW5kYXJGb3JtYXQpIHtcbiAgICBsZXQgY2FsU3BsaXQgPSAnQGNhbGVuZGFyPSc7XG4gICAgbGV0IGN1ckxvY2FsZUFuZENhbCA9IGRhdGEuQXBwbGVMb2NhbGUgfHwgbGFuZ3VhZ2UgfHwgJ2VuJztcblxuICAgIGxldCBzcGxpdCA9IGN1ckxvY2FsZUFuZENhbC5zcGxpdChjYWxTcGxpdCk7XG4gICAgbGV0IGN1ckxvYyA9IHNwbGl0WzBdO1xuICAgIGlmIChjYWxlbmRhckZvcm1hdCB8fCBzcGxpdFsxXSkge1xuICAgICAgY2FsZW5kYXJGb3JtYXQgPSBgJHtjYWxTcGxpdH0ke2NhbGVuZGFyRm9ybWF0IHx8IHNwbGl0WzFdIHx8ICcnfWA7XG4gICAgfVxuICAgIGNhbGVuZGFyRm9ybWF0ID0gY2FsZW5kYXJGb3JtYXQgfHwgJyc7XG4gICAgbGV0IG5ld0xvY2FsZUFuZENhbCA9IGxvY2FsZSA/IGxvY2FsZSA6IGN1ckxvYztcbiAgICBpZiAoY2FsZW5kYXJGb3JtYXQpIHtcbiAgICAgIG5ld0xvY2FsZUFuZENhbCA9IGAke25ld0xvY2FsZUFuZENhbH0ke2NhbGVuZGFyRm9ybWF0fWA7XG4gICAgfVxuICAgIC8vIG9ubHkgbmVlZCB0byB1cGRhdGUgaWYgaXQgaGFzIGNoYW5nZWRcbiAgICBpZiAobmV3TG9jYWxlQW5kQ2FsICE9PSBjdXJMb2NhbGVBbmRDYWwpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgTmV3IGxvY2FsZTogJHtuZXdMb2NhbGVBbmRDYWx9YCk7XG4gICAgICB1cGRhdGVzLkFwcGxlTG9jYWxlID0gbmV3TG9jYWxlQW5kQ2FsO1xuICAgIH1cbiAgfVxuXG4gIGlmIChfLnNpemUodXBkYXRlcykgPT09IDApIHtcbiAgICBsb2cuZGVidWcoJ05vIGxvY2FsZSB1cGRhdGVzIG5lY2Vzc2FyeS4nKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBsb2cuZGVidWcoJ1dyaXRpbmcgbmV3IGxvY2FsZSBwbGlzdCBkYXRhJyk7XG4gIGF3YWl0IHVwZGF0ZShnbG9iYWxQcmVmcywgdXBkYXRlcyk7XG4gIHJldHVybiB0cnVlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzdHViICgpIHtcbiAgcmV0dXJuIGF3YWl0IHBsaXN0UGF0aHM7XG59XG5cbmV4cG9ydCB7XG4gIHVwZGF0ZSwgdXBkYXRlU2V0dGluZ3MsIHVwZGF0ZUxvY2F0aW9uU2V0dGluZ3MsIHNldFJlZHVjZU1vdGlvbixcbiAgdXBkYXRlU2FmYXJpVXNlclNldHRpbmdzLCB1cGRhdGVTYWZhcmlHbG9iYWxTZXR0aW5ncywgdXBkYXRlTG9jYWxlLCByZWFkLFxuICByZWFkU2V0dGluZ3MsIHN0dWIsXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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
|
|
243
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwbGlzdFBhdGhzIiwic2ltIiwiaWRlbnRpZmllciIsInBhdGhzIiwic2ltRGlyZWN0b3J5IiwiZ2V0RGlyIiwicHVzaCIsInBhdGgiLCJyZXNvbHZlIiwiZ2V0QXBwRGlyIiwic2VtdmVyIiwibHQiLCJjb2VyY2UiLCJ4Y29kZVZlcnNpb24iLCJ2ZXJzaW9uU3RyaW5nIiwidXBkYXRlU2V0dGluZ3MiLCJwbGlzdCIsInVwZGF0ZXMiLCJCIiwicmVkdWNlIiwicmVkdWNlciIsInVwZGF0ZWQiLCJ1cGRhdGUiLCJwYXRoVG9QbGlzdCIsImN1cnJlbnRTZXR0aW5ncyIsInJlYWQiLCJuZXdTZXR0aW5ncyIsIk9iamVjdCIsImFzc2lnbiIsIl8iLCJpc0VxdWFsIiwidXBkYXRlUGxpc3RGaWxlIiwicmVhZFNldHRpbmdzIiwic2V0dGluZ3MiLCJwYXJzZVBsaXN0RmlsZSIsInVwZGF0ZUxvY2F0aW9uU2V0dGluZ3MiLCJidW5kbGVJZCIsImF1dGhvcml6ZWQiLCJuZXdDYWNoZVByZWZzIiwiTGFzdEZlbmNlQWN0aXZpdHlUaW1lc3RhbXAiLCJDbGVhblNodXRkb3duIiwibmV3Q2xpZW50UHJlZnMiLCJCdW5kbGVJZCIsIkF1dGhvcml6ZWQiLCJXaGl0ZWxpc3RlZCIsImZpbGUiLCJsb2ciLCJkZWJ1ZyIsIndlaXJkTG9jS2V5IiwiaGFzIiwiQnVuZGxlUGF0aCIsIkV4ZWN1dGFibGUiLCJSZWdpc3RlcmVkIiwiYmFzZVNldHRpbmciLCJkZWZhdWx0cyIsInNldFJlZHVjZU1vdGlvbiIsInJlZHVjZU1vdGlvbiIsIlJlZHVjZU1vdGlvbkVuYWJsZWQiLCJzZXRSZWR1Y2VUcmFuc3BhcmVuY3kiLCJyZWR1Y2VUcmFuc3BhcmVuY3kiLCJFbmhhbmNlZEJhY2tncm91bmRDb250cmFzdEVuYWJsZWQiLCJ1cGRhdGVTYWZhcmlHbG9iYWxTZXR0aW5ncyIsInNldHRpbmdTZXQiLCJzYWZhcmlTZXR0aW5nU2V0IiwidG9QYWlycyIsImtleSIsInZhbHVlIiwiaXNFbXB0eSIsInVwZGF0ZVNhZmFyaVVzZXJTZXR0aW5ncyIsIm5ld1VzZXJTZXR0aW5ncyIsInNhZmFyaUFsbG93SmF2YVNjcmlwdCIsIldlYktpdEphdmFTY3JpcHRFbmFibGVkIiwic2FmYXJpQWxsb3dQb3B1cHMiLCJXZWJLaXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5Iiwic2FmYXJpRm9yY2VGcmF1ZFdhcm5pbmciLCJXYXJuQWJvdXRGcmF1ZHVsZW50V2Vic2l0ZXMiLCJ1c2VyU2V0dGluZ1NldCIsInJlc3RyaWN0ZWRCb29sIiwidXBkYXRlTG9jYWxlIiwibGFuZ3VhZ2UiLCJsb2NhbGUiLCJjYWxlbmRhckZvcm1hdCIsImdsb2JhbFByZWZzIiwiZGF0YSIsInN1cHBvcnRlZExhbmdzIiwiQXBwbGVMYW5ndWFnZXMiLCJpbmRleE9mIiwiY29uY2F0Iiwid2l0aG91dCIsImNhbFNwbGl0IiwiY3VyTG9jYWxlQW5kQ2FsIiwiQXBwbGVMb2NhbGUiLCJzcGxpdCIsImN1ckxvYyIsIm5ld0xvY2FsZUFuZENhbCIsInNpemUiLCJzdHViIl0sInNvdXJjZXMiOlsiLi4vLi4vbGliL3NldHRpbmdzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBwbGlzdCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuXG5cbi8vIHJldHVybnMgcGF0aCB0byBwbGlzdCBiYXNlZCBvbiBpZCBmb3IgcGxpc3QuXG4vLyB0aGVzZSBpZHMgYXJlIGFwcGl1bSB0ZXJtc1xuYXN5bmMgZnVuY3Rpb24gcGxpc3RQYXRocyAoc2ltLCBpZGVudGlmaWVyKSB7XG4gIGxldCBwYXRocyA9IFtdO1xuICBsZXQgc2ltRGlyZWN0b3J5ID0gc2ltLmdldERpcigpO1xuXG4gIHN3aXRjaCAoaWRlbnRpZmllcikge1xuICAgIGNhc2UgJ3dlYkluc3BlY3Rvcic6XG4gICAgICBwYXRocy5wdXNoKHBhdGgucmVzb2x2ZShzaW1EaXJlY3RvcnksICdMaWJyYXJ5JywgJ1ByZWZlcmVuY2VzJywgJ2NvbS5hcHBsZS53ZWJJbnNwZWN0b3IucGxpc3QnKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdtb2JpbGVTYWZhcmknOlxuICAgICAgcGF0aHMucHVzaChwYXRoLnJlc29sdmUoYXdhaXQgc2ltLmdldEFwcERpcignY29tLmFwcGxlLm1vYmlsZXNhZmFyaScpLCAnTGlicmFyeScsICdQcmVmZXJlbmNlcycsICdjb20uYXBwbGUubW9iaWxlc2FmYXJpLnBsaXN0JykpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZ2xvYmFsTW9iaWxlU2FmYXJpJzpcbiAgICAgIHBhdGhzLnB1c2gocGF0aC5yZXNvbHZlKHNpbURpcmVjdG9yeSwgJ0xpYnJhcnknLCAnUHJlZmVyZW5jZXMnLCAnY29tLmFwcGxlLm1vYmlsZXNhZmFyaS5wbGlzdCcpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dlYlVJJzpcbiAgICAgIHBhdGhzLnB1c2gocGF0aC5yZXNvbHZlKHNpbURpcmVjdG9yeSwgJ0xpYnJhcnknLCAnUHJlZmVyZW5jZXMnLCAnY29tLmFwcGxlLldlYlVJLnBsaXN0JykpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnd2ViRm91bmRhdGlvbic6XG4gICAgICBwYXRocy5wdXNoKHBhdGgucmVzb2x2ZShzaW1EaXJlY3RvcnksICdMaWJyYXJ5JywgJ1ByZWZlcmVuY2VzJywgJ2NvbS5hcHBsZS5XZWJGb3VuZGF0aW9uLnBsaXN0JykpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncHJlZmVyZW5jZXMnOlxuICAgICAgcGF0aHMucHVzaChwYXRoLnJlc29sdmUoc2ltRGlyZWN0b3J5LCAnTGlicmFyeScsICdQcmVmZXJlbmNlcycsICdjb20uYXBwbGUuUHJlZmVyZW5jZXMucGxpc3QnKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdsb2NhdGlvblNlcnZpY2VzJzpcbiAgICAgIHBhdGhzLnB1c2gocGF0aC5yZXNvbHZlKHNpbURpcmVjdG9yeSwgJ0xpYnJhcnknLCAnUHJlZmVyZW5jZXMnLCAnY29tLmFwcGxlLmxvY2F0aW9uZC5wbGlzdCcpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2xvY2F0aW9uQ2xpZW50cyc6XG4gICAgICBwYXRocy5wdXNoKHBhdGgucmVzb2x2ZShzaW1EaXJlY3RvcnksICdMaWJyYXJ5JywgJ0NhY2hlcycsICdsb2NhdGlvbmQnLCAnY2xpZW50cy5wbGlzdCcpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2xvY2F0aW9uQ2FjaGUnOlxuICAgICAgcGF0aHMucHVzaChwYXRoLnJlc29sdmUoc2ltRGlyZWN0b3J5LCAnTGlicmFyeScsICdDYWNoZXMnLCAnbG9jYXRpb25kJywgJ2NhY2hlLnBsaXN0JykpO1xuICAgICAgcGF0aHMucHVzaChwYXRoLnJlc29sdmUoc2ltRGlyZWN0b3J5LCAnTGlicmFyeScsICdQcmVmZXJlbmNlcycsICdjb20uYXBwbGUubG9jYXRpb25kLnBsaXN0JykpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndXNlclNldHRpbmdzJzpcbiAgICAgIGlmIChzZW12ZXIubHQoc2VtdmVyLmNvZXJjZShzaW0ueGNvZGVWZXJzaW9uLnZlcnNpb25TdHJpbmcpLCBzZW12ZXIuY29lcmNlKCc3LjMnKSkpIHtcbiAgICAgICAgcGF0aHMucHVzaChwYXRoLnJlc29sdmUoc2ltRGlyZWN0b3J5LCAnTGlicmFyeScsICdDb25maWd1cmF0aW9uUHJvZmlsZXMnLCAnVXNlclNldHRpbmdzLnBsaXN0JykpO1xuICAgICAgICBwYXRocy5wdXNoKHBhdGgucmVzb2x2ZShzaW1EaXJlY3RvcnksICdMaWJyYXJ5JywgJ0NvbmZpZ3VyYXRpb25Qcm9maWxlcycsICdFZmZlY3RpdmVVc2VyU2V0dGluZ3MucGxpc3QnKSk7XG4gICAgICAgIHBhdGhzLnB1c2gocGF0aC5yZXNvbHZlKHNpbURpcmVjdG9yeSwgJ0xpYnJhcnknLCAnQ29uZmlndXJhdGlvblByb2ZpbGVzJywgJ1B1YmxpY0luZm8nLCAnUHVibGljRWZmZWN0aXZlVXNlclNldHRpbmdzLnBsaXN0JykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGF0aHMucHVzaChwYXRoLnJlc29sdmUoc2ltRGlyZWN0b3J5LCAnTGlicmFyeScsICdVc2VyQ29uZmlndXJhdGlvblByb2ZpbGVzJywgJ1VzZXJTZXR0aW5ncy5wbGlzdCcpKTtcbiAgICAgICAgcGF0aHMucHVzaChwYXRoLnJlc29sdmUoc2ltRGlyZWN0b3J5LCAnTGlicmFyeScsICdVc2VyQ29uZmlndXJhdGlvblByb2ZpbGVzJywgJ0VmZmVjdGl2ZVVzZXJTZXR0aW5ncy5wbGlzdCcpKTtcbiAgICAgICAgcGF0aHMucHVzaChwYXRoLnJlc29sdmUoc2ltRGlyZWN0b3J5LCAnTGlicmFyeScsICdVc2VyQ29uZmlndXJhdGlvblByb2ZpbGVzJywgJ1B1YmxpY0luZm8nLCAnUHVibGljRWZmZWN0aXZlVXNlclNldHRpbmdzLnBsaXN0JykpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZWZmZWN0aXZlVXNlclNldHRpbmdzJzpcbiAgICAgIHBhdGhzLnB1c2gocGF0aC5yZXNvbHZlKHNpbURpcmVjdG9yeSwgJ0xpYnJhcnknLCAnQ29uZmlndXJhdGlvblByb2ZpbGVzJywgJ0VmZmVjdGl2ZVVzZXJTZXR0aW5ncy5wbGlzdCcpKTtcbiAgICAgIHBhdGhzLnB1c2gocGF0aC5yZXNvbHZlKHNpbURpcmVjdG9yeSwgJ0xpYnJhcnknLCAnQ29uZmlndXJhdGlvblByb2ZpbGVzJywgJ1B1YmxpY0luZm8nLCAnUHVibGljRWZmZWN0aXZlVXNlclNldHRpbmdzLnBsaXN0JykpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYWNjZXNzaWJpbGl0eVNldHRpbmdzJzpcbiAgICAgIHBhdGhzLnB1c2gocGF0aC5yZXNvbHZlKHNpbURpcmVjdG9yeSwgJ0xpYnJhcnknLCAnUHJlZmVyZW5jZXMnLCAnY29tLmFwcGxlLkFjY2Vzc2liaWxpdHkucGxpc3QnKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd1aVN0eWxlU2V0dGluZ3MnOlxuICAgICAgcGF0aHMucHVzaChwYXRoLnJlc29sdmUoc2ltRGlyZWN0b3J5LCAnTGlicmFyeScsICdQcmVmZXJlbmNlcycsICdjb20uYXBwbGUudWlraXRzZXJ2aWNlcy51c2VySW50ZXJmYWNlU3R5bGVNb2RlLnBsaXN0JykpO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gcGF0aHM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVNldHRpbmdzIChzaW0sIHBsaXN0LCB1cGRhdGVzKSB7XG4gIHJldHVybiBhd2FpdCBCLnJlZHVjZShhd2FpdCBwbGlzdFBhdGhzKHNpbSwgcGxpc3QpLCBhc3luYyBmdW5jdGlvbiByZWR1Y2VyICh1cGRhdGVkLCBwYXRoKSB7XG4gICAgcmV0dXJuIGF3YWl0IHVwZGF0ZShwYXRoLCB1cGRhdGVzKSB8fCB1cGRhdGVkO1xuICB9LCBmYWxzZSk7XG59XG5cbi8vIHVwZGF0ZSBhIHBsaXN0IGZpbGUsIGxvY2F0ZWQgYXQgcGF0aFRvUGxpc3Rcbi8vIHBhc3MgaW4gYW4gb2JqZWN0LCBhbGwgc2V0dGluZ3Mgc3BlY2lmaWVkIGluIHRoZSBvYmplY3Qgd2lsbCBiZVxuLy8gdXBkYXRlZCBvbiB0aGUgcGxpc3QsIGFsbCBvdGhlcnMgbGVmdCBhcy1pc1xuYXN5bmMgZnVuY3Rpb24gdXBkYXRlIChwYXRoVG9QbGlzdCwgdXBkYXRlcykge1xuICBjb25zdCBjdXJyZW50U2V0dGluZ3MgPSBhd2FpdCByZWFkKHBhdGhUb1BsaXN0KTtcbiAgY29uc3QgbmV3U2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCBjdXJyZW50U2V0dGluZ3MsIHVwZGF0ZXMpO1xuXG4gIGlmIChfLmlzRXF1YWwoY3VycmVudFNldHRpbmdzLCBuZXdTZXR0aW5ncykpIHtcbiAgICAvLyBubyBzZXR0aW5nIGNoYW5nZXMsIHNvIGRvIG5vdGhpbmdcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBhd2FpdCBwbGlzdC51cGRhdGVQbGlzdEZpbGUocGF0aFRvUGxpc3QsIG5ld1NldHRpbmdzLCB0cnVlLCBmYWxzZSk7XG4gIHJldHVybiB0cnVlO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkU2V0dGluZ3MgKHNpbSwgcGxpc3QpIHtcbiAgbGV0IHNldHRpbmdzID0ge307XG4gIGZvciAobGV0IHBhdGggb2YgYXdhaXQgcGxpc3RQYXRocyhzaW0sIHBsaXN0KSkge1xuICAgIHNldHRpbmdzW3BhdGhdID0gYXdhaXQgcmVhZChwYXRoKTtcbiAgfVxuICByZXR1cm4gc2V0dGluZ3M7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWQgKHBhdGhUb1BsaXN0KSB7XG4gIHJldHVybiBhd2FpdCBwbGlzdC5wYXJzZVBsaXN0RmlsZShwYXRoVG9QbGlzdCwgZmFsc2UpO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1cGRhdGVMb2NhdGlvblNldHRpbmdzIChzaW0sIGJ1bmRsZUlkLCBhdXRob3JpemVkKSB7XG4gIC8vIHVwZGF0ZSBsb2NhdGlvbiBjYWNoZVxuICBjb25zdCBuZXdDYWNoZVByZWZzID0ge1xuICAgIExhc3RGZW5jZUFjdGl2aXR5VGltZXN0YW1wOiA0MTIxMjIxMDMuMjMyOTgzLFxuICAgIENsZWFuU2h1dGRvd246IHRydWVcbiAgfTtcbiAgbGV0IHVwZGF0ZWQgPSBhd2FpdCB1cGRhdGVTZXR0aW5ncyhzaW0sICdsb2NhdGlvbkNhY2hlJywge1tidW5kbGVJZF06IG5ld0NhY2hlUHJlZnN9KTtcblxuICAvLyB1cGRhdGUgbG9jYXRpb24gY2xpZW50c1xuICBjb25zdCBuZXdDbGllbnRQcmVmcyA9IHtcbiAgICBCdW5kbGVJZDogYnVuZGxlSWQsXG4gICAgQXV0aG9yaXplZDogISFhdXRob3JpemVkLFxuICAgIFdoaXRlbGlzdGVkOiBmYWxzZSxcbiAgfTtcbiAgZm9yIChjb25zdCBmaWxlIG9mIGF3YWl0IHBsaXN0UGF0aHMoc2ltLCAnbG9jYXRpb25DbGllbnRzJykpIHtcbiAgICBsb2cuZGVidWcoYFVwZGF0aW5nIGxvY2F0aW9uIGNsaWVudCBmaWxlOiAke2ZpbGV9YCk7XG5cbiAgICBsZXQgdXBkYXRlcyA9IHt9O1xuXG4gICAgLy8gc2VlIGlmIHRoZSBidW5kbGUgaXMgYWxyZWFkeSB0aGVyZVxuICAgIGNvbnN0IHBsaXN0ID0gYXdhaXQgcmVhZChmaWxlKTtcblxuICAgIC8vIHJhbmRvbSBkYXRhIHRoYXQgYWx3YXlzIHNlZW1zIHRvIGJlIGluIHRoZSBjbGllbnRzLnBsaXN0XG4gICAgY29uc3Qgd2VpcmRMb2NLZXkgPSAnY29tLmFwcGxlLmxvY2F0aW9uZC5idW5kbGUtL1N5c3RlbS9MaWJyYXJ5LycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ1ByaXZhdGVGcmFtZXdvcmtzL0FPU05vdGlmaWNhdGlvbi5mcmFtZXdvcmsnO1xuICAgIGlmICghXy5oYXMocGxpc3QsIHdlaXJkTG9jS2V5KSkge1xuICAgICAgdXBkYXRlc1t3ZWlyZExvY0tleV0gPSB7XG4gICAgICAgIEJ1bmRsZVBhdGg6ICcvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvQU9TTm90aWZpY2F0aW9uLmZyYW1ld29yaycsXG4gICAgICAgIFdoaXRlbGlzdGVkOiBmYWxzZSxcbiAgICAgICAgRXhlY3V0YWJsZTogJycsXG4gICAgICAgIFJlZ2lzdGVyZWQ6ICcnXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIGNyZWF0ZSB0aGUgdXBkYXRlLCBhbmQgbWFrZSBzdXJlIGl0IGhhcyBzZW5zaWJsZSB2YWx1ZXNcbiAgICBjb25zdCBiYXNlU2V0dGluZyA9IF8uaGFzKHBsaXN0LCBidW5kbGVJZCkgPyBwbGlzdFtidW5kbGVJZF0gOiB7fTtcbiAgICB1cGRhdGVzW2J1bmRsZUlkXSA9IF8uZGVmYXVsdHMobmV3Q2xpZW50UHJlZnMsIGJhc2VTZXR0aW5nKTtcbiAgICB1cGRhdGVzW2J1bmRsZUlkXS5FeGVjdXRhYmxlID0gdXBkYXRlc1tidW5kbGVJZF0uRXhlY3V0YWJsZSB8fCAnJztcbiAgICB1cGRhdGVzW2J1bmRsZUlkXS5SZWdpc3RlcmVkID0gdXBkYXRlc1tidW5kbGVJZF0uUmVnaXN0ZXJlZCB8fCAnJztcblxuICAgIHVwZGF0ZWQgPSBhd2FpdCB1cGRhdGUoZmlsZSwgdXBkYXRlcykgfHwgdXBkYXRlZDtcbiAgfVxuXG4gIHJldHVybiB1cGRhdGVkO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzZXRSZWR1Y2VNb3Rpb24gKHNpbSwgcmVkdWNlTW90aW9uID0gdHJ1ZSkge1xuICBsb2cuZGVidWcoYFVwZGF0aW5nIHJlZHVjZSBtb3Rpb24uIFNldHRpbmcgdG8gJHtyZWR1Y2VNb3Rpb259LmApO1xuICBjb25zdCBwYXRocyA9IGF3YWl0IHBsaXN0UGF0aHMoc2ltLCAnYWNjZXNzaWJpbGl0eVNldHRpbmdzJyk7XG4gIGZvciAoY29uc3QgZmlsZSBvZiBwYXRocykge1xuICAgIGF3YWl0IHVwZGF0ZShmaWxlLCB7XG4gICAgICBSZWR1Y2VNb3Rpb25FbmFibGVkOiByZWR1Y2VNb3Rpb24gPyAxIDogMFxuICAgIH0pO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNldFJlZHVjZVRyYW5zcGFyZW5jeSAoc2ltLCByZWR1Y2VUcmFuc3BhcmVuY3kpIHtcbiAgbG9nLmRlYnVnKGBVcGRhdGluZyByZWR1Y2UgdHJhbmNlcGFyZW5jeS4gU2V0dGluZyB0byAke3JlZHVjZVRyYW5zcGFyZW5jeX0uYCk7XG4gIGNvbnN0IHBhdGhzID0gYXdhaXQgcGxpc3RQYXRocyhzaW0sICdhY2Nlc3NpYmlsaXR5U2V0dGluZ3MnKTtcbiAgZm9yIChjb25zdCBmaWxlIG9mIHBhdGhzKSB7XG4gICAgYXdhaXQgdXBkYXRlKGZpbGUsIHtcbiAgICAgIEVuaGFuY2VkQmFja2dyb3VuZENvbnRyYXN0RW5hYmxlZDogcmVkdWNlVHJhbnNwYXJlbmN5ID8gMSA6IDBcbiAgICB9KTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiB1cGRhdGVTYWZhcmlHbG9iYWxTZXR0aW5ncyAoc2ltLCBzZXR0aW5nU2V0KSB7XG4gIGxvZy5kZWJ1ZygnVXBkYXRpbmcgU2FmYXJpIGdsb2JhbCBzZXR0aW5ncycpO1xuXG4gIGxldCB1cGRhdGVkID0gZmFsc2U7XG4gIGZvciAoY29uc3QgW2ZpbGUsIHNhZmFyaVNldHRpbmdTZXRdIG9mIF8udG9QYWlycyhhd2FpdCByZWFkU2V0dGluZ3Moc2ltLCAnZ2xvYmFsTW9iaWxlU2FmYXJpJykpKSB7XG4gICAgbGV0IG5ld1NldHRpbmdzID0ge307XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgXy50b1BhaXJzKHNldHRpbmdTZXQpKSB7XG4gICAgICBpZiAoc2FmYXJpU2V0dGluZ1NldFtrZXldICE9PSB2YWx1ZSkge1xuICAgICAgICBuZXdTZXR0aW5nc1trZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChfLmlzRW1wdHkobmV3U2V0dGluZ3MpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB1cGRhdGVkID0gYXdhaXQgdXBkYXRlKGZpbGUsIG5ld1NldHRpbmdzKSB8fCB1cGRhdGVkO1xuICB9XG4gIHJldHVybiB1cGRhdGVkO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1cGRhdGVTYWZhcmlVc2VyU2V0dGluZ3MgKHNpbSwgc2V0dGluZ1NldCkge1xuICBsb2cuZGVidWcoJ1VwZGF0aW5nIFNhZmFyaSB1c2VyIHNldHRpbmdzJyk7XG5cbiAgLy8gYWRkIGV4dHJhIHN0dWZmIHRvIFVzZXJTZXR0aW5ncy5wbGlzdCBhbmQgRWZmZWN0aXZlVXNlclNldHRpbmdzLnBsaXN0XG4gIGxldCBuZXdVc2VyU2V0dGluZ3MgPSB7fTtcbiAgaWYgKF8uaGFzKHNldHRpbmdTZXQsICdXZWJLaXRKYXZhU2NyaXB0RW5hYmxlZCcpKSB7XG4gICAgbmV3VXNlclNldHRpbmdzLnNhZmFyaUFsbG93SmF2YVNjcmlwdCA9IHNldHRpbmdTZXQuV2ViS2l0SmF2YVNjcmlwdEVuYWJsZWQ7XG4gIH1cbiAgaWYgKF8uaGFzKHNldHRpbmdTZXQsICdXZWJLaXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5JykpIHtcbiAgICBuZXdVc2VyU2V0dGluZ3Muc2FmYXJpQWxsb3dQb3B1cHMgPSBzZXR0aW5nU2V0LldlYktpdEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHk7XG4gIH1cbiAgaWYgKF8uaGFzKHNldHRpbmdTZXQsICdXYXJuQWJvdXRGcmF1ZHVsZW50V2Vic2l0ZXMnKSkge1xuICAgIG5ld1VzZXJTZXR0aW5ncy5zYWZhcmlGb3JjZUZyYXVkV2FybmluZyA9ICFzZXR0aW5nU2V0Lldhcm5BYm91dEZyYXVkdWxlbnRXZWJzaXRlcztcbiAgfVxuXG4gIGlmIChfLmlzRW1wdHkobmV3VXNlclNldHRpbmdzKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGxldCB1cGRhdGVkID0gZmFsc2U7XG4gIGZvciAoY29uc3QgW2ZpbGUsIHVzZXJTZXR0aW5nU2V0XSBvZiBfLnRvUGFpcnMoYXdhaXQgcmVhZFNldHRpbmdzKHNpbSwgJ3VzZXJTZXR0aW5ncycpKSkge1xuICAgIC8vIHRoZSB1c2VyIHNldHRpbmdzIHBsaXN0IGhhcyB0d28gYnVja2V0cywgb25lIGZvclxuICAgIC8vIGJvb2xlYW4gc2V0dGluZ3MgKGByZXN0cmljdGVkQm9vbGApIGFuZCBvbmUgZm9yXG4gICAgLy8gb3RoZXIgdmFsdWUgc2V0dGluZ3MgKGByZXN0cmljdGVkVmFsdWVgKS4gSW4gZWFjaCwgdGhlIHZhbHVlXG4gICAgLy8gaXMgaW4gYSBgdmFsdWVgIHN1Yi1maWVsZC5cbiAgICBpZiAoIV8uaGFzKHVzZXJTZXR0aW5nU2V0LCAncmVzdHJpY3RlZEJvb2wnKSkge1xuICAgICAgdXNlclNldHRpbmdTZXQucmVzdHJpY3RlZEJvb2wgPSB7fTtcbiAgICB9XG4gICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIF8udG9QYWlycyhuZXdVc2VyU2V0dGluZ3MpKSB7XG4gICAgICB1c2VyU2V0dGluZ1NldC5yZXN0cmljdGVkQm9vbFtrZXldID0ge3ZhbHVlfTtcbiAgICB9XG5cbiAgICAvLyBhY3R1YWxseSBkbyB0aGUgdXBkYXRlXG4gICAgdXBkYXRlZCA9IGF3YWl0IHVwZGF0ZShmaWxlLCB1c2VyU2V0dGluZ1NldCkgfHwgdXBkYXRlZDtcbiAgfVxuXG4gIHJldHVybiB1cGRhdGVkO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1cGRhdGVMb2NhbGUgKHNpbSwgbGFuZ3VhZ2UsIGxvY2FsZSwgY2FsZW5kYXJGb3JtYXQpIHtcbiAgbGV0IGdsb2JhbFByZWZzID0gcGF0aC5yZXNvbHZlKHNpbS5nZXREaXIoKSwgJ0xpYnJhcnknLCAnUHJlZmVyZW5jZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy5HbG9iYWxQcmVmZXJlbmNlcy5wbGlzdCcpO1xuXG4gIC8vIGdldCB0aGUgY3VycmVudCBkYXRhXG4gIGxldCBkYXRhID0gYXdhaXQgcmVhZChnbG9iYWxQcmVmcyk7XG4gIGxldCB1cGRhdGVzID0ge307XG5cbiAgLy8gaWYgd2UgYXJlIHNldHRpbmcgdGhlIGxhbmd1YWdlLCBhZGQgaXQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgbGlzdCBvZiBsYW5ndWFnZXNcbiAgaWYgKGxhbmd1YWdlKSB7XG4gICAgbG9nLmRlYnVnKGBOZXcgbGFuZ3VhZ2U6ICR7bGFuZ3VhZ2V9YCk7XG4gICAgbGV0IHN1cHBvcnRlZExhbmdzID0gZGF0YS5BcHBsZUxhbmd1YWdlcyB8fCBbXTtcbiAgICAvLyBpZiB0aGUgbGFuZ3VhZ2UgaXMgZmlyc3QsIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmdcbiAgICBpZiAoc3VwcG9ydGVkTGFuZ3MuaW5kZXhPZihsYW5ndWFnZSkgIT09IDApIHtcbiAgICAgIHVwZGF0ZXMuQXBwbGVMYW5ndWFnZXMgPSBbbGFuZ3VhZ2VdLmNvbmNhdChfLndpdGhvdXQoc3VwcG9ydGVkTGFuZ3MsIGxhbmd1YWdlKSk7XG4gICAgfVxuICB9XG4gIC8vIGlmIHdlIGFyZSBzZXR0aW5nIHRoZSBsb2NhbGUgb3IgY2FsZW5kYXIgZm9ybWF0LCBzZXQgdGhlbSBhcyBhcHByb3ByaWF0ZVxuICBpZiAobG9jYWxlIHx8IGNhbGVuZGFyRm9ybWF0KSB7XG4gICAgbGV0IGNhbFNwbGl0ID0gJ0BjYWxlbmRhcj0nO1xuICAgIGxldCBjdXJMb2NhbGVBbmRDYWwgPSBkYXRhLkFwcGxlTG9jYWxlIHx8IGxhbmd1YWdlIHx8ICdlbic7XG5cbiAgICBsZXQgc3BsaXQgPSBjdXJMb2NhbGVBbmRDYWwuc3BsaXQoY2FsU3BsaXQpO1xuICAgIGxldCBjdXJMb2MgPSBzcGxpdFswXTtcbiAgICBpZiAoY2FsZW5kYXJGb3JtYXQgfHwgc3BsaXRbMV0pIHtcbiAgICAgIGNhbGVuZGFyRm9ybWF0ID0gYCR7Y2FsU3BsaXR9JHtjYWxlbmRhckZvcm1hdCB8fCBzcGxpdFsxXSB8fCAnJ31gO1xuICAgIH1cbiAgICBjYWxlbmRhckZvcm1hdCA9IGNhbGVuZGFyRm9ybWF0IHx8ICcnO1xuICAgIGxldCBuZXdMb2NhbGVBbmRDYWwgPSBsb2NhbGUgPyBsb2NhbGUgOiBjdXJMb2M7XG4gICAgaWYgKGNhbGVuZGFyRm9ybWF0KSB7XG4gICAgICBuZXdMb2NhbGVBbmRDYWwgPSBgJHtuZXdMb2NhbGVBbmRDYWx9JHtjYWxlbmRhckZvcm1hdH1gO1xuICAgIH1cbiAgICAvLyBvbmx5IG5lZWQgdG8gdXBkYXRlIGlmIGl0IGhhcyBjaGFuZ2VkXG4gICAgaWYgKG5ld0xvY2FsZUFuZENhbCAhPT0gY3VyTG9jYWxlQW5kQ2FsKSB7XG4gICAgICBsb2cuZGVidWcoYE5ldyBsb2NhbGU6ICR7bmV3TG9jYWxlQW5kQ2FsfWApO1xuICAgICAgdXBkYXRlcy5BcHBsZUxvY2FsZSA9IG5ld0xvY2FsZUFuZENhbDtcbiAgICB9XG4gIH1cblxuICBpZiAoXy5zaXplKHVwZGF0ZXMpID09PSAwKSB7XG4gICAgbG9nLmRlYnVnKCdObyBsb2NhbGUgdXBkYXRlcyBuZWNlc3NhcnkuJyk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgbG9nLmRlYnVnKCdXcml0aW5nIG5ldyBsb2NhbGUgcGxpc3QgZGF0YScpO1xuICBhd2FpdCB1cGRhdGUoZ2xvYmFsUHJlZnMsIHVwZGF0ZXMpO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc3R1YiAoKSB7XG4gIHJldHVybiBhd2FpdCBwbGlzdFBhdGhzO1xufVxuXG5leHBvcnQge1xuICB1cGRhdGUsIHVwZGF0ZVNldHRpbmdzLCB1cGRhdGVMb2NhdGlvblNldHRpbmdzLCBzZXRSZWR1Y2VNb3Rpb24sIHNldFJlZHVjZVRyYW5zcGFyZW5jeSxcbiAgdXBkYXRlU2FmYXJpVXNlclNldHRpbmdzLCB1cGRhdGVTYWZhcmlHbG9iYWxTZXR0aW5ncywgdXBkYXRlTG9jYWxlLCByZWFkLFxuICByZWFkU2V0dGluZ3MsIHN0dWIsXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQSxlQUFlQSxVQUFVLENBQUVDLEdBQUcsRUFBRUMsVUFBVSxFQUFFO0VBQzFDLElBQUlDLEtBQUssR0FBRyxFQUFFO0VBQ2QsSUFBSUMsWUFBWSxHQUFHSCxHQUFHLENBQUNJLE1BQU0sRUFBRTtFQUUvQixRQUFRSCxVQUFVO0lBQ2hCLEtBQUssY0FBYztNQUNqQkMsS0FBSyxDQUFDRyxJQUFJLENBQUNDLGFBQUksQ0FBQ0MsT0FBTyxDQUFDSixZQUFZLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSw4QkFBOEIsQ0FBQyxDQUFDO01BQ2hHO0lBQ0YsS0FBSyxjQUFjO01BQ2pCRCxLQUFLLENBQUNHLElBQUksQ0FBQ0MsYUFBSSxDQUFDQyxPQUFPLENBQUMsTUFBTVAsR0FBRyxDQUFDUSxTQUFTLENBQUMsd0JBQXdCLENBQUMsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLDhCQUE4QixDQUFDLENBQUM7TUFDakk7SUFDRixLQUFLLG9CQUFvQjtNQUN2Qk4sS0FBSyxD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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","names":["plistPaths","sim","identifier","paths","simDirectory","getDir","push","path","resolve","getAppDir","semver","lt","coerce","xcodeVersion","versionString","updateSettings","plist","updates","B","reduce","reducer","updated","update","pathToPlist","currentSettings","read","newSettings","Object","assign","_","isEqual","updatePlistFile","readSettings","settings","parsePlistFile","updateLocationSettings","bundleId","authorized","newCachePrefs","LastFenceActivityTimestamp","CleanShutdown","newClientPrefs","BundleId","Authorized","Whitelisted","file","log","debug","weirdLocKey","has","BundlePath","Executable","Registered","baseSetting","defaults","setReduceMotion","reduceMotion","ReduceMotionEnabled","updateSafariGlobalSettings","settingSet","safariSettingSet","toPairs","key","value","isEmpty","updateSafariUserSettings","newUserSettings","safariAllowJavaScript","WebKitJavaScriptEnabled","safariAllowPopups","WebKitJavaScriptCanOpenWindowsAutomatically","safariForceFraudWarning","WarnAboutFraudulentWebsites","userSettingSet","restrictedBool","updateLocale","language","locale","calendarFormat","globalPrefs","data","supportedLangs","AppleLanguages","indexOf","concat","without","calSplit","curLocaleAndCal","AppleLocale","split","curLoc","newLocaleAndCal","size","stub"],"sources":["../../lib/settings.js"],"sourcesContent":["import _ from 'lodash';\nimport { plist } from '@appium/support';\nimport path from 'path';\nimport log from './logger';\nimport semver from 'semver';\nimport B from 'bluebird';\n\n\n// returns path to plist based on id for plist.\n// these ids are appium terms\nasync function plistPaths (sim, identifier) {\n let paths = [];\n let simDirectory = sim.getDir();\n\n switch (identifier) {\n case 'webInspector':\n paths.push(path.resolve(simDirectory, 'Library', 'Preferences', 'com.apple.webInspector.plist'));\n break;\n case 'mobileSafari':\n paths.push(path.resolve(await sim.getAppDir('com.apple.mobilesafari'), 'Library', 'Preferences', 'com.apple.mobilesafari.plist'));\n break;\n case 'globalMobileSafari':\n paths.push(path.resolve(simDirectory, 'Library', 'Preferences', 'com.apple.mobilesafari.plist'));\n break;\n case 'webUI':\n paths.push(path.resolve(simDirectory, 'Library', 'Preferences', 'com.apple.WebUI.plist'));\n break;\n case 'webFoundation':\n paths.push(path.resolve(simDirectory, 'Library', 'Preferences', 'com.apple.WebFoundation.plist'));\n break;\n case 'preferences':\n paths.push(path.resolve(simDirectory, 'Library', 'Preferences', 'com.apple.Preferences.plist'));\n break;\n case 'locationServices':\n paths.push(path.resolve(simDirectory, 'Library', 'Preferences', 'com.apple.locationd.plist'));\n break;\n case 'locationClients':\n paths.push(path.resolve(simDirectory, 'Library', 'Caches', 'locationd', 'clients.plist'));\n break;\n case 'locationCache':\n paths.push(path.resolve(simDirectory, 'Library', 'Caches', 'locationd', 'cache.plist'));\n paths.push(path.resolve(simDirectory, 'Library', 'Preferences', 'com.apple.locationd.plist'));\n break;\n case 'userSettings':\n if (semver.lt(semver.coerce(sim.xcodeVersion.versionString), semver.coerce('7.3'))) {\n paths.push(path.resolve(simDirectory, 'Library', 'ConfigurationProfiles', 'UserSettings.plist'));\n paths.push(path.resolve(simDirectory, 'Library', 'ConfigurationProfiles', 'EffectiveUserSettings.plist'));\n paths.push(path.resolve(simDirectory, 'Library', 'ConfigurationProfiles', 'PublicInfo', 'PublicEffectiveUserSettings.plist'));\n } else {\n paths.push(path.resolve(simDirectory, 'Library', 'UserConfigurationProfiles', 'UserSettings.plist'));\n paths.push(path.resolve(simDirectory, 'Library', 'UserConfigurationProfiles', 'EffectiveUserSettings.plist'));\n paths.push(path.resolve(simDirectory, 'Library', 'UserConfigurationProfiles', 'PublicInfo', 'PublicEffectiveUserSettings.plist'));\n }\n break;\n case 'effectiveUserSettings':\n paths.push(path.resolve(simDirectory, 'Library', 'ConfigurationProfiles', 'EffectiveUserSettings.plist'));\n paths.push(path.resolve(simDirectory, 'Library', 'ConfigurationProfiles', 'PublicInfo', 'PublicEffectiveUserSettings.plist'));\n break;\n case 'accessibilitySettings':\n paths.push(path.resolve(simDirectory, 'Library', 'Preferences', 'com.apple.Accessibility.plist'));\n break;\n case 'uiStyleSettings':\n paths.push(path.resolve(simDirectory, 'Library', 'Preferences', 'com.apple.uikitservices.userInterfaceStyleMode.plist'));\n break;\n }\n\n return paths;\n}\n\nasync function updateSettings (sim, plist, updates) {\n return await B.reduce(await plistPaths(sim, plist), async function reducer (updated, path) {\n return await update(path, updates) || updated;\n }, false);\n}\n\n// update a plist file, located at pathToPlist\n// pass in an object, all settings specified in the object will be\n// updated on the plist, all others left as-is\nasync function update (pathToPlist, updates) {\n const currentSettings = await read(pathToPlist);\n const newSettings = Object.assign({}, currentSettings, updates);\n\n if (_.isEqual(currentSettings, newSettings)) {\n // no setting changes, so do nothing\n return false;\n }\n\n await plist.updatePlistFile(pathToPlist, newSettings, true, false);\n return true;\n}\n\nasync function readSettings (sim, plist) {\n let settings = {};\n for (let path of await plistPaths(sim, plist)) {\n settings[path] = await read(path);\n }\n return settings;\n}\n\nasync function read (pathToPlist) {\n return await plist.parsePlistFile(pathToPlist, false);\n}\n\nasync function updateLocationSettings (sim, bundleId, authorized) {\n // update location cache\n const newCachePrefs = {\n LastFenceActivityTimestamp: 412122103.232983,\n CleanShutdown: true\n };\n let updated = await updateSettings(sim, 'locationCache', {[bundleId]: newCachePrefs});\n\n // update location clients\n const newClientPrefs = {\n BundleId: bundleId,\n Authorized: !!authorized,\n Whitelisted: false,\n };\n for (const file of await plistPaths(sim, 'locationClients')) {\n log.debug(`Updating location client file: ${file}`);\n\n let updates = {};\n\n // see if the bundle is already there\n const plist = await read(file);\n\n // random data that always seems to be in the clients.plist\n const weirdLocKey = 'com.apple.locationd.bundle-/System/Library/' +\n 'PrivateFrameworks/AOSNotification.framework';\n if (!_.has(plist, weirdLocKey)) {\n updates[weirdLocKey] = {\n BundlePath: '/System/Library/PrivateFrameworks/AOSNotification.framework',\n Whitelisted: false,\n Executable: '',\n Registered: ''\n };\n }\n\n // create the update, and make sure it has sensible values\n const baseSetting = _.has(plist, bundleId) ? plist[bundleId] : {};\n updates[bundleId] = _.defaults(newClientPrefs, baseSetting);\n updates[bundleId].Executable = updates[bundleId].Executable || '';\n updates[bundleId].Registered = updates[bundleId].Registered || '';\n\n updated = await update(file, updates) || updated;\n }\n\n return updated;\n}\n\nasync function setReduceMotion (sim, reduceMotion = true) {\n log.debug(`Updating reduce motion. Setting to ${reduceMotion}.`);\n const paths = await plistPaths(sim, 'accessibilitySettings');\n for (const file of paths) {\n await update(file, {\n ReduceMotionEnabled: reduceMotion ? 1 : 0\n });\n }\n}\n\nasync function updateSafariGlobalSettings (sim, settingSet) {\n log.debug('Updating Safari global settings');\n\n let updated = false;\n for (const [file, safariSettingSet] of _.toPairs(await readSettings(sim, 'globalMobileSafari'))) {\n let newSettings = {};\n for (const [key, value] of _.toPairs(settingSet)) {\n if (safariSettingSet[key] !== value) {\n newSettings[key] = value;\n }\n }\n if (_.isEmpty(newSettings)) {\n continue;\n }\n\n updated = await update(file, newSettings) || updated;\n }\n return updated;\n}\n\nasync function updateSafariUserSettings (sim, settingSet) {\n log.debug('Updating Safari user settings');\n\n // add extra stuff to UserSettings.plist and EffectiveUserSettings.plist\n let newUserSettings = {};\n if (_.has(settingSet, 'WebKitJavaScriptEnabled')) {\n newUserSettings.safariAllowJavaScript = settingSet.WebKitJavaScriptEnabled;\n }\n if (_.has(settingSet, 'WebKitJavaScriptCanOpenWindowsAutomatically')) {\n newUserSettings.safariAllowPopups = settingSet.WebKitJavaScriptCanOpenWindowsAutomatically;\n }\n if (_.has(settingSet, 'WarnAboutFraudulentWebsites')) {\n newUserSettings.safariForceFraudWarning = !settingSet.WarnAboutFraudulentWebsites;\n }\n\n if (_.isEmpty(newUserSettings)) {\n return false;\n }\n\n let updated = false;\n for (const [file, userSettingSet] of _.toPairs(await readSettings(sim, 'userSettings'))) {\n // the user settings plist has two buckets, one for\n // boolean settings (`restrictedBool`) and one for\n // other value settings (`restrictedValue`). In each, the value\n // is in a `value` sub-field.\n if (!_.has(userSettingSet, 'restrictedBool')) {\n userSettingSet.restrictedBool = {};\n }\n for (let [key, value] of _.toPairs(newUserSettings)) {\n userSettingSet.restrictedBool[key] = {value};\n }\n\n // actually do the update\n updated = await update(file, userSettingSet) || updated;\n }\n\n return updated;\n}\n\nasync function updateLocale (sim, language, locale, calendarFormat) {\n let globalPrefs = path.resolve(sim.getDir(), 'Library', 'Preferences',\n '.GlobalPreferences.plist');\n\n // get the current data\n let data = await read(globalPrefs);\n let updates = {};\n\n // if we are setting the language, add it to the beginning of the list of languages\n if (language) {\n log.debug(`New language: ${language}`);\n let supportedLangs = data.AppleLanguages || [];\n // if the language is first, we don't need to do anything\n if (supportedLangs.indexOf(language) !== 0) {\n updates.AppleLanguages = [language].concat(_.without(supportedLangs, language));\n }\n }\n // if we are setting the locale or calendar format, set them as appropriate\n if (locale || calendarFormat) {\n let calSplit = '@calendar=';\n let curLocaleAndCal = data.AppleLocale || language || 'en';\n\n let split = curLocaleAndCal.split(calSplit);\n let curLoc = split[0];\n if (calendarFormat || split[1]) {\n calendarFormat = `${calSplit}${calendarFormat || split[1] || ''}`;\n }\n calendarFormat = calendarFormat || '';\n let newLocaleAndCal = locale ? locale : curLoc;\n if (calendarFormat) {\n newLocaleAndCal = `${newLocaleAndCal}${calendarFormat}`;\n }\n // only need to update if it has changed\n if (newLocaleAndCal !== curLocaleAndCal) {\n log.debug(`New locale: ${newLocaleAndCal}`);\n updates.AppleLocale = newLocaleAndCal;\n }\n }\n\n if (_.size(updates) === 0) {\n log.debug('No locale updates necessary.');\n return false;\n }\n\n log.debug('Writing new locale plist data');\n await update(globalPrefs, updates);\n return true;\n}\n\nasync function stub () {\n return await plistPaths;\n}\n\nexport {\n update, updateSettings, updateLocationSettings, setReduceMotion,\n updateSafariUserSettings, updateSafariGlobalSettings, updateLocale, read,\n readSettings, stub,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"settings.js","names":["plistPaths","sim","identifier","paths","simDirectory","getDir","push","path","resolve","getAppDir","semver","lt","coerce","xcodeVersion","versionString","updateSettings","plist","updates","B","reduce","reducer","updated","update","pathToPlist","currentSettings","read","newSettings","Object","assign","_","isEqual","updatePlistFile","readSettings","settings","parsePlistFile","updateLocationSettings","bundleId","authorized","newCachePrefs","LastFenceActivityTimestamp","CleanShutdown","newClientPrefs","BundleId","Authorized","Whitelisted","file","log","debug","weirdLocKey","has","BundlePath","Executable","Registered","baseSetting","defaults","setReduceMotion","reduceMotion","ReduceMotionEnabled","setReduceTransparency","reduceTransparency","EnhancedBackgroundContrastEnabled","updateSafariGlobalSettings","settingSet","safariSettingSet","toPairs","key","value","isEmpty","updateSafariUserSettings","newUserSettings","safariAllowJavaScript","WebKitJavaScriptEnabled","safariAllowPopups","WebKitJavaScriptCanOpenWindowsAutomatically","safariForceFraudWarning","WarnAboutFraudulentWebsites","userSettingSet","restrictedBool","updateLocale","language","locale","calendarFormat","globalPrefs","data","supportedLangs","AppleLanguages","indexOf","concat","without","calSplit","curLocaleAndCal","AppleLocale","split","curLoc","newLocaleAndCal","size","stub"],"sources":["../../lib/settings.js"],"sourcesContent":["import _ from 'lodash';\nimport { plist } from '@appium/support';\nimport path from 'path';\nimport log from './logger';\nimport semver from 'semver';\nimport B from 'bluebird';\n\n\n// returns path to plist based on id for plist.\n// these ids are appium terms\nasync function plistPaths (sim, identifier) {\n let paths = [];\n let simDirectory = sim.getDir();\n\n switch (identifier) {\n case 'webInspector':\n paths.push(path.resolve(simDirectory, 'Library', 'Preferences', 'com.apple.webInspector.plist'));\n break;\n case 'mobileSafari':\n paths.push(path.resolve(await sim.getAppDir('com.apple.mobilesafari'), 'Library', 'Preferences', 'com.apple.mobilesafari.plist'));\n break;\n case 'globalMobileSafari':\n paths.push(path.resolve(simDirectory, 'Library', 'Preferences', 'com.apple.mobilesafari.plist'));\n break;\n case 'webUI':\n paths.push(path.resolve(simDirectory, 'Library', 'Preferences', 'com.apple.WebUI.plist'));\n break;\n case 'webFoundation':\n paths.push(path.resolve(simDirectory, 'Library', 'Preferences', 'com.apple.WebFoundation.plist'));\n break;\n case 'preferences':\n paths.push(path.resolve(simDirectory, 'Library', 'Preferences', 'com.apple.Preferences.plist'));\n break;\n case 'locationServices':\n paths.push(path.resolve(simDirectory, 'Library', 'Preferences', 'com.apple.locationd.plist'));\n break;\n case 'locationClients':\n paths.push(path.resolve(simDirectory, 'Library', 'Caches', 'locationd', 'clients.plist'));\n break;\n case 'locationCache':\n paths.push(path.resolve(simDirectory, 'Library', 'Caches', 'locationd', 'cache.plist'));\n paths.push(path.resolve(simDirectory, 'Library', 'Preferences', 'com.apple.locationd.plist'));\n break;\n case 'userSettings':\n if (semver.lt(semver.coerce(sim.xcodeVersion.versionString), semver.coerce('7.3'))) {\n paths.push(path.resolve(simDirectory, 'Library', 'ConfigurationProfiles', 'UserSettings.plist'));\n paths.push(path.resolve(simDirectory, 'Library', 'ConfigurationProfiles', 'EffectiveUserSettings.plist'));\n paths.push(path.resolve(simDirectory, 'Library', 'ConfigurationProfiles', 'PublicInfo', 'PublicEffectiveUserSettings.plist'));\n } else {\n paths.push(path.resolve(simDirectory, 'Library', 'UserConfigurationProfiles', 'UserSettings.plist'));\n paths.push(path.resolve(simDirectory, 'Library', 'UserConfigurationProfiles', 'EffectiveUserSettings.plist'));\n paths.push(path.resolve(simDirectory, 'Library', 'UserConfigurationProfiles', 'PublicInfo', 'PublicEffectiveUserSettings.plist'));\n }\n break;\n case 'effectiveUserSettings':\n paths.push(path.resolve(simDirectory, 'Library', 'ConfigurationProfiles', 'EffectiveUserSettings.plist'));\n paths.push(path.resolve(simDirectory, 'Library', 'ConfigurationProfiles', 'PublicInfo', 'PublicEffectiveUserSettings.plist'));\n break;\n case 'accessibilitySettings':\n paths.push(path.resolve(simDirectory, 'Library', 'Preferences', 'com.apple.Accessibility.plist'));\n break;\n case 'uiStyleSettings':\n paths.push(path.resolve(simDirectory, 'Library', 'Preferences', 'com.apple.uikitservices.userInterfaceStyleMode.plist'));\n break;\n }\n\n return paths;\n}\n\nasync function updateSettings (sim, plist, updates) {\n return await B.reduce(await plistPaths(sim, plist), async function reducer (updated, path) {\n return await update(path, updates) || updated;\n }, false);\n}\n\n// update a plist file, located at pathToPlist\n// pass in an object, all settings specified in the object will be\n// updated on the plist, all others left as-is\nasync function update (pathToPlist, updates) {\n const currentSettings = await read(pathToPlist);\n const newSettings = Object.assign({}, currentSettings, updates);\n\n if (_.isEqual(currentSettings, newSettings)) {\n // no setting changes, so do nothing\n return false;\n }\n\n await plist.updatePlistFile(pathToPlist, newSettings, true, false);\n return true;\n}\n\nasync function readSettings (sim, plist) {\n let settings = {};\n for (let path of await plistPaths(sim, plist)) {\n settings[path] = await read(path);\n }\n return settings;\n}\n\nasync function read (pathToPlist) {\n return await plist.parsePlistFile(pathToPlist, false);\n}\n\nasync function updateLocationSettings (sim, bundleId, authorized) {\n // update location cache\n const newCachePrefs = {\n LastFenceActivityTimestamp: 412122103.232983,\n CleanShutdown: true\n };\n let updated = await updateSettings(sim, 'locationCache', {[bundleId]: newCachePrefs});\n\n // update location clients\n const newClientPrefs = {\n BundleId: bundleId,\n Authorized: !!authorized,\n Whitelisted: false,\n };\n for (const file of await plistPaths(sim, 'locationClients')) {\n log.debug(`Updating location client file: ${file}`);\n\n let updates = {};\n\n // see if the bundle is already there\n const plist = await read(file);\n\n // random data that always seems to be in the clients.plist\n const weirdLocKey = 'com.apple.locationd.bundle-/System/Library/' +\n 'PrivateFrameworks/AOSNotification.framework';\n if (!_.has(plist, weirdLocKey)) {\n updates[weirdLocKey] = {\n BundlePath: '/System/Library/PrivateFrameworks/AOSNotification.framework',\n Whitelisted: false,\n Executable: '',\n Registered: ''\n };\n }\n\n // create the update, and make sure it has sensible values\n const baseSetting = _.has(plist, bundleId) ? plist[bundleId] : {};\n updates[bundleId] = _.defaults(newClientPrefs, baseSetting);\n updates[bundleId].Executable = updates[bundleId].Executable || '';\n updates[bundleId].Registered = updates[bundleId].Registered || '';\n\n updated = await update(file, updates) || updated;\n }\n\n return updated;\n}\n\nasync function setReduceMotion (sim, reduceMotion = true) {\n log.debug(`Updating reduce motion. Setting to ${reduceMotion}.`);\n const paths = await plistPaths(sim, 'accessibilitySettings');\n for (const file of paths) {\n await update(file, {\n ReduceMotionEnabled: reduceMotion ? 1 : 0\n });\n }\n}\n\nasync function setReduceTransparency (sim, reduceTransparency) {\n log.debug(`Updating reduce tranceparency. Setting to ${reduceTransparency}.`);\n const paths = await plistPaths(sim, 'accessibilitySettings');\n for (const file of paths) {\n await update(file, {\n EnhancedBackgroundContrastEnabled: reduceTransparency ? 1 : 0\n });\n }\n}\n\nasync function updateSafariGlobalSettings (sim, settingSet) {\n log.debug('Updating Safari global settings');\n\n let updated = false;\n for (const [file, safariSettingSet] of _.toPairs(await readSettings(sim, 'globalMobileSafari'))) {\n let newSettings = {};\n for (const [key, value] of _.toPairs(settingSet)) {\n if (safariSettingSet[key] !== value) {\n newSettings[key] = value;\n }\n }\n if (_.isEmpty(newSettings)) {\n continue;\n }\n\n updated = await update(file, newSettings) || updated;\n }\n return updated;\n}\n\nasync function updateSafariUserSettings (sim, settingSet) {\n log.debug('Updating Safari user settings');\n\n // add extra stuff to UserSettings.plist and EffectiveUserSettings.plist\n let newUserSettings = {};\n if (_.has(settingSet, 'WebKitJavaScriptEnabled')) {\n newUserSettings.safariAllowJavaScript = settingSet.WebKitJavaScriptEnabled;\n }\n if (_.has(settingSet, 'WebKitJavaScriptCanOpenWindowsAutomatically')) {\n newUserSettings.safariAllowPopups = settingSet.WebKitJavaScriptCanOpenWindowsAutomatically;\n }\n if (_.has(settingSet, 'WarnAboutFraudulentWebsites')) {\n newUserSettings.safariForceFraudWarning = !settingSet.WarnAboutFraudulentWebsites;\n }\n\n if (_.isEmpty(newUserSettings)) {\n return false;\n }\n\n let updated = false;\n for (const [file, userSettingSet] of _.toPairs(await readSettings(sim, 'userSettings'))) {\n // the user settings plist has two buckets, one for\n // boolean settings (`restrictedBool`) and one for\n // other value settings (`restrictedValue`). In each, the value\n // is in a `value` sub-field.\n if (!_.has(userSettingSet, 'restrictedBool')) {\n userSettingSet.restrictedBool = {};\n }\n for (let [key, value] of _.toPairs(newUserSettings)) {\n userSettingSet.restrictedBool[key] = {value};\n }\n\n // actually do the update\n updated = await update(file, userSettingSet) || updated;\n }\n\n return updated;\n}\n\nasync function updateLocale (sim, language, locale, calendarFormat) {\n let globalPrefs = path.resolve(sim.getDir(), 'Library', 'Preferences',\n '.GlobalPreferences.plist');\n\n // get the current data\n let data = await read(globalPrefs);\n let updates = {};\n\n // if we are setting the language, add it to the beginning of the list of languages\n if (language) {\n log.debug(`New language: ${language}`);\n let supportedLangs = data.AppleLanguages || [];\n // if the language is first, we don't need to do anything\n if (supportedLangs.indexOf(language) !== 0) {\n updates.AppleLanguages = [language].concat(_.without(supportedLangs, language));\n }\n }\n // if we are setting the locale or calendar format, set them as appropriate\n if (locale || calendarFormat) {\n let calSplit = '@calendar=';\n let curLocaleAndCal = data.AppleLocale || language || 'en';\n\n let split = curLocaleAndCal.split(calSplit);\n let curLoc = split[0];\n if (calendarFormat || split[1]) {\n calendarFormat = `${calSplit}${calendarFormat || split[1] || ''}`;\n }\n calendarFormat = calendarFormat || '';\n let newLocaleAndCal = locale ? locale : curLoc;\n if (calendarFormat) {\n newLocaleAndCal = `${newLocaleAndCal}${calendarFormat}`;\n }\n // only need to update if it has changed\n if (newLocaleAndCal !== curLocaleAndCal) {\n log.debug(`New locale: ${newLocaleAndCal}`);\n updates.AppleLocale = newLocaleAndCal;\n }\n }\n\n if (_.size(updates) === 0) {\n log.debug('No locale updates necessary.');\n return false;\n }\n\n log.debug('Writing new locale plist data');\n await update(globalPrefs, updates);\n return true;\n}\n\nasync function stub () {\n return await plistPaths;\n}\n\nexport {\n update, updateSettings, updateLocationSettings, setReduceMotion, setReduceTransparency,\n updateSafariUserSettings, updateSafariGlobalSettings, updateLocale, read,\n readSettings, stub,\n};\n"],"mappings":"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"}
|