From 5090590ca109e5f48655580267af79a41c6f85b0 Mon Sep 17 00:00:00 2001 From: joshunrau Date: Tue, 16 Jun 2026 20:30:36 -0400 Subject: [PATCH 1/6] update odc packages to v2 --- package.json | 6 +++--- pnpm-lock.yaml | 34 +++++++++++++++++----------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 64a78ce..a2149ea 100644 --- a/package.json +++ b/package.json @@ -11,14 +11,14 @@ "prepare": "husky" }, "dependencies": { - "@opendatacapture/runtime-v1": "^1.16.4" + "@opendatacapture/runtime-v1": "^2.0.0" }, "devDependencies": { "@douglasneuroinformatics/eslint-config": "^6.0.0", "@douglasneuroinformatics/prettier-config": "^0.3.0", "@douglasneuroinformatics/tsconfig": "^2.0.0", - "@opendatacapture/instrument-guidelines": "^1.16.4", - "@opendatacapture/serve-instrument": "^1.16.4", + "@opendatacapture/instrument-guidelines": "^2.0.0", + "@opendatacapture/serve-instrument": "^2.0.0", "@types/node": "^22.x", "eslint": "^9.22.0", "husky": "^9.1.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 944e4ad..57f2134 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,8 +8,8 @@ importers: .: dependencies: '@opendatacapture/runtime-v1': - specifier: ^1.16.4 - version: 1.16.4 + specifier: ^2.0.0 + version: 2.0.0 devDependencies: '@douglasneuroinformatics/eslint-config': specifier: ^6.0.0 @@ -21,11 +21,11 @@ importers: specifier: ^2.0.0 version: 2.0.0(typescript@6.0.3) '@opendatacapture/instrument-guidelines': - specifier: ^1.16.4 - version: 1.16.4 + specifier: ^2.0.0 + version: 2.0.0 '@opendatacapture/serve-instrument': - specifier: ^1.16.4 - version: 1.16.4(@opendatacapture/runtime-v1@1.16.4) + specifier: ^2.0.0 + version: 2.0.0(@opendatacapture/runtime-v1@2.0.0) '@types/node': specifier: ^22.x version: 22.19.0 @@ -349,21 +349,21 @@ packages: { integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== } engines: { node: '>= 8' } - '@opendatacapture/instrument-guidelines@1.16.4': + '@opendatacapture/instrument-guidelines@2.0.0': resolution: - { integrity: sha512-si0hUC+PF86bw66jtTuw/VubvOlujTg4DSFJGd1aQRmPr2Pqn4UebU1pBTECRSQT6GD1liUvoXcwjUBdqBkUrQ== } + { integrity: sha512-YkqIISuNHW3WOoA1Fqax5GUTg4imjhLlZvZkMaVj7ER88FATVmaCf1kYZKPVF0mdY3ty8XkOfjZJSI3BCbShPw== } hasBin: true - '@opendatacapture/runtime-v1@1.16.4': + '@opendatacapture/runtime-v1@2.0.0': resolution: - { integrity: sha512-uvpeQ8LUDIXDq+zi0YXqkTWjLHJoOQaiXwJ4piBHD2JjRr0bV+ASEfwHxoyNKPT0aqNPsKvl6HWgifCXs1R+fA== } + { integrity: sha512-A1H+3dSgGgoPJhhry853qHfXKX6RGDhs6Ev8ZcH16kUZwZmzJFmKteoB11/6OJRaSkdHeQ/H5NfRfsP1Mc6O4w== } - '@opendatacapture/serve-instrument@1.16.4': + '@opendatacapture/serve-instrument@2.0.0': resolution: - { integrity: sha512-hB9bLLVJ1yf18KVott4CUoZhkZGHQ5+RGtdmjwB3oMbN5jXaGNiOC+/LM1fZ6b/VMpdAhhweR6qZRJVM0uwo0Q== } + { integrity: sha512-fuxZryinbHOZwaFowi38mx3cWhmhrceSru0n3rbOC1hlcWGrbUZE4JHa6b1KATO4MuKE/yX5AIdszMwgoni5kQ== } hasBin: true peerDependencies: - '@opendatacapture/runtime-v1': 1.16.4 + '@opendatacapture/runtime-v1': 2.0.0 '@pkgr/core@0.2.9': resolution: @@ -2131,13 +2131,13 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.19.1 - '@opendatacapture/instrument-guidelines@1.16.4': {} + '@opendatacapture/instrument-guidelines@2.0.0': {} - '@opendatacapture/runtime-v1@1.16.4': {} + '@opendatacapture/runtime-v1@2.0.0': {} - '@opendatacapture/serve-instrument@1.16.4(@opendatacapture/runtime-v1@1.16.4)': + '@opendatacapture/serve-instrument@2.0.0(@opendatacapture/runtime-v1@2.0.0)': dependencies: - '@opendatacapture/runtime-v1': 1.16.4 + '@opendatacapture/runtime-v1': 2.0.0 chalk: 5.6.2 commander: 12.1.0 esbuild: 0.23.1 From af7db91d401a800f585f535318a93ce21dcdb771 Mon Sep 17 00:00:00 2001 From: joshunrau Date: Tue, 16 Jun 2026 20:32:21 -0400 Subject: [PATCH 2/6] add defaultFullscreen to all existing tmb tasks --- lib/interactive/TMB_DIGIT_SYMBOL_MATCHING/index.ts | 1 + lib/interactive/TMB_EMOTION_RECOGNITION/index.ts | 1 + lib/interactive/TMB_MATRIX_REASONING/index.ts | 1 + lib/interactive/TMB_MOT/index.ts | 1 + lib/interactive/TMB_SIMPLE_RT/index.ts | 2 ++ lib/interactive/TMB_VISUAL_PA_STUDY/index.ts | 2 ++ lib/interactive/TMB_VISUAL_PA_TEST/index.ts | 2 ++ 7 files changed, 10 insertions(+) diff --git a/lib/interactive/TMB_DIGIT_SYMBOL_MATCHING/index.ts b/lib/interactive/TMB_DIGIT_SYMBOL_MATCHING/index.ts index d6572b1..f703aa8 100644 --- a/lib/interactive/TMB_DIGIT_SYMBOL_MATCHING/index.ts +++ b/lib/interactive/TMB_DIGIT_SYMBOL_MATCHING/index.ts @@ -109,6 +109,7 @@ export default defineInstrument({ html, render, staticAssets, + defaultFullscreen: true, enableLanguageLock: true, enableLanguageSelect: true }, diff --git a/lib/interactive/TMB_EMOTION_RECOGNITION/index.ts b/lib/interactive/TMB_EMOTION_RECOGNITION/index.ts index 6944f24..ec356d4 100644 --- a/lib/interactive/TMB_EMOTION_RECOGNITION/index.ts +++ b/lib/interactive/TMB_EMOTION_RECOGNITION/index.ts @@ -177,6 +177,7 @@ export default defineInstrument({ name: 'TMB_EMOTION_RECOGNITION' }, content: { + defaultFullscreen: true, meta: { charset: 'UTF-8', copyright: '2023 The Many Brains Project, Inc. and McLean Hospital LGPLv3', diff --git a/lib/interactive/TMB_MATRIX_REASONING/index.ts b/lib/interactive/TMB_MATRIX_REASONING/index.ts index 4ddaa8d..cff7afe 100644 --- a/lib/interactive/TMB_MATRIX_REASONING/index.ts +++ b/lib/interactive/TMB_MATRIX_REASONING/index.ts @@ -515,6 +515,7 @@ export default defineInstrument({ name: 'TMB_MATRIX_REASONING' }, content: { + defaultFullscreen: true, meta: { charset: 'UTF-8', copyright: '2023 The Many Brains Project, Inc. and McLean Hospital LGPLv3', diff --git a/lib/interactive/TMB_MOT/index.ts b/lib/interactive/TMB_MOT/index.ts index c76eec4..aa9953a 100644 --- a/lib/interactive/TMB_MOT/index.ts +++ b/lib/interactive/TMB_MOT/index.ts @@ -47,6 +47,7 @@ export default defineInstrument({ render, html, staticAssets, + defaultFullscreen: true, enableLanguageLock: true, enableLanguageSelect: true }, diff --git a/lib/interactive/TMB_SIMPLE_RT/index.ts b/lib/interactive/TMB_SIMPLE_RT/index.ts index c400659..d2253e5 100644 --- a/lib/interactive/TMB_SIMPLE_RT/index.ts +++ b/lib/interactive/TMB_SIMPLE_RT/index.ts @@ -42,6 +42,8 @@ export default defineInstrument({ html, render, staticAssets, + defaultFullscreen: true, + enableLanguageLock: true, enableLanguageSelect: true }, clientDetails: { diff --git a/lib/interactive/TMB_VISUAL_PA_STUDY/index.ts b/lib/interactive/TMB_VISUAL_PA_STUDY/index.ts index 4a62aa2..5c1ff36 100644 --- a/lib/interactive/TMB_VISUAL_PA_STUDY/index.ts +++ b/lib/interactive/TMB_VISUAL_PA_STUDY/index.ts @@ -339,6 +339,8 @@ export default defineInstrument({ '/images/underwater8.jpg': underwater8Img, '/VisualPAstudyInput.txt': `data:text/plain,${encodeURIComponent(studyInput)}` }, + defaultFullscreen: true, + enableLanguageLock: true, enableLanguageSelect: true }, clientDetails: { diff --git a/lib/interactive/TMB_VISUAL_PA_TEST/index.ts b/lib/interactive/TMB_VISUAL_PA_TEST/index.ts index afcce24..d5b32e1 100644 --- a/lib/interactive/TMB_VISUAL_PA_TEST/index.ts +++ b/lib/interactive/TMB_VISUAL_PA_TEST/index.ts @@ -339,6 +339,8 @@ export default defineInstrument({ '/images/underwater8.jpg': underwater8Img, '/VisualPAtestInput.txt': `data:text/plain,${encodeURIComponent(studyInput)}` }, + defaultFullscreen: true, + enableLanguageLock: true, enableLanguageSelect: true }, clientDetails: { From b4d79538b9588842ab1f6d9262c3c7c7a6469ee5 Mon Sep 17 00:00:00 2001 From: joshunrau Date: Tue, 16 Jun 2026 20:32:42 -0400 Subject: [PATCH 3/6] add TMB_FLANKER_ATTENTION --- .../TestHelper.v1.Oct23.js | 913 ++++ .../TestMyBrain.12.18.min.js | 4129 +++++++++++++++++ .../chooseInput.v1.Feb24.js | 265 ++ .../TMB_FLANKER_ATTENTION/fingerLeft.png | Bin 0 -> 6752 bytes .../TMB_FLANKER_ATTENTION/fingerRight.png | Bin 0 -> 6456 bytes .../TMB_FLANKER_ATTENTION/fingerUp.png | Bin 0 -> 6436 bytes lib/interactive/TMB_FLANKER_ATTENTION/font.ts | 5 + .../fonts/Inconsolata-Regular.ttf | Bin 0 -> 98540 bytes .../TMB_FLANKER_ATTENTION/fragment.html | 19 + .../TMB_FLANKER_ATTENTION/index.ts | 157 + .../TMB_FLANKER_ATTENTION/leftButton.png | Bin 0 -> 2060 bytes .../TMB_FLANKER_ATTENTION/pressM_icon.png | Bin 0 -> 13454 bytes .../TMB_FLANKER_ATTENTION/pressX_icon.png | Bin 0 -> 13466 bytes .../TMB_FLANKER_ATTENTION/render.d.ts | 1 + .../TMB_FLANKER_ATTENTION/render.js | 732 +++ .../TMB_FLANKER_ATTENTION/rightButton.png | Bin 0 -> 1993 bytes .../TMB_FLANKER_ATTENTION/styles.css | 160 + .../TMB_FLANKER_ATTENTION/translator.ts | 182 + 18 files changed, 6563 insertions(+) create mode 100644 lib/interactive/TMB_FLANKER_ATTENTION/TestHelper.v1.Oct23.js create mode 100644 lib/interactive/TMB_FLANKER_ATTENTION/TestMyBrain.12.18.min.js create mode 100644 lib/interactive/TMB_FLANKER_ATTENTION/chooseInput.v1.Feb24.js create mode 100644 lib/interactive/TMB_FLANKER_ATTENTION/fingerLeft.png create mode 100644 lib/interactive/TMB_FLANKER_ATTENTION/fingerRight.png create mode 100644 lib/interactive/TMB_FLANKER_ATTENTION/fingerUp.png create mode 100644 lib/interactive/TMB_FLANKER_ATTENTION/font.ts create mode 100644 lib/interactive/TMB_FLANKER_ATTENTION/fonts/Inconsolata-Regular.ttf create mode 100644 lib/interactive/TMB_FLANKER_ATTENTION/fragment.html create mode 100644 lib/interactive/TMB_FLANKER_ATTENTION/index.ts create mode 100644 lib/interactive/TMB_FLANKER_ATTENTION/leftButton.png create mode 100644 lib/interactive/TMB_FLANKER_ATTENTION/pressM_icon.png create mode 100644 lib/interactive/TMB_FLANKER_ATTENTION/pressX_icon.png create mode 100644 lib/interactive/TMB_FLANKER_ATTENTION/render.d.ts create mode 100644 lib/interactive/TMB_FLANKER_ATTENTION/render.js create mode 100644 lib/interactive/TMB_FLANKER_ATTENTION/rightButton.png create mode 100644 lib/interactive/TMB_FLANKER_ATTENTION/styles.css create mode 100644 lib/interactive/TMB_FLANKER_ATTENTION/translator.ts diff --git a/lib/interactive/TMB_FLANKER_ATTENTION/TestHelper.v1.Oct23.js b/lib/interactive/TMB_FLANKER_ATTENTION/TestHelper.v1.Oct23.js new file mode 100644 index 0000000..977a6b3 --- /dev/null +++ b/lib/interactive/TMB_FLANKER_ATTENTION/TestHelper.v1.Oct23.js @@ -0,0 +1,913 @@ +/* eslint-disable */ + +/* + + Copyright 2023 The Many Brains Project, Inc. and McLean Hospital. + + This code is made available under a GNU Lesser General Public License 3.0 + (LGPLv3). + https://www.gnu.org/licenses/lgpl-3.0.html. + + Author: Paolo Martini, Roger Strong + Last updated: 10.19.2023 + Version: TestHelper.v1.Oct23 + + */ + +function debounce(func, wait, immediate) { + /* + Returns a function, that, as long as it continues to be invoked, + will not be triggered. The function will be called after it stops + being invoked for `wait` milliseconds. If `immediate` is passed, + the function is triggered on the leading edge, instead of the trailing. + + Usage: + + var resizeHandler = debounce(function() { your code here }, 100); + window.addEventListener('resize', resizeHandler); + + N.B. The event is passed to the returned function as arguments[0] + */ + + let timeout; + return function () { + const args = arguments, + context = this; + const later = function () { + timeout = null; + if (!immediate) { + func.apply(context, args); + } + }; + const callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) { + func.apply(context, args); + } + }; +} + +function disableSelect() { + const s = document.body.style; + + if (typeof s.webkitUserSelect !== 'undefined') s.webkitUserSelect = 'none'; + else if (typeof s.MozUserSelect !== 'undefined') s.MozUserSelect = 'none'; + else if (typeof s.msUserSelect !== 'undefined') s.msUserSelect = 'none'; + else if (typeof s.oUserSelect !== 'undefined') s.oUserSelect = 'none'; + else if (typeof s.userSelect !== 'undefined') s.userSelect = 'none'; + else if (typeof document.onselectstart !== 'undefined') + document.onselectstart = function () { + return false; + }; + + // disable 'save image' popup on iPhone + if (s.webkitTouchCallout !== undefined) s.webkitTouchCallout = 'none'; +} + +tmbUI.getInput = function () { + let downDebounce = false, + errorMessage = '', + highlightEl, + i, + timeStamp = now(), + upDebounce = true, + validUpEventTypes = []; + + // parse the tmbUI object + for (const key in tmbUI) { + // filter out prototype properties + if (tmbUI.hasOwnProperty(key)) { + switch (key) { + case 'downTimestamp': + tmbUI.downTimestamp = 0; + break; + case 'dwell': + tmbUI.dwell = 0; + break; + case 'getInput': + break; + // do we want to highlight the element + // the user responds to? + case 'highlight': + // must be empty string or valid css class + if (tmbUI.highlight !== '') { + const found = [].slice.call(document.styleSheets).some(function (sheet) { + return [].slice.call(sheet.cssRules).some(function (rule) { + return rule.selectorText === '.' + tmbUI.highlight; + }); + }); + if (!found) { + errorMessage += "'highlight' must be " + 'empty string or valid CSS class. '; + } + } + break; + case 'message': + tmbUI.message = ''; + break; + case 'onreadyUI': + break; + case 'response': + tmbUI.response = ''; + break; + case 'rt': + tmbUI.rt = 0; + break; + case 'status': + tmbUI.status = ''; + break; + // listening timeout in ms + case 'timeout': + // minimum timeout is 150 ms + if (tmbUI.timeout < 150) errorMessage += 'Timeout is ' + tmbUI.timeout + ' ms, ' + 'must be > 150 ms. '; + break; + // function has not raised readyUI event yet + case 'timeoutRef': + // called this function while still processing + if (tmbUI.timeoutRef !== 0) { + tmbUI.message += "'getInput' called again while " + 'still busy. '; + return false; + } + break; + // ids of elements to attach listeners to, + // or corresponding to keys + case 'UIelements': + // accept single argument not as array + if (!(tmbUI.UIelements instanceof Array)) { + tmbUI.UIelements = [tmbUI.UIelements]; + } + // must be DOM elements + for (i = 0; i < tmbUI.UIelements.length; i++) { + if (!getID(tmbUI.UIelements[i])) { + errorMessage += "'" + tmbUI.UIelements[i] + "' is not a valid element. "; + } + } + break; + // keys, clicks or taps + case 'UIevents': + // must specify input events + if (tmbUI.UIevents.length === 0) { + errorMessage += 'Must specify UIevents: ' + "'keys', 'clicks' or 'taps'. "; + } + // accept single argument not as array + if (!(tmbUI.UIevents instanceof Array)) { + tmbUI.UIevents = [tmbUI.UIevents]; + } + // veto invalid events + for (i = 0; i < tmbUI.UIevents.length; i++) { + if (!['clicks', 'keys', 'taps'].includes(tmbUI.UIevents[i])) { + errorMessage += "'" + tmbUI.UIevents[i] + "' is not a valid event. "; + } + } + // are touch events available? + if (tmbUI.UIevents.includes('taps') && !hasTouch && !hasPointer) { + errorMessage += "'taps' is not a valid event. "; + } + break; + // valid keyboard keys + case 'UIkeys': + // accept single argument not as array + if (!(tmbUI.UIkeys instanceof Array)) { + tmbUI.UIkeys = [tmbUI.UIkeys]; + } + // keys must be valid keycodes + for (i = 0; i < tmbUI.UIkeys.length; i++) { + if (!keyboardCodes[tmbUI.UIkeys[i]]) { + errorMessage += "'" + tmbUI.UIkeys[i] + "' is not a valid keyboard code. "; + } + } + break; + case 'upTimestamp': + tmbUI.upTimestamp = 0; + break; + default: + errorMessage += "Invalid parameter '" + key + "'. "; + } + } + } + + // need event "keys" for valid keys + if (tmbUI.UIkeys.length > 0 && !tmbUI.UIevents.includes('keys')) + errorMessage += "Need 'keys' in UIevents for valid keys. "; + // valid keys and elements must be same number + if (tmbUI.UIkeys.length && tmbUI.UIelements.length && tmbUI.UIelements.length < tmbUI.UIkeys.length) + errorMessage += 'Invalid number of UIelements, ' + "more 'keys' than 'UIelements'. "; + // elements must be specified for highlighting + if (tmbUI.UIelements.length === 0 && tmbUI.highlight !== '') errorMessage += 'No elements to highlight. '; + + // error handler + if (errorMessage) { + tmbUI.status = 'error'; + tmbUI.message = errorMessage; + + // fire readyUI event + const readyUI = new CustomEvent('readyUI'); + document.addEventListener('readyUI', tmbUI.onreadyUI, true); + document.dispatchEvent(readyUI); + document.removeEventListener('readyUI', tmbUI.onreadyUI, true); + + return false; + } + + // down event listener + function downResponseHandler(e) { + let r, responseEvent; + + responseEvent = e; //|| window.event; + + // prevent bubbling + if (responseEvent.cancelable) responseEvent.preventDefault(); + responseEvent.stopPropagation(); + + // process input only on first hit (i.e. debounce) + if (downDebounce === false) { + // process keyboard input for keys + if (tmbUI.UIevents.includes('keys') && responseEvent.type === 'keydown') { + r = responseEvent.charCode || responseEvent.keyCode; + + // key must be valid + if (tmbUI.UIkeys.includes(r) || tmbUI.UIkeys.length === 0) { + // determine response identity + tmbUI.response = codeToKey(r); + + // determine the element to highlight + if (tmbUI.highlight !== '' && tmbUI.UIkeys.length > 0) + highlightEl = getID(tmbUI.UIelements[tmbUI.UIkeys.indexOf(r)]); + + // set the debounce flags: + // - down event detected and debounced, so we don't record + // the same down event multiple times, e.g. on autorepeat + // - up event not yet detected + downDebounce = true; + upDebounce = false; + validUpEventTypes = ['keyup']; + } + } + // process mouse and pointer input for clicks + if (tmbUI.UIevents.includes('clicks')) { + if ( + responseEvent.type === 'mousedown' || + (responseEvent.type === 'pointerdown' && responseEvent.pointerType === 'mouse') || + (responseEvent.type === 'MSPointerDown' && responseEvent.pointerType === responseEvent.MSPOINTER_TYPE_MOUSE) + ) { + if (tmbUI.UIelements.length === 0) tmbUI.response = 'document'; + else tmbUI.response = responseEvent.target ? responseEvent.target.id : responseEvent.srcElement.id; + + if (tmbUI.highlight !== '') highlightEl = getID(tmbUI.response); + + downDebounce = true; + upDebounce = false; + validUpEventTypes = ['mouseup', 'pointerup-mouse', 'MSPointerUp-mouse']; + } + } + // process touch and pointer input for taps + if (tmbUI.UIevents.includes('taps')) { + if ( + responseEvent.type === 'touchstart' || + (responseEvent.type === 'pointerdown' && + (responseEvent.pointerType === 'touch' || responseEvent.pointerType === 'pen')) || + (responseEvent.type === 'MSPointerDown' && + (responseEvent.pointerType === responseEvent.MSPOINTER_TYPE_TOUCH || + responseEvent.pointerType === responseEvent.MSPOINTER_TYPE_PEN)) + ) { + if (tmbUI.UIelements.length === 0) tmbUI.response = 'document'; + else tmbUI.response = responseEvent.target ? responseEvent.target.id : responseEvent.srcElement.id; + + if (tmbUI.highlight !== '') highlightEl = getID(tmbUI.response); + + downDebounce = true; + upDebounce = false; + validUpEventTypes = ['touchend', 'pointerup-touch', 'pointerup-pen', 'MSPointerUp-touch', 'MSPointerUp-pen']; + } + } + + // if valid response, compute rt, + // clear timeout and highlight target if required + if (downDebounce === true) { + tmbUI.rt = timeStamp; + timeStamp = now(); + tmbUI.rt = timeStamp - tmbUI.rt; + tmbUI.rt = tmbUI.rt.round(2); + tmbUI.downTimestamp = timeStamp; + + if (tmbUI.timeoutRef) clearTimeout(tmbUI.timeoutRef); + + if (highlightEl) { + // HTML elements + if (['button', 'div', 'img', 'p', 'span'].includes(highlightEl.tagName.toLowerCase())) { + highlightEl.classList.add(tmbUI.highlight); + } + // SVG elements + else if ( + ['circle', 'ellipse', 'image', 'line', 'path', 'polygon', 'polyline', 'rect', 'text'].includes( + highlightEl.tagName.toLowerCase() + ) + ) { + highlightEl.classList.add(tmbUI.highlight); + } + } + } + } + } + + // up event listener + function upResponseHandler(e) { + let responseEvent; + const MSetypes = ['', '', 'touch', 'pen', 'mouse']; + let upType; + + responseEvent = e; // || window.event; + + // prevent bubbling + if (responseEvent.cancelable) responseEvent.preventDefault(); + responseEvent.stopPropagation(); + + // determine the up-event type + upType = responseEvent.type; + if (upType === 'pointerup') upType += '-' + responseEvent.pointerType; + else if (upType === 'MSPointerUp') upType += '-' + MSetypes[responseEvent.pointerType]; + + // process up-event only if preceded by valid down-event of same type + if (downDebounce === true && upDebounce === false && validUpEventTypes.includes(upType)) { + // compute dwell time + tmbUI.upTimestamp = now(); + tmbUI.dwell = tmbUI.upTimestamp - timeStamp; + tmbUI.dwell = tmbUI.dwell.round(2); + + // status returns event type + tmbUI.status = upType; + + // don't allow another up response until + // a valid down response has been made + upDebounce = true; + + removeHandlers(); + returnHandler(); + } + } + + // installs appropriate listeners depending on input type + function installHandlers() { + // listen to keyboard events + if (tmbUI.UIevents.includes('keys')) { + document.addEventListener('keydown', downResponseHandler, true); + document.addEventListener('keyup', upResponseHandler, true); + } + // listen to mouse events (mouse, touchpad and pen/stylus) + if (tmbUI.UIevents.includes('clicks')) { + if (tmbUI.UIelements.length === 0) { + if (window.PointerEvent) { + document.body.addEventListener('pointerdown', downResponseHandler, true); + document.body.addEventListener('pointerup', upResponseHandler, true); + } else if (window.MSPointerEvent) // IE10 + { + document.body.addEventListener('MSPointerDown', downResponseHandler, true); + document.body.addEventListener('MSPointerUp', upResponseHandler, true); + } else { + document.addEventListener('mousedown', downResponseHandler, true); + document.addEventListener('mouseup', upResponseHandler, true); + } + } else { + // we install the up handler on the document, so that an up + // event can be detected even on an element different from the + // target of the preceding down event + document.addEventListener('mouseup', upResponseHandler, true); + if (window.PointerEvent) document.addEventListener('pointerup', upResponseHandler, true); + else if (window.MSPointerEvent) document.addEventListener('MSPointerUp', upResponseHandler, true); // IE10 + + for (i = 0; i < tmbUI.UIelements.length; i++) { + if (window.PointerEvent) { + getID(tmbUI.UIelements[i]).addEventListener('pointerdown', downResponseHandler, true); + getID(tmbUI.UIelements[i]).addEventListener('pointerup', upResponseHandler, true); + } else if (window.MSPointerEvent) // IE10 + { + getID(tmbUI.UIelements[i]).addEventListener('MSPointerDown', downResponseHandler, true); + getID(tmbUI.UIelements[i]).addEventListener('MSPointerUp', upResponseHandler, true); + } else { + getID(tmbUI.UIelements[i]).addEventListener('mousedown', downResponseHandler, true); + getID(tmbUI.UIelements[i]).addEventListener('mouseup', upResponseHandler, true); + } + } + } + } + // listen to touch events + if (tmbUI.UIevents.includes('taps')) { + if (tmbUI.UIelements.length === 0) { + if (window.PointerEvent && !tmbUI.UIevents.includes('clicks')) { + document.addEventListener('pointerdown', downResponseHandler, true); + document.addEventListener('pointerup', upResponseHandler, true); + } else if (window.MSPointerEvent && !tmbUI.UIevents.includes('clicks')) // IE10 + { + document.addEventListener('MSPointerDown', downResponseHandler, true); + document.addEventListener('MSPointerUp', upResponseHandler, true); + } else if (hasTouch && !hasPointer) { + document.addEventListener('touchstart', downResponseHandler, true); + document.addEventListener('touchend', upResponseHandler, true); + } + } else { + if (window.PointerEvent) document.addEventListener('pointerup', upResponseHandler, true); + else if (window.MSPointerEvent) document.addEventListener('MSPointerUp', upResponseHandler, true); + if (hasTouch) document.addEventListener('touchend', upResponseHandler, true); + + for (i = 0; i < tmbUI.UIelements.length; i++) { + if (window.PointerEvent && !tmbUI.UIevents.includes('clicks')) { + getID(tmbUI.UIelements[i]).addEventListener('pointerdown', downResponseHandler, true); + getID(tmbUI.UIelements[i]).addEventListener('pointerup', upResponseHandler, true); + } else if (window.MSPointerEvent && !tmbUI.UIevents.includes('clicks')) // IE10 + { + getID(tmbUI.UIelements[i]).addEventListener('MSPointerDown', downResponseHandler, true); + getID(tmbUI.UIelements[i]).addEventListener('MSPointerUp', upResponseHandler, true); + } else if (hasTouch && !hasPointer) { + getID(tmbUI.UIelements[i]).addEventListener('touchstart', downResponseHandler, true); + getID(tmbUI.UIelements[i]).addEventListener('touchend', upResponseHandler, true); + } + } + } + } + } + + // removes installed listeners + function removeHandlers() { + if (tmbUI.UIevents.includes('keys')) { + document.removeEventListener('keydown', downResponseHandler, true); + document.removeEventListener('keyup', upResponseHandler, true); + } + if (tmbUI.UIevents.includes('clicks')) { + if (tmbUI.UIelements.length === 0) { + if (window.PointerEvent) { + document.body.removeEventListener('pointerdown', downResponseHandler, true); + document.body.removeEventListener('pointerup', upResponseHandler, true); + } else if (window.MSPointerEvent) // IE10 + { + document.body.removeEventListener('MSPointerDown', downResponseHandler, true); + document.body.removeEventListener('MSPointerUp', upResponseHandler, true); + } else { + document.removeEventListener('mousedown', downResponseHandler, true); + document.removeEventListener('mouseup', upResponseHandler, true); + } + } else { + // remove up handlers on document body + if (window.PointerEvent) document.removeEventListener('pointerup', upResponseHandler, true); + else if (window.MSPointerEvent) document.removeEventListener('MSPointerUp', upResponseHandler, true); + document.removeEventListener('mouseup', upResponseHandler, true); + + for (i = 0; i < tmbUI.UIelements.length; i++) { + if (window.PointerEvent) { + getID(tmbUI.UIelements[i]).removeEventListener('pointerdown', downResponseHandler, true); + getID(tmbUI.UIelements[i]).removeEventListener('pointerup', upResponseHandler, true); + } else if (window.MSPointerEvent) // IE10 + { + getID(tmbUI.UIelements[i]).removeEventListener('MSPointerDown', downResponseHandler, true); + getID(tmbUI.UIelements[i]).removeEventListener('MSPointerUp', upResponseHandler, true); + } else { + getID(tmbUI.UIelements[i]).removeEventListener('mousedown', downResponseHandler, true); + getID(tmbUI.UIelements[i]).removeEventListener('mouseup', upResponseHandler, true); + } + } + } + } + if (tmbUI.UIevents.includes('taps')) { + if (tmbUI.UIelements.length === 0) { + if (window.PointerEvent && !tmbUI.UIevents.includes('clicks')) { + document.removeEventListener('pointerdown', downResponseHandler, true); + document.removeEventListener('pointerup', upResponseHandler, true); + } else if (window.MSPointerEvent && !tmbUI.UIevents.includes('clicks')) // IE10 + { + document.removeEventListener('MSPointerDown', downResponseHandler, true); + document.removeEventListener('MSPointerUp', upResponseHandler, true); + } else if (hasTouch && !hasPointer) { + document.removeEventListener('touchstart', downResponseHandler, true); + document.removeEventListener('touchend', upResponseHandler, true); + } + } else { + if (window.PointerEvent) document.removeEventListener('pointerup', upResponseHandler, true); + else if (window.MSPointerEvent) document.removeEventListener('MSPointerUp', upResponseHandler, true); + if (hasTouch) document.removeEventListener('touchend', upResponseHandler, true); + + for (i = 0; i < tmbUI.UIelements.length; i++) { + if (window.PointerEvent && !tmbUI.UIevents.includes('clicks')) { + getID(tmbUI.UIelements[i]).removeEventListener('pointerdown', downResponseHandler, true); + getID(tmbUI.UIelements[i]).removeEventListener('pointerup', upResponseHandler, true); + } else if (window.MSPointerEvent && !tmbUI.UIevents.includes('clicks')) // IE10 + { + getID(tmbUI.UIelements[i]).removeEventListener('MSPointerDown', downResponseHandler, true); + getID(tmbUI.UIelements[i]).removeEventListener('MSPointerUp', upResponseHandler, true); + } else if (hasTouch && !hasPointer) { + getID(tmbUI.UIelements[i]).removeEventListener('touchstart', downResponseHandler, true); + getID(tmbUI.UIelements[i]).removeEventListener('touchend', upResponseHandler, true); + } + } + } + } + } + + function returnHandler() { + // clear the timeout trap + if (tmbUI.timeoutRef) clearTimeout(tmbUI.timeoutRef); + + // if we have highlighted something, wait to switch it off + // then fire readyUI event + if (highlightEl) { + setTimeout(function () { + if (['button', 'div', 'img', 'p', 'span'].includes(highlightEl.tagName.toLowerCase())) { + highlightEl.classList.remove(tmbUI.highlight); + } else if ( + ['circle', 'ellipse', 'image', 'line', 'path', 'polygon', 'polyline', 'rect', 'text'].includes( + highlightEl.tagName.toLowerCase() + ) + ) { + highlightEl.classList.remove(tmbUI.highlight); + } + + // zero timeoutRef, so we can listen to a new response + tmbUI.timeoutRef = 0; + + // fire readyUI event + const readyUI = new CustomEvent('readyUI'); + document.addEventListener('readyUI', tmbUI.onreadyUI, true); + document.dispatchEvent(readyUI); + document.removeEventListener('readyUI', tmbUI.onreadyUI, true); + }, 250); + } else { + // zero timeoutRef, so we can listen to a new response + tmbUI.timeoutRef = 0; + + const readyUI = new CustomEvent('readyUI'); + document.addEventListener('readyUI', tmbUI.onreadyUI, true); + document.dispatchEvent(readyUI); + document.removeEventListener('readyUI', tmbUI.onreadyUI, true); + } + } + + // set a timeout trap + // N.B. we start listening for a new response only when timeoutRef === 0 + tmbUI.timeoutRef = setTimeout(function () { + tmbUI.status = 'timeout'; + tmbUI.message += 'Timeout: no response in ' + tmbUI.timeout + ' ms.'; + removeHandlers(); + returnHandler(); + }, tmbUI.timeout); + + // finally, start listening! + installHandlers(); + + return false; +}; + +function mb_strwidth(s) { + // Returns the length of string 's', taking into account + // full- and half-width characters, e.g. in Asian and Latin alphabets + // Equivalent to homonymous PHP function + + let l = 0; + const chars = Array.from(s); + for (const char of chars) { + const c = char.codePointAt(0); + if (c === undefined) continue; + + if (0x1100 <= c && c <= 0x115f) { + l += 2; + } else if (0x11a3 <= c && c <= 0x11a7) { + l += 2; + } else if (0x11fa <= c && c <= 0x11ff) { + l += 2; + } else if (0x2329 <= c && c <= 0x232a) { + l += 2; + } else if (0x2e80 <= c && c <= 0x2e99) { + l += 2; + } else if (0x2e9b <= c && c <= 0x2ef3) { + l += 2; + } else if (0x2f00 <= c && c <= 0x2fd5) { + l += 2; + } else if (0x2ff0 <= c && c <= 0x2ffb) { + l += 2; + } else if (0x3000 <= c && c <= 0x303e) { + l += 2; + } else if (0x3041 <= c && c <= 0x3096) { + l += 2; + } else if (0x3099 <= c && c <= 0x30ff) { + l += 2; + } else if (0x3105 <= c && c <= 0x312d) { + l += 2; + } else if (0x3131 <= c && c <= 0x318e) { + l += 2; + } else if (0x3190 <= c && c <= 0x31ba) { + l += 2; + } else if (0x31c0 <= c && c <= 0x31e3) { + l += 2; + } else if (0x31f0 <= c && c <= 0x321e) { + l += 2; + } else if (0x3220 <= c && c <= 0x3247) { + l += 2; + } else if (0x3250 <= c && c <= 0x32fe) { + l += 2; + } else if (0x3300 <= c && c <= 0x4dbf) { + l += 2; + } else if (0x4e00 <= c && c <= 0xa48c) { + l += 2; + } else if (0xa490 <= c && c <= 0xa4c6) { + l += 2; + } else if (0xa960 <= c && c <= 0xa97c) { + l += 2; + } else if (0xac00 <= c && c <= 0xd7a3) { + l += 2; + } else if (0xd7b0 <= c && c <= 0xd7c6) { + l += 2; + } else if (0xd7cb <= c && c <= 0xd7fb) { + l += 2; + } else if (0xf900 <= c && c <= 0xfaff) { + l += 2; + } else if (0xfe10 <= c && c <= 0xfe19) { + l += 2; + } else if (0xfe30 <= c && c <= 0xfe52) { + l += 2; + } else if (0xfe54 <= c && c <= 0xfe66) { + l += 2; + } else if (0xfe68 <= c && c <= 0xfe6b) { + l += 2; + } else if (0xff01 <= c && c <= 0xff60) { + l += 2; + } else if (0xffe0 <= c && c <= 0xffe6) { + l += 2; + } else if (0x1b000 <= c && c <= 0x1b001) { + l += 2; + } else if (0x1f200 <= c && c <= 0x1f202) { + l += 2; + } else if (0x1f210 <= c && c <= 0x1f23a) { + l += 2; + } else if (0x1f240 <= c && c <= 0x1f248) { + l += 2; + } else if (0x1f250 <= c && c <= 0x1f251) { + l += 2; + } else if (0x20000 <= c && c <= 0x2fffd) { + l += 2; + } else if (0x30000 <= c && c <= 0x3fffd) { + l += 2; + } else { + l += 1; + } + } + return l; +} + +function showAlert(alertMessage, alertButtonText, action, fontSize, timeout, useSpaceBar, hideCursor) { + let alertBox, alertButton, alertContent, alertSpaceBar, bodyCursorStyle, buttonCursorStyle; + + // save the current body cursor style and set the required one + bodyCursorStyle = window.getComputedStyle(document.body)['cursor']; + if (!hideCursor && bodyCursorStyle === 'none') document.body.style.cursor = 'auto'; + else if (hideCursor && bodyCursorStyle !== 'none') document.body.style.cursor = 'none'; + + // create the container div if necessary + if (!(alertBox = getID('alertBox'))) { + // set sizes to inherit parent's + alertBox = document.createElement('div'); + alertBox.id = 'alertBox'; + alertBox.style.margin = 'auto'; + alertBox.style.height = 'inherit'; //document.body.clientHeight+'px'; + alertBox.style.width = 'inherit'; //document.body.clientWidth+'px'; + alertBox.style.verticalAlign = 'middle'; + alertBox.style.textAlign = 'center'; + document.body.appendChild(alertBox); + } + + // set the required font size + if (fontSize) alertBox.style.fontSize = fontSize; + + // create the message span if necessary, + // then set the message to display + if (!(alertContent = getID('alertContent'))) { + alertContent = document.createElement('span'); + alertContent.id = 'alertContent'; + alertContent.style.margin = 'auto'; + alertContent.style.display = 'inline'; + alertBox.appendChild(alertContent); + } + alertContent.innerHTML = alertMessage; + + // create the button if necessary + if (!(alertButton = getID('alertButton'))) { + alertButton = document.createElement('button'); + alertButton.id = 'alertButton'; + alertButton.className = 'button'; + alertButton.style.margin = 'auto'; + alertButton.style.maxWidth = '100%'; + alertButton.style.lineHeight = '1.5em'; + alertButton.style.textAlign = 'center'; + alertButton.style.fontSize = '1.2em'; + alertButton.style.padding = '0 1ch'; + alertButton.style.display = 'inline'; + alertBox.appendChild(alertButton); + } + // if args contain button text, + // show the button and set the required action for it, + // otherwise hide the button + if (alertButtonText && !useSpaceBar && !timeout) { + // save the current button cursor style and set the required one + buttonCursorStyle = window.getComputedStyle(alertButton)['cursor']; + if (!hideCursor && buttonCursorStyle === 'none') alertButton.style.cursor = 'pointer'; + else if (hideCursor && buttonCursorStyle !== 'none') alertButton.style.cursor = 'none'; + + alertButton.innerHTML = alertButtonText; + alertButton.onclick = function () { + document.body.style.cursor = bodyCursorStyle; + alertButton.style.cursor = buttonCursorStyle; + action(); + }; + alertButton.style.display = 'inline'; + } else alertButton.style.display = 'none'; + + // create the spaceBar span if necessary + if (!(alertSpaceBar = getID('alertSpaceBar'))) { + alertSpaceBar = document.createElement('span'); + alertSpaceBar.id = 'alertSpaceBar'; + alertSpaceBar.style.margin = 'auto'; + alertSpaceBar.style.display = 'inline'; + //alertSpaceBar.style.fontSize = '20px'; + alertBox.appendChild(alertSpaceBar); + } + // if args contain 'useSpaceBar', + // show the spaceBar span and set the required key listener, + // otherwise hide the span + if (useSpaceBar && !timeout) { + // alertSpaceBar.style.width = (mb_strwidth(useSpaceBar) + 3) + 'ch'; + alertSpaceBar.innerHTML = useSpaceBar; + alertSpaceBar.style.display = 'inline'; + + function spaceBarHandler(e) { + const key = e.charCode || e.keyCode; + if (key === 32) { + e.preventDefault(); + e.stopPropagation(); + if (e.type === 'keydown') { + document.removeEventListener('keydown', spaceBarHandler, true); + } else { + document.removeEventListener('keyup', spaceBarHandler, true); + document.body.style.cursor = bodyCursorStyle; + action(); + } + } + } + + document.addEventListener('keydown', spaceBarHandler, true); + document.addEventListener('keyup', spaceBarHandler, true); + } else alertSpaceBar.style.display = 'none'; + + // if args contain a timeout, + // trigger the action automatically when timeout expires + if (timeout) + setTimeout(function () { + document.body.style.cursor = bodyCursorStyle; + action(); + }, timeout); + + // hide everything else except this + showFrame(null); + alertBox.style.display = 'table-cell'; +} + +function setBodyScale(width, height) { + // Fail silently if visualViewport is not supported + if (!('visualViewport' in window)) return; + + // If the dimensions of the desired bounding box aren't specified, + // throw an error. + if (!width || !height) throw new TypeError('setBodyScale: dimensions not specified'); + + // Check if a viewport meta tag exists: if not, we create one. + let viewportMeta = document.getElementsByTagName('meta')['viewport']; + if (!viewportMeta) { + viewportMeta = document.createElement('meta'); + viewportMeta.name = 'viewport'; + viewportMeta.id = 'viewport'; + document.getElementsByTagName('head')[0].appendChild(viewportMeta); + } + + // Initialize the viewport to its ideal dimensions, in case it isn't + viewportMeta.content = 'width=device-width, initial-scale=1, viewport-fit=contain'; + + // initialize the body + const bodyStyle = document.body.style; + bodyStyle.position = 'absolute'; + bodyStyle.width = visualViewport.width + 'px'; + bodyStyle.left = visualViewport.width / 2 + 'px'; + bodyStyle.marginLeft = -visualViewport.width / 2 + 'px'; + bodyStyle.height = visualViewport.height + 'px'; + bodyStyle.top = visualViewport.height / 2 + 'px'; + bodyStyle.marginTop = -visualViewport.height / 2 + 'px'; + bodyStyle.overflow = 'hidden'; + + function bodyScaleHandler() { + // reset the body before resizing + bodyStyle.width = visualViewport.width + 'px'; + bodyStyle.height = visualViewport.height + 'px'; + bodyStyle.left = visualViewport.width / 2 + 'px'; + bodyStyle.top = visualViewport.height / 2 + 'px'; + bodyStyle.marginLeft = -visualViewport.width / 2 + 'px'; + bodyStyle.marginTop = -visualViewport.height / 2 + 'px'; + bodyStyle.overflow = 'hidden'; + bodyStyle.transform = 'scale(1)'; + + // if the body's width is smaller than the desired size, set it to + // the desired size and re-center + if (visualViewport.width < width) { + bodyStyle.width = width + 'px'; + bodyStyle.marginLeft = -width / 2 + 'px'; + } + // if the body's height is smaller than the desired size, set it to + // the desired size and re-center + if (visualViewport.height < height) { + bodyStyle.height = height + 'px'; + bodyStyle.marginTop = -height / 2 + 'px'; + } + // force reflow + document.body.offsetHeight; + + // if the viewport is smaller than the desired bounding box + // (vertically, or horizontally or both), compute the necessary + // scaling and apply to the body + if (visualViewport.width * visualViewport.scale < width || visualViewport.height * visualViewport.scale < height) { + const widthScale = (visualViewport.width * visualViewport.scale) / width; + const heightScale = (visualViewport.height * visualViewport.scale) / height; + + const scale = Math.min(widthScale, heightScale); + bodyStyle.transform = 'scale(' + scale + ')'; + } + document.body.offsetHeight; + + // recenter by adding viewport offset + bodyStyle.left = parseFloat(bodyStyle.left) + visualViewport.pageLeft + 'px'; + bodyStyle.top = parseFloat(bodyStyle.top) + visualViewport.pageTop + 'px'; + document.body.offsetHeight; + } + + // We attach listeners for the resize event to the window and + // to the viewport + // (orientationchange is added for browsers that don't fire a resize + // event on orientation change) + // the resize handler is debounced, so multiple (near-)simultaneous + // events only trigger it once + const resizeHandler = debounce(bodyScaleHandler, 1000); + window.addEventListener('resize', resizeHandler); + visualViewport.addEventListener('resize', resizeHandler); + if ('orientation' in screen) screen.orientation.addEventListener('change', resizeHandler); + else if ('onorientationchange' in window) window.addEventListener('orientationchange', resizeHandler); + + // on first call, set the desired scale + bodyScaleHandler(); +} + +function deviceScan() { + let scan = {}, + userAgent; + + userAgent = navigator.userAgent || navigator.vendor || window.opera; + scan.screenW = screen.width > screen.height ? screen.width : screen.height; + scan.screenH = screen.width < screen.height ? screen.width : screen.height; + scan.touch = + 'ontouchend' in window || + ('maxTouchPoints' in navigator && navigator.maxTouchPoints > 0) || + ('msMaxTouchPoints' in navigator && navigator.msMaxTouchPoints > 0) || + (window.matchMedia && window.matchMedia('(any-pointer: coarse)').matches) || + false; + scan.OS = /windows phone/i.test(userAgent) + ? 'WindowsPhone' + : /Kindle Fire|Silk|KFAPWA|KFSOWI|KFJWA|KFJWI|KFAPWI|KFOT|KFTT|KFTHWI|KFTHWA|KFASWI|KFTBWI|KFMEWI|KFFOWI|KFSAWA|KFSAWI|KFARWI/i.test( + userAgent + ) + ? 'KindleFire' + : /BlackBerry|BB10|PlayBook/i.test(userAgent) + ? 'BlackBerry' + : /MeeGO/i.test(userAgent) + ? 'MeeGO' + : /Bada/i.test(userAgent) + ? 'Bada' + : /Tizen/i.test(userAgent) + ? 'Tizen' + : /android/i.test(userAgent) + ? 'Android' + : /iPad|iPhone|iPod/i.test(userAgent) && !window.MSStream + ? 'iOS' + : /Win/i.test(userAgent) + ? 'Windows' + : /Mac/i.test(userAgent) + ? 'MacOS' + : /Linux|X11/i.test(userAgent) + ? 'Unix' + : 'unknown'; + scan.UTCoffset = new Date().getTimezoneOffset(); + + return scan; +} + +function parseQuery(queryStr) { + const query = {}; + const pairs = (queryStr[0] === '?' ? queryStr.substring(1) : queryStr).split('&'); + if (pairs[0] !== '') { + for (let i = 0; i < pairs.length; i++) { + const pair = pairs[i].split('='); + query[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || ''); + } + } + return query; +} diff --git a/lib/interactive/TMB_FLANKER_ATTENTION/TestMyBrain.12.18.min.js b/lib/interactive/TMB_FLANKER_ATTENTION/TestMyBrain.12.18.min.js new file mode 100644 index 0000000..6616145 --- /dev/null +++ b/lib/interactive/TMB_FLANKER_ATTENTION/TestMyBrain.12.18.min.js @@ -0,0 +1,4129 @@ +/* eslint-disable */ + +/* + Copyright 2022 by the Many Brains Project, Inc. + =============================================== + + This code is made available under a GNU Lesser General Public License 3.0 + (LGPLv3). + https://www.gnu.org/licenses/lgpl-3.0.html. + + The following third party libraries and code are included in TestMyBrain.js + for convenience (copyright and licenses, where applicable, are by their + respective authors and can be found in the code or in the attached web + links): + + - rawdeflate.js at + https://github.com/dankogai/js-deflate + - rawinflate.js at + https://github.com/dankogai/js-deflate + - json2.js at + https://github.com/douglascrockford/JSON-js + - FileSaver.js at + https://github.com/ChenWenBrian/FileSaver.js + - Blob.js at + https://github.com/eligrey/Blob.js + - seedrandom.js at + https://github.com/davidbau/seedrandom/tree/master + - setImmediate.js at + https://github.com/YuzuJS/setImmediate + - requestAnimationFrame and cancelAnimationFrame at + https://github.com/darius/requestAnimationFrame + - atob and btoa at + https://github.com/davidchambers/Base64.js + - Object.create at + https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create + - Object.keys at + https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys + - Function.prototype.bind at + https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind + - Array.isArray at + https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray + - all standard HTML5 array prototype methods at + https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array + + */ + +function getID(e, t) { + return t ? (tmbObjs.elements[e] = tmbObjs.elements[e] || document.getElementById(e)) : document.getElementById(e); +} +function showFrame() { + var e, + t, + n = []; + if (1 === arguments.length && arguments[0] instanceof Array) n = arguments[0]; + else for (t = 0; t < arguments.length; t++) n[t] = arguments[t]; + for ( + tmbObjs.frames.length || (tmbObjs.frames = document.getElementsByTagName('div')), t = tmbObjs.frames.length; + t--; + ) + ((e = n.indexOf(tmbObjs.frames[t].id) > -1 ? 'block' : 'none'), + tmbObjs.frames[t].style.display !== e && (tmbObjs.frames[t].style.display = e)); +} +function showFrameClass() { + var e, + t, + n = []; + if (1 === arguments.length && arguments[0] instanceof Array) n = arguments[0]; + else for (t = 0; t < arguments.length; t++) n[t] = arguments[t]; + for ( + tmbObjs.frames.length || (tmbObjs.frames = document.getElementsByTagName('div')), t = tmbObjs.frames.length; + t--; + ) + ((e = n.indexOf(tmbObjs.frames[t].className) > -1 ? 'block' : 'none'), + tmbObjs.frames[t].style.display !== e && (tmbObjs.frames[t].style.display = e)); +} +function showSlide(e) { + tmbObjs.slides.length || (tmbObjs.slides = document.getElementsByClassName('slide')); + for (var t, n = tmbObjs.slides, r = tmbObjs.slides.length; r--; ) + ((t = n[r].id === e ? 'block' : 'none'), n[r].style.display !== t && (n[r].style.display = t)); +} +function showAlert(e, t, n, r, o) { + var i, a, s; + ((i = getID('alertBox', 1)) || + ((i = document.createElement('div')), + (i.id = 'alertBox'), + (i.style.margin = 'auto'), + (i.style.padding = '5%'), + (i.style.height = '100vh'), + (i.style.width = '100vw'), + (i.style.verticalAlign = 'middle'), + (i.style.textAlign = 'center'), + document.body.appendChild(i), + getID('alertBox', 1)), + r && (i.style.fontSize = r), + (a = getID('alertContent')) || ((a = document.createElement('span')), (a.id = 'alertContent'), i.appendChild(a)), + (a.innerHTML = e), + (s = getID('alertButton')) || + ((s = document.createElement('button')), + (s.id = 'alertButton'), + (s.className = 'button'), + (s.style.margin = '0 auto'), + (s.style.lineHeight = '1.5em'), + (s.style.textAlign = 'center'), + (s.style.fontSize = '1.2em'), + i.appendChild(s)), + t && !o + ? ((s.style.width = t.length + 'ch'), + (s.innerHTML = t), + (s.onclick = n), + (s.style.display = 'block'), + showCursor('document.body')) + : (s.style.display = 'none'), + o && setTimeout(n, o), + showFrame(null), + (i.style.display = 'table-cell')); +} +function injectScript(e, t, n) { + var r, + o = document.head || document.getElementsByTagName('head')[0]; + (t && null !== (r = document.getElementById(t)) && r.parentNode.removeChild(r), + (r = document.createElement('script')), + (r.type = 'text/javascript'), + t && (r.id = t), + n && (r.addEventListener ? r.addEventListener('load', n, !0) : r.readyState && (r.onreadystatechange = n)), + (r.src = e), + o.appendChild(r)); +} +function fixMobileOrientation(e) { + function t() { + var t; + ('orientation' in window + ? (t = 90 === Math.abs(window.orientation) ? 'landscape' : 'portrait') + : ((t = screen.orientation ? screen.orientation.type : screen.mozOrientation || screen.msOrientation), + (t = ~t.indexOf('landscape') ? 'landscape' : 'portrait')), + t !== e && alert(r)); + } + if ('orientation' in window || 'orientation' in screen || 'mozOrientation' in screen || 'msOrientation' in screen) { + if ('portrait' !== e && 'landscape' !== e) + throw new TypeError("fixMobileOrientation: specify either 'portrait' or 'landscape'"); + var n = 'portrait' === e ? 'upright' : 'sideways', + r = 'Please keep your device in ' + e + ' mode (' + n + ') for this test!'; + ('onorientationchange' in window + ? window.addEventListener('orientationchange', t, !0) + : 'orientation' in screen + ? screen.orientation.addEventListener('change', t, !0) + : 'onmsorientationchange' in screen + ? screen.addEventListener('MSOrientationChange', t, !0) + : 'onmozorientationchange' in screen && screen.addEventListener('mozorientationchange', t, !0), + t()); + } +} +function setMobileViewportScale(e, t) { + function n() { + var n, o, i, a, s, u, l, c; + ((r.content = 'width=device-width, initial-scale=1'), + 'orientation' in window + ? (i = 90 === Math.abs(window.orientation) ? 'landscape' : 'portrait') + : ((i = screen.orientation ? screen.orientation.type : screen.mozOrientation || screen.msOrientation), + (i = ~i.indexOf('landscape') ? 'landscape' : 'portrait')), + 'portrait' === i + ? ((n = Math.min(screen.width, screen.height)), (o = Math.max(screen.width, screen.height))) + : 'landscape' === i && + ((n = Math.max(screen.width, screen.height)), (o = Math.min(screen.width, screen.height))), + (a = n / e), + (s = o / t), + s > a ? ((u = a), (l = e)) : ((u = s), (l = n / u)), + (c = 'width=' + Math.round(l)), + (c += ', initial-scale=' + u), + (c += ', maximum-scale=' + u), + (r.content = c)); + } + if ('orientation' in window || 'orientation' in screen || 'mozOrientation' in screen || 'msOrientation' in screen) { + var r; + if (!e || !t) throw new TypeError('setMobileViewportScale: dimensions not specified'); + ((r = document.getElementsByTagName('meta').viewport), + r || + ((r = document.createElement('meta')), + (r.name = 'viewport'), + (r.id = 'viewport'), + document.getElementsByTagName('head')[0].appendChild(r)), + n(), + 'onorientationchange' in window + ? window.addEventListener('orientationchange', n, !0) + : 'orientation' in screen + ? screen.orientation.addEventListener('change', n, !0) + : 'onmsorientationchange' in screen + ? screen.addEventListener('MSOrientationChange', n, !0) + : 'onmozorientationchange' in screen && screen.addEventListener('mozorientationchange', n, !0)); + } +} +function showCursor(e) { + 'document.body' === e ? (document.body.style.cursor = 'auto') : (getID(e).style.cursor = 'auto'); +} +function hideCursor(e) { + 'document.body' === e ? (document.body.style.cursor = 'none') : (getID(e).style.cursor = 'none'); +} +function tmbSubmitToServer(e, t, n, r) { + var o, i, a, s; + ((r = r ? r : '/run'), + document.createElement && + (o = document.createElement('FORM')) && + (i = document.createElement('INPUT')) && + (a = document.createElement('INPUT')) && + (s = document.createElement('INPUT')) && + ((o.name = 'form'), + (o.method = 'post'), + (o.action = r), + (o.onsubmit = function () { + return !1; + }), + (i.type = 'hidden'), + (i.name = 'data'), + (i.value = JSON.stringify(e)), + o.appendChild(i), + (a.type = 'hidden'), + (a.name = 'score'), + (a.value = t), + o.appendChild(a), + (s.type = 'hidden'), + (s.name = 'outcomes'), + (s.value = JSON.stringify(n)), + o.appendChild(s), + document.body.appendChild(o), + o.submit())); +} +function tmbSubmitToURL(e, t) { + var n; + if (null === t || 'object' != typeof t) throw new TypeError("tmbSubmitToURL: 'tmbData' is not an object."); + if (document.createElement && (n = document.createElement('FORM'))) { + ((n.name = 'form'), + (n.method = 'post'), + (n.action = e), + (n.onsubmit = function () { + return !1; + })); + for (var r in t) + if (t.hasOwnProperty(r)) { + var o = document.createElement('INPUT'); + ((o.type = 'hidden'), (o.name = r), (o.value = t[r]), n.appendChild(o)); + } + (document.body.appendChild(n), n.submit(), document.body.removeChild(n)); + } +} +function tmbSubmitToFile(e, t, n) { + for (var r = [], o = '', i = '', a = !0, s = 0; s < e.length; s++) + for (var u in e[s]) e[s].hasOwnProperty(u) && -1 === r.indexOf(u) && (r.push(u), (i += '"' + u + '",')); + for (i = i.substring(0, i.length - 1), i += '\r\n', s = 0; s < e.length; s++) { + o = ''; + for (var l = 0; l < r.length; l++) + ('undefined' != typeof e[s][r[l]] && + null !== e[s][r[l]] && + (o += + e[s][r[l]] instanceof Object + ? '"' + JSON.stringify(e[s][r[l]]).replace(/\"/g, '""') + '"' + : '"' + e[s][r[l]] + '"'), + (o += ',')); + ((o = o.substring(0, o.length - 1)), (i += o + '\r\n')); + } + if (n) { + a = !saveTextAs(i, t); + try { + a ? alert('Could not save the data!!') : alert('Data have been saved in ' + t); + } catch (c) { + a ? console.log('Could not save the data!!') : console.log('Data have been saved in ' + t); + } + } + try { + var d = window.open('', '', 'width=500,height=500,menubar=yes,toolbar=yes,scrollbars=yes,status=yes,resizable=yes'); + if (null === d || 'undefined' == typeof d) throw new TypeError(); + } catch (c) { + (alert('Could not open data window. Try disabling popup blockers before closing this.'), + (d = window.open( + '', + '', + 'width=500,height=500,menubar=yes,toolbar=yes,scrollbars=yes,status=yes,resizable=yes' + ))); + } finally { + if (null === d || 'undefined' == typeof d) alert('Tried again and failed opening data window.'); + else { + d.document.write('
' + i + '

'); + var f = d.document.createElement('INPUT'); + ((f.type = 'text'), (f.value = t), d.document.body.appendChild(f)); + var m = d.document.createElement('BUTTON'), + p = d.document.createTextNode('Save'); + (m.appendChild(p), + d.document.body.appendChild(m), + (d.onbeforeunload = function () { + return a ? 'Have you saved the data?' : void 0; + }), + (m.onclick = function () { + ((t = f.value), (a = !saveTextAs(i, t)), a && alert('Could not save the data!!')); + }), + (d.document.title = t), + d.document.close()); + } + } +} +function logResults(e, t) { + if (e && e[0]) { + var n, + r = '', + o = e.length; + if ('cum' === t || ('cum' !== t && 1 === o)) { + for (n in e[0]) e[0].hasOwnProperty(n) && (r += n + ' '); + (console.log(r), (r = '')); + } + for (var i = t && 'inc' !== t ? 0 : o - 1; o > i; i++) { + for (n in e[i]) e[i].hasOwnProperty(n) && (r += e[i][n] + ' '); + r += '\n'; + } + console.log(r); + } +} +function getUrlParameters(e, t, n) { + var r, o, i, a; + if (((r = t.length ? t : window.location.search), !r)) return !1; + ((o = r.split('?')[1].split('&')), (a = !0)); + for (var s = 0; s < o.length; s++) { + if (((i = o[s].split('=')), i[0] === e)) return ((a = !0), n ? decodeURIComponent(i[1]) : i[1]); + a = !1; + } + return a ? void 0 : !1; +} +function urlEncode(e) { + return ( + (e = (e + '').toString()), + encodeURIComponent(e) + .replace(/!/g, '%21') + .replace(/'/g, '%27') + .replace(/\(/g, '%28') + .replace(/\)/g, '%29') + .replace(/\*/g, '%2A') + .replace(/%20/g, '+') + ); +} +function httpBuildQuery(e, t, n) { + var r, + o, + i = [], + a = this, + s = function (e, t, n) { + var r, + o = []; + if ((t === !0 ? (t = '1') : t === !1 && (t = '0'), null !== t)) { + if ('object' == typeof t) { + for (r in t) null !== t[r] && t.hasOwnProperty(r) && o.push(s(e + '[' + r + ']', t[r], n)); + return o.join(n); + } + if ('function' != typeof t) return a.urlEncode(e) + '=' + a.urlEncode(t); + throw new Error('There was an error processing for http_build_query().'); + } + return ''; + }; + n || (n = '&'); + for (o in e) + if (e.hasOwnProperty(o)) { + ((r = e[o]), t && !isNaN(o) && (o = String(t) + o)); + var u = s(o, r, n); + '' !== u && i.push(u); + } + return i.join(n); +} +function ajaxRequest(e) { + var t, + n, + r, + o, + i, + a = { + url: '.', + method: 'GET', + data: null, + async: !0, + timeout: 1e4, + user: null, + pass: null, + getHeaders: !1, + sendCredentials: !1, + callback: null + }; + (null !== e && + 'object' == typeof e && + (e.hasOwnProperty('url') && (a.url = e.url), + e.hasOwnProperty('method') && (a.method = e.method.toUpperCase()), + e.hasOwnProperty('data') && (a.data = e.data), + e.hasOwnProperty('async') && (a.async = e.async), + e.hasOwnProperty('timeout') && (a.timeout = e.timeout), + e.hasOwnProperty('user') && (a.user = e.user), + e.hasOwnProperty('pass') && (a.pass = e.pass), + e.hasOwnProperty('getHeaders') && (a.getHeaders = e.getHeaders), + e.hasOwnProperty('sendCredentials') && (a.sendCredentials = e.sendCredentials), + e.hasOwnProperty('callback') && (a.callback = e.callback)), + null !== a.data && ((r = httpBuildQuery(a.data)), 'GET' === a.method && (a.url += '?' + r)), + (t = new XMLHttpRequest())); + try { + (t.open(a.method, a.url, a.async), + a.async && + (void 0 !== t.timeout && + void 0 !== t.ontimeout && + ((t.timeout = a.timeout), + (t.ontimeout = function () { + console.log('ajaxRequest timed out.'); + })), + void 0 !== t.withCredentials && a.sendCredentials && (t.withCredentials = !0), + (t.onreadystatechange = function () { + if ( + (a.getHeaders && + 2 === t.readyState && + ((o = t.getAllResponseHeaders()), + console.log('Request Status: ' + t.status + ' ' + t.statusText), + o && console.log(o)), + 4 === t.readyState) + ) + if (t.status >= 200 && t.status < 400) { + if (((i = void 0 !== t.response ? t.response : t.responseText), null === a.callback)) return i; + a.callback(i); + } else { + if (((n = 'Error in ajaxRequest: ' + t.status + ' ' + t.statusText), console.log(n), null === a.callback)) + return null; + a.callback(null); + } + })), + t.setRequestHeader('X-Requested-With', 'XMLHttpRequest'), + a.user && a.pass && t.setRequestHeader('Authorization', 'Basic ' + btoa(a.user + ':' + a.pass)), + 'POST' === a.method && t.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')); + } catch (s) { + if (((n = "Error in ajaxRequest 'open': " + s.message), console.log(n), null === a.callback)) return null; + a.callback(null); + } + try { + 'POST' === a.method ? t.send(r) : t.send(); + } catch (s) { + if (((n = "Error in ajaxRequest 'send': " + s.message), console.log(n), null === a.callback)) return null; + a.callback(null); + } + if (!a.async) + if ( + (a.getHeaders && + ((o = t.getAllResponseHeaders()), + console.log('Request Status: ' + t.status + ' ' + t.statusText), + o && console.log(o)), + t.status >= 200 && t.status < 400) + ) { + if (((i = void 0 !== t.response ? t.response : t.responseText), null === a.callback)) return i; + a.callback(i); + } else { + if (((n = 'Error in ajaxRequest: ' + t.status + ' ' + t.statusText), console.log(n), null === a.callback)) + return null; + a.callback(null); + } +} +function imagePreLoad(e, t) { + var n = e.slice(), + r = 0, + o = { progress: !0, pipeline: !0, copy: !0, callBack: null }; + (void 0 === tmbObjs.images && (tmbObjs.images = []), + null !== t && + 'object' == typeof t && + (t.hasOwnProperty('progress') && (o.progress = t.progress), + t.hasOwnProperty('pipeline') && (o.pipeline = t.pipeline), + t.hasOwnProperty('copy') && (o.copy = t.copy), + t.hasOwnProperty('callBack') && (o.callBack = t.callBack))); + var i, + a, + s, + u, + l = o.pipeline ? 1 : n.length; + o.progress && + ((i = document.createElement('div')), + (a = document.createElement('span')), + (s = document.createElement('span')), + (u = document.createElement('progress')), + (i.id = '_preloadDiv'), + (i.style.textAlign = 'center'), + (i.style.position = 'absolute'), + (i.style.left = '50%'), + (i.style.top = '50%'), + (i.style.marginTop = '-30px'), + (i.style.marginLeft = '-150px'), + (a.id = '_preloadText'), + (a.style.textAlign = 'center'), + (a.innerHTML = 'Loading resources: '), + (s.id = '_preloadCount'), + (s.style.textAlign = 'center'), + (s.innerHTML = '0 / ' + e.length + '
'), + i.appendChild(a), + i.appendChild(s), + u && + void 0 !== u.max && + ((u.id = '_preloadBar'), + (u.style.width = '300px'), + (u.style.height = '30px'), + (u.max = 1), + (u.value = 0), + i.appendChild(u)), + document.body.appendChild(i), + (i.style.display = 'block')); + for ( + var c = function (t) { + var a = t.target; + (r++, + t.preventDefault(), + t.stopPropagation(), + a.removeEventListener('load', c, !0), + a.removeEventListener('error', c, !0), + 'error' === t.type && console.log('Error pre-loading image: ' + a.src), + o.progress && + ((s.innerHTML = r + ' / ' + e.length + '
'), u && void 0 !== u.max && (u.value = r / e.length)), + o.copy && tmbObjs.images.push(a), + o.pipeline && r < e.length && d(n.shift()), + r === e.length && (o.progress && document.body.removeChild(i), o.callBack && o.callBack())); + }, + d = function (e) { + var t = new Image(); + (t.addEventListener('load', c, !0), t.addEventListener('error', c, !0), (t.id = e), (t.src = e)); + }; + l > 0; + ) + (l--, d(n.shift())); +} +function chooseInput(e, t) { + function n(r) { + var a; + ((o = ''), + r.preventDefault(), + r.stopPropagation(), + 'keydown' === r.type + ? e.keyboard + ? (a = 'keys') + : (o = 'Keyboard') + : 'pointerdown' === r.type || 'MSPointerDown' === r.type + ? 'touch' === r.pointerType || r.pointerType === r.MSPOINTER_TYPE_TOUCH + ? e.touch + ? (a = 'taps') + : (o = 'Touch') + : 'mouse' === r.pointerType || r.pointerType === r.MSPOINTER_TYPE_MOUSE + ? e.mouse + ? (a = 'clicks') + : (o = 'Mouse/Trackpad') + : ('pen' !== r.pointerType && r.pointerType !== r.MSPOINTER_TYPE_PEN) || + (e.touch ? (a = 'taps') : (o = 'Pen')) + : 'touchstart' === r.type + ? e.touch + ? (a = 'taps') + : (o = 'Touch') + : 'mousedown' === r.type && (e.mouse ? (a = 'clicks') : (o = 'Mouse/Trackpad')), + o && (o += ' not valid for this test: try another input.'), + (document.getElementById('errMsg').innerHTML = o), + a && + (document.body.removeEventListener('keydown', n, !0), + hasTouch && document.body.removeEventListener('touchstart', n, !0), + document.body.removeEventListener('mousedown', n, !0), + hasPointer && + (window.PointerEvent + ? document.body.removeEventListener('pointerdown', n, !0) + : window.MSPointerEvent && document.body.removeEventListener('MSPointerDown', n, !0)), + 'touchAction' in document.body.style + ? (document.body.style.touchAction = i) + : 'msTouchAction' in document.body.style && (document.body.style.msTouchAction = i), + document.getElementById('centeredTable').remove(), + t && t(a))); + } + var r = '', + o = ' ', + i = ''; + if (null === e || 'object' != typeof e) throw new TypeError('chooseInput: missing or invalid inputTypes object.'); + ((r += '

Please choose how you will respond in this test:

'), + e.keyboard && (r += '- To use a keyboard, press any key now.

'), + e.mouse && (r += '- To use a mouse or track pad, click now.

'), + e.touch && (r += '- To use a touch screen, touch the screen now.

'), + 'touchAction' in document.body.style + ? ((i = document.body.style.touchAction), (document.body.style.touchAction = 'none')) + : 'msTouchAction' in document.body.style && + ((i = document.body.style.msTouchAction), (document.body.style.msTouchAction = 'none')), + document.body.addEventListener('keydown', n, !0), + document.body.addEventListener('mousedown', n, !0), + hasTouch && document.body.addEventListener('touchstart', n, !0), + hasPointer && + (window.PointerEvent + ? document.body.addEventListener('pointerdown', n, !0) + : window.MSPointerEvent && document.body.addEventListener('MSPointerDown', n, !0)), + (document.body.innerHTML += + "
" + + r + + "" + + o + + '
')); +} +function getKeyboardInput(e, t, n, r) { + if (!(e.highlight === !0 || e instanceof Array || 'any' === e)) + throw new TypeError('getKeyboardInput: invalid acceptedKeys parameter'); + var o = e.highlight === !0; + r && setTimeout(disableKeyboard, r); + var i = now(), + a = null, + s = 0, + u = function () { + if (((a = null), o)) + for (var t in e) e.hasOwnProperty(t) && 'highlight' !== t && (e[t].style.border = '5px solid transparent'); + }; + return ( + (document.onkeydown = function (t) { + s = now() - i; + var t = t || window.event, + n = t.charCode || t.keyCode, + r = codeToKey(n); + return ( + ('any' === e || (o && r in e) || (e instanceof Array && e.includes(r))) && + (a && a !== r + ? (u(), alert('Please press only one key!\n\nYour response was not recorded. Please try again.'), u()) + : ((a = r), o && e[r] && (e[r].style.border = '5px solid #afd6fd'))), + !1 + ); + }), + (document.onkeyup = function (r) { + var r = r || window.event, + i = r.charCode || r.keyCode, + l = codeToKey(i); + if ('any' === e || (o && l in e) || (e instanceof Array && e.contains(l))) { + r.preventDefault ? (r.preventDefault(), r.stopPropagation()) : ((r.returnValue = !1), (r.cancelBubble = !0)); + var c = function () { + if (l !== a) return !1; + o && (e[l].style.border = '5px solid transparent'); + var r = { response: l, rt: s }; + return (u(), n ? t(r, n) : t(r), !1); + }; + o ? window.setTimeout(c, 300) : c(); + } + }), + !1 + ); +} +function simulateMobileMouseEvent(e, t) { + var n = document.createEvent('MouseEvents'), + r = e.changedTouches[0]; + (n.initMouseEvent( + t, + !0, + !0, + window, + 1, + r.screenX, + r.screenY, + r.clientX, + r.clientY, + e.ctrlKey, + e.altKey, + e.shiftKey, + e.metaKey, + 0, + null + ), + e.target.dispatchEvent(n)); +} +function simulateKeyEvent(e, t) { + var n = null; + if (document.createEvent) { + try { + ((n = document.createEvent('KeyEvents')), n.initKeyEvent(e, !0, !0, window, !1, !1, !1, !1, t, 0)); + } catch (r) { + try { + n = document.createEvent('Events'); + } catch (o) { + n = document.createEvent('UIEvents'); + } finally { + (n.initEvent(e, !0, !0), + (n.view = window), + (n.altKey = !1), + (n.ctrlKey = !1), + (n.shiftKey = !1), + (n.metaKey = !1), + (n.keyCode = t), + (n.charCode = 0)); + } + } + document.dispatchEvent(n); + } else { + if (!document.createEventObject) throw 'simulateKeyEvent(): No event simulation framework present.'; + ((n = document.createEventObject()), + (n.bubbles = !0), + (n.cancelable = !0), + (n.view = window), + (n.ctrlKey = !1), + (n.altKey = !1), + (n.shiftKey = !1), + (n.metaKey = !1), + (n.keyCode = t), + document.fireEvent('on' + e, n)); + } +} +function codeToKey(e) { + return keyboardCodes[e] || 'nokey'; +} +function keyToCode(e) { + return keyboardKeys[e] || 0; +} +function disableKeyboard() { + ((document.onkeyup = null), (document.onkeydown = null)); +} +function disableTouch(e) { + if ('document' === e) document.ontouchend = null; + else for (var t = 0; t < e.length; t++) ((e[t].ontouchstart = null), (e[t].ontouchend = null)); +} +function disableSelect() { + var e = document.body.style; + 'undefined' != typeof e.webkitUserSelect + ? (e.webkitUserSelect = 'none') + : 'undefined' != typeof e.MozUserSelect + ? (e.MozUserSelect = 'none') + : 'undefined' != typeof e.msUserSelect + ? (e.msUserSelect = 'none') + : 'undefined' != typeof e.oUserSelect + ? (e.oUserSelect = 'none') + : 'undefined' != typeof e.userSelect + ? (e.userSelect = 'none') + : 'undefined' != typeof document.onselectstart && + (document.onselectstart = function () { + return !1; + }); +} +function disableRightClick() { + 'undefined' != typeof document.oncontextmenu && + (document.oncontextmenu = function () { + return !1; + }); +} +function disableDrag() { + 'undefined' != typeof document.ondragstart && + (document.ondragstart = function () { + return !1; + }); +} +function disableElasticScrolling() { + 'undefined' != typeof document.ontouchmove && + (document.ontouchmove = function (e) { + (e.preventDefault(), e.stopPropagation()); + }); +} +function disableDoubleTapZoom() { + 'touchAction' in document.body.style + ? (document.body.style.touchAction = 'manipulation') + : 'msTouchAction' in document.body.style && (document.body.style.msTouchAction = 'manipulation'); +} +function getWindowHeight() { + var e = 0; + return ( + self.innerHeight + ? (e = self.innerHeight) + : document.documentElement && document.documentElement.clientHeight + ? (e = document.documentElement.clientHeight) + : document.body && (e = document.body.clientHeight), + e + ); +} +function getWindowWidth() { + var e = 0; + return ( + self.innerWidth + ? (e = self.innerWidth) + : document.documentElement && document.documentElement.clientWidth + ? (e = document.documentElement.clientWidth) + : document.body && (e = document.body.clientWidth), + e + ); +} +function getAspectRatio() { + return screen.height < screen.width ? screen.width / screen.height : screen.height / screen.width; +} +function getBoundingClientRectWithScroll(e) { + var t = e.getBoundingClientRect(), + n = document.body, + r = document.documentElement, + o = window.pageYOffset || r.scrollTop || n.scrollTop, + i = window.pageXOffset || r.scrollLeft || n.scrollLeft, + a = r.clientTop || n.clientTop || 0, + s = r.clientLeft || n.clientLeft || 0, + u = t.top + o - a, + l = t.left + i - s, + c = t.right + i - s, + d = t.bottom + o - a, + f = t.bottom - t.top, + m = t.right - t.left; + return { + top: Math.round(u), + left: Math.round(l), + right: Math.round(c), + bottom: Math.round(d), + height: Math.round(f), + width: Math.round(m) + }; +} +function regularPolygon(e, t, n, r, o) { + if (!(3 > e)) { + var i = [], + a = (2 * Math.PI) / e; + o = (o * Math.PI) / 180; + for (var s = 0; e > s; s++) i.push({ x: t + r * Math.cos(s * a + o), y: n - r * Math.sin(s * a + o) }); + return i; + } +} +function svgPathString(e, t) { + var n; + n = 'M' + e[0].x + ' ' + e[0].y + 'L'; + for (var r = 1; r < e.length; r++) n = n + e[r].x + ' ' + e[r].y + ' '; + return (t && (n += 'Z'), n); +} +function randInt(e, t) { + return t ? Math.floor(Math.random() * (t - e + 1)) + e : ((e = e || 2), Math.floor(Math.random() * e)); +} +function randSign() { + return Math.random() < 0.5 ? -1 : 1; +} +function combinations(e, t) { + var n, + r, + o, + i, + a = []; + for (n = 0; n < e.length; n++) + if (1 === t) a.push([e[n]]); + else + for (o = combinations(e.slice(n + 1, e.length), t - 1), r = 0; r < o.length; r++) + ((i = o[r]), i.unshift(e[n]), a.push(i)); + return a; +} +function range(e, t) { + for (var n = [], r = e; t >= r; r++) n.push(r); + return n; +} +function linSpace(e, t, n) { + if (('undefined' == typeof n && (n = Math.max(Math.round(t - e) + 1, 1)), 2 > n)) return 1 === n ? [e] : []; + var r, + o = new Array(n); + for (n--, r = n; r >= 0; r--) o[r] = (r * t + (n - r) * e) / n; + return o; +} +function isEven(e) { + return e === parseFloat(e) ? !(e % 2) : void 0; +} +function wrapRads(e) { + for (; e > Math.PI; ) e -= 2 * Math.PI; + for (; e < -Math.PI; ) e += 2 * Math.PI; + return e; +} +function sizeToDegrees(e, t) { + return ((t = t || 57.294), (2 * Math.atan2(e, 2 * t) * 180) / Math.PI); +} +function degreesToSize(e, t) { + return ((t = t || 57.294), 2 * t * Math.tan((e * Math.PI) / 360)); +} +function euclidDistance(e, t, n, r) { + var o = e - n, + i = t - r; + return Math.sqrt(o * o + i * i); +} +function euclidDistanceSquared(e, t, n, r) { + var o, i; + return ((o = e - n), (i = t - r), o * o + i * i); +} +function vecPvector(e, t) { + var n = {}; + return ((n.x = t.x - e.x), (n.y = t.y - e.y), n); +} +function vecLength(e) { + return Math.sqrt(e.x * e.x + e.y * e.y); +} +function vecAngle(e) { + var t = Math.atan2(e.y, e.x); + return wrapRads(t); +} +function vecDotProduct(e, t) { + return e.x * t.x + e.y * t.y; +} +function vecCrossProduct(e, t) { + return e.x * t.y - e.y * t.x; +} +function vecAngleBetween(e, t) { + var n = Math.atan2(t.y, t.x) - Math.atan2(e.y, e.x); + return wrapRads(n); +} +function segmentsIntersect(e, t, n, r) { + function o(e, t) { + return e.x === t.x && e.y === t.y; + } + function i() { + for (var e = arguments[0], t = 1; t < arguments.length; t += 1) if (arguments[t] !== e) return !1; + return !0; + } + var a = vecPvector(e, n), + s = vecPvector(e, t), + u = vecPvector(n, r), + l = vecCrossProduct(s, u), + c = vecCrossProduct(a, s); + if (0 === l) { + if (0 === c) { + if ( + !i(n.x - e.x < 0, n.x - t.x < 0, r.x - e.x < 0, r.x - t.x < 0) || + !i(n.y - e.y < 0, n.y - t.y < 0, r.y - e.y < 0, r.y - t.y < 0) + ) + return 1; + if (o(e, n) || o(e, r) || o(t, n) || o(t, r)) return 2; + } + return 0; + } + var d = vecCrossProduct(a, u), + f = c / l, + m = d / l; + return (0 !== m && 1 !== m) || (0 !== f && 1 !== f) ? (m >= 0 && 1 >= m && f >= 0 && 1 >= f ? 4 : 0) : 3; +} +function pointSegmentDistance(e, t, n) { + function r(e, t) { + var n = e.x - t.x, + r = e.y - t.y; + return n * n + r * r; + } + var o = r(t, n); + if (0 === o) return Math.sqrt(r(e, t)); + var i = ((e.x - t.x) * (n.x - t.x) + (e.y - t.y) * (n.y - t.y)) / o; + return 0 > i + ? Math.sqrt(r(e, t)) + : i > 1 + ? Math.sqrt(r(e, n)) + : Math.sqrt(r(e, { x: t.x + i * (n.x - t.x), y: t.y + i * (n.y - t.y) })); +} +function polygonIsComplex(e) { + var t, n; + if ((n = e.length) > 2) { + for (var r = 1; n - 1 > r; r++) + for (var o = 0; r > o; o++) + if (((t = segmentsIntersect(e[o], e[o + 1], e[r], e[r + 1])), 0 !== t && 3 !== t)) return [t, o, r]; + for (o = 0; n - 1 > o; o++) + if (((t = segmentsIntersect(e[o], e[o + 1], e[n - 1], e[0])), 0 !== t && 3 !== t)) return [t, o, n - 1]; + } + return !1; +} +function autoCorr(e, t) { + var n, + r, + o, + i, + a, + s = 0, + u = 0, + l = []; + if (1 > t || t > e.length - 1) throw new TypeError("'hiLag' must be positive and less than 'series.length'."); + for (i = e.slice(), o = i.length, a = i.average(), n = 0; o > n; n++) ((i[n] = i[n] - a), (s += i[n] * i[n])); + for (l[0] = 1, r = 1; t + 1 > r; r++) { + for (u = 0, n = 0; o - r - 1 > n; n++) u += i[n] * i[n + r]; + l[r] = u / s; + } + return l; +} +function getTimerGrain(e, t) { + function n() { + var u, l, c, d, f; + for (c = a, f = s.length + 1, l = u = now(); c; ) ((d = now()), (s[f] = d - l) && (c--, f++, (l = d))); + ((r += l - u), (o += a), o === e ? ((d = s.median().round(7)), t(d)) : (o === e - i && (a = i), setImmediate(n))); + } + var r, + o, + i, + a, + s = []; + e && t + ? ((r = o = 0), e > 100 ? ((a = 100), (i = e % 100)) : (a = e), setImmediate(n)) + : console.log("getTimerGrain needs how many 'ticks' to measure and a 'callBack' function to return the result."); +} +function getFrameTime(e, t) { + function n() { + ((r = o), + (o = now()), + (r = o - r), + i.push(r), + e ? (e--, requestAnimationFrame(n)) : ((r = i.median().round(3)), t(r))); + } + var r, + o, + i = []; + e && t + ? requestAnimationFrame(function () { + ((o = now()), requestAnimationFrame(n)); + }) + : console.log("getFrameTime needs how many 'frames' to measure and a 'callback' function to return the result."); +} +function chainTimeouts() { + var e = arguments.length, + t = arguments[0]; + if ((1 === e && t instanceof Array && ((arguments = t), (e = arguments.length), (t = arguments[0])), e % 2 === 0)) + throw new Error('chainTimeouts(): number of arguments must be odd'); + t(); + for (var n = [], r = 2, o = arguments[1]; e > r; r += 2, o += arguments[r - 1]) n.push(setTimeout(arguments[r], o)); + return n; +} +function clearChainTimeouts(e) { + for (var t = 0, n = e.length; n > t; t++) clearTimeout(e[t]); +} +function getAllCookies() { + var e = {}; + if (document.cookie && '' != document.cookie) + for (var t = document.cookie.split('; '), n = 0; n < t.length; n++) { + var r = t[n].split(/=(.+)?/); + e[decodeURIComponent(r[0])] = decodeURIComponent(r[1]); + } + return e; +} +function createCookie(e, t, n, r, o, i) { + if (!e) return !1; + if (((t = t ? t : ''), void 0 !== n)) { + var a = new Date(); + (a.setTime(a.getTime() + 24 * n * 60 * 60 * 1e3), (n = '; expires=' + a.toUTCString())); + } else n = '; expires=0'; + ((r = r ? '; path=' + r : '; path=/'), + (o = o ? '; domain=' + o : ''), + (i = i || 'https:' === location.protocol ? ';secure' : ''), + (document.cookie = e + '=' + t + n + r + o + i)); +} +function readCookie(e) { + for (var t = e + '=', n = document.cookie.split(';'), r = 0; r < n.length; r++) { + for (var o = n[r]; ' ' === o.charAt(0); ) o = o.substring(1, o.length); + if (0 === o.indexOf(t)) return o.substring(t.length, o.length); + } + return null; +} +function eraseCookie(e, t, n) { + ((t = t ? '; path=' + t : ''), (n = n ? '; domain=' + n : ''), createCookie(e, '', -1, t, n)); +} +function safeDecode(e) { + return ((e = e.replace(/\!/g, '/').replace(/-/g, '+').replace(/\./g, '=')), atob(e)); +} +function safeEncode(e) { + return ((e = btoa(e)), (e = e.replace(/\//g, '!').replace(/\+/g, '-').replace(/\=/g, '.'))); +} +function getPastResults(e) { + return RawDeflate.inflate(safeDecode(readCookie('t.' + e))); +} +function insertAfter(e, t) { + e.parentNode.insertBefore(t, e.nextSibling); +} +function generateForm(survey, node, action, method, buttonText) { + function tag(e, t) { + var n = '<' + e + ' ', + r = []; + for (var o in t) t.hasOwnProperty(o) && 'content' !== o && r.push(o + '="' + t[o] + '"'); + return ((n += r.join(' ') + '>'), 'undefined' != typeof t.content && (n += t.content), (n += '')); + } + var self = generateForm; + 'undefined' == typeof self.numForms ? (self.numForms = 1) : self.numForms++; + var formId = '__form' + (self.numForms - 1); + ((method = void 0 === method ? 'POST' : method), (onsubmit = "alert('blart');")); + for ( + var str = "
    ", a = 0, b; + (b = survey[a]); + a++ + ) + if ('textdiv' !== b.type) { + switch ( + ('' !== b.question && + ((str += 'hidden' !== b.type ? '
  1. ' : ''), + (str += + "

    " + + b.question + + "
    ")), + b.type) + ) { + case '': + str += tag('input', { type: 'text', id: b.name }); + break; + case 'text': + str += tag('input', { type: 'text', maxlength: b.length, id: b.name, size: b.length }); + break; + case 'hidden': + ((b.optional = !0), (b.question = b.name), (str += tag('input', { type: 'hidden', id: b.name }))); + break; + case 'checkbox': + case 'radio': + b.options.map(function (e, t) { + var n = b.name + '[' + t + ']'; + str += tag('span', { + class: 'undefined' != typeof b.subtype ? 'zen_' + b.subtype : 'zen_' + b.type, + content: + tag('input', { + type: b.type, + name: b.name, + id: n, + value: 'undefined' != typeof b.values ? b.values[t] : b.options[t], + class: 'zen_' + b.type + }) + tag('label', { for: n, content: e }) + }); + }); + break; + case 'dropdown': + ((str += "')); + break; + case 'textarea': + str += tag('textarea', { + name: b.name, + rows: b.rows, + cols: b.cols, + id: b.name, + class: 'undefined' != typeof b.subtype ? ' zen_' + b.subtype : '' + }); + } + ((str += '

    '), (str += 'hidden' !== b.type ? '
  2. ' : '')); + } else + ((b.optional = !0), + (str += tag('div', { id: b.name, size: b.length, content: b.content, class: 'zen_infoblock' }))); + ((str = buttonText + ? str + + "
    ' + : str + + "
    "), + (str += ""), + (node.innerHTML += str), + (getID(formId).validate = function () { + var results = [], + score = 0, + finalCheck = !0, + error = !1, + form = getID(formId); + survey.map(function (item) { + var id = item.name, + el, + value, + answer; + if ('checkbox' === item.type || 'radio' === item.type) { + value = []; + for (var i = 0, len = item.options.length; len > i; i++) { + var option = getID(item.name + '[' + i + ']'); + option.checked && (value.push(option.value), item.values && (score += 1 * option.value)); + } + ('radio' === item.type + ? ((value = value.shift()), + (item.validate = function (e) { + return e; + })) + : (item.validate = function (e) { + return e.length; + }), + (answer = value), + (el = getID(item.name + '[' + (i - 1) + ']'))); + } else if ('dropdown' === item.type) { + for (var i = 0, len = item.options.length; len > i; i++) { + var option = getID(item.name + '[' + i + ']'); + option.selected && + ((answer = option.value), item.values && ((answer = 1 * option.value), (score += 1 * option.value))); + } + ((el = form[item.name]), + (value = getID(item.name).options[0].selected), + (value = !value), + (item.validate = function (e) { + return e; + })); + } else + ((value = []), + (el = form[item.name] ? form[item.name] : getID(item.name)), + (value = el.value), + (answer = el.value)); + if (item.optional) { + var ans = new Object(); + (eval('ans.zen_' + item.name + '= answer'), results.push(ans)); + } else { + var errorEl = getID(id + '.err'); + errorEl || + ((errorEl = document.createElement('span')), + (errorEl.id = id + '.err'), + (errorEl.className = 'zen_error'), + insertAfter(getID('zen_' + id + '_input'), errorEl)); + var notBlank = function (e) { + return !('' === e); + }, + validate = item.validate || notBlank; + if (validate(value)) { + errorEl.innerHTML = ''; + var ans = new Object(); + (eval('ans.zen_' + item.name + '= answer'), results.push(ans)); + } else ((error = !0), (finalCheck = !1), (errorEl.innerHTML = 'required')); + } + }); + var errorTot = getID(formId + '.err'); + return ( + errorTot || + ((errorTot = document.createElement('span')), + (errorTot.id = formId + '.err'), + (errorTot.className = 'zen_err_flag'), + insertAfter(getID('zen_submit'), errorTot)), + (getID('data').value = JSON.stringify(results)), + (getID('score').value = isNaN(score) ? 0 : score), + finalCheck + ? void getID(formId).submit() + : ((errorTot.innerHTML = + 'There is a problem with your form submission. Please check that you have filled out all required fields correctly.'), + finalCheck) + ); + })); +} +(Date.now || + (Date.now = function () { + return new Date().getTime(); + }), + (function () { + 'use strict'; + for (var e = ['webkit', 'moz'], t = 0; t < e.length && !window.requestAnimationFrame; ++t) { + var n = e[t]; + ((window.requestAnimationFrame = window[n + 'RequestAnimationFrame']), + (window.cancelAnimationFrame = + window[n + 'CancelAnimationFrame'] || window[n + 'CancelRequestAnimationFrame'])); + } + if ( + /iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) || + !window.requestAnimationFrame || + !window.cancelAnimationFrame + ) { + var r = 0; + ((window.requestAnimationFrame = function (e) { + var t = Date.now(), + n = Math.max(r + 16, t); + return setTimeout(function () { + e((r = n)); + }, n - t); + }), + (window.cancelAnimationFrame = clearTimeout)); + } + })(), + (function () { + function e(e) { + this.message = e; + } + var t = 'undefined' != typeof exports ? exports : this, + n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + ((e.prototype = new Error()), + (e.prototype.name = 'InvalidCharacterError'), + t.btoa || + (t.btoa = function (t) { + for ( + var r, o, i = String(t), a = 0, s = n, u = ''; + i.charAt(0 | a) || ((s = '='), a % 1); + u += s.charAt(63 & (r >> (8 - (a % 1) * 8))) + ) { + if (((o = i.charCodeAt((a += 0.75))), o > 255)) + throw new e("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range."); + r = (r << 8) | o; + } + return u; + }), + t.atob || + (t.atob = function (t) { + var r = String(t).replace(/=+$/, ''); + if (r.length % 4 == 1) throw new e("'atob' failed: The string to be decoded is not correctly encoded."); + for ( + var o, i, a = 0, s = 0, u = ''; + (i = r.charAt(s++)); + ~i && ((o = a % 4 ? 64 * o + i : i), a++ % 4) ? (u += String.fromCharCode(255 & (o >> ((-2 * a) & 6)))) : 0 + ) + i = n.indexOf(i); + return u; + })); + })()); +var base64decode = atob, + base64encode = btoa; +(document.getElementsByClassName || + (document.getElementsByClassName = function (e) { + for ( + var t = [], + n = document, + r = n.getElementsByTagName('*'), + o = r.length, + i = new RegExp('(^|\\s)' + e + '(\\s|$)'), + a = 0, + s = 0; + o > a; + a++ + ) + i.test(r[a].className) && ((t[s] = r[a]), s++); + return t; + }), + Object.prototype.hasOwnProperty || + (Object.prototype.hasOwnProperty = function (e) { + var t = this.__proto__ || this.constructor.prototype; + return e in this && (!(e in t) || t[e] !== this[e]); + }), + 'function' != typeof Object.create && + (Object.create = (function () { + var e = function () {}; + return function (t) { + if (arguments.length > 1) throw Error('Second argument not supported'); + if ('object' != typeof t) throw TypeError('Argument must be an object'); + e.prototype = t; + var n = new e(); + return ((e.prototype = null), n); + }; + })()), + Object.keys || + (Object.keys = (function () { + 'use strict'; + var e = Object.prototype.hasOwnProperty, + t = !{ toString: null }.propertyIsEnumerable('toString'), + n = [ + 'toString', + 'toLocaleString', + 'valueOf', + 'hasOwnProperty', + 'isPrototypeOf', + 'propertyIsEnumerable', + 'constructor' + ], + r = n.length; + return function (o) { + if ('object' != typeof o && ('function' != typeof o || null === o)) + throw new TypeError('Object.keys called on non-object'); + var i, + a, + s = []; + for (i in o) e.call(o, i) && s.push(i); + if (t) for (a = 0; r > a; a++) e.call(o, n[a]) && s.push(n[a]); + return s; + }; + })()), + Function.prototype.bind || + (Function.prototype.bind = function (e) { + if ('function' != typeof this) + throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable'); + var t = Array.prototype.slice.call(arguments, 1), + n = this, + r = function () {}, + o = function () { + return n.apply(this instanceof r ? this : e, t.concat(Array.prototype.slice.call(arguments))); + }; + return ((r.prototype = this.prototype), (o.prototype = new r()), o); + }), + Array.isArray || + (Array.isArray = function (e) { + return '[object Array]' === Object.prototype.toString.call(e); + }), + Array.prototype.indexOf || + (Array.prototype.indexOf = function (e, t) { + if (void 0 === this || null === this) throw new TypeError('"this" is null or not defined'); + var n = this.length >>> 0; + for (t = +t || 0, Math.abs(t) === 1 / 0 && (t = 0), 0 > t && ((t += n), 0 > t && (t = 0)); n > t; t++) + if (this[t] === e) return t; + return -1; + }), + Array.prototype.lastIndexOf || + (Array.prototype.lastIndexOf = function (e) { + 'use strict'; + if (null == this) throw new TypeError(); + var t, + n, + r = Object(this), + o = r.length >>> 0; + if (0 === o) return -1; + for ( + t = o, + arguments.length > 1 && + ((t = Number(arguments[1])), + t != t ? (t = 0) : 0 != t && t != 1 / 0 && t != -(1 / 0) && (t = (t > 0 || -1) * Math.floor(Math.abs(t)))), + n = t >= 0 ? Math.min(t, o - 1) : o - Math.abs(t); + n >= 0; + n-- + ) + if (n in r && r[n] === e) return n; + return -1; + }), + Array.prototype.every || + (Array.prototype.every = function (e) { + 'use strict'; + if (void 0 === this || null === this) throw new TypeError(); + var t = Object(this), + n = t.length >>> 0; + if ('function' != typeof e) throw new TypeError(); + for (var r = arguments.length >= 2 ? arguments[1] : void 0, o = 0; n > o; o++) + if (o in t && !e.call(r, t[o], o, t)) return !1; + return !0; + }), + Array.prototype.some || + (Array.prototype.some = function (e) { + 'use strict'; + if (void 0 === this || null === this) throw new TypeError(); + var t = Object(this), + n = t.length >>> 0; + if ('function' != typeof e) throw new TypeError(); + for (var r = arguments.length >= 2 ? arguments[1] : void 0, o = 0; n > o; o++) + if (o in t && e.call(r, t[o], o, t)) return !0; + return !1; + }), + Array.prototype.forEach || + (Array.prototype.forEach = function (e) { + 'use strict'; + if (void 0 === this || null === this) throw new TypeError(); + var t = Object(this), + n = t.length >>> 0; + if ('function' != typeof e) throw new TypeError(); + for (var r = arguments.length >= 2 ? arguments[1] : void 0, o = 0; n > o; o++) o in t && e.call(r, t[o], o, t); + }), + Array.prototype.map || + (Array.prototype.map = function (e) { + 'use strict'; + if (void 0 === this || null === this) throw new TypeError(); + var t = Object(this), + n = t.length >>> 0; + if ('function' != typeof e) throw new TypeError(); + for (var r = new Array(n), o = arguments.length >= 2 ? arguments[1] : void 0, i = 0; n > i; i++) + i in t && (r[i] = e.call(o, t[i], i, t)); + return r; + }), + Array.prototype.filter || + (Array.prototype.filter = function (e) { + 'use strict'; + if (void 0 === this || null === this) throw new TypeError(); + var t = Object(this), + n = t.length >>> 0; + if ('function' != typeof e) throw new TypeError(); + for (var r = [], o = arguments.length >= 2 ? arguments[1] : void 0, i = 0; n > i; i++) + if (i in t) { + var a = t[i]; + e.call(o, a, i, t) && r.push(a); + } + return r; + }), + 'function' != typeof Array.prototype.reduce && + (Array.prototype.reduce = function (e, t) { + 'use strict'; + if (null === this || 'undefined' == typeof this) + throw new TypeError('Array.prototype.reduce called on null or undefined'); + if ('function' != typeof e) throw new TypeError(e + ' is not a function'); + var n, + r, + o = this.length >>> 0, + i = !1; + for (1 < arguments.length && ((r = t), (i = !0)), n = 0; o > n; ++n) + this.hasOwnProperty(n) && (i ? (r = e(r, this[n], n, this)) : ((r = this[n]), (i = !0))); + if (!i) throw new TypeError('Reduce of empty array with no initial value'); + return r; + }), + 'function' != typeof Array.prototype.reduceRight && + (Array.prototype.reduceRight = function (e, t) { + 'use strict'; + if (null === this || 'undefined' == typeof this) + throw new TypeError('Array.prototype.reduceRight called on null or undefined'); + if ('function' != typeof e) throw new TypeError(e + ' is not a function'); + var n, + r, + o = this.length >>> 0, + i = !1; + for (1 < arguments.length && ((r = t), (i = !0)), n = o - 1; n > -1; --n) + this.hasOwnProperty(n) && (i ? (r = e(r, this[n], n, this)) : ((r = this[n]), (i = !0))); + if (!i) throw new TypeError('Reduce of empty array with no initial value'); + return r; + }), + (function () { + 'use strict'; + var e = Array.prototype.slice; + try { + e.call(document.documentElement); + } catch (t) { + Array.prototype.slice = function (t, n) { + if ( + ((n = 'undefined' != typeof n ? n : this.length), '[object Array]' === Object.prototype.toString.call(this)) + ) + return e.call(this, t, n); + var r, + o, + i = [], + a = this.length, + s = t || 0; + s = s >= 0 ? s : a + s; + var u = n ? n : a; + if ((0 > n && (u = a + n), (o = u - s), o > 0)) + if (((i = new Array(o)), this.charAt)) for (r = 0; o > r; r++) i[r] = this.charAt(s + r); + else for (r = 0; o > r; r++) i[r] = this[s + r]; + return i; + }; + } + })(), + this.Element && + Element.prototype.attachEvent && + !Element.prototype.addEventListener && + (function () { + function e(e, t) { + Window.prototype[e] = HTMLDocument.prototype[e] = Element.prototype[e] = t; + } + function t() { + t.interval && + document.body && + ((t.interval = clearInterval(t.interval)), document.dispatchEvent(new CustomEvent('DOMContentLoaded'))); + } + (e('addEventListener', function (e, t) { + var n = this, + r = (n._c1_listeners = n._c1_listeners || {}), + o = (r[e] = r[e] || []); + (o.length || + n.attachEvent( + 'on' + e, + (o.event = function (e) { + var t = (n.document && n.document.documentElement) || + n.documentElement || { scrollLeft: 0, scrollTop: 0 }; + ((e.currentTarget = n), + (e.pageX = e.clientX + t.scrollLeft), + (e.pageY = e.clientY + t.scrollTop), + (e.preventDefault = function () { + e.returnValue = !1; + }), + (e.relatedTarget = e.fromElement || null), + (e.stopImmediatePropagation = function () { + ((l = !1), (e.cancelBubble = !0)); + }), + (e.stopPropagation = function () { + e.cancelBubble = !0; + }), + (e.target = e.srcElement || n), + (e.timeStamp = +new Date())); + var r = {}; + for (var i in e) r[i] = e[i]; + for (var a, s = 0, u = [].concat(o), l = !0; l && (a = u[s]); ++s) + for (var c, d = 0; (c = o[d]); ++d) + if (c == a) { + c.call(n, r); + break; + } + }) + ), + o.push(t)); + }), + e('removeEventListener', function (e, t) { + for ( + var n, r = this, o = (r._c1_listeners = r._c1_listeners || {}), i = (o[e] = o[e] || []), a = i.length - 1; + (n = i[a]); + --a + ) + if (n == t) { + i.splice(a, 1); + break; + } + !i.length && i.event && r.detachEvent('on' + e, i.event); + }), + e('dispatchEvent', function (e) { + var t = this, + n = e.type, + r = (t._c1_listeners = t._c1_listeners || {}), + o = (r[n] = r[n] || []); + try { + return t.fireEvent('on' + n, e); + } catch (i) { + return void (o.event && o.event(e)); + } + })); + try { + new window.CustomEvent('?'); + } catch (n) { + Object.defineProperty(Window.prototype, 'CustomEvent', { + get: function () { + var e = this; + return function (t, n) { + n = n || {}; + var r, + o = e.document.createEventObject(); + ((o.type = t), (o.returnValue = !n.cancelable), (o.cancelBubble = !n.bubbles)); + for (r in n) o[r] = n[r]; + return o; + }; + } + }); + } + ((t.interval = setInterval(t, 1)), window.addEventListener('load', t)); + })()); +try { + new window.CustomEvent('?'); +} catch (e) { + !(function () { + window.CustomEvent = function (e, t) { + var n; + t = t || { bubbles: !1, cancelable: !1, detail: void 0 }; + try { + ((n = document.createEvent('CustomEvent')), n.initCustomEvent(e, t.bubbles, t.cancelable, t.detail)); + } catch (r) { + ((n = document.createEvent('Event')), n.initEvent(e, t.bubbles, t.cancelable), (n.detail = t.detail)); + } + return n; + }; + })(); +} +('remove' in Element.prototype || + (Element.prototype.remove = function () { + this.parentNode && this.parentNode.removeChild(this); + }), + window.Node || + (window.Node = { + ELEMENT_NODE: 1, + ATTRIBUTE_NODE: 2, + TEXT_NODE: 3, + CDATA_SECTION_NODE: 4, + ENTITY_REFERENCE_NODE: 5, + ENTITY_NODE: 6, + PROCESSING_INSTRUCTION_NODE: 7, + COMMENT_NODE: 8, + DOCUMENT_NODE: 9, + DOCUMENT_TYPE_NODE: 10, + DOCUMENT_FRAGMENT_NODE: 11, + NOTATION_NODE: 12 + }), + 'function' != typeof Number.isInteger && + (Number.isInteger = function (e) { + return 'number' == typeof e && isFinite(e) && Math.floor(e) === e; + }), + String.prototype.trim || + (String.prototype.trim = function () { + return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); + }), + (function (e) { + var t = 32768, + n = 0, + r = 1, + o = 2, + i = 6, + a = !0, + s = 32768, + u = 64, + l = 8192, + c = 2 * t, + d = 3, + f = 258, + m = 16, + p = 8192, + h = 13; + (p > s && alert('error: zip_INBUFSIZ is too small'), + t << 1 > 1 << m && alert('error: zip_WSIZE is too large'), + h > m - 1 && alert('error: zip_HASH_BITS is too large'), + (8 > h || 258 != f) && alert('error: Code too clever')); + var y, + v, + b, + g, + w, + I, + E, + U, + T, + A, + k, + O, + x, + S, + M, + _, + C, + L, + P, + D, + N, + R, + j, + B, + z, + F, + q, + H, + W, + K, + X, + J, + Y, + G, + V, + $, + Z, + Q, + ee, + te, + ne, + re, + oe, + ie, + ae, + se, + ue, + le, + ce, + de, + fe, + me, + pe, + he, + ye, + ve, + be = p, + ge = 1 << h, + we = ge - 1, + Ie = t - 1, + Ee = 0, + Ue = 4096, + Te = f + d + 1, + Ae = t - Te, + ke = 1, + Oe = 15, + xe = 7, + Se = 29, + Me = 256, + _e = 256, + Ce = Me + 1 + Se, + Le = 30, + Pe = 19, + De = 16, + Ne = 17, + Re = 18, + je = 2 * Ce + 1, + Be = parseInt((h + d - 1) / d), + ze = null, + Fe = function () { + ((this.fc = 0), (this.dl = 0)); + }, + qe = function () { + ((this.dyn_tree = null), + (this.static_tree = null), + (this.extra_bits = null), + (this.extra_base = 0), + (this.elems = 0), + (this.max_length = 0), + (this.max_code = 0)); + }, + He = function (e, t, n, r) { + ((this.good_length = e), (this.max_lazy = t), (this.nice_length = n), (this.max_chain = r)); + }, + We = function () { + ((this.next = null), (this.len = 0), (this.ptr = new Array(l)), (this.off = 0)); + }, + Ke = new Array(0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0), + Xe = new Array(0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13), + Je = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7), + Ye = new Array(16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15), + Ge = new Array( + new He(0, 0, 0, 0), + new He(4, 4, 8, 4), + new He(4, 5, 16, 8), + new He(4, 6, 32, 32), + new He(4, 4, 16, 16), + new He(8, 16, 32, 32), + new He(8, 16, 128, 128), + new He(8, 32, 128, 256), + new He(32, 128, 258, 1024), + new He(32, 258, 258, 4096) + ), + Ve = function (e) { + var t; + if ((e ? (1 > e ? (e = 1) : e > 9 && (e = 9)) : (e = i), (q = e), (g = !1), (j = !1), null == ze)) { + for ( + y = v = b = null, + ze = new Array(l), + U = new Array(c), + T = new Array(be), + A = new Array(s + u), + k = new Array(1 << m), + K = new Array(je), + t = 0; + je > t; + t++ + ) + K[t] = new Fe(); + for (X = new Array(2 * Le + 1), t = 0; 2 * Le + 1 > t; t++) X[t] = new Fe(); + for (J = new Array(Ce + 2), t = 0; Ce + 2 > t; t++) J[t] = new Fe(); + for (Y = new Array(Le), t = 0; Le > t; t++) Y[t] = new Fe(); + for (G = new Array(2 * Pe + 1), t = 0; 2 * Pe + 1 > t; t++) G[t] = new Fe(); + ((V = new qe()), + ($ = new qe()), + (Z = new qe()), + (Q = new Array(Oe + 1)), + (ee = new Array(2 * Ce + 1)), + (re = new Array(2 * Ce + 1)), + (oe = new Array(f - d + 1)), + (ie = new Array(512)), + (ae = new Array(Se)), + (se = new Array(Le)), + (ue = new Array(parseInt(p / 8)))); + } + }, + $e = function (e) { + ((e.next = y), (y = e)); + }, + Ze = function () { + var e; + return (null != y ? ((e = y), (y = y.next)) : (e = new We()), (e.next = null), (e.len = e.off = 0), e); + }, + Qe = function (e) { + return k[t + e]; + }, + et = function (e, n) { + return (k[t + e] = n); + }, + tt = function (e) { + ((ze[I + w++] = e), I + w == l && Lt()); + }, + nt = function (e) { + ((e &= 65535), l - 2 > I + w ? ((ze[I + w++] = 255 & e), (ze[I + w++] = e >>> 8)) : (tt(255 & e), tt(e >>> 8))); + }, + rt = function () { + ((M = ((M << Be) ^ (255 & U[N + d - 1])) & we), (_ = Qe(M)), (k[N & Ie] = _), et(M, N)); + }, + ot = function (e, t) { + Mt(t[e].fc, t[e].dl); + }, + it = function (e) { + return 255 & (256 > e ? ie[e] : ie[256 + (e >> 7)]); + }, + at = function (e, t, n) { + return e[t].fc < e[n].fc || (e[t].fc == e[n].fc && re[t] <= re[n]); + }, + st = function (e, t, n) { + var r; + for (r = 0; n > r && ve < ye.length; r++) e[t + r] = 255 & ye.charCodeAt(ve++); + return r; + }, + ut = function () { + var e; + for (e = 0; ge > e; e++) k[t + e] = 0; + if ( + ((F = Ge[q].max_lazy), + (H = Ge[q].good_length), + a || (W = Ge[q].nice_length), + (z = Ge[q].max_chain), + (N = 0), + (S = 0), + (B = st(U, 0, 2 * t)), + 0 >= B) + ) + return ((j = !0), void (B = 0)); + for (j = !1; Te > B && !j; ) ct(); + for (M = 0, e = 0; d - 1 > e; e++) M = ((M << Be) ^ (255 & U[e])) & we; + }, + lt = function (e) { + var t, + n, + r = z, + o = N, + i = D, + s = N > Ae ? N - Ae : Ee, + u = N + f, + l = U[o + i - 1], + c = U[o + i]; + D >= H && (r >>= 2); + do + if (((t = e), U[t + i] == c && U[t + i - 1] == l && U[t] == U[o] && U[++t] == U[o + 1])) { + ((o += 2), t++); + do; + while ( + U[++o] == U[++t] && + U[++o] == U[++t] && + U[++o] == U[++t] && + U[++o] == U[++t] && + U[++o] == U[++t] && + U[++o] == U[++t] && + U[++o] == U[++t] && + U[++o] == U[++t] && + u > o + ); + if (((n = f - (u - o)), (o = u - f), n > i)) { + if (((R = e), (i = n), a)) { + if (n >= f) break; + } else if (n >= W) break; + ((l = U[o + i - 1]), (c = U[o + i])); + } + } + while ((e = k[e & Ie]) > s && 0 != --r); + return i; + }, + ct = function () { + var e, + n, + r = c - B - N; + if (-1 == r) r--; + else if (N >= t + Ae) { + for (e = 0; t > e; e++) U[e] = U[e + t]; + for (R -= t, N -= t, S -= t, e = 0; ge > e; e++) ((n = Qe(e)), et(e, n >= t ? n - t : Ee)); + for (e = 0; t > e; e++) ((n = k[e]), (k[e] = n >= t ? n - t : Ee)); + r += t; + } + j || ((e = st(U, N + B, r)), 0 >= e ? (j = !0) : (B += e)); + }, + dt = function () { + for (; 0 != B && null == v; ) { + var e; + if ((rt(), _ != Ee && Ae >= N - _ && ((P = lt(_)), P > B && (P = B)), P >= d)) + if (((e = Ot(N - R, P - d)), (B -= P), F >= P)) { + P--; + do (N++, rt()); + while (0 != --P); + N++; + } else ((N += P), (P = 0), (M = 255 & U[N]), (M = ((M << Be) ^ (255 & U[N + 1])) & we)); + else ((e = Ot(0, 255 & U[N])), B--, N++); + for (e && (kt(0), (S = N)); Te > B && !j; ) ct(); + } + }, + ft = function () { + for (; 0 != B && null == v; ) { + if ( + (rt(), + (D = P), + (C = R), + (P = d - 1), + _ != Ee && F > D && Ae >= N - _ && ((P = lt(_)), P > B && (P = B), P == d && N - R > Ue && P--), + D >= d && D >= P) + ) { + var e; + ((e = Ot(N - 1 - C, D - d)), (B -= D - 1), (D -= 2)); + do (N++, rt()); + while (0 != --D); + ((L = 0), (P = d - 1), N++, e && (kt(0), (S = N))); + } else 0 != L ? (Ot(0, 255 & U[N - 1]) && (kt(0), (S = N)), N++, B--) : ((L = 1), N++, B--); + for (; Te > B && !j; ) ct(); + } + }, + mt = function () { + j || + ((O = 0), + (x = 0), + yt(), + ut(), + (v = null), + (w = 0), + (I = 0), + (L = 0), + 3 >= q ? ((D = d - 1), (P = 0)) : ((P = d - 1), (L = 0), (L = 0)), + (E = !1)); + }, + pt = function (e, t, n) { + var r; + return g || (mt(), (g = !0), 0 != B) + ? (r = ht(e, t, n)) == n + ? n + : E + ? r + : (3 >= q ? dt() : ft(), + 0 == B && (0 != L && Ot(0, 255 & U[N - 1]), kt(1), (E = !0)), + r + ht(e, r + t, n - r)) + : ((E = !0), 0); + }, + ht = function (e, t, n) { + var r, o, i; + for (r = 0; null != v && n > r; ) { + for (o = n - r, o > v.len && (o = v.len), i = 0; o > i; i++) e[t + r + i] = v.ptr[v.off + i]; + if (((v.off += o), (v.len -= o), (r += o), 0 == v.len)) { + var a; + ((a = v), (v = v.next), $e(a)); + } + } + if (r == n) return r; + if (w > I) { + for (o = n - r, o > w - I && (o = w - I), i = 0; o > i; i++) e[t + r + i] = ze[I + i]; + ((I += o), (r += o), w == I && (w = I = 0)); + } + return r; + }, + yt = function () { + var e, t, n, r, o; + if (0 == Y[0].dl) { + for ( + V.dyn_tree = K, + V.static_tree = J, + V.extra_bits = Ke, + V.extra_base = Me + 1, + V.elems = Ce, + V.max_length = Oe, + V.max_code = 0, + $.dyn_tree = X, + $.static_tree = Y, + $.extra_bits = Xe, + $.extra_base = 0, + $.elems = Le, + $.max_length = Oe, + $.max_code = 0, + Z.dyn_tree = G, + Z.static_tree = null, + Z.extra_bits = Je, + Z.extra_base = 0, + Z.elems = Pe, + Z.max_length = xe, + Z.max_code = 0, + n = 0, + r = 0; + Se - 1 > r; + r++ + ) + for (ae[r] = n, e = 0; e < 1 << Ke[r]; e++) oe[n++] = r; + for (oe[n - 1] = r, o = 0, r = 0; 16 > r; r++) for (se[r] = o, e = 0; e < 1 << Xe[r]; e++) ie[o++] = r; + for (o >>= 7; Le > r; r++) for (se[r] = o << 7, e = 0; e < 1 << (Xe[r] - 7); e++) ie[256 + o++] = r; + for (t = 0; Oe >= t; t++) Q[t] = 0; + for (e = 0; 143 >= e; ) ((J[e++].dl = 8), Q[8]++); + for (; 255 >= e; ) ((J[e++].dl = 9), Q[9]++); + for (; 279 >= e; ) ((J[e++].dl = 7), Q[7]++); + for (; 287 >= e; ) ((J[e++].dl = 8), Q[8]++); + for (wt(J, Ce + 1), e = 0; Le > e; e++) ((Y[e].dl = 5), (Y[e].fc = _t(e, 5))); + vt(); + } + }, + vt = function () { + var e; + for (e = 0; Ce > e; e++) K[e].fc = 0; + for (e = 0; Le > e; e++) X[e].fc = 0; + for (e = 0; Pe > e; e++) G[e].fc = 0; + ((K[_e].fc = 1), (pe = he = 0), (le = ce = de = 0), (fe = 0), (me = 1)); + }, + bt = function (e, t) { + for (var n = ee[t], r = t << 1; te >= r && (te > r && at(e, ee[r + 1], ee[r]) && r++, !at(e, n, ee[r])); ) + ((ee[t] = ee[r]), (t = r), (r <<= 1)); + ee[t] = n; + }, + gt = function (e) { + var t, + n, + r, + o, + i, + a, + s = e.dyn_tree, + u = e.extra_bits, + l = e.extra_base, + c = e.max_code, + d = e.max_length, + f = e.static_tree, + m = 0; + for (o = 0; Oe >= o; o++) Q[o] = 0; + for (s[ee[ne]].dl = 0, t = ne + 1; je > t; t++) + ((n = ee[t]), + (o = s[s[n].dl].dl + 1), + o > d && ((o = d), m++), + (s[n].dl = o), + n > c || + (Q[o]++, + (i = 0), + n >= l && (i = u[n - l]), + (a = s[n].fc), + (pe += a * (o + i)), + null != f && (he += a * (f[n].dl + i)))); + if (0 != m) { + do { + for (o = d - 1; 0 == Q[o]; ) o--; + (Q[o]--, (Q[o + 1] += 2), Q[d]--, (m -= 2)); + } while (m > 0); + for (o = d; 0 != o; o--) + for (n = Q[o]; 0 != n; ) + ((r = ee[--t]), r > c || (s[r].dl != o && ((pe += (o - s[r].dl) * s[r].fc), (s[r].fc = o)), n--)); + } + }, + wt = function (e, t) { + var n, + r, + o = new Array(Oe + 1), + i = 0; + for (n = 1; Oe >= n; n++) ((i = (i + Q[n - 1]) << 1), (o[n] = i)); + for (r = 0; t >= r; r++) { + var a = e[r].dl; + 0 != a && (e[r].fc = _t(o[a]++, a)); + } + }, + It = function (e) { + var t, + n, + r = e.dyn_tree, + o = e.static_tree, + i = e.elems, + a = -1, + s = i; + for (te = 0, ne = je, t = 0; i > t; t++) 0 != r[t].fc ? ((ee[++te] = a = t), (re[t] = 0)) : (r[t].dl = 0); + for (; 2 > te; ) { + var u = (ee[++te] = 2 > a ? ++a : 0); + ((r[u].fc = 1), (re[u] = 0), pe--, null != o && (he -= o[u].dl)); + } + for (e.max_code = a, t = te >> 1; t >= 1; t--) bt(r, t); + do + ((t = ee[ke]), + (ee[ke] = ee[te--]), + bt(r, ke), + (n = ee[ke]), + (ee[--ne] = t), + (ee[--ne] = n), + (r[s].fc = r[t].fc + r[n].fc), + re[t] > re[n] + 1 ? (re[s] = re[t]) : (re[s] = re[n] + 1), + (r[t].dl = r[n].dl = s), + (ee[ke] = s++), + bt(r, ke)); + while (te >= 2); + ((ee[--ne] = ee[ke]), gt(e), wt(r, a)); + }, + Et = function (e, t) { + var n, + r, + o = -1, + i = e[0].dl, + a = 0, + s = 7, + u = 4; + for (0 == i && ((s = 138), (u = 3)), e[t + 1].dl = 65535, n = 0; t >= n; n++) + ((r = i), + (i = e[n + 1].dl), + (++a < s && r == i) || + (u > a ? (G[r].fc += a) : 0 != r ? (r != o && G[r].fc++, G[De].fc++) : 10 >= a ? G[Ne].fc++ : G[Re].fc++, + (a = 0), + (o = r), + 0 == i ? ((s = 138), (u = 3)) : r == i ? ((s = 6), (u = 3)) : ((s = 7), (u = 4)))); + }, + Ut = function (e, t) { + var n, + r, + o = -1, + i = e[0].dl, + a = 0, + s = 7, + u = 4; + for (0 == i && ((s = 138), (u = 3)), n = 0; t >= n; n++) + if (((r = i), (i = e[n + 1].dl), !(++a < s && r == i))) { + if (u > a) { + do ot(r, G); + while (0 != --a); + } else + 0 != r + ? (r != o && (ot(r, G), a--), ot(De, G), Mt(a - 3, 2)) + : 10 >= a + ? (ot(Ne, G), Mt(a - 3, 3)) + : (ot(Re, G), Mt(a - 11, 7)); + ((a = 0), (o = r), 0 == i ? ((s = 138), (u = 3)) : r == i ? ((s = 6), (u = 3)) : ((s = 7), (u = 4))); + } + }, + Tt = function () { + var e; + for (Et(K, V.max_code), Et(X, $.max_code), It(Z), e = Pe - 1; e >= 3 && 0 == G[Ye[e]].dl; e--); + return ((pe += 3 * (e + 1) + 5 + 5 + 4), e); + }, + At = function (e, t, n) { + var r; + for (Mt(e - 257, 5), Mt(t - 1, 5), Mt(n - 4, 4), r = 0; n > r; r++) Mt(G[Ye[r]].dl, 3); + (Ut(K, e - 1), Ut(X, t - 1)); + }, + kt = function (e) { + var t, i, a, s; + if ( + ((s = N - S), + (ue[de] = fe), + It(V), + It($), + (a = Tt()), + (t = (pe + 3 + 7) >> 3), + (i = (he + 3 + 7) >> 3), + t >= i && (t = i), + t >= s + 4 && S >= 0) + ) { + var u; + for (Mt((n << 1) + e, 3), Ct(), nt(s), nt(~s), u = 0; s > u; u++) tt(U[S + u]); + } else + i == t + ? (Mt((r << 1) + e, 3), xt(J, Y)) + : (Mt((o << 1) + e, 3), At(V.max_code + 1, $.max_code + 1, a + 1), xt(K, X)); + (vt(), 0 != e && Ct()); + }, + Ot = function (e, t) { + if ( + ((A[le++] = t), + 0 == e ? K[t].fc++ : (e--, K[oe[t] + Me + 1].fc++, X[it(e)].fc++, (T[ce++] = e), (fe |= me)), + (me <<= 1), + 0 == (7 & le) && ((ue[de++] = fe), (fe = 0), (me = 1)), + q > 2 && 0 == (4095 & le)) + ) { + var n, + r = 8 * le, + o = N - S; + for (n = 0; Le > n; n++) r += X[n].fc * (5 + Xe[n]); + if (((r >>= 3), ce < parseInt(le / 2) && r < parseInt(o / 2))) return !0; + } + return le == p - 1 || ce == be; + }, + xt = function (e, t) { + var n, + r, + o, + i, + a = 0, + s = 0, + u = 0, + l = 0; + if (0 != le) + do + (0 == (7 & a) && (l = ue[u++]), + (r = 255 & A[a++]), + 0 == (1 & l) + ? ot(r, e) + : ((o = oe[r]), + ot(o + Me + 1, e), + (i = Ke[o]), + 0 != i && ((r -= ae[o]), Mt(r, i)), + (n = T[s++]), + (o = it(n)), + ot(o, t), + (i = Xe[o]), + 0 != i && ((n -= se[o]), Mt(n, i))), + (l >>= 1)); + while (le > a); + ot(_e, e); + }, + St = 16, + Mt = function (e, t) { + x > St - t ? ((O |= e << x), nt(O), (O = e >> (St - x)), (x += t - St)) : ((O |= e << x), (x += t)); + }, + _t = function (e, t) { + var n = 0; + do ((n |= 1 & e), (e >>= 1), (n <<= 1)); + while (--t > 0); + return n >> 1; + }, + Ct = function () { + (x > 8 ? nt(O) : x > 0 && tt(O), (O = 0), (x = 0)); + }, + Lt = function () { + if (0 != w) { + var e, t; + for (e = Ze(), null == v ? (v = b = e) : (b = b.next = e), e.len = w - I, t = 0; t < e.len; t++) + e.ptr[t] = ze[I + t]; + w = I = 0; + } + }, + Pt = function (e, t) { + var n, r; + ((ye = e), (ve = 0), 'undefined' == typeof t && (t = i), Ve(t)); + for (var o = new Array(1024), a = []; (n = pt(o, 0, o.length)) > 0; ) { + var s = new Array(n); + for (r = 0; n > r; r++) s[r] = String.fromCharCode(o[r]); + a[a.length] = s.join(''); + } + return ((ye = null), a.join('')); + }; + (e.RawDeflate || (e.RawDeflate = {}), (e.RawDeflate.deflate = Pt)); + })(this), + (function (e) { + var t, + n, + r, + o, + i, + a, + s, + u, + l, + c, + d, + f, + m, + p, + h, + y, + v, + b = 32768, + g = 0, + w = 9, + I = 6, + E = null, + U = new Array(0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767, 65535), + T = new Array( + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 13, + 15, + 17, + 19, + 23, + 27, + 31, + 35, + 43, + 51, + 59, + 67, + 83, + 99, + 115, + 131, + 163, + 195, + 227, + 258, + 0, + 0 + ), + A = new Array(0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 99, 99), + k = new Array( + 1, + 2, + 3, + 4, + 5, + 7, + 9, + 13, + 17, + 25, + 33, + 49, + 65, + 97, + 129, + 193, + 257, + 385, + 513, + 769, + 1025, + 1537, + 2049, + 3073, + 4097, + 6145, + 8193, + 12289, + 16385, + 24577 + ), + O = new Array(0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13), + x = new Array(16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15), + S = function () { + ((this.next = null), (this.list = null)); + }, + M = function () { + ((this.e = 0), (this.b = 0), (this.n = 0), (this.t = null)); + }, + _ = function (e, t, n, r, o, i) { + ((this.BMAX = 16), (this.N_MAX = 288), (this.status = 0), (this.root = null), (this.m = 0)); + var a, + s, + u, + l, + c, + d, + f, + m, + p, + h, + y, + v, + b, + g, + w, + I, + E, + U = new Array(this.BMAX + 1), + T = new Array(this.BMAX + 1), + A = new M(), + k = new Array(this.BMAX), + O = new Array(this.N_MAX), + x = new Array(this.BMAX + 1); + for (E = this.root = null, d = 0; d < U.length; d++) U[d] = 0; + for (d = 0; d < T.length; d++) T[d] = 0; + for (d = 0; d < k.length; d++) k[d] = null; + for (d = 0; d < O.length; d++) O[d] = 0; + for (d = 0; d < x.length; d++) x[d] = 0; + ((s = t > 256 ? e[256] : this.BMAX), (p = e), (h = 0), (d = t)); + do (U[p[h]]++, h++); + while (--d > 0); + if (U[0] == t) return ((this.root = null), (this.m = 0), void (this.status = 0)); + for (f = 1; f <= this.BMAX && 0 == U[f]; f++); + for (m = f, f > i && (i = f), d = this.BMAX; 0 != d && 0 == U[d]; d--); + for (l = d, i > d && (i = d), g = 1 << f; d > f; f++, g <<= 1) + if ((g -= U[f]) < 0) return ((this.status = 2), void (this.m = i)); + if ((g -= U[d]) < 0) return ((this.status = 2), void (this.m = i)); + for (U[d] += g, x[1] = f = 0, p = U, h = 1, b = 2; --d > 0; ) x[b++] = f += p[h++]; + ((p = e), (h = 0), (d = 0)); + do 0 != (f = p[h++]) && (O[x[f]++] = d); + while (++d < t); + for (t = x[l], x[0] = d = 0, p = O, h = 0, c = -1, v = T[0] = 0, y = null, w = 0; l >= m; m++) + for (a = U[m]; a-- > 0; ) { + for (; m > v + T[1 + c]; ) { + if (((v += T[1 + c]), c++, (w = (w = l - v) > i ? i : w), (u = 1 << (f = m - v)) > a + 1)) + for (u -= a + 1, b = m; ++f < w && !((u <<= 1) <= U[++b]); ) u -= U[b]; + for (v + f > s && s > v && (f = s - v), w = 1 << f, T[1 + c] = f, y = new Array(w), I = 0; w > I; I++) + y[I] = new M(); + ((E = null == E ? (this.root = new S()) : (E.next = new S())), + (E.next = null), + (E.list = y), + (k[c] = y), + c > 0 && + ((x[c] = d), + (A.b = T[c]), + (A.e = 16 + f), + (A.t = y), + (f = (d & ((1 << v) - 1)) >> (v - T[c])), + (k[c - 1][f].e = A.e), + (k[c - 1][f].b = A.b), + (k[c - 1][f].n = A.n), + (k[c - 1][f].t = A.t))); + } + for ( + A.b = m - v, + h >= t + ? (A.e = 99) + : p[h] < n + ? ((A.e = p[h] < 256 ? 16 : 15), (A.n = p[h++])) + : ((A.e = o[p[h] - n]), (A.n = r[p[h++] - n])), + u = 1 << (m - v), + f = d >> v; + w > f; + f += u + ) + ((y[f].e = A.e), (y[f].b = A.b), (y[f].n = A.n), (y[f].t = A.t)); + for (f = 1 << (m - 1); 0 != (d & f); f >>= 1) d ^= f; + for (d ^= f; (d & ((1 << v) - 1)) != x[c]; ) ((v -= T[c]), c--); + } + ((this.m = T[1]), (this.status = 0 != g && 1 != l ? 1 : 0)); + }, + C = function () { + return y.length == v ? -1 : 255 & y.charCodeAt(v++); + }, + L = function (e) { + for (; e > s; ) ((a |= C() << s), (s += 8)); + }, + P = function (e) { + return a & U[e]; + }, + D = function (e) { + ((a >>= e), (s -= e)); + }, + N = function (e, r, o) { + var i, a, s; + if (0 == o) return 0; + for (s = 0; ; ) { + for (L(p), a = f.list[P(p)], i = a.e; i > 16; ) { + if (99 == i) return -1; + (D(a.b), (i -= 16), L(i), (a = a.t[P(i)]), (i = a.e)); + } + if ((D(a.b), 16 != i)) { + if (15 == i) break; + for (L(i), c = a.n + P(i), D(i), L(h), a = m.list[P(h)], i = a.e; i > 16; ) { + if (99 == i) return -1; + (D(a.b), (i -= 16), L(i), (a = a.t[P(i)]), (i = a.e)); + } + for (D(a.b), L(i), d = n - a.n - P(i), D(i); c > 0 && o > s; ) + (c--, (d &= b - 1), (n &= b - 1), (e[r + s++] = t[n++] = t[d++])); + if (s == o) return o; + } else if (((n &= b - 1), (e[r + s++] = t[n++] = a.n), s == o)) return o; + } + return ((u = -1), s); + }, + R = function (e, r, o) { + var i; + if (((i = 7 & s), D(i), L(16), (i = P(16)), D(16), L(16), i != (65535 & ~a))) return -1; + for (D(16), c = i, i = 0; c > 0 && o > i; ) (c--, (n &= b - 1), L(8), (e[r + i++] = t[n++] = P(8)), D(8)); + return (0 == c && (u = -1), i); + }, + j = function (e, t, n) { + if (null == E) { + var a, + s, + u = new Array(288); + for (a = 0; 144 > a; a++) u[a] = 8; + for (; 256 > a; a++) u[a] = 9; + for (; 280 > a; a++) u[a] = 7; + for (; 288 > a; a++) u[a] = 8; + if (((o = 7), (s = new _(u, 288, 257, T, A, o)), 0 != s.status)) + return (alert('HufBuild error: ' + s.status), -1); + for (E = s.root, o = s.m, a = 0; 30 > a; a++) u[a] = 5; + if (((i = 5), (s = new _(u, 30, 0, k, O, i)), s.status > 1)) + return ((E = null), alert('HufBuild error: ' + s.status), -1); + ((r = s.root), (i = s.m)); + } + return ((f = E), (m = r), (p = o), (h = i), N(e, t, n)); + }, + B = function (e, t, n) { + var r, + o, + i, + a, + s, + u, + l, + c, + d, + y = new Array(316); + for (r = 0; r < y.length; r++) y[r] = 0; + if ((L(5), (l = 257 + P(5)), D(5), L(5), (c = 1 + P(5)), D(5), L(4), (u = 4 + P(4)), D(4), l > 286 || c > 30)) + return -1; + for (o = 0; u > o; o++) (L(3), (y[x[o]] = P(3)), D(3)); + for (; 19 > o; o++) y[x[o]] = 0; + if (((p = 7), (d = new _(y, 19, 19, null, null, p)), 0 != d.status)) return -1; + for (f = d.root, p = d.m, a = l + c, r = i = 0; a > r; ) + if ((L(p), (s = f.list[P(p)]), (o = s.b), D(o), (o = s.n), 16 > o)) y[r++] = i = o; + else if (16 == o) { + if ((L(2), (o = 3 + P(2)), D(2), r + o > a)) return -1; + for (; o-- > 0; ) y[r++] = i; + } else if (17 == o) { + if ((L(3), (o = 3 + P(3)), D(3), r + o > a)) return -1; + for (; o-- > 0; ) y[r++] = 0; + i = 0; + } else { + if ((L(7), (o = 11 + P(7)), D(7), r + o > a)) return -1; + for (; o-- > 0; ) y[r++] = 0; + i = 0; + } + if (((p = w), (d = new _(y, l, 257, T, A, p)), 0 == p && (d.status = 1), 0 != d.status)) + return (1 == d.status, -1); + for (f = d.root, p = d.m, r = 0; c > r; r++) y[r] = y[r + l]; + return ( + (h = I), + (d = new _(y, c, 0, k, O, h)), + (m = d.root), + (h = d.m), + 0 == h && l > 257 ? -1 : (1 == d.status, 0 != d.status ? -1 : N(e, t, n)) + ); + }, + z = function () { + (null == t && (t = new Array(2 * b)), (n = 0), (a = 0), (s = 0), (u = -1), (l = !1), (c = d = 0), (f = null)); + }, + F = function (e, r, o) { + var i, a; + for (i = 0; o > i; ) { + if (l && -1 == u) return i; + if (c > 0) { + if (u != g) for (; c > 0 && o > i; ) (c--, (d &= b - 1), (n &= b - 1), (e[r + i++] = t[n++] = t[d++])); + else { + for (; c > 0 && o > i; ) (c--, (n &= b - 1), L(8), (e[r + i++] = t[n++] = P(8)), D(8)); + 0 == c && (u = -1); + } + if (i == o) return i; + } + if (-1 == u) { + if (l) break; + (L(1), 0 != P(1) && (l = !0), D(1), L(2), (u = P(2)), D(2), (f = null), (c = 0)); + } + switch (u) { + case 0: + a = R(e, r + i, o - i); + break; + case 1: + a = null != f ? N(e, r + i, o - i) : j(e, r + i, o - i); + break; + case 2: + a = null != f ? N(e, r + i, o - i) : B(e, r + i, o - i); + break; + default: + a = -1; + } + if (-1 == a) return l ? 0 : -1; + i += a; + } + return i; + }, + q = function (e) { + var t, n; + (z(), (y = e), (v = 0)); + for (var r = new Array(1024), o = []; (t = F(r, 0, r.length)) > 0; ) { + var i = new Array(t); + for (n = 0; t > n; n++) i[n] = String.fromCharCode(r[n]); + o[o.length] = i.join(''); + } + return ((y = null), o.join('')); + }; + (e.RawDeflate || (e.RawDeflate = {}), (e.RawDeflate.inflate = q)); + })(this), + 'object' != typeof JSON && (JSON = {}), + (function () { + 'use strict'; + function f(e) { + return 10 > e ? '0' + e : e; + } + function this_value() { + return this.valueOf(); + } + function quote(e) { + return ( + (escapable.lastIndex = 0), + escapable.test(e) + ? '"' + + e.replace(escapable, function (e) { + var t = meta[e]; + return 'string' == typeof t ? t : '\\u' + ('0000' + e.charCodeAt(0).toString(16)).slice(-4); + }) + + '"' + : '"' + e + '"' + ); + } + function str(e, t) { + var n, + r, + o, + i, + a, + s = gap, + u = t[e]; + switch ( + (u && 'object' == typeof u && 'function' == typeof u.toJSON && (u = u.toJSON(e)), + 'function' == typeof rep && (u = rep.call(t, e, u)), + typeof u) + ) { + case 'string': + return quote(u); + case 'number': + return isFinite(u) ? String(u) : 'null'; + case 'boolean': + case 'null': + return String(u); + case 'object': + if (!u) return 'null'; + if (((gap += indent), (a = []), '[object Array]' === Object.prototype.toString.apply(u))) { + for (i = u.length, n = 0; i > n; n += 1) a[n] = str(n, u) || 'null'; + return ( + (o = + 0 === a.length + ? '[]' + : gap + ? '[\n' + gap + a.join(',\n' + gap) + '\n' + s + ']' + : '[' + a.join(',') + ']'), + (gap = s), + o + ); + } + if (rep && 'object' == typeof rep) + for (i = rep.length, n = 0; i > n; n += 1) + 'string' == typeof rep[n] && + ((r = rep[n]), (o = str(r, u)), o && a.push(quote(r) + (gap ? ': ' : ':') + o)); + else + for (r in u) + Object.prototype.hasOwnProperty.call(u, r) && + ((o = str(r, u)), o && a.push(quote(r) + (gap ? ': ' : ':') + o)); + return ( + (o = + 0 === a.length + ? '{}' + : gap + ? '{\n' + gap + a.join(',\n' + gap) + '\n' + s + '}' + : '{' + a.join(',') + '}'), + (gap = s), + o + ); + } + } + 'function' != typeof Date.prototype.toJSON && + ((Date.prototype.toJSON = function () { + return isFinite(this.valueOf()) + ? this.getUTCFullYear() + + '-' + + f(this.getUTCMonth() + 1) + + '-' + + f(this.getUTCDate()) + + 'T' + + f(this.getUTCHours()) + + ':' + + f(this.getUTCMinutes()) + + ':' + + f(this.getUTCSeconds()) + + 'Z' + : null; + }), + (Boolean.prototype.toJSON = this_value), + (Number.prototype.toJSON = this_value), + (String.prototype.toJSON = this_value)); + var cx, escapable, gap, indent, meta, rep; + ('function' != typeof JSON.stringify && + ((escapable = + /[\\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g), + (meta = { '\b': '\\b', ' ': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"': '\\"', '\\': '\\\\' }), + (JSON.stringify = function (e, t, n) { + var r; + if (((gap = ''), (indent = ''), 'number' == typeof n)) for (r = 0; n > r; r += 1) indent += ' '; + else 'string' == typeof n && (indent = n); + if (((rep = t), t && 'function' != typeof t && ('object' != typeof t || 'number' != typeof t.length))) + throw new Error('JSON.stringify'); + return str('', { '': e }); + })), + 'function' != typeof JSON.parse && + ((cx = + /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g), + (JSON.parse = function (text, reviver) { + function walk(e, t) { + var n, + r, + o = e[t]; + if (o && 'object' == typeof o) + for (n in o) + Object.prototype.hasOwnProperty.call(o, n) && + ((r = walk(o, n)), void 0 !== r ? (o[n] = r) : delete o[n]); + return reviver.call(e, t, o); + } + var j; + if ( + ((text = String(text)), + (cx.lastIndex = 0), + cx.test(text) && + (text = text.replace(cx, function (e) { + return '\\u' + ('0000' + e.charCodeAt(0).toString(16)).slice(-4); + })), + /^[\],:{}\s]*$/.test( + text + .replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@') + .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']') + .replace(/(?:^|:|,)(?:\s*\[)+/g, '') + )) + ) + return ((j = eval('(' + text + ')')), 'function' == typeof reviver ? walk({ '': j }, '') : j); + throw new SyntaxError('JSON.parse'); + }))); + })()); +var saveAs = + saveAs || + (function (e) { + 'use strict'; + if ('undefined' == typeof navigator || !/MSIE [1-9]\./.test(navigator.userAgent)) { + var t = e.document, + n = function () { + return e.URL || e.webkitURL || e; + }, + r = t.createElementNS('http://www.w3.org/1999/xhtml', 'a'), + o = 'download' in r, + i = function (e) { + var t = new MouseEvent('click'); + e.dispatchEvent(t); + }, + a = /Version\/[\d\.]+.*Safari/.test(navigator.userAgent), + s = e.webkitRequestFileSystem, + u = e.requestFileSystem || s || e.mozRequestFileSystem, + l = function (t) { + (e.setImmediate || e.setTimeout)(function () { + throw t; + }, 0); + }, + c = 'application/octet-stream', + d = 0, + f = 4e4, + m = function (e) { + var t = function () { + 'string' == typeof e ? n().revokeObjectURL(e) : e.remove(); + }; + setTimeout(t, f); + }, + p = function (e, t, n) { + t = [].concat(t); + for (var r = t.length; r--; ) { + var o = e['on' + t[r]]; + if ('function' == typeof o) + try { + o.call(e, n || e); + } catch (i) { + l(i); + } + } + }, + h = function (e) { + return /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type) + ? new Blob(['\ufeff', e], { type: e.type }) + : e; + }, + y = function (t, l, f) { + f || (t = h(t)); + var y, + v, + b, + g = this, + w = t.type, + I = !1, + E = function () { + p(g, 'writestart progress write writeend'.split(' ')); + }, + U = function () { + if (v && a && 'undefined' != typeof FileReader) { + var r = new FileReader(); + return ( + (r.onloadend = function () { + var e = r.result; + ((v.location.href = 'data:attachment/file' + e.slice(e.search(/[,;]/))), + (g.readyState = g.DONE), + E()); + }), + r.readAsDataURL(t), + void (g.readyState = g.INIT) + ); + } + if (((!I && y) || (y = n().createObjectURL(t)), v)) v.location.href = y; + else { + var o = e.open(y, '_blank'); + void 0 === o && a && (e.location.href = y); + } + ((g.readyState = g.DONE), E(), m(y)); + }, + T = function (e) { + return function () { + return g.readyState !== g.DONE ? e.apply(this, arguments) : void 0; + }; + }, + A = { create: !0, exclusive: !1 }; + return ( + (g.readyState = g.INIT), + l || (l = 'download'), + o + ? ((y = n().createObjectURL(t)), + void setTimeout(function () { + ((r.href = y), (r.download = l), i(r), E(), m(y), (g.readyState = g.DONE)); + })) + : (e.chrome && w && w !== c && ((b = t.slice || t.webkitSlice), (t = b.call(t, 0, t.size, c)), (I = !0)), + s && 'download' !== l && (l += '.download'), + (w === c || s) && (v = e), + u + ? ((d += t.size), + void u( + e.TEMPORARY, + d, + T(function (e) { + e.root.getDirectory( + 'saved', + A, + T(function (e) { + var n = function () { + e.getFile( + l, + A, + T(function (e) { + e.createWriter( + T(function (n) { + ((n.onwriteend = function (t) { + ((v.location.href = e.toURL()), + (g.readyState = g.DONE), + p(g, 'writeend', t), + m(e)); + }), + (n.onerror = function () { + var e = n.error; + e.code !== e.ABORT_ERR && U(); + }), + 'writestart progress write abort'.split(' ').forEach(function (e) { + n['on' + e] = g['on' + e]; + }), + n.write(t), + (g.abort = function () { + (n.abort(), (g.readyState = g.DONE)); + }), + (g.readyState = g.WRITING)); + }), + U + ); + }), + U + ); + }; + e.getFile( + l, + { create: !1 }, + T(function (e) { + (e.remove(), n()); + }), + T(function (e) { + e.code === e.NOT_FOUND_ERR ? n() : U(); + }) + ); + }), + U + ); + }), + U + )) + : void U()) + ); + }, + v = y.prototype, + b = function (e, t, n) { + return new y(e, t, n); + }; + return 'undefined' != typeof navigator && navigator.msSaveOrOpenBlob + ? function (e, t, n) { + return (n || (e = h(e)), navigator.msSaveOrOpenBlob(e, t || 'download')); + } + : ((v.abort = function () { + var e = this; + ((e.readyState = e.DONE), p(e, 'abort')); + }), + (v.readyState = v.INIT = 0), + (v.WRITING = 1), + (v.DONE = 2), + (v.error = v.onwritestart = v.onprogress = v.onwrite = v.onabort = v.onerror = v.onwriteend = null), + b); + } + })(('undefined' != typeof self && self) || ('undefined' != typeof window && window) || this.content); +('undefined' != typeof module && module.exports + ? (module.exports.saveAs = saveAs) + : 'undefined' != typeof define && + null !== define && + null !== define.amd && + define([], function () { + return saveAs; + }), + String.prototype.endsWithAny || + (String.prototype.endsWithAny = function () { + for (var e = Array.prototype.slice.call(arguments), t = this.toLowerCase().toString(), n = 0; n < e.length; n++) + if (-1 !== t.indexOf(e[n], t.length - e[n].length)) return !0; + return !1; + })); +var saveTextAs = + saveTextAs || + function (e, t, n) { + if (((t = t || 'download.txt'), (n = n || 'utf-8'), (e = (e || '').replace(/\r?\n/g, '\r\n')), saveAs && Blob)) { + var r = new Blob([e], { type: 'text/plain;charset=' + n }); + return (saveAs(r, t), !0); + } + var o = window.frames.saveTxtWindow; + if ( + !o && + ((o = document.createElement('iframe')), + (o.id = 'saveTxtWindow'), + (o.style.display = 'none'), + document.body.insertBefore(o, null), + (o = window.frames.saveTxtWindow), + !o && ((o = window.open('', '_temp', 'width=100,height=100')), !o)) + ) + return (window.alert('Sorry, download file could not be created.'), !1); + var i = o.document; + (i.open('text/plain', 'replace'), + (i.charset = n), + t.endsWithAny('.htm', '.html') + ? (i.close(), (i.body.innerHTML = '\r\n' + e + '\r\n')) + : (t.endsWithAny('.txt') || (t += '.txt'), i.write(e), i.close())); + var a = i.execCommand('SaveAs', null, t); + return (o.close(), a); + }; +(!(function (e) { + 'use strict'; + if (((e.URL = e.URL || e.webkitURL), e.Blob && e.URL)) + try { + return void new Blob(); + } catch (t) {} + var n = + e.BlobBuilder || + e.WebKitBlobBuilder || + e.MozBlobBuilder || + (function (e) { + var t = function (e) { + return Object.prototype.toString.call(e).match(/^\[object\s(.*)\]$/)[1]; + }, + n = function () { + this.data = []; + }, + r = function (e, t, n) { + ((this.data = e), (this.size = e.length), (this.type = t), (this.encoding = n)); + }, + o = n.prototype, + i = r.prototype, + a = e.FileReaderSync, + s = function (e) { + this.code = this[(this.name = e)]; + }, + u = + 'NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR'.split( + ' ' + ), + l = u.length, + c = e.URL || e.webkitURL || e, + d = c.createObjectURL, + f = c.revokeObjectURL, + m = c, + p = e.btoa, + h = e.atob, + y = e.ArrayBuffer, + v = e.Uint8Array, + b = /^[\w-]+:\/*\[?[\w\.:-]+\]?(?::[0-9]+)?/; + for (r.fake = i.fake = !0; l--; ) s.prototype[u[l]] = l + 1; + return ( + c.createObjectURL || + (m = e.URL = + function (e) { + var t, + n = document.createElementNS('http://www.w3.org/1999/xhtml', 'a'); + return ( + (n.href = e), + 'origin' in n || + ('data:' === n.protocol.toLowerCase() + ? (n.origin = null) + : ((t = e.match(b)), (n.origin = t && t[1]))), + n + ); + }), + (m.createObjectURL = function (e) { + var t, + n = e.type; + return ( + null === n && (n = 'application/octet-stream'), + e instanceof r + ? ((t = 'data:' + n), + 'base64' === e.encoding + ? t + ';base64,' + e.data + : 'URI' === e.encoding + ? t + ',' + decodeURIComponent(e.data) + : p + ? t + ';base64,' + p(e.data) + : t + ',' + encodeURIComponent(e.data)) + : d + ? d.call(c, e) + : void 0 + ); + }), + (m.revokeObjectURL = function (e) { + 'data:' !== e.substring(0, 5) && f && f.call(c, e); + }), + (o.append = function (e) { + var n = this.data; + if (v && (e instanceof y || e instanceof v)) { + for (var o = '', i = new v(e), u = 0, l = i.length; l > u; u++) o += String.fromCharCode(i[u]); + n.push(o); + } else if ('Blob' === t(e) || 'File' === t(e)) { + if (!a) throw new s('NOT_READABLE_ERR'); + var c = new a(); + n.push(c.readAsBinaryString(e)); + } else + e instanceof r + ? 'base64' === e.encoding && h + ? n.push(h(e.data)) + : 'URI' === e.encoding + ? n.push(decodeURIComponent(e.data)) + : 'raw' === e.encoding && n.push(e.data) + : ('string' != typeof e && (e += ''), n.push(unescape(encodeURIComponent(e)))); + }), + (o.getBlob = function (e) { + return (arguments.length || (e = null), new r(this.data.join(''), e, 'raw')); + }), + (o.toString = function () { + return '[object BlobBuilder]'; + }), + (i.slice = function (e, t, n) { + var o = arguments.length; + return (3 > o && (n = null), new r(this.data.slice(e, o > 1 ? t : this.data.length), n, this.encoding)); + }), + (i.toString = function () { + return '[object Blob]'; + }), + (i.close = function () { + ((this.size = 0), delete this.data); + }), + n + ); + })(e); + e.Blob = function (e, t) { + var r = t ? t.type || '' : '', + o = new n(); + if (e) + for (var i = 0, a = e.length; a > i; i++) + Uint8Array && e[i] instanceof Uint8Array ? o.append(e[i].buffer) : o.append(e[i]); + var s = o.getBlob(r); + return (!s.slice && s.webkitSlice && (s.slice = s.webkitSlice), s); + }; + var r = + Object.getPrototypeOf || + function (e) { + return e.__proto__; + }; + e.Blob.prototype = r(new e.Blob()); +})(('undefined' != typeof self && self) || ('undefined' != typeof window && window) || this.content || this), + (function (e, t) { + function n(n, l, c) { + var m = []; + l = 1 == l ? { entropy: !0 } : l || {}; + var b = a(i(l.entropy ? [n, u(e)] : null == n ? s() : n, 3), m), + g = new r(m), + w = function () { + for (var e = g.g(f), t = h, n = 0; y > e; ) ((e = (e + n) * d), (t *= d), (n = g.g(1))); + for (; e >= v; ) ((e /= 2), (t /= 2), (n >>>= 1)); + return (e + n) / t; + }; + return ( + (w.int32 = function () { + return 0 | g.g(4); + }), + (w.quick = function () { + return g.g(4) / (4 * (1 << 30)); + }), + (w['double'] = w), + a(u(g.S), e), + ( + l.pass || + c || + function (e, n, r, i) { + return ( + i && + (i.S && o(i, g), + (e.state = function () { + return o(g, {}); + })), + r ? ((t[p] = e), n) : e + ); + } + )(w, b, 'global' in l ? l.global : this == t, l.state) + ); + } + function r(e) { + var t, + n = e.length, + r = this, + o = 0, + i = (r.i = r.j = 0), + a = (r.S = []); + for (n || (e = [n++]); d > o; ) a[o] = o++; + for (o = 0; d > o; o++) ((a[o] = a[(i = b & (i + e[o % n] + (t = a[o])))]), (a[i] = t)); + (r.g = function (e) { + for (var t, n = 0, o = r.i, i = r.j, a = r.S; e--; ) + ((t = a[(o = b & (o + 1))]), (n = n * d + a[b & ((a[o] = a[(i = b & (i + t))]) + (a[i] = t))])); + return ((r.i = o), (r.j = i), n); + })(d); + } + function o(e, t) { + return ((t.i = e.i), (t.j = e.j), (t.S = e.S.slice()), t); + } + function i(e, t) { + var n, + r = [], + o = typeof e; + if (t && 'object' == o) + for (n in e) + try { + r.push(i(e[n], t - 1)); + } catch (a) {} + return r.length ? r : 'string' == o ? e : e + '\x00'; + } + function a(e, t) { + for (var n, r = e + '', o = 0; o < r.length; ) t[b & o] = b & ((n ^= 19 * t[b & o]) + r.charCodeAt(o++)); + return u(t); + } + function s() { + try { + if (l) return u(l.randomBytes(d)); + var t = new Uint8Array(d); + return (c.crypto.getRandomValues(t), u(t)); + } catch (n) { + var r = c.navigator, + o = r && r.plugins; + return [+new Date(), c, o, c.screen, u(e)]; + } + } + function u(e) { + return String.fromCharCode.apply(0, e); + } + var l, + c = this, + d = 256, + f = 6, + m = 52, + p = 'random', + h = t.pow(d, f), + y = t.pow(2, m), + v = 2 * y, + b = d - 1; + if (((t['seed' + p] = n), a(t.random(), e), 'object' == typeof module && module.exports)) { + module.exports = n; + try { + l = require('crypto'); + } catch (g) {} + } else + 'function' == typeof define && + define.amd && + define(function () { + return n; + }); + })([], Math), + Math.seedrandom('TestMyBrain'), + (function (e, t) { + 'use strict'; + function n(e) { + return ((p[m] = r.apply(t, e)), m++); + } + function r(e) { + var n = [].slice.call(arguments, 1); + return function () { + 'function' == typeof e ? e.apply(t, n) : new Function('' + e)(); + }; + } + function o(e) { + if (h) setTimeout(r(o, e), 0); + else { + var t = p[e]; + if (t) { + h = !0; + try { + t(); + } finally { + (i(e), (h = !1)); + } + } + } + } + function i(e) { + delete p[e]; + } + function a() { + f = function () { + var e = n(arguments); + return (process.nextTick(r(o, e)), e); + }; + } + function s() { + if (e.postMessage && !e.importScripts) { + var t = !0, + n = e.onmessage; + return ( + (e.onmessage = function () { + t = !1; + }), + e.postMessage('', '*'), + (e.onmessage = n), + t + ); + } + } + function u() { + var t = 'setImmediate$' + Math.random() + '$', + r = function (n) { + n.source === e && 'string' == typeof n.data && 0 === n.data.indexOf(t) && o(+n.data.slice(t.length)); + }; + (e.addEventListener ? e.addEventListener('message', r, !1) : e.attachEvent('onmessage', r), + (f = function () { + var r = n(arguments); + return (e.postMessage(t + r, '*'), r); + })); + } + function l() { + var e = new MessageChannel(); + ((e.port1.onmessage = function (e) { + var t = e.data; + o(t); + }), + (f = function () { + var t = n(arguments); + return (e.port2.postMessage(t), t); + })); + } + function c() { + var e = y.documentElement; + f = function () { + var t = n(arguments), + r = y.createElement('script'); + return ( + (r.onreadystatechange = function () { + (o(t), (r.onreadystatechange = null), e.removeChild(r), (r = null)); + }), + e.appendChild(r), + t + ); + }; + } + function d() { + f = function () { + var e = n(arguments); + return (setTimeout(r(o, e), 0), e); + }; + } + if (!e.setImmediate) { + var f, + m = 1, + p = {}, + h = !1, + y = e.document, + v = Object.getPrototypeOf && Object.getPrototypeOf(e); + ((v = v && v.setTimeout ? v : e), + '[object process]' === {}.toString.call(e.process) + ? a() + : s() + ? u() + : e.MessageChannel + ? l() + : y && 'onreadystatechange' in y.createElement('script') + ? c() + : d(), + (v.setImmediate = f), + (v.clearImmediate = i)); + } + })(new Function('return this')()), + Array.prototype.shuffle || + (Array.prototype.shuffle = function () { + for ( + var e, t, n = this.length; + n; + e = parseInt(Math.random() * n), t = this[--n], this[n] = this[e], this[e] = t + ); + return this; + }), + Array.prototype.random || + (Array.prototype.random = function () { + return this[randInt(this.length)]; + }), + Array.prototype.invoke || + (Array.prototype.invoke = function (e) { + var t = this.length >>> 0; + if ('function' != typeof e) throw new TypeError('Argument is not a function.', 'Array.prototype.invoke'); + for (var n = arguments[1], r = [], o = 0; t > o; o++) o in this && r.push(e.call(n, this[o])); + return r; + }), + Array.prototype.pluck || + (Array.prototype.pluck = function (e) { + 'use strict'; + if (!e || 'string' != typeof e) throw new TypeError('Argument must be a string.'); + return this.map(function (t) { + var n; + return (n = void 0 !== t[e] ? ('function' == typeof t[e] ? t[e]() : t[e]) : void 0); + }); + }), + Array.prototype.unique || + (Array.prototype.unique = function () { + 'use strict'; + return this.reduce(function (e, t) { + return (-1 === e.indexOf(t) && e.push(t), e); + }, []); + }), + Array.prototype.includes || + (Array.prototype.includes = function (e) { + 'use strict'; + var t = Object(this), + n = parseInt(t.length) || 0; + if (0 === n) return !1; + var r, + o = parseInt(arguments[1]) || 0; + o >= 0 ? (r = o) : ((r = n + o), 0 > r && (r = 0)); + for (var i; n > r; ) { + if (((i = t[r]), e === i || (e !== e && i !== i))) return !0; + r++; + } + return !1; + }), + Array.prototype.contains || (Array.prototype.contains = Array.prototype.includes), + Array.prototype.fill || + (Array.prototype.fill = function (e) { + if (null === this) throw new TypeError("'this' is null or not defined"); + for ( + var t = Object(this), + n = t.length >>> 0, + r = arguments[1], + o = r >> 0, + i = 0 > o ? Math.max(n + o, 0) : Math.min(o, n), + a = arguments[2], + s = void 0 === a ? n : a >> 0, + u = 0 > s ? Math.max(n + s, 0) : Math.min(s, n); + u > i; + ) + ((t[i] = e), i++); + return t; + }), + Array.prototype.flatten || + (Array.prototype.flatten = function e() { + for (var t = [], n = 0, r = this.length; r > n; n++) { + var o = Object.prototype.toString.call(this[n]).split(' ').pop().split(']').shift().toLowerCase(); + o && (t = t.concat(/^(array|collection|arguments)$/.test(o) ? e.call(this[n]) : this[n])); + } + return t; + }), + Array.prototype.partition || + (Array.prototype.partition = function (e) { + if ('function' != typeof e) throw new TypeError('Argument of Array.prototype.partition must be a function.'); + for (var t, n = [], r = [], o = 0, i = this.length; i > o; o++) ((t = this[o]), e(t) ? n.push(t) : r.push(t)); + return [n, r]; + }), + Array.prototype.zip || + (Array.prototype.zip = function (e) { + var t = []; + if (e.length !== this.length) throw new TypeError('Array.prototype.zip: arrays must be equal length'); + for (var n = 0, r = this.length; r > n; n++) t.push([this[n], e[n]]); + return t; + }), + Array.prototype.sum || + (Array.prototype.sum = function () { + for (var e = this.length, t = 0; e--; ) t += this[e]; + return t; + }), + Array.prototype.average || + (Array.prototype.average = function () { + return this.length ? this.sum() / this.length : null; + }), + Array.prototype.variance || + (Array.prototype.variance = function () { + if (!this.length) return null; + var e, + t, + n, + r, + o = 0, + i = 0; + for (t = this.average(), n = this.length, e = 0; n > e; e++) ((r = this[e] - t), (o += r * r), (i += r)); + return ((i *= i / n), (o - i) / (n - 1)); + }), + Array.prototype.sd || + (Array.prototype.sd = function () { + if (!this.length) return null; + var e = this.variance(); + return Math.sqrt(e); + }), + Array.prototype.median || + (Array.prototype.median = function () { + if (!this.length) return null; + var e = this.slice(), + t = Math.floor(e.length / 2); + return ( + e.sort(function (e, t) { + return e - t; + }), + e.length % 2 === 1 ? e[t] : (e[t - 1] + e[t]) / 2 + ); + })); +var tmbObjs = { params: {}, elements: {}, frames: {}, slides: {} }; +tmbObjs.params = location.href.split('?')[1] + ? location.href + .split('?')[1] + .split('&') + .reduce(function (e, t) { + return ((e[t.split('=')[0]] = t.split('=')[1]), e); + }, {}) + : {}; +var zen = tmbObjs, + hasTouch = 'ontouchend' in window || navigator.maxTouchPoints || navigator.msMaxTouchPoints || !1, + hasPointer = window.PointerEvent || window.MSPointerEvent || !1; +(!(function () { + for ( + var e, + t = function () {}, + n = [ + 'assert', + 'clear', + 'count', + 'debug', + 'dir', + 'dirxml', + 'error', + 'exception', + 'group', + 'groupCollapsed', + 'groupEnd', + 'info', + 'log', + 'markTimeline', + 'profile', + 'profileEnd', + 'table', + 'time', + 'timeEnd', + 'timeline', + 'timelineEnd', + 'timeStamp', + 'trace', + 'warn' + ], + r = n.length, + o = (window.console = window.console || {}); + r--; + ) + ((e = n[r]), o[e] || (o[e] = t)); +})(), + (function () { + var e, t; + document.createElement && + (e = document.createElement('div')) && + ((e.id = '____loading_slide'), + (e.style.display = 'none'), + (e.style.textAlign = 'center'), + (e.style.paddingTop = '40px'), + (e.style.fontWeight = 'bold'), + (e.style.fontSize = 'x-large'), + (e.innerHTML = 'Working....'), + (t = setInterval(function () { + 'loading' !== document.readyState && (clearInterval(t), document.body.appendChild(e)); + }, 100)), + window.addEventListener( + 'beforeunload', + function () { + showFrame('____loading_slide'); + }, + !0 + )); + })()); +var $$$ = getID, + fixOrientation = fixMobileOrientation, + tmbUI = { + UIevents: [], + UIkeys: [], + UIelements: [], + highlight: '', + timeout: 1e4, + timeoutRef: 0, + onreadyUI: function () {}, + getInput: function () {}, + status: '', + message: '', + response: '', + downTimestamp: 0, + rt: 0, + upTimestamp: 0, + dwell: 0 + }; +tmbUI.getInput = function () { + function e(e) { + var t, n; + ((t = e), + t.preventDefault(), + t.stopPropagation(), + d === !1 && + (tmbUI.UIevents.includes('keys') && + 'keydown' === t.type && + ((n = t.charCode || t.keyCode), + (tmbUI.UIkeys.includes(n) || 0 === tmbUI.UIkeys.length) && + ((tmbUI.response = codeToKey(n)), + '' !== tmbUI.highlight && tmbUI.UIkeys.length > 0 && (a = getID(tmbUI.UIelements[tmbUI.UIkeys.indexOf(n)])), + (d = !0))), + tmbUI.UIevents.includes('clicks') && + ('mousedown' === t.type || + ('pointerdown' === t.type && 'mouse' === t.pointerType) || + ('MSPointerDown' === t.type && t.pointerType === t.MSPOINTER_TYPE_MOUSE)) && + (0 === tmbUI.UIelements.length + ? (tmbUI.response = 'document') + : (tmbUI.response = t.target ? t.target.id : t.srcElement.id), + '' !== tmbUI.highlight && (a = getID(tmbUI.response)), + (d = !0)), + tmbUI.UIevents.includes('taps') && + (('touchstart' !== t.type && + ('pointerdown' !== t.type || ('touch' !== t.pointerType && 'pen' !== t.pointerType)) && + ('MSPointerDown' !== t.type || + (t.pointerType !== t.MSPOINTER_TYPE_TOUCH && t.pointerType !== t.MSPOINTER_TYPE_PEN))) || + (0 === tmbUI.UIelements.length + ? (tmbUI.response = 'document') + : (tmbUI.response = t.target ? t.target.id : t.srcElement.id), + '' !== tmbUI.highlight && (a = getID(tmbUI.response)), + (d = !0))), + d === !0 && + ((tmbUI.rt = c), + (c = now()), + (tmbUI.rt = c - tmbUI.rt), + (tmbUI.rt = tmbUI.rt.round(2)), + (tmbUI.downTimestamp = c), + tmbUI.timeoutRef && clearTimeout(tmbUI.timeoutRef), + a && + (['div', 'span', 'button', 'p', 'img'].includes(a.tagName.toLowerCase()) + ? ((s = a.style.border), (a.style.border = '5px solid ' + tmbUI.highlight)) + : ['circle', 'rect', 'ellipse', 'line', 'path', 'polygon', 'polyline', 'image', 'text'].includes( + a.tagName.toLowerCase() + ) + ? ((u = a.style.stroke), + (l = a.style.strokeWidth), + (a.style.stroke = tmbUI.highlight), + (a.style.strokeWidth = 5)) + : ['shape'].includes(a.tagName.toLowerCase()) && + ((u = a.strokecolor), + (l = a.strokeweight), + (a.strokecolor = tmbUI.highlight), + (a.strokeweight = 5)))))); + } + function t(e) { + var t, + n = ['', '', 'touch', 'pen', 'mouse']; + ((t = e), + t.preventDefault(), + t.stopPropagation(), + d === !0 && + ((tmbUI.upTimestamp = now()), + (tmbUI.dwell = tmbUI.upTimestamp - c), + (tmbUI.dwell = tmbUI.dwell.round(2)), + (tmbUI.status = t.type), + 'pointerup' === t.type + ? (tmbUI.status += '-' + t.pointerType) + : 'MSPointerUp' === t.type && (tmbUI.status += '-' + n[t.pointerType]), + r(), + o())); + } + function n() { + if ( + (tmbUI.UIevents.includes('keys') && + (document.addEventListener('keydown', e, !0), document.addEventListener('keyup', t, !0)), + tmbUI.UIevents.includes('clicks')) + ) + if (0 === tmbUI.UIelements.length) + window.PointerEvent + ? (document.body.addEventListener('pointerdown', e, !0), document.body.addEventListener('pointerup', t, !0)) + : window.MSPointerEvent + ? (document.body.addEventListener('MSPointerDown', e, !0), + document.body.addEventListener('MSPointerUp', t, !0)) + : (document.addEventListener('mousedown', e, !0), document.addEventListener('mouseup', t, !0)); + else + for (i = 0; i < tmbUI.UIelements.length; i++) + window.PointerEvent + ? (getID(tmbUI.UIelements[i]).addEventListener('pointerdown', e, !0), + getID(tmbUI.UIelements[i]).addEventListener('pointerup', t, !0)) + : window.MSPointerEvent + ? (getID(tmbUI.UIelements[i]).addEventListener('MSPointerDown', e, !0), + getID(tmbUI.UIelements[i]).addEventListener('MSPointerUp', t, !0)) + : (getID(tmbUI.UIelements[i]).addEventListener('mousedown', e, !0), + getID(tmbUI.UIelements[i]).addEventListener('mouseup', t, !0)); + if (tmbUI.UIevents.includes('taps')) + if (0 === tmbUI.UIelements.length) + window.PointerEvent && !tmbUI.UIevents.includes('clicks') + ? (document.addEventListener('pointerdown', e, !0), document.addEventListener('pointerup', t, !0)) + : window.MSPointerEvent && !tmbUI.UIevents.includes('clicks') + ? (document.addEventListener('MSPointerDown', e, !0), document.addEventListener('MSPointerUp', t, !0)) + : hasTouch && + !hasPointer && + (document.addEventListener('touchstart', e, !0), document.addEventListener('touchend', t, !0)); + else + for (i = 0; i < tmbUI.UIelements.length; i++) + window.PointerEvent && !tmbUI.UIevents.includes('clicks') + ? (getID(tmbUI.UIelements[i]).addEventListener('pointerdown', e, !0), + getID(tmbUI.UIelements[i]).addEventListener('pointerup', t, !0)) + : window.MSPointerEvent && !tmbUI.UIevents.includes('clicks') + ? (getID(tmbUI.UIelements[i]).addEventListener('MSPointerDown', e, !0), + getID(tmbUI.UIelements[i]).addEventListener('MSPointerUp', t, !0)) + : hasTouch && + !hasPointer && + (getID(tmbUI.UIelements[i]).addEventListener('touchstart', e, !0), + getID(tmbUI.UIelements[i]).addEventListener('touchend', t, !0)); + } + function r() { + if ( + (tmbUI.UIevents.includes('keys') && + (document.removeEventListener('keydown', e, !0), document.removeEventListener('keyup', t, !0)), + tmbUI.UIevents.includes('clicks')) + ) + if (0 === tmbUI.UIelements.length) + window.PointerEvent + ? (document.body.removeEventListener('pointerdown', e, !0), + document.body.removeEventListener('pointerup', t, !0)) + : window.MSPointerEvent + ? (document.body.removeEventListener('MSPointerDown', e, !0), + document.body.removeEventListener('MSPointerUp', t, !0)) + : (document.removeEventListener('mousedown', e, !0), document.removeEventListener('mouseup', t, !0)); + else + for (i = 0; i < tmbUI.UIelements.length; i++) + window.PointerEvent + ? (getID(tmbUI.UIelements[i]).removeEventListener('pointerdown', e, !0), + getID(tmbUI.UIelements[i]).removeEventListener('pointerup', t, !0)) + : window.MSPointerEvent + ? (getID(tmbUI.UIelements[i]).removeEventListener('MSPointerDown', e, !0), + getID(tmbUI.UIelements[i]).removeEventListener('MSPointerUp', t, !0)) + : (getID(tmbUI.UIelements[i]).removeEventListener('mousedown', e, !0), + getID(tmbUI.UIelements[i]).removeEventListener('mouseup', t, !0)); + if (tmbUI.UIevents.includes('taps')) + if (0 === tmbUI.UIelements.length) + window.PointerEvent && !tmbUI.UIevents.includes('clicks') + ? (document.removeEventListener('pointerdown', e, !0), document.removeEventListener('pointerup', t, !0)) + : window.MSPointerEvent && !tmbUI.UIevents.includes('clicks') + ? (document.removeEventListener('MSPointerDown', e, !0), document.removeEventListener('MSPointerUp', t, !0)) + : hasTouch && + !hasPointer && + (document.removeEventListener('touchstart', e, !0), document.removeEventListener('touchend', t, !0)); + else + for (i = 0; i < tmbUI.UIelements.length; i++) + window.PointerEvent && !tmbUI.UIevents.includes('clicks') + ? (getID(tmbUI.UIelements[i]).removeEventListener('pointerdown', e, !0), + getID(tmbUI.UIelements[i]).removeEventListener('pointerup', t, !0)) + : window.MSPointerEvent && !tmbUI.UIevents.includes('clicks') + ? (getID(tmbUI.UIelements[i]).removeEventListener('MSPointerDown', e, !0), + getID(tmbUI.UIelements[i]).removeEventListener('MSPointerUp', t, !0)) + : hasTouch && + !hasPointer && + (getID(tmbUI.UIelements[i]).removeEventListener('touchstart', e, !0), + getID(tmbUI.UIelements[i]).removeEventListener('touchend', t, !0)); + } + function o() { + if ((tmbUI.timeoutRef && (clearTimeout(tmbUI.timeoutRef), (tmbUI.timeoutRef = 0)), a)) + setTimeout(function () { + ['div', 'span', 'button', 'p', 'img'].includes(a.tagName.toLowerCase()) + ? (a.style.border = s) + : ['circle', 'rect', 'ellipse', 'line', 'path', 'polygon', 'polyline', 'image', 'text'].includes( + a.tagName.toLowerCase() + ) + ? ((a.style.stroke = u), (a.style.strokeWidth = l)) + : ['shape'].includes(a.tagName.toLowerCase()) && ((a.strokecolor = u), (a.strokeweight = l)); + var e = new CustomEvent('readyUI'); + (document.addEventListener('readyUI', tmbUI.onreadyUI, !0), + document.dispatchEvent(e), + document.removeEventListener('readyUI', tmbUI.onreadyUI, !0)); + }, 250); + else { + var e = new CustomEvent('readyUI'); + (document.addEventListener('readyUI', tmbUI.onreadyUI, !0), + document.dispatchEvent(e), + document.removeEventListener('readyUI', tmbUI.onreadyUI, !0)); + } + } + var i, + a, + s, + u, + l, + c = now(), + d = !1, + f = ''; + for (var m in tmbUI) + if (tmbUI.hasOwnProperty(m)) + switch (m) { + case 'UIevents': + for ( + 0 === tmbUI.UIevents.length && (f += "Must specify UIevents: 'keys', 'clicks' or 'taps'. "), + tmbUI.UIevents instanceof Array || (tmbUI.UIevents = [tmbUI.UIevents]), + i = 0; + i < tmbUI.UIevents.length; + i++ + ) + ['keys', 'clicks', 'taps'].includes(tmbUI.UIevents[i]) || + (f += "'" + tmbUI.UIevents[i] + "' is not a valid event. "); + !tmbUI.UIevents.includes('taps') || hasTouch || hasPointer || (f += "'taps' is not a valid event. "); + break; + case 'UIkeys': + for (tmbUI.UIkeys instanceof Array || (tmbUI.UIkeys = [tmbUI.UIkeys]), i = 0; i < tmbUI.UIkeys.length; i++) + keyboardCodes[tmbUI.UIkeys[i]] || (f += "'" + tmbUI.UIkeys[i] + "' is not a valid keyboard code. "); + break; + case 'UIelements': + for ( + tmbUI.UIelements instanceof Array || (tmbUI.UIelements = [tmbUI.UIelements]), i = 0; + i < tmbUI.UIelements.length; + i++ + ) + getID(tmbUI.UIelements[i]) || (f += "'" + tmbUI.UIelements[i] + "' is not a valid element. "); + break; + case 'timeout': + tmbUI.timeout < 150 && (f += 'Timeout is ' + tmbUI.timeout + ' ms, must be > 150 ms. '); + break; + case 'timeoutRef': + if (0 !== tmbUI.timeoutRef) return ((tmbUI.message += "'getInput' called again while still busy. "), !1); + break; + case 'highlight': + if ('' !== tmbUI.highlight) { + var p = document.createElement('div'); + ((p.style.color = 'rgb(0, 0, 0)'), + (p.style.color = tmbUI.highlight), + 'rgb(0, 0, 0)' === p.style.color && + ((p.style.color = 'rgb(255, 255, 255)'), + (p.style.color = tmbUI.highlight), + 'rgb(255, 255, 255)' === p.style.color && + (f += "'highlight' must be empty string or valid CSS color. "))); + } + break; + case 'onreadyUI': + break; + case 'getInput': + break; + case 'status': + tmbUI.status = ''; + break; + case 'message': + tmbUI.message = ''; + break; + case 'response': + tmbUI.response = ''; + break; + case 'downTimestamp': + tmbUI.downTimestamp = 0; + break; + case 'rt': + tmbUI.rt = 0; + break; + case 'upTimestamp': + tmbUI.upTimestamp = 0; + break; + case 'dwell': + tmbUI.dwell = 0; + break; + default: + f += "Invalid parameter '" + m + "'. "; + } + if ( + (tmbUI.UIkeys.length > 0 && !tmbUI.UIevents.includes('keys') && (f += "Need 'keys' in UIevents for valid keys. "), + tmbUI.UIkeys.length && + tmbUI.UIelements.length && + tmbUI.UIelements.length < tmbUI.UIkeys.length && + (f += "Invalid number of UIelements, more 'keys' than 'UIelements'. "), + 0 === tmbUI.UIelements.length && '' !== tmbUI.highlight && (f += 'No elements to highlight. '), + f) + ) { + ((tmbUI.status = 'error'), (tmbUI.message = f)); + var h = new CustomEvent('readyUI'); + return ( + document.addEventListener('readyUI', tmbUI.onreadyUI, !0), + document.dispatchEvent(h), + document.removeEventListener('readyUI', tmbUI.onreadyUI, !0), + !1 + ); + } + return ( + (tmbUI.timeoutRef = setTimeout(function () { + ((tmbUI.status = 'timeout'), (tmbUI.message += 'Timeout: no response in ' + tmbUI.timeout + ' ms.'), r(), o()); + }, tmbUI.timeout)), + n(), + !1 + ); +}; +var simulateMobileMouse = function (e) { + (e.addEventListener('touchstart', mobileTouchHandler), + e.addEventListener('touchmove', mobileTouchHandler), + e.addEventListener('touchend', mobileTouchHandler), + e.addEventListener('touchcancel', mobileTouchHandler)); + }, + mobileTouchHandler = function (e) { + switch ((e.preventDefault(), e.type)) { + case 'touchstart': + if (1 !== e.changedTouches.length) return; + ((this.touchMoved = !1), + simulateMobileMouseEvent(e, 'mouseover'), + simulateMobileMouseEvent(e, 'mousemove'), + simulateMobileMouseEvent(e, 'mousedown')); + break; + case 'touchmove': + if (1 !== e.changedTouches.length) return; + ((this.touchMoved = !0), simulateMobileMouseEvent(e, 'mousemove')); + break; + case 'touchend': + if (1 !== e.changedTouches.length) return; + (simulateMobileMouseEvent(e, 'mouseup'), + simulateMobileMouseEvent(e, 'mouseout'), + this.touchMoved || simulateMobileMouseEvent(e, 'click')); + break; + default: + return; + } + }, + keyboardCodes = { + 8: 'backspace', + 9: 'tab', + 13: 'enter', + 16: 'shift', + 17: 'control', + 18: 'alt', + 19: 'pause', + 20: 'capslock', + 27: 'escape', + 32: 'space', + 33: 'pageup', + 34: 'pagedown', + 35: 'end', + 36: 'home', + 37: 'left', + 38: 'up', + 39: 'right', + 40: 'down', + 45: 'insert', + 46: 'delete', + 48: '0', + 49: '1', + 50: '2', + 51: '3', + 52: '4', + 53: '5', + 54: '6', + 55: '7', + 56: '8', + 57: '9', + 59: ';', + 61: '=', + 65: 'a', + 66: 'b', + 67: 'c', + 68: 'd', + 69: 'e', + 70: 'f', + 71: 'g', + 72: 'h', + 73: 'i', + 74: 'j', + 75: 'k', + 76: 'l', + 77: 'm', + 78: 'n', + 79: 'o', + 80: 'p', + 81: 'q', + 82: 'r', + 83: 's', + 84: 't', + 85: 'u', + 86: 'v', + 87: 'w', + 88: 'x', + 89: 'y', + 90: 'z', + 91: 'OSleft', + 92: 'OSright', + 93: 'OSright', + 96: 'numpad0', + 97: 'numpad1', + 98: 'numpad2', + 99: 'numpad3', + 100: 'numpad4', + 101: 'numpad5', + 102: 'numpad6', + 103: 'numpad7', + 104: 'numpad8', + 105: 'numpad9', + 106: 'numpadmultiply', + 107: 'numpadadd', + 109: 'numpadsubtract', + 110: 'numpaddecimal', + 111: 'numpaddivide', + 112: 'f1', + 113: 'f2', + 114: 'f3', + 115: 'f4', + 116: 'f5', + 117: 'f6', + 118: 'f7', + 119: 'f8', + 120: 'f9', + 121: 'f10', + 122: 'f11', + 123: 'f12', + 124: 'f13', + 125: 'f14', + 126: 'f15', + 144: 'numlock', + 145: 'scrolllock', + 173: '-', + 186: ';', + 187: '=', + 188: ',', + 189: '-', + 190: '.', + 191: '/', + 192: '`', + 219: '[', + 220: '\\', + 221: ']', + 222: "'", + 224: 'command' + }, + keyValue = codeToKey, + keyboardKeys = { + backspace: 8, + tab: 9, + enter: 13, + return: 13, + shift: 16, + control: 17, + ctrl: 17, + alt: 18, + pause: 19, + capslock: 20, + escape: 27, + esc: 27, + space: 32, + spacebar: 32, + ' ': 32, + pageup: 33, + pagedown: 34, + end: 35, + home: 36, + leftarrow: 37, + left: 37, + uparrow: 38, + up: 38, + rightarrow: 39, + right: 39, + downarrow: 40, + down: 40, + insert: 45, + delete: 46, + 0: 48, + 1: 49, + 2: 50, + 3: 51, + 4: 52, + 5: 53, + 6: 54, + 7: 55, + 8: 56, + 9: 57, + a: 65, + b: 66, + c: 67, + d: 68, + e: 69, + f: 70, + g: 71, + h: 72, + i: 73, + j: 74, + k: 75, + l: 76, + m: 77, + n: 78, + o: 79, + p: 80, + q: 81, + r: 82, + s: 83, + t: 84, + u: 85, + v: 86, + w: 87, + x: 88, + y: 89, + z: 90, + A: 65, + B: 66, + C: 67, + D: 68, + E: 69, + F: 70, + G: 71, + H: 72, + I: 73, + J: 74, + K: 75, + L: 76, + M: 77, + N: 78, + O: 79, + P: 80, + Q: 81, + R: 82, + S: 83, + T: 84, + U: 85, + V: 86, + W: 87, + X: 88, + Y: 89, + Z: 90, + OSleft: 91, + commandleft: 91, + Windows: 91, + OSright: 92, + commandright: 93, + numpad0: 96, + numpad1: 97, + numpad2: 98, + numpad3: 99, + numpad4: 100, + numpad5: 101, + numpad6: 102, + numpad7: 103, + numpad8: 104, + numpad9: 105, + numpadmultiply: 106, + numpadadd: 107, + numpadsubtract: 109, + numpaddecimal: 110, + numpaddivide: 111, + f1: 112, + f2: 113, + f3: 114, + f4: 115, + f5: 116, + f6: 117, + f7: 118, + f8: 119, + f9: 120, + f10: 121, + f11: 122, + f12: 123, + f13: 124, + f14: 125, + f15: 126, + numlock: 144, + scrolllock: 145, + semicolon: 186, + ';': 186, + equal: 187, + '=': 187, + comma: 188, + ',': 188, + minus: 189, + '-': 189, + period: 190, + '.': 190, + slash: 191, + '/': 191, + backquote: 192, + '`': 192, + bracketleft: 219, + '[': 219, + backslash: 220, + '\\': 220, + bracketright: 221, + ']': 221, + quote: 222, + "'": 222, + command: 224 + }, + coinFlip = randInt; +Number.prototype.round || + (Number.prototype.round = function (e) { + if (('undefined' == typeof e && (e = 0), 'number' != typeof e || (e + 1) % 1 !== 0 || !(e + 1 > 0))) + throw new TypeError('Numer.prototype.round requires 0 or a natural number for precision argument'); + var t = Math.pow(10, e); + return Math.round(this * t) / t; + }); +var centimetersToDegrees = sizeToDegrees, + degreesToCentimeters = degreesToSize, + now = function () { + var e = window.performance || {}; + return ( + (e.now = (function () { + return ( + e.now || + e.webkitNow || + e.msNow || + e.oNow || + e.mozNow || + function () { + return new Date().getTime(); + } + ); + })()), + e.now() + ); + }, + chain = chainTimeouts, + clearChain = clearChainTimeouts, + urlsafedecode = safeDecode; diff --git a/lib/interactive/TMB_FLANKER_ATTENTION/chooseInput.v1.Feb24.js b/lib/interactive/TMB_FLANKER_ATTENTION/chooseInput.v1.Feb24.js new file mode 100644 index 0000000..ef43bd7 --- /dev/null +++ b/lib/interactive/TMB_FLANKER_ATTENTION/chooseInput.v1.Feb24.js @@ -0,0 +1,265 @@ +/* eslint-disable */ + +/* + + Copyright 2024 The Many Brains Project, Inc. and McLean Hospital. + + This code is made available under a GNU Lesser General Public License 3.0 + (LGPLv3). + https://www.gnu.org/licenses/lgpl-3.0.html. + + Author: Paolo Martini + Last updated: 02.27.2024 + Version: chooseInput.v1.Feb24 + +*/ + +function chooseInput(inputTypes, callback) { + /* Given valid inputTypes {'keyboard','mouse','touch'}, it returns + the user's choice as one of ['keys','clicks','taps'] + + Usage: + + chooseInput({keyboard: true, mouse: false, touch: true}, + function(input) {console.log(input);}); + */ + + let divs = [], + els, + errMsg = ' ', + lang, + msg = '', + oldAction = ''; + let centeredCell, centeredTable, choiceSpan, chooseInputBox, errSpan; + + if (inputTypes === null || typeof inputTypes !== 'object') + throw new TypeError('chooseInput: missing or invalid inputTypes object.'); + inputTypes.keyboard = inputTypes.keyboard || false; + inputTypes.mouse = inputTypes.mouse || false; + inputTypes.touch = inputTypes.touch || false; + + // dictionary + els = [ + { + en: 'Keyboard', // 0 + es: 'Teclado', + fr: 'Clavier', + zh: 'Keyboard', + 'zh-hk': 'Keyboard', + nl: 'Toetsenbord' + }, + { + en: 'Touch', // 1 + es: 'Pantalla táctil', + fr: 'Touche', + zh: 'Touch', + 'zh-hk': 'Touch', + nl: 'Scherm' + }, + { + en: 'Mouse / Trackpad', // 2 + es: 'Mouse / Trackpad', + fr: 'Souris / pavé tactile', + zh: 'Mouse / Trackpad', + 'zh-hk': 'Mouse / Trackpad', + nl: 'Muis / Trackpad' + }, + { + en: 'Pen', // 3 + es: 'El lápiz óptico', + fr: 'Stylo', + zh: 'Pen', + 'zh-hk': 'Pen', + nl: 'Pen' + }, + { + en: ' not valid for this test: try another input.', // 4 + es: ' no es válido para esta prueba: intente con otra entrada.', + fr: ' non valide pour ce test: essayez une autre entrée.', + zh: ' not valid for this test: try another input.', + 'zh-hk': ' not valid for this test: try another input.', + nl: ' niet mogelijk voor deze taak, probeer een andere reactiemethode.' + }, + { + en: '

    Please click here
    to choose how you will
    respond in this test.

    ', // 5 + es: '

    Por favor presione aquí para elegir cómo responderá en esta prueba.

    ', + fr: '

    Veuillez cliquer ici pour choisir comment vous allez répondre à ce test.

    ', + zh: '

    Please click here
    to choose how you will
    respond in this test.

    ', + 'zh-hk': '

    Please click here
    to choose how you will
    respond in this test.

    ', + nl: '

    Klik hier om te bepalen hoe
    je in deze test wil reageren.

    ' + }, + { + en: '- To use a keyboard, press any key now.

    ', // 6 + es: '- Para usar un teclado, presione cualquier tecla ahora.

    ', + fr: '- Pour utiliser le clavier, appuyez sur une touche maintenant.

    ', + zh: '- To use a keyboard, press any key now.

    ', + 'zh-hk': '- To use a keyboard, press any key now.

    ', + nl: '- Om het toetsenbord te gebruiken, druk nu op een toets

    ' + }, + { + en: '- To use a mouse or trackpad, click here now.

    ', // 7 + es: '- Para utilizar un mouse o un trackpad, presione aquí ahora.

    ', + fr: '- Pour utiliser une souris ou un pavé tactile, cliquez ici maintenant.

    ', + zh: '- To use a mouse or trackpad, click here now.

    ', + 'zh-hk': '- To use a mouse or trackpad, click here now.

    ', + nl: '- Om je muis of trackpad te gebruiken, klik nu hier.

    ' + }, + { + en: '- To use a touch screen, touch here now.

    ', // 8 + es: '- Para utilizar una pantalla táctil, toque aquí ahora.

    ', + fr: '- Pour utiliser un écran tactile, touchez ici maintenant.', + zh: '- To use a touch screen, touch here now.

    ', + 'zh-hk': '- To use a touch screen, touch here now.

    ', + nl: '- Om je touch screen te gebruiken, raak dit aan.

    ' + } + ]; + + // get the language + lang = document.documentElement.lang; + if (!els[0][lang]) lang = 'en'; + + // choice event handler + function getinput(e) { + let input; + errMsg = ''; + + e.preventDefault(); + e.stopPropagation(); + + // identify the event and validate by allowed input types; + // the order of checking is IMPORTANT: + // - pointer events with pen device will output pen->touch + // in Chrome + if (e.type === 'keyup') { + if (inputTypes.keyboard) input = 'keys'; + else errMsg = els[0][lang]; + } else if (e.type === 'pointerup' || e.type === 'MSPointerUp') { + if (e.pointerType === 'touch' || e.pointerType === e.MSPOINTER_TYPE_TOUCH) { + if (inputTypes.touch) input = 'taps'; + else errMsg = els[1][lang]; + } else if (e.pointerType === 'mouse' || e.pointerType === e.MSPOINTER_TYPE_MOUSE) { + if (inputTypes.mouse) input = 'clicks'; + else errMsg = els[2][lang]; + } else if (e.pointerType === 'pen' || e.pointerType === e.MSPOINTER_TYPE_PEN) { + if (inputTypes.touch) input = 'taps'; + else errMsg = els[3][lang]; + } + } else if (e.type === 'touchend') { + if (inputTypes.touch) input = 'taps'; + else errMsg = els[1][lang]; + } else if (e.type === 'mouseup') { + if (inputTypes.mouse) input = 'clicks'; + else errMsg = els[2][lang]; + } + + // warn if the user entered an invalid input + if (errMsg) errMsg += els[4][lang]; + errSpan.innerHTML = errMsg; + + // if we got a valid input, remove the listeners, + // remove the chooseInput div from the DOM, restore original display + // mode for other divs and return the input type + // to the callback function + if (input) { + document.removeEventListener('keyup', getinput, true); + if ('ontouchend' in window || navigator.maxTouchPoints || navigator.msMaxTouchPoints) + document.removeEventListener('touchend', getinput, true); + document.removeEventListener('mouseup', getinput, true); + if (window.PointerEvent) document.removeEventListener('pointerup', getinput, true); + else if (window.MSPointerEvent) document.removeEventListener('MSPointerUp', getinput, true); + + if ('touchAction' in document.body.style) document.body.style.touchAction = oldAction; + else if ('msTouchAction' in document.body.style) document.body.style.msTouchAction = oldAction; + + centeredTable.remove(); + + divs.forEach(function (d) { + d[0].style.display = d[1]; + }); + + if (callback) callback(input); + } + } + + function setup() { + // prevent default touch action + if ('touchAction' in document.body.style) { + oldAction = document.body.style.touchAction; + document.body.style.touchAction = 'none'; + } else if ('msTouchAction' in document.body.style) { + oldAction = document.body.style.msTouchAction; + document.body.style.msTouchAction = 'none'; + } + + // setup input listeners + document.addEventListener('keyup', getinput, true); + document.addEventListener('mouseup', getinput, true); + if ('ontouchend' in window || navigator.maxTouchPoints || navigator.msMaxTouchPoints) + document.addEventListener('touchend', getinput, true); + if (window.PointerEvent) document.addEventListener('pointerup', getinput, true); + else if (window.MSPointerEvent) document.addEventListener('MSPointerUp', getinput, true); + } + + function trigger() { + msg = ''; + if (inputTypes.keyboard) msg += els[6][lang]; + if (inputTypes.mouse) msg += els[7][lang]; + if (inputTypes.touch) msg += els[8][lang]; + + chooseInputBox.style.textAlign = 'left'; + choiceSpan.innerHTML = msg; + chooseInputBox.removeEventListener('click', trigger, true); + setup(); + } + + // hide all existing divs + [].forEach.call(document.getElementsByTagName('div'), function (d) { + divs.push([d, window.getComputedStyle(d).getPropertyValue('display')]); + d.style.display = 'none'; + }); + + // create elements to output the choice message + centeredTable = document.createElement('div'); + centeredTable.id = 'centeredTable'; + centeredTable.style.boxSizing = 'border-box'; + centeredTable.style.display = 'table'; + centeredTable.style.margin = 'auto'; + centeredTable.style.height = 'inherit'; //document.body.clientHeight + "px"; + centeredTable.style.width = 'inherit'; //document.body.clientWidth + "px"; + centeredTable.style.padding = '0 5% 0 5%'; + centeredTable.style.textAlign = 'center'; + centeredTable.style.fontFamily = '\"Helvetica Neue\",Helvetica,Arial,sans-serif'; + document.body.appendChild(centeredTable); + + centeredCell = document.createElement('div'); + centeredCell.id = 'centeredCell'; + centeredCell.style.display = 'table-cell'; + centeredCell.style.verticalAlign = 'middle'; + centeredTable.appendChild(centeredCell); + + chooseInputBox = document.createElement('div'); + chooseInputBox.id = 'chooseInput'; + chooseInputBox.style.margin = 'auto'; + chooseInputBox.style.maxWidth = '450px'; + chooseInputBox.style.border = 'solid 2px #f1c40f'; + chooseInputBox.style.borderRadius = '1em'; + chooseInputBox.style.background = '#f7f7f7'; + chooseInputBox.style.padding = '10px'; + chooseInputBox.style.fontSize = '18pt'; + centeredCell.appendChild(chooseInputBox); + + choiceSpan = document.createElement('span'); + choiceSpan.id = 'choiceMsg'; + chooseInputBox.appendChild(choiceSpan); + choiceSpan.innerHTML = els[5][lang]; + + errSpan = document.createElement('span'); + errSpan.id = 'errMsg'; + errSpan.style.color = 'red'; + errSpan.style.fontSize = '14pt'; + chooseInputBox.appendChild(errSpan); + errSpan.innerHTML = ' '; + + // trigger the choice + chooseInputBox.addEventListener('click', trigger, true); +} diff --git a/lib/interactive/TMB_FLANKER_ATTENTION/fingerLeft.png b/lib/interactive/TMB_FLANKER_ATTENTION/fingerLeft.png new file mode 100644 index 0000000000000000000000000000000000000000..e08252c05647289628926e6b1d5c9675ad6cfaad GIT binary patch literal 6752 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 literal 0 HcmV?d00001 diff --git a/lib/interactive/TMB_FLANKER_ATTENTION/fingerRight.png b/lib/interactive/TMB_FLANKER_ATTENTION/fingerRight.png new file mode 100644 index 0000000000000000000000000000000000000000..d1679c2cf46a35cbfbbf65b164e5941937cd38fe GIT binary patch literal 6456 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 Q{2!pApz)|g&f@w102czr1^@s6 literal 0 HcmV?d00001 diff --git a/lib/interactive/TMB_FLANKER_ATTENTION/fingerUp.png b/lib/interactive/TMB_FLANKER_ATTENTION/fingerUp.png new file mode 100644 index 0000000000000000000000000000000000000000..1c57ebe70785f201cae3bc2e4dc2a551ae859aa9 GIT binary patch literal 6436 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 Uok^kQcW?hna_X{GG8QlX2XK>yF8}}l literal 0 HcmV?d00001 diff --git a/lib/interactive/TMB_FLANKER_ATTENTION/font.ts b/lib/interactive/TMB_FLANKER_ATTENTION/font.ts new file mode 100644 index 0000000..a90427e --- /dev/null +++ b/lib/interactive/TMB_FLANKER_ATTENTION/font.ts @@ -0,0 +1,5 @@ +// Inconsolata-Regular.ttf encoded as a base64 data URL so the monospace arrow +// glyphs render identically to the original TestMyBrain task, without relying +// on bundler-specific font asset handling. Injected as an @font-face in render.js. +export const inconsolataFontUrl = + 'data:font/ttf;base64,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/nAASwPoAAMACLEBAAAvLzAxUREzEUv+cAV4+ogAAAEAAP5wAJYD6AADAAixAQAALy8wMVERMxGW/nAFePqIAAABAAD+cADhA+gAAwAIsQEAAC8vMDFRETMR4f5wBXj6iAAAAQAA/nABLAPoAAMACLEBAAAvLzAxUREhEQEs/nAFePqIAAEAAP5wAXcD6AADAAixAQAALy8wMVERIREBd/5wBXj6iAABAAD+cAHCA+gAAwAIsQEAAC8vMDFRESERAcL+cAV4+ogAAQAA/nACDQPoAAMACLEBAAAvLzAxUREhEQIN/nAFePqIAAEBLP5wAlgD6AADAAixAQAALy8wMUERIREBLAEs/nAFePqIAAECDf5wAlgD6AADAAixAQAALy8wMUERMxECDUv+cAV4+ogAAAEAAP5wASwBLAADAAixAQAALy8wMVERIREBLP5wArz9RAABASz+cAJYASwAAwAIsQEAAC8vMDFBESERASwBLP5wArz9RAABAAABLAEsA+gAAwAIsQEAAC8vMDFRESERASwBLAK8/UQAAQAA/nACWAPoAAUACLEBAAAvLzAxUREhESERASwBLP5wBXj9RP1EAAEAAP5wAlgD6AAHAAixAwAALy8wMUERIREhESERASz+1AEsASz+cAK8Arz9RP1EAAEAAP5wAlgD6AAFAAixAQAALy8wMVERIREhEQJY/tT+cAV4/UT9RAABAAD+cAJYA+gABQAIsQMAAC8vMDFBESERIREBLP7UAlj+cAK8Arz6iAABASwBLAJYA+gAAwAIsQEAAC8vMDFBESERASwBLAEsArz9RAACAAD+cAJYA+gAAwAHAA60AQQEBQAALy85LzMwMVERIRkCIREBLAEs/nACvP1EArwCvP1EAAABAAD+cAJYA+gABQAIsQMAAC8vMDFRESERIREBLAEs/nACvAK8+ogAKgAU/okCRAPPAAMABwALAA8AEwAXABsAHwAjACcAKwAvADMANwA7AD8AQwBHAEsATwBTAFcAWwBfAGMAZwBrAG8AcwB3AHsAfwCDAIcAiwCPAJMAlwCbAJ8AowCnAABTNTMVMzUzFTM1MxUlNTMVMzUzFTM1MxUlNTMVMzUzFTM1MxUlNTMVMzUzFTM1MxUlNTMVMzUzFTM1MxUlNTMVMzUzFTM1MxUlNTMVMzUzFTM1MxUlNTMVMzUzFTM1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AlgAIAJYACACWAAgAlgAIAJYACACWAAgAlgAIAJYACACWAAgAlgAIAJYACACWAAgAlgAIAJYACACWAALAlgARwJYAEUCWAAiAlgAQwJYAEMCWABDAlgAQwJYAEMCWABDAlgAQwJYAEMCWAA+AlgAPgJYAD4CWAA+AlgAPgJYAD4CWAA+AlgAPgJYAD4CWAA+AlgAPgJYAEICWAAgAlgAJAJYACQCWAAkAlgAJAJYACQCWAAkAlgAJAJYADwCWAA8AlgAPAJYADwCWAA8AlgAPAJYADwCWAA8AlgAPAJYADYCWAA2AlgANgJYADYCWAA2AlgANgJYADwCWAA8AlgAPAJYADwCWAA8AlgAPAJYADwCWAA8AlgAHQJYABQCWAAUAlgAFAJYABQCWAAUAlgALwJYACACWAAgAlgAIAJYACACWAAgAlgAIAJYACACWAAgAlgAIAJYACACWAA8AlgAPAJYADwCWAA8AlgAPAJYADYCWAA7AlgAOwJYADsCWAA7AlgAOwJYADsCWAA7AlgAOwJYADsCWAA7AlgAOwJYADsCWAA7AlgAOwJYADsCWAA7AlgAOwJYADsCWAA7AlgAOwJYADsCWAA7AlgAOwJYADsCWAA7AlgADAJYAAwCWABGAlgAIAJYAEICWABCAlgAQgJYAEICWABCAlgAQgJYAEICWAA0AlgAMAJYACkCWAA0AlgANAJYADQCWAA5AlgAOQJYADkCWAA5AlgAOQJYADkCWAA5AlgAOQJYADkCWAA5AlgAOQJYADkCWAA5AlgAOQJYADkCWAA5AlgAOQJYADkCWAA5AlgAOQJYADkCWAA5AlgANgJYADkCWAA/AlgAbQJYAD8CWAAqAlgAKgJYACoCWAAqAlgAKgJYACoCWAAqAlgAVAJY//UCWABUAlj/xwJYAFQCWAB5AlgAeQJYAHkCWAB5AlgAeAJYAGQCWAB5AlgAeQJYAHkCWAB5AlgAeQJYAHkCWAB5AlgAeQJYAHkCWAB5AlgAPAJYADwCWAA8AlgAUwJYAFMCWABTAlgAXwJYAF8CWABfAlgAXwJYAFMCWABfAlgAFwJYAF8CWABfAlgALQJYAC0CWABSAlgAUgJYAFICWABSAlgAUgJYAFICWABQAlgAUgJYAFICWAAuAlgALgJYAC4CWAAuAlgALgJYAC4CWAAuAlgALgJYAC4CWAAuAlgALgJYAC4CWAAuAlgALgJYAC4CWAAuAlgALgJYAC4CWAAuAlgALgJYAC4CWAAuAlgALgJYAC4CWAAuAlgALgJYAC4CWAAuAlgALgJYAC4CWAAuAlgALgJYAC4CWAAuAlgACQJYAEYCWABGAlgAMwJYAIoCWACKAlgAigJYAIoCWACKAlgAigJYAB0CWACKAlgAigJYACoCWABGAlgARgJYAEYCWABGAlgARgJYAEYCWABGAlgARgJYAEYCWABGAlgARgJYAEICWABSAlgASgJYAFICWABSAlgAUgJYAFICWABSAlgAUgJYAEoCWABKAlgASgJYAEoCWABKAlgASgJYAEoCWABKAlgASgJYAC0CWAAtAlgALQJYAC0CWAAtAlgALQJYAEoCWABKAlgASgJYAEoCWABKAlgASgJYAEoCWABKAlgAMAJYABQCWAAUAlgAFAJYABQCWAAUAlgANgJYAB4CWAAeAlgAHgJYAB4CWAAeAlgAHgJYAB4CWAAeAlgAHgJYAB4CWAA8AlgAPAJYADwCWAA8AlgAPAJYAC0CWABgAlgAYAJYAFICWAA8AlgARAJYAGoCWABGAlgAUwJYADoCWABNAlgAUAJYAF8CWABIAlgAUgJYAEQCWABEAlgAigJYAKUCWACLAlgAkwJYAIUCWACSAlgAkwJYAJ0CWACOAlgAkwJYAIoCWAClAlgAiwJYAJMCWACFAlgAkgJYAJMCWACdAlgAjgJYAJMCWACKAlgApQJYAIsCWACTAlgAhQJYAJICWACTAlgAnQJYAI4CWACTAlgAigJYAKUCWACLAlgAkwJYAIUCWACSAlgAkwJYAJ0CWACOAlgAkwJYAGQCWAAYAlgAGAJYAAkCWACKAlgAigJYAIoCWACKAlgAigJYAIoCWACKAlgAigJYAOQCWADPAlgA4wJYAM4CWAATAlgA5AJYAOQCWABNAlgATAJYAOECWADUAlgAMQJYAPACWAAeAlgAVQJYAFUCWADhAlgAMQJYAIsCWACFAlgARAJYAFACWAChAlgAigJYAIUCWACFAlgAVQJYAAwCWABVAlgADAJYAIUCWAAqAlgAywJYAE8CWABlAlgAbAJYAN0CWADLAlgAUAJYAFwCWACuAlgAsgJYAKsCWAEBAlgAjwJYAQEEsAA2BwgANgJYAAACWAAAAlgAAAJYAAACWAAAAlgAAAJYAAACWAAAAlgAMwJYAEICWAAzAlgAUgJYAEgCWABMAlgAKAJYABYCWAAZAlgAKgJYABECWAAvAlgAIQJYADwCWAARAlgAPQJYABACWAAXAlgAPQJYAC8CWAARAlgAKwJYADECWAC9AlgAQwJYADQCWAA2AlgANgJYADYCWABmAlgAVQJYADYCWAA2AlgAMAJYACoCWAAqAlgAKgJYADYCWABXAlgAVwJYAG0CWAB3AlgADgJYABACWABYAlgAFwJYACYCWABBAlgALwJYAA4CWAAdAlgAJQJYACICWAAYAlgAMQJYAFcCWAB6AlgATAJYABgCWAATAlgAGAJYAEwCWAANAlgAHAJYAA0CWAAMAlgARwJYACkCWAAMAlgAKQJYAAwCWAApAlgADAJYACkCWAAMAlgAAAJYAAACWAAAAlgAAAJYAAACWAAAAlgAAAJYAAACWAAAAlgAAAJYAAACWAAAAlgAAAJYAAACWAAAAlgAAAJYAAACWAEsAlgCDQJYAAACWAEsAlgAAAJYAAACWAAAAlgAAAJYAAACWAEsAlgAAAJYAAACWAAUAlgAAgJYAAACWAAxAlgAMQJYAB4CWAAeAlgAOAJY/6ACWP+gAlgAXwJY/6ACWP+gAlj/oAJYAF8CWABfAlj/oAJY/6ACWABfAlj/oAJY/6ACWABfAlj/oAJY/6ACWP+gAlgAsgJYALICWP+gAlj/oAJY/6ACWP+gAlgA7wJYALICWP+gAlj/oAJY/6ACWADvAlgASwJYALICWACyAlj/oAJY/6ACWACyAlj/oAJY/6ACWP+gAlgAEwJYALICWADvAlgAIgJYALICWACyAlj/oAJY/6ACWACyAlgAsgJYALICWP+gAlj/oAJYALICWP+gAlj/oAJY/6ACWP+gAlj/oAJY/6ACWP+gAlj/oAJY/6ACWADvAlj/oAJYAO8CWABLAlgA7wJYAAACWAAAAlgAAAJYAO8CWP+gAlj/oAJYAO8CWP+gAlj/oAJY/6ACWAATAlgA7wJYAO8CWAAiAlgA7wJYAO8CWACyAlj/oAJY/6ACWADvAlgA7wJY/6ACWP+gAlgA7wJY/6ACWP+gAlj/oAJY/6ACWP+gAlj/oAJY/6ACWP+gAlj/oAJY/6ACWABfAlj/oAJY/6ACWP+gAlj/oAJYALICWACyAlj/oAJY/6ACWP+gAlj/oAJYALICWADvAlj/oAJY/6ACWADvAlj/oAJY/6ACWABfAlj/oAJY/6ACWACyAlj/oAJY/6ACWADvAlj/oAJY/6ACWADvAlgAMwJYADMCWAAyAlgAEAJYAAYCWAAOAlgAEgJYAAsCWAAAAlgAZgJYAAACWAAFAlgAJQJYACsCWABNAlgATgJYABECWAARAlgAFgJYAJECWADyAlgAqgJYAQkCWAEJAlgAOwJYABwCWAA7AlgAOgJYAEsCWAA6AlgAMQJYACICWAApAlgASQJYAAICWAAaAlgAAAJYAB4CWAAoAlgAEgcIADYEsAA1BLAAsASwAEsEsACzAlgA0gJYAN0CWADdAlgAqgJYAJQCWADcAlgA8gJYAOsCWADqAlgA3wJYAQUCWAENAAAAjgAAAPsAAADDAAAA/wAAAJcAAAB3AAAAfQAAAI4AAADGAAAAeQAAAJQAAAC4AAAAfAAAAI0AAADPAAAB2wAAAOkAAACOAAAA3AAAAMsAAAC1AAAAjgAAAJQAAACRAAAAhQJYAI4CWAD7AlgAwwJYAP8CWACXAlgAmgJYAKYCWAB5AlgAxgJYAHkCWACUAlgAywJYAS0AAACNAAAA9gAAALAAAADRAAAAewAAAG4AAABoAAAAhQAAAL8AAABzAAAB3gJYAI0CWAEDAlgA7AJYANECWAB7AlgAXAJYAIoCWADKAlgAeQAAAI8AAACOAAAAjgAAAI4AAACOAAAAfgAAAIAAAAB5AAAAggAAAG4AAABuAAAAbgAAAG4CWAAAAAEAAANb/0IAAAXc/7D95QWvAAEAAAAAAAAAAAAAAAAAAAPCAAQB+QGQAAcAAAKKAlgAAABLAooCWAAAAV4AMgESAAAAAAUJAAAAAAAAoAAA/wAA+esAAAAgAAAAAENZUkUAwAAA//0DW/9CAAAD7AHGYAABk83UAAAByQJvAAAAIAADAAAAAgAAAAMAAAAUAAMAAQAAABQABAosAAABCgEAAAcACgAAAA0ALwA5AH4BMQFIAX4BjwGSAZgBoQGwAbkByQHnAesCGwItAjMCNwJNAlkCewKYApoCvAK/AswC3QMEAwwDDwMSAxsDJAMoAy4DMQM2A3UeCR4PHhceHR4hHiUeKx4vHjceOx5JHlMeWx5pHm8eex6FHo8ekx6XHp4e+SALIBAgFSAaIB4gIiAmIDAgMyA6IEQgcCB5IHsgfyCJIKEgpCCnIKkgrSCyILUguiC9IRMhFiEiISQhJiEuIZkh6iICIgYiCCIPIhIiFSIXIhoiHiIrIkgiYCJlIpUjAiMYIycjKyOLI84kIyWUJZ8lxyXLJc8mOyZgJmMmZicVJxgrByuVLhL//f//AAAAAAANACAAMAA6AKABNAFKAY8BkgGYAaABrwG4AccB5gHqAfoCKgIwAjcCTQJZAnsCmAKaArkCvgLGAtgDAAMGAw8DEQMbAyMDJgMuAzEDNQN1HggeDB4UHhweIB4kHioeLh42HjoeQh5MHloeXh5sHngegB6OHpIelx6eHqAgByAQIBIgGCAcICAgJiAwIDIgOSBEIHAgdCB7IH8ggCChIKMgpiCpIKsgsSC1ILkgvCETIRYhIiEkISYhLiGQIeYiAiIFIggiDyIRIhUiFyIZIh4iKyJIImAiZCKVIwIjGCMlIysjiyPOJCMlACWVJcYlyiXPJjkmYCZjJmUnEycXKwUrlS4S//3//wPBAkMAAAGpAAAAAAAAAAD/IwDG/soAAAAAAAAAAAAAAAAAAAAAAAD/E/9F/tH/FP5s/o4AAAAAAAAAAAAAAAAAdwB2AG4AZwBmAGEAXwBc//kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOMN4hMAAAAA4icAAAAAAAAAAOH34lbjI+II4cnhk+GT4fDhWOFl4bIAAOG54bwAAAAA4ZwAAAAA4kfiRuIx4LThWOIvAAAAAOCCAADgYuBxAADgVOBQAADgXeBS4C/gEQAA3/LgXuBOAADgON/U35nfOwAA3Rnc+AAA3O3dCNzk3OLc4dw13DQAANcE1BMDawABAAAAAAEGAAABIgGqAswC9AAAAAAAAANWA1gDWgNcA2ADYgNkA6YDrAAAAAAAAAAAAAAAAAOmA6wDrgO6A8QDzAAAAAAAAAAAAAAAAAAAAAAAAAPGA8gDzgPUA9YD2APaA9wD3gPgA+ID8AP+BAAEFgQcBCIELAQuAAAAAAQsBN4AAATkBOoE7gTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATgAAAAAATeBOIAAATiBOQAAAAAAAAAAAAAAAAE2gTsAAAE8gAAAAAE8AAAAAAE7gAAAAAAAAAABOgAAAAAAAAE5AAAAAAAAAAABOAAAAAABgQAAAAAAAAAAAAAAAAAAAX4AAAAAAAAAAACTAIeAkMCJgJVAoUDTgJEAisCLAIkAmwCGgIxAhkCJwIbAhwCcwJwAnICIANNAAEAHAAdACQAKgBCAEMASgBPAF4AYABjAG0AbwB4AJsAnQCeAKYAswC6ANEA0gDXANgA4gIvAigCMAJ6AjgDlQDoAQMBBQEMARIBLAEtATQBOQFJAUwBTwFYAVoBYwGGAYgBiQGTAZ8BpwG+Ab8BxAHFAc8CLQNXAi4CeAJNAh8CUgJkAlQCZgNYA1ADkwNRAdUCPwJ5AjIDUgOdA1QCdgIFAgYDlgKDA08CIgOeAgQB1gJAAg8CDgIQAiEAEgACAAkAGQAQABcAGgAgADkAKwAvADYAWABQAFIAVAAlAHcAhgB5AHsAlgCCAm4AlADBALsAvQC/ANkAnAGeAPkA6QDwAQAA9wD+AQEBCAEhARMBFwEeAUMBOwE9AT8BDQFiAXEBZAFmAYEBbQJvAX8BrgGoAaoBrAHGAYcByAAVAPwAAwDqABYA/QAeAQYAIgEKACMBCwAfAQcAJgEOACcBDwA8ASQALAEUADcBHwA/AScALQEVAEYBMABEAS4ASAEyAEcBMQBNATcASwE1AF0BSABbAUYAUQE8AFwBRwBWAToAXwFLAGEBTQFOAGUBUABnAVIAZgFRAGgBUwBsAVcAcAFbAHIBXQBxAVwAdQFgAJABewB6AWUAjgF5AJoBhQCfAYoAoQGMAKABiwCnAZQArAGZAKsBmACpAZYAtgGiALUBoQC0AaAAzwG8AMsBuAC8AakAzgG7AMkBtgDNAboA1AHBANoBxwDbAOMB0ADlAdIA5AHRAIgBcwDDAbAAQQErAGQAagFVAEUBLwCTAX4AGAD/ABsBAgCVAYAADwD2ABQA+wA1AR0AOwEjAFMBPgBaAUUAgQFsAI8BegCiAY0ApAGQAL4BqwDKAbcArQGaALcBowCDAW4AmQGEAIQBbwDgAc0DdANxA3ADbwN2A3UDmAOZA3kDcgN3A3MDeAOaA5QDmwOfA5wDlwN8A30DfwODA4QDgQN7A3oDhQOCA34DgAAhAQkAKAEQACkBEQA+ASYAPQElAC4BFgBJATMATgE4AEwBNgBVAUAAaQFUAGsBVgBuAVkAcwFeAHQBXwB2AWEAlwGCAJgBgwCSAX0AkQF8AKMBjgClAZEArgGbAK8BnACoAZUAqgGXALABnQC4AaUAuQGmANABvQDMAbkA1gHDANMBwADVAcIA3AHJAOYB0wARAPgAEwD6AAoA8QAMAPMADQD0AA4A9QALAPIABADrAAYA7QAHAO4ACADvAAUA7AA4ASAAOgEiAEABKQAwARgAMgEaADMBGwA0ARwAMQEZAFkBRABXAUIAhQFwAIcBcgB8AWcAfgFpAH8BagCAAWsAfQFoAIkBdACLAXYAjAF3AI0BeACKAXUAwAGtAMIBrwDEAbEAxgGzAMcBtADIAbUAxQGyAN4BywDdAcoA3wHMAOEBzgJJAksCTgJKAk8CNQIzAjQCNgI9Aj4COQI7AjwCOgNZA1sCIwJZAlwCVgJXAlsCYQJaAmMCXQJeAmICkAKKAowCjgKSApMCkQKLAo0CjwKXApQClQKWA2ECfAJ/AoECbQJoAoICdQJ0A2UDZANiAwoC5AMXAvEDEALqAxEC6wMNAucDDgLoAwkC2ALSAuMDCALWAtAC4gMWAzEDKwLwAxUDLwMpAu4DGgM9AyoC0wM6AtkDMAL0AxkDPAMoAtEDOQLXAy4C8wMHAvYDHALVAs8DHwL5AuEDFAL3Ax0DLQMnAyAC+gLtAxgC+AMeAzsDJgLUAzgC/AMiAvUDGwLaAywDIQL7AvIDAQLeAwIC3wLEAsgC3QLOAsMC3ALNAsIDNAMlAscDMwMkAsYDQAM3AssDPwM2AsoC2wLMAsEDMgMjAsUDPgM1AskC/gL9Av8DAAMFAwQDAwMLAxIDDwMGAuUC7ALpAuADDAMTAuYC7wKkApwCnQKeAp8CoAKhAqICowKsAqsCqgKpAqgCpwKmAq0CuQK6ArsCpQLAAr0CmwKYAppASpmYl5aHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1FQT05NTEtKSUhHRigfEAoJLAGxCwpDI0NlCi0sALEKC0MjQwstLAGwBkOwB0NlCi0ssE8rILBAUVghS1JYRUQbISFZGyMhsECwBCVFsAQlRWFkimNSWEVEGyEhWVktLACwB0OwBkMLLSxLUyNLUVpYIEWKYEQbISFZLSxLVFggRYpgRBshIVktLEtTI0tRWlg4GyEhWS0sS1RYOBshIVktLLACQ1RYsEYrGyEhISFZLSywAkNUWLBHKxshISFZLSywAkNU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ADwASAA7ADEAQAA7AEMAOgBHAD0APwBKAEMATAAtADgAPAAxADsAQwBFAEgANwA7AD0AQgAxADUANwA7AD0AQABEAEcASwBSADwAQgBGAEkATAA3ADsAPwArADEANwA5ADsAPgBAAEMARwBKADoARABIAEoAOwA9AD8AQgA6AEAASgA7AD8AQwBFAEcASgBMAC0AOAA9AEAAQwAvADIANwA6ADwAPwBCAEoBiwAAABMA6gADAAEECQAAALQAAAADAAEECQABACgAtAADAAEECQACAA4A3AADAAEECQADAEwA6gADAAEECQAEADgBNgADAAEECQAFABoBbgADAAEECQAGADYBiAADAAEECQAIADYBvgADAAEECQAJAEgB9AADAAEECQALAI4CPAADAAEECQAMAJICygADAAEECQANASADXAADAAEECQAOADQEfAADAAEECQAQACgAtAADAAEECQARAA4A3AADAAEECQEAAAwEsAADAAEECQEBAAoEvAADAAEECQFSABAExgADAAEECQFXAA4A3ABDAG8AcAB5AHIAaQBnAGgAdAAgADIAMAAwADYAIABUAGgAZQAgAEkAbgBjAG8AbgBzAG8AbABhAHQAYQAgAFAAcgBvAGoAZQBjAHQAIABBAHUAdABoAG8AcgBzACAAKABoAHQAdABwAHMAOgAvAC8AZwBpAHQAaAB1AGIALgBjAG8AbQAvAGMAeQByAGUAYQBsAHQAeQBwAGUALwBJAG4AYwBvAG4AcwBvAGwAYQB0AGEAKQBJAG4AYwBvAG4AcwBvAGwAYQB0AGEAIABFAHgAcABhAG4AZABlAGQAUgBlAGcAdQBsAGEAcgAzAC4AMAAwADEAOwBDAFkAUgBFADsASQBuAGMAbwBuAHMAbwBsAGEAdABhAEUAeABwAGEAbgBkAGUAZAAtAFIAZQBnAHUAbABhAHIASQBuAGMAbwBuAHMAbwBsAGEAdABhACAARQB4AHAAYQBuAGQAZQBkACAAUgBlAGcAdQBsAGEAcgBWAGUAcgBzAGkAbwBuACAAMwAuADAAMAAxAEkAbgBjAG8AbgBzAG8AbABhAHQAYQBFAHgAcABhAG4AZABlAGQALQBSAGUAZwB1AGwAYQByAFIAYQBwAGgAIABMAGUAdgBpAGUAbgAsACAAQwB5AHIAZQBhAGwALAAgAEcAbwBvAGcAbABlAFIAYQBwAGgAIABMAGUAdgBpAGUAbgAsACAAQwB5AHIAZQBhAGwALAAgAEIAcgBlAG4AdABvAG4AIABTAGkAbQBwAHMAbwBuAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBsAGUAdgBpAGUAbgAuAGMAbwBtACAAfAAgAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBjAHkAcgBlAGEAbAAuAG8AcgBnACAAfAAgAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABzAC4AZwBvAG8AZwBsAGUALgBjAG8AbQBoAHQAdABwADoALwAvAHcAdwB3AC4AbABlAHYAaQBlAG4ALgBjAG8AbQAgAHwAIABoAHQAdABwADoALwAvAHcAdwB3AC4AYwB5AHIAZQBhAGwALgBvAHIAZwAgAHwAIABoAHQAdABwADoALwAvAGEAcABwAHMAZgBvAHIAYQByAHQAaQBzAHQAcwAuAGMAbwBtAFQAaABpAHMAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlACAAaQBzACAAbABpAGMAZQBuAHMAZQBkACAAdQBuAGQAZQByACAAdABoAGUAIABTAEkATAAgAE8AcABlAG4AIABGAG8AbgB0ACAATABpAGMAZQBuAHMAZQAsACAAVgBlAHIAcwBpAG8AbgAgADEALgAxAC4AIABUAGgAaQBzACAAbABpAGMAZQBuAHMAZQAgAGkAcwAgAGEAdgBhAGkAbABhAGIAbABlACAAdwBpAHQAaAAgAGEAIABGAEEAUQAgAGEAdAA6ACAAaAB0AHQAcAA6AC8ALwBzAGMAcgBpAHAAdABzAC4AcwBpAGwALgBvAHIAZwAvAE8ARgBMAGgAdAB0AHAAOgAvAC8AcwBjAHIAaQBwAHQAcwAuAHMAaQBsAC4AbwByAGcALwBPAEYATABXAGUAaQBnAGgAdABXAGkAZAB0AGgARQB4AHAAYQBuAGQAZQBkAAIAAAAAAAD/OAAyAAAAAQAAAAAAAAAAAAAAAAAAAAADwgAAACQAyQECAQMBBAEFAQYBBwDHAQgBCQEKAQsBDAENAGIBDgCtAQ8BEAERARIAYwETAK4AkAEUACUAJgD9AP8AZAEVARYBFwAnAOkBGAEZARoBGwAoAGUBHAEdAR4AyAEfASABIQEiASMBJADKASUBJgDLAScBKAEpASoBKwEsAS0BLgApACoA+AEvATABMQEyATMAKwE0ATUBNgE3ACwAzAE4AM0BOQDOAToA+gE7AM8BPAE9AT4BPwFAAC0BQQAuAUIBQwAvAUQBRQFGAUcBSAFJAUoBSwDiADABTAAxAU0BTgFPAVABUQFSAVMAZgAyANABVADRAVUBVgFXAVgBWQFaAGcBWwFcAV0A0wFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAJEBawCvAWwBbQFuALAAMwDtADQANQFvAXABcQFyAXMBdAF1ADYBdgF3AOQBeAD7AXkBegF7AXwBfQF+AX8ANwGAAYEBggGDAYQBhQA4ANQBhgDVAYcAaAGIANYBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcAOQA6AZgBmQGaAZsAOwA8AOsBnAC7AZ0BngGfAaABoQGiAD0BowDmAaQBpQGmAEQAaQGnAagBqQGqAasBrABrAa0BrgGvAbABsQGyAGwBswBqAbQBtQG2AbcAbgG4AG0AoAG5AEUBugBGAP4BAABvAbsBvAG9AEcA6gG+AQEBvwHAAEgAcAHBAcIBwwByAcQBxQHGAccByAHJAHMBygHLAHEBzAHNAc4BzwHQAdEB0gHTAdQB1QBJAEoA+QHWAdcB2AHZAdoASwHbAdwB3QHeAEwA1wB0Ad8AdgHgAHcB4QHiAeMAdQHkAeUB5gHnAegATQHpAeoATgHrAewATwHtAe4B7wHwAfEB8gHzAOMAUAH0AFEB9QH2AfcB+AH5AfoB+wB4AFIAeQH8AHsB/QH+Af8CAAIBAgIAfAIDAgQCBQB6AgYCBwIIAgkCCgILAgwCDQIOAg8CEAIRAhIAoQITAH0CFAIVAhYAsQBTAO4AVABVAhcCGAIZAhoCGwIcAh0CHgIfAFYCIAIhAOUCIgD8AiMCJAIlAiYCJwCJAFcCKAIpAioCKwIsAi0CLgBYAH4CLwCAAjAAgQIxAH8CMgIzAjQCNQI2AjcCOAI5AjoCOwI8Aj0CPgI/AkAAWQBaAkECQgJDAkQAWwBcAOwCRQC6AkYCRwJIAkkCSgJLAF0CTADnAk0CTgJPAJ0AngJQAlEAEwAUABUAFgAXABgAGQAaABsAHAJSAlMCVAJVAlYCVwJYAlkCWgJbAlwCXQJeAl8CYAJhAmICYwJkAmUCZgJnAmgCaQJqAmsCbAJtAm4CbwJwAnECcgJzAnQCdQJ2AncCeAJ5AnoCewC8APQA9QD2AnwCfQJ+An8CgAKBAoICgwARAA8AHQAeAKsABACjACIAogDDAIcADQKEAAYAEgA/AoUChgALAAwAXgBgAD4AQAAQAocAsgCzAogCiQKKAEIAxADFALQAtQC2ALcAqQCqAL4AvwAFAAoCiwKMAo0CjgKPApACkQADApICkwKUApUClgCEApcAvQAHApgCmQCmAPcCmgKbApwCnQKeAp8CoAKhAqICowCFAqQAlgKlAqYCpwKoAqkADgDvAPAAuAAgAI8AIQAfAJUAlACTAKcAYQCkAEEAkgKqAJwCqwKsAJoAmQClAq0AmAAIAMYCrgKvArACsQKyArMCtAK1ArYCtwK4ArkCugK7ArwCvQK+Ar8CwALBAsICwwLEAsUCxgLHAsgCyQLKAssCzALNAs4CzwLQAtEC0gLTAtQC1QLWAtcC2ALZAtoC2wLcAt0C3gLfAuAC4QLiAuMC5ALlAuYAuQLnAugC6QLqAusC7ALtAu4C7wLwAvEC8gLzAvQC9QL2AvcC+AL5AvoC+wL8Av0C/gL/AwADAQMCAwMDBAMFAwYDBwMIAwkDCgMLAwwDDQMOAw8DEAMRAxIDEwMUAxUDFgMXAxgDGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDKwMsAy0DLgMvAzADMQMyAzMDNAM1AzYDNwM4AzkDOgM7AzwDPQM+Az8DQANBA0IDQwNEA0UDRgNHA0gDSQNKA0sDTANNA04DTwNQA1EDUgNTA1QDVQNWA1cDWANZA1oDWwNcA10DXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IAIwAJAIgAhgCLAIoAjACDA3MDdABfAOgAggN1AMIDdgN3A3gDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGA4cDiAOJA4oDiwOMA40DjgOPA5ADkQOSA5MDlAOVA5YDlwOYA5kDmgObA5wDnQOeA58DoAOhA6IDowOkA6UDpgOnA6gDqQOqA6sDrACOANwAQwCNAN8A2ADhANsA3QDZANoA3gDgA60DrgOvA7ADsQOyA7MDtAO1A7YDtwO4A7kDugO7A7wDvQO+A78DwAPBA8IDwwPEA8UDxgPHA8gDyQPKA8sDzAPNA84GQWJyZXZlB3VuaTFFQUUHdW5pMUVCNgd1bmkxRUIwB3VuaTFFQjIHdW5pMUVCNAd1bmkxRUE0B3VuaTFFQUMHdW5pMUVBNgd1bmkxRUE4B3VuaTFFQUEHdW5pMDIwMAd1bmkxRUEwB3VuaTFFQTIHdW5pMDIwMgdBbWFjcm9uB0FvZ29uZWsKQXJpbmdhY3V0ZQdBRWFjdXRlB3VuaTFFMDgLQ2NpcmN1bWZsZXgKQ2RvdGFjY2VudAZEY2Fyb24GRGNyb2F0B3VuaTFFMEMHdW5pMUUwRQZFYnJldmUGRWNhcm9uB3VuaTFFMUMHdW5pMUVCRQd1bmkxRUM2B3VuaTFFQzAHdW5pMUVDMgd1bmkxRUM0B3VuaTAyMDQKRWRvdGFjY2VudAd1bmkxRUI4B3VuaTFFQkEHdW5pMDIwNgdFbWFjcm9uB3VuaTFFMTYHdW5pMUUxNAdFb2dvbmVrB3VuaTFFQkMHdW5pMDFCOAZHY2Fyb24LR2NpcmN1bWZsZXgHdW5pMDEyMgpHZG90YWNjZW50B3VuaTFFMjAESGJhcgd1bmkxRTJBC0hjaXJjdW1mbGV4B3VuaTFFMjQGSWJyZXZlB3VuaTAyMDgHdW5pMUUyRQd1bmkxRUNBB3VuaTFFQzgHdW5pMDIwQQdJbWFjcm9uB0lvZ29uZWsGSXRpbGRlC0pjaXJjdW1mbGV4B3VuaTAxMzYHdW5pMDE5OAd1bmkwMUM3BkxhY3V0ZQZMY2Fyb24HdW5pMDEzQgRMZG90B3VuaTFFMzYHdW5pMDFDOAd1bmkxRTNBB3VuaTFFNDIGTmFjdXRlBk5jYXJvbgd1bmkwMTQ1B3VuaTFFNDQHdW5pMUU0NgNFbmcHdW5pMUU0OAZPYnJldmUHdW5pMUVEMAd1bmkxRUQ4B3VuaTFFRDIHdW5pMUVENAd1bmkxRUQ2B3VuaTAyMEMHdW5pMDIyQQd1bmkwMjMwB3VuaTFFQ0MHdW5pMUVDRQVPaG9ybgd1bmkxRURBB3VuaTFFRTIHdW5pMUVEQwd1bmkxRURFB3VuaTFFRTANT2h1bmdhcnVtbGF1dAd1bmkwMjBFB09tYWNyb24HdW5pMUU1Mgd1bmkxRTUwB3VuaTAxRUELT3NsYXNoYWN1dGUHdW5pMUU0Qwd1bmkxRTRFB3VuaTAyMkMGUmFjdXRlBlJjYXJvbgd1bmkwMTU2B3VuaTAyMTAHdW5pMUU1QQd1bmkwMjEyB3VuaTFFNUUGU2FjdXRlB3VuaTFFNjQHdW5pMUU2NgtTY2lyY3VtZmxleAd1bmkwMjE4B3VuaTFFNjAHdW5pMUU2Mgd1bmkxRTY4B3VuaTFFOUUHdW5pMDE4RgRUYmFyBlRjYXJvbgd1bmkwMTYyB3VuaTAyMUEHdW5pMUU2Qwd1bmkxRTZFBlVicmV2ZQd1bmkwMjE0B3VuaTFFRTQHdW5pMUVFNgVVaG9ybgd1bmkxRUU4B3VuaTFFRjAHdW5pMUVFQQd1bmkxRUVDB3VuaTFFRUUNVWh1bmdhcnVtbGF1dAd1bmkwMjE2B1VtYWNyb24HdW5pMUU3QQdVb2dvbmVrBVVyaW5nBlV0aWxkZQd1bmkxRTc4BldhY3V0ZQtXY2lyY3VtZmxleAlXZGllcmVzaXMGV2dyYXZlC1ljaXJjdW1mbGV4B3VuaTFFOEUHdW5pMUVGNAZZZ3JhdmUHdW5pMUVGNgd1bmkwMjMyB3VuaTFFRjgGWmFjdXRlClpkb3RhY2NlbnQHdW5pMUU5MgNVLmkGYWJyZXZlB3VuaTFFQUYHdW5pMUVCNwd1bmkxRUIxB3VuaTFFQjMHdW5pMUVCNQd1bmkxRUE1B3VuaTFFQUQHdW5pMUVBNwd1bmkxRUE5B3VuaTFFQUIHdW5pMDIwMQd1bmkxRUExB3VuaTFFQTMHdW5pMDIwMwdhbWFjcm9uB2FvZ29uZWsKYXJpbmdhY3V0ZQdhZWFjdXRlB3VuaTAyOTgHdW5pMUUwOQtjY2lyY3VtZmxleApjZG90YWNjZW50BmRjYXJvbgd1bmkxRTBEB3VuaTFFMEYGZWJyZXZlBmVjYXJvbgd1bmkxRTFEB3VuaTFFQkYHdW5pMUVDNwd1bmkxRUMxB3VuaTFFQzMHdW5pMUVDNQd1bmkwMjA1CmVkb3RhY2NlbnQHdW5pMUVCOQd1bmkxRUJCB3VuaTAyMDcHZW1hY3Jvbgd1bmkxRTE3B3VuaTFFMTUHZW9nb25lawd1bmkwMjlBB3VuaTFFQkQHdW5pMDI1OQd1bmkwMUI5BmdjYXJvbgtnY2lyY3VtZmxleAd1bmkwMTIzCmdkb3RhY2NlbnQHdW5pMUUyMQRoYmFyB3VuaTFFMkILaGNpcmN1bWZsZXgHdW5pMUUyNQZpYnJldmUHdW5pMDIwOQd1bmkxRTJGCWkubG9jbFRSSwd1bmkxRUNCB3VuaTFFQzkHdW5pMDIwQgdpbWFjcm9uB2lvZ29uZWsGaXRpbGRlB3VuaTAyMzcLamNpcmN1bWZsZXgHdW5pMDEzNwxrZ3JlZW5sYW5kaWMGbGFjdXRlBmxjYXJvbgd1bmkwMTNDBGxkb3QHdW5pMUUzNwd1bmkwMUM5B3VuaTFFM0IHdW5pMUU0MwZuYWN1dGUGbmNhcm9uB3VuaTAxNDYHdW5pMUU0NQd1bmkxRTQ3A2VuZwd1bmkxRTQ5Bm9icmV2ZQd1bmkxRUQxB3VuaTFFRDkHdW5pMUVEMwd1bmkxRUQ1B3VuaTFFRDcHdW5pMDIwRAd1bmkwMjJCB3VuaTAyMzEHdW5pMUVDRAd1bmkxRUNGBW9ob3JuB3VuaTFFREIHdW5pMUVFMwd1bmkxRUREB3VuaTFFREYHdW5pMUVFMQ1vaHVuZ2FydW1sYXV0B3VuaTAyMEYHb21hY3Jvbgd1bmkxRTUzB3VuaTFFNTEHdW5pMDFFQgtvc2xhc2hhY3V0ZQd1bmkxRTREB3VuaTFFNEYHdW5pMDIyRAZyYWN1dGUGcmNhcm9uB3VuaTAxNTcHdW5pMDIxMQd1bmkxRTVCB3VuaTAyN0IHdW5pMDIxMwd1bmkxRTVGB3VuaTAyNEQGc2FjdXRlB3VuaTFFNjUHdW5pMUU2NwtzY2lyY3VtZmxleAd1bmkwMjE5B3VuaTFFNjEHdW5pMUU2Mwd1bmkxRTY5BHRiYXIGdGNhcm9uB3VuaTAxNjMHdW5pMDIxQgd1bmkxRTk3B3VuaTFFNkQHdW5pMUU2RgZ1YnJldmUHdW5pMDIxNQd1bmkxRUU1B3VuaTFFRTcFdWhvcm4HdW5pMUVFOQd1bmkxRUYxB3VuaTFFRUIHdW5pMUVFRAd1bmkxRUVGDXVodW5nYXJ1bWxhdXQHdW5pMDIxNwd1bWFjcm9uB3VuaTFFN0IHdW9nb25lawV1cmluZwZ1dGlsZGUHdW5pMUU3OQZ3YWN1dGULd2NpcmN1bWZsZXgJd2RpZXJlc2lzBndncmF2ZQt5Y2lyY3VtZmxleAd1bmkxRThGB3VuaTFFRjUGeWdyYXZlB3VuaTFFRjcHdW5pMDIzMwd1bmkxRUY5BnphY3V0ZQp6ZG90YWNjZW50B3VuaTFFOTMDdS5pB3VuaTIwN0YHdW5pMjEyNAl6ZXJvLnplcm8JemVyby5zczAyB3VuaTIwODAHdW5pMjA4MQd1bmkyMDgyB3VuaTIwODMHdW5pMjA4NAd1bmkyMDg1B3VuaTIwODYHdW5pMjA4Nwd1bmkyMDg4B3VuaTIwODkJemVyby5kbm9tCG9uZS5kbm9tCHR3by5kbm9tCnRocmVlLmRub20JZm91ci5kbm9tCWZpdmUuZG5vbQhzaXguZG5vbQpzZXZlbi5kbm9tCmVpZ2h0LmRub20JbmluZS5kbm9tCXplcm8ubnVtcghvbmUubnVtcgh0d28ubnVtcgp0aHJlZS5udW1yCWZvdXIubnVtcglmaXZlLm51bXIIc2l4Lm51bXIKc2V2ZW4ubnVtcgplaWdodC5udW1yCW5pbmUubnVtcgd1bmkyMDcwB3VuaTAwQjkHdW5pMDBCMgd1bmkwMEIzB3VuaTIwNzQHdW5pMjA3NQd1bmkyMDc2B3VuaTIwNzcHdW5pMjA3OAd1bmkyMDc5DHVuaTIwODAuc3MwMg56ZXJvLmRub20uc3MwMg56ZXJvLm51bXIuc3MwMgx1bmkyMDcwLnNzMDIMdW5pMjA4MC56ZXJvDnplcm8uZG5vbS56ZXJvDnplcm8ubnVtci56ZXJvDHVuaTIwNzAuemVybwd1bmkyRTEyFnBlcmlvZGNlbnRlcmVkLmxvY2xDQVQNYXN0ZXJpc2suc3MwMQd1bmkwMEFECmZpZ3VyZWRhc2gHdW5pMjAxNQd1bmkyMDEwDXF1b3RlZGJsLnNzMDMQcXVvdGVzaW5nbGUuc3MwMxNoeXBoZW5fZ3JlYXRlci5kbGlnF2V4Y2xhbV9lcXVhbF9lcXVhbC5kbGlnB3VuaTIwMDcHdW5pMjAwQQd1bmkyMDA4B3VuaTAwQTAHdW5pMjAwOQd1bmkyMDBCAkNSB3VuaTIwQjUNY29sb25tb25ldGFyeQRkb25nBEV1cm8HdW5pMjBCMgd1bmkyMEFEBGxpcmEHdW5pMjBCQQd1bmkyMEJDB3VuaTIwQTYGcGVzZXRhB3VuaTIwQjEHdW5pMjBCRAd1bmkyMEI5B3VuaTIwQTkMYXN0ZXJpc2ttYXRoB3VuaTIyMTkHdW5pMjIxNQdlbGVtZW50B3VuaTIwN0IIZW1wdHlzZXQHdW5pMjEyNgd1bmkyMjA2B3VuaTAwQjUKY2lyY2xlcGx1cw9hc2NpaXRpbGRlLnNzMDEQYXNjaWljaXJjdW0uc3MwMQdhcnJvd3VwB3VuaTIxOTcKYXJyb3dyaWdodAd1bmkyMTk4CWFycm93ZG93bgd1bmkyMTk5CWFycm93bGVmdAd1bmkyMTk2CWFycm93Ym90aAlhcnJvd3VwZG4HdW5pMjFFNwd1bmkyMUU4B3VuaTIxRTkHdW5pMjFFNgd1bmkyQjA2B3VuaTJCOTUHdW5pMkIwNwd1bmkyQjA1DWRuZWlnaHRoYmxvY2sOZG5xdWFydGVyYmxvY2sTZG50aHJlZWVpZ2h0aHNibG9jawtkbmhhbGZibG9jaxJkbmZpdmVlaWdodGhzYmxvY2sUZG50aHJlZXF1YXJ0ZXJzYmxvY2sTZG5zZXZlbmVpZ2h0aHNibG9jawlmdWxsYmxvY2sLdXBoYWxmYmxvY2sNdXBlaWdodGhibG9jaw9sZWZ0ZWlnaHRoYmxvY2sQbGVmdHF1YXJ0ZXJibG9jaxVsZWZ0dGhyZWVlaWdodGhzYmxvY2sNbGVmdGhhbGZibG9jaxRsZWZ0Zml2ZWVpZ2h0aHNibG9jaxZsZWZ0dGhyZWVxdWFydGVyc2Jsb2NrFWxlZnRzZXZlbmVpZ2h0aHNibG9jaw5yaWdodGhhbGZibG9jaxByaWdodGVpZ2h0aGJsb2NrDmRubGVmdHF1YWRyYW50D2RucmlnaHRxdWFkcmFudA51cGxlZnRxdWFkcmFudBt1cGxlZnRkbmxlZnRkbnJpZ2h0cXVhZHJhbnQVdXBsZWZ0ZG5yaWdodHF1YWRyYW50G3VwbGVmdHVwcmlnaHRkbmxlZnRxdWFkcmFudBx1cGxlZnR1cHJpZ2h0ZG5yaWdodHF1YWRyYW50D3VwcmlnaHRxdWFkcmFudBV1cHJpZ2h0ZG5sZWZ0cXVhZHJhbnQcdXByaWdodGRubGVmdGRucmlnaHRxdWFkcmFudApsaWdodHNoYWRlC21lZGl1bXNoYWRlCWRhcmtzaGFkZQd1bmkyNUNGBmNpcmNsZQd1bmkyNUM2B3VuaTI1QzcMZGJsZG5ob3J6YnhkDGRibGRubGVmdGJ4ZA1kYmxkbnJpZ2h0YnhkCmRibGhvcnpieGQMZGJsdXBob3J6YnhkDGRibHVwbGVmdGJ4ZA1kYmx1cHJpZ2h0YnhkCmRibHZlcnRieGQOZGJsdmVydGhvcnpieGQOZGJsdmVydGxlZnRieGQPZGJsdmVydHJpZ2h0YnhkD2RuZGJsaG9yenNuZ2J4ZA9kbmRibGxlZnRzbmdieGQQZG5kYmxyaWdodHNuZ2J4ZBNkbmhlYXZ5aG9yemxpZ2h0YnhkE2RuaGVhdnlsZWZ0bGlnaHRieGQVZG5oZWF2eWxlZnR1cGxpZ2h0YnhkFGRuaGVhdnlyaWdodGxpZ2h0YnhkFmRuaGVhdnlyaWdodHVwbGlnaHRieGQVZG5oZWF2eXVwaG9yemxpZ2h0YnhkE2RubGlnaHRob3J6aGVhdnlieGQTZG5saWdodGxlZnRoZWF2eWJ4ZBVkbmxpZ2h0bGVmdHVwaGVhdnlieGQUZG5saWdodHJpZ2h0aGVhdnlieGQWZG5saWdodHJpZ2h0dXBoZWF2eWJ4ZBVkbmxpZ2h0dXBob3J6aGVhdnlieGQPZG5zbmdob3J6ZGJsYnhkD2Ruc25nbGVmdGRibGJ4ZBBkbnNuZ3JpZ2h0ZGJsYnhkE2hlYXZ5ZGJsZGFzaGhvcnpieGQTaGVhdnlkYmxkYXNodmVydGJ4ZApoZWF2eWRuYnhkDmhlYXZ5ZG5ob3J6YnhkDmhlYXZ5ZG5sZWZ0YnhkD2hlYXZ5ZG5yaWdodGJ4ZAxoZWF2eWhvcnpieGQMaGVhdnlsZWZ0YnhkFmhlYXZ5bGVmdGxpZ2h0cmlnaHRieGQUaGVhdnlxdWFkZGFzaGhvcnpieGQUaGVhdnlxdWFkZGFzaHZlcnRieGQNaGVhdnlyaWdodGJ4ZBRoZWF2eXRycGxkYXNoaG9yemJ4ZBRoZWF2eXRycGxkYXNodmVydGJ4ZApoZWF2eXVwYnhkDmhlYXZ5dXBob3J6YnhkDmhlYXZ5dXBsZWZ0YnhkEWhlYXZ5dXBsaWdodGRuYnhkD2hlYXZ5dXByaWdodGJ4ZAxoZWF2eXZlcnRieGQQaGVhdnl2ZXJ0aG9yemJ4ZBBoZWF2eXZlcnRsZWZ0YnhkEWhlYXZ5dmVydHJpZ2h0YnhkGmxlZnRkbmhlYXZ5cmlnaHR1cGxpZ2h0YnhkGGxlZnRoZWF2eXJpZ2h0ZG5saWdodGJ4ZBhsZWZ0aGVhdnlyaWdodHVwbGlnaHRieGQabGVmdGhlYXZ5cmlnaHR2ZXJ0bGlnaHRieGQYbGVmdGxpZ2h0cmlnaHRkbmhlYXZ5YnhkGGxlZnRsaWdodHJpZ2h0dXBoZWF2eWJ4ZBpsZWZ0bGlnaHRyaWdodHZlcnRoZWF2eWJ4ZBpsZWZ0dXBoZWF2eXJpZ2h0ZG5saWdodGJ4ZBFsaWdodGFyY2RubGVmdGJ4ZBJsaWdodGFyY2RucmlnaHRieGQRbGlnaHRhcmN1cGxlZnRieGQSbGlnaHRhcmN1cHJpZ2h0YnhkE2xpZ2h0ZGJsZGFzaGhvcnpieGQTbGlnaHRkYmxkYXNodmVydGJ4ZBFsaWdodGRpYWdjcm9zc2J4ZBlsaWdodGRpYWd1cGxlZnRkbnJpZ2h0YnhkGWxpZ2h0ZGlhZ3VwcmlnaHRkbmxlZnRieGQKbGlnaHRkbmJ4ZA5saWdodGRuaG9yemJ4ZA5saWdodGRubGVmdGJ4ZA9saWdodGRucmlnaHRieGQMbGlnaHRob3J6YnhkDGxpZ2h0bGVmdGJ4ZBZsaWdodGxlZnRoZWF2eXJpZ2h0YnhkFGxpZ2h0cXVhZGRhc2hob3J6YnhkFGxpZ2h0cXVhZGRhc2h2ZXJ0YnhkDWxpZ2h0cmlnaHRieGQUbGlnaHR0cnBsZGFzaGhvcnpieGQUbGlnaHR0cnBsZGFzaHZlcnRieGQKbGlnaHR1cGJ4ZBFsaWdodHVwaGVhdnlkbmJ4ZA5saWdodHVwaG9yemJ4ZA5saWdodHVwbGVmdGJ4ZA9saWdodHVwcmlnaHRieGQMbGlnaHR2ZXJ0YnhkEGxpZ2h0dmVydGhvcnpieGQQbGlnaHR2ZXJ0bGVmdGJ4ZBFsaWdodHZlcnRyaWdodGJ4ZBpyaWdodGRuaGVhdnlsZWZ0dXBsaWdodGJ4ZBhyaWdodGhlYXZ5bGVmdGRubGlnaHRieGQYcmlnaHRoZWF2eWxlZnR1cGxpZ2h0YnhkGnJpZ2h0aGVhdnlsZWZ0dmVydGxpZ2h0YnhkGHJpZ2h0bGlnaHRsZWZ0ZG5oZWF2eWJ4ZBhyaWdodGxpZ2h0bGVmdHVwaGVhdnlieGQacmlnaHRsaWdodGxlZnR2ZXJ0aGVhdnlieGQacmlnaHR1cGhlYXZ5bGVmdGRubGlnaHRieGQPdXBkYmxob3J6c25nYnhkD3VwZGJsbGVmdHNuZ2J4ZBB1cGRibHJpZ2h0c25nYnhkFXVwaGVhdnlkbmhvcnpsaWdodGJ4ZBN1cGhlYXZ5aG9yemxpZ2h0YnhkFXVwaGVhdnlsZWZ0ZG5saWdodGJ4ZBN1cGhlYXZ5bGVmdGxpZ2h0YnhkFnVwaGVhdnlyaWdodGRubGlnaHRieGQUdXBoZWF2eXJpZ2h0bGlnaHRieGQVdXBsaWdodGRuaG9yemhlYXZ5YnhkE3VwbGlnaHRob3J6aGVhdnlieGQVdXBsaWdodGxlZnRkbmhlYXZ5YnhkE3VwbGlnaHRsZWZ0aGVhdnlieGQWdXBsaWdodHJpZ2h0ZG5oZWF2eWJ4ZBR1cGxpZ2h0cmlnaHRoZWF2eWJ4ZA91cHNuZ2hvcnpkYmxieGQPdXBzbmdsZWZ0ZGJsYnhkEHVwc25ncmlnaHRkYmxieGQRdmVydGRibGhvcnpzbmdieGQRdmVydGRibGxlZnRzbmdieGQSdmVydGRibHJpZ2h0c25nYnhkFXZlcnRoZWF2eWhvcnpsaWdodGJ4ZBV2ZXJ0aGVhdnlsZWZ0bGlnaHRieGQWdmVydGhlYXZ5cmlnaHRsaWdodGJ4ZBV2ZXJ0bGlnaHRob3J6aGVhdnlieGQVdmVydGxpZ2h0bGVmdGhlYXZ5YnhkFnZlcnRsaWdodHJpZ2h0aGVhdnlieGQRdmVydHNuZ2hvcnpkYmxieGQRdmVydHNuZ2xlZnRkYmxieGQSdmVydHNuZ3JpZ2h0ZGJsYnhkB3VuaTI2MzkJc21pbGVmYWNlDGludnNtaWxlZmFjZQVzcGFkZQRjbHViBWhlYXJ0B2RpYW1vbmQHdW5pMjcxMwd1bmkyNzE0B3VuaTI3MTUHdW5pMjcxNwd1bmkyNzE4Bm1pbnV0ZQZzZWNvbmQHdW5pMjExMwd1bmkyMTE2CWVzdGltYXRlZAd1bmkyNDIzB3VuaTIzOEIFaG91c2UHdW5pMjFFQQd1bmkyMzI3B3VuaTIzMkIHdW5pMjMyNgd1bmkyMzI1B3VuaTIzMTgHdW5pMjNDRQd1bmlGRkZEFmVxdWFsX2VxdWFsX2VxdWFsLmRsaWcSZXF1YWxfZ3JlYXRlci5kbGlnEmdyZWF0ZXJfZXF1YWwuZGxpZxBsZXNzX2h5cGhlbi5kbGlnD2xlc3NfZXF1YWwuZGxpZwd1bmkwMzc1B3VuaTAyQkMHdW5pMDJCQgd1bmkwMkJBB3VuaTAyQzkHdW5pMDJDQgd1bmkwMkI5B3VuaTAyQkYHdW5pMDJCRQd1bmkwMkNBB3VuaTAyQ0MHdW5pMDJDOAd1bmkwMzA4B3VuaTAzMDcJZ3JhdmVjb21iCWFjdXRlY29tYgd1bmkwMzBCB3VuaTAzMDIHdW5pMDMwQwd1bmkwMzA2B3VuaTAzMEEJdGlsZGVjb21iB3VuaTAzMDQNaG9va2Fib3ZlY29tYgd1bmkwMzBGB3VuaTAzMTEHdW5pMDMxMgd1bmkwMzFCDGRvdGJlbG93Y29tYgd1bmkwMzI0B3VuaTAzMjYHdW5pMDMyNwd1bmkwMzI4B3VuaTAzMkUHdW5pMDMzMQd1bmkwMzM1B3VuaTAzMzYMdW5pMDMwOC5jYXNlDHVuaTAzMDcuY2FzZQ5ncmF2ZWNvbWIuY2FzZQ5hY3V0ZWNvbWIuY2FzZQx1bmkwMzBCLmNhc2UMdW5pMDMwMi5jYXNlDHVuaTAzMEMuY2FzZQx1bmkwMzA2LmNhc2UMdW5pMDMwQS5jYXNlDnRpbGRlY29tYi5jYXNlDHVuaTAzMUIuY2FzZQ1kaWVyZXNpcy5jYXNlDmRvdGFjY2VudC5jYXNlCmdyYXZlLmNhc2UKYWN1dGUuY2FzZRFodW5nYXJ1bWxhdXQuY2FzZQpjYXJvbi5jYXNlCmJyZXZlLmNhc2UJcmluZy5jYXNlCnRpbGRlLmNhc2ULdGlsZGVjb21iLmkLdW5pMDMwNjAzMDELdW5pMDMwNjAzMDALdW5pMDMwNjAzMDkLdW5pMDMwNjAzMDMLdW5pMDMwMjAzMDELdW5pMDMwMjAzMDALdW5pMDMwMjAzMDkLdW5pMDMwMjAzMDMQdW5pMDMwMjAzMDEuY2FzZRB1bmkwMzAyMDMwMC5jYXNlEHVuaTAzMDIwMzA5LmNhc2UQdW5pMDMwMjAzMDMuY2FzZQROVUxMAAAAAQAB//8ADwABAAIADgAAAAAAAAD2AAIAJgABABkAAQAcACQAAQAmACYAAQAoAEAAAQBCAF8AAQBjAGMAAQBlAGkAAQBrAGsAAQBtAJkAAQCbAJsAAQCdALAAAQCyAOYAAQDoAQAAAQEDAQwAAQEPAScAAQEpASoAAQEtAVIAAQFUAVQAAQFWAVYAAQFYAV8AAQFhAYQAAQGGAYYAAQGJAY4AAQGQAZIAAQGfAdMAAQHXAdcAAQJRAlMAAQJWAlYAAQJZAlkAAQJfAl8AAQJhAmIAAQJlAmUAAQNwA3AAAQN6A5IAAwOVA5UAAQOgA6oAAwOwA7AAAQO1A8AAAwABAAMAAAAQAAAAIAAAADYAAQAGA4oDiwOMA40DjwOQAAIAAwN6A4gAAAOgA6kADwO1A8AAGQABAAIDiQOqAAEAAAAUACIACgAEACYAMgA8AEYAAkRGTFQAJGxhdG4AJAACbWFyawA4bWttawA+AAQAAAABAEQAMgAAAAYAEAABAEQAAAAGABAAAQBGAAEABgAQAAEASAACAAAAAQAAAAAAAwABAAIAAwAA//8AAgAAAAEAAQBmAlAABQGOAyYAAQBKAEoAAQCGADwAAQBkAGQAAQDgAJQAAQASABIAAQAaAAwAAhQUFBoAAQACA4kDqgACAAAUBgAAFAwABhQIFA4UFBQaFCAUJgABAAYDigOLA4wDjQOPA5AAAgADA3oDkgAAA6ADqgAZA7UDwAAkAAIAAwN6A4gAAAOgA6kADwO1A8AAGQAGAAAT4gAAE+gAABPuAAAT9AAAE/oAABP6ACUUuBPmE+wT8hP4FKwT/hQEFAoUphSyFBAUFhQcFCIUKBQuFDQUOhRAFKAUlBSaFEYUTBRSFFIUWBReFGQUahRwFHYUfBSIFIIUjgAlAAAU0gAAFHIAABR4AAAUfgAAFIQAABTeAAAU2AAAFLQAABTGAAAUzAAAFN4AABSKAAAUkAAAFLQAABSWAAAUugAAFLoAABScAAAUogAAFKgAABTkAAAU5AAAFOQAABS6AAAUugAAFLQAABS0AAAUtAAAFK4AABTYAAAU2AAAFNIAABS0AAAUugAAFOQAABTAAAAU5AAwAAAUPAAAE9wAABPiAAAT6AAAE+4AABRIAAAUQgAAFB4AABQwAAAUNgAAFEgAABP0AAAT+gAAFB4AABQAAAEStgACEuYAAhLsAAIS8gACEvgAAxRaAAIS/gACEv4ABBRUAAQUVAAAFCQAABQkAAAUBgAAFAwAABQSAAAUTgAAFE4AABROAAAUJAAAFCQAARK8AAAUHgAAFB4AABQeAAAUGAAAFEIAABRCAAAUPAAAFB4AABQkAAAUTgAAFCoAABROAAIAIwABABkAAAAcACQAGQAmACYAIgAoAEAAIwBCAF8APABjAGMAWgBlAGkAWwBrAGsAYABtAJkAYQCbAJsAjgCdALAAjwCyAOYAowDoAQAA2AEDAQwA8QEPAScA+wEpASoBFAEtAVIBFgFUAVQBPAFWAVYBPQFYAV8BPgFhAYQBRgGGAYYBagGJAY4BawGQAZIBcQGfAdMBdAHXAdcBqQJRAlMBqgJWAlYBrQJZAlkBrgJfAl8BrwJhAmIBsAJlAmUBsgNwA3ABswOVA5UBtAOwA7ABtQG2ErYAABLCEuYAABUgAAASwhLmAAASIAAAEsIS5gAAEsgAABLCEuYAABIgAAAZuBLmAAASzgAAEsIS5gAAEtQAABLCEuYAABLaAAASwhLmAAASJgAAEsIS5gAAFEgAABLCEuYAABImAAAZuBLmAAASDgAAEsIS5gAAFE4AABLCEuYAABIUAAASwhLmAAAUqAAAEsIS5gAAFSYAABLCEuYAABK2AAAZuBLmAAAVOAAAEsIS5gAAFT4AABLCEuYAABTkAAASwhLmAAAVRAAAEsIS5gAAErYAABLCEuYAABTwAAASwhLmAAAS4AAAEsIS5gAAFUoAABLCEuYAABK2AAASwgAAAAAZ1gAAGdwAAAAAEvIAABncAAAAABLsAAAZ3AAAAAAZ1gAAEvgAAAAAEvIAABL4AAAAABL+AAAZ3AAAAAATBAAAGdwAAAAAExAAABXyAAATHBMKAAAV8gAAExwTEAAAFbwAABMcExAAABMWAAATHBOIAAASwhTYAAATIgAAEsIU2AAAEy4AABLCFNgAABMoAAASwhTYAAATLgAAFJwU2AAAEzoAABLCFNgAABM0AAASwhTYAAATOgAAGbgU2AAAE0AAABLCFNgAABNGAAASwhTYAAATTAAAEsIU2AAAE1IAABLCFNgAABNYAAASwhTYAAATXgAAEsIU2AAAE4gAABm4FNgAABNkAAASwhTYAAATagAAEsIU2AAAE3AAABLCFNgAABN2AAASwhTYAAATfAAAEsIU2AAAE4IAABLCFNgAABOIAAASwhTYAAATjgAAEsIU2AAAErYAABLCAAAAABOmAAATvgAAAAATlAAAE74AAAAAE5oAABO+AAAAABOgAAATvgAAAAATpgAAE6wAAAAAE7IAABO+AAAAABO4AAATvgAAAAAStgAAEsIAABPKErYAABLCAAATyhK2AAATxAAAE8oSJgAAEsIAABPKErYAABm4AAATyhQSAAASwhQYAAAT0AAAEsIUGAAAE9YAABLCFBgAABPcAAASwhQYAAAT4gAAEsIUGAAAE+gAABLCFBgAABPuAAASwhQYAAAT9AAAEsIUGAAAFBIAABm4FBgAABP6AAASwhQYAAAUAAAAEsIUGAAAFAYAABLCFBgAABQMAAASwhQYAAAUEgAAEsIUGAAAFBIAABLCFBgAABQeAAAUKgAAAAAUJAAAFCoAAAAAFDYUPBLCAAAUQhQwFDwSwgAAFEIUNhQ8EsIAABRCFDYUPBd4AAAUQhQ2FDwSwgAAFEIUNhQ8GbgAABRCFDYUPBeKAAAUQhK2AAASwgAAAAAStgAAGbgAAAAAErYAABLCAAAAABUgAAASwgAAAAASGgAAEsIAAAAAErYAABd4AAAAABUsAAASwgAAAAAStgAAGbgAAAAAErYAABLCAAAAABK2AAAXigAAAAAVSgAAEsIAAAAAErYWChLCFhAWFhUgFgoSwhYQFhYSIBYKEsIWEBYWEiYWChLCFhAWFhRIFgoSwhYQFhYSJhYKGbgWEBYWEg4WChLCFhAWFhROFgoSwhYQFhYSFBYKEsIWEBYWFKgWChLCFhAWFhUmFgoSwhYQFhYU6hYKEsIWEBYWFFQWChLCFhAWFhK2FgoZuBYQFhYVOBYKEsIWEBYWFT4WChLCFhAWFhK2FgoSwhYQFhYVIBYKEsIWEBYWErYWChm4FhAWFhU4FgoSwhYQFhYVPhYKEsIWEBYWFUoWChLCFhAWFhTeFgoSwhYQFhYU5BYKEsIWEBYWFUQWChLCFhAWFhRaFgoSwhYQFhYUYBYKEsIWEBYWErYWChLCFhAWFhK2FgoSwhYQFhYVIBYKEsIWEBYWFUoWChLCFhAWFhT2FgoSwhYQFhYUZhYKEsIWEBYWFGwWChLCFhAWFhK2AAAaBgAAAAAStgAAEsIAAAAAErYAABLCAAAAABUgAAASwgAAAAASGgAAEsIAAAAAErYAABd4AAAAABSoAAASwgAAAAAStgAAGbgAAAAAFOQAABLCAAAAABK2AAAXigAAAAAUkAAAGJ4AAAAAFHIAABieAAAAABR4AAAYngAAAAAUfgAAGJ4AAAAAFIQAABieAAAAABSQAAAYjAAAAAAUigAAGJ4AAAAAFJAAABiSAAAAABSWAAAYngAAAAAUkAAAGKQAAAAAFJYAABikAAAAABK2FgoSwhYQFhYStgAAEsIAABSiErYAABLCAAAUohIaAAASwgAAFKIStgAAFJwAABSiErYAABd4AAAUohK2AAAZuAAAFKIStgAAF4oAABSiErYU/BLCFQIAABUgFPwSwhUCAAASIBT8EsIVAgAAEiYU/BLCFQIAABSoFPwSwhUCAAAVJhT8EsIVAgAAErYU/Bm4FQIAABU4FPwSwhUCAAAVPhT8EsIVAgAAFLQRJBTSFNgAABSuESQU0hTYAAAUtBEkFLoU2AAAFMARJBTSFNgAABTGESQU0hTYAAAUzBEkFNIU2AAAFN4U/BLCFQIAABTkFPwSwhUCAAAVRBT8EsIVAgAAFOoU/BLCFQIAABK2FPwSwhUCAAAU8BT8EsIVAgAAFUoU/BLCFQIAABT2FPwSwhUCAAAStgAAEsIAAAAAGgwAABUaAAAAABVWAAAVGgAAAAAVCAAAFRoAAAAAFQ4AABUaAAAAABUUAAAVGgAAAAAStgAAEsIAAAAAErYAABVQAAAAABUgAAAVUAAAAAASJgAAFVAAAAAAFSYAABVQAAAAABUsAAAVUAAAAAAStgAAFTIAAAAAFTgAABVQAAAAABU+AAAVUAAAAAAVRAAAFVAAAAAAFUoAABVQAAAAABoMAAAVaAAAAAAVVgAAFWgAAAAAFVwAABVoAAAAABViAAAVaAAAAAAaDAAAFW4AAAAAFdoAABXyFfgAABV0AAAV8hX4AAAVegAAFfIV+AAAFYAAABXyFfgAABV6AAAVvBX4AAAVgAAAFfIV+AAAFYYAABXyFfgAABWMAAAV8hX4AAAVmAAAFfIV+AAAFZIAABXyFfgAABWYAAAVvBX4AAAVngAAFfIV+AAAFaQAABXyFfgAABWqAAAV8hX4AAAVsAAAFfIV+AAAFbYAABXyFfgAABXaAAAVvBX4AAAVwgAAFfIV+AAAFcgAABXyFfgAABXOAAAV8hX4AAAV1AAAFfIV+AAAFdoAABXyFfgAABXgAAAV8hX4AAAV5gAAFfIV+AAAFewAABXyFfgAABKYAAAV/gAAAAAWBBYKEsIWEBYWFiIAABZAAAAAABYoAAAWQAAAAAAWHAAAFkAAAAAAFiIAABYuAAAAABYoAAAWLgAAAAAWNAAAFkAAAAAAFjoAABZAAAAAABKwFkYSwgAAFkwSsBZGEsIAABZMErAWRhm4AAAWTBKwFkYXigAAFkwSngAAFsQWygAAFlIAABbEFsoAABZeAAAWxBbKAAAWWAAAFsQWygAAFl4AABZkFsoAABZwAAAWxBbKAAAWagAAFsQWygAAFnAAABaaFsoAABZ2AAAWxBbKAAAWfAAAFsQWygAAFoIAABbEFsoAABaIAAAWxBbKAAAWjgAAFsQWygAAFpQAABbEFsoAABKeAAAWmhbKAAAWoAAAFsQWygAAFqYAABbEFsoAABasAAAWxBbKAAAWsgAAFsQWygAAFrgAABbEFsoAABa+AAAWxBbKAAASngAAFsQWygAAEiwAABbEFsoAABbQAAAW1hbcAAAY7AAAFvoAAAAAGOwAABb6AAAAABkEAAAW+gAAAAAW4gAAFvoAAAAAFugAABb6AAAAABbuAAAW+gAAAAAW9AAAFvoAAAAAFwwAABlkAAAXEhcMAAAZZAAAFxIXDAAAFwAAABcSFwYAABlkAAAXEhcMAAAXKgAAFxIYzgAAGWQZFgAAEqQAABlkGRYAABKkAAAZZBkWAAAXGAAAGWQZFgAAGVgAABlkGRYAABceAAAZZBkWAAASpAAAGWQZFgAAFyQAABlkGRYAABjOAAAZZBkWAAAYzgAAFyoZFgAAGV4AABlkGRYAABcwAAAZZBkWAAAXNgAAGWQZFgAAFzwAABlkGRYAABjOAAAZZBkWAAAXQgAAGWQZFgAAF0gAABdaAAAAABdOAAAXWgAAAAAXVAAAF1oAAAAAF2AAABoAAAAAABdgAAAXZgAAAAAXbAAAEsIAAAAAF34XhBLCAAAXkBdyF4QSwgAAF5AXfheEEsIAABeQF34XhBd4AAAXkBd+F4QZuAAAF5AXfheEF4oAABeQF5YAABLCAAAAABeWAAAZuAAAAAAZvgAAGcQAAAAAF5wAABnEAAAAABeiAAAZxAAAAAAZvgAAF6gAAAAAF64AABnEAAAAABm+AAAXtAAAAAAZvgAAF7oAAAAAF8AAABnEAAAAABlqGDgaABg+GEQYGhg4GgAYPhhEF8YYOBoAGD4YRBfSGDgaABg+GEQXzBg4GgAYPhhEF9IYOBf2GD4YRBfYGDgaABg+GEQX3hg4GgAYPhhEF+QYOBoAGD4YRBfqGDgaABg+GEQYzhg4GgAYPhhEGSgYOBoAGD4YRBfwGDgaABg+GEQZahg4F/YYPhhEGNoYOBoAGD4YRBjgGDgaABg+GEQZahg4GgAYPhhEGBoYOBoAGD4YRBlqGDgX9hg+GEQY2hg4GgAYPhhEGOAYOBoAGD4YRBggGDgaABg+GEQX/Bg4GgAYPhhEGAIYOBoAGD4YRBgIGDgaABg+GEQYDhg4GgAYPhhEGBQYOBoAGD4YRBlqGDgaABg+GEQZahg4GgAYPhhEGBoYOBoAGD4YRBggGDgaABg+GEQYJhg4GgAYPhhEGCwYOBoAGD4YRBgyGDgaABg+GEQYSgAAGFAAAAAAGIAAABiGAAAAABhWAAAYhgAAAAAYXAAAGIYAAAAAGIAAABhiAAAAABhoAAAYhgAAAAAYgAAAGG4AAAAAGHQAABiGAAAAABiAAAAYegAAAAAYgAAAGIYAAAAAGKoYsBieAAAYvBiqGLAYngAAGLwYqhiwGJ4AABi8GKoYsBiMAAAYvBiqGLAYkgAAGLwYmBiwGJ4AABi8GKoYsBikAAAYvBiqGLAYtgAAGLwSsBlAGUYZTAAAGawZQBlGGUwAABjCGUAZRhlMAAASMhlAGUYZTAAAGMgZQBlGGUwAABjOGUAZRhlMAAASsBlAGNQZTAAAGNoZQBlGGUwAABjgGUAZRhlMAAAY7BkKGRAZFgAAGOYZChkQGRYAABjsGQoY8hkWAAAY+BkKGRAZFgAAGP4ZChkQGRYAABkEGQoZEBkWAAAZHBlAGUYZTAAAGSIZQBlGGUwAABI4GUAZRhlMAAAZKBlAGUYZTAAAErAZQBlGGUwAABkuGUAZRhlMAAAZNBlAGUYZTAAAGToZQBlGGUwAABKkAAAZZAAAAAASpAAAGWQAAAAAGVIAABlkAAAAABlYAAAZZAAAAAASPgAAGWQAAAAAGV4AABlkAAAAABlqAAAaAAAAAAASqgAAGaYAAAAAGXAAABmmAAAAABl2AAAZpgAAAAAZfAAAGaYAAAAAGYIAABmmAAAAABKqAAAZiAAAAAAZjgAAGaYAAAAAGZQAABmmAAAAABmaAAAZpgAAAAAZoAAAGaYAAAAAErAAABLCAAAAABmsAAASwgAAAAAZsgAAEsIAAAAAErAAABLCAAAAABKwAAAZuAAAAAAZvgAAGcQAAAAAGdYAABncAAAAABnKAAAZ0AAAAAAZ1gAAGdwAAAAAGeIZ6BnuAAAZ9BK2AAASwgAAAAAZ+gAAGgAAAAAAErYAABoGAAAAABoM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AAQAAAABAcAAAQAAAAEBgAABAAAAAQHIAAEAAAABAXYAAQAAAAEBdAABAAAAAQQuAAEAAAABAWoAAQAAAAEBaAABAAAAAQFmAAEAAAABAWQAAQAAAAEBlgAEAAAAAQFgAAEAAAABBDYABAAAAAEBsAABAAAAAQG4AAEAAAABAVQAAQAAAAEBuAABAAAAAQEqAAYAAAACAugC+gAGAAAAAgNKA14ABgAAAAIC+AMKAAYAAAACAxIDJAAGAAAABANUA4oDZgN4AAAAAQAfAAAAAQAgAAAAAQAWAAAAAQASAAAAAQAJAAAAAQARAAAAAQAOAAAAAQANAAAAAQAMAAAAAQAPAAAAAQAQAAAAAQAVAAAAAQAiAAAAAQAjAAAAAQAkAAAAAQAlAAAAAQATAAAAAQAUAAAAAQAhAAAAAgAAAAEAAAACAAIABQAAAAIAHAAeAAAAAwACAAUACAAAAAMAFwAYABkAAP//AA8AAAABAAIABAAFAAYADwAQABEAEgATABQAFQAWABcAAQP4AAcAAQPiAAgAAQQEAAwAAQP+ABYAAQPW/+YAAQPyACAAAQPi//YAAQPUAAIAAQY2AAEDxAABBooAAwP2BAAD4gACA/4AAwIqAogCiQACBAgABACtALcBmgGjAAIEBgAEAdUB1gHVAdYAAP//AA8AAAABAAMABAAFAAYADwAQABEAEgATABQAFQAWABcAAQZWAAUDkgOWA7wDmgPCAAID8gAFAeMCFQIWAhcCGAACA+IABQHkAhECEgITAhQAAP//ABAAAAABAAIABAAFAAYABwAPABAAEQASABMAFAAVABYAFwAA//8AEAAAAAEAAgAEAAUABgAIAA8AEAARABIAEwAUABUAFgAXAAD//wAQAAAAAQACAAQABQAGAAkADwAQABEAEgATABQAFQAWABcAAP//ABAAAAABAAIABAAFAAYACgAPABAAEQASABMAFAAVABYAFwAA//8AEAAAAAEAAgAEAAUABgALAA8AEAARABIAEwAUABUAFgAXAAD//wAQAAAAAQACAAQABQAGAAwADwAQABEAEgATABQAFQAWABcAAP//ABAAAAABAAIABAAFAAYADQAPABAAEQASABMAFAAVABYAFwAA//8AEAAAAAEAAgAEAAUABgAOAA8AEAARABIAEwAUABUAFgAXAAMAAAABA5QAAQLMAAEAAAAGAAMAAQK6AAEDggAAAAEAAAAHAAMAAQJcAAEB8gAAAAEAAAAaAAMAAQJ6AAEB4AAAAAEAAAAbAAMAAQHYAAECPgAAAAEAAAAdAAMAAQHGAAECNAAAAAEAAAAdAAMAAQIqAAEBnAABAioAAQAAAAoAAwABAhwAAQGIAAECHAABAAAACwADAAAAAQImAAECLgABAAAAAwADAAEC7gABAu4AAAABAAAAAwADAAECJAABAtwAAAABAAAABAADAAAAAQHwAAICIgH4AAEAAAAEAAICNgALAgMCBAIFAgYCBwIIAgkCCgILAgwCawABArwADwICAowCMgI8AkYCUAJaAmQCbgJ4AoICCAIOAioCFAACAnYAGAOgA6EDogOjA6QDpQOmA6cDqAOpA6oDqwOsA60DrgOvA7ADsQOyA7MDvQO+A78DwAACAoQAGgE6AUoDoAOhA6IDowOkA6UDpgOnA6gDqQOqA6sDrAOtA64DrwOwA7EDsgOzA70DvgO/A8AAAgJ4ADIB1QHWAK0AtwHVAUoB1gGaAaMB8AHxAfIB8wH0AfUB9gH3AfgCKQIqAg0CRQJGAmsCiAKJA6ADoQOiA6MDpAOlA6YDpwOoA6kDqgOrA6wDrQOuA68DsAOxA7IDswO9A74DvwPAAAEAAQE5AAEAAQInAAECagABAAECIgABAAICQwJEAAIAAQH5AgIAAAACAAEB2QHiAAAAAwJSAlgCXgABAmgAAQJYAAECWgAEAmQCagJwAnYABAJyAngCfgKEAAEAAwIkAngCegACApICgAACAoAChgABAAQAqwC2AZgBogABAAQAAQB4AOgBYwABAAECDQABAAIAAQDoAAEAAgB4AWMAAQABAU8AAQABAGMAAQAFAdkB5QHvAfkCAwACAAEB7wH4AAAAAQACATkBSQACAAEDegOIAAAAAgACA6ADswAAA70DwAAUAAIAAgABAOYAAAHYAdgA5gACAAIDiQOLAAADjQOSAAMAAgE6AUEAAgIRAhUAAgISAhYAAgIUAhgAAgACAdkB4gAAAm0CbQAKAAMB7wITAhcABAHmAfAB+gIEAAQB5wHxAfsCBQAEAegB8gH8AgYABAHpAfMB/QIHAAQB6gH0Af4CCAAEAesB9QH/AgkABAHsAfYCAAIKAAQB7QH3AgECCwAEAe4B+AICAgwABgHjAeQB5QHvAfkCAwACAAUDegODAAADiQOJAAoDkwOXAAsDmQOcABADuQO8ABQAAQAPATkB2QHaAdsB3AHdAd4B3wHgAeEB4gHlAe8B+QIDAAIABwE5ATkAAAFJAUkAAQN6A4MAAgOJA4kADAOTA5cADQOZA5wAEgO5A7wAFgABADIAAQB4AKsAtgDoAUkBYwGYAaIB+gH7AfwB/QH+Af8CAAIBAgICIgIkAicCQwJEAm0CeAJ6A3oDewN8A30DfgN/A4ADgQOCA4MDiQOTA5QDlQOWA5cDmQOaA5sDnAO5A7oDuwO8A1wAAwFjAhkAAQABAG8DvQACA6MDvgACA6IDwAACA6kCRwACAnIDawACAnACSAADAnACcAO5AAIDfQO6AAIDfAO7AAIDhQO8AAIDgwO1AAIDfQO2AAIDfAO3AAIDhQO4AAIDgwABAAMDfwOBA6UDagACAnIDbQACAnADbAACAjEDaQADAnACcAABAAUCHgIxAnACcgJzAAEAAQAIAAIAAAAUAAIAAAAkAAJ3Z2h0AQAAAXdkdGgBAQAAAAQAEAABAAEAAAFSAH0AAAADAAAAAgFXAZAAAAK8AAA='; diff --git a/lib/interactive/TMB_FLANKER_ATTENTION/fonts/Inconsolata-Regular.ttf b/lib/interactive/TMB_FLANKER_ATTENTION/fonts/Inconsolata-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..3b7e851b2b7be0dd9bbe41330884d15b07b1b0bc GIT binary patch literal 98540 zcmb4s2Vi7Jk@o91qsc*&bIw7Uk!GY()+kGxv^hAg!`j9H8`*dr*4T#=x8QKVflYL_ zNhUaw4R`P#V9b&3ha(*60>Nj44-?Fe{;#^^|1Iagj0_x{@Y zDTx*D#0M{)ciH)u{4DUkQzYhZN|OEU=bv@?W%#@oKe@*Xq@cY{VAAjvxmmGNCH=lVzVx=1-sppx?F1`GU`}~hRDY1d3 zBxT=q+1i22N`GD(lUNSV$e)&E$%XF=@->o1GD)GPRjZR3)9E#9CY@nTD*a>0Figa6pWVdVCgxs!eC)TagnZ4BTh`YFHcdd6m9PLzr@8-^ zl4O2THtQJ+?v_e*NrmyMFb{)rz}NwkIU43o0!GSe07KZ!mr9=CenQq}SZH{(|&?I@W8BAB(uA zdHR^AZkBqaKk%m#ps;q5r|vuEsmIrUt2`COQ|F!JDW7->GkQ?)i+Jkk=GPlFH>xn7 zU6(i=E;D0y@8LVM|?6)-LH=EIl$9uI5EZ@$B)4|)Per|D*`$I z=rc|N{h*5b83nf&&>uJn^i~C0ueoLYKc$Bx>r)y&(Ht?QOVa!*)_cH}Hq>wjisVMV zMumdhNVdn1n!hS19m&4$g_BA4`6^vEOHR-Q*>-}ZjqbHt(3DiDTi0I}P_&{GM?Ifge2+E%3j0OSVg(Pp6FO%%h5~Zf6 z*VbdO;g96fYMH!dv{)q4ID?g1Y0v?cGg_(OTdg{9xhvsGd20MCF_h9bYL1li*KF56 zfBfUmwO)95di&e`@@37h&imq)<42I<6@-8c=sqWO-{p?lU{vcvl@ngT7 zN{xMI?u?0WU?3f>Wj*oPi#8szc=0_5-k-W(mD-DJU zGkyN1w^q!IBqoF9uqPF?Lvz;FUzTg~6;eS;G<&m|Od?S*t~qSIy*{&sSOoqECV@K( z$$ojLKBcJ*dVP9*ZaA9*QAr!9jmkt>!>7}w*zTzdSIddf4ciLau82$-H5$D!wwUkV zJQ_=mZ7D}5YL1cgffZAB_2BlEi#PPS=SE^$y}@El`QkJCrzZB#r=3Y(dXVobP95iN zL~s|X-uxshVynj65_c@jLom01=>trp12ayugvD46zGkVwEl1Ky7j zp?Tz4J|t705ZXo;uKwCR$u+IgGzz448V^-VCnJ5liV4sWh)xMH<1 zIr`ewZEF)>nZTYIrP*>$r}?Tr^iAT39L1hVwz;Ozs?$jsi7fdHG$%L&E{bOk%Up9N zB(kyJVH0>%!QgbK4h zF1xtD0X!s||H=IgK$2|cIXV_1M~I#fvMKPAY>KfT6nKfgn2Hyicq_N%0_L;uH3_2& zP?zrJbK$TGMy!ELqhJIT!s{Wtu;sF!BW6y{>n^WH&_UK&jPW^zY8T)iJ$?*ORM2#w zKW`Eg1wqjnCxmus$d(J-&nUQk!2M4rfhJo{&}7TW8d{%{`9ueZDO~FaipiD>toMK` zZK&okP_(ZF)V+XG)_+0eFL6x1Oob8l{wN-)QbP7#V7jlRViGn)g&}({XunxXa2w5t zjY5y8P-O1~)UA?EK+&o%s#KBux1|YuxCwfP>^*10MMpzDCU8kP0mW_fAEkG3Dd`2) z9fHgJscyMD{<-_sTd)2c{EKd0y`NiB=EXPFyAUfwwqJ1S1A^zYpZLOHV$!bl-^&_k zxww>rmUEbLS&iB3jwdpiq`Ve4!l-ehUmLCXxJ}DuVbkPV&66cd=JmpoHHL?C4If!E z%@C9Tywus%*9@g*_6=_tI%OtZ+%%XO_F4?AM_KpQlVQSvp-ZOzlAdb{+F<23e()?F;q`T=y# zGt;eaKxCyntaVntQmT^vE)|QWR8?4Ozp2YwJGlm1NMdGLZmrwq8fGJDgI7W3dP;5# zLBV^-WN+Me<08vUZ{D0J?_TuO4O(U}yGn!M#N=?n8y{V*I`a99{f_Sry>`U3<@PhS zy>3IXH`E_5>U9Q-#pyHKlcPIFXU?8a_89G^JEwmiPe2wqtz63HxPE*%#HD%&QBk2S zV*-XGU%)&hVCsNT?Wcetts`I_6fgsT38;8l&l6u%n71TJ@3YA&S%+V>t%JZsJ62%2 z7cLv5o-j?Tn25tF)wDN4Vs8-C0S<+A7{xkJqIbC@hsUsHlw|UlN`r#`J0Maz zoyU`a2SqnYove_ zZ`yt2u9&r+fMLz5?Hc4dxUJQJ9gxw?2?sOD6GvV;dO-H#`1tk5kBRjfUEfM`0(Um> z^}2&wSmt#Q55LsrA)h(70Rrm5_Ac%6$VQ>{x-ltQFU&Cs%K#ppiBW!zIdUs(&}!j? zFr!geVF&j)u^Zrlq%ggdqvkpDU2kQtzw7-|?4_xxmSqwYa}3-9uX2j-N8*FDSWj1U zFJQ<53z&yr;xN5{skYZ#z>tIqm~S0_s-8aKf4Z zYUyaG_Bvo+t-sWPx>$u;j~qq&?MO{wen;5=8t*rnZ7SuD{b!nBXhmPo@j$l5VFS{T ztuXAA$r3iMd7Vxd-#8>$@NJXXT%+NGSIzbP@Q@;9Uc_6!9@?8K=zC;?)i)3>3zDmi4(8m%ThW7DKgbyrpYDVPC zVI|X2wCPAYqxwV=X-ucz0!u=yDh*D9q-oHk(4z!?o>VrQOD4&Z=shV{gX!x;-q=O^ z_hijpBO~Ra>CxIt{zk1~u+j*`a^e;QFScu8;3etVdlvucO-*4FVQtQSZ@Mbgg zodfG-l59`vO<;&1KpmT$@y%S39c)bqY)AewO`3A^`fKDUo(v&QKxA!^QcjmE5;m+w zfI_O2N)*f>h^6QiYaW#m%;&opcW8{{0`} zl7LuJ$v6_te73Kb99%xl0Z{7%wLIW{7JRP`%;ZGKKU5z^>_^!EMZpsz*gL|(n8y?H z`I6p3>#jCi*j*ua#cpxBZSHV3;u{?LG`A^#nI@_r6W}joLQwS<2bT#SY+73;+O&6| zFD8<(PAy0e|ITdV8aWu5$Yk^$>7AjO)!$ZO0QM0;JSU(Hr(0j$MVG_c7*#~L!BI20`zvjXA&WFUb%b?8;En<_-Ha z0Tz6Fc$Rzm<8f20v=7C$vRUmC6+DBZe^rt>x#R2ucWi8quWjG5Ha)$zW&7GVQP0QZ>wQ(%ddqP` zR|Z4Cko^}hN+l)@m~z|t3mEdl1dQ-4Ii7GgjHo^cn0ECc2Sjh)-GLSUQXK0(!tFAk zI~fc7Ox1@no(b=kQ9uHh|Bdf)o?#YrP!2+j(XKww7#}*p7~nY1SP1BL^`Rfo*PH~J zG8O{*8PGzNjS`^0bP{OtItiM*&UW>InA=ZG;r^tcn7mGbwOxH6sL5lX9uQFEb@H71 zP3tXIC$CdGl4Wcsa_*g{+FYa=-l9H-9R^zHIWMQZjOQwXcJ39np91gY%T=1ho;!-$ zCy*Vb)^P&aAwN`bL9KPrf=qQw#)$loI^G9=^nI$W5T>WsA81=I!71{4-_#|mnj)ao zY#Wyvj!D1>$~Dz4IXQ}Q0VOCu787xfC?^=brcJqK;5f=Pw66swv9C2GKz#8!dyKqn zvBD4hMAVmPdd_23xDBP(sP!HKn>&hAJjNCLRO>wib-~e4l*a*-MEM_7g)j%I(eV6_ zhBoh~#k%vS+UrhpKK?nXbH4g>xufLe_C6E*dKoEtDa&bsR}o+T7r=ZFKe?n7{8pPr zmcwvZnIyTjT+Iz0Qk{xDIp)()6694h-Wh%DtEE4mMC%oU@~6T_&i^aA4-|3ThpISh zSD`g&q{h1Bi8w;*E7ne_SP}bMMMZf7-sQF#4szQ;xY{F&Xd`pk)V-G1sGNawrx zj@Hm)-#hBDE`9LRQ6|?BTT|ZhCwa(5po@oeoy0;b>Qqyx!-E zEA{ZezRBQ#mpPyN=tsZSdeKvJ#Rkm1m9)Pv?M+PTbE{Wvd(G`D4tIpt;$m)RGZ$m8 zNe%=j&RN-pVuvg(f!q{qxfMPeyc!!yetvRkDA*EZ4(@ewLx`X+<$%l9F0(EDaof3- zKx4=FCmtD{kHzLkJ|JIOT^&eI4Fp^N&9;ZC@z_8VV^B7d{3bVSZLDecxMD^Z{z&RL z-IYa0joVzkr)_*wDUVXmqtf2O4#te~Lpv`Rs2B)XNwzcYMUNTo%J+r@d)~1pi8QV21JM)RNH9tzs4kweN z^U3~|f#AR?eH3G7J45+56yq zAKbDOn;UvWzO=k`II~nUw0^~$v@Bx-vB3x=pO43P<7w1>5=*#!$WW6Q6r;!}*51IqT$>Nq%vW@eW@|)%YNS`2s z99!;>3}!u+P~U8SW2NY* zxb5d0^VVip)mdOBpI6N4K`}bf=x zN1EbsPzTdtB$|O~iDUY4+ehM1ykaf52q?})QRmwX(x!GF^$e!Vq*=&YpZs2_hT4R^ zSSq<3PN(G0u(g;0iI~BP*ylA~TUK&0RE1DF8yeK$K)nPAq^KN2iWypp)PYTAJ2TBl z(4LIjqK$Gev2#=U(eOkiJklRp$0taayAGpUJHlf8G$VD51w2NSW$!uZwU zYSb35XIpvp94WYg?Sr=^OZ(<)%l%%}tAdZJ<30|f+A`*FnWUFoO`}dm9Z9tqJWC;R z(d$2ujX#$wGc!lN3H{c2#*CQVVnjW;{iHOFNu$3+q&URGR8isxeu8Q;$H4-Vl+EUN zxO_jx<(qhqyrvn^o$5)XQ3nQnSYrW$IxxZbz<#wxmgah^1EWOEZmu0f{*OlE`lth? zM8q}@rRt+J*EAg{B`$@D>((?Ah&dC`@P0&`HotMr)vi%+6*JV%9Jr~phTnMX%=)gn z8ks=N*1e}}Uz&LB2Jeg3Far_2o?bCs=X59Q5-?zb>avX2NaLFh*QH@hpqD00R^$Zj{P7c z2)mnR`1JZW+Pj-Waen@T;OAFJhU8Q?KZilNz$9P}qm2}?RN-jKkHvJ~Hw30`$^{Hj zPMARX`tNw&UoIX;IrosocpvyN$CLvMXJy#2n=&$cjqyciri5vfBQ7W zGA!wbQEF>-ft@<##C$}j9ApT!pQqRV!k3FW4+2if`jBiN!yAeo03)^I0E*Oj z^dJua_?g{&Kk#SBn`csF{V(zqw4IK$oko&7Z9wFWEodmosA1vtt^f4-4XN;>-&T$Z$lty#=HOo7$^Ix@j=IYoR zZbs&7GrPHU4SW2^-?8_$&Y>0NSh-|=OGxJLxpuR5du{@TcCmnYP*^#FQFpO`q1`E9 z?m_vKDs=?Z*`3FZcHb*vG~`CbzQa5#m}eavGE3p6-NaBCkaSS)DD^5un~H-^)1|5T z8a0h8mD5+g`SqO--naV2@1OFKN7xh_{OxaB-)Mc|l~;f*4s2uKnt^h=2E&@3X*Fak zU}MNqAbnh_4xBY4`0io0|K9tBk8S(W%k1jbH(8~1>&wI=j)U{)dxA$Iw`xQMNYxes zhIk}k6ir7kDvtyV@kqe5H5dVPcqE|6rw~v|Zqy8=qxyF|LWcLfyf8bP_TYplQ|b`92J0_#!6 zdLSHWTClK4dn4CQHlNHkeN_hzvIGn^OCUzAp_V_vu5aCecCa_G{SKQ>-|DTgS7vH0 ztyX7h(q1Kue05Mxg$BM~NHFE1)ma`3^N^6>qcYzDhWIY<+$;JOkIHG2bpiD%%;5~@ zyNBnD)tol;FZ(s-`2S^_?H6A%W9-o^Z{5B;Gknh6No+GXNOeyi`?l1Oa!vPuY0Y9V zSRD>2UDB`BLLtelauO~O96yLRDzCiV2A-YI*N#6$KMDfXR8oh&Qsk%6ap*}6*)**) z4wN<>81eKC24qjQ-(B7?8uz670+mgTFe|Q(=QhU+*#jeuz0K6N-s;GRd8v^ZFM6@D zMl~9Z#h(qj!wy5Bvd}lbG42oc$K&4G?wOYs1968Q>&5ApKL{TF7hkXIMCE^^#8|#9 z-vZ|ERG7aJYdQfK)t+z|O`i($1YjuQSVD>C+}%ut6>$MoBYd)g5!xEPjF1(=OMP_9 z95I{X`==`_ee4)d{*^JXGMc7J(NhZa7EpBA2`D1yqze7?i-P`*fPVLhq2-UL(AT%P z<|MAExqPB_RFhR)C)iuU#Cm7@R za!iv^p+9{@P_zh&z>(u9B94rx(4SHGHwWlvPYm59N4NaDusEt9aocMd7VBc1uM5pUfvp<349ul1(>VRY`#CTs&G2M*AKk!1PG2F<}(tWcEb1UWv z7{a6GCIudf0>m!4sk7c^cko0=6R0rncX2$kgHk6l5qO?ZVcv)czCHhrZ_S}J?+{Rs z1wg?TT!(&<-*BI6XOr?Of@|WbwhUp#hZD-|`T zf(ymyc-3w#*29HTZ*ynClmFu9T)AiznV0lLCN-A#$>ou-+uI)w*~1=B*k0W?mDBe{ zstKpjVd)EooC&Wt;hZXOsxVI>5sKRWy(ixYN70EbctWzvn9zY(G4qp}%{am!bRc5f zMer>r-;FN!0Yvvs?Z809yk^ViU3yfe*K{UIs&;H9bspyQY99;rjkG(+)wClO9HI7E zGdo{*gsRlUV9gKI{ewFuU2oHN^zjk z)pT&u(&(@=6mq&lp_7+LzZ-J7Lt&RI1ok3J@_RYOz9r?!=Z@#SCjDBT%%t!(loJ+| z{-Eqzy(|01yH>;ri(L~3Rtklc1LJcSB`W$JgC#OwNX-t#p(lSYrmLuj4YXgBgNG=Ekg*^Wu9%*$+j@L)qFW2aoa}DUEhEF+3q~!cH z?ISy^RzDqbw6Lcy4xw??5_h|MX!bS)Mc zY+6!NdusK)a~YG@nVpMdYGJF#W9YR;T#^1je0l5c{)w{}vQ2m2Ts1$I^P4^8W~ne& z3DC|gU?oQ6_n>#ZjtWhx>4?QP)xu>{n@-BLX0&o2gt)F7}7Qd?qLHP^;#@* zbTS%;#OW`gZ3JG@HUjVUJTBw(mAdI$BCl3~`6R|BjI}a(wH??t#*09Of)P|4t`HT3 zm%2|zKt*Y{Jjnfgk$dOeC!7uqyjo?9Pj!uP+X==%)}6ds1^Uy76p5lSP;}V|p#$XA zD$t)%IMM+0vnPh`TCrOY9nqOqb;-C_EBFSlR>64<&$bAt{lvH~DALn{yVvT~)!)_O zF8Ia1qr!k+v=_QLbOJd##QVKEM0I2hp06_6%~3vD4J=pB#tORO`6@8C3R$DcsV8Fv z3_M>2=BAEJaEDzTOEWKEu*!fTe-*Y~bUReR+x>#K{F%0FV6Ptc)FI68)t@RH#i93q z-$JrK1W7J(F2ZIEum4ew!^ia^Do4H5kjqsnQp}Fl%eKjApEX?&wZ6uyw@B0m2OFMt zq>di3(A))MfxdVuF?9O)rpu;huH4et)?Zp3&JTry!v%v)ueaF@ky_T9pEI!Bd@W^PbR#}_(c;3z6H|rFW3|;jN5t(6+t~tgaz-_8lwJ!dkn`6X`0+rHgQ+vOB}2aQBO>>du)!Z5fJ$^jVW5IXL(I_WrM zkKWF8T(}M$=O17ERqNAj9ml?X5+&!4*;_wXlpN^4WPMc*v9D0IG%%lUY|I5_CyR?C zSyw8au{aH>EzRa?*%2H$?bPu-)#{${iQU!e?uqPpGC7`2Po$FL|CCH^tef)-AGSxz z(QrAUcbdInwCYXx=qh>z^9@3)%&$T~S@vOG>sDL4@ zC17sqjCHEmMNHZWxirHkj$#j49S}^t*K5WOl9X74+C|mIe^HL5$}BI^YEY!zNyR(w zv`s=js`5gWI5FO)B5^4QVTRD=&B2kX#HI7 z5wVz=F4=&oAa3r&IiwDhPIHHr=QU$TokLpxKZHv&qvCpSeJ{=g!t;;8o~l{yo$#)@ zaUI5aLFA@0T_=$+;?HA&xN9S0dou1o^mV%)XA|3ipXXQsJAJZ7=q%- z621}~N;4&(VA-w#Zpy^`L3+Csd|Z?4r9#!qO(T*qod>xOb5f3yDOA?^YMfINTptBq zc)omXWN}totw0M*o%tO4A7yR2_MdV0_Il1U!r?SrHJ#6 z_KkqKsl#8ju5dL@D57U;$j`D=`_FktU z^54vT;6Fw`B2-7~@OS7i(-W;1v_#1c^fDmp1I}&YGV&H=FtLA+I?JTc!oCJtl1-<@ ziTWv#qt&f>+zK`52?aSd>ci-w$n)wHv9D0v_fUr*ac1#P(3(d0*d}d{gc2U(N`R*c zyLG^s58w0rLz8lB^2h^R2b>A||D>72Ojh|!?*Ap%RwRF_{s#=sGQD4c(Q7W1z65cC z7Vsei(6y!XOz2h6pkh+`JG?xOP|tVm0Ips^DS3gtCKEK)G4zToSVwQcY{Qr%_k^Hu z#~p9_?&m^*bjI(`rj>axd&(b3r2_sGtqq+s?50EMZomapYUGND-v?RJfR2Eak}6WB z>5j&vwL~a{^h+^K5^PcYj=|@UmlLP+M0b#;>uer+MsQ9`Rj}Qsfmm^9XKbKHYw!oH zkzPpmqkoQ%Y-v5SW7FO5Iz)$oJc-1k@pw~fvD%G2J;Bj_c5te-THny`|FAMIIoEv> z=*;!=j+&R!^Fk-My1MK5dSYGEU-K{*dp<0pdXG7UNkgoCUP zpL^~-&tHD|LzDj+o)0m3vi1GsQtY>r*x|6($YFd3o^7V-(qzn`klmiq>(`iWE#Vc2 zv9owOTG$*|8`Eo6WR(CAH1Cn=4at}W3tk$ORg93O{CO$Z`@dHB9QLsu|*^K@t7-7^!cjjlHRnb zw>a1cWt!Dce01Z-9L@!1vY8U|wO^zMqc$sivS8~^V68Xhw|e_F)PFF!cO*nSMW(5H z26qaNDcB|b3g^vKYf*S{qmJ_;0$!+bT0i2@9O5)Oi3EGqiwt}x69q*~RRSgEIq_kn z(uT{M&C54zd|k8ox{bBX$G%?k;S|8d{E^isCul9j5 zJ}Q@qbA(KAe}SI@QGIa%L%x=P`5W$!@!opX7Z5PyuM3##*J*|vk6Pm-m~oyB5-^|q zqsYDF;yfEfrztqB@B;cF8#!)O0S(UqI|rTv;ccHqD!0!f{g5~Ra8HWU!LvbPj8Aoq zfo#xmV}R#88zi7VjY=J5gZe=cvOy<=rfiUa{tWm)&?P`48+0P*F3#TaA0it>V4Stw zXB2!R&r;yL1{6@vh@d((PBAO3fC4W71<&#(Xu!8qjgOy1swyXu#8Yh^()>ElUHfPL z9M=8qoN_veG%6_HP4=?=6gW?{NrfgQ$12W!30|K-at{4YUGZZihdfO&yPJ8XL#A^` zYDHCWz@WnX?YDnTSu8ra@$~w~+Ff`8iu_uH>yU%%xSVPVZDx{w6B0w11dO0tgDfI2 zoq%ouCFnjD6Zj?*-2z6?t*IVQH|=QwbK^@ie@!1?MEz9d5k)d${%?Q|Y_Bd)taZr% z`Pu^NR#cK0s+N(`6 za_m!w(08buK03)$xsHrT@aRh>crX3yUjW~9_^JE65$rLYH{#tb|DWfL-rQi9j(zJS zifuY17sD;vN!6Q>38IMP=K5~Aq4P$^NGYwP;H_9mE`dj{q~>&$w}4T2`xxIzBUL78 z#Q7ioOgC@09P`vQxY_41zHc>n4B6ApP)hb!tYqq#=Wc>TsiQ$Ox*wxzkrCCeRrb$P zMw*p2N|mN>+2hH^V$xhl!XMqZ)2?6B==d^_Pt?A~uj{-&9nuw^?h<5&*v7Ydg<}`9OgAm zJT81H$wmR7@SJ(QO!2Cef;&~>J?)ZZj&3-LY8N-z8!P$#?bDgu?DkT2vEg_yGByy+ z&G#po^(b@33Ih+zm+eiIJ>jvvlT>7PCcXduqu$(nePmN!mRXHC3Exdj-@jwqQ<}c?`W-o zlWz81$p`-$wEApoUSwjENr(~i`+K+`iN3!Qa=2dF}80iX7NN_i%0JKvAeWf z>u=^9?&4g3akkG7%Xb*J;w9k~LbRJUID;BlcDu=CLY|2)u*ekGkiv%d$NK}YxXP&s zPwMch#-z_SrsJiJk)&2H8?D})FFHLG-^{*pvprT#I0Aujqt;+GS`1DUE?**T!pG#= z4XaRpaslZ00R#?A0kWj)3(h!cC=gI z9aCX#DK7dNZr~a$erx5w28T)*!Cs$9Wv5~(9BwjL?Qu_dq!Qlj$p#I* z4uh^otBJZA>5p6EjpD&r$rA{SfuS~&Q82XS3MCyffb<4=)amZCnKN##uucpr~G_^ZPCOH6%LP0#f09EeFxDsyUgQ z6xsYQPAV!NoS0y-6H5ztzKHsAFC=uF`j;JzU`0D#j_TK}e)B$~|s$1ykN&G4AN!KGNF59^P@u zaAma`t`}^kWdBHFcz2B~<90-c4tZG$iW*B)GBCppA>EoQD7H)R+0%Ix3?1ddenD+g z@6$ttDXvM1(N#a^49zA@8rxPA?ixhB!=QEcAzI^rj(*6DF&O zYR&1`v2OWKVb=+$W7h=~Wd;PMYrr+K{shHC488&zuma$k3U&C;Tt5|f%qzO#PcXYf zFL6zGg4t2bE5^Io$zh6^omv&@!x|0BI3)tBMtbRQ|C^6SmydUym=jPGbA3$k@<)V8 zE_d^i@}dHhfI0k2E)$}6MWy>#Oox7OB1}XR(Je6D3=Uwl+VON#gePDg{~?E|0!FPU z34T+oF6J*{b?_TNGqiaWenU!S@=yenh}HR`s2+;IM6tSnp%XW-E3|NGU5vwMh6D`7 z>U>{cgSApl%H`6O0O~xXjvwh-Z@N|feu2Fllq5%cj|&Q(P$_sLvS3_xFc;pe(=`|3 zilFmGo>SrSd^A^h+zS}c2^b#t{$Apds61YyxVQ5R%n|l-6$(9ty=;YrHsR2g5ea#o z%%*k|oO3%1XSPyw*H;Z{T*J&i*!D^H1(CF2lc^ZJiG8K@#xFF^$QREYYeD95dJewa zEU>xB)7R)+8p)~!LZ^}*f40UQsXgNC986iGhHD#efbPu)7tY*YU32=aI<~cMBM$qU=Fa zj=H-A4DDM1)84lP)Y-Skj;8F$&S;qTFu0h(yy={@O*u^`>yY&p6+`82vqp~2(&>FT zOE>(FUpVC*ckX=R>u0?09sl*y4}bW_zkcEgSk@?NNsR50wFB`=IY;*o$+OGy&7%@3H8P+ncfSXN!=Dh+ViH!DdT5t|7848kGp2< zF&K?nZJ=IY*8Wra`_HJfJ~!8p54Nt`M>>?#!nurE9W=;wymvrOKrmG<3mD?EfVp1J zcWVOIO{iQJFvMj6a}6@;lvyL74wnTK`DFs?THI0x-9V$Mb#)HIH7LR8HHW2p`Hqqk z;jUYC1t!vI0@ER(WllghX(9o0GvYOjmd9wS1{HWnHwc)UI&)KXgMguZDPV4Vh2zNp zkJy)xjS0v`7;CDY#WV4Co*Vrzc#rt5_S-db` z85~Qdl@S(@&d{kV!$;-a?E>b8KM`fj4Vclk?h!D=a{=>qp`Qqk%5yr42kKQAr7CvJ zSv+We_7lu8NxpB;beuzgyEf78d{T$tXW5BT$jX*_V*|<1a5=cBH7w%RTuZjU_E-D? z?3w-2dr{TA0=F|Xq;k{UfcCHWaVSu)m-_o9DUlcVM^|bU@~g!;m+PorKEsQ`R2BA$ z1A8Jr#@%i1Vv7TNxTt|2*wd5OYM9?Re8#vfmUJ>3E^R2yrhR!|qMmj$^jk-V{i(>t z((u;uyg8Z6eTv=PI-kiSrQArA$?||K%e`^G%WrZdhf;$LpTnIG`l2gypU0-Q_Ed)9 z)wbtCm8BGTX-dW8y$C39*&U<>7fROJl)q|$iIZAx?5b9GH5xmr)g6u05IV(^sYWc; z_y8wM+rI<<)Gz)Xj*sW_WAXS{K0h8mf0%YZuL&Y5(@`A^TqaqeyKXGd?a5}Z(`q%_ z?Y+1m5;tftBTo5(v*LXkynK5w*FIM|#A-etKWUme+shsoXG_`6+M=%&WiPaz9`^Vk z*5#VqaQOOaN4^a%%#(kKQ!XMmjT%4tCc>7UHA$m!Yxy}BzH#su?HnKT{gry#4QwXV zdgjiR3mT0JR>a@cg`iEgTR4D8^awi@_kD?^oF_#kAS1FY$S=P(}Ooh(saQdgT?SKwh z51&4VHcpaA6hJllHV^kUU%PKQ;mZyNqvLfqIxBkgL%!wHYR&zP)Z~sc23d%+b!DV+ z%BF?6Y`hdS+rnO}&8Y1uWrxGXts})vD=S+{q(4B@4)9k3O(Uq%+NvbqdCQ1(EuL@F z)g6DTx9HG$gnn5+)Q(1Z&uMr3sbo9i;}>TexM&^ioWr^5d^$0{wK}$`TXbj%6h{=j^~sb`pA8z;^1Vv~WdcoZmVhob3;fltZEZ@pu474Tb{j+SZpW?sA`d zVEbfp>cTnmV1HSMBTrVZ*OkH5`okHgCE#+h$(fJi-j{G=^T5pM1DN|(L9V(e6d82>xvbZre85IGyk>az;A&+@ z3dgG$x~PH?yL+Hk4l&1YGgjO@4hsiq5W|tmQx3wTd9(6=;_gc z*A`4e?2gNk#3bDTn!k|TxLRm^l0BT5ooWR3fAXnQ77ELEy!EXcsh+Y7o;c)#QUX?B zfjp;@AyC&!lf6A_N%dqL-Dl8d362nTD)e-97{C8X+!~6co(;cZ87SF8X=u2AXgIt}i(lF7KUP*i-C{l|m>NxJS-gsLW>qeN*YsVAhvgobu-5uGm;EKN4ZS{Gh3C zQzbJq?68*`vGPJOKUegXvk8kOT^J=As!J7LYM~Y#%6t8Vdbl_-;L&;O%|c~$Jf0ZeQeHW~G5NYxQzTr& z$vd;jWGHVwtG45!nj>9H#wu|~Z#uF<4bOuMrM?Zr(fNa$-|)aTcyb+`ZkFhVJ`4Yc`LRi|uZP!PV$ZP~bb48Xw*YDJ$%E@Juw85opP((6x{9SYucMEJ zU5`(C0HeVtZ(IKrdxjmvCtzRe6?}5@`k&d)*md{>?kUIfR$%@HJA_XR$|rAI{~zG_ z8+>9^K6x*m`UehUQa-sIFkfSD1Pt1UI3Dp7QHXLF|D;W`j{Q46=}@d=|G|Gh5xxHx z^qvbGMDKsSD!n@PD~_d2t&aVg|K6rm$9}_qZ&Rvc&v(J!08a%e4vcVEdVxJBAA&(3 z&VowmWwuMc8oz_D`2EfJ{VV+6iL2l#;Gf~YgGT&*GyeT&9G*D3F1;21{tfvmJWu>2 z_!sf~b@-jQxh}mI@c+R7op`y9_Z+;)z9zo`|4y82!xKH=BX)v9ANOt&s4ZJ?KMm8m zwFg7w;*?qNpg1$3 z^X)g4UuFxzR0Rju?8cVfQ5Vx{KLV8|afTdfwWp+}cU=0gLi_{i{R z91aW;7OcHy(jZytqTB6qr3WpM!Gmcc<`=bTvVdf%p-sBqhCtj?92lsCaVWh1B%MOd6Uwvrv1%=gq;=nM^(UOgtR7 zX!?wSbCE_*HAg$Z_)>Hp+pTQwB)u_agQZNxe=YkVnlL;Sl=T}KR;S=s{YCW zyuQX&YD4VoAN{hju<*}+|MF=WCjY5&>f!sr0YxftGQfxTKt$b%MDbuG2u!tK zVD2^42$i`jUP}8kDKvhrfm=%T%3UP<*28jjyT61uA8<&tLEKahCwoE;1M2OX{~*2rLxWn-jXw7E?2k$iR{QFWz5 zo|wyI_1MBgNs=gK7bCuLJOwvII!KNPL`nGQG6E=gA+r9*{#qmSW0sAL4SQc6d);e? zYw@uwuAHKMt?YZ`Zpw(3u&?!fo{Tmk9UQWC?Q3D*hK2tDo5F3d5We=E<+xFS3=0al zUArAOn6K>em7?B+V`+YI-kI=)^WNN2HP#o1))Kx#Ak<%k_lbh8KkE*bUYzLj=i_E$ zDDEnbHuA1i*kp=j{qbse0Nt_9m|t)3MVzj%{c)owWV3s%;Dj^i5_^mE+ac^N?D23q zJ$TSv787W%UiX&j*h2V@{HQH;rl|dow6$0u(+s3(*{o)-t=I^A`;#FQF+yd3D4($D zd}D>;d_KQe*u4F;oiFyf^6)JTMp;u@F4m@_&UDC^=rwvBLoR=`k0I2IOdZ&`{o*l=jE`^^Bjk&2M}B*iU0N-Mf_d+o>91oO66Yp=W5?Sof5pTTIdagB;LnO8IiI80Lh79HM*^r`&oywp)vG5tG zvtUp$P{$M!LB;g631?#;eyY%D+;d6m6Gv0J9RKPU3rm+B{92nbBd6@+$RCeOQ|Mxv zY(|>X)8n<_;nC5F$@;*+c)dP8J2T@dx;5!)HBFpF@)rw4KeUMwdR&jC zmFLv7Jxo9R5b`ip|4sIA&!poi0RsD^O&$5@1=8Mdh{BeGDR}AJFX8)NWX*);qIa5f z!YJ+=cavP{^?2=8zt?#}(%F0Q_F9hz%IDFOOoI0KFOXS0Rk|3Nb<<-yQDNjhIffN9 zu(&w5kus+3>(qs)2fLv}IHH2W=A{Zq%TLVGpZ-!WfW%QJCDhDq{r|Iy(vo7Z~ixNvFkQ15f_3^eUKYcvoo zl?G-AT7A6^uQe15q|<>wCi6vhr$6CvWTLHWzMi5F0{%4ZuV1Wx6eH~BBiJ98FaQ>- zQsc;HYA$kiNMv2y?&3!b!3?#K)$8c>S!;v`1F*ksT@%eX97&&idfLxFOaV7#hm5c` zSy)D70khe@zMOf@5+M3{GOvOO)YWvJ;sH~tg?qqSWRc;}cP8cb=gYZ(H(!qoY>b$7 zT74xrwQGEO|4<-b&Igt<3PXR98O$fsm4q)9wEBZ^h;_PRqCb#btma1xsbo2p|FX(r zP`PRSX4!yO3uKWAaXy*JfJjS#lrQOj$gJC@Rc>%XQIB2)Nhtx^#UOmBhHHsou?1sl zY&MVsCB7Ue+yn}l*3ciA+BwnOKNQUM<$@}Sem0h_aU#9x4w3N+5m^`kk$urFBAN74 zW@o3dTd=1LABT#m9J7~Lw7qXSr?Rl8zaxE%-Gts?JDx%$Mo+<+B8Ku5J~>jX?9clH zc_04v=f34fhAQXtBZrcsF2n)pTD(cok2*}KX_x6bZjIJtH0sdkO*^_W$S=G+m}`J5 zxtgBhFMaNz@ppeW{w2o_*B4{odgtUDuPxp+)ZFl~k1b8s-&uN)^wW#$Z(z3}F6yOT zBk38Ol&aK%&w;i*L%0%{vPVOF{dKw*%Y)uxw6d7bExmE168EHi!#;9d%^&Wd+?3lF99H`vlh>Gh3N zqsG4)`dR~D`V{}l;X}3(ydy9fxVq5`Sx&UD_-r!i8V9z#5Ewxpl`h zyR0bRlR9z+MaPOPAUcK{&R6LvtkO=tO1+&`qD8{g>BZ(09l!c2J$2kFy?OmE_DlKS zplL0S84YlA6^hie|NPaVxaIBKw{2U!^KAF%SxdS6^0|{2~SyOZ&$>XWhBF_3al-hc=vc;rQ5v zr>q2Lve(^n+UXD60BrN?_p)EfpG98Ghnus^$gBB1Xs09^VRDs>b5>lfMm=CK4LOo} zcyCFa$46N_jHjo@PrT{vv%6n6jH+%m<@aR<1DeX2%bU(=Ov|7JIbVc*B@pt%kRT2=9b5_ba$5G z@zcxW@O3ZS(fS?h-6#KH`p8WafIkfQA1m-^d==!we?U&zfiL#s)`yuLkL=htAs?FN zE6e=syX0*Fn= zLs;Zy8>fN;IMHB-F_b6pJDN03FlKT6BXVW^`EDxrfXbrWv!mGr{MX=F9FQ)8Z;H_L z$n(%JtN7&KrHilwa+3Qg93O_VO2FNy1)rrum*gFZLWXLfbiU(0xg75(arJua$xyfy zsDJyY-yTW0a%qd%(d)Ja68)Lr1K#A0`vh|GBT#dY zQ)7FAS)bud2|f#k%p5m;w&Sl&82G*hd8W}X8YVzg*)&1=x3fN-0{xI5BT0zeEpjX;u~Q(4Ok)_ zEI3}QVjERaG!}b^7c}L;N)@zD)-BEaAvhe2D7vJXlfcS>FJt|GIyEqoZ$2lD^ zd&=+^f9}cBZSSCgOIIAG9r_8tzDI%OqqPl)=f~xD++KQWvUvE4(%a~5rypYPWH_&{ z&C2s1B#Se@8_(mvcd|XOd*rVmCtUeDR-}ew+xk>L%D}rdJvvQYqw7H`Vq$rqFCOo! zt^n5^co%wYam5>l)y)BQjw)ZD091c|TZ>j%TQ2qa!v8lYIeSz#3-nbf$+2 zDQ74e4*G{zh=apYNP9ruk99D?m$B&N9%L`H1_N40v7u=XIk=TPFqFv*F;5RP12oht ztsZ&*E8mpA7h3t@_m*3)4C|XsN_h;g-=O=JyaBod9mt@o(8M(ZlEq@R8ju_A>CtM9 zsPA+Ck$lMZ7sy^f+)c>aU-G}z*|o#3{HyLgf3Egu|6J9*=Z1*8FJhu6Rmz7a#rKGxLARP;hj+^Z@F+cEp=C=!|r{%vlL0!iD3`JMDSy!TX>> zcy@>UZXT%RL>ic<>Upj0U}nbdaQ4n+R{V`tZfd8jY z|2p+I;wSn8F&QFH(5u5a5FdV|K&3HM^SUV~>Y?KzIONo?$>B$eUG$zIk?_sshC~9G zg-e@eL;XEW>lz%7PVFr9?HXTZdX}9X@sxE;XAUJ&&c%J@%BeH?i9~F?G?N_)h3l0` zjVtM&*4VVpfL-%FXK6H(oy_ZS-!+qs`mDws_l(K59+Sgj)O^-i94qFQ26WShdZI=6 zVj=Us4`_Tbk24V_-LMIFp*ZC0!JQ1ctHyD6L$7OOWPH3I{ES30H%J=HpInFvZ%)D+ z>S*Ez;f*Ph$D?1IFT;D{Jx5(NO6d)e_orNUO@l|yW$$QRcyDrMIG$+CC6Yr~(ZHNhO^a7-u`IhPOkQwJ*he?+E)8st zMT}-!pp;HdH}WP{3b+1)u~(x1*D|rU7U(ZJ6RDl%+JTKzrcl^CHNI`o8w$;8?GC%q znI6kenLR=0RAVJ=a9QgCTwEY|*SE<{`CgnA!^x?l-Ja|1m6BejUbn!Hl5pyg)1kKy z^Ax=cemklQNKE*UW`PXyG7A#eDUD6ODq3}ydU{NLyyP{Y4gUSR42J&AL;3k&M%%+= zhd*MA^hbO2cfBv7uPlGm>1Z+>yNgVeSz+=N^hAV$bGjb0)2jDPPi>uSeP?Aaol8Os zgKXn(_nCze#EqfrZ(6^C`Vpyn?5(^X5xSxX+mPqBp~CBWrII#?d!p9T67Txr_JLxL zwvB-P$cpJRB2G9Lv4{r!FXAoEL>tbnHoerSCLtAt8l!}EU+tR5 zV>b|awF+9KMk{D1todoz!mtyK85r}72d_kiM)El5v=KQvsRZvCyu0;JcwKm5^Xx!) zwtwdpOYF5%S4};Suht!)!DuobdCB0-j^)Sqj6i#cp20ZJ7epwsg+d7gjCO`9%h$<| zz*53#gRaz2hNSy?7ia`rt^|F_49lqvmrN|DHcpIhOldV+hc7xu9zOC__8)`iZ)@Gl z_BS@=^Bad+pEa5cJ?!ia=v~CPxVk{bi;2MxC+`kpIwzVawRWdv4evRjNJA_R6-F>= zs2{WfT+N19y!oxH+(BJ=PU&O&B&v>DpD z+&9|i^%njgdG7%pS8=rg-s~fR_(5O@3O3wELpbYUL{w_at9mZZc%J7 z4j`)O)ffnd&>|O%A=E$!9YP?X7;Mu*XeNXdidO%7=H8WL*@Wc#zdZlm7W==Es0mSuBCos(3F5DdZzn5jJcWqOu7wz{G+o2yVbu z*Iqj=;BTq+L_W{VPLZ{&IstB-!B5OaBYXpep5$?2p)fH$ zt)x7y$emSV2dUF18d8%}Q~iNpzGYNZ^f#eGyS*@o1H`kNvhv5~Mt_@>UQ@6+t|o!& zbSWlB+}c1W#b7Knnt)nIoQ`sAZ8T!U=nVS!lw@6U(Bt%&?5WvUt2MwXz>tuXl9-U1 zZp|uWTbza7)a=w>1AOR2J`?cPK}yBQBW{%Lj>PM?f{0{gnKWyRz-%%c16I47@0GaD z6q6lDsDXelpi{3h9br!PmBY@)H1g5ymgwb%d3^M2bM&GV&k1K`ve$BQrsm{Cx1Q|K zOw+Nl^-9%BZB#Aok5tLAVg;KV{rtp= zm?M$(BS+qR(t617s4Za+8l8+n`v_1AE9{}&TlJ}_NiNMAyQl@Ab#a>T|dz2e%(Y{f| z`sioO%seAUUJG#_>K27Qp+>n8d!pAH9|)KWD-3H=&6+hiwY5xPwy1^Bpo6pnFfmmG zm~DCK5VRf;107&g)PazhDg?I`BLk8y*w{o*ac!DjKYf%|uAESx=Lcdpt7Jd3jJrw z#upOKWf?>!I&oD)>uUR{%{432PT#~bfLkA&aD0>&dO^ag)q>;D49zK(M_kyV1V`*p z5hs|PHrc`xc!J4p(X274NLF2VCM~!M$yEG+)&|OJIZQv4iz8qX)sdO^SHH^Jw=Ylp zCXfAi#(}#hz42Cc^~S2Ig)Gd*M*qol(SzvCV(9|tW`qB)H0T$cpqqVE+Qn{Q>(Qh{>~+A z=F$n$6BrgQ%o&U{*(Fn-Qb+|T631e_`DXL0uP%GI{_eZ$A4bd6ywI}abdePpc7B>o zGiiymgKOA7kULgunI=J};qh@CDhjBM(fP&!I@^n}^(P*`dYK>|u zBZX87Xr~}C+Zq~PX=p&q3Mmt?oFURAg0s^Z*{~GRYmgRt3Pnc&VnUpiGHP(JaEykr zSM#D5!-2n}2>Av4p7 zh)bQNB5(9V_Qj3AA_V@`MGXxY53{6$JexdJ;cV^M&;)FfdI9fQ3~Q8ZGe%;1gq+A| z4QPA38S+{^X`@k);7kn)Q76~dWKu7LAZ!M?%~O<}<#gvcN>Z{b1MY&Xtkkq@N0BW% zpT(Q(CR>`zk!i(^JuQ%G9X#n={rir*W3lAU++*^$Q( zZzG$<-T~)~!w7)&0}ikoz)bKcT8Wv4T^`U++*{t8c75eKHY@#y?=$uw$7Jb#==gt$ zv6BNE?Qq15JxIFJbekr@V>TyLYBb>l8c3uW0Krkz1i(-*F{ro|b;p1Nrz~h{2N)hn ze-*))CAxq^1s@-1$ju$&_OxW@M1sLc4(>Br@^Tsi(Z`(S8IB;PZw`CN%Z#?5-4^nt zr1*nYoW#KjGHd*y?5wb_CK#;o2lBE*-kMO@WA@mrUbD$#vw2M^9w&}CFnftE7(u^U zc?fspTLyFiW6qz@l=CY0NS&+v$xi^4Cqy&!0TP?;kFuA4*+PnDjL%yg66q46`15T_C9B})tG7b6s3nJ);dE* zW60z!O3Rt>Rh%vor*mQ@Yh~kf7@^f`9B#gW7nHf2Ss85p;z@htfYQHSz1w@_s#SC)j7`QEwg5v z)f^sOwEdmR30bA{`25;+vx;VnDKoY-TPnuRDm~@0F)f#^9JOjnYIBQY(kb=r>uNCm z;p&YSVUDGRE*X(j@FjECG#4F3C?$&Q4sD>Pxi1Spm9> zXd&i)(1{C)H)ezA zuqVqjlgx3VIWvr2P!_Lqj9A)BMphQtHxKXKW%nJbwTT_ zY*)yUm_2Gz$X(zz0{i^fpVG*?K_|$cT&dKA*%=+iR0mIyw8oS9Nfy}x94ivI@tVWN` z?u&k_e!zKRb)giG)nIidrno`r_-TDR68yC=Dh&i`q3QLP8T~Ftz?$MqPY#z3Xf1t|mtIAAHH=8ra zhRp0{WkWxtq?_;opDh{DPlkRNlHzC;(^N%`-pYW#68c)&T3TW7I8)sQgFDsfF;x8M z7dHDxKLM7-(gMgvda*uSik)1B(vs}F!u+@d7*M(e3sntu7XJjhsT?X<=a$cD3Wb{H zl$XtI3WuBKmgSDC@_MVr<>n|?$0e8KU3lRFU(JO4{0TL_*fqyhI5IPHWP!_7K-WT7 z#+f;5*5uGxCbQV9pmq&dVc!Hf|5?20X6xCz{1QzZ@8)jMpYf6o`}CSYmq8Ep@PPxQ z(7-2)BBzps3VJ9sU}RSenZm>pE-QT7^-9@=I`-rh;ZHsZUlA2jz7srn1TRERcAVx4 z3w#*WXyY|{z=Zu zM3tRV79YWmsWpztFwS9xjg_*q;=A z%kHm*2`a%T12CGSz=-ShT3vj+2I^Gs3^Ftk9F-VQ13XMSbOB6cSi+bK%U*H4U3eLv z6RlUEL^&ByqmqFd#pzCfQ3I=VXu}qVj`5Oc*E_oCUFJwbnC)Z_M-LE`SU71v8;6|I z0i{R`N~jD&o#G_SPmY69gU#pALBx0HcqF?1Zcp?O^Ly`RW1E+j-Q#+wV6{@G zq(Vs}bA3Ea+lN4Dv5q-(a-~)m<|X;jh2aLM654d{>?~*F_9wA$3`$AT3dok9U}jbj zu}LW@iAhNb%wUM4MPFjGaS)ra`C82KsTb8-ngC%FP9-WTR>pl{cGfGeh1W)(-57rD zm7L9N#CrD00sG#vrAy29+7INPemYv;B2{6<$BD8`4<>8lutP;Z(5Z_>4~V@%gszp` z^tS5{Rp*~y^#}CFRaYIk>+bMkmb5&4_g&d5qF*loSA!K3_Pw782#_W=IX*5)=B6b4 zrC=f~#I=D{7WDF36Pa~GYBGh<3LB=brFU)l#`o8=k3RUb_Yd1|U@P-J_#iKOWe!{A z{N3-I$UjLM1<3qO^a)rSENVmOpUO2LABF=JSWOCLA&83B?V<9 z>h;NSu?7K6hG6bAA6f#qK~gaVFb_xL?qZ2&|JC=+mYf^xhu{AhKQnqIH4C0juAo-2 zRm0j<7_n=UaT2)+?MlKi#Cj7qrliO+2SO?>id{{jWerdz1b~@XYJffui>c+MeEj#t z(a)K+_;;dZKd_4qFMlEJ#T7Z{n;(9dZy;Qyo+=SNMVfjYwj9FoydW?!tsL@&_(wg& zOU{k{uLp7eb=Ge*BEzxS|! z@d@R}$IH+NDC8toK4Bl^G{BRWeB=GwHl{iE1A^Pi=#?jwuhFCb^=ju2l)pFz7y?Ln z^ebj8|NdS92!enVUCrD2J>WqD+LkFaU2co6{^c(RzP~*19i)2-YD3@I{OE157}8lM zi@^$K52~SzONjJ@yW?z zXg7U#0mWc>yiGny47^usDp#KnL%>U}j=@W69iBs}sWrM<6rt2Yy5__f*Bl??=!r3o z9v6e<4Uge7u{<@3fH~WEk{BD0i}CA|#Q62l7~F7T3~q?Upz?-8qXF2#@&;={u}_Rs zYT}0DVM1w!_l(G2z+EZn_!xsF#rlTwII+I;HWovzi&n*U6`KcZ+}AXSkH|@fc&eQh zl}3N4$?Hn{_#>3-aq&;c7vto0g4Rjm9hWcVN@I%hBuo@_9)^jr_NuJ`jURw4X%pd@ zLr4%}sTgB4mB*Sz)l@1wFyhfRs;gQD8qtH1MGbN!YxF|iB)@__Q7oh^&;^jCb^x}N zxl$o!J7gPCFO35CY?UTq9xzLq1J4Fs(o$Glo+ho8HcDqmTX0I|`LGnf40|N6m2Q-7 zfj_W2C21OIf7O6p9(TSr`szvy-1()a5B{!{eA67g@*fA0d_9FKPMneu!8|L#lP zu?&CFb>h-@@BjW&w0pAnx9GojA)69))c+4g-4uu-wDNMYFgOMS5DiZrAU8sh7qDTL z3C$WdQT~^%6Nmo0yz26*?x8Ox(wm#Am{j!*{p9_}chS|WCT|-2n@#^t_6FT3y7E8& zAv#+ubzx4g#r!jVkC2jSt&I%gNR>s_Z_w%Imd&A=`JA%Sx!4QbG`GuFJw7*ge6=rj zg;YG4PZ%0sE7SorO@v}>cy7a0&nM(wn$ueC#py9QIpgR$?u62ET?KVM=$SF|ul4)t z3gEJlVV6!hufb{?NrG|iM7wPW0>n_BqLh=fJj?m`9A5NSU&tbGp`ej8C+bLU0p*F3A8_&$oKM#NQ zndKM1xSK^-L-g_J6K$V-`l%%M@4~1!$i77$v{sCnej+q~2KeJi!X_HP3tW*Lp^?oA zqquI0=yO|eN2TUl1kcV&(5$R)+bPQ`-*hr0Y zxlwuyCe%erCdyQirlBIU$GdlTKd$7*juBX*rf!0Wv;b$Hkpw~Oy9v-0#Kj3of&i>$ zhSo65TS`qG>~MGAosV}f=$2D{*oc}@P68%s?UY<#@~DU9np!Q9%SHhahF_eq)y)n^ ze~Ze<7yj@Uv`?vu0$EWP1u8Js6JQlERT{GZZBXP@A%JTXOi^oZf=mOrSW;{TgE*0pPgn@!+5<7^JF_;NF5>Qj~ zrK$s&1n6W1n~v*O2CtU!EWu!i0Z`yNb;UFSpTKok00}@6ZgqD9y(m)^(-m+sbrdZ} zznTxk$0cyFjg6+;0|N(xhW-{jE<4e1p!JsS?!I&QmcDa9E7Y;F9GVH^195OaA+Q3; z2gZq#mba@(`*dnbb%dxXg;hTd4>ctXRgsdnD}{c0e3=**%P}gF_s0zuNlmAfPM>LS z^h=EFFJpC$)pIw}h?P;Ll4^X4&ErJeKAqa4-GDW8IR|u5Kaf)*W#kCpq67h8q+*l0 z>qI(g5~Y>);*n}brKsawltOhv8B`-`NGzsW3e%!5W5a1^7a~<%H=CrSqe4X50elv= z7BYFZiB%Eci?xbSKtKYuRI}L9JuDBl`^RB;EV>6U+=Ci7e)CP=V=)*mN1Bts5V7GT zm*W2L{BbZeJ^+6!Vh0-$pCPpim?(|;8-iftH@xwO=TQigj^Xj3TE;L49zzMJk6c03 zQDH40XnX+v+XetA%D@q8qW#C}zF}si6>>%2Va0gG6F28@ZsP|TyG8sd)#1(DJ>j7D2b#{>ytnuv+s{WdnrL_do$ z47VhLh!2I^;21s*|8}dmp{9sodu$9V_@|CT1yhG%kva}lECOfSE9w!esmfi!4ACsY zWN9xWoFD$3JvZ=updE4?+#Jy=Few3vz0zL?T#^C)d%vmcu7mBQ1?4rXuqV02`XIKt z!+)j9#jvXhHHh^?Y`$z+9TI<{Pn3Sqpp7@7Umg*?NI7{T@FSIkJxt`W6BI>Nn+iWK z3OXs>MO_x_Hp&ax#6`b@^M_%-Bncin5ju1<39yPiayJJPxpjt z@I6BGI@UwLHIgItesfHqn$m|tDk5BywTiY>EJ>k{5R>}I3^K7-8Qy}@q1P!-qI6I| zlLlY(C}LAwib-^i@Jz%TqBVlBiCCa+b%L~Qp-LzepJ1uxDX^FFR3x6gRJx!~L-HKb zp4iwC@{G!}k&~eR2?;~#>%a&S?NaDJwN0=PBC|tipjvZSr416m*mwf`z~9W@sKglx zDy3$Fa2yofl(8+ijam}4UxL&soIs>8NX7?Ql3oYQr2ZAI--uhIo~1NSM0wz+$5pj% z2)_fC5sd_;Q)P@n8Y$9)#wsICR5_MXg}I*QCxa{^)|blo6#Nkb6u>zLV{|BdllSZ3 z_lzn$Sego1Do;tN!ss~eENY7rCDb*(!PFQ%YOkpBz?SYhl`9RY>kyVs!$*OW&!+SV zaHWno`D21Up>)EkM8fSsL13^S2g-|Kfsg`*aY6%9|5!^QiBVe>EQ)b!f)sIKA^$B0 zr8i=v#OYFK=wg8jz5&DzdAJ)j1&)OpW)*jIj5u{pV`g{ptcFl`X5*YwM?}Tip~CN# z^og{NLg^c@DFPc_$UYTY#Mp8rK}QEA#)!LI$%?WSqx%?J4hR@AM@rBGNyuFU+D|7A z%c2(8Z+2{G7V;<2)kCrXW*?J|2`Ew?+V~XEPLW3g8Ou;DVBBOXWy^;)gtrYg1$%CZ zs~!VaC7vf{!?XYnx^Wx68mMh9cq zc=9<(7GX4|roaKPjrlMUV>WJS?)!qh-1kK@w?tpxq4Dha{;2rbfff(ugqbCIj8tsO z8q}0(A~pK3_;AA&i?5U?N{SUB_y&53uwobuJBE4Las2;Z$nd~9RsIz74MCOFT>pjq zxusjk;W4Z_i5#vQqw{H5AesZ>m=XVbFuG={6KvUPYpyX6#g$pE%8dC z6X2I%|KAAye+>Lz!4j2gW35x8fm7$9d{c1F;k=W?ftV;D&`6+?1~T(az@$M*0RGes zNpLbOL1lm?^LO8S$@m_A6gnN_sC12G@}nYvIx>!LzbXMx`$+;g1_>b6o_}8gP>V(m z$H3K>|Fi_4Bsi%AfYB=`zz}RBzIv=XCIOtBPlNN|k2;31GB$@(Faq>M9mPU29irnP zX@TheF=aBPNDE5&gl&pks$davr??^}%?@K!Mo1Mx;3HWNv4AC%BZkH~z&V-&4Q~%g z05p0|CIS5G8Q^hzYS;`=lp>^}lW`6uC169T6bV3#D-||y?J3%z@-}t8MRQF|HXs3r z$?6bpN<0P}DyD~0Ih4>C4e+Re*)F)^ak7e#v5AZS2uD>%nV9MQCmb~fo&S`h#?q+; z3T_l1bxbJ*EJ$frCLt@|H5%@N4T3`ZHzx2!%v! z43UPBv@S4;7)*YAYLRvzDe6g{)fL`NDdVu`RsfE)(1Lu@h5n#Vgl1C=vB5G2WG6uG zr$>>HfJh;7+$d5@{}70=50+F4X)pr*Nwg;J6tg4^~6v)C=9|&HI38{GuR!fX{RqK5c ze)Ml@PnCJkK%)j`qyw|(A+xq#ye?*(LDX6bv*(5#TXWSuW;Ps z$C)ZYkX~Zg_*6I-+CxKTI9FFJ!Z04E#i+y}KOa7$w+MS*>;z5Lni)%>DTJ^GRDM)Y z3^I>_NxFit3f>a?6dFyOkV9w)^`s&(2+U8!P7m7euF>L8sD%_ON+RrnRI0g)CJ9gs zr5_EC+Q_!Va@hLdaP^EUFu`vNARv|6yUb?VbjMjC-QiaqgO~h)W zzA$T4W!=~~t8|b>_6Un@Y(f)T5r-}L4qv3LBzF{wxjOA>7`n}Hs1s7G<<2Hs?%8Ff z%8GHRx`vyRt*qtd1V=d>&a!lC$eZ9!ZzvExX06t1Q>@k$+@G-2n}elZf1tK7HMOud z;Kx$$m0p+Em73(BT>$A;gTXp9V5i}6?XHB?&m?MhR#8*cxRL*pcGGr#W%CK`IQbv9 zJ3H8rmXU#1J^Ib2VysIlJW4mbJ;|KdY;QR%o$vrkzC~y$W-+#IIeg@Q-Qq?aX^UPsK>PHtOJ$_CoQ-6G@gp_SO`66D{xJ6x zR#xPt`D-$llxfPA1Zw^11yxn~8Q)D@RH8AP<>JMY*n-URoM1S=7CYKADl0R}1L4~I za4@GllXloaOTnk|vAE{I!T~-F^2{kIaW-3KVNnqS5hcTOg{9CEDQ>BTHae5B979HI zm>IT(uyn|78lA2bUbP(omUp@)po8k{$Zomr^&I6etJM=X0YQVj?D z`}eMaO-^A+t_cd42F1sM))pu$&<^Z?Dg=QsB10Ctn#`_gTazClxfD6%+csQqTfJAVSxdS4hyhy=FMb08qJJ; z4YPqy+|k3#N4qc*`@e#Rl#SRQka9qeT>% z#yN!--ZtaZ+OtMX&04r*9^V|^e(0BtMSpcfqZ$6?7vD|Z9MxUh*dxA*GDb+^ZG1h+ z_?Rgt0I;wY!3-GNUg^jlZAds2bxfN!;jYJ4R;}2#llc~$pR?H2vS4IVb;sRzv{g^J zvv=MG7TTM7+S7N9L5|w~KI}r-fmXw7^?oTi&I-3%ghnD)8M$h;a6MINH#;_*-n3922Okjb^xvjPK^F!w>jhi<4qBA$tPRf}&W%{fIBdgE9>6e{ZyQA-IMgBqT zeJTJvN~DqS7iX<nD~hKrEiatj5NxzZG7Cm$2bz~QWw(~(P8yk+-#Vu#(3Fu8 znqf)Hb|*J3C@D(}PwJjNZS%xXdgYAjKf{T!e?%xy4gaU18ehi9`Hf?ij>2h0NG-ZD?}$aw8&yS%1Qt6x)qZmLJq&^YS+ zW|gi{D}+NcvT0J>i|Bw_m2ehC=mA%(@ct#vm2z|CT&aQGZGVY48^&c-%qX&DRrzvq zT=^sX#bdHBX7W(1<{4XHe$ae#!LdXk;Zm`Hk;JFth9^+i=j~dq*{N~xvQ>f z=xAa;;~7PfVBWa=z5u_qZvk**V*m5-)w&CNe7Yoe#B3hZJYkA!md9V2AeDyL8Zt&2 z0HR=lGJMr2XPuK{G+`d5xQL@2yh1imT~&#_wNRnceoO__7T^kW>tPkZaE!y;BUc8? zah8(VZpa8&-Nk-$dP8MhtIvS_eVM`1_R6f5YHKaLC&+exw!>5INiA+INzYD8u?15z z1D?v(aEc?@lIV4GwU7wn4%*q7Y^H?(7@g=E~ zOGYf4l9xYu`H0%(QwrSJfm~412EnVby|kpgk*?i2E!p1kY

    r4d+lKC%|c#Ei=_! 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 +~s!x%#=GxufRJo4aQ2 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 CiFjK8 literal 0 HcmV?d00001 diff --git a/lib/interactive/TMB_FLANKER_ATTENTION/fragment.html b/lib/interactive/TMB_FLANKER_ATTENTION/fragment.html new file mode 100644 index 0000000..6fb1a07 --- /dev/null +++ b/lib/interactive/TMB_FLANKER_ATTENTION/fragment.html @@ -0,0 +1,19 @@ + +

    >> >>
    + +
    << <<
    + +
    >>>>>
    + +
    >><>>
    + +
    <<<<<
    + +
    <<><<
    + +
    +
    + + +
    + +
    diff --git a/lib/interactive/TMB_FLANKER_ATTENTION/index.ts b/lib/interactive/TMB_FLANKER_ATTENTION/index.ts new file mode 100644 index 0000000..93ee628 --- /dev/null +++ b/lib/interactive/TMB_FLANKER_ATTENTION/index.ts @@ -0,0 +1,157 @@ +import { defineInstrument } from '/runtime/v1/@opendatacapture/runtime-core'; +import { z } from '/runtime/v1/zod@3.x/v4'; + +import fingerLeft from './fingerLeft.png'; +import fingerRight from './fingerRight.png'; +import fingerUp from './fingerUp.png'; +import html from './fragment.html'; +import leftButton from './leftButton.png'; +import pressMIcon from './pressM_icon.png'; +import pressXIcon from './pressX_icon.png'; +import { render } from './render.js'; +import rightButton from './rightButton.png'; + +import './TestMyBrain.12.18.min.js?legacy'; +import './chooseInput.v1.Feb24.js?legacy'; +import './TestHelper.v1.Oct23.js?legacy'; +import './styles.css'; + +const staticAssets = { + '/fingerUp.png': fingerUp, + '/fingerLeft.png': fingerLeft, + '/fingerRight.png': fingerRight, + '/leftButton.png': leftButton, + '/rightButton.png': rightButton, + '/pressM_icon.png': pressMIcon, + '/pressX_icon.png': pressXIcon +}; + +export default defineInstrument({ + kind: 'INTERACTIVE', + language: ['en', 'fr'], + tags: { + en: ['TestMyBrain'], + fr: ['TestMyBrain'] + }, + internal: { + edition: 1, + name: 'TMB_FLANKER_ATTENTION' + }, + content: { + meta: { + charset: 'UTF-8', + description: 'TMB Flanker Attention', + copyright: '2024 The Many Brains Project, Inc. and McLean Hospital LGPLv3', + keywords: 'cognitive test, brain test, flanker, attention', + viewport: 'width=device-width, initial-scale=1, viewport-fit=contain', + 'apple-mobile-web-app-capable': 'yes', + 'mobile-web-app-capable': 'yes', + 'apple-mobile-web-app-title': 'TMB Flanker', + 'theme-color': 'white' + }, + html, + render, + staticAssets, + defaultFullscreen: true, + enableLanguageLock: true, + enableLanguageSelect: true + }, + clientDetails: { + estimatedDuration: 5, + instructions: { + en: ['Instructions will be presented on screen in the task.'], + fr: ["Les instructions seront présentées à l'écran pendant la tâche."] + } + }, + details: { + description: { + en: 'A cognitive test that measures selective attention and response inhibition by requiring the participant to indicate the direction of a central arrow while ignoring flanking arrows.', + fr: "Un test cognitif qui évalue l'attention sélective et l'inhibition de la réponse en demandant au participant d'indiquer la direction d'une flèche centrale tout en ignorant les flèches qui l'entourent." + }, + license: 'LGPL-3.0', + title: { + en: 'TMB Flanker Attention', + fr: 'TMB Attention Flanker' + } + }, + measures: { + score: { + kind: 'computed', + label: { en: 'Score', fr: 'Score' }, + value: (data) => data.outcomes.score + }, + accuracy: { + kind: 'computed', + label: { en: 'Accuracy', fr: 'Précision' }, + value: (data) => data.outcomes.accuracy + }, + medianRTc: { + kind: 'computed', + label: { en: 'Reaction Time (Median, Correct)', fr: 'Temps de réaction (médiane, correct)' }, + value: (data) => data.outcomes.medianRTc ?? undefined + }, + medianRT_interference: { + kind: 'computed', + label: { en: 'Interference (Median RT)', fr: 'Interférence (temps de réaction médian)' }, + value: (data) => data.outcomes.medianRT_interference + }, + accuracy_interference: { + kind: 'computed', + label: { en: 'Interference (Accuracy)', fr: 'Interférence (précision)' }, + value: (data) => data.outcomes.accuracy_interference + }, + rcs_interference: { + kind: 'computed', + label: { en: 'Interference (Rate Correct Score)', fr: 'Interférence (score de taux correct)' }, + value: (data) => data.outcomes.rcs_interference + }, + responseDevice: { + kind: 'computed', + label: { en: 'Response Device', fr: 'Dispositif de réponse' }, + value: (data) => data.outcomes.responseDevice + } + }, + validationSchema: z.object({ + results: z.array( + z.object({ + trialId: z.string().nullable(), + trialType: z.string(), + trialBlock: z.string(), + target: z.string(), + flankers: z.string(), + congruent: z.number(), + response: z.string().nullable(), + correct: z.number().nullable(), + rt: z.number().nullable(), + flagged: z.number().nullable(), + repeated: z.number(), + state: z.string(), + timestamp: z.number() + }) + ), + outcomes: z.object({ + accuracy: z.number(), + meanRTc: z.number().nullable(), + medianRTc: z.number().nullable(), + sdRTc: z.number().nullable(), + medianRT_congruent: z.number(), + medianRT_incongruent: z.number(), + accuracy_congruent: z.number(), + accuracy_incongruent: z.number(), + rcs_congruent: z.number(), + rcs_incongruent: z.number(), + accuracy_interference: z.number(), + medianRT_interference: z.number(), + rcs_interference: z.number(), + flag_medianRTc: z.number(), + flag_accuracy: z.number(), + flag_trialFlags: z.number(), + flag_any: z.number(), + didPracticeTrials: z.number(), + score: z.number(), + responseDevice: z.string(), + testVersion: z.string(), + type: z.string() + }) + }) +}); diff --git a/lib/interactive/TMB_FLANKER_ATTENTION/leftButton.png b/lib/interactive/TMB_FLANKER_ATTENTION/leftButton.png new file mode 100644 index 0000000000000000000000000000000000000000..1c9021f0e1dd10a6d911e24bb08e840cf3f0a24a GIT binary patch literal 2060 zcmeAS@N?(olHy`uVBq!ia0vp^en9NX!3HFsFgZf>Flf!P?VpRnUl)E zpfRy@!d`EuM3H0l)09%~-^_+^K;MW&~8Gcr0einwR7 zlpi#W$`Uu4)%>sF(9$Pm>%y`wHnx9${IK$TwZ(0Ynfw{6FrGi%%r9r}JqIVz}^)1K@1BH6k{ z&6ig?zs+XP{@qxSmhAg$!ilp+TykO`g+)I4o836mX6c~bf6$I|(vv5t9x`)93LlCZ zWt@2+{LNUKE5iI=?e1;qXAb`9tO?Dk-pw`Tvq8)4vH-h@Bm_<4k*n$sf~dh$P)tMiUmvv z)eD&6Y*(NhgJZC>rzemOPA*DK%`48xFF99xu^lMDS>O>_%)r16bRoAeBg3pY5)2GX zb2CFCN+NuHtdjF{^%7I^lT!66atlD_FxXUB0hzg}C5Z|ZxjA{oRu#5NU=>zCHb_`s zNdc^+B->Ug!Z$#{Ilm}X!A#FU&p^qJOF==wrYI%ND#*nRsvXF)RmvzSDX`MlFE20G zD>v55FG|-pw6wI;H!#vSGSUUA&@HaaD@m--%_~-h7y>iLCAB!YD6^m>Ge1uOWNu?&Cbly25bw41j3z28Y2)I%`K2MB1xcY3@uJAa?Z~MT3BL-h-0W` zWJx5AAP-nY1f>?|=ahm%(9Yb*Mjt~EU4ws7CeV^Zum(e@dSo$l^^w>tKo*2*u+axa zAX0=vQVUoVm|X0*Z1mwt&yFkSmRKnR1G9psi(^Oyci`MPx?)b1&{M78crggvBKds|Xd99?hqI=P51tw8ffvT(B2fBmO zeS&9Ln8Zh=8|QY|yi%T1yySi3!ENs=zy1DeS8eh9_>9Fbp53;n$ca?QJuRx^!6o2# zlcPm>PLM<7u|BF&zvCb9y*ce3T`cN$+fT9L#Oj!D-%gk1{#QQpv!z(kKC0Kf*WTPR z;m(iM7be=WzL1||lFpRvw$U^ua3c3~X{HRzD5idGWy`NG?kLH9{qIoyoI_15?YhqK zJ=3?ftX`|-lI?7HPVUR0hY`mlI*t_Vx9$~&gK^Zs%6F1dNP{P2rE0vmTn7S+A9 z+}c~dX4cE;CoLhAdVl=o-`(Ncm5ldK z`|#$mg;mvIiC<#Aws$u@-_{&G@k7Pt3l)20bPonid1e)U&n?OR`-K;Wp4%p#kzNoc zyRFrml~Y#l*w$Z0a}3RnWY(J>`RrY2Q!9V)t$Opy<+HxsxwQLLTKLV+nKGU3ar=a) zJ2A#shIKjAsi`Ghd;77><@j25nGd@Sh2}--8$I1C`@4G1)QryjwBv_nUJ5&;&>~#0 zq@!R`-vmLw0~3`Fd0IKSSunbHaj3uKkbKA@qp37!iE;|{6xA~vS}^Omp|tLPP|@w_ L>gTe~DWM4f?Uf&O literal 0 HcmV?d00001 diff --git a/lib/interactive/TMB_FLANKER_ATTENTION/pressM_icon.png b/lib/interactive/TMB_FLANKER_ATTENTION/pressM_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..42a4daa81a8183502fbb082bb2ae3879bd8703a1 GIT binary patch literal 13454 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 void): void; diff --git a/lib/interactive/TMB_FLANKER_ATTENTION/render.js b/lib/interactive/TMB_FLANKER_ATTENTION/render.js new file mode 100644 index 0000000..09c5e03 --- /dev/null +++ b/lib/interactive/TMB_FLANKER_ATTENTION/render.js @@ -0,0 +1,732 @@ +// @ts-nocheck +/* eslint-disable */ + +import { inconsolataFontUrl } from './font.ts'; +import { translator } from './translator.ts'; + +export function render(done) { + translator.init(); + + // inject the Inconsolata @font-face from the embedded base64 data URL so the + // monospace arrow stimuli render crisply (with a system monospace fallback) + var fontStyle = document.createElement('style'); + fontStyle.appendChild( + document.createTextNode( + "@font-face{font-family:'Inconsolata';src:url('" + inconsolataFontUrl + "') format('truetype');}" + ) + ); + document.head.appendChild(fontStyle); + + function tFormat(key, vars) { + var s = translator.t(key); + if (vars) { + for (var k in vars) s = s.replace(new RegExp('\\{' + k + '\\}', 'g'), vars[k]); + } + return s; + } + + // Globals + var testVersion; // version identifier for this test + var frameSequence = []; // object containing the sequence of frames and their properties + var frame; // single frame object + var chain; // chain of timeouts for stimulus presentation + var chainSeq = []; // array of stimulus events to schedule + var responseErrors = 0; // errors' counter + var score; // final score + var results = []; // array to store trials details and responses + var outcomes = {}; // object containing outcome variables + var deviceInfo; // variable for logging device info + var testStartTime; // timestamp of test start (since Unix epoch) + var flankerstime; // exposure of flankers in ms + var targettime; // exposure of target in ms + var fixationtime; // delay b/w target and fixation in ms + var leftKey; // keyboard key for left response + var rightKey; // keyboard key for right response + var chosenInput; // input type (taps or keys) + var repeated = 0; // whether the current trial has been repeated + var seed; // URL parameter: random number generator seed + var nopractice; // URL parameter: no practice trials + var debug; // URL parameter: output to console + var demo; // URL parameter: run in demo mode + var showresults; // URL parameter: if they want to show results in a popup window + var autosave; // URL parameter: if they want to save data in a file automatically + var filename; // URL parameter: filename for data + var usage = ''; // URL parameter: show usage + + tmbUI.onreadyUI = function () { + var right, left, correct, errorMessage; + + // if we are debugging and there was an error, log the message + if (debug === 'true' && tmbUI.message) console.log(tmbUI.message); + + // clear the stimulus chain, in case it's still running + clearChainTimeouts(chain); + + // is the response correct? + right = ~frame.stim.indexOf('Right'); + left = ~frame.stim.indexOf('Left'); + correct = + (tmbUI.response === (chosenInput === 'taps' ? 'rightButton' : rightKey) && right) || + (tmbUI.response === (chosenInput === 'taps' ? 'leftButton' : leftKey) && left) + ? 1 + : 0; + if (!correct) responseErrors++; + + // store the results + results.push({ + trialId: frame.trial_id, + trialType: frame.type.indexOf('test') > -1 ? 'test' : 'practice', // one of practice or test + trialBlock: frame.type, // trial block (e.g., practice1, test1) + target: frame.stim.indexOf('Right') > -1 ? 'right' : 'left', // one of right or left + flankers: frame.flankers.indexOf('Right') > -1 ? 'right' : 'left', // one of right or left + congruent: frame.stim.indexOf('incongruent') > -1 ? 0 : 1, // boolean for congruent + response: tmbUI.response === (chosenInput === 'taps' ? 'leftButton' : leftKey) ? 'left' : 'right', // one of left or right + correct: correct, // 1 for correct, 0 for error + rt: tmbUI.rt, // delay b/w onset of flankers and response + flagged: frame.type.indexOf('practice') > -1 || tmbUI.status === 'timeout' ? null : tmbUI.rt < 200 ? 1 : 0, // whether test trials are flagged for a qc violation + repeated: repeated, // whether this trial has a prior timeout + state: tmbUI.status, // state of the response handler + timestamp: Date.now() // unix ms timestamp of response + }); + + // deal with errors during practice by repeating instructions + // and repeating the trial + if (~frame.type.indexOf('practice') && !correct) { + // mark this incorrect response/timeout on retry + repeated = 1; + + // change certain results values to null when timeout + if (tmbUI.status === 'timeout') { + // change certain results values to null + results[results.length - 1].rt = null; + results[results.length - 1].correct = null; + results[results.length - 1].response = null; + } + + errorMessage = right + ? translator.t('feedback.middleRight') + + '
    ' + + ">
    " + + (chosenInput === 'taps' + ? translator.t('feedback.shouldClickRight') + '

    ' + : tFormat('feedback.shouldPress', { key: rightKey }) + '

    ') + : translator.t('feedback.middleLeft') + + '
    ' + + "<
    " + + (chosenInput === 'taps' + ? translator.t('feedback.shouldClickLeft') + '

    ' + : tFormat('feedback.shouldPress', { key: leftKey }) + '

    '); + + document.body.style.background = '#ffffff'; //white + + showAlert( + errorMessage, + chosenInput === 'taps' ? translator.t('buttons.clickRetry') : '', + function () { + hideCursor('document.body'); + document.body.style.background = '#e0e0e0'; // grey + frameSequence.unshift(frame); + showFrame('leftButton', 'rightButton'); + setTimeout(function () { + nextTrial(); + }, 1000); + }, + '20pt', + null, + chosenInput === 'taps' ? null : translator.t('buttons.spaceRetry') + ); + } + // if the input event returns a timeout, + // stop the sequence and advise the participant + else if (tmbUI.status === 'timeout') { + // mark this timeout on retry + repeated = 1; + + // change certain results values to null + results[results.length - 1].rt = null; + results[results.length - 1].correct = null; + results[results.length - 1].response = null; + + document.body.style.background = '#ffffff'; // white + + showAlert( + translator.t('timeout.tooLong') + + '

    ' + + translator.t('timeout.tryQuicker') + + '
    ' + + (chosenInput === 'taps' + ? translator.t('timeout.atClicking') + '

    ' + : tFormat('timeout.atPressing', { leftKey: leftKey, rightKey: rightKey }) + '

    '), + chosenInput === 'taps' ? translator.t('buttons.clickRetry') : '', + function () { + hideCursor('document.body'); + document.body.style.background = '#e0e0e0'; //grey + frameSequence.unshift(frame); + showFrame('leftButton', 'rightButton'); + setTimeout(function () { + nextTrial(); + }, 1000); + }, + '20pt', + null, + chosenInput === 'taps' ? null : translator.t('buttons.spaceRetry') + ); + } + // else all is good, advance to the next trial + else { + // if we are debugging, log the results + if (debug === 'true') logResults(results, 'inc'); + + // resetting repeated variable when no timeout + repeated = 0; + nextTrial(); + } + }; + + function nextTrial() { + var intervals = []; + + // read the frame sequence one frame at a time + frame = frameSequence.shift(); + if (frame) { + // check if it's the startup frame + if (frame.type === 'begin') { + showAlert( + frame.message, + chosenInput === 'taps' ? translator.t('buttons.clickInstructions') : '', + function () { + nextTrial(); + }, + '20pt', + null, + chosenInput === 'taps' ? null : translator.t('buttons.spaceInstructions') + ); + } + // check if it's a message frame + else if (frame.type === 'message') { + // change highlighting style, if needed + if ( + frameSequence.filter((x) => x.type === 'practice1').length === 0 && + tmbUI.highlight === 'responseIconHighlightPractice' + ) { + tmbUI.highlight = 'responseIconHighlight'; + } + + // before commencing a block of trials + // (except the first block), we warn the participant to emphasize + // speed or accuracy based on previous number of errors + if (frame.feedback === 'speedaccuracy') { + if (responseErrors <= 2) frame.message += translator.t('speedAccuracy.quickly'); + else if (responseErrors >= 4) frame.message += translator.t('speedAccuracy.accurately'); + else frame.message += translator.t('speedAccuracy.both'); + } + + // reset the errors' counter + responseErrors = 0; + + document.body.style.background = '#ffffff'; //white + + showAlert( + frame.message, + chosenInput === 'taps' ? translator.t('buttons.clickContinue') : '', + function () { + hideCursor('document.body'); + showFrame('null'); + setTimeout(function () { + nextTrial(); + }, 1000); + }, + '20pt', + null, + chosenInput === 'taps' ? null : translator.t('buttons.spaceContinue') + ); + } + // else show the stimulus + else { + // setup the stimulus' delays + if (frame.type === 'practice1') intervals = [1000, 600, 500, 0]; + else intervals = [1000, flankerstime, targettime, fixationtime]; + + // build the stimulus chain + chainSeq = [ + function () { + requestAnimationFrame(function () { + hideCursor('document.body'); + showFrame('leftButton', 'rightButton'); + document.body.offsetHeight; + }); + }, + intervals[0], // ITI + function () { + requestAnimationFrame(function () { + showFrame(frame.flankers, 'leftButton', 'rightButton'); + document.body.offsetHeight; + tmbUI.getInput(); + }); + }, + intervals[1], // flankers-target asynchrony + function () { + requestAnimationFrame(function () { + showFrame(frame.stim, 'leftButton', 'rightButton'); + document.body.offsetHeight; + }); + }, + intervals[2], // target duration + intervals[3] // target-fixation asynchrony + ? [ + function () { + requestAnimationFrame(function () { + showFrame('leftButton', 'rightButton'); + document.body.offsetHeight; + }); + }, + intervals[3], + function () { + requestAnimationFrame(function () { + showFrame('fixation', 'leftButton', 'rightButton'); + document.body.offsetHeight; + }); + } + ] + : function () { + requestAnimationFrame(function () { + showFrame('fixation', 'leftButton', 'rightButton'); + document.body.offsetHeight; + }); + } + ]; + chainSeq = chainSeq.flatten(); + + hideCursor('document.body'); + document.body.style.background = '#e0e0e0'; // grey + + // chain the stimulus presentation + chain = chainTimeouts(chainSeq); + } + } + // else the sequence is empty, we are done! + else { + var tmp1, tmp2, congTrials, incongTrials; + + showCursor('document.body'); + + // all test trials (excluding practice and timeouts) + tmp1 = results.filter(function (obj) { + return obj.trialType !== 'practice' && obj.state !== 'timeout'; + }); + + // correct trials only + tmp2 = tmp1 + .filter(function (obj) { + return obj.correct === 1; + }) + .pluck('rt'); + + outcomes.accuracy = tmp2.length / tmp1.length; + outcomes.meanRTc = tmp2.length ? tmp2.average().round(2) : null; + outcomes.medianRTc = tmp2.length ? tmp2.median().round(2) : null; + outcomes.sdRTc = tmp2.length > 1 ? tmp2.sd().round(2) : null; + + // congruent trials + congTrials = tmp1.filter(function (obj) { + return obj.congruent === 1; + }); + + // incongruent trials + incongTrials = tmp1.filter(function (obj) { + return obj.congruent === 0; + }); + + outcomes.medianRT_congruent = congTrials.pluck('rt').median(); + outcomes.medianRT_incongruent = incongTrials.pluck('rt').median(); + outcomes.accuracy_congruent = congTrials.pluck('correct').average(); + outcomes.accuracy_incongruent = incongTrials.pluck('correct').average(); + outcomes.rcs_congruent = ((1000 * outcomes.accuracy_congruent) / outcomes.medianRT_congruent).round(4); + outcomes.rcs_incongruent = ((1000 * outcomes.accuracy_incongruent) / outcomes.medianRT_incongruent).round(4); + outcomes.accuracy_interference = (outcomes.accuracy_congruent - outcomes.accuracy_incongruent).round(4); + outcomes.medianRT_interference = (outcomes.medianRT_incongruent - outcomes.medianRT_congruent).round(4); + outcomes.rcs_interference = (outcomes.rcs_congruent - outcomes.rcs_incongruent).round(4); + outcomes.flag_medianRTc = outcomes.medianRTc >= 400 ? 0 : 1; + outcomes.flag_accuracy = outcomes.accuracy < 0.65 ? 1 : 0; + outcomes.flag_trialFlags = tmp1.pluck('flagged').average() > 0.1 ? 1 : 0; + + //overall qc flag + outcomes.flag_any = outcomes.flag_medianRTc + outcomes.flag_accuracy + outcomes.flag_trialFlags > 0 ? 1 : 0; + outcomes.didPracticeTrials = nopractice === 'true' ? 0 : 1; + + // create a score with range 0 - 100 based on rate correct score + // (assume fastest plausible rcs of 2.5 = 100% accuracy + // with 400 ms medianRT) + score = outcomes.score = ((100 * ((1000 * outcomes.accuracy) / tmp1.pluck('rt').median())) / 2.5).round(2); + if (score > 100) score = outcomes.score = 100; + + // response device + tmp2 = tmp1.length ? tmp1[0].state : 'none'; + tmp2 = /key/i.test(tmp2) + ? 'keyboard' + : /touch/i.test(tmp2) + ? 'touch' + : /mouse/i.test(tmp2) + ? 'mouse' + : /pen/i.test(tmp2) + ? 'pen' + : 'unknown'; + + outcomes.responseDevice = tmp2; + outcomes.testVersion = testVersion; + outcomes.type = 'summaryScores'; + + // if debugging, output to console + if (debug === 'true') logResults([outcomes], 'cum'); + + done({ results: results, outcomes: outcomes }); + } + } + + function setFrameSequence() { + var TestMessage, + i, + j, + tempArray = []; + + // whether practice trials will be administered + var doPractice = !nopractice || nopractice === 'false'; + + // stimulus types + var targetType = ['congruentRight', 'congruentLeft', 'incongruentRight', 'incongruentLeft']; + var flankerType = ['flankersRight', 'flankersLeft']; + + // messages + TestMessage = { + begin: + '

    ' + + translator.t('instructions.title') + + '

    ' + + "<<><<

    ", + practice: [ + '

    ' + + translator.t('instructions.heading') + + '


    ' + + translator.t('instructions.youWillSee') + + '

    ' + + "<<><<
    " + + "finger up
    " + + translator.t('instructions.payAttention') + + '

    ', + '

    ' + + translator.t('instructions.heading') + + '

    ' + + "<<><<
    " + + (chosenInput === 'taps' + ? "
    left button      " +
    +              "finger right" +
    +              "right button
    " + : '') + + (chosenInput === 'taps' + ? translator.t('instructions.whenRightTaps') + '

    ' + : tFormat('instructions.whenRightKeys', { key: rightKey }) + + "
    m key
    "), + '

    ' + + translator.t('instructions.heading') + + '

    ' + + ">><>>
    " + + (chosenInput === 'taps' + ? "
    left button" +
    +              "finger left       " +
    +              "right button
    " + : '') + + (chosenInput === 'taps' + ? translator.t('instructions.whenLeftTaps') + '

    ' + : tFormat('instructions.whenLeftKeys', { key: leftKey }) + + "
    x key
    ") + + (doPractice ? translator.t('instructions.letsPractice') + '

    ' : ''), + translator.t('instructions.wellDone') + + '

    ' + + translator.t('instructions.noticedPlus') + + '

    ' + + translator.t('instructions.usePlus') + + '

    ', + translator.t('instructions.morePractice') + '

    ' + translator.t('instructions.fasterNow') + '

    ' + ], + test: [ + (doPractice + ? '
    ' + translator.t('test.excellent') + '

    ' + translator.t('test.nowReal') + '

    ' + : '') + + translator.t('test.threeParts') + + '

    ' + + translator.t('test.respondQuickly') + + '

    ', + '
    ' + + translator.t('test.greatJob') + + '

    ' + + translator.t('test.completedFirst') + + '

    ' + + translator.t('test.letsDoMore') + + '

    ', + '
    ' + translator.t('test.niceGoing') + '

    ' + translator.t('test.oneMore') + '

    ' + ] + }; + + // Practice sequence + + // type of frame to display + var frameType = ['begin', 'message', 'message', 'message']; + + // trial_id + var trial_id = [null, null, null, null]; + + // message to display + var frameMessage = [TestMessage.begin, TestMessage.practice[0], TestMessage.practice[1], TestMessage.practice[2]]; + + // requires feedback? + var frameFeedback = ['', '', '', '']; + + // flanker type (left or right) + var frameFlankers = ['', '', '', '']; + + // target type (incongruent or congruent, left or right) + var frameStim = ['', '', '', '']; + + // setup properties for practice trials + if (doPractice) { + frameType = frameType.concat([ + 'practice1', + 'practice1', + 'practice1', + 'practice1', + 'message', + 'message', + 'practice2', + 'practice2', + 'practice2', + 'practice2' + ]); + + trial_id = trial_id.concat([ + 'practice1', + 'practice2', + 'practice3', + 'practice4', + null, + null, + 'practice5', + 'practice6', + 'practice7', + 'practice8' + ]); + + frameMessage = frameMessage.concat([ + '', + '', + '', + '', + TestMessage.practice[3], + TestMessage.practice[4], + '', + '', + '', + '' + ]); + + frameFeedback = frameFeedback.concat(['', '', '', '', '', '', '', '', '', '']); + + frameFlankers = frameFlankers.concat([ + flankerType[0], + flankerType[1], + flankerType[1], + flankerType[0], + '', + '', + flankerType[0], + flankerType[1], + flankerType[1], + flankerType[0] + ]); + + frameStim = frameStim.concat([ + targetType[0], + targetType[1], + targetType[2], + targetType[3], + '', + '', + targetType[0], + targetType[1], + targetType[2], + targetType[3] + ]); + } + + // tests + + // run 3 blocks + var trialCount = 0; + for (i = 0; i < 3; i++) { + frameType.push('message'); + frameFeedback.push(i === 0 ? '' : 'speedaccuracy'); + frameMessage.push(TestMessage.test[i]); + frameStim.push(''); + frameFlankers.push(''); + trial_id.push(null); + + // each block has 32 trials + // same number of congruent/incongruent and left/right + tempArray = []; + for (j = 0; j < 8; j++) tempArray.push(targetType[0], targetType[1]); + for (j = 0; j < 8; j++) tempArray.push(targetType[2], targetType[3]); + tempArray = tempArray.flatten().shuffle(); + + for (j = 0; j < 32; j++) { + trialCount++; + trial_id.push('test' + trialCount); + frameType.push('test' + (i + 1)); + frameFeedback.push(''); + frameMessage.push(''); + frameStim.push(tempArray[j]); + frameFlankers.push( + tempArray[j] === 'congruentRight' || tempArray[j] === 'incongruentLeft' ? flankerType[0] : flankerType[1] + ); + } + } + + // push all components into the frames chain + for (i = 0; i < frameType.length; i++) { + frameSequence.push({ + trial_id: trial_id[i], + type: frameType[i], + feedback: frameFeedback[i], + message: frameMessage[i], + flankers: frameFlankers[i], + stim: frameStim[i] + }); + } + + //start the testing sequence + nextTrial(); + } + + (function () { + var copyright = 'Copyright ' + document.querySelector('meta[name="copyright"]').content; + var scriptName = window.location.pathname.split('/').pop(); + + // see if they are just asking for help + if ((usage = getUrlParameters('help', '', true))) { + showAlert( + "

    " + + '' + + document.title + + '
    ' + + '' + + copyright + + '

    ' + + 'Usage:' + + '
    ' + + scriptName + + '?urlParam1=1&urlParam2=0

    ' + + 'URL Parameters:
    ' + + 'nopractice=true -- omits practice trials
    ' + + 'debug=true -- outputs trial by trial info to the console
    ' + + 'showresults=true -- allows to save results locally in a file
    ' + + 'autosave=true -- will attempt to save results automatically to file
    ' + + 'filename=subject1.csv -- the filename to save results to
    ' + + 'help -- print this message' + ); + document.getElementById('helpSpan').style.textAlign = 'left'; + document.getElementById('helpSpan').style.margin = '50px'; + return; + } + + // check if this is a debug session + debug = getUrlParameters('debug', '', true); + + // check if they want to load results in a new page when the test is over, + // if data is to be saved automatically to a file and the filename + showresults = getUrlParameters('showresults', '', true); + autosave = getUrlParameters('autosave', '', true); + filename = getUrlParameters('filename', '', true); + + // check if they want to bypass practice + nopractice = getUrlParameters('nopractice', '', true); + + // timing parameters + flankerstime = 100; + targettime = 300; + fixationtime = 70; + + // set response timeout to 3 seconds + tmbUI.timeout = 3000; + + // set the random generator's seed + seed = getUrlParameters('seed', '', true); + if (!(seed = parseInt(seed))) seed = 'FlankerTask'; + Math.seedrandom(seed); + + // set the test version + testVersion = scriptName.replace(/\.[^/.]+$/, ''); + + // disable spurious user interactions + disableSelect(); + disableRightClick(); + disableDrag(); + disableElasticScrolling(); + disableDoubleTapZoom(); + + // set the scale for mobile devices + setBodyScale(700, 650); + + // get device info + deviceInfo = deviceScan(); + + // test start time + testStartTime = Date.now(); + + function setInput(input) { + // set keyboard response keys + leftKey = 'x'; + rightKey = 'm'; + + // determine events to listen to + if (input === 'taps') { + tmbUI.UIevents = ['taps']; + getID('leftButton').innerHTML = '<'; + getID('rightButton').innerHTML = '>'; + tmbUI.highlight = 'responseHighlight'; + } else { + tmbUI.UIevents = ['keys']; + tmbUI.UIkeys = [keyToCode(leftKey), keyToCode(rightKey)]; + getID('leftButton').classList.remove('responseButton'); + getID('rightButton').classList.remove('responseButton'); + getID('leftButton').classList.add('responseIcon'); + getID('rightButton').classList.add('responseIcon'); + getID('leftButton').innerHTML = "x key"; + getID('rightButton').innerHTML = "m key"; + getID('leftButton').style.marginLeft = '-262px'; + getID('rightButton').style.marginLeft = '110px'; + tmbUI.highlight = 'responseIconHighlightPractice'; + } + tmbUI.UIelements = ['leftButton', 'rightButton']; + + chosenInput = input; + + //hide cursor + hideCursor('document.body'); + + // preload images, then create the trials chain and start the sequence + imagePreLoad( + [ + 'fingerUp.png', + 'fingerLeft.png', + 'fingerRight.png', + 'leftButton.png', + 'rightButton.png', + 'pressM_icon.png', + 'pressX_icon.png' + ], + { pipeline: false, callBack: setFrameSequence } + ); + } + + if (!hasTouch) setInput('keys'); + else chooseInput({ keyboard: true, touch: true }, setInput); + })(); +} diff --git a/lib/interactive/TMB_FLANKER_ATTENTION/rightButton.png b/lib/interactive/TMB_FLANKER_ATTENTION/rightButton.png new file mode 100644 index 0000000000000000000000000000000000000000..f978bd919014afae3d4f560787ba3fdcb864d345 GIT binary patch literal 1993 zcmeAS@N?(olHy`uVBq!ia0vp^en9NX!3HFsFgZf>Flf!P?VpRnUl)E zpfRy@!d`EuM3H0l)09%~-^_+^K;MW&~8Gcr0einwR7 zlpi#W$`Uu4)%>sF(9$Pm>%y`wHnx9${IK$TwZ(0Ynfw{6FrGi%%r9r}JqIVz}^)1K@1BH6k{ z&6ig?zs+XP{@qxSmhAg$!ilp+TykO`g+)I4o836mX6c~bf6$I|(vv5t9x`)93LlCZ zWt@2+{LNUKE5iI=?e1;qXAb`9tO?Dk-pw`Tvq8)4vH-h@Bm_<4k*n$sf~dh$P)tMiUmvv z)eD&6Y*(NhgJZC>rzemOPA*DK%`48xFF99xu^lMDS>O>_%)r16bRoAeBg3pY5)2GX zb2CFCN+NuHtdjF{^%7I^lT!66atlD_FxXUB0hzg}C5Z|ZxjA{oRu#5NU=>zCHb_`s zNdc^+B->Ug!Z$#{Ilm}X!A#FU&p^qJOF==wrYI%ND#*nRsvXF)RmvzSDX`MlFE20G zD>v55FG|-pw6wI;H!#vSGSUUA&@HaaD@m--%_~-h7y>iLCAB!YD6^m>Ge1uOWNu?&Cbly25bw41j3z28Y2)I%`K2MB1xcY3@uJAa?Z~MT3BL-h-0W` zWJx5AAP-nY1f>?|=ahm%(9Yb*Mjt~EU4ws7CeV^Zum(e@dSo$l^^w>tKo*2*u+axa zAX0=vQVUoVm|X0*Z1mwt&yFkSmRKn;q2Bd$aSW+oe0%GzcW|K$+lS-V?;UYns=Yna z@ybz^s>v=F7tCI_NRLZt$r*t~3+z=cM0Xo$EA4u_ifQGEWm6Sc@3K5S8h6Ds{?g3T zy<0XX&)zNgtoY%3o_Wm4$K{_V+S@yHoEiSMi}-WU`tU%MyI`czlA9=_UUTaX*Kv;A_X$S*tJ2L~NEHbxxU*yi@IDD>R+ z9|en#HdlQ&tFFBH>*LMt{NNXo9FHGgKY7Pnw(y9_=pv7pt*#->H|$ zC0dQv&dC+O^je-gx_@S=+kIK~=@(a&OkKQptJvIL(}M6RH&1t75t>)q_h=ofg;Ydz4Hm?wOW%NU3~Xd zg3ZnehYmmFwBc$I?A4oLvf2K&VZrb3yDnUOa`5Qkt1E7VB<1VbPWn{MO^|i9Y^+Pu^Xhe6IK4-Mr6_F9n*P z@(xSes=7K>e{JLUdk-X-;_Ix~GS>D=G?cogJkey7I&@*hNcv7Ja*J? X2wEtqo$mPyRPK7Z`njxgN@xNA7{Czk literal 0 HcmV?d00001 diff --git a/lib/interactive/TMB_FLANKER_ATTENTION/styles.css b/lib/interactive/TMB_FLANKER_ATTENTION/styles.css new file mode 100644 index 0000000..610f1d2 --- /dev/null +++ b/lib/interactive/TMB_FLANKER_ATTENTION/styles.css @@ -0,0 +1,160 @@ +/* + + Copyright 2023 The Many Brains Project, Inc. and McLean Hospital. + + This code is made available under a GNU Lesser General Public License 3.0 + (LGPLv3). + https://www.gnu.org/licenses/lgpl-3.0.html. + + Author: Paolo Martini + Version: Flanker_AoU.v1.Mar23 + + Note: the 'Inconsolata' @font-face declaration is injected at runtime from a + base64 data URL (see render.js / font.ts), so it is intentionally omitted here. + +*/ + +* { + border-radius: 0; + box-sizing: border-box; +} + +*::after, +*::before { + box-sizing: border-box; +} + +html { + width: 100vw; + height: 100vh; +} + +img.rounded-corners { + border-radius: 50%; +} + +img.small { + border-radius: 50%; + height: 100px; + width: 100px; + border: 1px solid black; +} + +body { + width: 100vw; + height: 100vh; + margin: auto; + background: #ffffff; + color: #000000; + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-size: 13pt; + text-align: center; +} + +.button { + border: 2px solid #f1c40f; + border-radius: 1em; + background: transparent; + color: #000000; + box-shadow: 0 5px 15px 5px grey; +} + +.button:active { + box-shadow: 0 5px 15px 1px lightgrey; +} + +.button:focus { + outline: none; +} + +.stimulus { + width: 400px; + height: 100px; + position: absolute; + left: 50%; + top: 50%; + margin-top: -150px; + margin-left: -200px; + text-align: center; + color: #424242; + font-size: 70pt; + line-height: 70%; + font-family: 'Inconsolata', monospace !important; + display: none; +} + +.responseButton { + -webkit-appearance: none; + background: #007bc7; + font-size: 40pt; + line-height: 2.5em; + width: 150px; + color: white; + border-radius: 2px; + box-shadow: 0px 1px 5px rgba(0, 0, 0, 0.14); + text-align: center; + font-family: + Palatino Linotype, + Bookman Antiqua, + Palatino, + serif; + -webkit-tap-highlight-color: transparent; + cursor: none; +} + +.responseIcon { + -webkit-appearance: none; + background: #e0e0e0; + border-radius: 50%; + width: 152px; + height: 152px; + border: 1px solid transparent; + -webkit-tap-highlight-color: transparent; + cursor: none; +} + +.responseHighlight { + box-shadow: inset 0px 0px 20px #c1c1c1; +} + +.responseIconHighlight { + border: 1px solid transparent; +} + +.responseIconHighlightPractice { + background: rgba(255, 255, 255, 0.3); + border: 1px solid #505050; + /*box-shadow: inset 0px 0px 20px #cdcdcd;*/ +} + +#leftButton { + position: absolute; + left: 50%; + top: 50%; + margin-left: -260px; + display: none; +} + +#rightButton { + position: absolute; + left: 50%; + top: 50%; + margin-left: 110px; + display: none; +} + +.blink { + animation: blink 1s steps(1, end) infinite; +} + +@keyframes blink { + 0% { + opacity: 1; + } + 75% { + opacity: 0; + } + 100% { + opacity: 1; + } +} diff --git a/lib/interactive/TMB_FLANKER_ATTENTION/translator.ts b/lib/interactive/TMB_FLANKER_ATTENTION/translator.ts new file mode 100644 index 0000000..d9c0803 --- /dev/null +++ b/lib/interactive/TMB_FLANKER_ATTENTION/translator.ts @@ -0,0 +1,182 @@ +import { Translator } from '/runtime/v1/@opendatacapture/runtime-core'; + +export const translator = new Translator({ + translations: { + buttons: { + clickContinue: { + en: 'Click here to continue', + fr: 'Cliquez ici pour continuer' + }, + clickInstructions: { + en: 'Click here for instructions', + fr: 'Cliquez ici pour les instructions' + }, + clickRetry: { + en: 'Click here to retry', + fr: 'Cliquez ici pour réessayer' + }, + spaceContinue: { + en: 'Press the SPACEBAR to continue', + fr: "Appuyez sur la BARRE D'ESPACE pour continuer" + }, + spaceInstructions: { + en: 'Press the SPACEBAR for instructions', + fr: "Appuyez sur la BARRE D'ESPACE pour les instructions" + }, + spaceRetry: { + en: 'Press the SPACEBAR to retry', + fr: "Appuyez sur la BARRE D'ESPACE pour réessayer" + } + }, + feedback: { + middleRight: { + en: 'The arrow in the middle was pointing right:', + fr: 'La flèche du milieu pointait vers la droite :' + }, + middleLeft: { + en: 'The arrow in the middle was pointing left:', + fr: 'La flèche du milieu pointait vers la gauche :' + }, + shouldClickRight: { + en: 'you should have clicked the right button.', + fr: 'vous auriez dû cliquer sur le bouton de droite.' + }, + shouldClickLeft: { + en: 'you should have clicked the left button.', + fr: 'vous auriez dû cliquer sur le bouton de gauche.' + }, + shouldPress: { + en: "you should have pressed the '{key}' keyboard key.", + fr: "vous auriez dû appuyer sur la touche '{key}' du clavier." + } + }, + timeout: { + tooLong: { + en: 'You took too long to respond.', + fr: 'Vous avez mis trop de temps à répondre.' + }, + tryQuicker: { + en: 'Try to be quicker', + fr: "Essayez d'être plus rapide" + }, + atClicking: { + en: 'at clicking the response buttons.', + fr: 'à cliquer sur les boutons de réponse.' + }, + atPressing: { + en: "at pressing the '{leftKey}' or '{rightKey}' keyboard key.", + fr: "à appuyer sur la touche '{leftKey}' ou '{rightKey}' du clavier." + } + }, + speedAccuracy: { + quickly: { + en: 'You should try to respond
    as QUICKLY as possible while still being accurate.

    ', + fr: 'Vous devriez essayer de répondre
    le plus RAPIDEMENT possible tout en restant précis.

    ' + }, + accurately: { + en: 'You should try to respond
    as ACCURATELY as possible while still being fast.

    ', + fr: 'Vous devriez essayer de répondre
    le plus PRÉCISÉMENT possible tout en restant rapide.

    ' + }, + both: { + en: 'You should try to respond
    as quickly and accurately as possible.

    ', + fr: 'Vous devriez essayer de répondre
    aussi rapidement et précisément que possible.

    ' + } + }, + instructions: { + title: { + en: 'TMB Flanker Attention', + fr: 'TMB Attention Flanker' + }, + heading: { + en: 'Instructions', + fr: 'Instructions' + }, + youWillSee: { + en: 'You will see 5 arrows:', + fr: 'Vous verrez 5 flèches :' + }, + payAttention: { + en: 'Pay attention to the arrow in the middle
    and ignore the arrows on the sides.', + fr: 'Concentrez-vous sur la flèche du milieu
    et ignorez les flèches sur les côtés.' + }, + whenRightTaps: { + en: 'When the arrow in the middle points
    to the right, tap the right button
    with your right hand.', + fr: 'Lorsque la flèche du milieu pointe
    vers la droite, touchez le bouton de droite
    avec votre main droite.' + }, + whenRightKeys: { + en: "When the arrow in the middle points
    to the right, press the '{key}' keyboard key
    with your right hand.", + fr: "Lorsque la flèche du milieu pointe
    vers la droite, appuyez sur la touche '{key}'
    avec votre main droite." + }, + whenLeftTaps: { + en: 'When the arrow in the middle points
    to the left, tap the left button
    with your left hand.', + fr: 'Lorsque la flèche du milieu pointe
    vers la gauche, touchez le bouton de gauche
    avec votre main gauche.' + }, + whenLeftKeys: { + en: "When the arrow in the middle points
    to the left, press the '{key}' keyboard key
    with your left hand.", + fr: "Lorsque la flèche du milieu pointe
    vers la gauche, appuyez sur la touche '{key}'
    avec votre main gauche." + }, + letsPractice: { + en: "Let's do some practice.", + fr: "Faisons quelques essais d'entraînement." + }, + wellDone: { + en: 'Well done!', + fr: 'Bien joué !' + }, + noticedPlus: { + en: 'You probably noticed the "+" sign.', + fr: 'Vous avez probablement remarqué le signe « + ».' + }, + usePlus: { + en: 'You can use the "+" sign to help
    you focus for the next arrow.', + fr: 'Vous pouvez utiliser le signe « + » pour
    vous aider à vous concentrer sur la prochaine flèche.' + }, + morePractice: { + en: "Let's do some more practice.", + fr: "Faisons encore quelques essais d'entraînement." + }, + fasterNow: { + en: 'Now the sequence will be faster.', + fr: 'La séquence sera maintenant plus rapide.' + } + }, + test: { + excellent: { + en: 'Excellent!', + fr: 'Excellent !' + }, + nowReal: { + en: 'Now comes the real test.', + fr: 'Voici maintenant le vrai test.' + }, + threeParts: { + en: 'This test has three parts.
    Each part has 32 sets of arrows.', + fr: 'Ce test comporte trois parties.
    Chaque partie comprend 32 séries de flèches.' + }, + respondQuickly: { + en: 'Respond as quickly and accurately as you can.', + fr: 'Répondez aussi rapidement et précisément que possible.' + }, + greatJob: { + en: 'Great job!', + fr: 'Excellent travail !' + }, + completedFirst: { + en: 'You just completed the first part of this test.
    There are two more parts.', + fr: 'Vous venez de terminer la première partie de ce test.
    Il reste deux parties.' + }, + letsDoMore: { + en: "Let's do more!", + fr: 'Continuons !' + }, + niceGoing: { + en: 'Nice going!', + fr: 'Bravo !' + }, + oneMore: { + en: 'One more part and you are done!', + fr: 'Encore une partie et vous aurez terminé !' + } + } + } +}); From 7e992f4deeccd386e02170b27f33e018e9a10a7f Mon Sep 17 00:00:00 2001 From: joshunrau Date: Tue, 16 Jun 2026 20:33:02 -0400 Subject: [PATCH 4/6] add TMB_LN_SWITCHING --- .../{_Inst0.webp => _Inst0_en.webp} | Bin .../TMB_LN_SWITCHING/_Inst0_fr.webp | Bin 0 -> 13756 bytes .../{_Inst2.webp => _Inst2_en.webp} | Bin .../TMB_LN_SWITCHING/_Inst2_fr.webp | Bin 0 -> 6850 bytes .../{_Inst3.webp => _Inst3_en.webp} | Bin .../TMB_LN_SWITCHING/_Inst3_fr.webp | Bin 0 -> 16946 bytes .../{_Inst4.webp => _Inst4_en.webp} | Bin .../TMB_LN_SWITCHING/_Inst4_fr.webp | Bin 0 -> 15208 bytes ...t_click.webp => _letterInst_click_en.webp} | Bin .../_letterInst_click_fr.webp | Bin 0 -> 12840 bytes .../{_letterInst.webp => _letterInst_en.webp} | Bin .../TMB_LN_SWITCHING/_letterInst_fr.webp | Bin 0 -> 12208 bytes ...t_click.webp => _numberInst_click_en.webp} | Bin .../_numberInst_click_fr.webp | Bin 0 -> 14366 bytes .../{_numberInst.webp => _numberInst_en.webp} | Bin .../TMB_LN_SWITCHING/_numberInst_fr.webp | Bin 0 -> 13756 bytes lib/interactive/TMB_LN_SWITCHING/index.ts | 49 ++++++++++++------ lib/interactive/TMB_LN_SWITCHING/render.js | 35 +++++++++---- 18 files changed, 59 insertions(+), 25 deletions(-) rename lib/interactive/TMB_LN_SWITCHING/{_Inst0.webp => _Inst0_en.webp} (100%) create mode 100644 lib/interactive/TMB_LN_SWITCHING/_Inst0_fr.webp rename lib/interactive/TMB_LN_SWITCHING/{_Inst2.webp => _Inst2_en.webp} (100%) create mode 100644 lib/interactive/TMB_LN_SWITCHING/_Inst2_fr.webp rename lib/interactive/TMB_LN_SWITCHING/{_Inst3.webp => _Inst3_en.webp} (100%) create mode 100644 lib/interactive/TMB_LN_SWITCHING/_Inst3_fr.webp rename lib/interactive/TMB_LN_SWITCHING/{_Inst4.webp => _Inst4_en.webp} (100%) create mode 100644 lib/interactive/TMB_LN_SWITCHING/_Inst4_fr.webp rename lib/interactive/TMB_LN_SWITCHING/{_letterInst_click.webp => _letterInst_click_en.webp} (100%) create mode 100644 lib/interactive/TMB_LN_SWITCHING/_letterInst_click_fr.webp rename lib/interactive/TMB_LN_SWITCHING/{_letterInst.webp => _letterInst_en.webp} (100%) create mode 100644 lib/interactive/TMB_LN_SWITCHING/_letterInst_fr.webp rename lib/interactive/TMB_LN_SWITCHING/{_numberInst_click.webp => _numberInst_click_en.webp} (100%) create mode 100644 lib/interactive/TMB_LN_SWITCHING/_numberInst_click_fr.webp rename lib/interactive/TMB_LN_SWITCHING/{_numberInst.webp => _numberInst_en.webp} (100%) create mode 100644 lib/interactive/TMB_LN_SWITCHING/_numberInst_fr.webp diff --git a/lib/interactive/TMB_LN_SWITCHING/_Inst0.webp b/lib/interactive/TMB_LN_SWITCHING/_Inst0_en.webp similarity index 100% rename from lib/interactive/TMB_LN_SWITCHING/_Inst0.webp rename to lib/interactive/TMB_LN_SWITCHING/_Inst0_en.webp diff --git a/lib/interactive/TMB_LN_SWITCHING/_Inst0_fr.webp b/lib/interactive/TMB_LN_SWITCHING/_Inst0_fr.webp new file mode 100644 index 0000000000000000000000000000000000000000..d7e86169948a9fdb89c4084c7a7e5585c1ca7b76 GIT binary patch literal 13756 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 c{t2{}76|0GazyII<7ldiqAOHXW literal 0 HcmV?d00001 diff --git a/lib/interactive/TMB_LN_SWITCHING/_Inst2.webp b/lib/interactive/TMB_LN_SWITCHING/_Inst2_en.webp similarity index 100% rename from lib/interactive/TMB_LN_SWITCHING/_Inst2.webp rename to lib/interactive/TMB_LN_SWITCHING/_Inst2_en.webp diff --git a/lib/interactive/TMB_LN_SWITCHING/_Inst2_fr.webp b/lib/interactive/TMB_LN_SWITCHING/_Inst2_fr.webp new file mode 100644 index 0000000000000000000000000000000000000000..55b73c9add153f5e07a84d7791c1c6d2c5d5d100 GIT binary patch literal 6850 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 X1{6{NVjGY^%3a~b2#LCX3+%rDCU~u4 literal 0 HcmV?d00001 diff --git a/lib/interactive/TMB_LN_SWITCHING/_Inst3.webp b/lib/interactive/TMB_LN_SWITCHING/_Inst3_en.webp similarity index 100% rename from lib/interactive/TMB_LN_SWITCHING/_Inst3.webp rename to lib/interactive/TMB_LN_SWITCHING/_Inst3_en.webp diff --git a/lib/interactive/TMB_LN_SWITCHING/_Inst3_fr.webp b/lib/interactive/TMB_LN_SWITCHING/_Inst3_fr.webp new file mode 100644 index 0000000000000000000000000000000000000000..eac965f1d1c63cc903b84a7226bb9aeccfc03a04 GIT binary patch literal 16946 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 Ofr;7X-u~Co_x}LOa_7eY literal 0 HcmV?d00001 diff --git a/lib/interactive/TMB_LN_SWITCHING/_Inst4.webp b/lib/interactive/TMB_LN_SWITCHING/_Inst4_en.webp similarity index 100% rename from lib/interactive/TMB_LN_SWITCHING/_Inst4.webp rename to lib/interactive/TMB_LN_SWITCHING/_Inst4_en.webp diff --git a/lib/interactive/TMB_LN_SWITCHING/_Inst4_fr.webp b/lib/interactive/TMB_LN_SWITCHING/_Inst4_fr.webp new file mode 100644 index 0000000000000000000000000000000000000000..ca665d52e6d934b33a2a3aae04ccc246517d655c GIT binary patch literal 15208 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 KISz;bfd2=5a*F@} literal 0 HcmV?d00001 diff --git a/lib/interactive/TMB_LN_SWITCHING/_letterInst_click.webp b/lib/interactive/TMB_LN_SWITCHING/_letterInst_click_en.webp similarity index 100% rename from lib/interactive/TMB_LN_SWITCHING/_letterInst_click.webp rename to lib/interactive/TMB_LN_SWITCHING/_letterInst_click_en.webp diff --git a/lib/interactive/TMB_LN_SWITCHING/_letterInst_click_fr.webp b/lib/interactive/TMB_LN_SWITCHING/_letterInst_click_fr.webp new file mode 100644 index 0000000000000000000000000000000000000000..8d18f40ad236343b2c5f12093c05c3dc445d18e8 GIT binary patch literal 12840 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 literal 0 HcmV?d00001 diff --git a/lib/interactive/TMB_LN_SWITCHING/_letterInst.webp b/lib/interactive/TMB_LN_SWITCHING/_letterInst_en.webp similarity index 100% rename from lib/interactive/TMB_LN_SWITCHING/_letterInst.webp rename to lib/interactive/TMB_LN_SWITCHING/_letterInst_en.webp diff --git a/lib/interactive/TMB_LN_SWITCHING/_letterInst_fr.webp b/lib/interactive/TMB_LN_SWITCHING/_letterInst_fr.webp new file mode 100644 index 0000000000000000000000000000000000000000..6c616b0711fe849f58538999a5a9ef58948b0476 GIT binary patch literal 12208 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 literal 0 HcmV?d00001 diff --git a/lib/interactive/TMB_LN_SWITCHING/_numberInst_click.webp b/lib/interactive/TMB_LN_SWITCHING/_numberInst_click_en.webp similarity index 100% rename from lib/interactive/TMB_LN_SWITCHING/_numberInst_click.webp rename to lib/interactive/TMB_LN_SWITCHING/_numberInst_click_en.webp diff --git a/lib/interactive/TMB_LN_SWITCHING/_numberInst_click_fr.webp b/lib/interactive/TMB_LN_SWITCHING/_numberInst_click_fr.webp new file mode 100644 index 0000000000000000000000000000000000000000..e940e7a7edd6c96859c8207f29e6d7a4df0948b6 GIT binary patch literal 14366 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 literal 0 HcmV?d00001 diff --git a/lib/interactive/TMB_LN_SWITCHING/_numberInst.webp b/lib/interactive/TMB_LN_SWITCHING/_numberInst_en.webp similarity index 100% rename from lib/interactive/TMB_LN_SWITCHING/_numberInst.webp rename to lib/interactive/TMB_LN_SWITCHING/_numberInst_en.webp diff --git a/lib/interactive/TMB_LN_SWITCHING/_numberInst_fr.webp b/lib/interactive/TMB_LN_SWITCHING/_numberInst_fr.webp new file mode 100644 index 0000000000000000000000000000000000000000..d7e86169948a9fdb89c4084c7a7e5585c1ca7b76 GIT binary patch literal 13756 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 c{t2{}76|0GazyII<7ldiqAOHXW literal 0 HcmV?d00001 diff --git a/lib/interactive/TMB_LN_SWITCHING/index.ts b/lib/interactive/TMB_LN_SWITCHING/index.ts index f6c4130..c9f7ced 100644 --- a/lib/interactive/TMB_LN_SWITCHING/index.ts +++ b/lib/interactive/TMB_LN_SWITCHING/index.ts @@ -2,15 +2,23 @@ import { defineInstrument } from '/runtime/v1/@opendatacapture/runtime-core'; import { z } from '/runtime/v1/zod@3.x/v4'; import fingerImg from './_finger.webp'; -import inst0Img from './_Inst0.webp'; +import inst0EnImg from './_Inst0_en.webp'; +import inst0FrImg from './_Inst0_fr.webp'; import inst1Img from './_Inst1.webp'; -import inst2Img from './_Inst2.webp'; -import inst3Img from './_Inst3.webp'; -import inst4Img from './_Inst4.webp'; -import letterInstImg from './_letterInst.webp'; -import letterInstClickImg from './_letterInst_click.webp'; -import numberInstImg from './_numberInst.webp'; -import numberInstClickImg from './_numberInst_click.webp'; +import inst2EnImg from './_Inst2_en.webp'; +import inst2FrImg from './_Inst2_fr.webp'; +import inst3EnImg from './_Inst3_en.webp'; +import inst3FrImg from './_Inst3_fr.webp'; +import inst4EnImg from './_Inst4_en.webp'; +import inst4FrImg from './_Inst4_fr.webp'; +import letterInstClickEnImg from './_letterInst_click_en.webp'; +import letterInstClickFrImg from './_letterInst_click_fr.webp'; +import letterInstEnImg from './_letterInst_en.webp'; +import letterInstFrImg from './_letterInst_fr.webp'; +import numberInstClickEnImg from './_numberInst_click_en.webp'; +import numberInstClickFrImg from './_numberInst_click_fr.webp'; +import numberInstEnImg from './_numberInst_en.webp'; +import numberInstFrImg from './_numberInst_fr.webp'; import html from './fragment.html'; import { render } from './render.js'; @@ -19,16 +27,24 @@ import './TestHelper.v1.May23.js?legacy'; import './styles.css'; const staticAssets = { - '/images/Inst0.jpg': inst0Img, '/images/Inst1.jpg': inst1Img, - '/images/Inst2.jpg': inst2Img, - '/images/Inst3.jpg': inst3Img, - '/images/Inst4.jpg': inst4Img, '/images/finger.png': fingerImg, - '/images/numberInst.jpg': numberInstImg, - '/images/numberInst_click.jpg': numberInstClickImg, - '/images/letterInst.jpg': letterInstImg, - '/images/letterInst_click.jpg': letterInstClickImg + '/images/Inst0_en.jpg': inst0EnImg, + '/images/Inst0_fr.jpg': inst0FrImg, + '/images/Inst2_en.jpg': inst2EnImg, + '/images/Inst2_fr.jpg': inst2FrImg, + '/images/Inst3_en.jpg': inst3EnImg, + '/images/Inst3_fr.jpg': inst3FrImg, + '/images/Inst4_en.jpg': inst4EnImg, + '/images/Inst4_fr.jpg': inst4FrImg, + '/images/numberInst_en.jpg': numberInstEnImg, + '/images/numberInst_fr.jpg': numberInstFrImg, + '/images/numberInst_click_en.jpg': numberInstClickEnImg, + '/images/numberInst_click_fr.jpg': numberInstClickFrImg, + '/images/letterInst_en.jpg': letterInstEnImg, + '/images/letterInst_fr.jpg': letterInstFrImg, + '/images/letterInst_click_en.jpg': letterInstClickEnImg, + '/images/letterInst_click_fr.jpg': letterInstClickFrImg }; export default defineInstrument({ @@ -57,6 +73,7 @@ export default defineInstrument({ html, render, staticAssets, + defaultFullscreen: true, enableLanguageLock: true, enableLanguageSelect: true }, diff --git a/lib/interactive/TMB_LN_SWITCHING/render.js b/lib/interactive/TMB_LN_SWITCHING/render.js index 582a4a4..e0a7adf 100644 --- a/lib/interactive/TMB_LN_SWITCHING/render.js +++ b/lib/interactive/TMB_LN_SWITCHING/render.js @@ -6,6 +6,9 @@ import { translator } from './translator.ts'; export function render(onComplete) { translator.init(); + // language suffix for instruction images ('_en' or '_fr') + var imgLang = translator.resolvedLanguage === 'fr' ? 'fr' : 'en'; + function tFormat(key, vars) { var s = translator.t(key); if (vars) { @@ -261,26 +264,40 @@ export function render(onComplete) { var TestMessage; var instructionsHeading = '

    ' + translator.t('instructions.heading') + '

    '; TestMessage = { - begin: '

    ' + translator.t('instructions.title') + '

    ' + "Title

    ", + begin: + '

    ' + + translator.t('instructions.title') + + '

    ' + + "Title

    ", instructions: [ instructionsHeading + "Instructions

    " + translator.t('instructions.step1') + '

    ', instructionsHeading + - "Instructions

    " + + "Instructions

    " + translator.t('instructions.step2') + '

    ', instructionsHeading + - "Instructions

    " + + "Instructions

    " + translator.t('instructions.step3') + '

    ', instructionsHeading + - "Instructions

    " + + "Instructions

    " + translator.t('instructions.step4') + '

    ', instructionsHeading + - "Instructions

    " + + "Instructions

    " + translator.t('instructions.letsPractice') + '

    ', translator.t('instructions.excellent') + '

    ' @@ -637,11 +654,11 @@ export function render(onComplete) { tmbUI.UIelements = ['leftResponse', 'rightResponse']; tmbUI.highlight = 'responseHighlight'; - images[0] = 'images/Inst0.jpg'; + images[0] = 'images/Inst0_' + imgLang + '.jpg'; images[1] = 'images/Inst1.jpg'; - images[2] = 'images/Inst2.jpg'; - images[3] = 'images/Inst3.jpg'; - images[4] = 'images/Inst4.jpg'; + images[2] = 'images/Inst2_' + imgLang + '.jpg'; + images[3] = 'images/Inst3_' + imgLang + '.jpg'; + images[4] = 'images/Inst4_' + imgLang + '.jpg'; imagePreLoad(images, { pipeline: false, callBack: setFrameSequence }); })(); } From 195b1d826c8c7e75da83879897de4966944f3158 Mon Sep 17 00:00:00 2001 From: joshunrau Date: Tue, 16 Jun 2026 20:33:22 -0400 Subject: [PATCH 5/6] add translations to TMB_VERBAL_PA_STUDY --- .../TestMyBrain.12.18.min.js | 5 - lib/interactive/TMB_VERBAL_PA_STUDY/index.ts | 122 +++++++++++++++++- lib/interactive/TMB_VERBAL_PA_STUDY/render.js | 46 +++++-- .../TMB_VERBAL_PA_STUDY/translator.ts | 52 ++++++++ 4 files changed, 201 insertions(+), 24 deletions(-) create mode 100644 lib/interactive/TMB_VERBAL_PA_STUDY/translator.ts diff --git a/lib/interactive/TMB_VERBAL_PA_STUDY/TestMyBrain.12.18.min.js b/lib/interactive/TMB_VERBAL_PA_STUDY/TestMyBrain.12.18.min.js index 759b561..65398d9 100644 --- a/lib/interactive/TMB_VERBAL_PA_STUDY/TestMyBrain.12.18.min.js +++ b/lib/interactive/TMB_VERBAL_PA_STUDY/TestMyBrain.12.18.min.js @@ -54,7 +54,6 @@ function showFrame() { for ( tmbObjs.frames.length || (tmbObjs.frames = document.getElementsByTagName('div')), t = tmbObjs.frames.length; t--; - ) ((e = n.indexOf(tmbObjs.frames[t].id) > -1 ? 'block' : 'none'), tmbObjs.frames[t].style.display !== e && (tmbObjs.frames[t].style.display = e)); @@ -68,7 +67,6 @@ function showFrameClass() { for ( tmbObjs.frames.length || (tmbObjs.frames = document.getElementsByTagName('div')), t = tmbObjs.frames.length; t--; - ) ((e = n.indexOf(tmbObjs.frames[t].className) > -1 ? 'block' : 'none'), tmbObjs.frames[t].style.display !== e && (tmbObjs.frames[t].style.display = e)); @@ -515,7 +513,6 @@ function imagePreLoad(e, t) { (t.addEventListener('load', c, !0), t.addEventListener('error', c, !0), (t.id = e), (t.src = e)); }; l > 0; - ) (l--, d(n.shift())); } @@ -3360,7 +3357,6 @@ var saveTextAs = s = void 0 === a ? n : a >> 0, u = 0 > s ? Math.max(n + s, 0) : Math.min(s, n); u > i; - ) ((t[i] = e), i++); return t; @@ -3470,7 +3466,6 @@ var zen = tmbObjs, r = n.length, o = (window.console = window.console || {}); r--; - ) ((e = n[r]), o[e] || (o[e] = t)); })(), diff --git a/lib/interactive/TMB_VERBAL_PA_STUDY/index.ts b/lib/interactive/TMB_VERBAL_PA_STUDY/index.ts index 3acb195..aa181fb 100644 --- a/lib/interactive/TMB_VERBAL_PA_STUDY/index.ts +++ b/lib/interactive/TMB_VERBAL_PA_STUDY/index.ts @@ -107,16 +107,112 @@ blonde ocean woman potato `.trim(); +const easyFr = ` +* Version française de easy (STUDY) +* PROBE TARGET +insecte cognac +enfants boisson +brûleur diamant +seau image +maison oreiller +camion citron +bétail jardin +herbe paille +matin jupe +affiche fleur +bibliothèque diapositive +cour rivage +souris argent +essai fusée +mixeur tombe +ballon sauce +érable fromage +ordures port +bataille capsule +pédale collège +garde triangle +hôpital craie +liquide policier +humain montagne +tennis tamia +`.trim(); + +const hardFr = ` +* Version française de hard (STUDY) +* PROBE TARGET +disposition liberté +perception malice +aptitude dévotion +gloire suppression +gratitude distinction +fierté méthode +esprit attribut +âme confiance +attitude bravoure +facilité espoir +discipline folie +théorie passion +opinion chagrin +vanité essence +loyauté incitation +animosité savoir +jalousie intellect +reconnaissance ingratitude +immunité amour +intérêt embarras +plaisir bien-être +violation destin +hasard impulsion +satire nécessité +pensée sécurité +`.trim(); + +const defaultInputFr = ` +* Version française de l'entrée par défaut (STUDY) +* PROBE TARGET +officier bouilloire +animal verre +étudiant canapé +cocktail ciment +fruit coude +cheval chorale +piano morse +ail bulle +miroir portefeuille +invité pain +boisson lessive +bougie parapluie +plage moutarde +infirmière radio +orgue laitue +flamme mère +lapin arme +requin plancher +cuillère maladie +touriste journal +football dentiste +torche fermeture +colonne tulipe +blonde océan +femme patate +`.trim(); + const staticAssets = { '/VerbalPAstudyInput_25pairs_easy1.txt': `data:text/plain,${encodeURIComponent(easy)}`, '/VerbalPAstudyInput_25pairs_hard1.txt': `data:text/plain,${encodeURIComponent(hard)}`, - '/VerbalPAstudyInput.txt': `data:text/plain,${encodeURIComponent(defaultInput)}` + '/VerbalPAstudyInput.txt': `data:text/plain,${encodeURIComponent(defaultInput)}`, + '/VerbalPAstudyInput_25pairs_easy1_fr.txt': `data:text/plain,${encodeURIComponent(easyFr)}`, + '/VerbalPAstudyInput_25pairs_hard1_fr.txt': `data:text/plain,${encodeURIComponent(hardFr)}`, + '/VerbalPAstudyInput_fr.txt': `data:text/plain,${encodeURIComponent(defaultInputFr)}` }; export default defineInstrument({ kind: 'INTERACTIVE', - language: 'en', - tags: ['TestMyBrain'], + language: ['en', 'fr'], + tags: { + en: ['TestMyBrain'], + fr: ['TestMyBrain'] + }, internal: { edition: 1, name: 'TMB_VERBAL_PA_STUDY' @@ -135,16 +231,28 @@ export default defineInstrument({ }, render, html, - staticAssets + staticAssets, + defaultFullscreen: true, + enableLanguageLock: true, + enableLanguageSelect: true }, clientDetails: { estimatedDuration: 1, - instructions: ['Instructions will be presented on screen in the task.'] + instructions: { + en: ['Instructions will be presented on screen in the task.'], + fr: ["Les instructions seront présentées à l'écran pendant la tâche."] + } }, details: { - description: 'The encoding phase of a verbal memory test where participants learn word pairs for later recall.', + description: { + en: 'The encoding phase of a verbal memory test where participants learn word pairs for later recall.', + fr: 'La phase d’encodage d’un test de mémoire verbale où les participants apprennent des paires de mots en vue d’un rappel ultérieur.' + }, license: 'LGPL-3.0', - title: 'Verbal Paired Associates - Study' + title: { + en: 'Verbal Paired Associates - Study', + fr: 'Paires associées verbales — Étude' + } }, measures: {}, validationSchema: z.array( diff --git a/lib/interactive/TMB_VERBAL_PA_STUDY/render.js b/lib/interactive/TMB_VERBAL_PA_STUDY/render.js index 4cfccfb..b2209ad 100644 --- a/lib/interactive/TMB_VERBAL_PA_STUDY/render.js +++ b/lib/interactive/TMB_VERBAL_PA_STUDY/render.js @@ -1,7 +1,19 @@ // @ts-nocheck /* eslint-disable */ +import { translator } from './translator.ts'; + export function render(done) { + translator.init(); + + function tFormat(key, vars) { + var s = translator.t(key); + if (vars) { + for (var k in vars) s = s.replace(new RegExp('\\{' + k + '\\}', 'g'), vars[k]); + } + return s; + } + var wordPairs = []; // array of probe-target words var pairsCount = 0; // count of already seen word pairs var studyTime = 3000; // probe-target study time @@ -25,7 +37,7 @@ export function render(done) { if (frame.type === 'begin') showAlert( frame.message, - 'Click here for instructions', + translator.t('buttons.clickInstructions'), function () { showFrame('null'); nextTrial(); @@ -36,7 +48,7 @@ export function render(done) { else if (frame.type === 'message') showAlert( frame.message, - 'Click here to continue', + translator.t('buttons.clickContinue'), function () { showFrame('null'); nextTrial(); @@ -55,7 +67,8 @@ export function render(done) { chainTimeouts( function () { pairsCount++; - getID('counter').innerHTML = '' + pairsCount + ' of ' + wordPairs.length + ''; + getID('counter').innerHTML = + '' + pairsCount + ' ' + translator.t('counter.of') + ' ' + wordPairs.length + ''; showFrame('counter'); }, ISI, @@ -86,16 +99,20 @@ export function render(done) { // messages testMessage = { - begin: '

    Remembering Words

    ' + 'SKY - GREEN

    ', + begin: '

    ' + translator.t('study.beginTitle') + '

    ' + translator.t('study.examplePair') + '

    ', instructions: - '

    Instructions:

    ' + - 'SKY - GREEN

    ' + - 'You will see ' + - wordPairs.length + - ' word pairs, like above.
    ' + - 'Learn which words go together.
    ' + - 'Later you will be tested on that!

    ', - end: 'You will be tested on these word pairs shortly.
    ' + "But first, let's do some other tests!

    " + '

    ' + + translator.t('study.instructionsHeading') + + '

    ' + + translator.t('study.examplePair') + + '

    ' + + tFormat('study.youWillSee', { count: wordPairs.length }) + + '
    ' + + translator.t('study.learnTogether') + + '
    ' + + translator.t('study.laterTested') + + '

    ', + end: translator.t('study.end') + '

    ' }; // type of frame to display @@ -239,6 +256,11 @@ export function render(done) { disableDrag(); disableDoubleTapZoom(); + // when French is selected, load the French word-pair list + if (translator.resolvedLanguage === 'fr') { + inputFile = inputFile.replace(/\.txt$/, '_fr.txt'); + } + // read the input file and call the parser ajaxRequest({ url: inputFile, async: true, callback: parseFile }); })(); diff --git a/lib/interactive/TMB_VERBAL_PA_STUDY/translator.ts b/lib/interactive/TMB_VERBAL_PA_STUDY/translator.ts new file mode 100644 index 0000000..7e6701e --- /dev/null +++ b/lib/interactive/TMB_VERBAL_PA_STUDY/translator.ts @@ -0,0 +1,52 @@ +import { Translator } from '/runtime/v1/@opendatacapture/runtime-core'; + +export const translator = new Translator({ + translations: { + buttons: { + clickContinue: { + en: 'Click here to continue', + fr: 'Cliquez ici pour continuer' + }, + clickInstructions: { + en: 'Click here for instructions', + fr: 'Cliquez ici pour les instructions' + } + }, + counter: { + of: { + en: 'of', + fr: 'sur' + } + }, + study: { + beginTitle: { + en: 'Remembering Words', + fr: 'Se souvenir des mots' + }, + examplePair: { + en: 'SKY - GREEN', + fr: 'CIEL - VERT' + }, + instructionsHeading: { + en: 'Instructions:', + fr: 'Instructions :' + }, + youWillSee: { + en: 'You will see {count} word pairs, like above.', + fr: 'Vous verrez {count} paires de mots, comme ci-dessus.' + }, + learnTogether: { + en: 'Learn which words go together.', + fr: 'Apprenez quels mots vont ensemble.' + }, + laterTested: { + en: 'Later you will be tested on that!', + fr: 'Vous serez testé(e) là-dessus plus tard !' + }, + end: { + en: "You will be tested on these word pairs shortly.
    But first, let's do some other tests!", + fr: 'Vous serez testé(e) sur ces paires de mots bientôt.
    Mais d’abord, faisons d’autres tests !' + } + } + } +}); From 29af20795def5b668b8ae2971deefcf28df49eba Mon Sep 17 00:00:00 2001 From: joshunrau Date: Tue, 16 Jun 2026 20:33:32 -0400 Subject: [PATCH 6/6] add translations to TMB_VERBAL_PA_TEST --- .../TestMyBrain.12.18.min.js | 5 - lib/interactive/TMB_VERBAL_PA_TEST/index.ts | 122 +++++++++++++++++- lib/interactive/TMB_VERBAL_PA_TEST/render.js | 106 +++++++++------ .../TMB_VERBAL_PA_TEST/translator.ts | 86 ++++++++++++ 4 files changed, 270 insertions(+), 49 deletions(-) create mode 100644 lib/interactive/TMB_VERBAL_PA_TEST/translator.ts diff --git a/lib/interactive/TMB_VERBAL_PA_TEST/TestMyBrain.12.18.min.js b/lib/interactive/TMB_VERBAL_PA_TEST/TestMyBrain.12.18.min.js index 759b561..65398d9 100644 --- a/lib/interactive/TMB_VERBAL_PA_TEST/TestMyBrain.12.18.min.js +++ b/lib/interactive/TMB_VERBAL_PA_TEST/TestMyBrain.12.18.min.js @@ -54,7 +54,6 @@ function showFrame() { for ( tmbObjs.frames.length || (tmbObjs.frames = document.getElementsByTagName('div')), t = tmbObjs.frames.length; t--; - ) ((e = n.indexOf(tmbObjs.frames[t].id) > -1 ? 'block' : 'none'), tmbObjs.frames[t].style.display !== e && (tmbObjs.frames[t].style.display = e)); @@ -68,7 +67,6 @@ function showFrameClass() { for ( tmbObjs.frames.length || (tmbObjs.frames = document.getElementsByTagName('div')), t = tmbObjs.frames.length; t--; - ) ((e = n.indexOf(tmbObjs.frames[t].className) > -1 ? 'block' : 'none'), tmbObjs.frames[t].style.display !== e && (tmbObjs.frames[t].style.display = e)); @@ -515,7 +513,6 @@ function imagePreLoad(e, t) { (t.addEventListener('load', c, !0), t.addEventListener('error', c, !0), (t.id = e), (t.src = e)); }; l > 0; - ) (l--, d(n.shift())); } @@ -3360,7 +3357,6 @@ var saveTextAs = s = void 0 === a ? n : a >> 0, u = 0 > s ? Math.max(n + s, 0) : Math.min(s, n); u > i; - ) ((t[i] = e), i++); return t; @@ -3470,7 +3466,6 @@ var zen = tmbObjs, r = n.length, o = (window.console = window.console || {}); r--; - ) ((e = n[r]), o[e] || (o[e] = t)); })(), diff --git a/lib/interactive/TMB_VERBAL_PA_TEST/index.ts b/lib/interactive/TMB_VERBAL_PA_TEST/index.ts index ee52018..7f61d05 100644 --- a/lib/interactive/TMB_VERBAL_PA_TEST/index.ts +++ b/lib/interactive/TMB_VERBAL_PA_TEST/index.ts @@ -107,16 +107,112 @@ mirror wallet cement wallet movie cousin fruit elbow mustard paint elbow material `.trim(); +const easyFr = ` +* Version française de easy (TEST) +* PROBE TARGET CHOICE-1 CHOICE-2 CHOICE-3 CHOICE-4 +érable fromage pomme quart citron fromage +bibliothèque diapositive graphique médicament fleur diapositive +seau image givre image aimant triangle +bataille capsule asperge concombre capsule collège +mixeur tombe tombe diapositive aimant arbitre +insecte cognac produit oreiller musicien cognac +humain montagne paille montagne auteur asperge +essai fusée fusée coton brosse image +garde triangle triangle cognac téléphone mari +matin jupe tamia coquille jupe soldat +herbe paille pelle reine sauce paille +hôpital craie mari médicament craie rivage +ordures port craie port plafond pomme +tennis tamia oignon tamia brosse fusée +brûleur diamant diamant produit arbitre fromage +liquide policier musicien policier oignon montagne +bétail jardin port jardin graphique public +pédale collège boisson reine coton collège +cour rivage téléphone soleil argent rivage +enfants boisson boisson capsule plafond nuage +ballon sauce jardin plafond sauce soldat +camion citron givre diamant citron pelle +souris argent policier soleil argent public +affiche fleur jupe fleur auteur coquille +maison oreiller oreiller concombre quart tombe +`.trim(); + +const hardFr = ` +* Version française de hard (TEST) +* PROBE TARGET CHOICE-1 CHOICE-2 CHOICE-3 CHOICE-4 +hasard impulsion essence intellect distinction impulsion +animosité savoir intellect malice savoir suppression +aptitude dévotion suppression sécurité espoir dévotion +attitude bravoure chagrin confiance bravoure malice +violation destin destin bravoure savoir bien-être +opinion chagrin liberté chagrin sécurité embarras +intérêt embarras embarras suppression folie nécessité +facilité espoir passion incitation espoir bien-être +gratitude distinction dévotion nécessité distinction savoir +satire nécessité nécessité essence sécurité méthode +esprit attribut amour attribut dévotion destin +loyauté incitation incitation destin embarras essence +disposition liberté attribut malice liberté passion +perception malice confiance malice ingratitude distinction +âme confiance savoir confiance impulsion amour +immunité amour ingratitude liberté destin amour +jalousie intellect amour incitation intellect folie +pensée sécurité sécurité nécessité attribut méthode +reconnaissance ingratitude passion espoir intellect ingratitude +vanité essence embarras attribut folie essence +discipline folie chagrin liberté ingratitude folie +fierté méthode bien-être incitation bravoure méthode +gloire suppression suppression impulsion distinction bravoure +plaisir bien-être méthode bien-être confiance chagrin +théorie passion impulsion passion distinction dévotion +`.trim(); + +const defaultInputFr = ` +* Version française de l'entrée par défaut (TEST) +* PROBE TARGET CHOICE-1 CHOICE-2 CHOICE-3 CHOICE-4 +femme patate patate pain araignée placard +étudiant canapé lac bouilloire forêt canapé +boisson lessive verre peinture détective lessive +invité pain coude limonade pain famille +blonde océan océan placard dentiste lac +football dentiste avocat arme fenêtre dentiste +cocktail ciment plancher ciment église famille +officier bouilloire laitue dollar docteur bouilloire +plage moutarde tunnel billet bulle moutarde +piano morse forêt radio morse billet +orgue laitue singe film canapé laitue +bougie parapluie mère enveloppe sauce parapluie +cuillère maladie sauce patate tunnel maladie +cheval chorale océan chorale église enveloppe +torche fermeture maladie robe fermeture tissu +ail bulle bulle journal docteur dollar +touriste journal fenêtre banane journal chorale +infirmière radio araignée radio limonade parapluie +colonne tulipe portefeuille robe tulipe casque +flamme mère mère cousin détective fermeture +animal verre verre singe morse banane +lapin arme caoutchouc lessive laitue arme +requin plancher plancher avocat tulipe casque +miroir portefeuille ciment portefeuille film cousin +fruit coude moutarde peinture coude tissu +`.trim(); + const staticAssets = { '/VerbalPAtestInput_25pairs_easy1.txt': `data:text/plain,${encodeURIComponent(easy)}`, '/VerbalPAtestInput_25pairs_hard1.txt': `data:text/plain,${encodeURIComponent(hard)}`, - '/VerbalPAtestInput.txt': `data:text/plain,${encodeURIComponent(defaultInput)}` + '/VerbalPAtestInput.txt': `data:text/plain,${encodeURIComponent(defaultInput)}`, + '/VerbalPAtestInput_25pairs_easy1_fr.txt': `data:text/plain,${encodeURIComponent(easyFr)}`, + '/VerbalPAtestInput_25pairs_hard1_fr.txt': `data:text/plain,${encodeURIComponent(hardFr)}`, + '/VerbalPAtestInput_fr.txt': `data:text/plain,${encodeURIComponent(defaultInputFr)}` }; export default defineInstrument({ kind: 'INTERACTIVE', - language: 'en', - tags: ['TestMyBrain'], + language: ['en', 'fr'], + tags: { + en: ['TestMyBrain'], + fr: ['TestMyBrain'] + }, internal: { edition: 1, name: 'TMB_VERBAL_PA_TEST' @@ -135,16 +231,28 @@ export default defineInstrument({ }, render, html, - staticAssets + staticAssets, + defaultFullscreen: true, + enableLanguageLock: true, + enableLanguageSelect: true }, clientDetails: { estimatedDuration: 1, - instructions: ['Instructions will be presented on screen in the task.'] + instructions: { + en: ['Instructions will be presented on screen in the task.'], + fr: ["Les instructions seront présentées à l'écran pendant la tâche."] + } }, details: { - description: 'The recall phase of a verbal memory test where participants retrieve previously learned word pairs.', + description: { + en: 'The recall phase of a verbal memory test where participants retrieve previously learned word pairs.', + fr: 'La phase de rappel d’un test de mémoire verbale où les participants récupèrent des paires de mots apprises précédemment.' + }, license: 'LGPL-3.0', - title: 'Verbal Paired Associates - Test' + title: { + en: 'Verbal Paired Associates - Test', + fr: 'Paires associées verbales — Test' + } }, measures: {}, validationSchema: z.object({ diff --git a/lib/interactive/TMB_VERBAL_PA_TEST/render.js b/lib/interactive/TMB_VERBAL_PA_TEST/render.js index 670fba2..b6e8663 100644 --- a/lib/interactive/TMB_VERBAL_PA_TEST/render.js +++ b/lib/interactive/TMB_VERBAL_PA_TEST/render.js @@ -1,7 +1,19 @@ // @ts-nocheck /* eslint-disable */ +import { translator } from './translator.ts'; + export function render(done) { + translator.init(); + + function tFormat(key, vars) { + var s = translator.t(key); + if (vars) { + for (var k in vars) s = s.replace(new RegExp('\\{' + k + '\\}', 'g'), vars[k]); + } + return s; + } + var testVersion; // version identifier for this test var wordPairs = []; // array of probe-target words var pairsCount = 0; // count of already seen word pairs @@ -71,16 +83,17 @@ export function render(done) { repeated = 1; showAlert( - 'The word pair you learned was:
    ' + + translator.t('feedback.pairYouLearned') + + '
    ' + "'" + frame.probe + ' - ' + frame.target + "'
    " + - "
    You should click '" + - frame.target + - "'.

    ", - 'Click here to retry', + '
    ' + + tFormat('feedback.clickTarget', { target: frame.target }) + + '

    ', + translator.t('buttons.clickRetry'), function () { showFrame('null'); nextTrial(); @@ -107,12 +120,11 @@ export function render(done) { repeated = 1; showAlert( - 'You are taking too long to respond.

    ' + - 'You should click the word
    ' + - "that goes with '" + - frame.probe + - "'.


    ", - 'Click here to retry', + translator.t('feedback.takingTooLong') + + '

    ' + + tFormat('feedback.clickGoesWith', { probe: frame.probe }) + + '

    ', + translator.t('buttons.clickRetry'), function () { showFrame('null'); nextTrial(); @@ -140,7 +152,7 @@ export function render(done) { if (frame.type === 'begin') showAlert( frame.message, - 'Click here for instructions', + translator.t('buttons.clickInstructions'), function () { showFrame('null'); nextTrial(); @@ -151,7 +163,7 @@ export function render(done) { else if (frame.type === 'message') showAlert( frame.message, - 'Click here to continue', + translator.t('buttons.clickContinue'), function () { showFrame('null'); nextTrial(); @@ -164,9 +176,10 @@ export function render(done) { function () { if (frame.type === 'test') { pairsCount++; - getID('counter').innerHTML = '' + pairsCount + ' of ' + wordPairs.length + ''; + getID('counter').innerHTML = + '' + pairsCount + ' ' + translator.t('counter.of') + ' ' + wordPairs.length + ''; } else { - getID('counter').innerHTML = 'Practice'; + getID('counter').innerHTML = '' + translator.t('counter.practice') + ''; } showFrame('counter'); }, @@ -258,22 +271,28 @@ export function render(done) { // messages testMessage = { - begin: '

    Remembering Words

    ' + 'SKY - GREEN

    ', + begin: '

    ' + translator.t('test.beginTitle') + '

    ' + translator.t('test.examplePair') + '

    ', instructions: [ - '

    Instructions:

    ' + - 'SKY - GREEN

    ' + - "Let's test your memory for the words
    " + - 'you learned a few minutes ago.

    ', - '

    Instructions:

    ' + - 'For practice, click the word
    ' + - 'that goes together with SKY.
    ' + - "(hint: it's GREEN!)

    ", - 'Excellent!

    ' + - 'You will be asked to recall all ' + - wordPairs.length + - ' pairs
    ' + - 'of words you saw previously.

    ' + - "Let's start!

    " + '

    ' + + translator.t('test.instructionsHeading') + + '

    ' + + translator.t('test.examplePair') + + '

    ' + + translator.t('test.testYourMemory') + + '

    ', + '

    ' + + translator.t('test.instructionsHeading') + + '

    ' + + translator.t('test.forPractice') + + '
    ' + + translator.t('test.hintGreen') + + '

    ', + translator.t('test.excellent') + + '

    ' + + tFormat('test.recallAll', { count: wordPairs.length }) + + '

    ' + + translator.t('test.letsStart') + + '

    ' ] }; @@ -289,13 +308,21 @@ export function render(done) { testMessage.instructions[2] ]; - // words to display - var frameProbe = ['', '', '', 'sky', '']; - var frameTarget = ['', '', '', 'green', '']; - var frameChoice1 = ['', '', '', 'pot', '']; - var frameChoice2 = ['', '', '', 'pan', '']; - var frameChoice3 = ['', '', '', 'green', '']; - var frameChoice4 = ['', '', '', 'dish', '']; + // words to display (practice pair is language-aware, matching the selected stimuli language) + var isFr = translator.resolvedLanguage === 'fr'; + var practiceProbe = isFr ? 'ciel' : 'sky'; + var practiceTarget = isFr ? 'vert' : 'green'; + var practiceChoice1 = isFr ? 'pot' : 'pot'; + var practiceChoice2 = isFr ? 'poêle' : 'pan'; + var practiceChoice3 = isFr ? 'vert' : 'green'; + var practiceChoice4 = isFr ? 'plat' : 'dish'; + + var frameProbe = ['', '', '', practiceProbe, '']; + var frameTarget = ['', '', '', practiceTarget, '']; + var frameChoice1 = ['', '', '', practiceChoice1, '']; + var frameChoice2 = ['', '', '', practiceChoice2, '']; + var frameChoice3 = ['', '', '', practiceChoice3, '']; + var frameChoice4 = ['', '', '', practiceChoice4, '']; // push all components into the frames chain for (i = 0; i < frameType.length; i++) { @@ -472,6 +499,11 @@ export function render(done) { disableDrag(); disableDoubleTapZoom(); + // when French is selected, load the French word-pair list + if (translator.resolvedLanguage === 'fr') { + inputFile = inputFile.replace(/\.txt$/, '_fr.txt'); + } + // read the input file and call the parser ajaxRequest({ url: inputFile, async: true, callback: parseFile }); })(); diff --git a/lib/interactive/TMB_VERBAL_PA_TEST/translator.ts b/lib/interactive/TMB_VERBAL_PA_TEST/translator.ts new file mode 100644 index 0000000..f2c166c --- /dev/null +++ b/lib/interactive/TMB_VERBAL_PA_TEST/translator.ts @@ -0,0 +1,86 @@ +import { Translator } from '/runtime/v1/@opendatacapture/runtime-core'; + +export const translator = new Translator({ + translations: { + buttons: { + clickContinue: { + en: 'Click here to continue', + fr: 'Cliquez ici pour continuer' + }, + clickInstructions: { + en: 'Click here for instructions', + fr: 'Cliquez ici pour les instructions' + }, + clickRetry: { + en: 'Click here to retry', + fr: 'Cliquez ici pour réessayer' + } + }, + counter: { + of: { + en: 'of', + fr: 'sur' + }, + practice: { + en: 'Practice', + fr: 'Entraînement' + } + }, + test: { + beginTitle: { + en: 'Remembering Words', + fr: 'Se souvenir des mots' + }, + examplePair: { + en: 'SKY - GREEN', + fr: 'CIEL - VERT' + }, + instructionsHeading: { + en: 'Instructions:', + fr: 'Instructions :' + }, + testYourMemory: { + en: "Let's test your memory for the words
    you learned a few minutes ago.", + fr: 'Testons votre mémoire des mots
    que vous avez appris il y a quelques minutes.' + }, + forPractice: { + en: 'For practice, click the word
    that goes together with SKY.', + fr: 'Pour vous entraîner, cliquez sur le mot
    qui va avec CIEL.' + }, + hintGreen: { + en: "(hint: it's GREEN!)", + fr: '(indice : c’est VERT !)' + }, + excellent: { + en: 'Excellent!', + fr: 'Excellent !' + }, + recallAll: { + en: 'You will be asked to recall all {count} pairs
    of words you saw previously.', + fr: 'On vous demandera de vous rappeler les {count} paires
    de mots vues précédemment.' + }, + letsStart: { + en: "Let's start!", + fr: 'Commençons !' + } + }, + feedback: { + pairYouLearned: { + en: 'The word pair you learned was:', + fr: 'La paire de mots que vous avez apprise était :' + }, + clickTarget: { + en: "You should click '{target}'.", + fr: 'Vous devez cliquer sur « {target} ».' + }, + takingTooLong: { + en: 'You are taking too long to respond.', + fr: 'Vous mettez trop de temps à répondre.' + }, + clickGoesWith: { + en: "You should click the word
    that goes with '{probe}'.", + fr: 'Vous devez cliquer sur le mot
    qui va avec « {probe} ».' + } + } + } +});