From fda880aeb1e87ac279cd0222a4806d6cb5fd8cdd Mon Sep 17 00:00:00 2001 From: Nachiket Gomkale Date: Sun, 5 Feb 2023 00:00:04 +0530 Subject: [PATCH] #2198 issue: converted normal function to the arrow function --- js/abc.js | 87 ++++++++-------- js/activity.js | 261 +++++++++++++++++++++++++++++++++++----------- js/artwork.js | 34 +++--- js/basicblocks.js | 4 +- js/block.js | 44 ++++---- js/lilypond.js | 21 ++-- js/macros.js | 4 +- js/mxml.js | 2 +- js/palette.js | 22 ++-- js/piemenus.js | 113 ++++++++++++-------- 10 files changed, 373 insertions(+), 219 deletions(-) diff --git a/js/abc.js b/js/abc.js index 567d53de65..bffd806aa3 100644 --- a/js/abc.js +++ b/js/abc.js @@ -22,17 +22,17 @@ // This header is prepended to the Abc output. const ABCHEADER = "X:1\nT:Music Blocks composition\nC:Mr. Mouse\nL:1/16\nM:C\n"; -const getABCHeader = function() { +const getABCHeader = () => { return ABCHEADER; }; -const processABCNotes = function(logo, turtle) { +const processABCNotes = (logo, turtle) => { // obj = [instructions] or // obj = [[notes], duration, dotCount, tupletValue, roundDown, // insideChord, staccato] logo.notationNotes[turtle] = ""; - const __convertDuration = function(duration) { + const __convertDuration = (duration) => { let returnString = ""; switch (duration) { case 64: @@ -64,7 +64,7 @@ const processABCNotes = function(logo, turtle) { return returnString; }; - const __toABCnote = function (note) { + const __toABCnote = (note) => { // beams -- no space between notes // ties use () // % comment @@ -225,10 +225,8 @@ const processABCNotes = function(logo, turtle) { // If it is a tuplet, look ahead to see if it is complete. // While you are at it, add up the durations. if (obj[NOTATIONTUPLETVALUE] != null) { - targetDuration = - 1 / logo.notation.notationStaging[turtle][i][NOTATIONDURATION]; - tupletDuration = - 1 / logo.notation.notationStaging[turtle][i][NOTATIONROUNDDOWN]; + targetDuration = 1 / logo.notation.notationStaging[turtle][i][NOTATIONDURATION]; + tupletDuration = 1 / logo.notation.notationStaging[turtle][i][NOTATIONROUNDDOWN]; let j = 1; let k = 1; while (k < obj[NOTATIONTUPLETVALUE]) { @@ -237,33 +235,31 @@ const processABCNotes = function(logo, turtle) { break; } - if (logo.notation.notationStaging[turtle][i + j][ - NOTATIONINSIDECHORD] > 0 && - logo.notation.notationStaging[turtle][i + j][ - NOTATIONINSIDECHORD] === - logo.notation.notationStaging[turtle][i + j - 1][ - NOTATIONINSIDECHORD]) { + if ( + logo.notation.notationStaging[turtle][i + j][NOTATIONINSIDECHORD] > 0 && + logo.notation.notationStaging[turtle][i + j][NOTATIONINSIDECHORD] === + logo.notation.notationStaging[turtle][i + j - 1][NOTATIONINSIDECHORD] + ) { // In a chord, so jump to next note. j++; } else if ( - logo.notation.notationStaging[turtle][i + j][ - NOTATIONTUPLETVALUE] !== obj[NOTATIONTUPLETVALUE]) { + logo.notation.notationStaging[turtle][i + j][NOTATIONTUPLETVALUE] !== + obj[NOTATIONTUPLETVALUE] + ) { incompleteTuplet = j; break; } else { targetDuration += - 1 / logo.notation.notationStaging[turtle][i + j][ - NOTATIONDURATION]; + 1 / logo.notation.notationStaging[turtle][i + j][NOTATIONDURATION]; tupletDuration += - 1 / logo.notation.notationStaging[turtle][i + j][ - NOTATIONROUNDDOWN]; + 1 / logo.notation.notationStaging[turtle][i + j][NOTATIONROUNDDOWN]; j++; // Jump to next note. k++; // Increment notes in tuplet. } } } - const __processTuplet = function (logo, turtle, i, count) { + const __processTuplet = (logo, turtle, i, count) => { let j = 0; let k = 0; @@ -278,8 +274,7 @@ const processABCNotes = function(logo, turtle) { } for (let ii = 0; ii < notes.length; ii++) { - logo.notationNotes[turtle] += __toABCnote( - notes[ii]); + logo.notationNotes[turtle] += __toABCnote(notes[ii]); logo.notationNotes[turtle] += " "; } @@ -292,8 +287,7 @@ const processABCNotes = function(logo, turtle) { } logo.notationNotes[turtle] += - logo.notation.notationStaging[turtle][i + j][ - NOTATIONROUNDDOWN]; + logo.notation.notationStaging[turtle][i + j][NOTATIONROUNDDOWN]; j++; // Jump to next note. k++; // Increment notes in tuplet. } else { @@ -322,15 +316,12 @@ const processABCNotes = function(logo, turtle) { if (obj[NOTATIONTUPLETVALUE] > 0) { if (incompleteTuplet === 0) { - const tupletFraction = toFraction(tupletDuration / - targetDuration); + const tupletFraction = toFraction(tupletDuration / targetDuration); logo.notationNotes[turtle] += "(" + tupletFraction[0] + ":" + tupletFraction[1] + ""; - i += __processTuplet( - logo, turtle, i, obj[NOTATIONTUPLETVALUE]) - 1; + i += __processTuplet(logo, turtle, i, obj[NOTATIONTUPLETVALUE]) - 1; } else { - const tupletFraction = toFraction( - obj[NOTATIONTUPLETVALUE] / incompleteTuplet); + const tupletFraction = toFraction(obj[NOTATIONTUPLETVALUE] / incompleteTuplet); logo.notationNotes[turtle] += "(" + tupletFraction[0] + ":" + tupletFraction[1] + ""; i += __processTuplet(logo, turtle, i, incompleteTuplet) - 1; @@ -367,10 +358,11 @@ const processABCNotes = function(logo, turtle) { if (obj[NOTATIONINSIDECHORD] > 0) { // Is logo the first note in the chord? - if (i === 0 || - logo.notation.notationStaging[turtle][i - 1][ - NOTATIONINSIDECHORD - ] !== obj[NOTATIONINSIDECHORD]) { + if ( + i === 0 || + logo.notation.notationStaging[turtle][i - 1][NOTATIONINSIDECHORD] !== + obj[NOTATIONINSIDECHORD] + ) { // Open the chord. logo.notationNotes[turtle] += "["; } @@ -378,13 +370,14 @@ const processABCNotes = function(logo, turtle) { logo.notationNotes[turtle] += note; // Is logo the last note in the chord? - if (i === logo.notation.notationStaging[turtle].length - 1 - || logo.notation.notationStaging[turtle][i + 1][ - NOTATIONINSIDECHORD] !== obj[NOTATIONINSIDECHORD]) { + if ( + i === logo.notation.notationStaging[turtle].length - 1 || + logo.notation.notationStaging[turtle][i + 1][NOTATIONINSIDECHORD] !== + obj[NOTATIONINSIDECHORD] + ) { // Close the chord and add note duration. logo.notationNotes[turtle] += "]"; - logo.notationNotes[turtle] += __convertDuration( - obj[NOTATIONDURATION]); + logo.notationNotes[turtle] += __convertDuration(obj[NOTATIONDURATION]); for (let d = 0; d < obj[NOTATIONDOTCOUNT]; d++) { logo.notationNotes[turtle] += " "; } @@ -397,8 +390,7 @@ const processABCNotes = function(logo, turtle) { } } else { logo.notationNotes[turtle] += note; - logo.notationNotes[turtle] += __convertDuration( - obj[NOTATIONDURATION]); + logo.notationNotes[turtle] += __convertDuration(obj[NOTATIONDURATION]); for (let d = 0; d < obj[NOTATIONDOTCOUNT]; d++) { logo.notationNotes[turtle] += "."; } @@ -426,7 +418,7 @@ const processABCNotes = function(logo, turtle) { } }; -const saveAbcOutput = function(activity) { +const saveAbcOutput = (activity) => { // let turtleCount = 0; activity.logo.notationOutput = getABCHeader(); @@ -439,11 +431,14 @@ const saveAbcOutput = function(activity) { for (const t in activity.logo.notation.notationStaging) { activity.logo.notationOutput += - "K:" + activity.turtles.ithTurtle(t).singer.keySignature - .toUpperCase() + "K:" + + activity.turtles + .ithTurtle(t) + .singer.keySignature.toUpperCase() .replace(" ", "") .replace("♭", "b") - .replace("♯", "#") + "\n"; + .replace("♯", "#") + + "\n"; processABCNotes(activity.logo, t); activity.logo.notationOutput += activity.logo.notationNotes[t]; } diff --git a/js/activity.js b/js/activity.js index d292ade351..4f14e128ae 100644 --- a/js/activity.js +++ b/js/activity.js @@ -181,7 +181,7 @@ if (_THIS_IS_MUSIC_BLOCKS_) { // blocks, logo, palettes, and turtles for plugins and js-export. let globalActivity; -const doAnalyzeProject = function() { +const doAnalyzeProject = () => { return analyzeProject(globalActivity); }; @@ -287,13 +287,13 @@ class Activity { // eslint-disable-next-line no-console console.log(this.storage.KeySignatureEnv); this.KeySignatureEnv = this.storage.KeySignatureEnv.split(","); - this.KeySignatureEnv[2] = (this.KeySignatureEnv[2] === "true"); + this.KeySignatureEnv[2] = this.KeySignatureEnv[2] === "true"; } } catch (e) { // eslint-disable-next-line no-console console.error(e); } - + /** * Initialises major variables and renders default stack. */ @@ -381,10 +381,10 @@ class Activity { * Sets up right click functionality opening the context menus * (if block is right clicked) */ - this.doContextMenus = function () { + this.doContextMenus = () => { document.addEventListener( "contextmenu", - function (event) { + (event) => { event.preventDefault(); event.stopPropagation(); }, @@ -1060,7 +1060,9 @@ class Activity { function changeText() { const randomLoadMessage = - messages.load_messages[Math.floor(Math.random() * messages.load_messages.length)]; + messages.load_messages[ + Math.floor(Math.random() * messages.load_messages.length) + ]; document.getElementById("messageText").innerHTML = randomLoadMessage + "..."; counter++; if (counter >= messages.load_messages.length) { @@ -1169,7 +1171,8 @@ class Activity { i < this.palettes.dict[this.palettes.activePalette].protoList.length; i++ ) { - const name = this.palettes.dict[this.palettes.activePalette].protoList[i]["name"]; + const name = + this.palettes.dict[this.palettes.activePalette].protoList[i]["name"]; if (name in obj["FLOWPLUGINS"]) { // eslint-disable-next-line no-console console.log("deleting " + name); @@ -1426,7 +1429,8 @@ class Activity { that.blocks.activeBlock = null; const delta = - Math.abs(event.stageX - lastCoords.x) + Math.abs(event.stageY - lastCoords.y); + Math.abs(event.stageX - lastCoords.x) + + Math.abs(event.stageY - lastCoords.y); if (that.scrollBlockContainer) { that.blocksContainer.x += event.stageX - lastCoords.x; @@ -1548,7 +1552,8 @@ class Activity { that.msgText = text; }; - img.src = "data:image/svg+xml;base64," + window.btoa(unescape(encodeURIComponent(svgData))); + img.src = + "data:image/svg+xml;base64," + window.btoa(unescape(encodeURIComponent(svgData))); }; /* @@ -1631,7 +1636,7 @@ class Activity { if (blockLabel.length === 0) { // Swap in a preferred name when there is no label. let label = _(block.name); - switch(block.name) { + switch (block.name) { case "scaledegree2": label = _("scale degree"); break; @@ -2219,7 +2224,10 @@ class Activity { this.blocks.blockMoved(this.blocks.activeBlock); this.blocks.adjustDocks(this.blocks.activeBlock, true); } else if (this.palettes.activePalette !== null) { - this.palettes.activePalette.scrollEvent(-STANDARDBLOCKHEIGHT, 1); + this.palettes.activePalette.scrollEvent( + -STANDARDBLOCKHEIGHT, + 1 + ); } else { this.blocksContainer.y -= 20; } @@ -2470,10 +2478,13 @@ class Activity { for (let i = 0; i < 7; i++) { this.grandSharpBitmap[i].x = this.canvas.width / (2 * this.turtleBlocksScale) - 600; this.grandFlatBitmap[i].x = this.canvas.width / (2 * this.turtleBlocksScale) - 600; - this.trebleSharpBitmap[i].x = this.canvas.width / (2 * this.turtleBlocksScale) - 600; + this.trebleSharpBitmap[i].x = + this.canvas.width / (2 * this.turtleBlocksScale) - 600; this.trebleFlatBitmap[i].x = this.canvas.width / (2 * this.turtleBlocksScale) - 600; - this.sopranoSharpBitmap[i].x = this.canvas.width / (2 * this.turtleBlocksScale) - 600; - this.sopranoFlatBitmap[i].x = this.canvas.width / (2 * this.turtleBlocksScale) - 600; + this.sopranoSharpBitmap[i].x = + this.canvas.width / (2 * this.turtleBlocksScale) - 600; + this.sopranoFlatBitmap[i].x = + this.canvas.width / (2 * this.turtleBlocksScale) - 600; this.altoSharpBitmap[i].x = this.canvas.width / (2 * this.turtleBlocksScale) - 600; this.altoFlatBitmap[i].x = this.canvas.width / (2 * this.turtleBlocksScale) - 600; this.tenorSharpBitmap[i].x = this.canvas.width / (2 * this.turtleBlocksScale) - 600; @@ -2529,7 +2540,7 @@ class Activity { } // Some accidentals on the tenor staff shift by an octave. - this.tenorSharpBitmap[0].y += + 87.5; + this.tenorSharpBitmap[0].y += +87.5; this.tenorSharpBitmap[2].y += 87.5; for (let i = 0; i < 7; i++) { @@ -2623,9 +2634,8 @@ class Activity { // We need to add a palette entry for this action. // But first we need to ensure we have a unqiue name, // as the name could have been taken in the interim. - const actionArg = this.blocks.blockList[ - this.blocks.blockList[thisBlock].connections[1] - ]; + const actionArg = + this.blocks.blockList[this.blocks.blockList[thisBlock].connections[1]]; if (actionArg !== null) { let label; const oldName = actionArg.value; @@ -2896,7 +2906,8 @@ class Activity { }; this._doOpenSamples = function () { - if (docById("palette").style.display !== "none") docById("palette").style.display = "none"; + if (docById("palette").style.display !== "none") + docById("palette").style.display = "none"; this.toolbar.closeAuxToolbar(showHideAuxMenu); this.planet.openPlanet(); if (docById("buttoncontainerBOTTOM").style.display !== "none") @@ -2981,7 +2992,7 @@ class Activity { } if (_THIS_IS_MUSIC_BLOCKS_) { const imgUrl = - "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+IDxzdmcgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9InN2ZzExMjEiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDM0LjEzMTI0OSAxNC41NTIwODkiIGhlaWdodD0iNTUuMDAwMDE5IiB3aWR0aD0iMTI5Ij4gPGRlZnMgaWQ9ImRlZnMxMTE1Ij4gPGNsaXBQYXRoIGlkPSJjbGlwUGF0aDQzMzciIGNsaXBQYXRoVW5pdHM9InVzZXJTcGFjZU9uVXNlIj4gPHJlY3QgeT0iNTUyIiB4PSI1ODgiIGhlaWdodD0iMTQzNiIgd2lkdGg9IjE5MDAiIGlkPSJyZWN0NDMzOSIgc3R5bGU9ImZpbGw6I2EzYjVjNDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIC8+IDwvY2xpcFBhdGg+IDwvZGVmcz4gPG1ldGFkYXRhIGlkPSJtZXRhZGF0YTExMTgiPiA8cmRmOlJERj4gPGNjOldvcmsgcmRmOmFib3V0PSIiPiA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4gPGRjOnR5cGUgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4gPGRjOnRpdGxlPjwvZGM6dGl0bGU+IDwvY2M6V29yaz4gPC9yZGY6UkRGPiA8L21ldGFkYXRhPiA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLjA4Njc4MiwwLDAsMS4wODY3ODIsLTEuNTQ3MzI0NSwtMS4zMDU3OTkpIiBpZD0iZzE4MTIiPiA8ZWxsaXBzZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjAxMDQ2MDk5LDAsMCwwLjAxMDQ2MDk5LDEuMDE2NzM4OSwtNi4yMDQ4NTI5KSIgY2xpcC1wYXRoPSJ1cmwoI2NsaXBQYXRoNDMzNykiIHJ5PSI3NjgiIHJ4PSI3NDgiIGN5PSIxNDc2IiBjeD0iMTU0MCIgaWQ9InBhdGg0MzMzIiBzdHlsZT0iZGlzcGxheTppbmxpbmU7ZmlsbDojYTNiNWM0O2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoxNTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4gPGVsbGlwc2Ugcnk9IjEuNzgyNjg1OSIgcng9IjEuNjkzOTIxNiIgY3k9IjguODM0MzUzNCIgY3g9IjE2LjQ0NjczOSIgaWQ9InBhdGg0MjU2IiBzdHlsZT0iZGlzcGxheTppbmxpbmU7ZmlsbDojYzlkYWQ4O2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojYzlkYWQ4O3N0cm9rZS13aWR0aDowLjEwNDYwOTk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIC8+IDxwYXRoIGlkPSJwYXRoNDMyOCIgZD0ibSAxNy42MzAyNjYsMTMuNDg3MDkgMC4zMjU0NywwLjM5MjA0NCAwLjM0NzY2LDAuMjczNjkgMC4zMTA2NzYsMC4xMTA5NTUgMC4yMzY3MDUsLTAuMDUxNzggMC4xNDA1NDQsLTAuMTg0OTI2IDAuMTk5NzIsMC4wODEzNyAwLjE1NTMzOCwwLjA0NDM4IDAuNjEzOTU0LC0wLjQyMTYzMiAwLjQyMTYzMSwtMC4yNTE0OTkgYyAwLDAgMC44ODc2NDUsLTAuMDA3NCAxLjYwNTE1NywtMC41NTQ3NzcgMC43MTc1MTMsLTAuNTQ3MzgxIDAuNDk1NjAyLC0wLjY1MDkzOSAwLjQ5NTYwMiwtMC42NTA5MzkgbCAtMC4wMzY5OSwtMC40MjkwMjkgLTAuNTM5OTg0LC0wLjcxNzUxMyAtMC41NTQ3NzcsLTAuNTY5NTcxIC0wLjIyOTMwOSwtMC4xNDc5NDEgYyAwLDAgLTAuMDIyMTksLTAuMDQ0MzggLTAuMDczOTcsLTAuMDQ0MzggLTAuMDUxNzgsMCAtMC4yNDQxMDMsLTAuMDczOTcgLTAuNTE3NzkzLDAuMDQ0MzggLTAuMjczNjkxLDAuMTE4MzUzIC0wLjQ2NjAxNCwwLjE3MDEzMiAtMC44NDMyNjMsMC4zODQ2NDYgLTAuMzc3MjQ4LDAuMjE0NTE0IC0wLjcxMDExNSwwLjQyMTYzMSAtMC44MzU4NjUsMC40OTU2MDIgLTAuMTI1NzUsMC4wNzM5NyAtMC43NDcxLDAuNDI5MDI4IC0wLjc0NzEsMC40MjkwMjggbCAtMC4wOTYxNiwwLjY1ODMzNiB6IiBzdHlsZT0iZGlzcGxheTppbmxpbmU7ZmlsbDojZjhmOGY4O2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowLjAxMDQ2MDk5cHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MSIgLz4gPHBhdGggaWQ9InBhdGg0MzMwIiBkPSJtIDE4LjA4MTQ4NSwxMy4xMTcyMzkgYyAwLDAgMS4wMTcyMDIsMC4yMTk4MDggMS40OTA2MTMsLTAuMTM1MjUgMC42ODI1NSwtMC42NzQwOTcgMS42NTU4OTMsLTEuMTU0NzMxIDEuODcwMzU1LC0xLjc0NTMwOCAwLjEwODI1NywtMC4yOTgxMTYgMC4wOTI2NSwtMC4zNzIzNzcgLTAuMDgwMTgsLTAuNjM3MTkxIC0wLjc4NDA4NSwtMS4xMTY5NTIzIC0yLjE4NjAyMywwLjQ4MzU2MyAtMi4xODYwMjMsMC40ODM1NjMgbCAtMS4yMjA1MTEsMS4wNDI5ODMgeiIgc3R5bGU9ImRpc3BsYXk6aW5saW5lO2ZpbGw6I2M5ZGFkODtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MC4wMTA0NjA5OXB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEiIC8+IDxwYXRoIGlkPSJwYXRoNDI4MSIgZD0ibSAxOC45MjM2MzgsMTEuOTExMTY2IGMgMCwwIC0yLjI2MjA3MywwLjM2MDA3MyAtMS4yNDU4MDcsMS42MzE0MjYgMS4wMTYyNjgsMS4yNzEzNTQgMS4zMzE1OSwwLjQ2ODQxNSAxLjMzMTU5LDAuNDY4NDE1IDAsMCAwLjIzNzM2NCwwLjI4NDAyMSAwLjU1MDIyMSwtMC4wMTI4OSAwLjMxMjg1NywtMC4yOTY5MSAwLjgwMTY1NywtMC40ODY1NjMgMC44MDE2NTcsLTAuNDg2NTYzIDAsMCAwLjgzMzQxOSwtMC4wODE1OCAxLjcyODg1MSwtMC42NDAzNDUgMC44OTU0MzIsLTAuNTU4NzY5IDAuMDI1NDUsLTEuNDk0NjQ0IDAuMDI1NDUsLTEuNDk0NjQ0IDAsMCAtMC43MDQwMDIsLTAuOTE0MzA1IC0xLjE5MTE1OCwtMS4wNjIwMDQgLTAuNDg3MTU1LC0wLjE0NzY5OSAtMS4yNjAyMDYsLTAuMjA1OTYzIC0xLjI2MDIwNiwtMC4yMDU5NjMgeiIgc3R5bGU9ImRpc3BsYXk6aW5saW5lO2ZpbGw6bm9uZTtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzUwNTA1MDtzdHJva2Utd2lkdGg6MC4xMDQ2MDk5O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIC8+IDxwYXRoIGlkPSJwYXRoNTkyNiIgZD0ibSAxNi44ODkxNjUsMy45OTA3MDY3IGMgLTAuMjA1OTI1LDAuMDA5MDIgLTAuNDkwNTg0LDAuMDE2NDUyIC0wLjY4MjQzNCwwLjA5NDMwNiAtMC4zNjM1MSwwLjExMzE2MjUgLTAuNzg0MDE5LDAuMzA2NTkxNiAtMS4xMDIwMzksMC40MTQ1MTk3IEMgMTQuODA1NzA3LDQuNjAwOTk5MyAxNC41MjgzODMsNC44Njc1ODQxIDE0LjQ0MjUxNSw0Ljc3MDc2NzYgMTQuMzE0ODUsNC42MjY4MjQ0IDE0LjIyNDM1Myw0LjU5NTM2MyAxNC4wNDU2ODksNC40OTc1NTkgMTMuODAxNzgxLDQuMzk5NTA1IDEzLjg3Mzc3Myw0LjQ0NDgyNzIgMTMuNjYwODY2LDQuMzg2MzI4MyAxMy41MTM2ODEsNC4zNDU4ODcxIDEzLjQ0ODI5LDQuMjg4Mjk1OCAxMy4wNDc5NTQsNC4zMDIzNTY3IGMgLTAuMjE2MDg3LDAuMDA3NTkgLTAuNDczNTEsMC4wMDgwNCAtMC42NjAwODEsMC4wODk3MjUgLTAuMzc0NjE1LDAuMTY0MDE3OCAtMC4yOTksMC4yNDg0NzU3IC0wLjUzODU3MiwwLjQ5MDAyNTIgLTAuMTY1MTA4LDAuMTY2NDcwOSAtMC4yMjMwMjksMC41NzQ5ODMxIC0wLjI4MjA0MSwwLjgxODg1OCAtMC4wNjkzOSwwLjI4Njc3NzYgLTAuMDU0NywwLjYwMTAzOTMgLTAuMDIwMzEsMC45Njc0MDMxIDAuMDI3NjEsMC4yOTQxOTY1IDAuMDkxNzMsMC40OTczOTM5IDAuMjQ5Mzg4LDAuNzU5MDYzIDAuMTM1MDg0LDAuMjI0MTk4OSAwLjMyNDU2MSwwLjI4MzU4MjggMC41NDY1OSwwLjQ5NzI4OTMgMC4wNzc3NCwwLjA3NDgzIDAuMzY4Mzk4LC0wLjAzODk2NSAwLjQ4NDg4LC0wLjAxNTEwNCAwLjEwODcwOSwwLjAyMjI3IC0wLjA0ODE3LDAuMjE2NzA4OCAtMC4wNTMyLDAuMjQ1MzgzNCAtMC4wNTM4LDAuMjM5NTE2OSAtMC4xMTA1MDMsMC4wODc3NzEgLTAuMDgwNiwwLjYyNzQyNjEgMC4zNDgxMjMsMi4wMjY2ODkyIDEuMDA1MDg5LC0xLjA2NzI2NDcgMC4zMjY2NDksMC42Njg2MTk0IC0wLjA1Mjk4LDAuMTM1NTY0IC0wLjQzNzU5NCwwLjM4ODgwNjggLTAuNTAzMzY4LDAuNTg2ODUzOCAtMC4wMTI2NywwLjE2NTEwOSAwLjE5NzgzNSwwLjE5NDA4IDAuMzE4OTk3LDAuMTc4MDQ5IDAuMDYyNjYsMC40ODAzOTUgMC4xMjQ5ODIsMS4wNDIwNDggMC41MjIyNDIsMS4zNzI0MzkgMC4xMjAxNzcsMC4xMDY0MDIgMC4yODY2NTIsMC4wOTQ0NyAwLjQyOTMxNywwLjEyNjQ0MyAwLjIyMTY0MSwwLjI2ODEyOCAwLjQ0ODY2OCwwLjU1NzA2NiAwLjc4NDA4NywwLjY4OTc3NCAwLjI4Mzg0NSwwLjE0ODQzNSAwLjYyNDkxMywwLjA1MSAwLjg5NjEzOCwwLjIzMzA2NSAwLjcxMjkyNSwwLjM2MDkwMSAxLjU5NDM3LDAuMjI3NDI0IDIuMjQwMzA3LC0wLjIxNDM2NyAwLjIzOTczNiwtMC4wMjU4NCAwLjUwMTI0MywwLjA1MTE5IDAuNzUxMzkxLDAuMDIyMjIgMC41NzU4OTgsLTAuMDIwMDYgMS4xNjcyMDcsLTAuMjQwMDA1IDEuNTIzOTYyLC0wLjcxMTUwMiAwLjA3MjksLTAuMDY2IDAuMTAyMDgxLC0wLjE3ODE0IDAuMTY4ODAzLC0wLjI0MDYzNSAwLjA2NjE2LDAuMDgzMyAwLjIwMTA3OSwwLjE2NTI4OSAwLjI4NTY1MywwLjA1NTAyIDAuMTkzMDcyLC0wLjI1MzQzNiAwLjIyMzQxMywtMC41OTUxMDQgMC4zMjcxNDUsLTAuODgyNTU5IDAuMDg2NTgsMC4wMzY0MSAwLjA4NDIsMC4yNjU3MzQgMC4xOTA4MiwwLjE3NTk2OCAwLjA4ODU4LC0wLjI3NzUxIDAuMjMxMDU1LC0wLjU4OTU1NCAwLjE1NzQ4NywtMC44NzUxMDMgQyAyMS4wOTQ5NjgsOS44NjQxNTE0IDIwLjk5NDc5OSw5LjcxMDk4NzkgMjAuOTU5NzUxLDkuNjcwOTkxNCAyMS4wNjk3Myw5LjY2NDkyMTQgMjEuMzkyMTQ2LDkuNjA3NDEyNCAyMS4zNjQyMjYsOS40MzQyNzkgMjEuMjg0OTAyLDkuMjY0MDY1MSAyMC45MzAzMjQsOS4wNTgwODkzIDIwLjc4MTQ3LDguOTYzNjg5MyAyMC42Mjc0ODksNy4wODIzNjI5IDIwLjgzMTk0MSw3Ljk3MzAwNDMgMjAuMzc0NDc1LDYuNTcyMTY2OCAyMC4yODY2OTMsNi4yOTYzNjYgMjAuMTc5NTgyLDYuMDI1MzkwOCAyMC4wMzkxNDksNS43NjczNzc4IDE5LjgxNDE1NSw1LjM1NDAwNzYgMTkuNTAzNjMsNC45NzM5MDc1IDE5LjA1MDAzMSw0LjY2MDUzMjggMTguNjk0MTU3LDQuNDg2NjE1NyAxOC43NzkxNjcsNC40MTI0NTc4IDE4LjQxNjMxOSw0LjI4NDIxMTggMTguMDQwOTE2LDQuMTE0ODkzIDE3LjkyMzEyNiw0LjExNDQyOTQgMTcuNzA2MjE3LDQuMDQ5NTUxNCAxNy40MjE5OTMsNC4wMDQyMzgyIDE3LjE3NjIyNiwzLjk5MzQ2MTEgMTYuODg5MTY1LDMuOTkwNzA2NyBaIG0gLTAuNDE2Nzc3LDMuNzcwMjM0NSBjIDAuMjU4MDA1LDAuMDA5NzYgMC40MjkyNTksMC4yNTQ4MTQgMC41Mjc1MDEsMC40Njg0NDEgLTAuMDQ2NTEsMC4xMjA5MTIzIC0wLjIxNzYxMywwLjE4MDMzMTggLTAuMzE0MzE2LDAuMjcwODAwNSAtMC4wNTIyNywwLjAzMDg5OCAtMC4xOTUwNTcsMC4xNDE5ODI5IC0wLjA3Mzk3LDAuMTc2MjU4MyAwLjE2NzU3NCwtMC4wMDgwMSAwLjM0MTEyNSwtMC4xMDE3NzYgMC41MDIzNjMsLTAuMDgxMjUzIDAuMDM4OCwwLjMxMzY5MjcgMC4wMTAzOCwwLjcyNTUwMzEgLTAuMjk1OTM5LDAuOTAyMTQ5NSAtMC4zMTY4ODQsMC4wODI4MjcgLTAuNTYyMDUzLC0wLjIxMjE0MTYgLTAuNjc2ODI5LC0wLjQ3MTYxOCAtMC4xNDcwOTYsLTAuMzY2NjkwMiAtMC4xODU5MzQsLTAuODQyODQzMSAwLjA3NjUxLC0xLjE2Njk5ODggMC4wNjUzMSwtMC4wNjgyNjggMC4xNjAwMTEsLTAuMTA2MzQ3NSAwLjI1NDY3OCwtMC4wOTc3OCB6IG0gMi44NTkyNDQsMi41NzU3ODc4IGMgLTAuMDc2NzMsMC4xODQ3NTggLTAuMjMwNjU5LDAuMzMwMTU2IC0wLjQwNzAxMSwwLjQxMzI1MiAtMC4wNTUzOSwwLjE1MDcwNSAwLjA0MDA0LDAuMzU0MzggMC4wMjk3LDAuNDgzMjM0IC0wLjA0OTA3LC0wLjE2MDM1NyAtMC4wMDE2LC0wLjM2MTQyNiAtMC4xMDg4NzUsLTAuNDk2NzU3IC0wLjA3MDE4LC0wLjAyMjcxIC0wLjE0Nzc0NywtMC4wMjgxIC0wLjIxMTc0MSwtMC4wNzIwNiAwLjIxMjc5NCwwLjExNzcxNyAwLjQ5NTYxLDAuMDM5MjQgMC42MDQ3NjYsLTAuMTgyMDk0IDAuMDI5MzQsLTAuMDM3NjIgMC4wODE1OSwtMC4xNDU1NzUgMC4wOTMxNiwtMC4xNDU1NzEgeiBtIC0wLjk2NTM3MiwwLjE0MTk4OCBjIDAuMDQ1NjYsMC4wMzQwOSAwLjIwNDg5NywwLjE2Mjg1NyAwLjA3NzQ0LDAuMDY3ODUgLTAuMDE2NDEsLTAuMDExMzggLTAuMDkwMTksLTAuMDcwODYgLTAuMDc3NDQsLTAuMDY3ODUgeiIgc3R5bGU9ImRpc3BsYXk6aW5saW5lO2ZpbGw6I2M5ZGFkODtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MC4wNTIzMDQ5NTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4gPHBhdGggaWQ9InBhdGg0MjU3IiBkPSJtIDE4LjU2MjI5Miw0LjM0MDY1NDMgYyAwLDAgLTAuMDE4MjMsLTAuMTI2MDkyNSAwLjA1NTAzLC0wLjI2MzA5MTEgMC4xMDcwNjUsLTAuMjAwMjExOCAwLjM2NDA0MywtMC40MDk5NDg1IDAuNjYxOTUxLC0wLjU5NjUyOTEgMC4zOTA1NzksLTAuMjQ0NjIwMiAwLjg3ODEwNSwtMC40MDE1NzcyIDEuNDU3NjUzLDAuMDM1OTg1IDAuMTUwMzMxLDAuMTEzNTAwOCAwLjI3NTEyLDAuMzU2MTg0OSAwLjQzNjUyLDAuNTQ2MjQ1OCAwLDAgMC40NDM4MjIsMC41MzI1ODcxIDAuMDU5MTgsMS43OTAwODI5IEMgMjAuODQ3OTc4LDcuMTEwODQ1IDIwLjI0MTQyLDYuNTMzODc1NCAyMC4yNDE0Miw2LjUzMzg3NTQgWiIgc3R5bGU9ImRpc3BsYXk6aW5saW5lO2ZpbGw6I2M5ZGFkODtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MC4wMTA0NjA5OXB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEiIC8+IDxwYXRoIGlkPSJwYXRoNDI1OSIgZD0ibSAxNS41NDQ5NjIsNC4zMTU2Mjk4IGMgMC42NzQwMTYsMC44NjIwMTcgMi4yMjQ5NDUsMy4zNjQ2NDY3IDIuNTUyNDgxLDIuMTM1NzQ3MSAwLjIwOTIyLC0wLjkxMDEwNjEgMC4wMTUzMiwtMi4zMDI1OTczIDAuMDE1MzIsLTIuMzAyNTk3MyAwLDAgLTEuMjUyMDM4LC0wLjQ2NTg4NTcgLTIuNTY3ODAyLDAuMTY2ODUwMiB6IiBzdHlsZT0iZGlzcGxheTppbmxpbmU7ZmlsbDojODk5YmIwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojODk5YmIwO3N0cm9rZS13aWR0aDowLjEwNDYwOTk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIC8+IDxwYXRoIGlkPSJwYXRoNDI3NiIgZD0ibSAxNC41NTMyNiw5LjMxOTI1NjMgYyAwLDAgLTAuMTY3Mzc2LDAuMDUyMzA1IDEuMDk4NDA0LDAuMzM0NzUxNyAxLjI2NTc4LDAuMjgyNDQ2NyAxLjYyMTQ1MywtMC42Njk1MDM0IDEuNjIxNDUzLC0wLjY2OTUwMzQgMCwwIDEuMDM1NjM4LC0xLjUxNjg0MzYgMi4xNDQ1MDMsLTAuMzAzMzY4NyAwLDAgMC4yODI0NDcsMC4zMDMzNjg3IDAuNzg0NTc1LDAuMjkyOTA3NyAwLDAgMC4zMTM4MjksLTAuMTc3ODM2OCAwLjU3NTM1NCwtMC4wMTA0NjEgMC4yNjE1MjUsMC4xNjczNzU5IDAuNDkxNjY3LDAuMzI0MjkwNyAwLjQ5MTY2NywwLjMyNDI5MDcgMCwwIDAuMzg3MDU2LDAuMzY2MTM0NyAtMC4yOTI5MDgsMC4zNTU2NzM3IDAsMCAwLjQyODksMC4xMDQ2MDk5IC0wLjA4MzY5LDEuMzM5MDA3IGwgLTAuMTQ2NDU0LC0wLjMzNDc1MiBjIDAsMCAtMC4yMDkyMiwxLjQwMTc3MyAtMC41NzUzNTQsMC44NjgyNjIgMCwwIC0wLjE2ODU2NywwLjI4NDA0MiAtMC41NDkzMzUsMC41MzgxMTEgLTAuNDYxNzA0LDAuMzA4MDczIC0xLjIwMDYyLDAuNTc5MDM0IC0xLjg4Mjg0NiwwLjMzNTM4MiAwLDAgLTAuOTI5NDM2LDEuMDIzNTYzIC0yLjUxMjQwMiwwLjEyMTEyNSAwLDAgLTAuODcxNzI4LDAuMTY2NTUyIC0xLjQ1NzU0MywtMC44MTY3ODEgMCwwIC0wLjgwNTQ5NiwwLjE5ODc1OSAtMC45NTE5NSwtMS40OTU5MjIgMCwwIC0wLjY3OTk2NSwwLjA0MTg0IC0wLjA0MTg0LC0wLjU0Mzk3MSAwLjYzODEyLC0wLjU4NTgxNTUgMS4yMDMwMTQsLTAuNDYwMjgzNiAxLjIwMzAxNCwtMC40NjAyODM2IHoiIHN0eWxlPSJkaXNwbGF5OmlubGluZTtmaWxsOiNmOGY4Zjg7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAuMDEwNDYwOTlweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxIiAvPiA8cGF0aCBpZD0icGF0aDQzNjUiIGQ9Im0gMTMuNTM4NTQ0LDUuMzE3OTI3NiBjIC0wLjAxNjk4LDAuMDAzMzMgLTAuMjk1NDI5LDAuMDA0MTEgLTAuNTQyNjE0LC0wLjEyODc4OTQgLTAuMTI2Mjk4LC0wLjA2NzkwNiAtMC4yNDcwMjYsLTAuMTI3MDA2OSAtMC4yOTEyNywtMC4xODU5ODA3IC0wLjAzNTY0LC0wLjA0NzUwOCAwLjAwNDEsLTAuMTExNDU4NyAtMC4wNjY4NSwtMC4wNTMwMjIgLTAuOTQ5ODUyLDAuNzgyODExNiAtMC40ODU4NjcsMi4wNDg5MTU3IDAuMzkxNTE4LDIuMzgxNzQ5OSAwLDAgMC4xNjgwMywtMC45MzA1MDIgMS4wODQ1NzEsLTEuOTg3ODA1NyIgc3R5bGU9ImRpc3BsYXk6aW5saW5lO2ZpbGw6I2Y4ZjhmODtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MC4wMTA0NjA5OTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4gPHBhdGggaWQ9InBhdGg0MzY3IiBkPSJtIDE4Ljk2OTEyOSw0LjU1MTQ2OTcgYyAwLDAgMC45NjE2MTUsMC42ODA1MjcxIDEuMTk4MzIsMS42MTI1NTQzIDAsMCAxLjE1MzkzOSwtMS43MzA5MDY4IC0wLjA3Mzk3LC0yLjQyNjIyODIgMCwwIC0wLjIwNzExOCwwLjc5ODg4IC0xLjEyNDM1MSwwLjgxMzY3MzkgeiIgc3R5bGU9ImRpc3BsYXk6aW5saW5lO2ZpbGw6I2Y4ZjhmODtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MC4wMTA0NjA5OXB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEiIC8+IDxwYXRoIGlkPSJwYXRoNDIxNSIgZD0ibSAxMi44Mzg2ODUsMTAuMjA5MDE4IGMgMC4xNDQzOTksMS43NjE2ODIgMC45Mzg2MDEsMS40NzI4ODIgMC45Mzg2MDEsMS40NzI4ODIgMC42MzUzNiwxLjAxMDggMS40Mjk1NjEsMC44MjMwOCAxLjQyOTU2MSwwLjgyMzA4IDEuMzcxODAyLDAuODM3NTIyIDIuNTI3MDAzLC0wLjEwMTA3OSAyLjUyNzAwMywtMC4xMDEwNzkgMS45MzQ5NjMsMC4zMTc2OCAyLjQxMTQ4MywtMC45MjQxNjIgMi40MTE0ODMsLTAuOTI0MTYyIDAuMzc1NDQxLDAuNTc3NjAxIDAuNjA2NDgxLC0wLjgwODY0MSAwLjYwNjQ4MSwtMC44MDg2NDEgMC4wNTc3NiwtMC4xMTU1MiAwLjE0NDQwMSwwLjM0NjU2IDAuMTQ0NDAxLDAuMzQ2NTYgMC40NjIwNzksLTEuMjEyOTYwNSAwLjA4MzI0LC0xLjM3NzgzMyAwLjA4MzI0LC0xLjM3NzgzMyAxLjAxMDgwMSwwLjAyODg4IC0wLjIwMzYyNiwtMC43MDI4NzQgLTAuMjAzNjI2LC0wLjcwMjg3NCAtMC4wMjU1MywtMS4wNTkwNjU0IC0wLjAyNTA4LC0xLjMyOTIxMzEgLTAuMzkwMDU0LC0yLjMzMzQzNzggMC44MDk3OTcsMC4yMTYzODc3IDAuODExMDU3LC0wLjk2MDY1ODkgMC45NDkxNywtMS4yMjk3ODc3IDAuMTk5OTE5LC0wLjUzOTAyNDUgLTAuMDM1NiwtMS41MDQ0OTA0IC0wLjY3OTY0MSwtMS45MTk1MzIzIC0wLjI2NTQxMSwtMC4xNzEwMzg3IC0wLjYwMDIsLTAuMjQ4NjAwOSAtMS4wMDI0ODYsLTAuMTY0MzE5OCAtMC4zMDI3NTUsMC4xMzkwMTI4IC0wLjY5MjU0LDAuMzk0OTg5NSAtMC45MDc2MjgsMC42MDg2NjE5IC0wLjE5MzYxMywwLjE5MjMzOTUgLTAuMjE5NjQ5LDAuMzAzMjExNCAtMC4xOTU0NDIsMC40MTU1NTciIHN0eWxlPSJmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiM1MDUwNTA7c3Ryb2tlLXdpZHRoOjAuMTA0NjA5OTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4gPHBhdGggaWQ9InBhdGg0MjI3IiBkPSJtIDEyLjgzODY4NSwxMC4yMTE0OTUgYyAwLDAgLTAuOTA5NzIxLDAuMDk4NiAwLjI1OTkyLC0wLjgxMTExNzkgMCwwIDAuNDkwOTYsLTAuNDE4NzYwOCAxLjQ3Mjg4MSwtMC4wNTc3NiIgc3R5bGU9ImZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzUwNTA1MDtzdHJva2Utd2lkdGg6MC4xMDQ2MDk5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiAvPiA8cGF0aCBpZD0icGF0aDQyMjkiIGQ9Ik0gMTIuOTA0OTA0LDkuNTY1NTUzIEMgMTIuNTA1NjUzLDguNzczODU0OCAxMi42NzA3OTcsOC4xNjU2MDM3IDEyLjg1MDI0NCw3Ljk1ODI5NCIgc3R5bGU9ImZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzUwNTA1MDtzdHJva2Utd2lkdGg6MC4xMDQ2MDk5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiAvPiA8cGF0aCBpZD0icGF0aDQyMDEiIGQ9Im0gMTQuNTgxMzAzLDQuODIyNzY5MiBjIDAsMCAxLjc5NTc0OSwtMS40NTE3MDY2IDMuOTY3MjA3LC0wLjUxNTAzMDkiIHN0eWxlPSJkaXNwbGF5OmlubGluZTtmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiM1MDUwNTA7c3Ryb2tlLXdpZHRoOjAuMTA0NjA5OTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4gPHBhdGggc3R5bGU9ImRpc3BsYXk6aW5saW5lO2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzUwNTA1MDtzdHJva2Utd2lkdGg6MC4xMDQ2MDk5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiBkPSJNIDEyLjkxMzUyNyw3Ljg5OTY1ODEgQyAxMC44OTQzNTYsOC4zNTIwMTQzIDExLjE2ODQwMiw0LjI1NDUyNDcgMTIuNzY0OTUyLDQuMzAyNTA3MyAxMy4zODM1NjksNC4yODU3MzczIDE0LjA5NzQyNCw0LjI2Nzg1NSAxNC42NTY4MSw1LjAwMTUxMyIgaWQ9InBhdGg0MjA3IiAvPiA8cGF0aCBpZD0icGF0aDQyMzMiIGQ9Im0gMTguMzQwMzMxLDEwLjQ1NDQ5OSBjIDAsMCAwLjY2NDI0LDAuNzIyIDEuMDEwODAxLC0wLjE3MzI4IiBzdHlsZT0iZGlzcGxheTppbmxpbmU7ZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojNTA1MDUwO3N0cm9rZS13aWR0aDowLjEwNDYwOTk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIC8+IDxwYXRoIGlkPSJwYXRoNDIzNSIgZD0ibSAxOC44ODkwNTIsMTAuNzI4ODU5IDAuMDcyMiwwLjU2MzE2IiBzdHlsZT0iZGlzcGxheTppbmxpbmU7ZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojNTA1MDUwO3N0cm9rZS13aWR0aDowLjEwNDYwOTk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIC8+IDxwYXRoIGlkPSJwYXRoNDI1MSIgZD0ibSAxNC4xMzQ4Miw1LjM0NDA4MDEgYyAtMC4xNzgzOTEsMCAtMC42MzI5NDYsMC4wMDY5OCAtMC45OTQxOTIsLTAuMDg2ODE2IEMgMTIuOTA4NzMsNS4xOTcwNTE5IDEyLjcxNTI4NCw1LjA5NTMxMjUgMTIuNjU4MDI2LDQuOTIzNTM3OCIgc3R5bGU9ImRpc3BsYXk6aW5saW5lO2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzUwNTA1MDtzdHJva2Utd2lkdGg6MC4xMDQ2MDk5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiAvPiA8cGF0aCBpZD0icGF0aDQzMDEiIGQ9Im0gMTIuNjcyOTA2LDExLjI0OTk1OSBjIDAsMCAtMS4yMTMxMTMsMC44ODAyNDcgLTAuNzI0OTA5LDEuNTQ1OTgxIGwgMC41OTkxNiwwLjUzMjU4NiAwLjgyMTA3MiwwLjQ0MzgyMyAxLjIyNzkwNywwLjA2NjU3IDAuODA2Mjc3LC0wLjE0Nzk0MSAwLjQxNDIzNCwtMC4xODQ5MjYgMC40NDM4MjIsMC4zNzcyNSAwLjM5OTQ0MSwwLjAxNDc5IDAuMjI5MzA4LC0wLjExMDk1NiAwLjY4NzkyNCwtMC4yNzM2OTEgMC4zNjI0NTYsLTAuMjg0Nzg2IDAuMjA3MTE3LC0wLjMxNDM3MyAtMC4wMjk1OSwtMC4zNDAyNjQgYyAwLDAgLTAuMzg0NjQ2LC0xLjE2MTMzNSAtMC43OTg4OCwtMS4zNDYyNjEgMCwwIC0wLjUzMjU4NywtMC41NzY5NjkgLTEuMjcyMjkxLC0wLjA4MTM3IDAsMCAtMS4xMTY5NTIsMC4zNjk4NTIgLTIuMDg1OTY0LDAuMDQ0MzggLTAuOTY5MDEyLC0wLjMyNTQ3IC0xLjI4NzA4NSwwLjA1OTE4IC0xLjI4NzA4NSwwLjA1OTE4IHoiIHN0eWxlPSJkaXNwbGF5OmlubGluZTtmaWxsOiNmOGY4Zjg7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAuMDEwNDYwOTlweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxIiAvPiA8cGF0aCBpZD0icGF0aDQzMjUiIGQ9Im0gMTEuODUzMTgsMTIuNDgxMDk0IGMgMCwwIDEuMjIwNTExLC0wLjcwMjcxOSAzLjA2OTc3LC0wLjE4NDkyNyAwLDAgMC45MTcyMzQsMC4xNjI3MzYgMS41MDg5OTYsLTAuMDY2NTcgMC41OTE3NjQsLTAuMjI5MzA5IDAuNzkxNDgzLDAuMjczNjkgMC43OTE0ODMsMC4yNzM2OSAwLDAgMC40NjYwMTQsMC44NDMyNjIgMC4zOTk0NCwwLjkwMjQzOCBsIDAuMTc3NTI5LC0wLjA1MTc4IDAuMjY2MjkzLC0wLjM0MDI2NCAwLjA3Mzk3LC0wLjI1ODg5NyAtMC4xNDA1NDMsLTAuNDI5MDI4IC0wLjI3MzY5MSwtMC41NzY5NjggLTAuMzEwNjc2LC0wLjQ0MzgyMiAtMC4yNTE0OTksLTAuMTg0OTI3IC0wLjQyMTYzMSwtMC4xODQ5MjUgLTAuNDA2ODM4LDAuMDI5NTkgLTAuNjA2NTU2LDAuMjUxNDk5IGMgMCwwIC0xLjAyODE4OSwwLjI4ODQ4NSAtMi4yNDg3LC0wLjE4NDkyNSAwLDAgLTAuOTAyNDM4LC0wLjE2MjczNiAtMS41MTYzOTIsMC45ODM4MDYgbCAtMC4xMTgzNTMsMC4zOTk0MzkgeiIgc3R5bGU9ImRpc3BsYXk6aW5saW5lO2ZpbGw6I2M5ZGFkODtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MC4wMTA0NjA5OXB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEiIC8+IDxwYXRoIGlkPSJwYXRoNDI3OSIgZD0ibSAxNi44MzM2NzIsMTMuNzg1MjE3IGMgMC4xNTM0MjMsLTAuMTAyOTY3IDEuNDU0MTIyLC0wLjQwNTE0NCAxLjI3MTUzLC0xLjEwNzA1MiAtMC4xODI1OSwtMC43MDE5MDYgLTAuODEwNDg4LC0yLjE4MzA4IC0xLjk2Mjc0OSwtMS42MjExNTEgLTEuMTUyMjY0LDAuNTYxOTMyIC0yLjQyODI3MSwwLjA0NDIyIC0yLjQyODI3MSwwLjA0NDIyIDAsMCAtMC41MDI1NzUsLTAuMTkxMTk4IC0wLjkxNzEzNywwLjA0NDc1IC0wLjQxNDU2MiwwLjIzNTk1MSAtMC44MzU2OTEsMC42MjQyODUgLTAuOTY5NjcsMS4yNjM4MzYgLTAuMTMzOTgyLDAuNjM5NTU3IDEuNTU5NzQ1LDEuMzQxOTkxIDEuNTU5NzQ1LDEuMzQxOTkxIDAsMCAxLjYyODU2NywwLjIzODgxMyAyLjM5NTY5MywtMC4yNzYwMzUgMCwwIDAuNjI5NzI5LDAuNjk3NzcxIDEuMDUwODU5LDAuMzA5NDM3IHoiIHN0eWxlPSJkaXNwbGF5OmlubGluZTtmaWxsOm5vbmU7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiM1MDUwNTA7c3Ryb2tlLXdpZHRoOjAuMTA0NjA5OTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4gPHBhdGggZD0ibSAxNy4xMTQwMTYsOC41MDk4MjQxIGEgMC45NDk4OTcwOCwwLjU4NjQwNTg3IDc4LjA3ODA2MiAwIDEgLTAuMzQwNjEzLDEuMDQwNjk1NSAwLjk0OTg5NzA4LDAuNTg2NDA1ODcgNzguMDc4MDYyIDAgMSAtMC43NzY1NjIsLTAuNjc4NzU2IDAuOTQ5ODk3MDgsMC41ODY0MDU4NyA3OC4wNzgwNjIgMCAxIDAuMjM5NTYsLTEuMTI5MDIxNiAwLjk0OTg5NzA4LDAuNTg2NDA1ODcgNzguMDc4MDYyIDAgMSAwLjgwNzczNiwwLjUzMTgzNzIgbCAtMC41MDM4NzgsMC4zNTYzODM5IHoiIGlkPSJwYXRoNDI2NSIgc3R5bGU9ImRpc3BsYXk6aW5saW5lO2ZpbGw6IzUwNTA1MDtmaWxsLW9wYWNpdHk6MTtzdHJva2Utd2lkdGg6MC4xMDQ2MDk5NDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZSIgLz4gPHBhdGggZD0iTSAyMC40MTM5NzcsOC4wMzE1OTA2IEEgMC44NTY3NjMyNSwwLjUyODkxMDk1IDc4LjA3ODA2MiAwIDEgMjAuMTA2NzYsOC45NzAyNDk4IDAuODU2NzYzMjUsMC41Mjg5MTA5NSA3OC4wNzgwNjIgMCAxIDE5LjQwNjMzNiw4LjM1ODA0MzEgMC44NTY3NjMyNSwwLjUyODkxMDk1IDc4LjA3ODA2MiAwIDEgMTkuNjIyNDA3LDcuMzM5NzE3NiAwLjg1Njc2MzI1LDAuNTI4OTEwOTUgNzguMDc4MDYyIDAgMSAyMC4zNTA5NDgsNy44MTk0MTA4IGwgLTAuNDU0NDc0LDAuMzIxNDQxNiB6IiBpZD0icGF0aDQyNjUtMiIgc3R5bGU9ImRpc3BsYXk6aW5saW5lO2ZpbGw6IzUwNTA1MDtmaWxsLW9wYWNpdHk6MTtzdHJva2Utd2lkdGg6MC4xMDQ2MDk5NDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZSIgLz4gPHBhdGggaWQ9InBhdGg1NzIwIiBkPSJtIDIxLjEzNDgzMiw3LjY5NjM2MzQgYyAtMC4xMTIzMTgsLTAuMDI3NzU3IC0wLjI2MjQ5NywtMC4wODEwNTQgLTAuMzMzNzMxLC0wLjExODQzODMgLTAuMTQ0MDA1LC0wLjA3NTU3MyAtMC4yOTkzMjksLTAuMjY5ODY1MyAtMC4yOTkzMjksLTAuMzc0NDI2IDAsLTAuMDk2NjA3IC0wLjE5MzI5OCwtMC44NDY4MTQgLTAuMjk0MTMzLC0xLjE0MTU1OTcgQyAxOS45MTc4NSw1LjIxNDg4MjcgMTkuNDI2NzM2LDQuNjc1ODIwNSAxOC44MDY4MDgsNC41MjQzNDIzIDE4LjU3NDU0Myw0LjQ2NzU4OTMgMTguMzc3OTYsNC4zNzc3MTcyIDE4LjM3Nzk2LDQuMzI4Mjg1MSBjIDAsLTAuMTE2NTg3NCAwLjUxODc4NywtMC4zNzIwNTkgMC43NTU1ODcsLTAuMzcyMDgxOCAwLjIyNTEyOSwtMi4wOWUtNSAwLjU1MTc3MywwLjE5NTUxMDUgMC43NTQwMDcsMC40NTEzNTU2IDAuMDg5NTgsMC4xMTMzMjYgMC4zMzY4NDMsMC41NTg3ODc0IDAuNTQ5NDc2LDAuOTg5OTE0MSAwLjYzMDg5MSwxLjI3OTE3MTkgMS4xMjc0NjQsMS45Njg0NzM4IDEuNTY3NTYzLDIuMTc1OTYzMyAwLjIxNzMwOCwwLjEwMjQ1MTggMC4yMjYxMTYsMC4xMTE5NDIgMC4xMzA4ODEsMC4xNDEwMjE1IC0wLjE1OTgzNSwwLjA0ODgwNCAtMC43NzQ5NSwwLjAzNzY4MSAtMS4wMDA2NDIsLTAuMDE4MDk0IHoiIHN0eWxlPSJmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjA7c3Ryb2tlLXdpZHRoOjAuMDUyMzA0OTU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lIiAvPiA8cGF0aCBpZD0icGF0aDQyNDUiIGQ9Im0gMTUuNTQ0Mzg3LDQuMzE0MzcwOSBjIDAsMCAxLjU1NTIyNiwyLjEwODgwNTMgMi4wNzgyNzYsMi4yNzYxODExIDAuNTIzMDQ5LDAuMTY3Mzc1OSAwLjU1MDA5OSwtMS4yNjczOTM5IDAuNTUwMDk5LC0xLjI2NzM5MzkgMCwwIDAuMDEwNDYsLTAuODA1NDk2MiAtMC4wMzEzOCwtMS4xNjExNyIgc3R5bGU9ImZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MC4xMDQ2MDk5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiAvPiA8cGF0aCBpZD0icGF0aDQyNDkiIGQ9Im0gMTguOTQ0Mzc3LDQuNTQ1NjI2MiBjIDAuMjUwMTgyLDAuMDI5NjUgMC44NTMyMzUsLTAuMDU1OTAzIDEuMTM0NjY1LC0wLjc3MjM2OTQiIHN0eWxlPSJmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiM1MDUwNTA7c3Ryb2tlLXdpZHRoOjAuMTA0NjA5OTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4gPHRleHQgaWQ9InRleHQ0MjQ1IiB5PSIyLjA1MTI3MTQiIHg9IjExLjU1NzI5OSIgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXNpemU6MC4xMjU1MzE4OHB4O2xpbmUtaGVpZ2h0OjAlO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6MHB4O3dvcmQtc3BhY2luZzowcHg7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowLjAxMDQ2MDk5cHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MSIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHRzcGFuIHN0eWxlPSJmb250LXNpemU6MC40MTg0Mzk2cHg7bGluZS1oZWlnaHQ6MS4yNTtzdHJva2Utd2lkdGg6MC4wMTA0NjA5OXB4IiB5PSIyLjA1MTI3MTQiIHg9IjExLjU1NzI5OSIgaWQ9InRzcGFuNDI0NyI+wqA8L3RzcGFuPjwvdGV4dD4gPC9nPiA8L3N2Zz4="; + "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+IDxzdmcgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9InN2ZzExMjEiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDM0LjEzMTI0OSAxNC41NTIwODkiIGhlaWdodD0iNTUuMDAwMDE5IiB3aWR0aD0iMTI5Ij4gPGRlZnMgaWQ9ImRlZnMxMTE1Ij4gPGNsaXBQYXRoIGlkPSJjbGlwUGF0aDQzMzciIGNsaXBQYXRoVW5pdHM9InVzZXJTcGFjZU9uVXNlIj4gPHJlY3QgeT0iNTUyIiB4PSI1ODgiIGhlaWdodD0iMTQzNiIgd2lkdGg9IjE5MDAiIGlkPSJyZWN0NDMzOSIgc3R5bGU9ImZpbGw6I2EzYjVjNDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIC8+IDwvY2xpcFBhdGg+IDwvZGVmcz4gPG1ldGFkYXRhIGlkPSJtZXRhZGF0YTExMTgiPiA8cmRmOlJERj4gPGNjOldvcmsgcmRmOmFib3V0PSIiPiA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4gPGRjOnR5cGUgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4gPGRjOnRpdGxlPjwvZGM6dGl0bGU+IDwvY2M6V29yaz4gPC9yZGY6UkRGPiA8L21ldGFkYXRhPiA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLjA4Njc4MiwwLDAsMS4wODY3ODIsLTEuNTQ3MzI0NSwtMS4zMDU3OTkpIiBpZD0iZzE4MTIiPiA8ZWxsaXBzZSB0cmFuc2Zvcm09Im1hdHJpeCgwLjAxMDQ2MDk5LDAsMCwwLjAxMDQ2MDk5LDEuMDE2NzM4OSwtNi4yMDQ4NTI5KSIgY2xpcC1wYXRoPSJ1cmwoI2NsaXBQYXRoNDMzNykiIHJ5PSI3NjgiIHJ4PSI3NDgiIGN5PSIxNDc2IiBjeD0iMTU0MCIgaWQ9InBhdGg0MzMzIiBzdHlsZT0iZGlzcGxheTppbmxpbmU7ZmlsbDojYTNiNWM0O2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoxNTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4gPGVsbGlwc2Ugcnk9IjEuNzgyNjg1OSIgcng9IjEuNjkzOTIxNiIgY3k9IjguODM0MzUzNCIgY3g9IjE2LjQ0NjczOSIgaWQ9InBhdGg0MjU2IiBzdHlsZT0iZGlzcGxheTppbmxpbmU7ZmlsbDojYzlkYWQ4O2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojYzlkYWQ4O3N0cm9rZS13aWR0aDowLjEwNDYwOTk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIC8+IDxwYXRoIGlkPSJwYXRoNDMyOCIgZD0ibSAxNy42MzAyNjYsMTMuNDg3MDkgMC4zMjU0NywwLjM5MjA0NCAwLjM0NzY2LDAuMjczNjkgMC4zMTA2NzYsMC4xMTA5NTUgMC4yMzY3MDUsLTAuMDUxNzggMC4xNDA1NDQsLTAuMTg0OTI2IDAuMTk5NzIsMC4wODEzNyAwLjE1NTMzOCwwLjA0NDM4IDAuNjEzOTU0LC0wLjQyMTYzMiAwLjQyMTYzMSwtMC4yNTE0OTkgYyAwLDAgMC44ODc2NDUsLTAuMDA3NCAxLjYwNTE1NywtMC41NTQ3NzcgMC43MTc1MTMsLTAuNTQ3MzgxIDAuNDk1NjAyLC0wLjY1MDkzOSAwLjQ5NTYwMiwtMC42NTA5MzkgbCAtMC4wMzY5OSwtMC40MjkwMjkgLTAuNTM5OTg0LC0wLjcxNzUxMyAtMC41NTQ3NzcsLTAuNTY5NTcxIC0wLjIyOTMwOSwtMC4xNDc5NDEgYyAwLDAgLTAuMDIyMTksLTAuMDQ0MzggLTAuMDczOTcsLTAuMDQ0MzggLTAuMDUxNzgsMCAtMC4yNDQxMDMsLTAuMDczOTcgLTAuNTE3NzkzLDAuMDQ0MzggLTAuMjczNjkxLDAuMTE4MzUzIC0wLjQ2NjAxNCwwLjE3MDEzMiAtMC44NDMyNjMsMC4zODQ2NDYgLTAuMzc3MjQ4LDAuMjE0NTE0IC0wLjcxMDExNSwwLjQyMTYzMSAtMC44MzU4NjUsMC40OTU2MDIgLTAuMTI1NzUsMC4wNzM5NyAtMC43NDcxLDAuNDI5MDI4IC0wLjc0NzEsMC40MjkwMjggbCAtMC4wOTYxNiwwLjY1ODMzNiB6IiBzdHlsZT0iZGlzcGxheTppbmxpbmU7ZmlsbDojZjhmOGY4O2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowLjAxMDQ2MDk5cHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MSIgLz4gPHBhdGggaWQ9InBhdGg0MzMwIiBkPSJtIDE4LjA4MTQ4NSwxMy4xMTcyMzkgYyAwLDAgMS4wMTcyMDIsMC4yMTk4MDggMS40OTA2MTMsLTAuMTM1MjUgMC42ODI1NSwtMC42NzQwOTcgMS42NTU4OTMsLTEuMTU0NzMxIDEuODcwMzU1LC0xLjc0NTMwOCAwLjEwODI1NywtMC4yOTgxMTYgMC4wOTI2NSwtMC4zNzIzNzcgLTAuMDgwMTgsLTAuNjM3MTkxIC0wLjc4NDA4NSwtMS4xMTY5NTIzIC0yLjE4NjAyMywwLjQ4MzU2MyAtMi4xODYwMjMsMC40ODM1NjMgbCAtMS4yMjA1MTEsMS4wNDI5ODMgeiIgc3R5bGU9ImRpc3BsYXk6aW5saW5lO2ZpbGw6I2M5ZGFkODtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MC4wMTA0NjA5OXB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEiIC8+IDxwYXRoIGlkPSJwYXRoNDI4MSIgZD0ibSAxOC45MjM2MzgsMTEuOTExMTY2IGMgMCwwIC0yLjI2MjA3MywwLjM2MDA3MyAtMS4yNDU4MDcsMS42MzE0MjYgMS4wMTYyNjgsMS4yNzEzNTQgMS4zMzE1OSwwLjQ2ODQxNSAxLjMzMTU5LDAuNDY4NDE1IDAsMCAwLjIzNzM2NCwwLjI4NDAyMSAwLjU1MDIyMSwtMC4wMTI4OSAwLjMxMjg1NywtMC4yOTY5MSAwLjgwMTY1NywtMC40ODY1NjMgMC44MDE2NTcsLTAuNDg2NTYzIDAsMCAwLjgzMzQxOSwtMC4wODE1OCAxLjcyODg1MSwtMC42NDAzNDUgMC44OTU0MzIsLTAuNTU4NzY5IDAuMDI1NDUsLTEuNDk0NjQ0IDAuMDI1NDUsLTEuNDk0NjQ0IDAsMCAtMC43MDQwMDIsLTAuOTE0MzA1IC0xLjE5MTE1OCwtMS4wNjIwMDQgLTAuNDg3MTU1LC0wLjE0NzY5OSAtMS4yNjAyMDYsLTAuMjA1OTYzIC0xLjI2MDIwNiwtMC4yMDU5NjMgeiIgc3R5bGU9ImRpc3BsYXk6aW5saW5lO2ZpbGw6bm9uZTtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzUwNTA1MDtzdHJva2Utd2lkdGg6MC4xMDQ2MDk5O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIC8+IDxwYXRoIGlkPSJwYXRoNTkyNiIgZD0ibSAxNi44ODkxNjUsMy45OTA3MDY3IGMgLTAuMjA1OTI1LDAuMDA5MDIgLTAuNDkwNTg0LDAuMDE2NDUyIC0wLjY4MjQzNCwwLjA5NDMwNiAtMC4zNjM1MSwwLjExMzE2MjUgLTAuNzg0MDE5LDAuMzA2NTkxNiAtMS4xMDIwMzksMC40MTQ1MTk3IEMgMTQuODA1NzA3LDQuNjAwOTk5MyAxNC41MjgzODMsNC44Njc1ODQxIDE0LjQ0MjUxNSw0Ljc3MDc2NzYgMTQuMzE0ODUsNC42MjY4MjQ0IDE0LjIyNDM1Myw0LjU5NTM2MyAxNC4wNDU2ODksNC40OTc1NTkgMTMuODAxNzgxLDQuMzk5NTA1IDEzLjg3Mzc3Myw0LjQ0NDgyNzIgMTMuNjYwODY2LDQuMzg2MzI4MyAxMy41MTM2ODEsNC4zNDU4ODcxIDEzLjQ0ODI5LDQuMjg4Mjk1OCAxMy4wNDc5NTQsNC4zMDIzNTY3IGMgLTAuMjE2MDg3LDAuMDA3NTkgLTAuNDczNTEsMC4wMDgwNCAtMC42NjAwODEsMC4wODk3MjUgLTAuMzc0NjE1LDAuMTY0MDE3OCAtMC4yOTksMC4yNDg0NzU3IC0wLjUzODU3MiwwLjQ5MDAyNTIgLTAuMTY1MTA4LDAuMTY2NDcwOSAtMC4yMjMwMjksMC41NzQ5ODMxIC0wLjI4MjA0MSwwLjgxODg1OCAtMC4wNjkzOSwwLjI4Njc3NzYgLTAuMDU0NywwLjYwMTAzOTMgLTAuMDIwMzEsMC45Njc0MDMxIDAuMDI3NjEsMC4yOTQxOTY1IDAuMDkxNzMsMC40OTczOTM5IDAuMjQ5Mzg4LDAuNzU5MDYzIDAuMTM1MDg0LDAuMjI0MTk4OSAwLjMyNDU2MSwwLjI4MzU4MjggMC41NDY1OSwwLjQ5NzI4OTMgMC4wNzc3NCwwLjA3NDgzIDAuMzY4Mzk4LC0wLjAzODk2NSAwLjQ4NDg4LC0wLjAxNTEwNCAwLjEwODcwOSwwLjAyMjI3IC0wLjA0ODE3LDAuMjE2NzA4OCAtMC4wNTMyLDAuMjQ1MzgzNCAtMC4wNTM4LDAuMjM5NTE2OSAtMC4xMTA1MDMsMC4wODc3NzEgLTAuMDgwNiwwLjYyNzQyNjEgMC4zNDgxMjMsMi4wMjY2ODkyIDEuMDA1MDg5LC0xLjA2NzI2NDcgMC4zMjY2NDksMC42Njg2MTk0IC0wLjA1Mjk4LDAuMTM1NTY0IC0wLjQzNzU5NCwwLjM4ODgwNjggLTAuNTAzMzY4LDAuNTg2ODUzOCAtMC4wMTI2NywwLjE2NTEwOSAwLjE5NzgzNSwwLjE5NDA4IDAuMzE4OTk3LDAuMTc4MDQ5IDAuMDYyNjYsMC40ODAzOTUgMC4xMjQ5ODIsMS4wNDIwNDggMC41MjIyNDIsMS4zNzI0MzkgMC4xMjAxNzcsMC4xMDY0MDIgMC4yODY2NTIsMC4wOTQ0NyAwLjQyOTMxNywwLjEyNjQ0MyAwLjIyMTY0MSwwLjI2ODEyOCAwLjQ0ODY2OCwwLjU1NzA2NiAwLjc4NDA4NywwLjY4OTc3NCAwLjI4Mzg0NSwwLjE0ODQzNSAwLjYyNDkxMywwLjA1MSAwLjg5NjEzOCwwLjIzMzA2NSAwLjcxMjkyNSwwLjM2MDkwMSAxLjU5NDM3LDAuMjI3NDI0IDIuMjQwMzA3LC0wLjIxNDM2NyAwLjIzOTczNiwtMC4wMjU4NCAwLjUwMTI0MywwLjA1MTE5IDAuNzUxMzkxLDAuMDIyMjIgMC41NzU4OTgsLTAuMDIwMDYgMS4xNjcyMDcsLTAuMjQwMDA1IDEuNTIzOTYyLC0wLjcxMTUwMiAwLjA3MjksLTAuMDY2IDAuMTAyMDgxLC0wLjE3ODE0IDAuMTY4ODAzLC0wLjI0MDYzNSAwLjA2NjE2LDAuMDgzMyAwLjIwMTA3OSwwLjE2NTI4OSAwLjI4NTY1MywwLjA1NTAyIDAuMTkzMDcyLC0wLjI1MzQzNiAwLjIyMzQxMywtMC41OTUxMDQgMC4zMjcxNDUsLTAuODgyNTU5IDAuMDg2NTgsMC4wMzY0MSAwLjA4NDIsMC4yNjU3MzQgMC4xOTA4MiwwLjE3NTk2OCAwLjA4ODU4LC0wLjI3NzUxIDAuMjMxMDU1LC0wLjU4OTU1NCAwLjE1NzQ4NywtMC44NzUxMDMgQyAyMS4wOTQ5NjgsOS44NjQxNTE0IDIwLjk5NDc5OSw5LjcxMDk4NzkgMjAuOTU5NzUxLDkuNjcwOTkxNCAyMS4wNjk3Myw5LjY2NDkyMTQgMjEuMzkyMTQ2LDkuNjA3NDEyNCAyMS4zNjQyMjYsOS40MzQyNzkgMjEuMjg0OTAyLDkuMjY0MDY1MSAyMC45MzAzMjQsOS4wNTgwODkzIDIwLjc4MTQ3LDguOTYzNjg5MyAyMC42Mjc0ODksNy4wODIzNjI5IDIwLjgzMTk0MSw3Ljk3MzAwNDMgMjAuMzc0NDc1LDYuNTcyMTY2OCAyMC4yODY2OTMsNi4yOTYzNjYgMjAuMTc5NTgyLDYuMDI1MzkwOCAyMC4wMzkxNDksNS43NjczNzc4IDE5LjgxNDE1NSw1LjM1NDAwNzYgMTkuNTAzNjMsNC45NzM5MDc1IDE5LjA1MDAzMSw0LjY2MDUzMjggMTguNjk0MTU3LDQuNDg2NjE1NyAxOC43NzkxNjcsNC40MTI0NTc4IDE4LjQxNjMxOSw0LjI4NDIxMTggMTguMDQwOTE2LDQuMTE0ODkzIDE3LjkyMzEyNiw0LjExNDQyOTQgMTcuNzA2MjE3LDQuMDQ5NTUxNCAxNy40MjE5OTMsNC4wMDQyMzgyIDE3LjE3NjIyNiwzLjk5MzQ2MTEgMTYuODg5MTY1LDMuOTkwNzA2NyBaIG0gLTAuNDE2Nzc3LDMuNzcwMjM0NSBjIDAuMjU4MDA1LDAuMDA5NzYgMC40MjkyNTksMC4yNTQ4MTQgMC41Mjc1MDEsMC40Njg0NDEgLTAuMDQ2NTEsMC4xMjA5MTIzIC0wLjIxNzYxMywwLjE4MDMzMTggLTAuMzE0MzE2LDAuMjcwODAwNSAtMC4wNTIyNywwLjAzMDg5OCAtMC4xOTUwNTcsMC4xNDE5ODI5IC0wLjA3Mzk3LDAuMTc2MjU4MyAwLjE2NzU3NCwtMC4wMDgwMSAwLjM0MTEyNSwtMC4xMDE3NzYgMC41MDIzNjMsLTAuMDgxMjUzIDAuMDM4OCwwLjMxMzY5MjcgMC4wMTAzOCwwLjcyNTUwMzEgLTAuMjk1OTM5LDAuOTAyMTQ5NSAtMC4zMTY4ODQsMC4wODI4MjcgLTAuNTYyMDUzLC0wLjIxMjE0MTYgLTAuNjc2ODI5LC0wLjQ3MTYxOCAtMC4xNDcwOTYsLTAuMzY2NjkwMiAtMC4xODU5MzQsLTAuODQyODQzMSAwLjA3NjUxLC0xLjE2Njk5ODggMC4wNjUzMSwtMC4wNjgyNjggMC4xNjAwMTEsLTAuMTA2MzQ3NSAwLjI1NDY3OCwtMC4wOTc3OCB6IG0gMi44NTkyNDQsMi41NzU3ODc4IGMgLTAuMDc2NzMsMC4xODQ3NTggLTAuMjMwNjU5LDAuMzMwMTU2IC0wLjQwNzAxMSwwLjQxMzI1MiAtMC4wNTUzOSwwLjE1MDcwNSAwLjA0MDA0LDAuMzU0MzggMC4wMjk3LDAuNDgzMjM0IC0wLjA0OTA3LC0wLjE2MDM1NyAtMC4wMDE2LC0wLjM2MTQyNiAtMC4xMDg4NzUsLTAuNDk2NzU3IC0wLjA3MDE4LC0wLjAyMjcxIC0wLjE0Nzc0NywtMC4wMjgxIC0wLjIxMTc0MSwtMC4wNzIwNiAwLjIxMjc5NCwwLjExNzcxNyAwLjQ5NTYxLDAuMDM5MjQgMC42MDQ3NjYsLTAuMTgyMDk0IDAuMDI5MzQsLTAuMDM3NjIgMC4wODE1OSwtMC4xNDU1NzUgMC4wOTMxNiwtMC4xNDU1NzEgeiBtIC0wLjk2NTM3MiwwLjE0MTk4OCBjIDAuMDQ1NjYsMC4wMzQwOSAwLjIwNDg5NywwLjE2Mjg1NyAwLjA3NzQ0LDAuMDY3ODUgLTAuMDE2NDEsLTAuMDExMzggLTAuMDkwMTksLTAuMDcwODYgLTAuMDc3NDQsLTAuMDY3ODUgeiIgc3R5bGU9ImRpc3BsYXk6aW5saW5lO2ZpbGw6I2M5ZGFkODtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MC4wNTIzMDQ5NTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4gPHBhdGggaWQ9InBhdGg0MjU3IiBkPSJtIDE4LjU2MjI5Miw0LjM0MDY1NDMgYyAwLDAgLTAuMDE4MjMsLTAuMTI2MDkyNSAwLjA1NTAzLC0wLjI2MzA5MTEgMC4xMDcwNjUsLTAuMjAwMjExOCAwLjM2NDA0MywtMC40MDk5NDg1IDAuNjYxOTUxLC0wLjU5NjUyOTEgMC4zOTA1NzksLTAuMjQ0NjIwMiAwLjg3ODEwNSwtMC40MDE1NzcyIDEuNDU3NjUzLDAuMDM1OTg1IDAuMTUwMzMxLDAuMTEzNTAwOCAwLjI3NTEyLDAuMzU2MTg0OSAwLjQzNjUyLDAuNTQ2MjQ1OCAwLDAgMC40NDM4MjIsMC41MzI1ODcxIDAuMDU5MTgsMS43OTAwODI5IEMgMjAuODQ3OTc4LDcuMTEwODQ1IDIwLjI0MTQyLDYuNTMzODc1NCAyMC4yNDE0Miw2LjUzMzg3NTQgWiIgc3R5bGU9ImRpc3BsYXk6aW5saW5lO2ZpbGw6I2M5ZGFkODtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MC4wMTA0NjA5OXB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEiIC8+IDxwYXRoIGlkPSJwYXRoNDI1OSIgZD0ibSAxNS41NDQ5NjIsNC4zMTU2Mjk4IGMgMC42NzQwMTYsMC44NjIwMTcgMi4yMjQ5NDUsMy4zNjQ2NDY3IDIuNTUyNDgxLDIuMTM1NzQ3MSAwLjIwOTIyLC0wLjkxMDEwNjEgMC4wMTUzMiwtMi4zMDI1OTczIDAuMDE1MzIsLTIuMzAyNTk3MyAwLDAgLTEuMjUyMDM4LC0wLjQ2NTg4NTcgLTIuNTY3ODAyLDAuMTY2ODUwMiB6IiBzdHlsZT0iZGlzcGxheTppbmxpbmU7ZmlsbDojODk5YmIwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojODk5YmIwO3N0cm9rZS13aWR0aDowLjEwNDYwOTk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIC8+IDxwYXRoIGlkPSJwYXRoNDI3NiIgZD0ibSAxNC41NTMyNiw5LjMxOTI1NjMgYyAwLDAgLTAuMTY3Mzc2LDAuMDUyMzA1IDEuMDk4NDA0LDAuMzM0NzUxNyAxLjI2NTc4LDAuMjgyNDQ2NyAxLjYyMTQ1MywtMC42Njk1MDM0IDEuNjIxNDUzLC0wLjY2OTUwMzQgMCwwIDEuMDM1NjM4LC0xLjUxNjg0MzYgMi4xNDQ1MDMsLTAuMzAzMzY4NyAwLDAgMC4yODI0NDcsMC4zMDMzNjg3IDAuNzg0NTc1LDAuMjkyOTA3NyAwLDAgMC4zMTM4MjksLTAuMTc3ODM2OCAwLjU3NTM1NCwtMC4wMTA0NjEgMC4yNjE1MjUsMC4xNjczNzU5IDAuNDkxNjY3LDAuMzI0MjkwNyAwLjQ5MTY2NywwLjMyNDI5MDcgMCwwIDAuMzg3MDU2LDAuMzY2MTM0NyAtMC4yOTI5MDgsMC4zNTU2NzM3IDAsMCAwLjQyODksMC4xMDQ2MDk5IC0wLjA4MzY5LDEuMzM5MDA3IGwgLTAuMTQ2NDU0LC0wLjMzNDc1MiBjIDAsMCAtMC4yMDkyMiwxLjQwMTc3MyAtMC41NzUzNTQsMC44NjgyNjIgMCwwIC0wLjE2ODU2NywwLjI4NDA0MiAtMC41NDkzMzUsMC41MzgxMTEgLTAuNDYxNzA0LDAuMzA4MDczIC0xLjIwMDYyLDAuNTc5MDM0IC0xLjg4Mjg0NiwwLjMzNTM4MiAwLDAgLTAuOTI5NDM2LDEuMDIzNTYzIC0yLjUxMjQwMiwwLjEyMTEyNSAwLDAgLTAuODcxNzI4LDAuMTY2NTUyIC0xLjQ1NzU0MywtMC44MTY3ODEgMCwwIC0wLjgwNTQ5NiwwLjE5ODc1OSAtMC45NTE5NSwtMS40OTU5MjIgMCwwIC0wLjY3OTk2NSwwLjA0MTg0IC0wLjA0MTg0LC0wLjU0Mzk3MSAwLjYzODEyLC0wLjU4NTgxNTUgMS4yMDMwMTQsLTAuNDYwMjgzNiAxLjIwMzAxNCwtMC40NjAyODM2IHoiIHN0eWxlPSJkaXNwbGF5OmlubGluZTtmaWxsOiNmOGY4Zjg7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAuMDEwNDYwOTlweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxIiAvPiA8cGF0aCBpZD0icGF0aDQzNjUiIGQ9Im0gMTMuNTM4NTQ0LDUuMzE3OTI3NiBjIC0wLjAxNjk4LDAuMDAzMzMgLTAuMjk1NDI5LDAuMDA0MTEgLTAuNTQyNjE0LC0wLjEyODc4OTQgLTAuMTI2Mjk4LC0wLjA2NzkwNiAtMC4yNDcwMjYsLTAuMTI3MDA2OSAtMC4yOTEyNywtMC4xODU5ODA3IC0wLjAzNTY0LC0wLjA0NzUwOCAwLjAwNDEsLTAuMTExNDU4NyAtMC4wNjY4NSwtMC4wNTMwMjIgLTAuOTQ5ODUyLDAuNzgyODExNiAtMC40ODU4NjcsMi4wNDg5MTU3IDAuMzkxNTE4LDIuMzgxNzQ5OSAwLDAgMC4xNjgwMywtMC45MzA1MDIgMS4wODQ1NzEsLTEuOTg3ODA1NyIgc3R5bGU9ImRpc3BsYXk6aW5saW5lO2ZpbGw6I2Y4ZjhmODtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MC4wMTA0NjA5OTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4gPHBhdGggaWQ9InBhdGg0MzY3IiBkPSJtIDE4Ljk2OTEyOSw0LjU1MTQ2OTcgYyAwLDAgMC45NjE2MTUsMC42ODA1MjcxIDEuMTk4MzIsMS42MTI1NTQzIDAsMCAxLjE1MzkzOSwtMS43MzA5MDY4IC0wLjA3Mzk3LC0yLjQyNjIyODIgMCwwIC0wLjIwNzExOCwwLjc5ODg4IC0xLjEyNDM1MSwwLjgxMzY3MzkgeiIgc3R5bGU9ImRpc3BsYXk6aW5saW5lO2ZpbGw6I2Y4ZjhmODtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MC4wMTA0NjA5OXB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEiIC8+IDxwYXRoIGlkPSJwYXRoNDIxNSIgZD0ibSAxMi44Mzg2ODUsMTAuMjA5MDE4IGMgMC4xNDQzOTksMS43NjE2ODIgMC45Mzg2MDEsMS40NzI4ODIgMC45Mzg2MDEsMS40NzI4ODIgMC42MzUzNiwxLjAxMDggMS40Mjk1NjEsMC44MjMwOCAxLjQyOTU2MSwwLjgyMzA4IDEuMzcxODAyLDAuODM3NTIyIDIuNTI3MDAzLC0wLjEwMTA3OSAyLjUyNzAwMywtMC4xMDEwNzkgMS45MzQ5NjMsMC4zMTc2OCAyLjQxMTQ4MywtMC45MjQxNjIgMi40MTE0ODMsLTAuOTI0MTYyIDAuMzc1NDQxLDAuNTc3NjAxIDAuNjA2NDgxLC0wLjgwODY0MSAwLjYwNjQ4MSwtMC44MDg2NDEgMC4wNTc3NiwtMC4xMTU1MiAwLjE0NDQwMSwwLjM0NjU2IDAuMTQ0NDAxLDAuMzQ2NTYgMC40NjIwNzksLTEuMjEyOTYwNSAwLjA4MzI0LC0xLjM3NzgzMyAwLjA4MzI0LC0xLjM3NzgzMyAxLjAxMDgwMSwwLjAyODg4IC0wLjIwMzYyNiwtMC43MDI4NzQgLTAuMjAzNjI2LC0wLjcwMjg3NCAtMC4wMjU1MywtMS4wNTkwNjU0IC0wLjAyNTA4LC0xLjMyOTIxMzEgLTAuMzkwMDU0LC0yLjMzMzQzNzggMC44MDk3OTcsMC4yMTYzODc3IDAuODExMDU3LC0wLjk2MDY1ODkgMC45NDkxNywtMS4yMjk3ODc3IDAuMTk5OTE5LC0wLjUzOTAyNDUgLTAuMDM1NiwtMS41MDQ0OTA0IC0wLjY3OTY0MSwtMS45MTk1MzIzIC0wLjI2NTQxMSwtMC4xNzEwMzg3IC0wLjYwMDIsLTAuMjQ4NjAwOSAtMS4wMDI0ODYsLTAuMTY0MzE5OCAtMC4zMDI3NTUsMC4xMzkwMTI4IC0wLjY5MjU0LDAuMzk0OTg5NSAtMC45MDc2MjgsMC42MDg2NjE5IC0wLjE5MzYxMywwLjE5MjMzOTUgLTAuMjE5NjQ5LDAuMzAzMjExNCAtMC4xOTU0NDIsMC40MTU1NTciIHN0eWxlPSJmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiM1MDUwNTA7c3Ryb2tlLXdpZHRoOjAuMTA0NjA5OTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4gPHBhdGggaWQ9InBhdGg0MjI3IiBkPSJtIDEyLjgzODY4NSwxMC4yMTE0OTUgYyAwLDAgLTAuOTA5NzIxLDAuMDk4NiAwLjI1OTkyLC0wLjgxMTExNzkgMCwwIDAuNDkwOTYsLTAuNDE4NzYwOCAxLjQ3Mjg4MSwtMC4wNTc3NiIgc3R5bGU9ImZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzUwNTA1MDtzdHJva2Utd2lkdGg6MC4xMDQ2MDk5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiAvPiA8cGF0aCBpZD0icGF0aDQyMjkiIGQ9Ik0gMTIuOTA0OTA0LDkuNTY1NTUzIEMgMTIuNTA1NjUzLDguNzczODU0OCAxMi42NzA3OTcsOC4xNjU2MDM3IDEyLjg1MDI0NCw3Ljk1ODI5NCIgc3R5bGU9ImZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzUwNTA1MDtzdHJva2Utd2lkdGg6MC4xMDQ2MDk5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiAvPiA8cGF0aCBpZD0icGF0aDQyMDEiIGQ9Im0gMTQuNTgxMzAzLDQuODIyNzY5MiBjIDAsMCAxLjc5NTc0OSwtMS40NTE3MDY2IDMuOTY3MjA3LC0wLjUxNTAzMDkiIHN0eWxlPSJkaXNwbGF5OmlubGluZTtmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiM1MDUwNTA7c3Ryb2tlLXdpZHRoOjAuMTA0NjA5OTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4gPHBhdGggc3R5bGU9ImRpc3BsYXk6aW5saW5lO2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzUwNTA1MDtzdHJva2Utd2lkdGg6MC4xMDQ2MDk5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiBkPSJNIDEyLjkxMzUyNyw3Ljg5OTY1ODEgQyAxMC44OTQzNTYsOC4zNTIwMTQzIDExLjE2ODQwMiw0LjI1NDUyNDcgMTIuNzY0OTUyLDQuMzAyNTA3MyAxMy4zODM1NjksNC4yODU3MzczIDE0LjA5NzQyNCw0LjI2Nzg1NSAxNC42NTY4MSw1LjAwMTUxMyIgaWQ9InBhdGg0MjA3IiAvPiA8cGF0aCBpZD0icGF0aDQyMzMiIGQ9Im0gMTguMzQwMzMxLDEwLjQ1NDQ5OSBjIDAsMCAwLjY2NDI0LDAuNzIyIDEuMDEwODAxLC0wLjE3MzI4IiBzdHlsZT0iZGlzcGxheTppbmxpbmU7ZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojNTA1MDUwO3N0cm9rZS13aWR0aDowLjEwNDYwOTk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIC8+IDxwYXRoIGlkPSJwYXRoNDIzNSIgZD0ibSAxOC44ODkwNTIsMTAuNzI4ODU5IDAuMDcyMiwwLjU2MzE2IiBzdHlsZT0iZGlzcGxheTppbmxpbmU7ZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojNTA1MDUwO3N0cm9rZS13aWR0aDowLjEwNDYwOTk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIC8+IDxwYXRoIGlkPSJwYXRoNDI1MSIgZD0ibSAxNC4xMzQ4Miw1LjM0NDA4MDEgYyAtMC4xNzgzOTEsMCAtMC42MzI5NDYsMC4wMDY5OCAtMC45OTQxOTIsLTAuMDg2ODE2IEMgMTIuOTA4NzMsNS4xOTcwNTE5IDEyLjcxNTI4NCw1LjA5NTMxMjUgMTIuNjU4MDI2LDQuOTIzNTM3OCIgc3R5bGU9ImRpc3BsYXk6aW5saW5lO2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzUwNTA1MDtzdHJva2Utd2lkdGg6MC4xMDQ2MDk5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiAvPiA8cGF0aCBpZD0icGF0aDQzMDEiIGQ9Im0gMTIuNjcyOTA2LDExLjI0OTk1OSBjIDAsMCAtMS4yMTMxMTMsMC44ODAyNDcgLTAuNzI0OTA5LDEuNTQ1OTgxIGwgMC41OTkxNiwwLjUzMjU4NiAwLjgyMTA3MiwwLjQ0MzgyMyAxLjIyNzkwNywwLjA2NjU3IDAuODA2Mjc3LC0wLjE0Nzk0MSAwLjQxNDIzNCwtMC4xODQ5MjYgMC40NDM4MjIsMC4zNzcyNSAwLjM5OTQ0MSwwLjAxNDc5IDAuMjI5MzA4LC0wLjExMDk1NiAwLjY4NzkyNCwtMC4yNzM2OTEgMC4zNjI0NTYsLTAuMjg0Nzg2IDAuMjA3MTE3LC0wLjMxNDM3MyAtMC4wMjk1OSwtMC4zNDAyNjQgYyAwLDAgLTAuMzg0NjQ2LC0xLjE2MTMzNSAtMC43OTg4OCwtMS4zNDYyNjEgMCwwIC0wLjUzMjU4NywtMC41NzY5NjkgLTEuMjcyMjkxLC0wLjA4MTM3IDAsMCAtMS4xMTY5NTIsMC4zNjk4NTIgLTIuMDg1OTY0LDAuMDQ0MzggLTAuOTY5MDEyLC0wLjMyNTQ3IC0xLjI4NzA4NSwwLjA1OTE4IC0xLjI4NzA4NSwwLjA1OTE4IHoiIHN0eWxlPSJkaXNwbGF5OmlubGluZTtmaWxsOiNmOGY4Zjg7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAuMDEwNDYwOTlweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxIiAvPiA8cGF0aCBpZD0icGF0aDQzMjUiIGQ9Im0gMTEuODUzMTgsMTIuNDgxMDk0IGMgMCwwIDEuMjIwNTExLC0wLjcwMjcxOSAzLjA2OTc3LC0wLjE4NDkyNyAwLDAgMC45MTcyMzQsMC4xNjI3MzYgMS41MDg5OTYsLTAuMDY2NTcgMC41OTE3NjQsLTAuMjI5MzA5IDAuNzkxNDgzLDAuMjczNjkgMC43OTE0ODMsMC4yNzM2OSAwLDAgMC40NjYwMTQsMC44NDMyNjIgMC4zOTk0NCwwLjkwMjQzOCBsIDAuMTc3NTI5LC0wLjA1MTc4IDAuMjY2MjkzLC0wLjM0MDI2NCAwLjA3Mzk3LC0wLjI1ODg5NyAtMC4xNDA1NDMsLTAuNDI5MDI4IC0wLjI3MzY5MSwtMC41NzY5NjggLTAuMzEwNjc2LC0wLjQ0MzgyMiAtMC4yNTE0OTksLTAuMTg0OTI3IC0wLjQyMTYzMSwtMC4xODQ5MjUgLTAuNDA2ODM4LDAuMDI5NTkgLTAuNjA2NTU2LDAuMjUxNDk5IGMgMCwwIC0xLjAyODE4OSwwLjI4ODQ4NSAtMi4yNDg3LC0wLjE4NDkyNSAwLDAgLTAuOTAyNDM4LC0wLjE2MjczNiAtMS41MTYzOTIsMC45ODM4MDYgbCAtMC4xMTgzNTMsMC4zOTk0MzkgeiIgc3R5bGU9ImRpc3BsYXk6aW5saW5lO2ZpbGw6I2M5ZGFkODtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MC4wMTA0NjA5OXB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEiIC8+IDxwYXRoIGlkPSJwYXRoNDI3OSIgZD0ibSAxNi44MzM2NzIsMTMuNzg1MjE3IGMgMC4xNTM0MjMsLTAuMTAyOTY3IDEuNDU0MTIyLC0wLjQwNTE0NCAxLjI3MTUzLC0xLjEwNzA1MiAtMC4xODI1OSwtMC43MDE5MDYgLTAuODEwNDg4LC0yLjE4MzA4IC0xLjk2Mjc0OSwtMS42MjExNTEgLTEuMTUyMjY0LDAuNTYxOTMyIC0yLjQyODI3MSwwLjA0NDIyIC0yLjQyODI3MSwwLjA0NDIyIDAsMCAtMC41MDI1NzUsLTAuMTkxMTk4IC0wLjkxNzEzNywwLjA0NDc1IC0wLjQxNDU2MiwwLjIzNTk1MSAtMC44MzU2OTEsMC42MjQyODUgLTAuOTY5NjcsMS4yNjM4MzYgLTAuMTMzOTgyLDAuNjM5NTU3IDEuNTU5NzQ1LDEuMzQxOTkxIDEuNTU5NzQ1LDEuMzQxOTkxIDAsMCAxLjYyODU2NywwLjIzODgxMyAyLjM5NTY5MywtMC4yNzYwMzUgMCwwIDAuNjI5NzI5LDAuNjk3NzcxIDEuMDUwODU5LDAuMzA5NDM3IHoiIHN0eWxlPSJkaXNwbGF5OmlubGluZTtmaWxsOm5vbmU7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiM1MDUwNTA7c3Ryb2tlLXdpZHRoOjAuMTA0NjA5OTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4gPHBhdGggZD0ibSAxNy4xMTQwMTYsOC41MDk4MjQxIGEgMC45NDk4OTcwOCwwLjU4NjQwNTg3IDc4LjA3ODA2MiAwIDEgLTAuMzQwNjEzLDEuMDQwNjk1NSAwLjk0OTg5NzA4LDAuNTg2NDA1ODcgNzguMDc4MDYyIDAgMSAtMC43NzY1NjIsLTAuNjc4NzU2IDAuOTQ5ODk3MDgsMC41ODY0MDU4NyA3OC4wNzgwNjIgMCAxIDAuMjM5NTYsLTEuMTI5MDIxNiAwLjk0OTg5NzA4LDAuNTg2NDA1ODcgNzguMDc4MDYyIDAgMSAwLjgwNzczNiwwLjUzMTgzNzIgbCAtMC41MDM4NzgsMC4zNTYzODM5IHoiIGlkPSJwYXRoNDI2NSIgc3R5bGU9ImRpc3BsYXk6aW5saW5lO2ZpbGw6IzUwNTA1MDtmaWxsLW9wYWNpdHk6MTtzdHJva2Utd2lkdGg6MC4xMDQ2MDk5NDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZSIgLz4gPHBhdGggZD0iTSAyMC40MTM5NzcsOC4wMzE1OTA2IEEgMC44NTY3NjMyNSwwLjUyODkxMDk1IDc4LjA3ODA2MiAwIDEgMjAuMTA2NzYsOC45NzAyNDk4IDAuODU2NzYzMjUsMC41Mjg5MTA5NSA3OC4wNzgwNjIgMCAxIDE5LjQwNjMzNiw4LjM1ODA0MzEgMC44NTY3NjMyNSwwLjUyODkxMDk1IDc4LjA3ODA2MiAwIDEgMTkuNjIyNDA3LDcuMzM5NzE3NiAwLjg1Njc2MzI1LDAuNTI4OTEwOTUgNzguMDc4MDYyIDAgMSAyMC4zNTA5NDgsNy44MTk0MTA4IGwgLTAuNDU0NDc0LDAuMzIxNDQxNiB6IiBpZD0icGF0aDQyNjUtMiIgc3R5bGU9ImRpc3BsYXk6aW5saW5lO2ZpbGw6IzUwNTA1MDtmaWxsLW9wYWNpdHk6MTtzdHJva2Utd2lkdGg6MC4xMDQ2MDk5NDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZSIgLz4gPHBhdGggaWQ9InBhdGg1NzIwIiBkPSJtIDIxLjEzNDgzMiw3LjY5NjM2MzQgYyAtMC4xMTIzMTgsLTAuMDI3NzU3IC0wLjI2MjQ5NywtMC4wODEwNTQgLTAuMzMzNzMxLC0wLjExODQzODMgLTAuMTQ0MDA1LC0wLjA3NTU3MyAtMC4yOTkzMjksLTAuMjY5ODY1MyAtMC4yOTkzMjksLTAuMzc0NDI2IDAsLTAuMDk2NjA3IC0wLjE5MzI5OCwtMC44NDY4MTQgLTAuMjk0MTMzLC0xLjE0MTU1OTcgQyAxOS45MTc4NSw1LjIxNDg4MjcgMTkuNDI2NzM2LDQuNjc1ODIwNSAxOC44MDY4MDgsNC41MjQzNDIzIDE4LjU3NDU0Myw0LjQ2NzU4OTMgMTguMzc3OTYsNC4zNzc3MTcyIDE4LjM3Nzk2LDQuMzI4Mjg1MSBjIDAsLTAuMTE2NTg3NCAwLjUxODc4NywtMC4zNzIwNTkgMC43NTU1ODcsLTAuMzcyMDgxOCAwLjIyNTEyOSwtMi4wOWUtNSAwLjU1MTc3MywwLjE5NTUxMDUgMC43NTQwMDcsMC40NTEzNTU2IDAuMDg5NTgsMC4xMTMzMjYgMC4zMzY4NDMsMC41NTg3ODc0IDAuNTQ5NDc2LDAuOTg5OTE0MSAwLjYzMDg5MSwxLjI3OTE3MTkgMS4xMjc0NjQsMS45Njg0NzM4IDEuNTY3NTYzLDIuMTc1OTYzMyAwLjIxNzMwOCwwLjEwMjQ1MTggMC4yMjYxMTYsMC4xMTE5NDIgMC4xMzA4ODEsMC4xNDEwMjE1IC0wLjE1OTgzNSwwLjA0ODgwNCAtMC43NzQ5NSwwLjAzNzY4MSAtMS4wMDA2NDIsLTAuMDE4MDk0IHoiIHN0eWxlPSJmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjA7c3Ryb2tlLXdpZHRoOjAuMDUyMzA0OTU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lIiAvPiA8cGF0aCBpZD0icGF0aDQyNDUiIGQ9Im0gMTUuNTQ0Mzg3LDQuMzE0MzcwOSBjIDAsMCAxLjU1NTIyNiwyLjEwODgwNTMgMi4wNzgyNzYsMi4yNzYxODExIDAuNTIzMDQ5LDAuMTY3Mzc1OSAwLjU1MDA5OSwtMS4yNjczOTM5IDAuNTUwMDk5LC0xLjI2NzM5MzkgMCwwIDAuMDEwNDYsLTAuODA1NDk2MiAtMC4wMzEzOCwtMS4xNjExNyIgc3R5bGU9ImZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MC4xMDQ2MDk5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiAvPiA8cGF0aCBpZD0icGF0aDQyNDkiIGQ9Im0gMTguOTQ0Mzc3LDQuNTQ1NjI2MiBjIDAuMjUwMTgyLDAuMDI5NjUgMC44NTMyMzUsLTAuMDU1OTAzIDEuMTM0NjY1LC0wLjc3MjM2OTQiIHN0eWxlPSJmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiM1MDUwNTA7c3Ryb2tlLXdpZHRoOjAuMTA0NjA5OTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4gPHRleHQgaWQ9InRleHQ0MjQ1IiB5PSIyLjA1MTI3MTQiIHg9IjExLjU1NzI5OSIgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXNpemU6MC4xMjU1MzE4OHB4O2xpbmUtaGVpZ2h0OjAlO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6MHB4O3dvcmQtc3BhY2luZzowcHg7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowLjAxMDQ2MDk5cHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MSIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHRzcGFuIHN0eWxlPSJmb250LXNpemU6MC40MTg0Mzk2cHg7bGluZS1oZWlnaHQ6MS4yNTtzdHJva2Utd2lkdGg6MC4wMTA0NjA5OXB4IiB5PSIyLjA1MTI3MTQiIHg9IjExLjU1NzI5OSIgaWQ9InRzcGFuNDI0NyI+wqA8L3RzcGFuPjwvdGV4dD4gPC9nPiA8L3N2Zz4="; // eslint-disable-next-line no-console console.log( "%cMusic Blocks", @@ -3060,10 +3071,10 @@ class Activity { typeof flags !== "undefined" ? flags : { - run: false, - show: false, - collapse: false - }; + run: false, + show: false, + collapse: false + }; this.loading = true; document.body.style.cursor = "wait"; this.doLoadAnimation(); @@ -3173,7 +3184,10 @@ class Activity { // Use the planet New Project mechanism if it is available, // but only if the current project has a name. - if (that.planet !== undefined && that.planet.getCurrentProjectName() !== _("My Project")) { + if ( + that.planet !== undefined && + that.planet.getCurrentProjectName() !== _("My Project") + ) { that.planet.saveLocally(); that.planet.initialiseNewProject(); loadStart(that); @@ -3442,17 +3456,20 @@ class Activity { this.grandFlatBitmap[i].updateCache(); this.trebleSharpBitmap[i].visible = false; - this.trebleSharpBitmap[i].x = this.canvas.width / (2 * this.turtleBlocksScale) - 600; + this.trebleSharpBitmap[i].x = + this.canvas.width / (2 * this.turtleBlocksScale) - 600; this.trebleSharpBitmap[i].updateCache(); this.trebleFlatBitmap[i].visible = false; this.trebleFlatBitmap[i].x = this.canvas.width / (2 * this.turtleBlocksScale) - 600; this.trebleFlatBitmap[i].updateCache(); this.sopranoSharpBitmap[i].visible = false; - this.sopranoSharpBitmap[i].x = this.canvas.width / (2 * this.turtleBlocksScale) - 600; + this.sopranoSharpBitmap[i].x = + this.canvas.width / (2 * this.turtleBlocksScale) - 600; this.sopranoSharpBitmap[i].updateCache(); this.sopranoFlatBitmap[i].visible = false; - this.sopranoFlatBitmap[i].x = this.canvas.width / (2 * this.turtleBlocksScale) - 600; + this.sopranoFlatBitmap[i].x = + this.canvas.width / (2 * this.turtleBlocksScale) - 600; this.sopranoFlatBitmap[i].updateCache(); this.altoSharpBitmap[i].visible = false; @@ -3501,8 +3518,24 @@ class Activity { const scale = buildScale(this.KeySignatureEnv[0] + " " + this.KeySignatureEnv[1])[0]; // eslint-disable-next-line no-console console.log(scale); - const _sharps = ["F" + SHARP, "C" + SHARP, "G" + SHARP, "D" + SHARP, "A" + SHARP, "E" + SHARP, "B" + SHARP]; - const _flats = ["B" + FLAT, "E" + FLAT, "A" + FLAT, "D" + FLAT, "G" + FLAT, "C" + FLAT, "F" + FLAT]; + const _sharps = [ + "F" + SHARP, + "C" + SHARP, + "G" + SHARP, + "D" + SHARP, + "A" + SHARP, + "E" + SHARP, + "B" + SHARP + ]; + const _flats = [ + "B" + FLAT, + "E" + FLAT, + "A" + FLAT, + "D" + FLAT, + "G" + FLAT, + "C" + FLAT, + "F" + FLAT + ]; let dx = 0; for (let i = 0; i < 7; i++) { if (scale.indexOf(_sharps[i]) !== -1) { @@ -3544,8 +3577,24 @@ class Activity { const scale = buildScale(this.KeySignatureEnv[0] + " " + this.KeySignatureEnv[1])[0]; // eslint-disable-next-line no-console console.log(scale); - const _sharps = ["F" + SHARP, "C" + SHARP, "G" + SHARP, "D" + SHARP, "A" + SHARP, "E" + SHARP, "B" + SHARP]; - const _flats = ["B" + FLAT, "E" + FLAT, "A" + FLAT, "D" + FLAT, "G" + FLAT, "C" + FLAT, "F" + FLAT]; + const _sharps = [ + "F" + SHARP, + "C" + SHARP, + "G" + SHARP, + "D" + SHARP, + "A" + SHARP, + "E" + SHARP, + "B" + SHARP + ]; + const _flats = [ + "B" + FLAT, + "E" + FLAT, + "A" + FLAT, + "D" + FLAT, + "G" + FLAT, + "C" + FLAT, + "F" + FLAT + ]; let dx = 0; for (let i = 0; i < 7; i++) { if (scale.indexOf(_sharps[i]) !== -1) { @@ -3585,8 +3634,24 @@ class Activity { const scale = buildScale(this.KeySignatureEnv[0] + " " + this.KeySignatureEnv[1])[0]; // eslint-disable-next-line no-console console.log(scale); - const _sharps = ["F" + SHARP, "C" + SHARP, "G" + SHARP, "D" + SHARP, "A" + SHARP, "E" + SHARP, "B" + SHARP]; - const _flats = ["B" + FLAT, "E" + FLAT, "A" + FLAT, "D" + FLAT, "G" + FLAT, "C" + FLAT, "F" + FLAT]; + const _sharps = [ + "F" + SHARP, + "C" + SHARP, + "G" + SHARP, + "D" + SHARP, + "A" + SHARP, + "E" + SHARP, + "B" + SHARP + ]; + const _flats = [ + "B" + FLAT, + "E" + FLAT, + "A" + FLAT, + "D" + FLAT, + "G" + FLAT, + "C" + FLAT, + "F" + FLAT + ]; let dx = 0; for (let i = 0; i < 7; i++) { if (scale.indexOf(_sharps[i]) !== -1) { @@ -3616,8 +3681,7 @@ class Activity { this.update = true; }; - this.__showAltoAccidentals = function () { - }; + this.__showAltoAccidentals = function () {}; /* * Shows musical alto staff @@ -3631,8 +3695,24 @@ class Activity { const scale = buildScale(this.KeySignatureEnv[0] + " " + this.KeySignatureEnv[1])[0]; // eslint-disable-next-line no-console console.log(scale); - const _sharps = ["F" + SHARP, "C" + SHARP, "G" + SHARP, "D" + SHARP, "A" + SHARP, "E" + SHARP, "B" + SHARP]; - const _flats = ["B" + FLAT, "E" + FLAT, "A" + FLAT, "D" + FLAT, "G" + FLAT, "C" + FLAT, "F" + FLAT]; + const _sharps = [ + "F" + SHARP, + "C" + SHARP, + "G" + SHARP, + "D" + SHARP, + "A" + SHARP, + "E" + SHARP, + "B" + SHARP + ]; + const _flats = [ + "B" + FLAT, + "E" + FLAT, + "A" + FLAT, + "D" + FLAT, + "G" + FLAT, + "C" + FLAT, + "F" + FLAT + ]; let dx = 0; for (let i = 0; i < 7; i++) { if (scale.indexOf(_sharps[i]) !== -1) { @@ -3673,8 +3753,24 @@ class Activity { const scale = buildScale(this.KeySignatureEnv[0] + " " + this.KeySignatureEnv[1])[0]; // eslint-disable-next-line no-console console.log(scale); - const _sharps = ["F" + SHARP, "C" + SHARP, "G" + SHARP, "D" + SHARP, "A" + SHARP, "E" + SHARP, "B" + SHARP]; - const _flats = ["B" + FLAT, "E" + FLAT, "A" + FLAT, "D" + FLAT, "G" + FLAT, "C" + FLAT, "F" + FLAT]; + const _sharps = [ + "F" + SHARP, + "C" + SHARP, + "G" + SHARP, + "D" + SHARP, + "A" + SHARP, + "E" + SHARP, + "B" + SHARP + ]; + const _flats = [ + "B" + FLAT, + "E" + FLAT, + "A" + FLAT, + "D" + FLAT, + "G" + FLAT, + "C" + FLAT, + "F" + FLAT + ]; let dx = 0; for (let i = 0; i < 7; i++) { if (scale.indexOf(_sharps[i]) !== -1) { @@ -3716,8 +3812,24 @@ class Activity { const scale = buildScale(this.KeySignatureEnv[0] + " " + this.KeySignatureEnv[1])[0]; // eslint-disable-next-line no-console console.log(scale); - const _sharps = ["F" + SHARP, "C" + SHARP, "G" + SHARP, "D" + SHARP, "A" + SHARP, "E" + SHARP, "B" + SHARP]; - const _flats = ["B" + FLAT, "E" + FLAT, "A" + FLAT, "D" + FLAT, "G" + FLAT, "C" + FLAT, "F" + FLAT]; + const _sharps = [ + "F" + SHARP, + "C" + SHARP, + "G" + SHARP, + "D" + SHARP, + "A" + SHARP, + "E" + SHARP, + "B" + SHARP + ]; + const _flats = [ + "B" + FLAT, + "E" + FLAT, + "A" + FLAT, + "D" + FLAT, + "G" + FLAT, + "C" + FLAT, + "F" + FLAT + ]; let dx = 0; for (let i = 0; i < 7; i++) { if (scale.indexOf(_sharps[i]) !== -1) { @@ -3824,7 +3936,8 @@ class Activity { // temperament. let customName = "custom"; if (myBlock.connections[1] !== null) { - customName = this.blocks.blockList[myBlock.connections[1]].value; + customName = + this.blocks.blockList[myBlock.connections[1]].value; } // eslint-disable-next-line no-console console.log(customName); @@ -4004,7 +4117,11 @@ class Activity { btnSize, 0 ); - this._loadButtonDragHandler(this.collapseBlocksContainer, toggleCollapsibleStacks, this); + this._loadButtonDragHandler( + this.collapseBlocksContainer, + toggleCollapsibleStacks, + this + ); x += dx; @@ -4096,7 +4213,8 @@ class Activity { }; const img = new Image(); - img.src = "data:image/svg+xml;base64," + window.btoa(unescape(encodeURIComponent(name))); + img.src = + "data:image/svg+xml;base64," + window.btoa(unescape(encodeURIComponent(name))); container.appendChild(img); container.setAttribute( @@ -4238,7 +4356,8 @@ class Activity { } }; - img.src = "data:image/svg+xml;base64," + window.btoa(unescape(encodeURIComponent(svgData))); + img.src = + "data:image/svg+xml;base64," + window.btoa(unescape(encodeURIComponent(svgData))); }; /* @@ -4442,7 +4561,9 @@ class Activity { const rawData = reader.result; if (rawData === null || rawData === "") { that.errorMsg( - _("Cannot load project from the file. Please check the file type.") + _( + "Cannot load project from the file. Please check the file type." + ) ); } else { const cleanData = rawData.replace("\n", " "); @@ -4473,7 +4594,11 @@ class Activity { } }; - that.stage.addEventListener("trashsignal", __listener, false); + that.stage.addEventListener( + "trashsignal", + __listener, + false + ); that.sendAllToTrash(false, false); that._allClear(false); if (that.planet) { @@ -4579,7 +4704,9 @@ class Activity { // eslint-disable-next-line no-console console.error(e); that.errorMsg( - _("Cannot load project from the file. Please check the file type.") + _( + "Cannot load project from the file. Please check the file type." + ) ); document.body.style.cursor = "default"; that.loading = false; @@ -4699,40 +4826,52 @@ class Activity { // horizonally so as not to overlap. for (let i = 0; i < 7; i++) { this.grandSharpBitmap[i] = this._createGrid( - "data:image/svg+xml;base64," + window.btoa(unescape(encodeURIComponent(GRAND_G))) + "data:image/svg+xml;base64," + + window.btoa(unescape(encodeURIComponent(GRAND_G))) ); this.grandFlatBitmap[i] = this._createGrid( - "data:image/svg+xml;base64," + window.btoa(unescape(encodeURIComponent(GRAND_F))) + "data:image/svg+xml;base64," + + window.btoa(unescape(encodeURIComponent(GRAND_F))) ); this.trebleSharpBitmap[i] = this._createGrid( - "data:image/svg+xml;base64," + window.btoa(unescape(encodeURIComponent(TREBLE_G))) + "data:image/svg+xml;base64," + + window.btoa(unescape(encodeURIComponent(TREBLE_G))) ); this.trebleFlatBitmap[i] = this._createGrid( - "data:image/svg+xml;base64," + window.btoa(unescape(encodeURIComponent(TREBLE_F))) + "data:image/svg+xml;base64," + + window.btoa(unescape(encodeURIComponent(TREBLE_F))) ); this.sopranoSharpBitmap[i] = this._createGrid( - "data:image/svg+xml;base64," + window.btoa(unescape(encodeURIComponent(TREBLE_G))) + "data:image/svg+xml;base64," + + window.btoa(unescape(encodeURIComponent(TREBLE_G))) ); this.sopranoFlatBitmap[i] = this._createGrid( - "data:image/svg+xml;base64," + window.btoa(unescape(encodeURIComponent(TREBLE_F))) + "data:image/svg+xml;base64," + + window.btoa(unescape(encodeURIComponent(TREBLE_F))) ); this.altoSharpBitmap[i] = this._createGrid( - "data:image/svg+xml;base64," + window.btoa(unescape(encodeURIComponent(TREBLE_G))) + "data:image/svg+xml;base64," + + window.btoa(unescape(encodeURIComponent(TREBLE_G))) ); this.altoFlatBitmap[i] = this._createGrid( - "data:image/svg+xml;base64," + window.btoa(unescape(encodeURIComponent(TREBLE_F))) + "data:image/svg+xml;base64," + + window.btoa(unescape(encodeURIComponent(TREBLE_F))) ); this.tenorSharpBitmap[i] = this._createGrid( - "data:image/svg+xml;base64," + window.btoa(unescape(encodeURIComponent(TREBLE_G))) + "data:image/svg+xml;base64," + + window.btoa(unescape(encodeURIComponent(TREBLE_G))) ); this.tenorFlatBitmap[i] = this._createGrid( - "data:image/svg+xml;base64," + window.btoa(unescape(encodeURIComponent(TREBLE_F))) + "data:image/svg+xml;base64," + + window.btoa(unescape(encodeURIComponent(TREBLE_F))) ); this.bassSharpBitmap[i] = this._createGrid( - "data:image/svg+xml;base64," + window.btoa(unescape(encodeURIComponent(TREBLE_G))) + "data:image/svg+xml;base64," + + window.btoa(unescape(encodeURIComponent(TREBLE_G))) ); this.bassFlatBitmap[i] = this._createGrid( - "data:image/svg+xml;base64," + window.btoa(unescape(encodeURIComponent(TREBLE_F))) + "data:image/svg+xml;base64," + + window.btoa(unescape(encodeURIComponent(TREBLE_F))) ); } diff --git a/js/artwork.js b/js/artwork.js index 032fd560e7..3dd2d1f67b 100644 --- a/js/artwork.js +++ b/js/artwork.js @@ -123,7 +123,7 @@ const MEDIASAFEAREA = [40, 4, 108, 80]; const HIGHLIGHTCOLOR = "#FFFFFF"; const ACTIVECOLOR = "#212121"; -function showMaterialHighlight(x, y, r, event, scale, stage) { +const showMaterialHighlight = (x, y, r, event, scale, stage) => { const circles = { highlight: new createjs.Shape(), active: new createjs.Shape() @@ -150,9 +150,9 @@ function showMaterialHighlight(x, y, r, event, scale, stage) { createjs.Tween.get(circles.active).to({ alpha: 0.05 }).to({ alpha: 0.3 }, 150); return circles; -} +}; -function hideButtonHighlight(circles, stage) { +const hideButtonHighlight = (circles, stage) => { // Un-real circles! if (circles.active === undefined) { return; @@ -163,13 +163,13 @@ function hideButtonHighlight(circles, stage) { setTimeout(() => { stage.removeChild(circles.active, circles.highlight); }, 410); -} +}; -function hidePaletteNameDisplay(palette_text, stage) { +const hidePaletteNameDisplay = (palette_text, stage) => { setTimeout(() => { stage.removeChild(palette_text); }, 150); -} +}; const MENUWIDTH = 200; @@ -204,9 +204,9 @@ const BACKGROUND = const cameraPALETTE = ' '; const mediaPALETTE = - ' '; + ' '; const videoPALETTE = - ' '; + ' '; const NEXTBUTTON = '' + @@ -379,7 +379,7 @@ const MICEPALETTEICON = 'アセット 22'; const TURTLESPALETTEICON = - ' '; + ' '; const COLLAPSEBUTTON = 'アセット 29'; @@ -391,7 +391,7 @@ const MOUSEPALETTEICON = 'アセット 20'; const TURTLEPALETTEICON = - ' '; + ' '; const NOGRIDBUTTON = 'アセット 32'; @@ -555,7 +555,7 @@ const BASS = ' A F D B G A C E G -25 -50 -75 -100 -125 -112.5 -87.5 -62.5 -37.5 '; const GRAND = - ' A F D B G A C E G F D B G E F A C E 125 100 75 50 25 37.5 62.5 87.5 112.5 -25 -50 -75 -100 -125 -112.5 -87.5 -62.5 -37.5 D B C 12.5 0 -12.5 '; + ' A F D B G A C E G F D B G E F A C E 125 100 75 50 25 37.5 62.5 87.5 112.5 -25 -50 -75 -100 -125 -112.5 -87.5 -62.5 -37.5 D B C 12.5 0 -12.5 '; const CANCELBUTTON = ' '; @@ -720,19 +720,19 @@ const METRONOMESVG = ' image/svg+xml '; const PITCHPREVIEWBUTTON = - ' '; + ' '; const JAVASCRIPTBUTTON = - ' <> '; + ' <> '; const GRAND_F = // One flat each on the treble and bass clefs - ' '; + ' '; const GRAND_G = // One sharp each on the treble and bass clefs - ' '; + ' '; const TREBLE_F = // One flat each on the treble and bass clefs - ' '; + ' '; const TREBLE_G = // One sharp each on the treble and bass clefs - ' '; + ' '; diff --git a/js/basicblocks.js b/js/basicblocks.js index 53106d004a..26804f23c2 100644 --- a/js/basicblocks.js +++ b/js/basicblocks.js @@ -77,7 +77,7 @@ const BACKWARDCOMPATIBILIYDICT = { * @param {Object} blocks * @returns {void} */ -function initBasicProtoBlocks(activity) { +const initBasicProtoBlocks = (activity) => { activity.blocks.palettes = activity.palettes; setupRhythmBlockPaletteBlocks(activity); setupRhythmBlocks(activity); @@ -112,4 +112,4 @@ function initBasicProtoBlocks(activity) { ); } } -} +}; diff --git a/js/block.js b/js/block.js index 81f2ef295e..580f090db8 100644 --- a/js/block.js +++ b/js/block.js @@ -162,7 +162,7 @@ const PIEMENUS = [ "wrapmode" ]; -function _blockMakeBitmap(data, callback, args) { +const _blockMakeBitmap = (data, callback, args) => { // Async creation of bitmap from SVG data. // Works with Chrome, Safari, Firefox (untested on IE). const img = new Image(); @@ -173,7 +173,7 @@ function _blockMakeBitmap(data, callback, args) { }; img.src = "data:image/svg+xml;base64," + window.btoa(unescape(encodeURIComponent(data))); -} +}; // Define block instance objects and any methods that are intra-block. class Block { @@ -269,7 +269,8 @@ class Block { if (counter !== undefined) { loopCount = counter; } - if (loopCount > 10) { // race condition? + if (loopCount > 10) { + // race condition? throw new Error("COULD NOT CREATE CACHE"); } @@ -673,11 +674,11 @@ class Block { that.collapseButtonBitmap.scaleX = that.collapseButtonBitmap.scaleY = that.collapseButtonBitmap.scale = - scale / 3; + scale / 3; that.expandButtonBitmap.scaleX = that.expandButtonBitmap.scaleY = that.expandButtonBitmap.scale = - scale / 3; + scale / 3; that.updateCache(); that._calculateBlockHitArea(); }; @@ -1376,7 +1377,7 @@ class Block { that.collapseButtonBitmap.scaleX = that.collapseButtonBitmap.scaleY = that.collapseButtonBitmap.scale = - that.protoblock.scale / 3; + that.protoblock.scale / 3; that.container.addChild(that.collapseButtonBitmap); that.collapseButtonBitmap.x = 2 * that.protoblock.scale; if (that.isInlineCollapsible()) { @@ -1408,7 +1409,7 @@ class Block { that.expandButtonBitmap.scaleX = that.expandButtonBitmap.scaleY = that.expandButtonBitmap.scale = - that.protoblock.scale / 3; + that.protoblock.scale / 3; that.container.addChild(that.expandButtonBitmap); that.expandButtonBitmap.visible = that.collapsed; @@ -1617,7 +1618,7 @@ class Block { * @param that - = this * @returns {void} */ - const __processCollapseBitmap = function (bitmap, that) { + const __processCollapseBitmap = (bitmap, that) => { that.collapseBlockBitmap = bitmap; that.collapseBlockBitmap.name = "collapse_" + thisBlock; that.container.addChild(that.collapseBlockBitmap); @@ -2483,11 +2484,15 @@ class Block { */ _positionMedia(bitmap, width, height, blockScale) { if (width > height) { - bitmap.scaleX = bitmap.scaleY = bitmap.scale = - ((MEDIASAFEAREA[2] / width) * blockScale) / 2; + bitmap.scaleX = + bitmap.scaleY = + bitmap.scale = + ((MEDIASAFEAREA[2] / width) * blockScale) / 2; } else { - bitmap.scaleX = bitmap.scaleY = bitmap.scale = - ((MEDIASAFEAREA[3] / height) * blockScale) / 2; + bitmap.scaleX = + bitmap.scaleY = + bitmap.scale = + ((MEDIASAFEAREA[3] / height) * blockScale) / 2; } bitmap.x = ((MEDIASAFEAREA[0] - 10) * blockScale) / 2; bitmap.y = (MEDIASAFEAREA[1] * blockScale) / 2; @@ -3449,12 +3454,7 @@ class Block { let gridLabels = []; if (_THIS_IS_TURTLE_BLOCKS_) { - gridLabels = [ - _("Cartesian"), - _("polar"), - _("Cartesian+polar"), - _("none") - ]; + gridLabels = [_("Cartesian"), _("polar"), _("Cartesian+polar"), _("none")]; } else { gridLabels = [ _("Cartesian"), @@ -3688,13 +3688,13 @@ class Block { this.label.style.left = Math.round( - (x + this.activity.blocksContainer.x) * this.activity.getStageScale() - + canvasLeft + (x + this.activity.blocksContainer.x) * this.activity.getStageScale() + + canvasLeft ) + "px"; this.label.style.top = Math.round( - (y + this.activity.blocksContainer.y) * this.activity.getStageScale() - + canvasTop + (y + this.activity.blocksContainer.y) * this.activity.getStageScale() + + canvasTop ) + "px"; this.label.style.width = Math.round((selectorWidth * this.blocks.blockScale * this.protoblock.scale) / 2) + diff --git a/js/lilypond.js b/js/lilypond.js index 1f220615b7..4c5bf87328 100644 --- a/js/lilypond.js +++ b/js/lilypond.js @@ -44,17 +44,17 @@ const LILYPONDHEADER = * @deprecated */ // eslint-disable-next-line no-unused-vars -const getLilypondHeader = function () { +const getLilypondHeader = () => { return LILYPONDHEADER; }; -const processLilypondNotes = function (lilypond, logo, turtle) { +const processLilypondNotes = (lilypond, logo, turtle) => { // obj = [instructions] or // obj = [note, duration, dotCount, tupletValue, roundDown, insideChord, staccato] logo.notationNotes[turtle] = "\\meter\n"; - function __toLilynote(note) { + const __toLilynote = (note) => { // Lilypond notes use is for sharp, es for flat, // , and ' for shifts in octave. // Also, notes must be lowercase. @@ -81,7 +81,7 @@ const processLilypondNotes = function (lilypond, logo, turtle) { .replace(/8/g, "''''''") .replace(/9/g, "'''''''") .toLowerCase(); - } + }; let noteCounter = 0; let queueSlur = false; @@ -95,7 +95,7 @@ const processLilypondNotes = function (lilypond, logo, turtle) { let note; let notes; - function __processTuplet(logo, turtle, i, count) { + const __processTuplet = (logo, turtle, i, count) => { let j = 0; let k = 0; let ii; @@ -166,7 +166,7 @@ const processLilypondNotes = function (lilypond, logo, turtle) { } return j; - } + }; for (let i = 0; i < logo.notation.notationStaging[turtle].length; i++) { let obj = logo.notation.notationStaging[turtle][i]; @@ -593,8 +593,7 @@ const processLilypondNotes = function (lilypond, logo, turtle) { } }; -const saveLilypondOutput = function (activity) { - +const saveLilypondOutput = (activity) => { //.TRANS Animal names used in Lilypond output const RODENTS = [ _("mouse"), @@ -839,7 +838,8 @@ const saveLilypondOutput = function (activity) { // console.debug("shortInstrumentName: " + shortInstrumentName); } - activity.logo.notationOutput += instrumentName.replace(/ /g, "").replace(".", "") + "Voice = "; + activity.logo.notationOutput += + instrumentName.replace(/ /g, "").replace(".", "") + "Voice = "; if (tNumber > startDrums - 1) { activity.logo.notationOutput += "\\new DrumStaff \\with {\n"; } else { @@ -853,7 +853,8 @@ const saveLilypondOutput = function (activity) { activity.logo.notationOutput += ' shortInstrumentName = "' + "d" + num + '"\n'; activity.logo.notationOutput += ' midiInstrument = "snare drum"\n'; } else { - activity.logo.notationOutput += ' shortInstrumentName = "' + shortInstrumentName + '"\n'; + activity.logo.notationOutput += + ' shortInstrumentName = "' + shortInstrumentName + '"\n'; activity.logo.notationOutput += ' midiInstrument = "acoustic grand"\n'; } // Automatic note splitting diff --git a/js/macros.js b/js/macros.js index 113cc5288d..75148dfdfc 100644 --- a/js/macros.js +++ b/js/macros.js @@ -47,7 +47,7 @@ /* exported getMacroExpansion, blockIsMacro */ -function blockIsMacro(activity, blkname) { +const blockIsMacro = (activity, blkname) => { const protoBlock = activity.blocks.protoBlockDict[blkname]; if (protoBlock && protoBlock.macroFunc) return true; @@ -128,7 +128,7 @@ function blockIsMacro(activity, blkname) { return BLOCKISMACRO.indexOf(blkname) > -1; } -function getMacroExpansion(activity, blkname, x, y) { +const getMacroExpansion = (activity, blkname, x, y) => { const protoBlock = activity.blocks.protoBlockDict[blkname]; if (protoBlock && protoBlock.macroFunc) return protoBlock.macroFunc(x, y); diff --git a/js/mxml.js b/js/mxml.js index 7ffd1088f1..5a5254df94 100644 --- a/js/mxml.js +++ b/js/mxml.js @@ -12,7 +12,7 @@ /* global saveMxmlOutput:writable,voiceNum:writable */ /* exported saveMxmlOutput */ -saveMxmlOutput = function (logo) { + const saveMxmlOutput = (logo) => { // temporary until I get more things sorted out const ignore = ["voice two", "voice one", "one voice"]; let res = ""; diff --git a/js/palette.js b/js/palette.js index 583909796f..75250211b4 100644 --- a/js/palette.js +++ b/js/palette.js @@ -28,10 +28,10 @@ const PALETTE_SCALE_FACTOR = 0.5; const PALETTE_WIDTH_FACTOR = 3; -function paletteBlockButtonPush(blocks, name, arg) { +const paletteBlockButtonPush = (blocks, name, arg) => { const blk = blocks.makeBlock(name, arg); return blk; -} +}; // There are several components to the palette system: // @@ -45,13 +45,13 @@ function paletteBlockButtonPush(blocks, name, arg) { // // loadPaletteMenuItemHandler is the event handler for the palette menu. -function makePaletteIcons(data, width, height) { +const makePaletteIcons = (data, width, height) => { const img = new Image(); img.src = "data:image/svg+xml;base64," + window.btoa(unescape(encodeURIComponent(data))); if (width) img.width = width; if (height) img.height = height; return img; -} +}; class Palettes { constructor(activity) { @@ -311,7 +311,7 @@ class Palettes { this.activity.hideSearchWidget(true); this.dict[name].showMenu(true); - this.activePalette = name; // used to delete plugins + this.activePalette = name; // used to delete plugins } _showMenus() {} @@ -377,13 +377,11 @@ class Palettes { _loadPaletteButtonHandler(name, row) { // eslint-disable-next-line no-unused-vars row.onmouseover = (event) => { - if(name == "search"){ + if (name == "search") { document.body.style.cursor = "text"; - } - else{ + } else { document.body.style.cursor = "pointer"; } - }; // eslint-disable-next-line no-unused-vars @@ -1165,7 +1163,7 @@ class Palette { ["namedbox", "nameddo", "namedcalc", "nameddoArg", "namedcalcArg"].indexOf( protoblk.name ) === -1 && - blockIsMacro(this.activity, blkname) + blockIsMacro(this.activity, blkname) ) { this._makeBlockFromProtoblock(protoblk, true, blkname, null, 100, 100); callback(lastBlock); @@ -1286,7 +1284,7 @@ class Palette { } } -async function initPalettes(palettes) { +const initPalettes = async (palettes) => { // Instantiate the palettes object on first load. for (let i = 0; i < BUILTINPALETTES.length; i++) { @@ -1298,4 +1296,4 @@ async function initPalettes(palettes) { // eslint-disable-next-line no-console console.debug("Time to show the palettes."); palettes.show(); -} +}; diff --git a/js/piemenus.js b/js/piemenus.js index 1ca3f42df6..65ff96a707 100644 --- a/js/piemenus.js +++ b/js/piemenus.js @@ -223,7 +223,8 @@ const piemenuPitches = function ( Math.max( 0, Math.round( - (x + block.activity.blocksContainer.x) * block.activity.getStageScale() + canvasLeft + (x + block.activity.blocksContainer.x) * block.activity.getStageScale() + + canvasLeft ) - 200 ) ) + "px"; @@ -233,7 +234,8 @@ const piemenuPitches = function ( Math.max( 0, Math.round( - (y + block.activity.blocksContainer.y) * block.activity.getStageScale() + canvasTop + (y + block.activity.blocksContainer.y) * block.activity.getStageScale() + + canvasTop ) - 200 ) ) + "px"; @@ -294,8 +296,8 @@ const piemenuPitches = function ( (block.name === "notename" && (block.connections[0] != undefined ? ["setkey", "setkey2"].indexOf( - block.blocks.blockList[block.connections[0]].name - ) === -1 + block.blocks.blockList[block.connections[0]].name + ) === -1 : true)) ) { if (scale[6 - i][0] == FIXEDSOLFEGE[note] || scale[6 - i][0] == note) { @@ -357,7 +359,7 @@ const piemenuPitches = function ( * @return{void} * @private */ - const __pitchPreview = function () { + const __pitchPreview = () => { const label = that._pitchWheel.navItems[that._pitchWheel.selectedNavItemIndex].title; const i = noteLabels.indexOf(label); @@ -490,8 +492,8 @@ const piemenuPitches = function ( (that.name == "notename" && (that.connections[0] != undefined ? ["setkey", "setkey2"].indexOf( - that.blocks.blockList[that.connections[0]].name - ) === -1 + that.blocks.blockList[that.connections[0]].name + ) === -1 : true)) ) { let i = NOTENAMES.indexOf(FIXEDSOLFEGE[selection["note"]]); @@ -608,13 +610,7 @@ const piemenuPitches = function ( }; }; -const piemenuCustomNotes = function ( - block, - noteLabels, - customLabels, - selectedCustom, - selectedNote -) { +const piemenuCustomNotes = (block, noteLabels, customLabels, selectedCustom, selectedNote) => { // pie menu for customNote selection if (block.blocks.stageClick) { return; @@ -715,7 +711,7 @@ const piemenuCustomNotes = function ( labelsDict[t] = []; for (const k in noteLabels[t]) { if (k !== "pitchNumber" && k !== "interval") { - if (typeof(noteLabels[t][k]) === "number") { + if (typeof noteLabels[t][k] === "number") { // labels.push(k); labelsDict[t].push(k); blockCustom++; @@ -786,7 +782,8 @@ const piemenuCustomNotes = function ( Math.max( 0, Math.round( - (x + block.activity.blocksContainer.x) * block.activity.getStageScale() + canvasLeft + (x + block.activity.blocksContainer.x) * block.activity.getStageScale() + + canvasLeft ) - 200 ) ) + "px"; @@ -796,7 +793,8 @@ const piemenuCustomNotes = function ( Math.max( 0, Math.round( - (y + block.activity.blocksContainer.y) * block.activity.getStageScale() + canvasTop + (y + block.activity.blocksContainer.y) * block.activity.getStageScale() + + canvasTop ) - 200 ) ) + "px"; @@ -1305,7 +1303,8 @@ const piemenuAccidentals = function (block, accidentalLabels, accidentalValues, Math.max( 0, Math.round( - (x + block.activity.blocksContainer.x) * block.activity.getStageScale() + canvasLeft + (x + block.activity.blocksContainer.x) * block.activity.getStageScale() + + canvasLeft ) - 200 ) ) + "px"; @@ -1315,7 +1314,8 @@ const piemenuAccidentals = function (block, accidentalLabels, accidentalValues, Math.max( 0, Math.round( - (y + block.activity.blocksContainer.y) * block.activity.getStageScale() + canvasTop + (y + block.activity.blocksContainer.y) * block.activity.getStageScale() + + canvasTop ) - 200 ) ) + "px"; @@ -2203,7 +2203,8 @@ const piemenuBasic = function (block, menuLabels, menuValues, selectedValue, col Math.max( 0, Math.round( - (x + block.activity.blocksContainer.x) * block.activity.getStageScale() + canvasLeft + (x + block.activity.blocksContainer.x) * block.activity.getStageScale() + + canvasLeft ) - 200 ) ) + "px"; @@ -2213,7 +2214,8 @@ const piemenuBasic = function (block, menuLabels, menuValues, selectedValue, col Math.max( 0, Math.round( - (y + block.activity.blocksContainer.y) * block.activity.getStageScale() + canvasTop + (y + block.activity.blocksContainer.y) * block.activity.getStageScale() + + canvasTop ) - 200 ) ) + "px"; @@ -2306,7 +2308,8 @@ const piemenuBoolean = function (block, booleanLabels, booleanValues, boolean) { Math.max( 0, Math.round( - (x + block.activity.blocksContainer.x) * block.activity.getStageScale() + canvasLeft + (x + block.activity.blocksContainer.x) * block.activity.getStageScale() + + canvasLeft ) - 200 ) ) + "px"; @@ -2316,7 +2319,8 @@ const piemenuBoolean = function (block, booleanLabels, booleanValues, boolean) { Math.max( 0, Math.round( - (y + block.activity.blocksContainer.y) * block.activity.getStageScale() + canvasTop + (y + block.activity.blocksContainer.y) * block.activity.getStageScale() + + canvasTop ) - 200 ) ) + "px"; @@ -2341,7 +2345,6 @@ const piemenuBoolean = function (block, booleanLabels, booleanValues, boolean) { }; }; - const piemenuChords = function (block, selectedChord) { // wheelNav pie menu for chord selection @@ -2359,7 +2362,7 @@ const piemenuChords = function (block, selectedChord) { for (let i = 0; i < CHORDNAMES.length; i++) { const name = _(CHORDNAMES[i]); if (name.length === 0) { - chordLabels.push(CHORDNAMES[i]); // In case i18n fails + chordLabels.push(CHORDNAMES[i]); // In case i18n fails } else { chordLabels.push(name); } @@ -2367,7 +2370,7 @@ const piemenuChords = function (block, selectedChord) { wheelnav.cssMode = true; block._chordWheel.keynavigateEnabled = false; - + block._chordWheel.colors = platformColor.modeWheelcolors; block._chordWheel.slicePathFunction = slicePath().DonutSlice; block._chordWheel.slicePathCustom = slicePath().DonutSliceCustomization(); @@ -2433,7 +2436,8 @@ const piemenuChords = function (block, selectedChord) { Math.max( 0, Math.round( - (x + block.activity.blocksContainer.x) * block.activity.getStageScale() + canvasLeft + (x + block.activity.blocksContainer.x) * block.activity.getStageScale() + + canvasLeft ) - 200 ) ) + "px"; @@ -2443,7 +2447,8 @@ const piemenuChords = function (block, selectedChord) { Math.max( 0, Math.round( - (y + block.activity.blocksContainer.y) * block.activity.getStageScale() + canvasTop + (y + block.activity.blocksContainer.y) * block.activity.getStageScale() + + canvasTop ) - 200 ) ) + "px"; @@ -2469,7 +2474,6 @@ const piemenuChords = function (block, selectedChord) { }; }; - const piemenuVoices = function (block, voiceLabels, voiceValues, categories, voice, rotate) { // wheelNav pie menu for voice selection @@ -2613,7 +2617,8 @@ const piemenuVoices = function (block, voiceLabels, voiceValues, categories, voi Math.max( 0, Math.round( - (x + block.activity.blocksContainer.x) * block.activity.getStageScale() + canvasLeft + (x + block.activity.blocksContainer.x) * block.activity.getStageScale() + + canvasLeft ) - 200 ) ) + "px"; @@ -2623,7 +2628,8 @@ const piemenuVoices = function (block, voiceLabels, voiceValues, categories, voi Math.max( 0, Math.round( - (y + block.activity.blocksContainer.y) * block.activity.getStageScale() + canvasTop + (y + block.activity.blocksContainer.y) * block.activity.getStageScale() + + canvasTop ) - 200 ) ) + "px"; @@ -2748,7 +2754,8 @@ const piemenuIntervals = function (block, selectedInterval) { Math.max( 0, Math.round( - (x + block.activity.blocksContainer.x) * block.activity.getStageScale() + canvasLeft + (x + block.activity.blocksContainer.x) * block.activity.getStageScale() + + canvasLeft ) - 200 ) ) + "px"; @@ -2758,7 +2765,8 @@ const piemenuIntervals = function (block, selectedInterval) { Math.max( 0, Math.round( - (y + block.activity.blocksContainer.y) * block.activity.getStageScale() + canvasTop + (y + block.activity.blocksContainer.y) * block.activity.getStageScale() + + canvasTop ) - 200 ) ) + "px"; @@ -3237,7 +3245,8 @@ const piemenuModes = function (block, selectedMode) { Math.max( 0, Math.round( - (x + block.activity.blocksContainer.x) * block.activity.getStageScale() + canvasLeft + (x + block.activity.blocksContainer.x) * block.activity.getStageScale() + + canvasLeft ) - 200 ) ) + "px"; @@ -3247,7 +3256,8 @@ const piemenuModes = function (block, selectedMode) { Math.max( 0, Math.round( - (y + block.activity.blocksContainer.y) * block.activity.getStageScale() + canvasTop + (y + block.activity.blocksContainer.y) * block.activity.getStageScale() + + canvasTop ) - 200 ) ) + "px"; @@ -3320,11 +3330,15 @@ const piemenuBlockContext = function (block) { const canvasTop = block.activity.canvas.offsetTop + 6 * block.activity.getStageScale(); docById("contextWheelDiv").style.left = - Math.round((x + block.activity.blocksContainer.x) * block.activity.getStageScale() + canvasLeft) - + Math.round( + (x + block.activity.blocksContainer.x) * block.activity.getStageScale() + canvasLeft + ) - 150 + "px"; docById("contextWheelDiv").style.top = - Math.round((y + block.activity.blocksContainer.y) * block.activity.getStageScale() + canvasTop) - + Math.round( + (y + block.activity.blocksContainer.y) * block.activity.getStageScale() + canvasTop + ) - 150 + "px"; @@ -3469,13 +3483,7 @@ const piemenuGrid = function (activity) { "" ]; - gridLabels = [ - "Blank", - "Cartesian", - "Cartesian Polar", - "Polar", - "Blank" - ]; + gridLabels = ["Blank", "Cartesian", "Cartesian Polar", "Polar", "Blank"]; } else { grids = [ "imgsrc: images/grid/blank.svg", @@ -3560,7 +3568,20 @@ const piemenuKey = (activity) => { const keyNameWheel = new wheelnav("chooseKeyDiv", null, 1200, 1200); const keyNameWheel2 = new wheelnav("keyNameWheel2", keyNameWheel.raphael); - const keys = ["C", "G", "D", "A", "E", "B/C♭", "F♯/G♭", "C♯/D♭", "G♯/A♭", "D♯/E♭", "A♯/B♭", "F"]; + const keys = [ + "C", + "G", + "D", + "A", + "E", + "B/C♭", + "F♯/G♭", + "C♯/D♭", + "G♯/A♭", + "D♯/E♭", + "A♯/B♭", + "F" + ]; wheelnav.cssMode = true; @@ -3792,7 +3813,7 @@ const piemenuKey = (activity) => { activity.storage.KeySignatureEnv = activity.KeySignatureEnv; }; - const __setupActionKey = function (i) { + const __setupActionKey = (i) => { keyNameWheel.navItems[i].navigateFunction = function () { for (let j = 0; j < keys2.length; j++) { if (Math.floor(j / 2) != i) {