@tricoteuses/assemblee
Version:
Retrieve, clean up & handle French Assemblée nationale's open data
312 lines (311 loc) • 43.8 kB
JavaScript
;
require("core-js/modules/es.array.from.js");
require("core-js/modules/es.array.slice.js");
require("core-js/modules/es.function.name.js");
require("core-js/modules/es.object.define-property.js");
require("core-js/modules/es.regexp.to-string.js");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.cleanReunion = cleanReunion;
require("core-js/modules/es.symbol.js");
require("core-js/modules/es.symbol.description.js");
require("core-js/modules/es.symbol.iterator.js");
require("core-js/modules/es.array.filter.js");
require("core-js/modules/es.array.is-array.js");
require("core-js/modules/es.array.iterator.js");
require("core-js/modules/es.date.to-string.js");
require("core-js/modules/es.object.to-string.js");
require("core-js/modules/es.regexp.exec.js");
require("core-js/modules/es.string.iterator.js");
require("core-js/modules/web.dom-collections.iterator.js");
var _assert = _interopRequireDefault(require("assert"));
var _xml = require("./xml");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function cleanCycleDeVie(cycleDeVie) {
(0, _xml.cleanXmlArtefacts)(cycleDeVie);
var chrono = cycleDeVie.chrono;
(0, _assert["default"])(chrono);
{
(0, _xml.cleanXmlArtefacts)(chrono);
var creation = chrono.creation;
_assert["default"].strictEqual(_typeof(creation), "string");
creation = new Date(creation);
chrono.creation = creation;
var cloture = chrono.cloture;
if (cloture !== undefined) {
_assert["default"].strictEqual(_typeof(cloture), "string");
cloture = new Date(cloture);
chrono.cloture = cloture;
}
}
}
function cleanReunion(reunion) {
(0, _xml.cleanXmlArtefacts)(reunion);
(0, _xml.cleanBooleanAttribute)(reunion, "captationVideo");
(0, _xml.cleanBooleanAttribute)(reunion, "comiteSecret");
(0, _xml.cleanBooleanAttribute)(reunion, "ouverturePresse");
var xsiType = reunion["@xsi:type"];
if (xsiType !== undefined) {
reunion.xsiType = xsiType;
delete reunion["@xsi:type"];
}
var timestampDebut = reunion.timeStampDebut;
_assert["default"].notStrictEqual(timestampDebut, undefined);
reunion.timestampDebut = timestampDebut;
delete reunion.timeStampDebut;
var timestampFin = reunion.timeStampFin;
if (timestampFin !== undefined) {
_assert["default"].strictEqual(_typeof(timestampFin), "string");
timestampFin = new Date(timestampFin);
reunion.timestampFin = timestampFin;
delete reunion.timeStampFin;
}
var lieu = reunion.lieu;
if (lieu !== undefined) {
(0, _xml.cleanXmlArtefacts)(lieu);
}
var cycleDeVie = reunion.cycleDeVie;
_assert["default"].notStrictEqual(cycleDeVie, undefined);
cleanCycleDeVie(cycleDeVie);
var demandeurs = reunion.demandeurs;
if (demandeurs !== undefined) {
var acteurs = demandeurs.acteur;
if (acteurs !== undefined) {
if (!Array.isArray(acteurs)) {
_assert["default"].notStrictEqual(acteurs, null);
_assert["default"].strictEqual(_typeof(acteurs), "object");
acteurs = [acteurs];
}
demandeurs.acteurs = acteurs;
delete demandeurs.acteur;
var _iterator = _createForOfIteratorHelper(acteurs),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
var acteur = _step.value;
(0, _xml.cleanXmlArtefacts)(acteur);
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
}
var organe = demandeurs.organe;
if (organe !== undefined) {
(0, _xml.cleanXmlArtefacts)(organe);
}
}
var demandeur = reunion.demandeur;
if (demandeur !== undefined) {
_assert["default"].strictEqual(reunion.demandeurs, undefined);
delete reunion.demandeur;
var _acteur = demandeur.acteur;
if (_acteur !== undefined) {
_assert["default"].notStrictEqual(_acteur, null);
_assert["default"].strictEqual(_typeof(_acteur), "object");
var _acteurs = [_acteur];
demandeur.acteurs = _acteurs;
delete demandeur.acteur;
reunion.demandeurs = demandeur;
for (var _i = 0, _acteurs2 = _acteurs; _i < _acteurs2.length; _i++) {
var _acteur2 = _acteurs2[_i];
(0, _xml.cleanXmlArtefacts)(_acteur2);
}
}
var _organe = demandeur.organe;
if (_organe !== undefined) {
(0, _xml.cleanXmlArtefacts)(_organe);
}
}
var participants = reunion.participants;
if (participants !== undefined) {
(0, _xml.cleanXmlArtefacts)(participants);
var participantsInternes = participants.participantsInternes;
if (participantsInternes !== undefined) {
participantsInternes = participantsInternes.participantInterne;
if (!Array.isArray(participantsInternes)) {
_assert["default"].notStrictEqual(participantsInternes, null);
_assert["default"].strictEqual(_typeof(participantsInternes), "object");
participantsInternes = [participantsInternes];
}
participants.participantsInternes = participantsInternes;
}
var personnesAuditionnees = participants.personnesAuditionnees;
if (personnesAuditionnees !== undefined) {
personnesAuditionnees = personnesAuditionnees.personneAuditionnee;
if (personnesAuditionnees === null) {
delete participants.personnesAuditionnees;
} else {
if (!Array.isArray(personnesAuditionnees)) {
// assert.notStrictEqual(personnesAuditionnees, null)
_assert["default"].strictEqual(_typeof(personnesAuditionnees), "object");
personnesAuditionnees = [personnesAuditionnees];
}
personnesAuditionnees = personnesAuditionnees.filter(function (personneAudionnee) {
return personneAudionnee !== null;
});
if (personnesAuditionnees.length > 0) {
participants.personnesAuditionnees = personnesAuditionnees;
} else {
delete participants.personnesAuditionnees;
}
var _iterator2 = _createForOfIteratorHelper(personnesAuditionnees),
_step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
var personneAudionnee = _step2.value;
var _xsiType = personneAudionnee.uid["@xsi:type"];
(0, _assert["default"])(_xsiType);
personneAudionnee.xsiType = _xsiType;
var uid = personneAudionnee.uid["#text"];
(0, _assert["default"])(uid);
personneAudionnee.uid = uid;
var ident = personneAudionnee.ident;
(0, _assert["default"])(ident);
{
(0, _xml.cleanXmlArtefacts)(ident);
}
}
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
}
}
}
if (reunion.ODJ !== undefined) {
var odj = reunion.ODJ;
reunion.odj = odj;
delete reunion.ODJ;
{
(0, _xml.cleanXmlArtefacts)(odj);
var convocationOdj = odj.convocationODJ;
if (convocationOdj !== undefined) {
if (Array.isArray(convocationOdj.item)) {
convocationOdj = convocationOdj.item;
} else {
(0, _assert["default"])(convocationOdj.item);
convocationOdj = [convocationOdj.item];
}
odj.convocationOdj = convocationOdj;
delete odj.convocationODJ;
}
var resumeOdj = odj.resumeODJ;
if (resumeOdj !== undefined) {
if (Array.isArray(resumeOdj.item)) {
resumeOdj = resumeOdj.item;
} else {
(0, _assert["default"])(resumeOdj.item);
resumeOdj = [resumeOdj.item];
}
odj.resumeOdj = resumeOdj;
delete odj.resumeODJ;
}
var pointsOdj = odj.pointsODJ;
if (pointsOdj !== undefined) {
var pointOdj = pointsOdj.pointODJ;
if (Array.isArray(pointOdj)) {
pointsOdj = pointOdj;
} else {
(0, _assert["default"])(pointOdj);
pointsOdj = [pointOdj];
}
odj.pointsOdj = pointsOdj;
var _iterator3 = _createForOfIteratorHelper(pointsOdj),
_step3;
try {
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
var _pointOdj = _step3.value;
(0, _xml.cleanXmlArtefacts)(_pointOdj);
(0, _xml.cleanBooleanAttribute)(_pointOdj, "comiteSecret");
var _xsiType2 = _pointOdj["@xsi:type"];
if (_xsiType2 !== undefined) {
_pointOdj.xsiType = _xsiType2;
delete _pointOdj["@xsi:type"];
}
var _cycleDeVie = _pointOdj.cycleDeVie;
_assert["default"].notStrictEqual(_cycleDeVie, undefined);
cleanCycleDeVie(_cycleDeVie);
_assert["default"].strictEqual(_pointOdj.demandeurPoint, undefined);
var dossiersLegislatifsRefs = _pointOdj.dossiersLegislatifsRefs;
if (dossiersLegislatifsRefs !== undefined) {
if (Array.isArray(dossiersLegislatifsRefs.dossierRef)) {
dossiersLegislatifsRefs = dossiersLegislatifsRefs.dossierRef;
} else {
(0, _assert["default"])(dossiersLegislatifsRefs.dossierRef);
dossiersLegislatifsRefs = [dossiersLegislatifsRefs.dossierRef];
}
_pointOdj.dossiersLegislatifsRefs = dossiersLegislatifsRefs;
}
_pointOdj.typePointOdj = _pointOdj.typePointODJ;
delete _pointOdj.typePointODJ;
_assert["default"].strictEqual(_pointOdj.textesAssocies, undefined);
_pointOdj.natureTravauxOdj = _pointOdj.natureTravauxODJ;
delete _pointOdj.natureTravauxODJ;
var dateConfPres = _pointOdj.dateConfPres;
if (dateConfPres !== undefined) {
_assert["default"].strictEqual(_typeof(dateConfPres), "string");
(0, _assert["default"])(/^\d{4}-\d{2}-\d{2}\+\d{2}:00$/.test(dateConfPres));
dateConfPres = new Date(dateConfPres.split("+")[0]);
_pointOdj.dateConfPres = dateConfPres;
}
var dateLettreMinistre = _pointOdj.dateLettreMinistre;
if (dateLettreMinistre !== undefined) {
_assert["default"].strictEqual(_typeof(dateLettreMinistre), "string");
(0, _assert["default"])(/^\d{4}-\d{2}-\d{2}\+\d{2}:00$/.test(dateLettreMinistre));
dateLettreMinistre = new Date(dateLettreMinistre.split("+")[0]);
_pointOdj.dateLettreMinistre = dateLettreMinistre;
}
}
} catch (err) {
_iterator3.e(err);
} finally {
_iterator3.f();
}
delete odj.pointsODJ;
}
}
}
var identifiants = reunion.identifiants;
if (identifiants !== undefined) {
(0, _xml.cleanXmlArtefacts)(identifiants);
var numSeanceJo = identifiants.numSeanceJO;
if (numSeanceJo !== undefined) {
identifiants.numSeanceJo = numSeanceJo;
delete identifiants.numSeanceJO;
}
var idJo = identifiants.idJO;
if (idJo !== undefined) {
identifiants.idJo = idJo;
delete identifiants.idJO;
}
var dateSeance = identifiants.DateSeance;
_assert["default"].strictEqual(_typeof(dateSeance), "string");
(0, _assert["default"])(/^\d{4}-\d{2}-\d{2}\+\d{2}:00$/.test(dateSeance));
dateSeance = new Date(dateSeance.split("+")[0]);
identifiants.dateSeance = dateSeance;
delete identifiants.DateSeance;
}
var infosReunionsInternationale = reunion.infosReunionsInternationale;
if (infosReunionsInternationale !== undefined) {
(0, _xml.cleanXmlArtefacts)(infosReunionsInternationale);
(0, _xml.cleanBooleanAttribute)(infosReunionsInternationale, "estReunionInternationale");
var listePays = infosReunionsInternationale.listePays;
if (listePays !== undefined) {
listePays = listePays.paysRef;
if (!Array.isArray(listePays)) {
_assert["default"].strictEqual(_typeof(listePays), "string");
listePays = [listePays];
}
infosReunionsInternationale.listePays = listePays;
}
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfeG1sIiwiZSIsIl9fZXNNb2R1bGUiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInIiLCJ0IiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJBcnJheSIsImlzQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJsZW5ndGgiLCJfbiIsIkYiLCJzIiwibiIsImRvbmUiLCJ2YWx1ZSIsImYiLCJUeXBlRXJyb3IiLCJvIiwiYSIsInUiLCJjYWxsIiwibmV4dCIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsImZyb20iLCJ0ZXN0IiwiX3R5cGVvZiIsInByb3RvdHlwZSIsImNsZWFuQ3ljbGVEZVZpZSIsImN5Y2xlRGVWaWUiLCJjbGVhblhtbEFydGVmYWN0cyIsImNocm9ubyIsImFzc2VydCIsImNyZWF0aW9uIiwic3RyaWN0RXF1YWwiLCJEYXRlIiwiY2xvdHVyZSIsInVuZGVmaW5lZCIsImNsZWFuUmV1bmlvbiIsInJldW5pb24iLCJjbGVhbkJvb2xlYW5BdHRyaWJ1dGUiLCJ4c2lUeXBlIiwidGltZXN0YW1wRGVidXQiLCJ0aW1lU3RhbXBEZWJ1dCIsIm5vdFN0cmljdEVxdWFsIiwidGltZXN0YW1wRmluIiwidGltZVN0YW1wRmluIiwibGlldSIsImRlbWFuZGV1cnMiLCJhY3RldXJzIiwiYWN0ZXVyIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJlcnIiLCJvcmdhbmUiLCJkZW1hbmRldXIiLCJfaSIsIl9hY3RldXJzMiIsInBhcnRpY2lwYW50cyIsInBhcnRpY2lwYW50c0ludGVybmVzIiwicGFydGljaXBhbnRJbnRlcm5lIiwicGVyc29ubmVzQXVkaXRpb25uZWVzIiwicGVyc29ubmVBdWRpdGlvbm5lZSIsImZpbHRlciIsInBlcnNvbm5lQXVkaW9ubmVlIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsInVpZCIsImlkZW50IiwiT0RKIiwib2RqIiwiY29udm9jYXRpb25PZGoiLCJjb252b2NhdGlvbk9ESiIsIml0ZW0iLCJyZXN1bWVPZGoiLCJyZXN1bWVPREoiLCJwb2ludHNPZGoiLCJwb2ludHNPREoiLCJwb2ludE9kaiIsInBvaW50T0RKIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsImRlbWFuZGV1clBvaW50IiwiZG9zc2llcnNMZWdpc2xhdGlmc1JlZnMiLCJkb3NzaWVyUmVmIiwidHlwZVBvaW50T2RqIiwidHlwZVBvaW50T0RKIiwidGV4dGVzQXNzb2NpZXMiLCJuYXR1cmVUcmF2YXV4T2RqIiwibmF0dXJlVHJhdmF1eE9ESiIsImRhdGVDb25mUHJlcyIsInNwbGl0IiwiZGF0ZUxldHRyZU1pbmlzdHJlIiwiaWRlbnRpZmlhbnRzIiwibnVtU2VhbmNlSm8iLCJudW1TZWFuY2VKTyIsImlkSm8iLCJpZEpPIiwiZGF0ZVNlYW5jZSIsIkRhdGVTZWFuY2UiLCJpbmZvc1JldW5pb25zSW50ZXJuYXRpb25hbGUiLCJsaXN0ZVBheXMiLCJwYXlzUmVmIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsZWFuZXJzL3JldW5pb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiXG5cbmltcG9ydCB7IGNsZWFuQm9vbGVhbkF0dHJpYnV0ZSwgY2xlYW5YbWxBcnRlZmFjdHMgfSBmcm9tIFwiLi94bWxcIlxuXG5mdW5jdGlvbiBjbGVhbkN5Y2xlRGVWaWUoY3ljbGVEZVZpZTogYW55KTogdm9pZCB7XG4gIGNsZWFuWG1sQXJ0ZWZhY3RzKGN5Y2xlRGVWaWUpXG5cbiAgY29uc3QgY2hyb25vID0gY3ljbGVEZVZpZS5jaHJvbm9cbiAgYXNzZXJ0KGNocm9ubylcbiAge1xuICAgIGNsZWFuWG1sQXJ0ZWZhY3RzKGNocm9ubylcblxuICAgIGxldCBjcmVhdGlvbiA9IGNocm9uby5jcmVhdGlvblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0eXBlb2YgY3JlYXRpb24sIFwic3RyaW5nXCIpXG4gICAgY3JlYXRpb24gPSBuZXcgRGF0ZShjcmVhdGlvbilcbiAgICBjaHJvbm8uY3JlYXRpb24gPSBjcmVhdGlvblxuXG4gICAgbGV0IGNsb3R1cmUgPSBjaHJvbm8uY2xvdHVyZVxuICAgIGlmIChjbG90dXJlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0eXBlb2YgY2xvdHVyZSwgXCJzdHJpbmdcIilcbiAgICAgIGNsb3R1cmUgPSBuZXcgRGF0ZShjbG90dXJlKVxuICAgICAgY2hyb25vLmNsb3R1cmUgPSBjbG90dXJlXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhblJldW5pb24ocmV1bmlvbjogYW55KTogdm9pZCB7XG4gIGNsZWFuWG1sQXJ0ZWZhY3RzKHJldW5pb24pXG5cbiAgY2xlYW5Cb29sZWFuQXR0cmlidXRlKHJldW5pb24sIFwiY2FwdGF0aW9uVmlkZW9cIilcbiAgY2xlYW5Cb29sZWFuQXR0cmlidXRlKHJldW5pb24sIFwiY29taXRlU2VjcmV0XCIpXG4gIGNsZWFuQm9vbGVhbkF0dHJpYnV0ZShyZXVuaW9uLCBcIm91dmVydHVyZVByZXNzZVwiKVxuXG4gIGNvbnN0IHhzaVR5cGUgPSByZXVuaW9uW1wiQHhzaTp0eXBlXCJdXG4gIGlmICh4c2lUeXBlICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXVuaW9uLnhzaVR5cGUgPSB4c2lUeXBlXG4gICAgZGVsZXRlIHJldW5pb25bXCJAeHNpOnR5cGVcIl1cbiAgfVxuXG4gIGNvbnN0IHRpbWVzdGFtcERlYnV0ID0gcmV1bmlvbi50aW1lU3RhbXBEZWJ1dFxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwodGltZXN0YW1wRGVidXQsIHVuZGVmaW5lZClcbiAgcmV1bmlvbi50aW1lc3RhbXBEZWJ1dCA9IHRpbWVzdGFtcERlYnV0XG4gIGRlbGV0ZSByZXVuaW9uLnRpbWVTdGFtcERlYnV0XG5cbiAgbGV0IHRpbWVzdGFtcEZpbiA9IHJldW5pb24udGltZVN0YW1wRmluXG4gIGlmICh0aW1lc3RhbXBGaW4gIT09IHVuZGVmaW5lZCkge1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0eXBlb2YgdGltZXN0YW1wRmluLCBcInN0cmluZ1wiKVxuICAgIHRpbWVzdGFtcEZpbiA9IG5ldyBEYXRlKHRpbWVzdGFtcEZpbilcbiAgICByZXVuaW9uLnRpbWVzdGFtcEZpbiA9IHRpbWVzdGFtcEZpblxuICAgIGRlbGV0ZSByZXVuaW9uLnRpbWVTdGFtcEZpblxuICB9XG5cbiAgY29uc3QgbGlldSA9IHJldW5pb24ubGlldVxuICBpZiAobGlldSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY2xlYW5YbWxBcnRlZmFjdHMobGlldSlcbiAgfVxuXG4gIGNvbnN0IGN5Y2xlRGVWaWUgPSByZXVuaW9uLmN5Y2xlRGVWaWVcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKGN5Y2xlRGVWaWUsIHVuZGVmaW5lZClcbiAgY2xlYW5DeWNsZURlVmllKGN5Y2xlRGVWaWUpXG5cbiAgY29uc3QgZGVtYW5kZXVycyA9IHJldW5pb24uZGVtYW5kZXVyc1xuICBpZiAoZGVtYW5kZXVycyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgbGV0IGFjdGV1cnMgPSBkZW1hbmRldXJzLmFjdGV1clxuICAgIGlmIChhY3RldXJzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShhY3RldXJzKSkge1xuICAgICAgICBhc3NlcnQubm90U3RyaWN0RXF1YWwoYWN0ZXVycywgbnVsbClcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHR5cGVvZiBhY3RldXJzLCBcIm9iamVjdFwiKVxuICAgICAgICBhY3RldXJzID0gW2FjdGV1cnNdXG4gICAgICB9XG4gICAgICBkZW1hbmRldXJzLmFjdGV1cnMgPSBhY3RldXJzXG4gICAgICBkZWxldGUgZGVtYW5kZXVycy5hY3RldXJcblxuICAgICAgZm9yIChjb25zdCBhY3RldXIgb2YgYWN0ZXVycykge1xuICAgICAgICBjbGVhblhtbEFydGVmYWN0cyhhY3RldXIpXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgb3JnYW5lID0gZGVtYW5kZXVycy5vcmdhbmVcbiAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNsZWFuWG1sQXJ0ZWZhY3RzKG9yZ2FuZSlcbiAgICB9XG4gIH1cbiAgY29uc3QgZGVtYW5kZXVyID0gcmV1bmlvbi5kZW1hbmRldXJcbiAgaWYgKGRlbWFuZGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJldW5pb24uZGVtYW5kZXVycywgdW5kZWZpbmVkKVxuICAgIGRlbGV0ZSByZXVuaW9uLmRlbWFuZGV1clxuXG4gICAgbGV0IGFjdGV1ciA9IGRlbWFuZGV1ci5hY3RldXJcbiAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGFzc2VydC5ub3RTdHJpY3RFcXVhbChhY3RldXIsIG51bGwpXG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodHlwZW9mIGFjdGV1ciwgXCJvYmplY3RcIilcbiAgICAgIGNvbnN0IGFjdGV1cnMgPSBbYWN0ZXVyXVxuICAgICAgZGVtYW5kZXVyLmFjdGV1cnMgPSBhY3RldXJzXG4gICAgICBkZWxldGUgZGVtYW5kZXVyLmFjdGV1clxuICAgICAgcmV1bmlvbi5kZW1hbmRldXJzID0gZGVtYW5kZXVyXG5cbiAgICAgIGZvciAoY29uc3QgYWN0ZXVyIG9mIGFjdGV1cnMpIHtcbiAgICAgICAgY2xlYW5YbWxBcnRlZmFjdHMoYWN0ZXVyKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG9yZ2FuZSA9IGRlbWFuZGV1ci5vcmdhbmVcbiAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNsZWFuWG1sQXJ0ZWZhY3RzKG9yZ2FuZSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBwYXJ0aWNpcGFudHMgPSByZXVuaW9uLnBhcnRpY2lwYW50c1xuICBpZiAocGFydGljaXBhbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICBjbGVhblhtbEFydGVmYWN0cyhwYXJ0aWNpcGFudHMpXG5cbiAgICBsZXQgcGFydGljaXBhbnRzSW50ZXJuZXMgPSBwYXJ0aWNpcGFudHMucGFydGljaXBhbnRzSW50ZXJuZXNcbiAgICBpZiAocGFydGljaXBhbnRzSW50ZXJuZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcGFydGljaXBhbnRzSW50ZXJuZXMgPSBwYXJ0aWNpcGFudHNJbnRlcm5lcy5wYXJ0aWNpcGFudEludGVybmVcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShwYXJ0aWNpcGFudHNJbnRlcm5lcykpIHtcbiAgICAgICAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKHBhcnRpY2lwYW50c0ludGVybmVzLCBudWxsKVxuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodHlwZW9mIHBhcnRpY2lwYW50c0ludGVybmVzLCBcIm9iamVjdFwiKVxuICAgICAgICBwYXJ0aWNpcGFudHNJbnRlcm5lcyA9IFtwYXJ0aWNpcGFudHNJbnRlcm5lc11cbiAgICAgIH1cbiAgICAgIHBhcnRpY2lwYW50cy5wYXJ0aWNpcGFudHNJbnRlcm5lcyA9IHBhcnRpY2lwYW50c0ludGVybmVzXG4gICAgfVxuXG4gICAgbGV0IHBlcnNvbm5lc0F1ZGl0aW9ubmVlcyA9IHBhcnRpY2lwYW50cy5wZXJzb25uZXNBdWRpdGlvbm5lZXNcbiAgICBpZiAocGVyc29ubmVzQXVkaXRpb25uZWVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHBlcnNvbm5lc0F1ZGl0aW9ubmVlcyA9IHBlcnNvbm5lc0F1ZGl0aW9ubmVlcy5wZXJzb25uZUF1ZGl0aW9ubmVlXG4gICAgICBpZiAocGVyc29ubmVzQXVkaXRpb25uZWVzID09PSBudWxsKSB7XG4gICAgICAgIGRlbGV0ZSBwYXJ0aWNpcGFudHMucGVyc29ubmVzQXVkaXRpb25uZWVzXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkocGVyc29ubmVzQXVkaXRpb25uZWVzKSkge1xuICAgICAgICAgIC8vIGFzc2VydC5ub3RTdHJpY3RFcXVhbChwZXJzb25uZXNBdWRpdGlvbm5lZXMsIG51bGwpXG4gICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHR5cGVvZiBwZXJzb25uZXNBdWRpdGlvbm5lZXMsIFwib2JqZWN0XCIpXG4gICAgICAgICAgcGVyc29ubmVzQXVkaXRpb25uZWVzID0gW3BlcnNvbm5lc0F1ZGl0aW9ubmVlc11cbiAgICAgICAgfVxuICAgICAgICBwZXJzb25uZXNBdWRpdGlvbm5lZXMgPSBwZXJzb25uZXNBdWRpdGlvbm5lZXMuZmlsdGVyKFxuICAgICAgICAgIChwZXJzb25uZUF1ZGlvbm5lZTogYW55KSA9PiBwZXJzb25uZUF1ZGlvbm5lZSAhPT0gbnVsbCxcbiAgICAgICAgKVxuICAgICAgICBpZiAocGVyc29ubmVzQXVkaXRpb25uZWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBwYXJ0aWNpcGFudHMucGVyc29ubmVzQXVkaXRpb25uZWVzID0gcGVyc29ubmVzQXVkaXRpb25uZWVzXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVsZXRlIHBhcnRpY2lwYW50cy5wZXJzb25uZXNBdWRpdGlvbm5lZXNcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgcGVyc29ubmVBdWRpb25uZWUgb2YgcGVyc29ubmVzQXVkaXRpb25uZWVzKSB7XG4gICAgICAgICAgY29uc3QgeHNpVHlwZSA9IHBlcnNvbm5lQXVkaW9ubmVlLnVpZFtcIkB4c2k6dHlwZVwiXVxuICAgICAgICAgIGFzc2VydCh4c2lUeXBlKVxuICAgICAgICAgIHBlcnNvbm5lQXVkaW9ubmVlLnhzaVR5cGUgPSB4c2lUeXBlXG4gICAgICAgICAgY29uc3QgdWlkID0gcGVyc29ubmVBdWRpb25uZWUudWlkW1wiI3RleHRcIl1cbiAgICAgICAgICBhc3NlcnQodWlkKVxuICAgICAgICAgIHBlcnNvbm5lQXVkaW9ubmVlLnVpZCA9IHVpZFxuXG4gICAgICAgICAgY29uc3QgaWRlbnQgPSBwZXJzb25uZUF1ZGlvbm5lZS5pZGVudFxuICAgICAgICAgIGFzc2VydChpZGVudClcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGVhblhtbEFydGVmYWN0cyhpZGVudClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAocmV1bmlvbi5PREogIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IG9kaiA9IHJldW5pb24uT0RKXG4gICAgcmV1bmlvbi5vZGogPSBvZGpcbiAgICBkZWxldGUgcmV1bmlvbi5PREpcbiAgICB7XG4gICAgICBjbGVhblhtbEFydGVmYWN0cyhvZGopXG5cbiAgICAgIGxldCBjb252b2NhdGlvbk9kaiA9IG9kai5jb252b2NhdGlvbk9ESlxuICAgICAgaWYgKGNvbnZvY2F0aW9uT2RqICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29udm9jYXRpb25PZGouaXRlbSkpIHtcbiAgICAgICAgICBjb252b2NhdGlvbk9kaiA9IGNvbnZvY2F0aW9uT2RqLml0ZW1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhc3NlcnQoY29udm9jYXRpb25PZGouaXRlbSlcbiAgICAgICAgICBjb252b2NhdGlvbk9kaiA9IFtjb252b2NhdGlvbk9kai5pdGVtXVxuICAgICAgICB9XG4gICAgICAgIG9kai5jb252b2NhdGlvbk9kaiA9IGNvbnZvY2F0aW9uT2RqXG4gICAgICAgIGRlbGV0ZSBvZGouY29udm9jYXRpb25PREpcbiAgICAgIH1cblxuICAgICAgbGV0IHJlc3VtZU9kaiA9IG9kai5yZXN1bWVPREpcbiAgICAgIGlmIChyZXN1bWVPZGogIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bWVPZGouaXRlbSkpIHtcbiAgICAgICAgICByZXN1bWVPZGogPSByZXN1bWVPZGouaXRlbVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFzc2VydChyZXN1bWVPZGouaXRlbSlcbiAgICAgICAgICByZXN1bWVPZGogPSBbcmVzdW1lT2RqLml0ZW1dXG4gICAgICAgIH1cbiAgICAgICAgb2RqLnJlc3VtZU9kaiA9IHJlc3VtZU9kalxuICAgICAgICBkZWxldGUgb2RqLnJlc3VtZU9ESlxuICAgICAgfVxuXG4gICAgICBsZXQgcG9pbnRzT2RqID0gb2RqLnBvaW50c09ESlxuICAgICAgaWYgKHBvaW50c09kaiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxldCBwb2ludE9kaiA9IHBvaW50c09kai5wb2ludE9ESlxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwb2ludE9kaikpIHtcbiAgICAgICAgICBwb2ludHNPZGogPSBwb2ludE9kalxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFzc2VydChwb2ludE9kailcbiAgICAgICAgICBwb2ludHNPZGogPSBbcG9pbnRPZGpdXG4gICAgICAgIH1cbiAgICAgICAgb2RqLnBvaW50c09kaiA9IHBvaW50c09kalxuXG4gICAgICAgIGZvciAoY29uc3QgcG9pbnRPZGogb2YgcG9pbnRzT2RqKSB7XG4gICAgICAgICAgY2xlYW5YbWxBcnRlZmFjdHMocG9pbnRPZGopXG5cbiAgICAgICAgICBjbGVhbkJvb2xlYW5BdHRyaWJ1dGUocG9pbnRPZGosIFwiY29taXRlU2VjcmV0XCIpXG5cbiAgICAgICAgICBjb25zdCB4c2lUeXBlID0gcG9pbnRPZGpbXCJAeHNpOnR5cGVcIl1cbiAgICAgICAgICBpZiAoeHNpVHlwZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBwb2ludE9kai54c2lUeXBlID0geHNpVHlwZVxuICAgICAgICAgICAgZGVsZXRlIHBvaW50T2RqW1wiQHhzaTp0eXBlXCJdXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgY3ljbGVEZVZpZSA9IHBvaW50T2RqLmN5Y2xlRGVWaWVcbiAgICAgICAgICBhc3NlcnQubm90U3RyaWN0RXF1YWwoY3ljbGVEZVZpZSwgdW5kZWZpbmVkKVxuICAgICAgICAgIGNsZWFuQ3ljbGVEZVZpZShjeWNsZURlVmllKVxuXG4gICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBvaW50T2RqLmRlbWFuZGV1clBvaW50LCB1bmRlZmluZWQpXG5cbiAgICAgICAgICBsZXQgZG9zc2llcnNMZWdpc2xhdGlmc1JlZnMgPSBwb2ludE9kai5kb3NzaWVyc0xlZ2lzbGF0aWZzUmVmc1xuICAgICAgICAgIGlmIChkb3NzaWVyc0xlZ2lzbGF0aWZzUmVmcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkb3NzaWVyc0xlZ2lzbGF0aWZzUmVmcy5kb3NzaWVyUmVmKSkge1xuICAgICAgICAgICAgICBkb3NzaWVyc0xlZ2lzbGF0aWZzUmVmcyA9IGRvc3NpZXJzTGVnaXNsYXRpZnNSZWZzLmRvc3NpZXJSZWZcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGFzc2VydChkb3NzaWVyc0xlZ2lzbGF0aWZzUmVmcy5kb3NzaWVyUmVmKVxuICAgICAgICAgICAgICBkb3NzaWVyc0xlZ2lzbGF0aWZzUmVmcyA9IFtkb3NzaWVyc0xlZ2lzbGF0aWZzUmVmcy5kb3NzaWVyUmVmXVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcG9pbnRPZGouZG9zc2llcnNMZWdpc2xhdGlmc1JlZnMgPSBkb3NzaWVyc0xlZ2lzbGF0aWZzUmVmc1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHBvaW50T2RqLnR5cGVQb2ludE9kaiA9IHBvaW50T2RqLnR5cGVQb2ludE9ESlxuICAgICAgICAgIGRlbGV0ZSBwb2ludE9kai50eXBlUG9pbnRPREpcblxuICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwb2ludE9kai50ZXh0ZXNBc3NvY2llcywgdW5kZWZpbmVkKVxuXG4gICAgICAgICAgcG9pbnRPZGoubmF0dXJlVHJhdmF1eE9kaiA9IHBvaW50T2RqLm5hdHVyZVRyYXZhdXhPREpcbiAgICAgICAgICBkZWxldGUgcG9pbnRPZGoubmF0dXJlVHJhdmF1eE9ESlxuXG4gICAgICAgICAgbGV0IGRhdGVDb25mUHJlcyA9IHBvaW50T2RqLmRhdGVDb25mUHJlc1xuICAgICAgICAgIGlmIChkYXRlQ29uZlByZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHR5cGVvZiBkYXRlQ29uZlByZXMsIFwic3RyaW5nXCIpXG4gICAgICAgICAgICBhc3NlcnQoL15cXGR7NH0tXFxkezJ9LVxcZHsyfVxcK1xcZHsyfTowMCQvLnRlc3QoZGF0ZUNvbmZQcmVzKSlcbiAgICAgICAgICAgIGRhdGVDb25mUHJlcyA9IG5ldyBEYXRlKGRhdGVDb25mUHJlcy5zcGxpdChcIitcIilbMF0pXG4gICAgICAgICAgICBwb2ludE9kai5kYXRlQ29uZlByZXMgPSBkYXRlQ29uZlByZXNcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgZGF0ZUxldHRyZU1pbmlzdHJlID0gcG9pbnRPZGouZGF0ZUxldHRyZU1pbmlzdHJlXG4gICAgICAgICAgaWYgKGRhdGVMZXR0cmVNaW5pc3RyZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodHlwZW9mIGRhdGVMZXR0cmVNaW5pc3RyZSwgXCJzdHJpbmdcIilcbiAgICAgICAgICAgIGFzc2VydCgvXlxcZHs0fS1cXGR7Mn0tXFxkezJ9XFwrXFxkezJ9OjAwJC8udGVzdChkYXRlTGV0dHJlTWluaXN0cmUpKVxuICAgICAgICAgICAgZGF0ZUxldHRyZU1pbmlzdHJlID0gbmV3IERhdGUoZGF0ZUxldHRyZU1pbmlzdHJlLnNwbGl0KFwiK1wiKVswXSlcbiAgICAgICAgICAgIHBvaW50T2RqLmRhdGVMZXR0cmVNaW5pc3RyZSA9IGRhdGVMZXR0cmVNaW5pc3RyZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBkZWxldGUgb2RqLnBvaW50c09ESlxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGlkZW50aWZpYW50cyA9IHJldW5pb24uaWRlbnRpZmlhbnRzXG4gIGlmIChpZGVudGlmaWFudHMgIT09IHVuZGVmaW5lZCkge1xuICAgIGNsZWFuWG1sQXJ0ZWZhY3RzKGlkZW50aWZpYW50cylcbiAgICBjb25zdCBudW1TZWFuY2VKbyA9IGlkZW50aWZpYW50cy5udW1TZWFuY2VKT1xuICAgIGlmIChudW1TZWFuY2VKbyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZGVudGlmaWFudHMubnVtU2VhbmNlSm8gPSBudW1TZWFuY2VKb1xuICAgICAgZGVsZXRlIGlkZW50aWZpYW50cy5udW1TZWFuY2VKT1xuICAgIH1cblxuICAgIGNvbnN0IGlkSm8gPSBpZGVudGlmaWFudHMuaWRKT1xuICAgIGlmIChpZEpvICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlkZW50aWZpYW50cy5pZEpvID0gaWRKb1xuICAgICAgZGVsZXRlIGlkZW50aWZpYW50cy5pZEpPXG4gICAgfVxuXG4gICAgbGV0IGRhdGVTZWFuY2UgPSBpZGVudGlmaWFudHMuRGF0ZVNlYW5jZVxuICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0eXBlb2YgZGF0ZVNlYW5jZSwgXCJzdHJpbmdcIilcbiAgICBhc3NlcnQoL15cXGR7NH0tXFxkezJ9LVxcZHsyfVxcK1xcZHsyfTowMCQvLnRlc3QoZGF0ZVNlYW5jZSkpXG4gICAgZGF0ZVNlYW5jZSA9IG5ldyBEYXRlKGRhdGVTZWFuY2Uuc3BsaXQoXCIrXCIpWzBdKVxuICAgIGlkZW50aWZpYW50cy5kYXRlU2VhbmNlID0gZGF0ZVNlYW5jZVxuICAgIGRlbGV0ZSBpZGVudGlmaWFudHMuRGF0ZVNlYW5jZVxuICB9XG5cbiAgY29uc3QgaW5mb3NSZXVuaW9uc0ludGVybmF0aW9uYWxlID0gcmV1bmlvbi5pbmZvc1JldW5pb25zSW50ZXJuYXRpb25hbGVcbiAgaWYgKGluZm9zUmV1bmlvbnNJbnRlcm5hdGlvbmFsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY2xlYW5YbWxBcnRlZmFjdHMoaW5mb3NSZXVuaW9uc0ludGVybmF0aW9uYWxlKVxuXG4gICAgY2xlYW5Cb29sZWFuQXR0cmlidXRlKFxuICAgICAgaW5mb3NSZXVuaW9uc0ludGVybmF0aW9uYWxlLFxuICAgICAgXCJlc3RSZXVuaW9uSW50ZXJuYXRpb25hbGVcIixcbiAgICApXG5cbiAgICBsZXQgbGlzdGVQYXlzID0gaW5mb3NSZXVuaW9uc0ludGVybmF0aW9uYWxlLmxpc3RlUGF5c1xuICAgIGlmIChsaXN0ZVBheXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbGlzdGVQYXlzID0gbGlzdGVQYXlzLnBheXNSZWZcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShsaXN0ZVBheXMpKSB7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0eXBlb2YgbGlzdGVQYXlzLCBcInN0cmluZ1wiKVxuICAgICAgICBsaXN0ZVBheXMgPSBbbGlzdGVQYXlzXVxuICAgICAgfVxuICAgICAgaW5mb3NSZXVuaW9uc0ludGVybmF0aW9uYWxlLmxpc3RlUGF5cyA9IGxpc3RlUGF5c1xuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsSUFBQSxHQUFBRCxPQUFBO0FBQWdFLFNBQUFELHVCQUFBRyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsZ0JBQUFBLENBQUE7QUFBQSxTQUFBRSwyQkFBQUMsQ0FBQSxFQUFBSCxDQUFBLFFBQUFJLENBQUEseUJBQUFDLE1BQUEsSUFBQUYsQ0FBQSxDQUFBRSxNQUFBLENBQUFDLFFBQUEsS0FBQUgsQ0FBQSxxQkFBQUMsQ0FBQSxRQUFBRyxLQUFBLENBQUFDLE9BQUEsQ0FBQUwsQ0FBQSxNQUFBQyxDQUFBLEdBQUFLLDJCQUFBLENBQUFOLENBQUEsTUFBQUgsQ0FBQSxJQUFBRyxDQUFBLHVCQUFBQSxDQUFBLENBQUFPLE1BQUEsSUFBQU4sQ0FBQSxLQUFBRCxDQUFBLEdBQUFDLENBQUEsT0FBQU8sRUFBQSxN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