Separating Signal From Noise With ICA
Written by Luke Chang
In this tutorial we will use ICA to explore which signals in our imaging data might be real signal or artifacts. We cover ICA in more depth in the multivariate decomposition subsection of the connectivity tutorial and also using simulations in the ICA tutorial.
To run this tutorial, we will be working with data that has already been preprocessed. If you are in Psych60, this has already been done for you . If you reading this online, then I recommend reading the preprocessing tutorial , or downloading the data using the Download Data tutorial.
For a brief overview of types of artifacts that might be present in your data, I recommend watching this video by Tor Wager and Martin Lindquist.
VIDEO
Loading Data
Ok, let's load a subject and run an ICA to explore signals that are present. Since we have completed preprocessing, our data should be realigned and also normalized to MNI stereotactic space. We will use the nltools package to work with this data in python.
sub = 'S01'
data = BrainData ( localizer . get_file ( sub , 'derivatives' , 'bold' ))
More Preprocessing
Even though, we have technically already run most of the preprocessing there are a couple of more steps that will help make the ICA cleaner.
First, we will run a high pass filter to remove any low frequency scanner drift. We will pick a fairly arbitrary filter size of 0.0078hz (1/128s). We will also run spatial smoothing with a 6mm FWHM gaussian kernel to increase a signal to noise ratio at each voxel. These steps are very easy to run using nltools after the data has been loaded.
tr = localizer . get_tr ()
with mo . persistent_cache ( "ica_preprocess" ):
data_1 = data . filter ( sampling_freq = 1 / tr , high_pass = 1 / 128 )
data_1 = data_1 . smooth ( 6 )
Independent Component Analysis (ICA)
Ok, we are finally ready to run an ICA analysis on our data.
ICA attempts to perform blind source separation by decomposing a multivariate signal into additive subcomponents that are maximally independent.
We will be using the decompose() method on our BrainData instance. This runs the FastICA algorithm implemented by scikit-learn. You can choose whether you want to run spatial ICA by setting axis='voxels or temporal ICA by setting axis='images'. We also recommend running the whitening flat whiten=True. By default decompose will estimate the maximum components that are possible given the data. We recommend using a completely arbitrary heuristic of 20-30 components.
with mo . persistent_cache ( "ica_decompose" ):
# 10 components keeps the WASM-mode page snappy: the slider
# range stays small and ICA convergence in Pyodide is faster.
# Cranking back to 20-30 is one number-edit away if the reader
# wants more granularity.
# random_state pins FastICA so the components are identical across
# runs (the static build re-executes this notebook per slider value).
output = data_1 . decompose (
method = 'ica' , n_components = 10 , axis = 'images' , whiten = 'unit-variance' , random_state = 0
)
Viewing Components
We will use an interactive component viewer to explore the results of the analysis. Use the Component slider to select which component to view; the plot updates automatically as you move it.
Components have been standardized so we can threshold the brain in terms of standard deviations. We display voxels that load greater or less than 2 standard deviations on the component (a tighter or looser cutoff than 2.0 σ requires running this notebook in marimo edit).
The second plot is the time course of the voxels that load on the component. The x-axis is in TRs, which for this dataset is 2.4 sec.
The third plot is the powerspectrum of the timecourse. There is not a large range of possible values as we can only observe signals at the nyquist frequency, which is half of our sampling frequency of 1/2.4s (approximately 0.21hz) to a lower bound of 0.0078hz based on our high pass filter. There might be systematic oscillatory signals. Remember, that signals that oscillate a faster frequency than the nyquist frequency will be aliased. This includes physiological artifacts such as respiration and cardiac signals.
It is important to note that ICA cannot resolve the sign of the component. So make sure you consider signals that are positive as well as negative.
Exercises
For this tutorial, try to guess which components are signal and which are noise. Also, be sure to label the type of noise you think you might be seeing (e.g., head motion, scanner spikes, cardiac, respiration, etc.) Do this for subjects s01 and s02.
What features do you think are important to consider when making this judgment? Does the spatial map provide any useful information? What about the timecourse of the component? Does it map on to the plausible timecourse of the task.What about the power spectrum?
{"var_name":"component_slider","kind":"slider","values":[0,1,2,3,4,5,6,7,8,9],"default":0,"label":"Component"}
{"1":{"6":"\u003cdiv class=\"language-python highlight\"\u003e\u003cpre\u003e\u003cspan\u003e\u003c/span\u003e\u003ccode\u003e\u003cspan id=\"__span-0-1\"\u003e\u003ca id=\"__codelineno-0-1\" name=\"__codelineno-0-1\" href=\"#__codelineno-0-1\"\u003e\u003c/a\u003e\u003cspan class=\"n\"\u003esub\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;S01\u0026#39;\u003c/span\u003e\n\u003c/span\u003e\u003cspan id=\"__span-0-2\"\u003e\u003ca id=\"__codelineno-0-2\" name=\"__codelineno-0-2\" href=\"#__codelineno-0-2\"\u003e\u003c/a\u003e\u003cspan class=\"n\"\u003edata\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eBrainData\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003elocalizer\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eget_file\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003esub\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;derivatives\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;bold\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e))\u003c/span\u003e\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cpre class=\"marimo-book-output-text marimo-stream-stderr\"\u003eWarning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.\n\u003c/pre\u003e","12":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cmarimo-slider data-initial-value='1' data-label='\u0026quot;\u0026#92;u003cspan class=\u0026#92;\u0026quot;markdown prose dark:prose-invert contents\u0026#92;\u0026quot;\u0026#92;u003e\u0026#92;u003cspan class=\u0026#92;\u0026quot;paragraph\u0026#92;\u0026quot;\u0026#92;u003eComponent\u0026#92;u003c/span\u0026#92;u003e\u0026#92;u003c/span\u0026#92;u003e\u0026quot;' data-start='0' data-stop='9' data-step='1' data-steps='[]' data-debounce='false' data-disabled='false' data-orientation='\u0026quot;horizontal\u0026quot;' data-show-value='true' data-include-input='false' data-full-width='false'\u003e\u003c/marimo-slider\u003e\n\u003c/div\u003e","13":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cdiv style=\"display: flex;flex: 1;flex-direction: column;justify-content: flex-start;align-items: normal;flex-wrap: nowrap;gap: 0.5rem\"\u003e\u003cspan class=\"markdown prose dark:prose-invert contents\"\u003e\u003cspan class=\"paragraph\"\u003e\u003cstrong\u003eComponent 2 of 10\u003c/strong\u003e\u003c/span\u003e\u003c/span\u003e\u003cdiv class=\"marimo-book-anywidget\" data-buffers='[{\"path\": [\"atlas_bytes\"], \"empty\": true}, {\"path\": [\"bg_bytes\"], \"url\": \"assets/anywidget/c02b4524b0c54de882947847c0f613f75d3131c979be42145b19a46de3dece42.bin\", \"size\": 533672}, {\"path\": [\"statmap_bytes\"], \"url\": \"assets/anywidget/f04285c7d768e7fad1bbfe528229b1af798358d39c5987696469e28bc21e0d14.bin\", \"size\": 909893}]' data-initial-value='{\"_anywidget_id\": \"nltools.data.braindata.viewer._NiivueViewer\", \"_dom_classes\": [], \"_model_module\": \"anywidget\", \"_model_module_version\": \"~0.10.*\", \"_model_name\": \"AnyModel\", \"_view_count\": null, \"_view_module\": \"anywidget\", \"_view_module_version\": \"~0.10.*\", \"_view_name\": \"AnyView\", \"atlas_lut\": {}, \"atlas_name\": \"\", \"atlas_outline\": 0.0, \"cal_max\": 2.6512297725677483, \"cal_max_neg\": -2.0, \"cal_min\": 2.0, \"cal_min_neg\": -2.6512297725677483, \"colorbar\": true, \"controls\": true, \"height\": 600, \"layout\": \"IPY_MODEL_e284b96f25014870aed44fb5538ffb1a\", \"mirror_negative\": true, \"niivue_opts\": {}, \"slice_type\": \"MULTIPLANAR\", \"slider_bounds\": {\"min\": 0.07167084217071533, \"max\": 14.334168434143066, \"value_low\": 2.0, \"value_high\": 2.6512297725677483, \"step\": 0.07167084217071533}, \"statmap\": {\"name\": \"statmap\", \"colormap\": \"warm\", \"colormap_negative\": \"winter\", \"opacity\": 1.0}, \"tabbable\": null, \"tooltip\": null}' data-js-url='\"data:text/javascript;base64,Ly8gbmlpdnVlIHZpZXdlciBmb3IgQnJhaW5EYXRhLmlwbG90KCksIGRyaXZlbiB0aHJvdWdoIGFueXdpZGdldCdzICpzdGFuZGFyZCoKLy8gbW9kZWwgQVBJIChnZXQgLyBzZXQgLyBzYXZlX2NoYW5nZXMgLyBvbikgb25seSDigJQgbm8gaG9zdC1zcGVjaWZpYyBwcm90b2NvbAovLyAodGhlIGNvbnRyYXN0IHdpdGggaXB5bmlpdnVlLCBzZWUgY29zYW5sYWIvbmx0b29scyM0NTUpLCBzbyB0aGUgd2lkZ2V0IHdvcmtzCi8vIGlkZW50aWNhbGx5IGluIEp1cHl0ZXIgYW5kIGBtYXJpbW8gZWRpdGAuCi8vCi8vIG5paXZ1ZSBpdHNlbGYgaXMgcHVsbGVkIGZyb20gYSBDRE4gYXMgYW4gRVMgbW9kdWxlLiBgX2VzbWAgaXMgYW4gRVMgbW9kdWxlLCBzbwovLyBhIHRvcC1sZXZlbCBgaW1wb3J0YCBpcyByZXNvbHZlZCBieSB0aGUgYnJvd3NlciBhdCByZW5kZXIgdGltZS4gVGhlIHBpbiBrZWVwcwovLyB0aGUgQVBJIHN0YWJsZS4KaW1wb3J0IHsKICBOaWl2dWUsCiAgTlZJbWFnZSwKICBTTElDRV9UWVBFLAp9IGZyb20gImh0dHBzOi8vZXNtLnNoL0BuaWl2dWUvbmlpdnVlQDAuNjkuMCI7CgovLyBBIHRyYWl0bGV0cyBgQnl0ZXNgIHRyYWl0IGFycml2ZXMgaW4gSlMgYXMgYSBEYXRhVmlldyBvdmVyIGEgc2hhcmVkIGJ1ZmZlci4KLy8gbmlpdnVlIHdhbnRzIGEgc3RhbmRhbG9uZSBBcnJheUJ1ZmZlciwgc28gc2xpY2Ugb3V0IGV4YWN0bHkgdGhpcyB2aWV3J3MKLy8gd2luZG93LiBFbXB0eSBieXRlcyAoYW4gYWJzZW50IG9wdGlvbmFsIHZvbHVtZSkgeWllbGQgYG51bGxgLgpmdW5jdGlvbiBieXRlc1RvQXJyYXlCdWZmZXIoZHYpIHsKICBpZiAoIWR2IHx8IGR2LmJ5dGVMZW5ndGggPT09IDApIHJldHVybiBudWxsOwogIHJldHVybiBkdi5idWZmZXIuc2xpY2UoZHYuYnl0ZU9mZnNldCwgZHYuYnl0ZU9mZnNldCArIGR2LmJ5dGVMZW5ndGgpOwp9CgovLyBOVkltYWdlLm5ldyB0cmVhdHMgTmFOIGNhbF9taW4vY2FsX21heCBhcyAiYXV0byIgKHBlcmNlbnRpbGUtZGVyaXZlZCkuIEEgbnVsbAovLyB0cmFpdCAod2luZG93IGxlZnQgb24gYXV0bykgbWFwcyB0byBOYU47IGEgbnVtYmVyIHBhc3NlcyB0aHJvdWdoLgpmdW5jdGlvbiBvck5hTih4KSB7CiAgcmV0dXJuIHggPT09IG51bGwgfHwgeCA9PT0gdW5kZWZpbmVkID8gTmFOIDogeDsKfQoKLy8gQSB0cmFpdCBvciBzbGlkZXIgdmFsdWUgdGhhdCBpcyByZWFsbHkgYSBudW1iZXIgKGEgbnVsbC91bmRlZmluZWQgdHJhaXQgb3IgYQovLyBOYU4gcGFyc2UgbWVhbnMgImxlYXZlIHRoaXMgZWRnZSBhbG9uZSIpLgpmdW5jdGlvbiBpc051bWJlcih4KSB7CiAgcmV0dXJuIHggIT09IG51bGwgJiYgeCAhPT0gdW5kZWZpbmVkICYmICFOdW1iZXIuaXNOYU4oeCk7Cn0KCmZ1bmN0aW9uIGZvcm1hdFZhbHVlKHZhbHVlKSB7CiAgY29uc3QgbnVtYmVyID0gTnVtYmVyKHZhbHVlKTsKICBpZiAoIU51bWJlci5pc0Zpbml0ZShudW1iZXIpKSByZXR1cm4gIuKAlCI7CiAgcmV0dXJuIE51bWJlci5wYXJzZUZsb2F0KG51bWJlci50b1ByZWNpc2lvbig0KSkudG9TdHJpbmcoKTsKfQoKZXhwb3J0IGRlZmF1bHQgewogIGFzeW5jIHJlbmRlcih7IG1vZGVsLCBlbCB9KSB7CiAgICBlbC5zdHlsZS53aWR0aCA9ICIxMDAlIjsKCiAgICAvLyAtLS0gRE9NOiBvcHRpb25hbCB0aHJlc2hvbGQgY29udHJvbHMgKyB0aGUgV2ViR0wgY2FudmFzIC0tLS0tLS0tLS0tLS0tIC8vCiAgICBsZXQgZmxvb3JJbnB1dCA9IG51bGw7CiAgICBsZXQgY2VpbElucHV0ID0gbnVsbDsKICAgIGxldCBmbG9vclZhbHVlID0gbnVsbDsKICAgIGxldCBjZWlsVmFsdWUgPSBudWxsOwogICAgY29uc3QgYm91bmRzID0gbW9kZWwuZ2V0KCJzbGlkZXJfYm91bmRzIikgfHwge307CiAgICAvLyBUaGUgd2luZG93IGlzIGEgbWFnbml0dWRlIHdpbmRvdyBtaXJyb3JlZCBvbnRvIHRoZSBuZWdhdGl2ZSBsaW1iLCBhbmQgYQogICAgLy8gZmxvb3Igb2YgemVybyAob3IgYmVsb3cpIGFkbWl0cyBldmVyeSB6ZXJvLXZhbHVlZCB2b3hlbCDigJQgdGhlIHdob2xlCiAgICAvLyB2b2x1bWUgYm94IG91dHNpZGUgdGhlIG1hc2sgcGFpbnRzIGluIHRoZSBuZWdhdGl2ZSBjb2xvcm1hcC4gTmV2ZXIgbGV0CiAgICAvLyB0aGUgYXBwbGllZCBmbG9vciByZWFjaCB6ZXJvLCB3aGF0ZXZlciB0aGUgc2xpZGVyIG9yIHRoZSBtb2RlbCBzYXlzLgogICAgLy8KICAgIC8vIFRoZSBlcHNpbG9uIGlzIHRoZSBzbGlkZXIncyBvd24gbG93ZXIgYm91bmQsIHdoaWNoIFB5dGhvbiBndWFyYW50ZWVzIGlzCiAgICAvLyBzdHJpY3RseSBwb3NpdGl2ZSBhbmQgYXQgb3IgYmVsb3cgdGhlIHJlc29sdmVkIGBjYWxfbWluYC4gRGVyaXZpbmcgaXQKICAgIC8vIGhlcmUgaW5zdGVhZCAoZnJvbSB0aGUgc3RlcCwgc2F5KSB3b3VsZCBsZXQgdGhlIHR3byBkcmlmdCBhcGFydCBhbmQKICAgIC8vIHJhaXNlIHRoZSByZW5kZXJlZCBmbG9vciBhYm92ZSB0aGUgd2luZG93IFB5dGhvbiByZXNvbHZlZC4KICAgIGNvbnN0IGZsb29yRXBzID0gTnVtYmVyKGJvdW5kcy5taW4pID4gMCA/IE51bWJlcihib3VuZHMubWluKSA6IDFlLTk7CiAgICBjb25zdCBjbGFtcEZsb29yID0gKHYpID0+IE1hdGgubWF4KE1hdGguYWJzKHYpLCBmbG9vckVwcyk7CgogICAgaWYgKG1vZGVsLmdldCgiY29udHJvbHMiKSkgewogICAgICBjb25zdCBjb250cm9scyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICBjb250cm9scy5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAiZGlzcGxheTpmbGV4O2dhcDowLjc1cmVtO2FsaWduLWl0ZW1zOmNlbnRlcjtmb250OjEycHgvMS40IHN5c3RlbS11aSwiICsKICAgICAgICAic2Fucy1zZXJpZjtwYWRkaW5nOjRweCAycHg7ZmxleC13cmFwOndyYXAiOwoKICAgICAgY29uc3QgbWtSYW5nZSA9IChsYWJlbFRleHQsIHZhbHVlKSA9PiB7CiAgICAgICAgY29uc3Qgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7CiAgICAgICAgd3JhcC5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAgICJkaXNwbGF5OmZsZXg7Z2FwOjAuNHJlbTthbGlnbi1pdGVtczpjZW50ZXI7ZmxleDoxIDEgMjAwcHgiOwogICAgICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgc3Bhbi50ZXh0Q29udGVudCA9IGxhYmVsVGV4dDsKICAgICAgICBjb25zdCBsb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgbG93LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoYm91bmRzLm1pbiA/PyAwKTsKICAgICAgICBjb25zdCBoaWdoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgIGhpZ2gudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShib3VuZHMubWF4ID8/IDEpOwogICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgICAgICBpbnB1dC50eXBlID0gInJhbmdlIjsKICAgICAgICBpbnB1dC5taW4gPSBib3VuZHMubWluID8/IDA7CiAgICAgICAgaW5wdXQubWF4ID0gYm91bmRzLm1heCA/PyAxOwogICAgICAgIGlucHV0LnN0ZXAgPSBib3VuZHMuc3RlcCA/PyAwLjAxOwogICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUgPz8gYm91bmRzLm1pbiA/PyAwOwogICAgICAgIGlucHV0LnN0eWxlLmZsZXggPSAiMSI7CiAgICAgICAgY29uc3Qgb3V0cHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3V0cHV0Iik7CiAgICAgICAgb3V0cHV0LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaW5wdXQudmFsdWUpOwogICAgICAgIG91dHB1dC5zdHlsZS5jc3NUZXh0ID0gIm1pbi13aWR0aDo2Y2g7dGV4dC1hbGlnbjpyaWdodDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXMiOwogICAgICAgIHdyYXAuYXBwZW5kKHNwYW4sIGxvdywgaW5wdXQsIGhpZ2gsIG91dHB1dCk7CiAgICAgICAgY29udHJvbHMuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICAgICAgcmV0dXJuIFtpbnB1dCwgb3V0cHV0XTsKICAgICAgfTsKCiAgICAgIFtmbG9vcklucHV0LCBmbG9vclZhbHVlXSA9IG1rUmFuZ2UoIm1pbiIsIGJvdW5kcy52YWx1ZV9sb3cpOwogICAgICBbY2VpbElucHV0LCBjZWlsVmFsdWVdID0gbWtSYW5nZSgibWF4IiwgYm91bmRzLnZhbHVlX2hpZ2gpOwogICAgICBlbC5hcHBlbmRDaGlsZChjb250cm9scyk7CiAgICB9CgogICAgY29uc3QgaGVpZ2h0ID0gbW9kZWwuZ2V0KCJoZWlnaHQiKSB8fCA0MDA7CiAgICAvLyBuaWl2dWUncyByZXNpemUgb2JzZXJ2ZXIgc2l6ZXMgdGhlIGNhbnZhcyBmcm9tIGl0cyAqcGFyZW50KiBhbmQgcmV3cml0ZXMKICAgIC8vIHRoZSBjYW52YXMncyBvd24gaW5saW5lIGhlaWdodCB0byAxMDAlLCBzbyB0aGUgcmVxdWVzdGVkIGhlaWdodCBoYXMgdG8KICAgIC8vIGxpdmUgb24gYSB3cmFwcGVyLiBXaXRob3V0IGl0IHRoZSB2aWV3ZXIgY29sbGFwc2VzIHRvIHRoZSBwYXJlbnQncwogICAgLy8gbmF0dXJhbCBoZWlnaHQgKH4xNTBweCkgaW4gYW55IGhvc3QgdGhhdCBkb2Vzbid0IHNpemUgdGhlIHdpZGdldCBmb3IKICAgIC8vIHVzIOKAlCBzdGF0aWMvZXhwb3J0ZWQgcGFnZXMsIGlmcmFtZXMsIHBsYWluIEp1cHl0ZXIgb3V0cHV0IGFyZWFzLgogICAgY29uc3QgY2FudmFzV3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgY2FudmFzV3JhcC5zdHlsZS5jc3NUZXh0ID0gYHdpZHRoOjEwMCU7aGVpZ2h0OiR7aGVpZ2h0fXB4YDsKICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogICAgY2FudmFzLnN0eWxlLmNzc1RleHQgPSAid2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtkaXNwbGF5OmJsb2NrIjsKICAgIGNhbnZhc1dyYXAuYXBwZW5kQ2hpbGQoY2FudmFzKTsKICAgIGVsLmFwcGVuZENoaWxkKGNhbnZhc1dyYXApOwoKICAgIC8vIC0tLSBuaWl2dWUgaW5zdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vCiAgICBjb25zdCBudiA9IG5ldyBOaWl2dWUoewogICAgICBpc0NvbG9yYmFyOiBtb2RlbC5nZXQoImNvbG9yYmFyIiksCiAgICAgIC4uLihtb2RlbC5nZXQoIm5paXZ1ZV9vcHRzIikgfHwge30pLAogICAgfSk7CiAgICBhd2FpdCBudi5hdHRhY2hUb0NhbnZhcyhjYW52YXMpOwoKICAgIC8vIEluZGV4IG9mIHRoZSBzdGF0IG1hcCBpbnNpZGUgbnYudm9sdW1lcyAoc2V0IGJ5IGxvYWRTdGFjayk7IHRoZSB0aHJlc2hvbGQKICAgIC8vIGNvbnRyb2xzIGRyaXZlIHRoaXMgdm9sdW1lJ3Mgd2luZG93LgogICAgbGV0IHN0YXRtYXBJZHggPSAtMTsKCiAgICAvLyBCdWlsZCB0aGUgdm9sdW1lIHN0YWNrIFtiYWNrZ3JvdW5kPywgc3RhdG1hcCwgYXRsYXM/XSBmcm9tIHRoZSBieXRlCiAgICAvLyB0cmFpdHMgKyBkaXNwbGF5IHBhcmFtcy4gUmVidWlsdCB3aGVuZXZlciBhbnkgdm9sdW1lJ3MgYnl0ZXMgY2hhbmdlLgogICAgYXN5bmMgZnVuY3Rpb24gbG9hZFN0YWNrKCkgewogICAgICB3aGlsZSAobnYudm9sdW1lcy5sZW5ndGgpIG52LnJlbW92ZVZvbHVtZUJ5SW5kZXgoMCk7CiAgICAgIHN0YXRtYXBJZHggPSAtMTsKCiAgICAgIGNvbnN0IGJnID0gYnl0ZXNUb0FycmF5QnVmZmVyKG1vZGVsLmdldCgiYmdfYnl0ZXMiKSk7CiAgICAgIGlmIChiZykgewogICAgICAgIGNvbnN0IGJnVm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoYmcsICJiYWNrZ3JvdW5kLm5paS5neiIsICJncmF5Iik7CiAgICAgICAgYmdWb2wuY29sb3JiYXJWaXNpYmxlID0gZmFsc2U7CiAgICAgICAgbnYuYWRkVm9sdW1lKGJnVm9sKTsKICAgICAgfQoKICAgICAgY29uc3Qgc3RhdCA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoInN0YXRtYXBfYnl0ZXMiKSk7CiAgICAgIGlmIChzdGF0KSB7CiAgICAgICAgY29uc3QgcCA9IG1vZGVsLmdldCgic3RhdG1hcCIpIHx8IHt9OwogICAgICAgIGNvbnN0IHZvbCA9IGF3YWl0IE5WSW1hZ2UubmV3KAogICAgICAgICAgc3RhdCwKICAgICAgICAgIChwLm5hbWUgfHwgInN0YXRtYXAiKSArICIubmlpLmd6IiwKICAgICAgICAgIHAuY29sb3JtYXAgfHwgIndhcm0iLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICAgIG51bGwsCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9taW4iKSksCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9tYXgiKSksCiAgICAgICAgKTsKICAgICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKHZvbC5jYWxfbWluKSkgdm9sLmNhbF9taW4gPSBjbGFtcEZsb29yKHZvbC5jYWxfbWluKTsKICAgICAgICBpZiAocC5jb2xvcm1hcF9uZWdhdGl2ZSkgdm9sLmNvbG9ybWFwTmVnYXRpdmUgPSBwLmNvbG9ybWFwX25lZ2F0aXZlOwogICAgICAgIHZvbC5jYWxfbWluTmVnID0gb3JOYU4obW9kZWwuZ2V0KCJjYWxfbWluX25lZyIpKTsKICAgICAgICB2b2wuY2FsX21heE5lZyA9IG9yTmFOKG1vZGVsLmdldCgiY2FsX21heF9uZWciKSk7CiAgICAgICAgdm9sLmNvbG9yYmFyVmlzaWJsZSA9IHRydWU7CiAgICAgICAgc3RhdG1hcElkeCA9IG52LnZvbHVtZXMubGVuZ3RoOwogICAgICAgIG52LmFkZFZvbHVtZSh2b2wpOwogICAgICB9CgogICAgICBjb25zdCBhdGxhcyA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoImF0bGFzX2J5dGVzIikpOwogICAgICBpZiAoYXRsYXMpIHsKICAgICAgICBjb25zdCBwID0gbW9kZWwuZ2V0KCJzdGF0bWFwIikgfHwge307CiAgICAgICAgY29uc3Qgdm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoCiAgICAgICAgICBhdGxhcywKICAgICAgICAgIChtb2RlbC5nZXQoImF0bGFzX25hbWUiKSB8fCAiYXRsYXMiKSArICIubmlpLmd6IiwKICAgICAgICAgICIiLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICApOwogICAgICAgIGNvbnN0IGx1dCA9IG1vZGVsLmdldCgiYXRsYXNfbHV0Iik7CiAgICAgICAgaWYgKGx1dCAmJiBsdXQubGFiZWxzKSB2b2wuc2V0Q29sb3JtYXBMYWJlbChsdXQpOwogICAgICAgIHZvbC5jb2xvcmJhclZpc2libGUgPSBmYWxzZTsKICAgICAgICBudi5hZGRWb2x1bWUodm9sKTsKICAgICAgfQoKICAgICAgbnYub3B0cy5hdGxhc091dGxpbmUgPSBtb2RlbC5nZXQoImF0bGFzX291dGxpbmUiKSB8fCAwOwogICAgICBudi51cGRhdGVHTFZvbHVtZSgpOwogICAgfQoKICAgIGF3YWl0IGxvYWRTdGFjaygpOwogICAgbnYuc2V0U2xpY2VUeXBlKFNMSUNFX1RZUEVbbW9kZWwuZ2V0KCJzbGljZV90eXBlIildID8/IFNMSUNFX1RZUEUuTVVMVElQTEFOQVIpOwoKICAgIC8vIC0tLSB0aHJlc2hvbGQgY29udHJvbHMgLT4gbmlpdnVlICsgUHl0aG9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy8KICAgIC8vIEFwcGxpZXMgdGhlIGNsYW1wZWQgd2luZG93IHRvIG5paXZ1ZSBhbmQgcmV0dXJucyBpdCwgc28gdGhlIGNhbGxlcnMgdGhhdAogICAgLy8gd3JpdGUgYmFjayB0byBQeXRob24gc2VuZCB3aGF0IHdhcyByZW5kZXJlZCByYXRoZXIgdGhhbiB3aGF0IHdhcyBkcmFnZ2VkLgogICAgZnVuY3Rpb24gYXBwbHlXaW5kb3coKSB7CiAgICAgIGlmIChzdGF0bWFwSWR4IDwgMCkgcmV0dXJuIG51bGw7CiAgICAgIGNvbnN0IHZvbCA9IG52LnZvbHVtZXNbc3RhdG1hcElkeF07CiAgICAgIGNvbnN0IGxvUmF3ID0gZmxvb3JJbnB1dCA/IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9taW4iKTsKICAgICAgY29uc3QgaGlSYXcgPSBjZWlsSW5wdXQgPyBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9tYXgiKTsKICAgICAgLy8gQm90aCBlZGdlcyBhcmUgbWFnbml0dWRlczogdGhlIGZsb29yIHN0YXlzIGFib3ZlIHplcm8gYW5kIHRoZSBjZWlsaW5nCiAgICAgIC8vIHN0YXlzIGFib3ZlIHRoZSBmbG9vci4KICAgICAgY29uc3QgbG8gPSBpc051bWJlcihsb1JhdykgPyBjbGFtcEZsb29yKGxvUmF3KSA6IG51bGw7CiAgICAgIGNvbnN0IGZsb29yID0gbG8gPT09IG51bGwgPyB2b2wuY2FsX21pbiA6IGxvOwogICAgICBjb25zdCBoaSA9IGlzTnVtYmVyKGhpUmF3KQogICAgICAgID8gTWF0aC5tYXgoTWF0aC5hYnMoaGlSYXcpLCBmbG9vciArIGZsb29yRXBzKQogICAgICAgIDogbnVsbDsKICAgICAgaWYgKGxvICE9PSBudWxsKSB2b2wuY2FsX21pbiA9IGxvOwogICAgICBpZiAoaGkgIT09IG51bGwpIHZvbC5jYWxfbWF4ID0gaGk7CiAgICAgIGlmIChtb2RlbC5nZXQoIm1pcnJvcl9uZWdhdGl2ZSIpKSB7CiAgICAgICAgaWYgKGhpICE9PSBudWxsKSB2b2wuY2FsX21pbk5lZyA9IC1oaTsKICAgICAgICBpZiAobG8gIT09IG51bGwpIHZvbC5jYWxfbWF4TmVnID0gLWxvOwogICAgICB9IGVsc2UgaWYgKGxvICE9PSBudWxsKSB7CiAgICAgICAgdm9sLmNhbF9tYXhOZWcgPSAtbG87CiAgICAgIH0KICAgICAgbnYudXBkYXRlR0xWb2x1bWUoKTsKICAgICAgcmV0dXJuIHsgbG8sIGhpIH07CiAgICB9CgogICAgaWYgKGZsb29ySW5wdXQpIHsKICAgICAgZmxvb3JJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsICgpID0+IHsKICAgICAgICBjb25zdCBhcHBsaWVkID0gYXBwbHlXaW5kb3coKTsKICAgICAgICBjb25zdCBsbyA9IGFwcGxpZWQgJiYgYXBwbGllZC5sbyAhPT0gbnVsbAogICAgICAgICAgPyBhcHBsaWVkLmxvCiAgICAgICAgICA6IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgICAgZmxvb3JWYWx1ZS50ZXh0Q29udGVudCA9IGZvcm1hdFZhbHVlKGxvKTsKICAgICAgICBtb2RlbC5zZXQoImNhbF9taW4iLCBsbyk7CiAgICAgICAgbW9kZWwuc2F2ZV9jaGFuZ2VzKCk7CiAgICAgIH0pOwogICAgfQogICAgaWYgKGNlaWxJbnB1dCkgewogICAgICBjZWlsSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCAoKSA9PiB7CiAgICAgICAgY29uc3QgYXBwbGllZCA9IGFwcGx5V2luZG93KCk7CiAgICAgICAgY29uc3QgaGkgPSBhcHBsaWVkICYmIGFwcGxpZWQuaGkgIT09IG51bGwKICAgICAgICAgID8gYXBwbGllZC5oaQogICAgICAgICAgOiBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSk7CiAgICAgICAgY2VpbFZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaGkpOwogICAgICAgIG1vZGVsLnNldCgiY2FsX21heCIsIGhpKTsKICAgICAgICBtb2RlbC5zYXZlX2NoYW5nZXMoKTsKICAgICAgfSk7CiAgICB9CgogICAgLy8gLS0tIFB5dGhvbiAtPiBKUyByZWFjdGl2aXR5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvLwogICAgY29uc3Qgb25CeXRlcyA9ICgpID0+IGxvYWRTdGFjaygpOwogICAgbW9kZWwub24oImNoYW5nZTpzdGF0bWFwX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmJnX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmF0bGFzX2J5dGVzIiwgb25CeXRlcyk7CgogICAgbW9kZWwub24oImNoYW5nZTpjYWxfbWluIiwgKCkgPT4gewogICAgICBpZiAoZmxvb3JJbnB1dCkgZmxvb3JJbnB1dC52YWx1ZSA9IG1vZGVsLmdldCgiY2FsX21pbiIpID8/IGZsb29ySW5wdXQudmFsdWU7CiAgICAgIGlmIChmbG9vclZhbHVlKSBmbG9vclZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgIGFwcGx5V2luZG93KCk7CiAgICB9KTsKICAgIG1vZGVsLm9uKCJjaGFuZ2U6Y2FsX21heCIsICgpID0+IHsKICAgICAgaWYgKGNlaWxJbnB1dCkgY2VpbElucHV0LnZhbHVlID0gbW9kZWwuZ2V0KCJjYWxfbWF4IikgPz8gY2VpbElucHV0LnZhbHVlOwogICAgICBpZiAoY2VpbFZhbHVlKSBjZWlsVmFsdWUudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShjZWlsSW5wdXQudmFsdWUpOwogICAgICBhcHBseVdpbmRvdygpOwogICAgfSk7CiAgICBtb2RlbC5vbigiY2hhbmdlOnNsaWNlX3R5cGUiLCAoKSA9PgogICAgICBudi5zZXRTbGljZVR5cGUoU0xJQ0VfVFlQRVttb2RlbC5nZXQoInNsaWNlX3R5cGUiKV0gPz8gU0xJQ0VfVFlQRS5NVUxUSVBMQU5BUiksCiAgICApOwogICAgbW9kZWwub24oImNoYW5nZTpjb2xvcmJhciIsICgpID0+IHsKICAgICAgbnYub3B0cy5pc0NvbG9yYmFyID0gbW9kZWwuZ2V0KCJjb2xvcmJhciIpOwogICAgICBudi5kcmF3U2NlbmUoKTsKICAgIH0pOwogICAgbW9kZWwub24oImNoYW5nZTphdGxhc19vdXRsaW5lIiwgKCkgPT4gewogICAgICBudi5vcHRzLmF0bGFzT3V0bGluZSA9IG1vZGVsLmdldCgiYXRsYXNfb3V0bGluZSIpIHx8IDA7CiAgICAgIG52LmRyYXdTY2VuZSgpOwogICAgfSk7CgogICAgLy8gbmlpdnVlIGhhcyBubyBkZXN0cm95KCk7IGRyb3AgdGhlIFdlYkdMIGNvbnRleHQgb24gdGVhcmRvd24gLyByZS1yZW5kZXIKICAgIC8vIHNvIHJlcGVhdGVkIGNlbGwgcnVucyBkb24ndCBsZWFrIEdMIGNvbnRleHRzIChicm93c2VycyBjYXAgdGhlbSkuCiAgICByZXR1cm4gKCkgPT4gewogICAgICBjYW52YXMKICAgICAgICAuZ2V0Q29udGV4dCgid2ViZ2wyIikKICAgICAgICA/LmdldEV4dGVuc2lvbigiV0VCR0xfbG9zZV9jb250ZXh0IikKICAgICAgICA/Lmxvc2VDb250ZXh0KCk7CiAgICB9OwogIH0sCn07Cg==\"' data-label=\"null\" data-model-id='\"7af8d0e6bb85457a825a12c8e834c842\"'\u003e\u003c/div\u003e\u003cdiv class=\"marimo-book-plotly\" data-config=\"{}\" data-figure='{\"data\":[{\"hovertemplate\":\"TR: %{x}\\u003cbr\\u003eIntensity: %{y:.4f}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#EF553B\",\"width\":2},\"mode\":\"lines\",\"name\":\"Timecourse\",\"x\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127],\"y\":{\"dtype\":\"f4\",\"bdata\":\"AAhMOaBHkLtTPCC7lZtzu3nSILsJJ0u7I28yu/kQpbvd/7C7dWVfu9dTZruMGrC6RwClOuX3ObkHETK6YbNjuvAmgTpUm5E6jB8HujPf7jjAFZu62G2fuIh3rTnrExI7cvcAuo0rIjg6STy5RPiuOlD9Mjs+O5Q7RgRFOwaf37m1tyk6KgSxuEAwNTrigKq6QKspu0tcmbot/oO6FikZOrNDfLZBftq3Dhs7O4F0MTpenjI6ckH7OnME5Trhh0e6dk5XuaROzTk7oPM5Us0oukco4LnXZxi7owOYugoMKbkyYH06i7h9OjbZlrqQU7G6zaY7u8Rpo7q0QcK6+uW3uLO5IjpXbWE64pflOkUWJzrMqmA6mkakufExKLoSg+66keHrN4ZdJbvrr3s5RfacOihobDunOqY65mA5uspJBLp9pds6P8uGOsciZ7n4O+G6GaP6uR8rqLpTWQu66MAJu/N6Ezk186w6JN6FOpDqBzvnfhO63egtOu5uD7s090m6yFQKOuMBAjsX05I6xJoFO3Cfkjkhw9g6SnLBOV5e9jnAIJq732cMuzhjAruXkZK61ciFOq9nYDgyMou6i4hGu7ornjr6Q5m5sLozO5pn2DrflAo32c6FOphypbqfgLI6w9tXumS4vjrpBh855G1Quo8oBDr+XwQ7GdY8O9Bz3jg=\"},\"type\":\"scatter\",\"xaxis\":\"x\",\"yaxis\":\"y\"},{\"hovertemplate\":\"Freq: %{x:.4f} Hz\\u003cbr\\u003ePower: %{y:.4e}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#636EFA\",\"width\":2},\"mode\":\"lines\",\"name\":\"Power\",\"x\":{\"dtype\":\"f8\",\"bdata\":\"q6qqqqqqaj+rqqqqqqp6PwAAAAAAAIQ/q6qqqqqqij+rqqqqqqqQPwAAAAAAAJQ/VlVVVVVVlz+rqqqqqqqaPwAAAAAAAJ4/q6qqqqqqoD9WVVVVVVWiPwAAAAAAAKQ/q6qqqqqqpT9WVVVVVVWnPwAAAAAAAKk/q6qqqqqqqj9WVVVVVVWsPwAAAAAAAK4/q6qqqqqqrz+rqqqqqqqwPwAAAAAAgLE/VlVVVVVVsj+rqqqqqiqzPwAAAAAAALQ/VlVVVVXVtD+rqqqqqqq1PwAAAAAAgLY/VlVVVVVVtz+rqqqqqiq4PwAAAAAAALk/VlVVVVXVuT+rqqqqqqq6PwAAAAAAgLs/VlVVVVVVvD+rqqqqqiq9PwAAAAAAAL4/VlVVVVXVvj+rqqqqqqq/PwAAAAAAQMA/q6qqqqqqwD9WVVVVVRXBPwAAAAAAgME/q6qqqqrqwT9WVVVVVVXCPwAAAAAAwMI/q6qqqqoqwz9WVVVVVZXDPwAAAAAAAMQ/q6qqqqpqxD9WVVVVVdXEPwAAAAAAQMU/q6qqqqqqxT9WVVVVVRXGPwAAAAAAgMY/q6qqqqrqxj9WVVVVVVXHPwAAAAAAwMc/q6qqqqoqyD9WVVVVVZXIPwAAAAAAAMk/q6qqqqpqyT9WVVVVVdXJPwAAAAAAQMo/\"},\"y\":{\"dtype\":\"f4\",\"bdata\":\"KzAWOh1hzjob/PI68x2qOoM4Nzt+BAg57Q6KOeBB9jqoD5c6JzUZOjHtxzq9d5w5pzxFOdizHTZGQck6iAajOYfZnTh/ECM5TYh7N2fzjDrg7Dc69hN8OkJxMTk6KRw6pZMROcVP7Tg/5+A4jr0+OdYrWDg/8Kw5LoCnOGh7KzlpjiU4g1IHOWLkAjjJbiA43y+ON0LA4zirsmI5LxhsOS8/gjg5+bc4rhEbNyOABzYa4DY5LPbBNxo5sDbM8YQ4RXzvNmEUjzjs3qw4lra/OAAPEDkBy2o4QXH1Oa3nvTmP05g5D+uPOUnaLzlkeYM5nn2lObBzhjkryDw4\"},\"type\":\"scatter\",\"xaxis\":\"x2\",\"yaxis\":\"y2\"}],\"layout\":{\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermap\":[{\"type\":\"scattermap\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,0.41000000000000003],\"title\":{\"text\":\"TR\"}},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Intensity (AU)\"}},\"xaxis2\":{\"anchor\":\"y2\",\"domain\":[0.5900000000000001,1.0],\"title\":{\"text\":\"Frequency (Hz)\"}},\"yaxis2\":{\"anchor\":\"x2\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Power\"}},\"annotations\":[{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Timecourse (TR=2.4s)\",\"x\":0.20500000000000002,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"},{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Power Spectrum\",\"x\":0.795,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"}],\"margin\":{\"t\":40,\"b\":50,\"l\":70,\"r\":30},\"height\":280,\"showlegend\":false,\"dragmode\":\"zoom\"}}'\u003e\u003c/div\u003e\u003c/div\u003e\n\u003c/div\u003e"},"2":{"6":"\u003cdiv class=\"language-python highlight\"\u003e\u003cpre\u003e\u003cspan\u003e\u003c/span\u003e\u003ccode\u003e\u003cspan id=\"__span-0-1\"\u003e\u003ca id=\"__codelineno-0-1\" name=\"__codelineno-0-1\" href=\"#__codelineno-0-1\"\u003e\u003c/a\u003e\u003cspan class=\"n\"\u003esub\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;S01\u0026#39;\u003c/span\u003e\n\u003c/span\u003e\u003cspan id=\"__span-0-2\"\u003e\u003ca id=\"__codelineno-0-2\" name=\"__codelineno-0-2\" href=\"#__codelineno-0-2\"\u003e\u003c/a\u003e\u003cspan class=\"n\"\u003edata\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eBrainData\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003elocalizer\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eget_file\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003esub\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;derivatives\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;bold\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e))\u003c/span\u003e\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cpre class=\"marimo-book-output-text marimo-stream-stderr\"\u003eWarning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.\n\u003c/pre\u003e","12":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cmarimo-slider data-initial-value='2' data-label='\u0026quot;\u0026#92;u003cspan class=\u0026#92;\u0026quot;markdown prose dark:prose-invert contents\u0026#92;\u0026quot;\u0026#92;u003e\u0026#92;u003cspan class=\u0026#92;\u0026quot;paragraph\u0026#92;\u0026quot;\u0026#92;u003eComponent\u0026#92;u003c/span\u0026#92;u003e\u0026#92;u003c/span\u0026#92;u003e\u0026quot;' data-start='0' data-stop='9' data-step='1' data-steps='[]' data-debounce='false' data-disabled='false' data-orientation='\u0026quot;horizontal\u0026quot;' data-show-value='true' data-include-input='false' data-full-width='false'\u003e\u003c/marimo-slider\u003e\n\u003c/div\u003e","13":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cdiv style=\"display: flex;flex: 1;flex-direction: column;justify-content: flex-start;align-items: normal;flex-wrap: nowrap;gap: 0.5rem\"\u003e\u003cspan class=\"markdown prose dark:prose-invert contents\"\u003e\u003cspan class=\"paragraph\"\u003e\u003cstrong\u003eComponent 3 of 10\u003c/strong\u003e\u003c/span\u003e\u003c/span\u003e\u003cdiv class=\"marimo-book-anywidget\" data-buffers='[{\"path\": [\"atlas_bytes\"], \"empty\": true}, {\"path\": [\"bg_bytes\"], \"url\": \"assets/anywidget/c02b4524b0c54de882947847c0f613f75d3131c979be42145b19a46de3dece42.bin\", \"size\": 533672}, {\"path\": [\"statmap_bytes\"], \"url\": \"assets/anywidget/3dede95f6401928c61982e0a772a2f3faf2e35216219e98a8fe7a1d454a6e468.bin\", \"size\": 910793}]' data-initial-value='{\"_anywidget_id\": \"nltools.data.braindata.viewer._NiivueViewer\", \"_dom_classes\": [], \"_model_module\": \"anywidget\", \"_model_module_version\": \"~0.10.*\", \"_model_name\": \"AnyModel\", \"_view_count\": null, \"_view_module\": \"anywidget\", \"_view_module_version\": \"~0.10.*\", \"_view_name\": \"AnyView\", \"atlas_lut\": {}, \"atlas_name\": \"\", \"atlas_outline\": 0.0, \"cal_max\": 2.113543262481689, \"cal_max_neg\": -2.0, \"cal_min\": 2.0, \"cal_min_neg\": -2.113543262481689, \"colorbar\": true, \"controls\": true, \"height\": 600, \"layout\": \"IPY_MODEL_a9ee50a5f22b46c79a75d40acccc37f6\", \"mirror_negative\": true, \"niivue_opts\": {}, \"slice_type\": \"MULTIPLANAR\", \"slider_bounds\": {\"min\": 0.1956351089477539, \"max\": 39.12702178955078, \"value_low\": 2.0, \"value_high\": 2.113543262481689, \"step\": 0.1956351089477539}, \"statmap\": {\"name\": \"statmap\", \"colormap\": \"warm\", \"colormap_negative\": \"winter\", \"opacity\": 1.0}, \"tabbable\": null, \"tooltip\": null}' data-js-url='\"data:text/javascript;base64,Ly8gbmlpdnVlIHZpZXdlciBmb3IgQnJhaW5EYXRhLmlwbG90KCksIGRyaXZlbiB0aHJvdWdoIGFueXdpZGdldCdzICpzdGFuZGFyZCoKLy8gbW9kZWwgQVBJIChnZXQgLyBzZXQgLyBzYXZlX2NoYW5nZXMgLyBvbikgb25seSDigJQgbm8gaG9zdC1zcGVjaWZpYyBwcm90b2NvbAovLyAodGhlIGNvbnRyYXN0IHdpdGggaXB5bmlpdnVlLCBzZWUgY29zYW5sYWIvbmx0b29scyM0NTUpLCBzbyB0aGUgd2lkZ2V0IHdvcmtzCi8vIGlkZW50aWNhbGx5IGluIEp1cHl0ZXIgYW5kIGBtYXJpbW8gZWRpdGAuCi8vCi8vIG5paXZ1ZSBpdHNlbGYgaXMgcHVsbGVkIGZyb20gYSBDRE4gYXMgYW4gRVMgbW9kdWxlLiBgX2VzbWAgaXMgYW4gRVMgbW9kdWxlLCBzbwovLyBhIHRvcC1sZXZlbCBgaW1wb3J0YCBpcyByZXNvbHZlZCBieSB0aGUgYnJvd3NlciBhdCByZW5kZXIgdGltZS4gVGhlIHBpbiBrZWVwcwovLyB0aGUgQVBJIHN0YWJsZS4KaW1wb3J0IHsKICBOaWl2dWUsCiAgTlZJbWFnZSwKICBTTElDRV9UWVBFLAp9IGZyb20gImh0dHBzOi8vZXNtLnNoL0BuaWl2dWUvbmlpdnVlQDAuNjkuMCI7CgovLyBBIHRyYWl0bGV0cyBgQnl0ZXNgIHRyYWl0IGFycml2ZXMgaW4gSlMgYXMgYSBEYXRhVmlldyBvdmVyIGEgc2hhcmVkIGJ1ZmZlci4KLy8gbmlpdnVlIHdhbnRzIGEgc3RhbmRhbG9uZSBBcnJheUJ1ZmZlciwgc28gc2xpY2Ugb3V0IGV4YWN0bHkgdGhpcyB2aWV3J3MKLy8gd2luZG93LiBFbXB0eSBieXRlcyAoYW4gYWJzZW50IG9wdGlvbmFsIHZvbHVtZSkgeWllbGQgYG51bGxgLgpmdW5jdGlvbiBieXRlc1RvQXJyYXlCdWZmZXIoZHYpIHsKICBpZiAoIWR2IHx8IGR2LmJ5dGVMZW5ndGggPT09IDApIHJldHVybiBudWxsOwogIHJldHVybiBkdi5idWZmZXIuc2xpY2UoZHYuYnl0ZU9mZnNldCwgZHYuYnl0ZU9mZnNldCArIGR2LmJ5dGVMZW5ndGgpOwp9CgovLyBOVkltYWdlLm5ldyB0cmVhdHMgTmFOIGNhbF9taW4vY2FsX21heCBhcyAiYXV0byIgKHBlcmNlbnRpbGUtZGVyaXZlZCkuIEEgbnVsbAovLyB0cmFpdCAod2luZG93IGxlZnQgb24gYXV0bykgbWFwcyB0byBOYU47IGEgbnVtYmVyIHBhc3NlcyB0aHJvdWdoLgpmdW5jdGlvbiBvck5hTih4KSB7CiAgcmV0dXJuIHggPT09IG51bGwgfHwgeCA9PT0gdW5kZWZpbmVkID8gTmFOIDogeDsKfQoKLy8gQSB0cmFpdCBvciBzbGlkZXIgdmFsdWUgdGhhdCBpcyByZWFsbHkgYSBudW1iZXIgKGEgbnVsbC91bmRlZmluZWQgdHJhaXQgb3IgYQovLyBOYU4gcGFyc2UgbWVhbnMgImxlYXZlIHRoaXMgZWRnZSBhbG9uZSIpLgpmdW5jdGlvbiBpc051bWJlcih4KSB7CiAgcmV0dXJuIHggIT09IG51bGwgJiYgeCAhPT0gdW5kZWZpbmVkICYmICFOdW1iZXIuaXNOYU4oeCk7Cn0KCmZ1bmN0aW9uIGZvcm1hdFZhbHVlKHZhbHVlKSB7CiAgY29uc3QgbnVtYmVyID0gTnVtYmVyKHZhbHVlKTsKICBpZiAoIU51bWJlci5pc0Zpbml0ZShudW1iZXIpKSByZXR1cm4gIuKAlCI7CiAgcmV0dXJuIE51bWJlci5wYXJzZUZsb2F0KG51bWJlci50b1ByZWNpc2lvbig0KSkudG9TdHJpbmcoKTsKfQoKZXhwb3J0IGRlZmF1bHQgewogIGFzeW5jIHJlbmRlcih7IG1vZGVsLCBlbCB9KSB7CiAgICBlbC5zdHlsZS53aWR0aCA9ICIxMDAlIjsKCiAgICAvLyAtLS0gRE9NOiBvcHRpb25hbCB0aHJlc2hvbGQgY29udHJvbHMgKyB0aGUgV2ViR0wgY2FudmFzIC0tLS0tLS0tLS0tLS0tIC8vCiAgICBsZXQgZmxvb3JJbnB1dCA9IG51bGw7CiAgICBsZXQgY2VpbElucHV0ID0gbnVsbDsKICAgIGxldCBmbG9vclZhbHVlID0gbnVsbDsKICAgIGxldCBjZWlsVmFsdWUgPSBudWxsOwogICAgY29uc3QgYm91bmRzID0gbW9kZWwuZ2V0KCJzbGlkZXJfYm91bmRzIikgfHwge307CiAgICAvLyBUaGUgd2luZG93IGlzIGEgbWFnbml0dWRlIHdpbmRvdyBtaXJyb3JlZCBvbnRvIHRoZSBuZWdhdGl2ZSBsaW1iLCBhbmQgYQogICAgLy8gZmxvb3Igb2YgemVybyAob3IgYmVsb3cpIGFkbWl0cyBldmVyeSB6ZXJvLXZhbHVlZCB2b3hlbCDigJQgdGhlIHdob2xlCiAgICAvLyB2b2x1bWUgYm94IG91dHNpZGUgdGhlIG1hc2sgcGFpbnRzIGluIHRoZSBuZWdhdGl2ZSBjb2xvcm1hcC4gTmV2ZXIgbGV0CiAgICAvLyB0aGUgYXBwbGllZCBmbG9vciByZWFjaCB6ZXJvLCB3aGF0ZXZlciB0aGUgc2xpZGVyIG9yIHRoZSBtb2RlbCBzYXlzLgogICAgLy8KICAgIC8vIFRoZSBlcHNpbG9uIGlzIHRoZSBzbGlkZXIncyBvd24gbG93ZXIgYm91bmQsIHdoaWNoIFB5dGhvbiBndWFyYW50ZWVzIGlzCiAgICAvLyBzdHJpY3RseSBwb3NpdGl2ZSBhbmQgYXQgb3IgYmVsb3cgdGhlIHJlc29sdmVkIGBjYWxfbWluYC4gRGVyaXZpbmcgaXQKICAgIC8vIGhlcmUgaW5zdGVhZCAoZnJvbSB0aGUgc3RlcCwgc2F5KSB3b3VsZCBsZXQgdGhlIHR3byBkcmlmdCBhcGFydCBhbmQKICAgIC8vIHJhaXNlIHRoZSByZW5kZXJlZCBmbG9vciBhYm92ZSB0aGUgd2luZG93IFB5dGhvbiByZXNvbHZlZC4KICAgIGNvbnN0IGZsb29yRXBzID0gTnVtYmVyKGJvdW5kcy5taW4pID4gMCA/IE51bWJlcihib3VuZHMubWluKSA6IDFlLTk7CiAgICBjb25zdCBjbGFtcEZsb29yID0gKHYpID0+IE1hdGgubWF4KE1hdGguYWJzKHYpLCBmbG9vckVwcyk7CgogICAgaWYgKG1vZGVsLmdldCgiY29udHJvbHMiKSkgewogICAgICBjb25zdCBjb250cm9scyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICBjb250cm9scy5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAiZGlzcGxheTpmbGV4O2dhcDowLjc1cmVtO2FsaWduLWl0ZW1zOmNlbnRlcjtmb250OjEycHgvMS40IHN5c3RlbS11aSwiICsKICAgICAgICAic2Fucy1zZXJpZjtwYWRkaW5nOjRweCAycHg7ZmxleC13cmFwOndyYXAiOwoKICAgICAgY29uc3QgbWtSYW5nZSA9IChsYWJlbFRleHQsIHZhbHVlKSA9PiB7CiAgICAgICAgY29uc3Qgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7CiAgICAgICAgd3JhcC5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAgICJkaXNwbGF5OmZsZXg7Z2FwOjAuNHJlbTthbGlnbi1pdGVtczpjZW50ZXI7ZmxleDoxIDEgMjAwcHgiOwogICAgICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgc3Bhbi50ZXh0Q29udGVudCA9IGxhYmVsVGV4dDsKICAgICAgICBjb25zdCBsb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgbG93LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoYm91bmRzLm1pbiA/PyAwKTsKICAgICAgICBjb25zdCBoaWdoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgIGhpZ2gudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShib3VuZHMubWF4ID8/IDEpOwogICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgICAgICBpbnB1dC50eXBlID0gInJhbmdlIjsKICAgICAgICBpbnB1dC5taW4gPSBib3VuZHMubWluID8/IDA7CiAgICAgICAgaW5wdXQubWF4ID0gYm91bmRzLm1heCA/PyAxOwogICAgICAgIGlucHV0LnN0ZXAgPSBib3VuZHMuc3RlcCA/PyAwLjAxOwogICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUgPz8gYm91bmRzLm1pbiA/PyAwOwogICAgICAgIGlucHV0LnN0eWxlLmZsZXggPSAiMSI7CiAgICAgICAgY29uc3Qgb3V0cHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3V0cHV0Iik7CiAgICAgICAgb3V0cHV0LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaW5wdXQudmFsdWUpOwogICAgICAgIG91dHB1dC5zdHlsZS5jc3NUZXh0ID0gIm1pbi13aWR0aDo2Y2g7dGV4dC1hbGlnbjpyaWdodDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXMiOwogICAgICAgIHdyYXAuYXBwZW5kKHNwYW4sIGxvdywgaW5wdXQsIGhpZ2gsIG91dHB1dCk7CiAgICAgICAgY29udHJvbHMuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICAgICAgcmV0dXJuIFtpbnB1dCwgb3V0cHV0XTsKICAgICAgfTsKCiAgICAgIFtmbG9vcklucHV0LCBmbG9vclZhbHVlXSA9IG1rUmFuZ2UoIm1pbiIsIGJvdW5kcy52YWx1ZV9sb3cpOwogICAgICBbY2VpbElucHV0LCBjZWlsVmFsdWVdID0gbWtSYW5nZSgibWF4IiwgYm91bmRzLnZhbHVlX2hpZ2gpOwogICAgICBlbC5hcHBlbmRDaGlsZChjb250cm9scyk7CiAgICB9CgogICAgY29uc3QgaGVpZ2h0ID0gbW9kZWwuZ2V0KCJoZWlnaHQiKSB8fCA0MDA7CiAgICAvLyBuaWl2dWUncyByZXNpemUgb2JzZXJ2ZXIgc2l6ZXMgdGhlIGNhbnZhcyBmcm9tIGl0cyAqcGFyZW50KiBhbmQgcmV3cml0ZXMKICAgIC8vIHRoZSBjYW52YXMncyBvd24gaW5saW5lIGhlaWdodCB0byAxMDAlLCBzbyB0aGUgcmVxdWVzdGVkIGhlaWdodCBoYXMgdG8KICAgIC8vIGxpdmUgb24gYSB3cmFwcGVyLiBXaXRob3V0IGl0IHRoZSB2aWV3ZXIgY29sbGFwc2VzIHRvIHRoZSBwYXJlbnQncwogICAgLy8gbmF0dXJhbCBoZWlnaHQgKH4xNTBweCkgaW4gYW55IGhvc3QgdGhhdCBkb2Vzbid0IHNpemUgdGhlIHdpZGdldCBmb3IKICAgIC8vIHVzIOKAlCBzdGF0aWMvZXhwb3J0ZWQgcGFnZXMsIGlmcmFtZXMsIHBsYWluIEp1cHl0ZXIgb3V0cHV0IGFyZWFzLgogICAgY29uc3QgY2FudmFzV3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgY2FudmFzV3JhcC5zdHlsZS5jc3NUZXh0ID0gYHdpZHRoOjEwMCU7aGVpZ2h0OiR7aGVpZ2h0fXB4YDsKICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogICAgY2FudmFzLnN0eWxlLmNzc1RleHQgPSAid2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtkaXNwbGF5OmJsb2NrIjsKICAgIGNhbnZhc1dyYXAuYXBwZW5kQ2hpbGQoY2FudmFzKTsKICAgIGVsLmFwcGVuZENoaWxkKGNhbnZhc1dyYXApOwoKICAgIC8vIC0tLSBuaWl2dWUgaW5zdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vCiAgICBjb25zdCBudiA9IG5ldyBOaWl2dWUoewogICAgICBpc0NvbG9yYmFyOiBtb2RlbC5nZXQoImNvbG9yYmFyIiksCiAgICAgIC4uLihtb2RlbC5nZXQoIm5paXZ1ZV9vcHRzIikgfHwge30pLAogICAgfSk7CiAgICBhd2FpdCBudi5hdHRhY2hUb0NhbnZhcyhjYW52YXMpOwoKICAgIC8vIEluZGV4IG9mIHRoZSBzdGF0IG1hcCBpbnNpZGUgbnYudm9sdW1lcyAoc2V0IGJ5IGxvYWRTdGFjayk7IHRoZSB0aHJlc2hvbGQKICAgIC8vIGNvbnRyb2xzIGRyaXZlIHRoaXMgdm9sdW1lJ3Mgd2luZG93LgogICAgbGV0IHN0YXRtYXBJZHggPSAtMTsKCiAgICAvLyBCdWlsZCB0aGUgdm9sdW1lIHN0YWNrIFtiYWNrZ3JvdW5kPywgc3RhdG1hcCwgYXRsYXM/XSBmcm9tIHRoZSBieXRlCiAgICAvLyB0cmFpdHMgKyBkaXNwbGF5IHBhcmFtcy4gUmVidWlsdCB3aGVuZXZlciBhbnkgdm9sdW1lJ3MgYnl0ZXMgY2hhbmdlLgogICAgYXN5bmMgZnVuY3Rpb24gbG9hZFN0YWNrKCkgewogICAgICB3aGlsZSAobnYudm9sdW1lcy5sZW5ndGgpIG52LnJlbW92ZVZvbHVtZUJ5SW5kZXgoMCk7CiAgICAgIHN0YXRtYXBJZHggPSAtMTsKCiAgICAgIGNvbnN0IGJnID0gYnl0ZXNUb0FycmF5QnVmZmVyKG1vZGVsLmdldCgiYmdfYnl0ZXMiKSk7CiAgICAgIGlmIChiZykgewogICAgICAgIGNvbnN0IGJnVm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoYmcsICJiYWNrZ3JvdW5kLm5paS5neiIsICJncmF5Iik7CiAgICAgICAgYmdWb2wuY29sb3JiYXJWaXNpYmxlID0gZmFsc2U7CiAgICAgICAgbnYuYWRkVm9sdW1lKGJnVm9sKTsKICAgICAgfQoKICAgICAgY29uc3Qgc3RhdCA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoInN0YXRtYXBfYnl0ZXMiKSk7CiAgICAgIGlmIChzdGF0KSB7CiAgICAgICAgY29uc3QgcCA9IG1vZGVsLmdldCgic3RhdG1hcCIpIHx8IHt9OwogICAgICAgIGNvbnN0IHZvbCA9IGF3YWl0IE5WSW1hZ2UubmV3KAogICAgICAgICAgc3RhdCwKICAgICAgICAgIChwLm5hbWUgfHwgInN0YXRtYXAiKSArICIubmlpLmd6IiwKICAgICAgICAgIHAuY29sb3JtYXAgfHwgIndhcm0iLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICAgIG51bGwsCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9taW4iKSksCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9tYXgiKSksCiAgICAgICAgKTsKICAgICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKHZvbC5jYWxfbWluKSkgdm9sLmNhbF9taW4gPSBjbGFtcEZsb29yKHZvbC5jYWxfbWluKTsKICAgICAgICBpZiAocC5jb2xvcm1hcF9uZWdhdGl2ZSkgdm9sLmNvbG9ybWFwTmVnYXRpdmUgPSBwLmNvbG9ybWFwX25lZ2F0aXZlOwogICAgICAgIHZvbC5jYWxfbWluTmVnID0gb3JOYU4obW9kZWwuZ2V0KCJjYWxfbWluX25lZyIpKTsKICAgICAgICB2b2wuY2FsX21heE5lZyA9IG9yTmFOKG1vZGVsLmdldCgiY2FsX21heF9uZWciKSk7CiAgICAgICAgdm9sLmNvbG9yYmFyVmlzaWJsZSA9IHRydWU7CiAgICAgICAgc3RhdG1hcElkeCA9IG52LnZvbHVtZXMubGVuZ3RoOwogICAgICAgIG52LmFkZFZvbHVtZSh2b2wpOwogICAgICB9CgogICAgICBjb25zdCBhdGxhcyA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoImF0bGFzX2J5dGVzIikpOwogICAgICBpZiAoYXRsYXMpIHsKICAgICAgICBjb25zdCBwID0gbW9kZWwuZ2V0KCJzdGF0bWFwIikgfHwge307CiAgICAgICAgY29uc3Qgdm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoCiAgICAgICAgICBhdGxhcywKICAgICAgICAgIChtb2RlbC5nZXQoImF0bGFzX25hbWUiKSB8fCAiYXRsYXMiKSArICIubmlpLmd6IiwKICAgICAgICAgICIiLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICApOwogICAgICAgIGNvbnN0IGx1dCA9IG1vZGVsLmdldCgiYXRsYXNfbHV0Iik7CiAgICAgICAgaWYgKGx1dCAmJiBsdXQubGFiZWxzKSB2b2wuc2V0Q29sb3JtYXBMYWJlbChsdXQpOwogICAgICAgIHZvbC5jb2xvcmJhclZpc2libGUgPSBmYWxzZTsKICAgICAgICBudi5hZGRWb2x1bWUodm9sKTsKICAgICAgfQoKICAgICAgbnYub3B0cy5hdGxhc091dGxpbmUgPSBtb2RlbC5nZXQoImF0bGFzX291dGxpbmUiKSB8fCAwOwogICAgICBudi51cGRhdGVHTFZvbHVtZSgpOwogICAgfQoKICAgIGF3YWl0IGxvYWRTdGFjaygpOwogICAgbnYuc2V0U2xpY2VUeXBlKFNMSUNFX1RZUEVbbW9kZWwuZ2V0KCJzbGljZV90eXBlIildID8/IFNMSUNFX1RZUEUuTVVMVElQTEFOQVIpOwoKICAgIC8vIC0tLSB0aHJlc2hvbGQgY29udHJvbHMgLT4gbmlpdnVlICsgUHl0aG9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy8KICAgIC8vIEFwcGxpZXMgdGhlIGNsYW1wZWQgd2luZG93IHRvIG5paXZ1ZSBhbmQgcmV0dXJucyBpdCwgc28gdGhlIGNhbGxlcnMgdGhhdAogICAgLy8gd3JpdGUgYmFjayB0byBQeXRob24gc2VuZCB3aGF0IHdhcyByZW5kZXJlZCByYXRoZXIgdGhhbiB3aGF0IHdhcyBkcmFnZ2VkLgogICAgZnVuY3Rpb24gYXBwbHlXaW5kb3coKSB7CiAgICAgIGlmIChzdGF0bWFwSWR4IDwgMCkgcmV0dXJuIG51bGw7CiAgICAgIGNvbnN0IHZvbCA9IG52LnZvbHVtZXNbc3RhdG1hcElkeF07CiAgICAgIGNvbnN0IGxvUmF3ID0gZmxvb3JJbnB1dCA/IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9taW4iKTsKICAgICAgY29uc3QgaGlSYXcgPSBjZWlsSW5wdXQgPyBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9tYXgiKTsKICAgICAgLy8gQm90aCBlZGdlcyBhcmUgbWFnbml0dWRlczogdGhlIGZsb29yIHN0YXlzIGFib3ZlIHplcm8gYW5kIHRoZSBjZWlsaW5nCiAgICAgIC8vIHN0YXlzIGFib3ZlIHRoZSBmbG9vci4KICAgICAgY29uc3QgbG8gPSBpc051bWJlcihsb1JhdykgPyBjbGFtcEZsb29yKGxvUmF3KSA6IG51bGw7CiAgICAgIGNvbnN0IGZsb29yID0gbG8gPT09IG51bGwgPyB2b2wuY2FsX21pbiA6IGxvOwogICAgICBjb25zdCBoaSA9IGlzTnVtYmVyKGhpUmF3KQogICAgICAgID8gTWF0aC5tYXgoTWF0aC5hYnMoaGlSYXcpLCBmbG9vciArIGZsb29yRXBzKQogICAgICAgIDogbnVsbDsKICAgICAgaWYgKGxvICE9PSBudWxsKSB2b2wuY2FsX21pbiA9IGxvOwogICAgICBpZiAoaGkgIT09IG51bGwpIHZvbC5jYWxfbWF4ID0gaGk7CiAgICAgIGlmIChtb2RlbC5nZXQoIm1pcnJvcl9uZWdhdGl2ZSIpKSB7CiAgICAgICAgaWYgKGhpICE9PSBudWxsKSB2b2wuY2FsX21pbk5lZyA9IC1oaTsKICAgICAgICBpZiAobG8gIT09IG51bGwpIHZvbC5jYWxfbWF4TmVnID0gLWxvOwogICAgICB9IGVsc2UgaWYgKGxvICE9PSBudWxsKSB7CiAgICAgICAgdm9sLmNhbF9tYXhOZWcgPSAtbG87CiAgICAgIH0KICAgICAgbnYudXBkYXRlR0xWb2x1bWUoKTsKICAgICAgcmV0dXJuIHsgbG8sIGhpIH07CiAgICB9CgogICAgaWYgKGZsb29ySW5wdXQpIHsKICAgICAgZmxvb3JJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsICgpID0+IHsKICAgICAgICBjb25zdCBhcHBsaWVkID0gYXBwbHlXaW5kb3coKTsKICAgICAgICBjb25zdCBsbyA9IGFwcGxpZWQgJiYgYXBwbGllZC5sbyAhPT0gbnVsbAogICAgICAgICAgPyBhcHBsaWVkLmxvCiAgICAgICAgICA6IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgICAgZmxvb3JWYWx1ZS50ZXh0Q29udGVudCA9IGZvcm1hdFZhbHVlKGxvKTsKICAgICAgICBtb2RlbC5zZXQoImNhbF9taW4iLCBsbyk7CiAgICAgICAgbW9kZWwuc2F2ZV9jaGFuZ2VzKCk7CiAgICAgIH0pOwogICAgfQogICAgaWYgKGNlaWxJbnB1dCkgewogICAgICBjZWlsSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCAoKSA9PiB7CiAgICAgICAgY29uc3QgYXBwbGllZCA9IGFwcGx5V2luZG93KCk7CiAgICAgICAgY29uc3QgaGkgPSBhcHBsaWVkICYmIGFwcGxpZWQuaGkgIT09IG51bGwKICAgICAgICAgID8gYXBwbGllZC5oaQogICAgICAgICAgOiBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSk7CiAgICAgICAgY2VpbFZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaGkpOwogICAgICAgIG1vZGVsLnNldCgiY2FsX21heCIsIGhpKTsKICAgICAgICBtb2RlbC5zYXZlX2NoYW5nZXMoKTsKICAgICAgfSk7CiAgICB9CgogICAgLy8gLS0tIFB5dGhvbiAtPiBKUyByZWFjdGl2aXR5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvLwogICAgY29uc3Qgb25CeXRlcyA9ICgpID0+IGxvYWRTdGFjaygpOwogICAgbW9kZWwub24oImNoYW5nZTpzdGF0bWFwX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmJnX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmF0bGFzX2J5dGVzIiwgb25CeXRlcyk7CgogICAgbW9kZWwub24oImNoYW5nZTpjYWxfbWluIiwgKCkgPT4gewogICAgICBpZiAoZmxvb3JJbnB1dCkgZmxvb3JJbnB1dC52YWx1ZSA9IG1vZGVsLmdldCgiY2FsX21pbiIpID8/IGZsb29ySW5wdXQudmFsdWU7CiAgICAgIGlmIChmbG9vclZhbHVlKSBmbG9vclZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgIGFwcGx5V2luZG93KCk7CiAgICB9KTsKICAgIG1vZGVsLm9uKCJjaGFuZ2U6Y2FsX21heCIsICgpID0+IHsKICAgICAgaWYgKGNlaWxJbnB1dCkgY2VpbElucHV0LnZhbHVlID0gbW9kZWwuZ2V0KCJjYWxfbWF4IikgPz8gY2VpbElucHV0LnZhbHVlOwogICAgICBpZiAoY2VpbFZhbHVlKSBjZWlsVmFsdWUudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShjZWlsSW5wdXQudmFsdWUpOwogICAgICBhcHBseVdpbmRvdygpOwogICAgfSk7CiAgICBtb2RlbC5vbigiY2hhbmdlOnNsaWNlX3R5cGUiLCAoKSA9PgogICAgICBudi5zZXRTbGljZVR5cGUoU0xJQ0VfVFlQRVttb2RlbC5nZXQoInNsaWNlX3R5cGUiKV0gPz8gU0xJQ0VfVFlQRS5NVUxUSVBMQU5BUiksCiAgICApOwogICAgbW9kZWwub24oImNoYW5nZTpjb2xvcmJhciIsICgpID0+IHsKICAgICAgbnYub3B0cy5pc0NvbG9yYmFyID0gbW9kZWwuZ2V0KCJjb2xvcmJhciIpOwogICAgICBudi5kcmF3U2NlbmUoKTsKICAgIH0pOwogICAgbW9kZWwub24oImNoYW5nZTphdGxhc19vdXRsaW5lIiwgKCkgPT4gewogICAgICBudi5vcHRzLmF0bGFzT3V0bGluZSA9IG1vZGVsLmdldCgiYXRsYXNfb3V0bGluZSIpIHx8IDA7CiAgICAgIG52LmRyYXdTY2VuZSgpOwogICAgfSk7CgogICAgLy8gbmlpdnVlIGhhcyBubyBkZXN0cm95KCk7IGRyb3AgdGhlIFdlYkdMIGNvbnRleHQgb24gdGVhcmRvd24gLyByZS1yZW5kZXIKICAgIC8vIHNvIHJlcGVhdGVkIGNlbGwgcnVucyBkb24ndCBsZWFrIEdMIGNvbnRleHRzIChicm93c2VycyBjYXAgdGhlbSkuCiAgICByZXR1cm4gKCkgPT4gewogICAgICBjYW52YXMKICAgICAgICAuZ2V0Q29udGV4dCgid2ViZ2wyIikKICAgICAgICA/LmdldEV4dGVuc2lvbigiV0VCR0xfbG9zZV9jb250ZXh0IikKICAgICAgICA/Lmxvc2VDb250ZXh0KCk7CiAgICB9OwogIH0sCn07Cg==\"' data-label=\"null\" data-model-id='\"7abbe60230dd4176af823d673764e928\"'\u003e\u003c/div\u003e\u003cdiv class=\"marimo-book-plotly\" data-config=\"{}\" data-figure='{\"data\":[{\"hovertemplate\":\"TR: %{x}\\u003cbr\\u003eIntensity: %{y:.4f}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#EF553B\",\"width\":2},\"mode\":\"lines\",\"name\":\"Timecourse\",\"x\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127],\"y\":{\"dtype\":\"f4\",\"bdata\":\"cS6huI2Vl7mllXS4qe/oOQ3GKjuHWAe7RV0huwYiiLof3bw6pWCVOgNOkzpFXaY6du1wuiEd4bpR5Cu6ctpiuFzsiLoUBja6y5DNOWB2mDrdiRA5EUoIOVOIeDr6ERk6K9jDOrPFoDoPXYk6j5ePuWa+o7qmKLQ5SC8qu19bV7t+HaO6ow01OuK4Tjr6BCO52xamuWUqkTqoCsU6JWoDOzIUjzkTSR26Q+ZWuqeUxDrfFlO6OtKEuvd7pDrDNVI6aC/VuXw+Xbqp5Oi6hCxfukEfHTrnzoS62TmxuHPYDjt5dU86GPKROnaQ2rpJfDO6+2gEOqPqbLqhCfk6tLSXuZanFzoc28o5+MD2ubxspDo8Km253ut2ukQUl7o63y46ATq2uoAn27kr7pm3MHsFOnGhnrqIRd06fbO9NoWLqDihrMA6HwKSulyy/jkhbka6XO2xOFSbEDnnKie6GT+YOg3Y77mF4Pc5jBiouhYcC7v1itk5KW2gunqgj7o2BZa6IMkxOzTyGDp4B1A7cpRLuqGXYDp/1eq6I1ZmOe2VsroUMBo6RKBCujkSRTrlt4s6YZstODsH0Tq6kci5O+wVOsHwMLmy7o+58z4BOzfZzbojEUK5VkJROh0UCjrwfPa5QMiHuvnturnhEV66taAuOsNfNDko13k6CjPAuun/GLg=\"},\"type\":\"scatter\",\"xaxis\":\"x\",\"yaxis\":\"y\"},{\"hovertemplate\":\"Freq: %{x:.4f} Hz\\u003cbr\\u003ePower: %{y:.4e}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#636EFA\",\"width\":2},\"mode\":\"lines\",\"name\":\"Power\",\"x\":{\"dtype\":\"f8\",\"bdata\":\"q6qqqqqqaj+rqqqqqqp6PwAAAAAAAIQ/q6qqqqqqij+rqqqqqqqQPwAAAAAAAJQ/VlVVVVVVlz+rqqqqqqqaPwAAAAAAAJ4/q6qqqqqqoD9WVVVVVVWiPwAAAAAAAKQ/q6qqqqqqpT9WVVVVVVWnPwAAAAAAAKk/q6qqqqqqqj9WVVVVVVWsPwAAAAAAAK4/q6qqqqqqrz+rqqqqqqqwPwAAAAAAgLE/VlVVVVVVsj+rqqqqqiqzPwAAAAAAALQ/VlVVVVXVtD+rqqqqqqq1PwAAAAAAgLY/VlVVVVVVtz+rqqqqqiq4PwAAAAAAALk/VlVVVVXVuT+rqqqqqqq6PwAAAAAAgLs/VlVVVVVVvD+rqqqqqiq9PwAAAAAAAL4/VlVVVVXVvj+rqqqqqqq/PwAAAAAAQMA/q6qqqqqqwD9WVVVVVRXBPwAAAAAAgME/q6qqqqrqwT9WVVVVVVXCPwAAAAAAwMI/q6qqqqoqwz9WVVVVVZXDPwAAAAAAAMQ/q6qqqqpqxD9WVVVVVdXEPwAAAAAAQMU/q6qqqqqqxT9WVVVVVRXGPwAAAAAAgMY/q6qqqqrqxj9WVVVVVVXHPwAAAAAAwMc/q6qqqqoqyD9WVVVVVZXIPwAAAAAAAMk/q6qqqqpqyT9WVVVVVdXJPwAAAAAAQMo/\"},\"y\":{\"dtype\":\"f4\",\"bdata\":\"ISm6NMlVqTcIIEg4YPwLOKWhvjNFioQ5nXYUOifJ0zhu6ho6aihyOQqThzdK2RQ6bcHPOVFbzDjBiss5xxcPObrUrTmH9pc556J6OKqEVTkRypo4TR2FOU1lkzWhiZ84IvNjOPkztjnxKqA5l4M2OZqKaTnIQE05ktaZOFfpVjjS7BU4cv6GOOSY1jmwEdA5vu16OM18hjcnMUI240JHOG7jQzl2zCM5U6+jNjumOzd/Y7E4xBeaOE13WzlaYHE3S0vnOF+p0jgD7LA5J6EXOcQt7jjTv5Y3KPtKOEGk7DnITSU6IZz0NyKHGzebC6o4MhSxOcYT/DgHDGM5\"},\"type\":\"scatter\",\"xaxis\":\"x2\",\"yaxis\":\"y2\"}],\"layout\":{\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermap\":[{\"type\":\"scattermap\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,0.41000000000000003],\"title\":{\"text\":\"TR\"}},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Intensity (AU)\"}},\"xaxis2\":{\"anchor\":\"y2\",\"domain\":[0.5900000000000001,1.0],\"title\":{\"text\":\"Frequency (Hz)\"}},\"yaxis2\":{\"anchor\":\"x2\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Power\"}},\"annotations\":[{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Timecourse (TR=2.4s)\",\"x\":0.20500000000000002,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"},{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Power Spectrum\",\"x\":0.795,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"}],\"margin\":{\"t\":40,\"b\":50,\"l\":70,\"r\":30},\"height\":280,\"showlegend\":false,\"dragmode\":\"zoom\"}}'\u003e\u003c/div\u003e\u003c/div\u003e\n\u003c/div\u003e"},"3":{"6":"\u003cdiv class=\"language-python highlight\"\u003e\u003cpre\u003e\u003cspan\u003e\u003c/span\u003e\u003ccode\u003e\u003cspan id=\"__span-0-1\"\u003e\u003ca id=\"__codelineno-0-1\" name=\"__codelineno-0-1\" href=\"#__codelineno-0-1\"\u003e\u003c/a\u003e\u003cspan class=\"n\"\u003esub\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;S01\u0026#39;\u003c/span\u003e\n\u003c/span\u003e\u003cspan id=\"__span-0-2\"\u003e\u003ca id=\"__codelineno-0-2\" name=\"__codelineno-0-2\" href=\"#__codelineno-0-2\"\u003e\u003c/a\u003e\u003cspan class=\"n\"\u003edata\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eBrainData\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003elocalizer\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eget_file\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003esub\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;derivatives\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;bold\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e))\u003c/span\u003e\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cpre class=\"marimo-book-output-text marimo-stream-stderr\"\u003eWarning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.\n\u003c/pre\u003e","12":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cmarimo-slider data-initial-value='3' data-label='\u0026quot;\u0026#92;u003cspan class=\u0026#92;\u0026quot;markdown prose dark:prose-invert contents\u0026#92;\u0026quot;\u0026#92;u003e\u0026#92;u003cspan class=\u0026#92;\u0026quot;paragraph\u0026#92;\u0026quot;\u0026#92;u003eComponent\u0026#92;u003c/span\u0026#92;u003e\u0026#92;u003c/span\u0026#92;u003e\u0026quot;' data-start='0' data-stop='9' data-step='1' data-steps='[]' data-debounce='false' data-disabled='false' data-orientation='\u0026quot;horizontal\u0026quot;' data-show-value='true' data-include-input='false' data-full-width='false'\u003e\u003c/marimo-slider\u003e\n\u003c/div\u003e","13":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cdiv style=\"display: flex;flex: 1;flex-direction: column;justify-content: flex-start;align-items: normal;flex-wrap: nowrap;gap: 0.5rem\"\u003e\u003cspan class=\"markdown prose dark:prose-invert contents\"\u003e\u003cspan class=\"paragraph\"\u003e\u003cstrong\u003eComponent 4 of 10\u003c/strong\u003e\u003c/span\u003e\u003c/span\u003e\u003cdiv class=\"marimo-book-anywidget\" data-buffers='[{\"path\": [\"atlas_bytes\"], \"empty\": true}, {\"path\": [\"bg_bytes\"], \"url\": \"assets/anywidget/c02b4524b0c54de882947847c0f613f75d3131c979be42145b19a46de3dece42.bin\", \"size\": 533672}, {\"path\": [\"statmap_bytes\"], \"url\": \"assets/anywidget/ba45ea7bbd6d3a7c850fb66e358f88462d360a8af46370ee3836f72b9bd17098.bin\", \"size\": 914175}]' data-initial-value='{\"_anywidget_id\": \"nltools.data.braindata.viewer._NiivueViewer\", \"_dom_classes\": [], \"_model_module\": \"anywidget\", \"_model_module_version\": \"~0.10.*\", \"_model_name\": \"AnyModel\", \"_view_count\": null, \"_view_module\": \"anywidget\", \"_view_module_version\": \"~0.10.*\", \"_view_name\": \"AnyView\", \"atlas_lut\": {}, \"atlas_name\": \"\", \"atlas_outline\": 0.0, \"cal_max\": 2.5531736564636147, \"cal_max_neg\": -2.0, \"cal_min\": 2.0, \"cal_min_neg\": -2.5531736564636147, \"colorbar\": true, \"controls\": true, \"height\": 600, \"layout\": \"IPY_MODEL_7c79b0d404c447028e0d4bd2172eb985\", \"mirror_negative\": true, \"niivue_opts\": {}, \"slice_type\": \"MULTIPLANAR\", \"slider_bounds\": {\"min\": 0.1534914493560791, \"max\": 30.69828987121582, \"value_low\": 2.0, \"value_high\": 2.5531736564636147, \"step\": 0.1534914493560791}, \"statmap\": {\"name\": \"statmap\", \"colormap\": \"warm\", \"colormap_negative\": \"winter\", \"opacity\": 1.0}, \"tabbable\": null, \"tooltip\": null}' data-js-url='\"data:text/javascript;base64,Ly8gbmlpdnVlIHZpZXdlciBmb3IgQnJhaW5EYXRhLmlwbG90KCksIGRyaXZlbiB0aHJvdWdoIGFueXdpZGdldCdzICpzdGFuZGFyZCoKLy8gbW9kZWwgQVBJIChnZXQgLyBzZXQgLyBzYXZlX2NoYW5nZXMgLyBvbikgb25seSDigJQgbm8gaG9zdC1zcGVjaWZpYyBwcm90b2NvbAovLyAodGhlIGNvbnRyYXN0IHdpdGggaXB5bmlpdnVlLCBzZWUgY29zYW5sYWIvbmx0b29scyM0NTUpLCBzbyB0aGUgd2lkZ2V0IHdvcmtzCi8vIGlkZW50aWNhbGx5IGluIEp1cHl0ZXIgYW5kIGBtYXJpbW8gZWRpdGAuCi8vCi8vIG5paXZ1ZSBpdHNlbGYgaXMgcHVsbGVkIGZyb20gYSBDRE4gYXMgYW4gRVMgbW9kdWxlLiBgX2VzbWAgaXMgYW4gRVMgbW9kdWxlLCBzbwovLyBhIHRvcC1sZXZlbCBgaW1wb3J0YCBpcyByZXNvbHZlZCBieSB0aGUgYnJvd3NlciBhdCByZW5kZXIgdGltZS4gVGhlIHBpbiBrZWVwcwovLyB0aGUgQVBJIHN0YWJsZS4KaW1wb3J0IHsKICBOaWl2dWUsCiAgTlZJbWFnZSwKICBTTElDRV9UWVBFLAp9IGZyb20gImh0dHBzOi8vZXNtLnNoL0BuaWl2dWUvbmlpdnVlQDAuNjkuMCI7CgovLyBBIHRyYWl0bGV0cyBgQnl0ZXNgIHRyYWl0IGFycml2ZXMgaW4gSlMgYXMgYSBEYXRhVmlldyBvdmVyIGEgc2hhcmVkIGJ1ZmZlci4KLy8gbmlpdnVlIHdhbnRzIGEgc3RhbmRhbG9uZSBBcnJheUJ1ZmZlciwgc28gc2xpY2Ugb3V0IGV4YWN0bHkgdGhpcyB2aWV3J3MKLy8gd2luZG93LiBFbXB0eSBieXRlcyAoYW4gYWJzZW50IG9wdGlvbmFsIHZvbHVtZSkgeWllbGQgYG51bGxgLgpmdW5jdGlvbiBieXRlc1RvQXJyYXlCdWZmZXIoZHYpIHsKICBpZiAoIWR2IHx8IGR2LmJ5dGVMZW5ndGggPT09IDApIHJldHVybiBudWxsOwogIHJldHVybiBkdi5idWZmZXIuc2xpY2UoZHYuYnl0ZU9mZnNldCwgZHYuYnl0ZU9mZnNldCArIGR2LmJ5dGVMZW5ndGgpOwp9CgovLyBOVkltYWdlLm5ldyB0cmVhdHMgTmFOIGNhbF9taW4vY2FsX21heCBhcyAiYXV0byIgKHBlcmNlbnRpbGUtZGVyaXZlZCkuIEEgbnVsbAovLyB0cmFpdCAod2luZG93IGxlZnQgb24gYXV0bykgbWFwcyB0byBOYU47IGEgbnVtYmVyIHBhc3NlcyB0aHJvdWdoLgpmdW5jdGlvbiBvck5hTih4KSB7CiAgcmV0dXJuIHggPT09IG51bGwgfHwgeCA9PT0gdW5kZWZpbmVkID8gTmFOIDogeDsKfQoKLy8gQSB0cmFpdCBvciBzbGlkZXIgdmFsdWUgdGhhdCBpcyByZWFsbHkgYSBudW1iZXIgKGEgbnVsbC91bmRlZmluZWQgdHJhaXQgb3IgYQovLyBOYU4gcGFyc2UgbWVhbnMgImxlYXZlIHRoaXMgZWRnZSBhbG9uZSIpLgpmdW5jdGlvbiBpc051bWJlcih4KSB7CiAgcmV0dXJuIHggIT09IG51bGwgJiYgeCAhPT0gdW5kZWZpbmVkICYmICFOdW1iZXIuaXNOYU4oeCk7Cn0KCmZ1bmN0aW9uIGZvcm1hdFZhbHVlKHZhbHVlKSB7CiAgY29uc3QgbnVtYmVyID0gTnVtYmVyKHZhbHVlKTsKICBpZiAoIU51bWJlci5pc0Zpbml0ZShudW1iZXIpKSByZXR1cm4gIuKAlCI7CiAgcmV0dXJuIE51bWJlci5wYXJzZUZsb2F0KG51bWJlci50b1ByZWNpc2lvbig0KSkudG9TdHJpbmcoKTsKfQoKZXhwb3J0IGRlZmF1bHQgewogIGFzeW5jIHJlbmRlcih7IG1vZGVsLCBlbCB9KSB7CiAgICBlbC5zdHlsZS53aWR0aCA9ICIxMDAlIjsKCiAgICAvLyAtLS0gRE9NOiBvcHRpb25hbCB0aHJlc2hvbGQgY29udHJvbHMgKyB0aGUgV2ViR0wgY2FudmFzIC0tLS0tLS0tLS0tLS0tIC8vCiAgICBsZXQgZmxvb3JJbnB1dCA9IG51bGw7CiAgICBsZXQgY2VpbElucHV0ID0gbnVsbDsKICAgIGxldCBmbG9vclZhbHVlID0gbnVsbDsKICAgIGxldCBjZWlsVmFsdWUgPSBudWxsOwogICAgY29uc3QgYm91bmRzID0gbW9kZWwuZ2V0KCJzbGlkZXJfYm91bmRzIikgfHwge307CiAgICAvLyBUaGUgd2luZG93IGlzIGEgbWFnbml0dWRlIHdpbmRvdyBtaXJyb3JlZCBvbnRvIHRoZSBuZWdhdGl2ZSBsaW1iLCBhbmQgYQogICAgLy8gZmxvb3Igb2YgemVybyAob3IgYmVsb3cpIGFkbWl0cyBldmVyeSB6ZXJvLXZhbHVlZCB2b3hlbCDigJQgdGhlIHdob2xlCiAgICAvLyB2b2x1bWUgYm94IG91dHNpZGUgdGhlIG1hc2sgcGFpbnRzIGluIHRoZSBuZWdhdGl2ZSBjb2xvcm1hcC4gTmV2ZXIgbGV0CiAgICAvLyB0aGUgYXBwbGllZCBmbG9vciByZWFjaCB6ZXJvLCB3aGF0ZXZlciB0aGUgc2xpZGVyIG9yIHRoZSBtb2RlbCBzYXlzLgogICAgLy8KICAgIC8vIFRoZSBlcHNpbG9uIGlzIHRoZSBzbGlkZXIncyBvd24gbG93ZXIgYm91bmQsIHdoaWNoIFB5dGhvbiBndWFyYW50ZWVzIGlzCiAgICAvLyBzdHJpY3RseSBwb3NpdGl2ZSBhbmQgYXQgb3IgYmVsb3cgdGhlIHJlc29sdmVkIGBjYWxfbWluYC4gRGVyaXZpbmcgaXQKICAgIC8vIGhlcmUgaW5zdGVhZCAoZnJvbSB0aGUgc3RlcCwgc2F5KSB3b3VsZCBsZXQgdGhlIHR3byBkcmlmdCBhcGFydCBhbmQKICAgIC8vIHJhaXNlIHRoZSByZW5kZXJlZCBmbG9vciBhYm92ZSB0aGUgd2luZG93IFB5dGhvbiByZXNvbHZlZC4KICAgIGNvbnN0IGZsb29yRXBzID0gTnVtYmVyKGJvdW5kcy5taW4pID4gMCA/IE51bWJlcihib3VuZHMubWluKSA6IDFlLTk7CiAgICBjb25zdCBjbGFtcEZsb29yID0gKHYpID0+IE1hdGgubWF4KE1hdGguYWJzKHYpLCBmbG9vckVwcyk7CgogICAgaWYgKG1vZGVsLmdldCgiY29udHJvbHMiKSkgewogICAgICBjb25zdCBjb250cm9scyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICBjb250cm9scy5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAiZGlzcGxheTpmbGV4O2dhcDowLjc1cmVtO2FsaWduLWl0ZW1zOmNlbnRlcjtmb250OjEycHgvMS40IHN5c3RlbS11aSwiICsKICAgICAgICAic2Fucy1zZXJpZjtwYWRkaW5nOjRweCAycHg7ZmxleC13cmFwOndyYXAiOwoKICAgICAgY29uc3QgbWtSYW5nZSA9IChsYWJlbFRleHQsIHZhbHVlKSA9PiB7CiAgICAgICAgY29uc3Qgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7CiAgICAgICAgd3JhcC5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAgICJkaXNwbGF5OmZsZXg7Z2FwOjAuNHJlbTthbGlnbi1pdGVtczpjZW50ZXI7ZmxleDoxIDEgMjAwcHgiOwogICAgICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgc3Bhbi50ZXh0Q29udGVudCA9IGxhYmVsVGV4dDsKICAgICAgICBjb25zdCBsb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgbG93LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoYm91bmRzLm1pbiA/PyAwKTsKICAgICAgICBjb25zdCBoaWdoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgIGhpZ2gudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShib3VuZHMubWF4ID8/IDEpOwogICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgICAgICBpbnB1dC50eXBlID0gInJhbmdlIjsKICAgICAgICBpbnB1dC5taW4gPSBib3VuZHMubWluID8/IDA7CiAgICAgICAgaW5wdXQubWF4ID0gYm91bmRzLm1heCA/PyAxOwogICAgICAgIGlucHV0LnN0ZXAgPSBib3VuZHMuc3RlcCA/PyAwLjAxOwogICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUgPz8gYm91bmRzLm1pbiA/PyAwOwogICAgICAgIGlucHV0LnN0eWxlLmZsZXggPSAiMSI7CiAgICAgICAgY29uc3Qgb3V0cHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3V0cHV0Iik7CiAgICAgICAgb3V0cHV0LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaW5wdXQudmFsdWUpOwogICAgICAgIG91dHB1dC5zdHlsZS5jc3NUZXh0ID0gIm1pbi13aWR0aDo2Y2g7dGV4dC1hbGlnbjpyaWdodDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXMiOwogICAgICAgIHdyYXAuYXBwZW5kKHNwYW4sIGxvdywgaW5wdXQsIGhpZ2gsIG91dHB1dCk7CiAgICAgICAgY29udHJvbHMuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICAgICAgcmV0dXJuIFtpbnB1dCwgb3V0cHV0XTsKICAgICAgfTsKCiAgICAgIFtmbG9vcklucHV0LCBmbG9vclZhbHVlXSA9IG1rUmFuZ2UoIm1pbiIsIGJvdW5kcy52YWx1ZV9sb3cpOwogICAgICBbY2VpbElucHV0LCBjZWlsVmFsdWVdID0gbWtSYW5nZSgibWF4IiwgYm91bmRzLnZhbHVlX2hpZ2gpOwogICAgICBlbC5hcHBlbmRDaGlsZChjb250cm9scyk7CiAgICB9CgogICAgY29uc3QgaGVpZ2h0ID0gbW9kZWwuZ2V0KCJoZWlnaHQiKSB8fCA0MDA7CiAgICAvLyBuaWl2dWUncyByZXNpemUgb2JzZXJ2ZXIgc2l6ZXMgdGhlIGNhbnZhcyBmcm9tIGl0cyAqcGFyZW50KiBhbmQgcmV3cml0ZXMKICAgIC8vIHRoZSBjYW52YXMncyBvd24gaW5saW5lIGhlaWdodCB0byAxMDAlLCBzbyB0aGUgcmVxdWVzdGVkIGhlaWdodCBoYXMgdG8KICAgIC8vIGxpdmUgb24gYSB3cmFwcGVyLiBXaXRob3V0IGl0IHRoZSB2aWV3ZXIgY29sbGFwc2VzIHRvIHRoZSBwYXJlbnQncwogICAgLy8gbmF0dXJhbCBoZWlnaHQgKH4xNTBweCkgaW4gYW55IGhvc3QgdGhhdCBkb2Vzbid0IHNpemUgdGhlIHdpZGdldCBmb3IKICAgIC8vIHVzIOKAlCBzdGF0aWMvZXhwb3J0ZWQgcGFnZXMsIGlmcmFtZXMsIHBsYWluIEp1cHl0ZXIgb3V0cHV0IGFyZWFzLgogICAgY29uc3QgY2FudmFzV3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgY2FudmFzV3JhcC5zdHlsZS5jc3NUZXh0ID0gYHdpZHRoOjEwMCU7aGVpZ2h0OiR7aGVpZ2h0fXB4YDsKICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogICAgY2FudmFzLnN0eWxlLmNzc1RleHQgPSAid2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtkaXNwbGF5OmJsb2NrIjsKICAgIGNhbnZhc1dyYXAuYXBwZW5kQ2hpbGQoY2FudmFzKTsKICAgIGVsLmFwcGVuZENoaWxkKGNhbnZhc1dyYXApOwoKICAgIC8vIC0tLSBuaWl2dWUgaW5zdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vCiAgICBjb25zdCBudiA9IG5ldyBOaWl2dWUoewogICAgICBpc0NvbG9yYmFyOiBtb2RlbC5nZXQoImNvbG9yYmFyIiksCiAgICAgIC4uLihtb2RlbC5nZXQoIm5paXZ1ZV9vcHRzIikgfHwge30pLAogICAgfSk7CiAgICBhd2FpdCBudi5hdHRhY2hUb0NhbnZhcyhjYW52YXMpOwoKICAgIC8vIEluZGV4IG9mIHRoZSBzdGF0IG1hcCBpbnNpZGUgbnYudm9sdW1lcyAoc2V0IGJ5IGxvYWRTdGFjayk7IHRoZSB0aHJlc2hvbGQKICAgIC8vIGNvbnRyb2xzIGRyaXZlIHRoaXMgdm9sdW1lJ3Mgd2luZG93LgogICAgbGV0IHN0YXRtYXBJZHggPSAtMTsKCiAgICAvLyBCdWlsZCB0aGUgdm9sdW1lIHN0YWNrIFtiYWNrZ3JvdW5kPywgc3RhdG1hcCwgYXRsYXM/XSBmcm9tIHRoZSBieXRlCiAgICAvLyB0cmFpdHMgKyBkaXNwbGF5IHBhcmFtcy4gUmVidWlsdCB3aGVuZXZlciBhbnkgdm9sdW1lJ3MgYnl0ZXMgY2hhbmdlLgogICAgYXN5bmMgZnVuY3Rpb24gbG9hZFN0YWNrKCkgewogICAgICB3aGlsZSAobnYudm9sdW1lcy5sZW5ndGgpIG52LnJlbW92ZVZvbHVtZUJ5SW5kZXgoMCk7CiAgICAgIHN0YXRtYXBJZHggPSAtMTsKCiAgICAgIGNvbnN0IGJnID0gYnl0ZXNUb0FycmF5QnVmZmVyKG1vZGVsLmdldCgiYmdfYnl0ZXMiKSk7CiAgICAgIGlmIChiZykgewogICAgICAgIGNvbnN0IGJnVm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoYmcsICJiYWNrZ3JvdW5kLm5paS5neiIsICJncmF5Iik7CiAgICAgICAgYmdWb2wuY29sb3JiYXJWaXNpYmxlID0gZmFsc2U7CiAgICAgICAgbnYuYWRkVm9sdW1lKGJnVm9sKTsKICAgICAgfQoKICAgICAgY29uc3Qgc3RhdCA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoInN0YXRtYXBfYnl0ZXMiKSk7CiAgICAgIGlmIChzdGF0KSB7CiAgICAgICAgY29uc3QgcCA9IG1vZGVsLmdldCgic3RhdG1hcCIpIHx8IHt9OwogICAgICAgIGNvbnN0IHZvbCA9IGF3YWl0IE5WSW1hZ2UubmV3KAogICAgICAgICAgc3RhdCwKICAgICAgICAgIChwLm5hbWUgfHwgInN0YXRtYXAiKSArICIubmlpLmd6IiwKICAgICAgICAgIHAuY29sb3JtYXAgfHwgIndhcm0iLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICAgIG51bGwsCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9taW4iKSksCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9tYXgiKSksCiAgICAgICAgKTsKICAgICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKHZvbC5jYWxfbWluKSkgdm9sLmNhbF9taW4gPSBjbGFtcEZsb29yKHZvbC5jYWxfbWluKTsKICAgICAgICBpZiAocC5jb2xvcm1hcF9uZWdhdGl2ZSkgdm9sLmNvbG9ybWFwTmVnYXRpdmUgPSBwLmNvbG9ybWFwX25lZ2F0aXZlOwogICAgICAgIHZvbC5jYWxfbWluTmVnID0gb3JOYU4obW9kZWwuZ2V0KCJjYWxfbWluX25lZyIpKTsKICAgICAgICB2b2wuY2FsX21heE5lZyA9IG9yTmFOKG1vZGVsLmdldCgiY2FsX21heF9uZWciKSk7CiAgICAgICAgdm9sLmNvbG9yYmFyVmlzaWJsZSA9IHRydWU7CiAgICAgICAgc3RhdG1hcElkeCA9IG52LnZvbHVtZXMubGVuZ3RoOwogICAgICAgIG52LmFkZFZvbHVtZSh2b2wpOwogICAgICB9CgogICAgICBjb25zdCBhdGxhcyA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoImF0bGFzX2J5dGVzIikpOwogICAgICBpZiAoYXRsYXMpIHsKICAgICAgICBjb25zdCBwID0gbW9kZWwuZ2V0KCJzdGF0bWFwIikgfHwge307CiAgICAgICAgY29uc3Qgdm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoCiAgICAgICAgICBhdGxhcywKICAgICAgICAgIChtb2RlbC5nZXQoImF0bGFzX25hbWUiKSB8fCAiYXRsYXMiKSArICIubmlpLmd6IiwKICAgICAgICAgICIiLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICApOwogICAgICAgIGNvbnN0IGx1dCA9IG1vZGVsLmdldCgiYXRsYXNfbHV0Iik7CiAgICAgICAgaWYgKGx1dCAmJiBsdXQubGFiZWxzKSB2b2wuc2V0Q29sb3JtYXBMYWJlbChsdXQpOwogICAgICAgIHZvbC5jb2xvcmJhclZpc2libGUgPSBmYWxzZTsKICAgICAgICBudi5hZGRWb2x1bWUodm9sKTsKICAgICAgfQoKICAgICAgbnYub3B0cy5hdGxhc091dGxpbmUgPSBtb2RlbC5nZXQoImF0bGFzX291dGxpbmUiKSB8fCAwOwogICAgICBudi51cGRhdGVHTFZvbHVtZSgpOwogICAgfQoKICAgIGF3YWl0IGxvYWRTdGFjaygpOwogICAgbnYuc2V0U2xpY2VUeXBlKFNMSUNFX1RZUEVbbW9kZWwuZ2V0KCJzbGljZV90eXBlIildID8/IFNMSUNFX1RZUEUuTVVMVElQTEFOQVIpOwoKICAgIC8vIC0tLSB0aHJlc2hvbGQgY29udHJvbHMgLT4gbmlpdnVlICsgUHl0aG9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy8KICAgIC8vIEFwcGxpZXMgdGhlIGNsYW1wZWQgd2luZG93IHRvIG5paXZ1ZSBhbmQgcmV0dXJucyBpdCwgc28gdGhlIGNhbGxlcnMgdGhhdAogICAgLy8gd3JpdGUgYmFjayB0byBQeXRob24gc2VuZCB3aGF0IHdhcyByZW5kZXJlZCByYXRoZXIgdGhhbiB3aGF0IHdhcyBkcmFnZ2VkLgogICAgZnVuY3Rpb24gYXBwbHlXaW5kb3coKSB7CiAgICAgIGlmIChzdGF0bWFwSWR4IDwgMCkgcmV0dXJuIG51bGw7CiAgICAgIGNvbnN0IHZvbCA9IG52LnZvbHVtZXNbc3RhdG1hcElkeF07CiAgICAgIGNvbnN0IGxvUmF3ID0gZmxvb3JJbnB1dCA/IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9taW4iKTsKICAgICAgY29uc3QgaGlSYXcgPSBjZWlsSW5wdXQgPyBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9tYXgiKTsKICAgICAgLy8gQm90aCBlZGdlcyBhcmUgbWFnbml0dWRlczogdGhlIGZsb29yIHN0YXlzIGFib3ZlIHplcm8gYW5kIHRoZSBjZWlsaW5nCiAgICAgIC8vIHN0YXlzIGFib3ZlIHRoZSBmbG9vci4KICAgICAgY29uc3QgbG8gPSBpc051bWJlcihsb1JhdykgPyBjbGFtcEZsb29yKGxvUmF3KSA6IG51bGw7CiAgICAgIGNvbnN0IGZsb29yID0gbG8gPT09IG51bGwgPyB2b2wuY2FsX21pbiA6IGxvOwogICAgICBjb25zdCBoaSA9IGlzTnVtYmVyKGhpUmF3KQogICAgICAgID8gTWF0aC5tYXgoTWF0aC5hYnMoaGlSYXcpLCBmbG9vciArIGZsb29yRXBzKQogICAgICAgIDogbnVsbDsKICAgICAgaWYgKGxvICE9PSBudWxsKSB2b2wuY2FsX21pbiA9IGxvOwogICAgICBpZiAoaGkgIT09IG51bGwpIHZvbC5jYWxfbWF4ID0gaGk7CiAgICAgIGlmIChtb2RlbC5nZXQoIm1pcnJvcl9uZWdhdGl2ZSIpKSB7CiAgICAgICAgaWYgKGhpICE9PSBudWxsKSB2b2wuY2FsX21pbk5lZyA9IC1oaTsKICAgICAgICBpZiAobG8gIT09IG51bGwpIHZvbC5jYWxfbWF4TmVnID0gLWxvOwogICAgICB9IGVsc2UgaWYgKGxvICE9PSBudWxsKSB7CiAgICAgICAgdm9sLmNhbF9tYXhOZWcgPSAtbG87CiAgICAgIH0KICAgICAgbnYudXBkYXRlR0xWb2x1bWUoKTsKICAgICAgcmV0dXJuIHsgbG8sIGhpIH07CiAgICB9CgogICAgaWYgKGZsb29ySW5wdXQpIHsKICAgICAgZmxvb3JJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsICgpID0+IHsKICAgICAgICBjb25zdCBhcHBsaWVkID0gYXBwbHlXaW5kb3coKTsKICAgICAgICBjb25zdCBsbyA9IGFwcGxpZWQgJiYgYXBwbGllZC5sbyAhPT0gbnVsbAogICAgICAgICAgPyBhcHBsaWVkLmxvCiAgICAgICAgICA6IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgICAgZmxvb3JWYWx1ZS50ZXh0Q29udGVudCA9IGZvcm1hdFZhbHVlKGxvKTsKICAgICAgICBtb2RlbC5zZXQoImNhbF9taW4iLCBsbyk7CiAgICAgICAgbW9kZWwuc2F2ZV9jaGFuZ2VzKCk7CiAgICAgIH0pOwogICAgfQogICAgaWYgKGNlaWxJbnB1dCkgewogICAgICBjZWlsSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCAoKSA9PiB7CiAgICAgICAgY29uc3QgYXBwbGllZCA9IGFwcGx5V2luZG93KCk7CiAgICAgICAgY29uc3QgaGkgPSBhcHBsaWVkICYmIGFwcGxpZWQuaGkgIT09IG51bGwKICAgICAgICAgID8gYXBwbGllZC5oaQogICAgICAgICAgOiBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSk7CiAgICAgICAgY2VpbFZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaGkpOwogICAgICAgIG1vZGVsLnNldCgiY2FsX21heCIsIGhpKTsKICAgICAgICBtb2RlbC5zYXZlX2NoYW5nZXMoKTsKICAgICAgfSk7CiAgICB9CgogICAgLy8gLS0tIFB5dGhvbiAtPiBKUyByZWFjdGl2aXR5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvLwogICAgY29uc3Qgb25CeXRlcyA9ICgpID0+IGxvYWRTdGFjaygpOwogICAgbW9kZWwub24oImNoYW5nZTpzdGF0bWFwX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmJnX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmF0bGFzX2J5dGVzIiwgb25CeXRlcyk7CgogICAgbW9kZWwub24oImNoYW5nZTpjYWxfbWluIiwgKCkgPT4gewogICAgICBpZiAoZmxvb3JJbnB1dCkgZmxvb3JJbnB1dC52YWx1ZSA9IG1vZGVsLmdldCgiY2FsX21pbiIpID8/IGZsb29ySW5wdXQudmFsdWU7CiAgICAgIGlmIChmbG9vclZhbHVlKSBmbG9vclZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgIGFwcGx5V2luZG93KCk7CiAgICB9KTsKICAgIG1vZGVsLm9uKCJjaGFuZ2U6Y2FsX21heCIsICgpID0+IHsKICAgICAgaWYgKGNlaWxJbnB1dCkgY2VpbElucHV0LnZhbHVlID0gbW9kZWwuZ2V0KCJjYWxfbWF4IikgPz8gY2VpbElucHV0LnZhbHVlOwogICAgICBpZiAoY2VpbFZhbHVlKSBjZWlsVmFsdWUudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShjZWlsSW5wdXQudmFsdWUpOwogICAgICBhcHBseVdpbmRvdygpOwogICAgfSk7CiAgICBtb2RlbC5vbigiY2hhbmdlOnNsaWNlX3R5cGUiLCAoKSA9PgogICAgICBudi5zZXRTbGljZVR5cGUoU0xJQ0VfVFlQRVttb2RlbC5nZXQoInNsaWNlX3R5cGUiKV0gPz8gU0xJQ0VfVFlQRS5NVUxUSVBMQU5BUiksCiAgICApOwogICAgbW9kZWwub24oImNoYW5nZTpjb2xvcmJhciIsICgpID0+IHsKICAgICAgbnYub3B0cy5pc0NvbG9yYmFyID0gbW9kZWwuZ2V0KCJjb2xvcmJhciIpOwogICAgICBudi5kcmF3U2NlbmUoKTsKICAgIH0pOwogICAgbW9kZWwub24oImNoYW5nZTphdGxhc19vdXRsaW5lIiwgKCkgPT4gewogICAgICBudi5vcHRzLmF0bGFzT3V0bGluZSA9IG1vZGVsLmdldCgiYXRsYXNfb3V0bGluZSIpIHx8IDA7CiAgICAgIG52LmRyYXdTY2VuZSgpOwogICAgfSk7CgogICAgLy8gbmlpdnVlIGhhcyBubyBkZXN0cm95KCk7IGRyb3AgdGhlIFdlYkdMIGNvbnRleHQgb24gdGVhcmRvd24gLyByZS1yZW5kZXIKICAgIC8vIHNvIHJlcGVhdGVkIGNlbGwgcnVucyBkb24ndCBsZWFrIEdMIGNvbnRleHRzIChicm93c2VycyBjYXAgdGhlbSkuCiAgICByZXR1cm4gKCkgPT4gewogICAgICBjYW52YXMKICAgICAgICAuZ2V0Q29udGV4dCgid2ViZ2wyIikKICAgICAgICA/LmdldEV4dGVuc2lvbigiV0VCR0xfbG9zZV9jb250ZXh0IikKICAgICAgICA/Lmxvc2VDb250ZXh0KCk7CiAgICB9OwogIH0sCn07Cg==\"' data-label=\"null\" data-model-id='\"a1b1669d8a0f4cbd88d57078ca84837f\"'\u003e\u003c/div\u003e\u003cdiv class=\"marimo-book-plotly\" data-config=\"{}\" data-figure='{\"data\":[{\"hovertemplate\":\"TR: %{x}\\u003cbr\\u003eIntensity: %{y:.4f}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#EF553B\",\"width\":2},\"mode\":\"lines\",\"name\":\"Timecourse\",\"x\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127],\"y\":{\"dtype\":\"f4\",\"bdata\":\"yH7Ft8AGGru3PXu6RiGbuq+KnjoX2CK6iYGxOi09sDp4p246PNm/Org9yroBZum4VZADumtGCrsHV9g600IvudQs9rrUlpe6S79buhvmGTrdVnq6IkwgueURx7rQNic6UMfJOtANGTsPYAo7SIwvO7AoPjpLMcu5m0zgusT85rr0F0q62YaFupzB/jkLlwM7WrZfus4WzTpImfG5LYfjOf9dCboZF+06RMoPumTsbbok/Ai6WkYbu3pBzrb/uaO65ioLOr9cxrr8FSS6ottDunQR+DmSJ8U5vvr9OuS+9Dq1ez26J357OjHhtrkVQ+A60jmcOre56Lr8LSy5nsPRt4WQAzvhi6m6GeayusdKDDm2Fr2525bFOkDt1LrmI0S64j78Oou9CzowuE+65RV8OBuRE7u7SpE53C3JOooe5Lr0sZI613Aeux/vADqzKCW63ZivOT0b6DqlKB26Sr3mN8T/9zoMqns6myHqOsoNzLrSo/i5a8okust39Loo9vm5ZsWmOrpuZrlf7PU6tS40uJtViTpJPo26ZQD8OV7t17ql/8m6XgqCOjWWMblE05s6S0y4ujPhFrnYZv+5LI4IumpiqTqv/KS6ChR8OpO75LqG7II6AUI2OZEuqDoLb2U5aZT6ufl1uDq6GdC6ffv+Oczg2To++125uxVWOv67LTg=\"},\"type\":\"scatter\",\"xaxis\":\"x\",\"yaxis\":\"y\"},{\"hovertemplate\":\"Freq: %{x:.4f} Hz\\u003cbr\\u003ePower: %{y:.4e}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#636EFA\",\"width\":2},\"mode\":\"lines\",\"name\":\"Power\",\"x\":{\"dtype\":\"f8\",\"bdata\":\"q6qqqqqqaj+rqqqqqqp6PwAAAAAAAIQ/q6qqqqqqij+rqqqqqqqQPwAAAAAAAJQ/VlVVVVVVlz+rqqqqqqqaPwAAAAAAAJ4/q6qqqqqqoD9WVVVVVVWiPwAAAAAAAKQ/q6qqqqqqpT9WVVVVVVWnPwAAAAAAAKk/q6qqqqqqqj9WVVVVVVWsPwAAAAAAAK4/q6qqqqqqrz+rqqqqqqqwPwAAAAAAgLE/VlVVVVVVsj+rqqqqqiqzPwAAAAAAALQ/VlVVVVXVtD+rqqqqqqq1PwAAAAAAgLY/VlVVVVVVtz+rqqqqqiq4PwAAAAAAALk/VlVVVVXVuT+rqqqqqqq6PwAAAAAAgLs/VlVVVVVVvD+rqqqqqiq9PwAAAAAAAL4/VlVVVVXVvj+rqqqqqqq/PwAAAAAAQMA/q6qqqqqqwD9WVVVVVRXBPwAAAAAAgME/q6qqqqrqwT9WVVVVVVXCPwAAAAAAwMI/q6qqqqoqwz9WVVVVVZXDPwAAAAAAAMQ/q6qqqqpqxD9WVVVVVdXEPwAAAAAAQMU/q6qqqqqqxT9WVVVVVRXGPwAAAAAAgMY/q6qqqqrqxj9WVVVVVVXHPwAAAAAAwMc/q6qqqqoqyD9WVVVVVZXIPwAAAAAAAMk/q6qqqqpqyT9WVVVVVdXJPwAAAAAAQMo/\"},\"y\":{\"dtype\":\"f4\",\"bdata\":\"SoFONCevuzT06S83IxzSORkW3DizXd83wNbHONxokjoZp8g5tWJHOQOTSzkuUSQ5mRTQOUJLZjpJKvE1PCUkOEApbTi2zNU5Z0mBODssSjnvAkY4NXGMOVAEMjiu25o5apaROJjAtDkb96c4rkQzOaadBzlG+BM5GsQ8OfTAfzg7LEE42a+LOCm3fzhiLek4HqZQOAGG1jg5dzc3XEo3OeiUETiRV2Q5Z2MkN9CXCDlxhQo59tmhOMqyCTlNvwU53Kv5OceX7TlFeOg528bjON66iDh3NJI54wGKOfRfnDrkpMA5NT+wOD/pkzeB/Bw4LjpRORGdBjhUSpM5\"},\"type\":\"scatter\",\"xaxis\":\"x2\",\"yaxis\":\"y2\"}],\"layout\":{\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermap\":[{\"type\":\"scattermap\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,0.41000000000000003],\"title\":{\"text\":\"TR\"}},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Intensity (AU)\"}},\"xaxis2\":{\"anchor\":\"y2\",\"domain\":[0.5900000000000001,1.0],\"title\":{\"text\":\"Frequency (Hz)\"}},\"yaxis2\":{\"anchor\":\"x2\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Power\"}},\"annotations\":[{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Timecourse (TR=2.4s)\",\"x\":0.20500000000000002,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"},{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Power Spectrum\",\"x\":0.795,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"}],\"margin\":{\"t\":40,\"b\":50,\"l\":70,\"r\":30},\"height\":280,\"showlegend\":false,\"dragmode\":\"zoom\"}}'\u003e\u003c/div\u003e\u003c/div\u003e\n\u003c/div\u003e"},"4":{"12":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cmarimo-slider data-initial-value='4' data-label='\u0026quot;\u0026#92;u003cspan class=\u0026#92;\u0026quot;markdown prose dark:prose-invert contents\u0026#92;\u0026quot;\u0026#92;u003e\u0026#92;u003cspan class=\u0026#92;\u0026quot;paragraph\u0026#92;\u0026quot;\u0026#92;u003eComponent\u0026#92;u003c/span\u0026#92;u003e\u0026#92;u003c/span\u0026#92;u003e\u0026quot;' data-start='0' data-stop='9' data-step='1' data-steps='[]' data-debounce='false' data-disabled='false' data-orientation='\u0026quot;horizontal\u0026quot;' data-show-value='true' data-include-input='false' data-full-width='false'\u003e\u003c/marimo-slider\u003e\n\u003c/div\u003e","13":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cdiv style=\"display: flex;flex: 1;flex-direction: column;justify-content: flex-start;align-items: normal;flex-wrap: nowrap;gap: 0.5rem\"\u003e\u003cspan class=\"markdown prose dark:prose-invert contents\"\u003e\u003cspan class=\"paragraph\"\u003e\u003cstrong\u003eComponent 5 of 10\u003c/strong\u003e\u003c/span\u003e\u003c/span\u003e\u003cdiv class=\"marimo-book-anywidget\" data-buffers='[{\"path\": [\"atlas_bytes\"], \"empty\": true}, {\"path\": [\"bg_bytes\"], \"url\": \"assets/anywidget/c02b4524b0c54de882947847c0f613f75d3131c979be42145b19a46de3dece42.bin\", \"size\": 533672}, {\"path\": [\"statmap_bytes\"], \"url\": \"assets/anywidget/bfa7b37e4aba8b55d0914a673d52222d99ecaff89cff58e88abc197589782053.bin\", \"size\": 912422}]' data-initial-value='{\"_anywidget_id\": \"nltools.data.braindata.viewer._NiivueViewer\", \"_dom_classes\": [], \"_model_module\": \"anywidget\", \"_model_module_version\": \"~0.10.*\", \"_model_name\": \"AnyModel\", \"_view_count\": null, \"_view_module\": \"anywidget\", \"_view_module_version\": \"~0.10.*\", \"_view_name\": \"AnyView\", \"atlas_lut\": {}, \"atlas_name\": \"\", \"atlas_outline\": 0.0, \"cal_max\": 2.4022198009490965, \"cal_max_neg\": -2.0, \"cal_min\": 2.0, \"cal_min_neg\": -2.4022198009490965, \"colorbar\": true, \"controls\": true, \"height\": 600, \"layout\": \"IPY_MODEL_5fcf42ce292f4c01a38e20ee352f1276\", \"mirror_negative\": true, \"niivue_opts\": {}, \"slice_type\": \"MULTIPLANAR\", \"slider_bounds\": {\"min\": 0.12499574661254882, \"max\": 24.999149322509766, \"value_low\": 2.0, \"value_high\": 2.4022198009490965, \"step\": 0.12499574661254882}, \"statmap\": {\"name\": \"statmap\", \"colormap\": \"warm\", \"colormap_negative\": \"winter\", \"opacity\": 1.0}, \"tabbable\": null, \"tooltip\": null}' data-js-url='\"data:text/javascript;base64,Ly8gbmlpdnVlIHZpZXdlciBmb3IgQnJhaW5EYXRhLmlwbG90KCksIGRyaXZlbiB0aHJvdWdoIGFueXdpZGdldCdzICpzdGFuZGFyZCoKLy8gbW9kZWwgQVBJIChnZXQgLyBzZXQgLyBzYXZlX2NoYW5nZXMgLyBvbikgb25seSDigJQgbm8gaG9zdC1zcGVjaWZpYyBwcm90b2NvbAovLyAodGhlIGNvbnRyYXN0IHdpdGggaXB5bmlpdnVlLCBzZWUgY29zYW5sYWIvbmx0b29scyM0NTUpLCBzbyB0aGUgd2lkZ2V0IHdvcmtzCi8vIGlkZW50aWNhbGx5IGluIEp1cHl0ZXIgYW5kIGBtYXJpbW8gZWRpdGAuCi8vCi8vIG5paXZ1ZSBpdHNlbGYgaXMgcHVsbGVkIGZyb20gYSBDRE4gYXMgYW4gRVMgbW9kdWxlLiBgX2VzbWAgaXMgYW4gRVMgbW9kdWxlLCBzbwovLyBhIHRvcC1sZXZlbCBgaW1wb3J0YCBpcyByZXNvbHZlZCBieSB0aGUgYnJvd3NlciBhdCByZW5kZXIgdGltZS4gVGhlIHBpbiBrZWVwcwovLyB0aGUgQVBJIHN0YWJsZS4KaW1wb3J0IHsKICBOaWl2dWUsCiAgTlZJbWFnZSwKICBTTElDRV9UWVBFLAp9IGZyb20gImh0dHBzOi8vZXNtLnNoL0BuaWl2dWUvbmlpdnVlQDAuNjkuMCI7CgovLyBBIHRyYWl0bGV0cyBgQnl0ZXNgIHRyYWl0IGFycml2ZXMgaW4gSlMgYXMgYSBEYXRhVmlldyBvdmVyIGEgc2hhcmVkIGJ1ZmZlci4KLy8gbmlpdnVlIHdhbnRzIGEgc3RhbmRhbG9uZSBBcnJheUJ1ZmZlciwgc28gc2xpY2Ugb3V0IGV4YWN0bHkgdGhpcyB2aWV3J3MKLy8gd2luZG93LiBFbXB0eSBieXRlcyAoYW4gYWJzZW50IG9wdGlvbmFsIHZvbHVtZSkgeWllbGQgYG51bGxgLgpmdW5jdGlvbiBieXRlc1RvQXJyYXlCdWZmZXIoZHYpIHsKICBpZiAoIWR2IHx8IGR2LmJ5dGVMZW5ndGggPT09IDApIHJldHVybiBudWxsOwogIHJldHVybiBkdi5idWZmZXIuc2xpY2UoZHYuYnl0ZU9mZnNldCwgZHYuYnl0ZU9mZnNldCArIGR2LmJ5dGVMZW5ndGgpOwp9CgovLyBOVkltYWdlLm5ldyB0cmVhdHMgTmFOIGNhbF9taW4vY2FsX21heCBhcyAiYXV0byIgKHBlcmNlbnRpbGUtZGVyaXZlZCkuIEEgbnVsbAovLyB0cmFpdCAod2luZG93IGxlZnQgb24gYXV0bykgbWFwcyB0byBOYU47IGEgbnVtYmVyIHBhc3NlcyB0aHJvdWdoLgpmdW5jdGlvbiBvck5hTih4KSB7CiAgcmV0dXJuIHggPT09IG51bGwgfHwgeCA9PT0gdW5kZWZpbmVkID8gTmFOIDogeDsKfQoKLy8gQSB0cmFpdCBvciBzbGlkZXIgdmFsdWUgdGhhdCBpcyByZWFsbHkgYSBudW1iZXIgKGEgbnVsbC91bmRlZmluZWQgdHJhaXQgb3IgYQovLyBOYU4gcGFyc2UgbWVhbnMgImxlYXZlIHRoaXMgZWRnZSBhbG9uZSIpLgpmdW5jdGlvbiBpc051bWJlcih4KSB7CiAgcmV0dXJuIHggIT09IG51bGwgJiYgeCAhPT0gdW5kZWZpbmVkICYmICFOdW1iZXIuaXNOYU4oeCk7Cn0KCmZ1bmN0aW9uIGZvcm1hdFZhbHVlKHZhbHVlKSB7CiAgY29uc3QgbnVtYmVyID0gTnVtYmVyKHZhbHVlKTsKICBpZiAoIU51bWJlci5pc0Zpbml0ZShudW1iZXIpKSByZXR1cm4gIuKAlCI7CiAgcmV0dXJuIE51bWJlci5wYXJzZUZsb2F0KG51bWJlci50b1ByZWNpc2lvbig0KSkudG9TdHJpbmcoKTsKfQoKZXhwb3J0IGRlZmF1bHQgewogIGFzeW5jIHJlbmRlcih7IG1vZGVsLCBlbCB9KSB7CiAgICBlbC5zdHlsZS53aWR0aCA9ICIxMDAlIjsKCiAgICAvLyAtLS0gRE9NOiBvcHRpb25hbCB0aHJlc2hvbGQgY29udHJvbHMgKyB0aGUgV2ViR0wgY2FudmFzIC0tLS0tLS0tLS0tLS0tIC8vCiAgICBsZXQgZmxvb3JJbnB1dCA9IG51bGw7CiAgICBsZXQgY2VpbElucHV0ID0gbnVsbDsKICAgIGxldCBmbG9vclZhbHVlID0gbnVsbDsKICAgIGxldCBjZWlsVmFsdWUgPSBudWxsOwogICAgY29uc3QgYm91bmRzID0gbW9kZWwuZ2V0KCJzbGlkZXJfYm91bmRzIikgfHwge307CiAgICAvLyBUaGUgd2luZG93IGlzIGEgbWFnbml0dWRlIHdpbmRvdyBtaXJyb3JlZCBvbnRvIHRoZSBuZWdhdGl2ZSBsaW1iLCBhbmQgYQogICAgLy8gZmxvb3Igb2YgemVybyAob3IgYmVsb3cpIGFkbWl0cyBldmVyeSB6ZXJvLXZhbHVlZCB2b3hlbCDigJQgdGhlIHdob2xlCiAgICAvLyB2b2x1bWUgYm94IG91dHNpZGUgdGhlIG1hc2sgcGFpbnRzIGluIHRoZSBuZWdhdGl2ZSBjb2xvcm1hcC4gTmV2ZXIgbGV0CiAgICAvLyB0aGUgYXBwbGllZCBmbG9vciByZWFjaCB6ZXJvLCB3aGF0ZXZlciB0aGUgc2xpZGVyIG9yIHRoZSBtb2RlbCBzYXlzLgogICAgLy8KICAgIC8vIFRoZSBlcHNpbG9uIGlzIHRoZSBzbGlkZXIncyBvd24gbG93ZXIgYm91bmQsIHdoaWNoIFB5dGhvbiBndWFyYW50ZWVzIGlzCiAgICAvLyBzdHJpY3RseSBwb3NpdGl2ZSBhbmQgYXQgb3IgYmVsb3cgdGhlIHJlc29sdmVkIGBjYWxfbWluYC4gRGVyaXZpbmcgaXQKICAgIC8vIGhlcmUgaW5zdGVhZCAoZnJvbSB0aGUgc3RlcCwgc2F5KSB3b3VsZCBsZXQgdGhlIHR3byBkcmlmdCBhcGFydCBhbmQKICAgIC8vIHJhaXNlIHRoZSByZW5kZXJlZCBmbG9vciBhYm92ZSB0aGUgd2luZG93IFB5dGhvbiByZXNvbHZlZC4KICAgIGNvbnN0IGZsb29yRXBzID0gTnVtYmVyKGJvdW5kcy5taW4pID4gMCA/IE51bWJlcihib3VuZHMubWluKSA6IDFlLTk7CiAgICBjb25zdCBjbGFtcEZsb29yID0gKHYpID0+IE1hdGgubWF4KE1hdGguYWJzKHYpLCBmbG9vckVwcyk7CgogICAgaWYgKG1vZGVsLmdldCgiY29udHJvbHMiKSkgewogICAgICBjb25zdCBjb250cm9scyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICBjb250cm9scy5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAiZGlzcGxheTpmbGV4O2dhcDowLjc1cmVtO2FsaWduLWl0ZW1zOmNlbnRlcjtmb250OjEycHgvMS40IHN5c3RlbS11aSwiICsKICAgICAgICAic2Fucy1zZXJpZjtwYWRkaW5nOjRweCAycHg7ZmxleC13cmFwOndyYXAiOwoKICAgICAgY29uc3QgbWtSYW5nZSA9IChsYWJlbFRleHQsIHZhbHVlKSA9PiB7CiAgICAgICAgY29uc3Qgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7CiAgICAgICAgd3JhcC5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAgICJkaXNwbGF5OmZsZXg7Z2FwOjAuNHJlbTthbGlnbi1pdGVtczpjZW50ZXI7ZmxleDoxIDEgMjAwcHgiOwogICAgICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgc3Bhbi50ZXh0Q29udGVudCA9IGxhYmVsVGV4dDsKICAgICAgICBjb25zdCBsb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgbG93LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoYm91bmRzLm1pbiA/PyAwKTsKICAgICAgICBjb25zdCBoaWdoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgIGhpZ2gudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShib3VuZHMubWF4ID8/IDEpOwogICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgICAgICBpbnB1dC50eXBlID0gInJhbmdlIjsKICAgICAgICBpbnB1dC5taW4gPSBib3VuZHMubWluID8/IDA7CiAgICAgICAgaW5wdXQubWF4ID0gYm91bmRzLm1heCA/PyAxOwogICAgICAgIGlucHV0LnN0ZXAgPSBib3VuZHMuc3RlcCA/PyAwLjAxOwogICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUgPz8gYm91bmRzLm1pbiA/PyAwOwogICAgICAgIGlucHV0LnN0eWxlLmZsZXggPSAiMSI7CiAgICAgICAgY29uc3Qgb3V0cHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3V0cHV0Iik7CiAgICAgICAgb3V0cHV0LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaW5wdXQudmFsdWUpOwogICAgICAgIG91dHB1dC5zdHlsZS5jc3NUZXh0ID0gIm1pbi13aWR0aDo2Y2g7dGV4dC1hbGlnbjpyaWdodDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXMiOwogICAgICAgIHdyYXAuYXBwZW5kKHNwYW4sIGxvdywgaW5wdXQsIGhpZ2gsIG91dHB1dCk7CiAgICAgICAgY29udHJvbHMuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICAgICAgcmV0dXJuIFtpbnB1dCwgb3V0cHV0XTsKICAgICAgfTsKCiAgICAgIFtmbG9vcklucHV0LCBmbG9vclZhbHVlXSA9IG1rUmFuZ2UoIm1pbiIsIGJvdW5kcy52YWx1ZV9sb3cpOwogICAgICBbY2VpbElucHV0LCBjZWlsVmFsdWVdID0gbWtSYW5nZSgibWF4IiwgYm91bmRzLnZhbHVlX2hpZ2gpOwogICAgICBlbC5hcHBlbmRDaGlsZChjb250cm9scyk7CiAgICB9CgogICAgY29uc3QgaGVpZ2h0ID0gbW9kZWwuZ2V0KCJoZWlnaHQiKSB8fCA0MDA7CiAgICAvLyBuaWl2dWUncyByZXNpemUgb2JzZXJ2ZXIgc2l6ZXMgdGhlIGNhbnZhcyBmcm9tIGl0cyAqcGFyZW50KiBhbmQgcmV3cml0ZXMKICAgIC8vIHRoZSBjYW52YXMncyBvd24gaW5saW5lIGhlaWdodCB0byAxMDAlLCBzbyB0aGUgcmVxdWVzdGVkIGhlaWdodCBoYXMgdG8KICAgIC8vIGxpdmUgb24gYSB3cmFwcGVyLiBXaXRob3V0IGl0IHRoZSB2aWV3ZXIgY29sbGFwc2VzIHRvIHRoZSBwYXJlbnQncwogICAgLy8gbmF0dXJhbCBoZWlnaHQgKH4xNTBweCkgaW4gYW55IGhvc3QgdGhhdCBkb2Vzbid0IHNpemUgdGhlIHdpZGdldCBmb3IKICAgIC8vIHVzIOKAlCBzdGF0aWMvZXhwb3J0ZWQgcGFnZXMsIGlmcmFtZXMsIHBsYWluIEp1cHl0ZXIgb3V0cHV0IGFyZWFzLgogICAgY29uc3QgY2FudmFzV3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgY2FudmFzV3JhcC5zdHlsZS5jc3NUZXh0ID0gYHdpZHRoOjEwMCU7aGVpZ2h0OiR7aGVpZ2h0fXB4YDsKICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogICAgY2FudmFzLnN0eWxlLmNzc1RleHQgPSAid2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtkaXNwbGF5OmJsb2NrIjsKICAgIGNhbnZhc1dyYXAuYXBwZW5kQ2hpbGQoY2FudmFzKTsKICAgIGVsLmFwcGVuZENoaWxkKGNhbnZhc1dyYXApOwoKICAgIC8vIC0tLSBuaWl2dWUgaW5zdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vCiAgICBjb25zdCBudiA9IG5ldyBOaWl2dWUoewogICAgICBpc0NvbG9yYmFyOiBtb2RlbC5nZXQoImNvbG9yYmFyIiksCiAgICAgIC4uLihtb2RlbC5nZXQoIm5paXZ1ZV9vcHRzIikgfHwge30pLAogICAgfSk7CiAgICBhd2FpdCBudi5hdHRhY2hUb0NhbnZhcyhjYW52YXMpOwoKICAgIC8vIEluZGV4IG9mIHRoZSBzdGF0IG1hcCBpbnNpZGUgbnYudm9sdW1lcyAoc2V0IGJ5IGxvYWRTdGFjayk7IHRoZSB0aHJlc2hvbGQKICAgIC8vIGNvbnRyb2xzIGRyaXZlIHRoaXMgdm9sdW1lJ3Mgd2luZG93LgogICAgbGV0IHN0YXRtYXBJZHggPSAtMTsKCiAgICAvLyBCdWlsZCB0aGUgdm9sdW1lIHN0YWNrIFtiYWNrZ3JvdW5kPywgc3RhdG1hcCwgYXRsYXM/XSBmcm9tIHRoZSBieXRlCiAgICAvLyB0cmFpdHMgKyBkaXNwbGF5IHBhcmFtcy4gUmVidWlsdCB3aGVuZXZlciBhbnkgdm9sdW1lJ3MgYnl0ZXMgY2hhbmdlLgogICAgYXN5bmMgZnVuY3Rpb24gbG9hZFN0YWNrKCkgewogICAgICB3aGlsZSAobnYudm9sdW1lcy5sZW5ndGgpIG52LnJlbW92ZVZvbHVtZUJ5SW5kZXgoMCk7CiAgICAgIHN0YXRtYXBJZHggPSAtMTsKCiAgICAgIGNvbnN0IGJnID0gYnl0ZXNUb0FycmF5QnVmZmVyKG1vZGVsLmdldCgiYmdfYnl0ZXMiKSk7CiAgICAgIGlmIChiZykgewogICAgICAgIGNvbnN0IGJnVm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoYmcsICJiYWNrZ3JvdW5kLm5paS5neiIsICJncmF5Iik7CiAgICAgICAgYmdWb2wuY29sb3JiYXJWaXNpYmxlID0gZmFsc2U7CiAgICAgICAgbnYuYWRkVm9sdW1lKGJnVm9sKTsKICAgICAgfQoKICAgICAgY29uc3Qgc3RhdCA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoInN0YXRtYXBfYnl0ZXMiKSk7CiAgICAgIGlmIChzdGF0KSB7CiAgICAgICAgY29uc3QgcCA9IG1vZGVsLmdldCgic3RhdG1hcCIpIHx8IHt9OwogICAgICAgIGNvbnN0IHZvbCA9IGF3YWl0IE5WSW1hZ2UubmV3KAogICAgICAgICAgc3RhdCwKICAgICAgICAgIChwLm5hbWUgfHwgInN0YXRtYXAiKSArICIubmlpLmd6IiwKICAgICAgICAgIHAuY29sb3JtYXAgfHwgIndhcm0iLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICAgIG51bGwsCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9taW4iKSksCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9tYXgiKSksCiAgICAgICAgKTsKICAgICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKHZvbC5jYWxfbWluKSkgdm9sLmNhbF9taW4gPSBjbGFtcEZsb29yKHZvbC5jYWxfbWluKTsKICAgICAgICBpZiAocC5jb2xvcm1hcF9uZWdhdGl2ZSkgdm9sLmNvbG9ybWFwTmVnYXRpdmUgPSBwLmNvbG9ybWFwX25lZ2F0aXZlOwogICAgICAgIHZvbC5jYWxfbWluTmVnID0gb3JOYU4obW9kZWwuZ2V0KCJjYWxfbWluX25lZyIpKTsKICAgICAgICB2b2wuY2FsX21heE5lZyA9IG9yTmFOKG1vZGVsLmdldCgiY2FsX21heF9uZWciKSk7CiAgICAgICAgdm9sLmNvbG9yYmFyVmlzaWJsZSA9IHRydWU7CiAgICAgICAgc3RhdG1hcElkeCA9IG52LnZvbHVtZXMubGVuZ3RoOwogICAgICAgIG52LmFkZFZvbHVtZSh2b2wpOwogICAgICB9CgogICAgICBjb25zdCBhdGxhcyA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoImF0bGFzX2J5dGVzIikpOwogICAgICBpZiAoYXRsYXMpIHsKICAgICAgICBjb25zdCBwID0gbW9kZWwuZ2V0KCJzdGF0bWFwIikgfHwge307CiAgICAgICAgY29uc3Qgdm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoCiAgICAgICAgICBhdGxhcywKICAgICAgICAgIChtb2RlbC5nZXQoImF0bGFzX25hbWUiKSB8fCAiYXRsYXMiKSArICIubmlpLmd6IiwKICAgICAgICAgICIiLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICApOwogICAgICAgIGNvbnN0IGx1dCA9IG1vZGVsLmdldCgiYXRsYXNfbHV0Iik7CiAgICAgICAgaWYgKGx1dCAmJiBsdXQubGFiZWxzKSB2b2wuc2V0Q29sb3JtYXBMYWJlbChsdXQpOwogICAgICAgIHZvbC5jb2xvcmJhclZpc2libGUgPSBmYWxzZTsKICAgICAgICBudi5hZGRWb2x1bWUodm9sKTsKICAgICAgfQoKICAgICAgbnYub3B0cy5hdGxhc091dGxpbmUgPSBtb2RlbC5nZXQoImF0bGFzX291dGxpbmUiKSB8fCAwOwogICAgICBudi51cGRhdGVHTFZvbHVtZSgpOwogICAgfQoKICAgIGF3YWl0IGxvYWRTdGFjaygpOwogICAgbnYuc2V0U2xpY2VUeXBlKFNMSUNFX1RZUEVbbW9kZWwuZ2V0KCJzbGljZV90eXBlIildID8/IFNMSUNFX1RZUEUuTVVMVElQTEFOQVIpOwoKICAgIC8vIC0tLSB0aHJlc2hvbGQgY29udHJvbHMgLT4gbmlpdnVlICsgUHl0aG9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy8KICAgIC8vIEFwcGxpZXMgdGhlIGNsYW1wZWQgd2luZG93IHRvIG5paXZ1ZSBhbmQgcmV0dXJucyBpdCwgc28gdGhlIGNhbGxlcnMgdGhhdAogICAgLy8gd3JpdGUgYmFjayB0byBQeXRob24gc2VuZCB3aGF0IHdhcyByZW5kZXJlZCByYXRoZXIgdGhhbiB3aGF0IHdhcyBkcmFnZ2VkLgogICAgZnVuY3Rpb24gYXBwbHlXaW5kb3coKSB7CiAgICAgIGlmIChzdGF0bWFwSWR4IDwgMCkgcmV0dXJuIG51bGw7CiAgICAgIGNvbnN0IHZvbCA9IG52LnZvbHVtZXNbc3RhdG1hcElkeF07CiAgICAgIGNvbnN0IGxvUmF3ID0gZmxvb3JJbnB1dCA/IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9taW4iKTsKICAgICAgY29uc3QgaGlSYXcgPSBjZWlsSW5wdXQgPyBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9tYXgiKTsKICAgICAgLy8gQm90aCBlZGdlcyBhcmUgbWFnbml0dWRlczogdGhlIGZsb29yIHN0YXlzIGFib3ZlIHplcm8gYW5kIHRoZSBjZWlsaW5nCiAgICAgIC8vIHN0YXlzIGFib3ZlIHRoZSBmbG9vci4KICAgICAgY29uc3QgbG8gPSBpc051bWJlcihsb1JhdykgPyBjbGFtcEZsb29yKGxvUmF3KSA6IG51bGw7CiAgICAgIGNvbnN0IGZsb29yID0gbG8gPT09IG51bGwgPyB2b2wuY2FsX21pbiA6IGxvOwogICAgICBjb25zdCBoaSA9IGlzTnVtYmVyKGhpUmF3KQogICAgICAgID8gTWF0aC5tYXgoTWF0aC5hYnMoaGlSYXcpLCBmbG9vciArIGZsb29yRXBzKQogICAgICAgIDogbnVsbDsKICAgICAgaWYgKGxvICE9PSBudWxsKSB2b2wuY2FsX21pbiA9IGxvOwogICAgICBpZiAoaGkgIT09IG51bGwpIHZvbC5jYWxfbWF4ID0gaGk7CiAgICAgIGlmIChtb2RlbC5nZXQoIm1pcnJvcl9uZWdhdGl2ZSIpKSB7CiAgICAgICAgaWYgKGhpICE9PSBudWxsKSB2b2wuY2FsX21pbk5lZyA9IC1oaTsKICAgICAgICBpZiAobG8gIT09IG51bGwpIHZvbC5jYWxfbWF4TmVnID0gLWxvOwogICAgICB9IGVsc2UgaWYgKGxvICE9PSBudWxsKSB7CiAgICAgICAgdm9sLmNhbF9tYXhOZWcgPSAtbG87CiAgICAgIH0KICAgICAgbnYudXBkYXRlR0xWb2x1bWUoKTsKICAgICAgcmV0dXJuIHsgbG8sIGhpIH07CiAgICB9CgogICAgaWYgKGZsb29ySW5wdXQpIHsKICAgICAgZmxvb3JJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsICgpID0+IHsKICAgICAgICBjb25zdCBhcHBsaWVkID0gYXBwbHlXaW5kb3coKTsKICAgICAgICBjb25zdCBsbyA9IGFwcGxpZWQgJiYgYXBwbGllZC5sbyAhPT0gbnVsbAogICAgICAgICAgPyBhcHBsaWVkLmxvCiAgICAgICAgICA6IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgICAgZmxvb3JWYWx1ZS50ZXh0Q29udGVudCA9IGZvcm1hdFZhbHVlKGxvKTsKICAgICAgICBtb2RlbC5zZXQoImNhbF9taW4iLCBsbyk7CiAgICAgICAgbW9kZWwuc2F2ZV9jaGFuZ2VzKCk7CiAgICAgIH0pOwogICAgfQogICAgaWYgKGNlaWxJbnB1dCkgewogICAgICBjZWlsSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCAoKSA9PiB7CiAgICAgICAgY29uc3QgYXBwbGllZCA9IGFwcGx5V2luZG93KCk7CiAgICAgICAgY29uc3QgaGkgPSBhcHBsaWVkICYmIGFwcGxpZWQuaGkgIT09IG51bGwKICAgICAgICAgID8gYXBwbGllZC5oaQogICAgICAgICAgOiBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSk7CiAgICAgICAgY2VpbFZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaGkpOwogICAgICAgIG1vZGVsLnNldCgiY2FsX21heCIsIGhpKTsKICAgICAgICBtb2RlbC5zYXZlX2NoYW5nZXMoKTsKICAgICAgfSk7CiAgICB9CgogICAgLy8gLS0tIFB5dGhvbiAtPiBKUyByZWFjdGl2aXR5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvLwogICAgY29uc3Qgb25CeXRlcyA9ICgpID0+IGxvYWRTdGFjaygpOwogICAgbW9kZWwub24oImNoYW5nZTpzdGF0bWFwX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmJnX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmF0bGFzX2J5dGVzIiwgb25CeXRlcyk7CgogICAgbW9kZWwub24oImNoYW5nZTpjYWxfbWluIiwgKCkgPT4gewogICAgICBpZiAoZmxvb3JJbnB1dCkgZmxvb3JJbnB1dC52YWx1ZSA9IG1vZGVsLmdldCgiY2FsX21pbiIpID8/IGZsb29ySW5wdXQudmFsdWU7CiAgICAgIGlmIChmbG9vclZhbHVlKSBmbG9vclZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgIGFwcGx5V2luZG93KCk7CiAgICB9KTsKICAgIG1vZGVsLm9uKCJjaGFuZ2U6Y2FsX21heCIsICgpID0+IHsKICAgICAgaWYgKGNlaWxJbnB1dCkgY2VpbElucHV0LnZhbHVlID0gbW9kZWwuZ2V0KCJjYWxfbWF4IikgPz8gY2VpbElucHV0LnZhbHVlOwogICAgICBpZiAoY2VpbFZhbHVlKSBjZWlsVmFsdWUudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShjZWlsSW5wdXQudmFsdWUpOwogICAgICBhcHBseVdpbmRvdygpOwogICAgfSk7CiAgICBtb2RlbC5vbigiY2hhbmdlOnNsaWNlX3R5cGUiLCAoKSA9PgogICAgICBudi5zZXRTbGljZVR5cGUoU0xJQ0VfVFlQRVttb2RlbC5nZXQoInNsaWNlX3R5cGUiKV0gPz8gU0xJQ0VfVFlQRS5NVUxUSVBMQU5BUiksCiAgICApOwogICAgbW9kZWwub24oImNoYW5nZTpjb2xvcmJhciIsICgpID0+IHsKICAgICAgbnYub3B0cy5pc0NvbG9yYmFyID0gbW9kZWwuZ2V0KCJjb2xvcmJhciIpOwogICAgICBudi5kcmF3U2NlbmUoKTsKICAgIH0pOwogICAgbW9kZWwub24oImNoYW5nZTphdGxhc19vdXRsaW5lIiwgKCkgPT4gewogICAgICBudi5vcHRzLmF0bGFzT3V0bGluZSA9IG1vZGVsLmdldCgiYXRsYXNfb3V0bGluZSIpIHx8IDA7CiAgICAgIG52LmRyYXdTY2VuZSgpOwogICAgfSk7CgogICAgLy8gbmlpdnVlIGhhcyBubyBkZXN0cm95KCk7IGRyb3AgdGhlIFdlYkdMIGNvbnRleHQgb24gdGVhcmRvd24gLyByZS1yZW5kZXIKICAgIC8vIHNvIHJlcGVhdGVkIGNlbGwgcnVucyBkb24ndCBsZWFrIEdMIGNvbnRleHRzIChicm93c2VycyBjYXAgdGhlbSkuCiAgICByZXR1cm4gKCkgPT4gewogICAgICBjYW52YXMKICAgICAgICAuZ2V0Q29udGV4dCgid2ViZ2wyIikKICAgICAgICA/LmdldEV4dGVuc2lvbigiV0VCR0xfbG9zZV9jb250ZXh0IikKICAgICAgICA/Lmxvc2VDb250ZXh0KCk7CiAgICB9OwogIH0sCn07Cg==\"' data-label=\"null\" data-model-id='\"448ff56b8b394a3483c1ae0c52a50380\"'\u003e\u003c/div\u003e\u003cdiv class=\"marimo-book-plotly\" data-config=\"{}\" data-figure='{\"data\":[{\"hovertemplate\":\"TR: %{x}\\u003cbr\\u003eIntensity: %{y:.4f}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#EF553B\",\"width\":2},\"mode\":\"lines\",\"name\":\"Timecourse\",\"x\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127],\"y\":{\"dtype\":\"f4\",\"bdata\":\"j+KjOK/OM7vyznu6ZeSJuWXXnbqwK2U6Me0pO/6bHDvmM9q6UJ8Xu4cohbtD/PW429W5OqOavzr/VZM6yxDQumgsSLoxr026QEuVOsIsCjqKcNs6oiwAu+hYJ7tyWzu7GPTGurlDuLplBh66FoRnOj0upTpbxA871p1sOu2IVjuJbki5ueudOnu3hzrqIRQ7hjI0ug0Qybpiuzu7JQgnOraoo7mNC9Q6rwlfOn63CbrghU+6WesPu7GhI7oZxiu5NquFOU6FuLoR3Fo6MYUvO+KElDnCEgM7FavDOpzLBLtx54+5J2ylusI7wDqvDOk6o/AOOTyCz7r5FaG5R4w5OokPnDma1Ry7bVIXuyNLQDqBlBG6iRflOsc0dLppCIu57G3QOiw0Vblagrk6d+pPul9di7qOzIq6oAZCOuSmIbtvsny6Emd5upGyg7msjQg62wOTOkdN4Tpf+qK6dSrAOigs9DlBa8k604jnOq2j/blw5OY4aJ6iumgYHjv3S/y5hQsSus5s1Lrn96O5tDXGOe3ZWTfeYdq5dMK9OP1A6botW4k6PI6jOstf+zraYQE6ZlzlujnY/LlSjIW6KqmqOroVZrmVhdm6o31auDhTNDjfdDu5KUCtOhpRgzgthng6QBtrOaHjBrs9a3G63fSXOST1bLpbwtg3vSHMulVYiTg=\"},\"type\":\"scatter\",\"xaxis\":\"x\",\"yaxis\":\"y\"},{\"hovertemplate\":\"Freq: %{x:.4f} Hz\\u003cbr\\u003ePower: %{y:.4e}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#636EFA\",\"width\":2},\"mode\":\"lines\",\"name\":\"Power\",\"x\":{\"dtype\":\"f8\",\"bdata\":\"q6qqqqqqaj+rqqqqqqp6PwAAAAAAAIQ/q6qqqqqqij+rqqqqqqqQPwAAAAAAAJQ/VlVVVVVVlz+rqqqqqqqaPwAAAAAAAJ4/q6qqqqqqoD9WVVVVVVWiPwAAAAAAAKQ/q6qqqqqqpT9WVVVVVVWnPwAAAAAAAKk/q6qqqqqqqj9WVVVVVVWsPwAAAAAAAK4/q6qqqqqqrz+rqqqqqqqwPwAAAAAAgLE/VlVVVVVVsj+rqqqqqiqzPwAAAAAAALQ/VlVVVVXVtD+rqqqqqqq1PwAAAAAAgLY/VlVVVVVVtz+rqqqqqiq4PwAAAAAAALk/VlVVVVXVuT+rqqqqqqq6PwAAAAAAgLs/VlVVVVVVvD+rqqqqqiq9PwAAAAAAAL4/VlVVVVXVvj+rqqqqqqq/PwAAAAAAQMA/q6qqqqqqwD9WVVVVVRXBPwAAAAAAgME/q6qqqqrqwT9WVVVVVVXCPwAAAAAAwMI/q6qqqqoqwz9WVVVVVZXDPwAAAAAAAMQ/q6qqqqpqxD9WVVVVVdXEPwAAAAAAQMU/q6qqqqqqxT9WVVVVVRXGPwAAAAAAgMY/q6qqqqrqxj9WVVVVVVXHPwAAAAAAwMc/q6qqqqoqyD9WVVVVVZXIPwAAAAAAAMk/q6qqqqpqyT9WVVVVVdXJPwAAAAAAQMo/\"},\"y\":{\"dtype\":\"f4\",\"bdata\":\"l1TNOPT6ZTn+nrQ2p3CcOHhCzznkVes5Q+5VOq0kPjjz6E46lrfSOdGhxTnvjC46RWb6N6pvwzk47384s9OnOVBCMzpR5oY6pNv1OW5d8zjZ6r43ZXu1OqA0KTr0ufA5k8DeOaivLDiWink5yjOfOM2ECTgzD485UEShOEuu0znUD504s0fhNz9HhDhKIwQ5zGasNsE1OTkFSes3JnUuOI0mjzi+SRo50j4UOZKAqDe3J5E4i4O/OfelSDcJu4o5ZdvJOGhiLTnD97E5NdWYNzT7KTl7gZ84xM5jOZ22GTmcXtM5nGyyOFW++TkzC/g4LsabOS+c/TdsEhU5\"},\"type\":\"scatter\",\"xaxis\":\"x2\",\"yaxis\":\"y2\"}],\"layout\":{\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermap\":[{\"type\":\"scattermap\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,0.41000000000000003],\"title\":{\"text\":\"TR\"}},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Intensity (AU)\"}},\"xaxis2\":{\"anchor\":\"y2\",\"domain\":[0.5900000000000001,1.0],\"title\":{\"text\":\"Frequency (Hz)\"}},\"yaxis2\":{\"anchor\":\"x2\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Power\"}},\"annotations\":[{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Timecourse (TR=2.4s)\",\"x\":0.20500000000000002,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"},{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Power Spectrum\",\"x\":0.795,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"}],\"margin\":{\"t\":40,\"b\":50,\"l\":70,\"r\":30},\"height\":280,\"showlegend\":false,\"dragmode\":\"zoom\"}}'\u003e\u003c/div\u003e\u003c/div\u003e\n\u003c/div\u003e"},"5":{"12":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cmarimo-slider data-initial-value='5' data-label='\u0026quot;\u0026#92;u003cspan class=\u0026#92;\u0026quot;markdown prose dark:prose-invert contents\u0026#92;\u0026quot;\u0026#92;u003e\u0026#92;u003cspan class=\u0026#92;\u0026quot;paragraph\u0026#92;\u0026quot;\u0026#92;u003eComponent\u0026#92;u003c/span\u0026#92;u003e\u0026#92;u003c/span\u0026#92;u003e\u0026quot;' data-start='0' data-stop='9' data-step='1' data-steps='[]' data-debounce='false' data-disabled='false' data-orientation='\u0026quot;horizontal\u0026quot;' data-show-value='true' data-include-input='false' data-full-width='false'\u003e\u003c/marimo-slider\u003e\n\u003c/div\u003e","13":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cdiv style=\"display: flex;flex: 1;flex-direction: column;justify-content: flex-start;align-items: normal;flex-wrap: nowrap;gap: 0.5rem\"\u003e\u003cspan class=\"markdown prose dark:prose-invert contents\"\u003e\u003cspan class=\"paragraph\"\u003e\u003cstrong\u003eComponent 6 of 10\u003c/strong\u003e\u003c/span\u003e\u003c/span\u003e\u003cdiv class=\"marimo-book-anywidget\" data-buffers='[{\"path\": [\"atlas_bytes\"], \"empty\": true}, {\"path\": [\"bg_bytes\"], \"url\": \"assets/anywidget/c02b4524b0c54de882947847c0f613f75d3131c979be42145b19a46de3dece42.bin\", \"size\": 533672}, {\"path\": [\"statmap_bytes\"], \"url\": \"assets/anywidget/cc33b34342cd819eee87c825ceee74c6096b82b469b7af6dd15d6b190a250d56.bin\", \"size\": 912120}]' data-initial-value='{\"_anywidget_id\": \"nltools.data.braindata.viewer._NiivueViewer\", \"_dom_classes\": [], \"_model_module\": \"anywidget\", \"_model_module_version\": \"~0.10.*\", \"_model_name\": \"AnyModel\", \"_view_count\": null, \"_view_module\": \"anywidget\", \"_view_module_version\": \"~0.10.*\", \"_view_name\": \"AnyView\", \"atlas_lut\": {}, \"atlas_name\": \"\", \"atlas_outline\": 0.0, \"cal_max\": 2.0, \"cal_max_neg\": -2.0, \"cal_min\": 2.0, \"cal_min_neg\": -2.0, \"colorbar\": true, \"controls\": true, \"height\": 600, \"layout\": \"IPY_MODEL_ad25d59231bc45518667a312e83f2fe0\", \"mirror_negative\": true, \"niivue_opts\": {}, \"slice_type\": \"MULTIPLANAR\", \"slider_bounds\": {\"min\": 0.15092918395996094, \"max\": 30.185836791992188, \"value_low\": 2.0, \"value_high\": 2.0, \"step\": 0.15092918395996094}, \"statmap\": {\"name\": \"statmap\", \"colormap\": \"warm\", \"colormap_negative\": \"winter\", \"opacity\": 1.0}, \"tabbable\": null, \"tooltip\": null}' data-js-url='\"data:text/javascript;base64,Ly8gbmlpdnVlIHZpZXdlciBmb3IgQnJhaW5EYXRhLmlwbG90KCksIGRyaXZlbiB0aHJvdWdoIGFueXdpZGdldCdzICpzdGFuZGFyZCoKLy8gbW9kZWwgQVBJIChnZXQgLyBzZXQgLyBzYXZlX2NoYW5nZXMgLyBvbikgb25seSDigJQgbm8gaG9zdC1zcGVjaWZpYyBwcm90b2NvbAovLyAodGhlIGNvbnRyYXN0IHdpdGggaXB5bmlpdnVlLCBzZWUgY29zYW5sYWIvbmx0b29scyM0NTUpLCBzbyB0aGUgd2lkZ2V0IHdvcmtzCi8vIGlkZW50aWNhbGx5IGluIEp1cHl0ZXIgYW5kIGBtYXJpbW8gZWRpdGAuCi8vCi8vIG5paXZ1ZSBpdHNlbGYgaXMgcHVsbGVkIGZyb20gYSBDRE4gYXMgYW4gRVMgbW9kdWxlLiBgX2VzbWAgaXMgYW4gRVMgbW9kdWxlLCBzbwovLyBhIHRvcC1sZXZlbCBgaW1wb3J0YCBpcyByZXNvbHZlZCBieSB0aGUgYnJvd3NlciBhdCByZW5kZXIgdGltZS4gVGhlIHBpbiBrZWVwcwovLyB0aGUgQVBJIHN0YWJsZS4KaW1wb3J0IHsKICBOaWl2dWUsCiAgTlZJbWFnZSwKICBTTElDRV9UWVBFLAp9IGZyb20gImh0dHBzOi8vZXNtLnNoL0BuaWl2dWUvbmlpdnVlQDAuNjkuMCI7CgovLyBBIHRyYWl0bGV0cyBgQnl0ZXNgIHRyYWl0IGFycml2ZXMgaW4gSlMgYXMgYSBEYXRhVmlldyBvdmVyIGEgc2hhcmVkIGJ1ZmZlci4KLy8gbmlpdnVlIHdhbnRzIGEgc3RhbmRhbG9uZSBBcnJheUJ1ZmZlciwgc28gc2xpY2Ugb3V0IGV4YWN0bHkgdGhpcyB2aWV3J3MKLy8gd2luZG93LiBFbXB0eSBieXRlcyAoYW4gYWJzZW50IG9wdGlvbmFsIHZvbHVtZSkgeWllbGQgYG51bGxgLgpmdW5jdGlvbiBieXRlc1RvQXJyYXlCdWZmZXIoZHYpIHsKICBpZiAoIWR2IHx8IGR2LmJ5dGVMZW5ndGggPT09IDApIHJldHVybiBudWxsOwogIHJldHVybiBkdi5idWZmZXIuc2xpY2UoZHYuYnl0ZU9mZnNldCwgZHYuYnl0ZU9mZnNldCArIGR2LmJ5dGVMZW5ndGgpOwp9CgovLyBOVkltYWdlLm5ldyB0cmVhdHMgTmFOIGNhbF9taW4vY2FsX21heCBhcyAiYXV0byIgKHBlcmNlbnRpbGUtZGVyaXZlZCkuIEEgbnVsbAovLyB0cmFpdCAod2luZG93IGxlZnQgb24gYXV0bykgbWFwcyB0byBOYU47IGEgbnVtYmVyIHBhc3NlcyB0aHJvdWdoLgpmdW5jdGlvbiBvck5hTih4KSB7CiAgcmV0dXJuIHggPT09IG51bGwgfHwgeCA9PT0gdW5kZWZpbmVkID8gTmFOIDogeDsKfQoKLy8gQSB0cmFpdCBvciBzbGlkZXIgdmFsdWUgdGhhdCBpcyByZWFsbHkgYSBudW1iZXIgKGEgbnVsbC91bmRlZmluZWQgdHJhaXQgb3IgYQovLyBOYU4gcGFyc2UgbWVhbnMgImxlYXZlIHRoaXMgZWRnZSBhbG9uZSIpLgpmdW5jdGlvbiBpc051bWJlcih4KSB7CiAgcmV0dXJuIHggIT09IG51bGwgJiYgeCAhPT0gdW5kZWZpbmVkICYmICFOdW1iZXIuaXNOYU4oeCk7Cn0KCmZ1bmN0aW9uIGZvcm1hdFZhbHVlKHZhbHVlKSB7CiAgY29uc3QgbnVtYmVyID0gTnVtYmVyKHZhbHVlKTsKICBpZiAoIU51bWJlci5pc0Zpbml0ZShudW1iZXIpKSByZXR1cm4gIuKAlCI7CiAgcmV0dXJuIE51bWJlci5wYXJzZUZsb2F0KG51bWJlci50b1ByZWNpc2lvbig0KSkudG9TdHJpbmcoKTsKfQoKZXhwb3J0IGRlZmF1bHQgewogIGFzeW5jIHJlbmRlcih7IG1vZGVsLCBlbCB9KSB7CiAgICBlbC5zdHlsZS53aWR0aCA9ICIxMDAlIjsKCiAgICAvLyAtLS0gRE9NOiBvcHRpb25hbCB0aHJlc2hvbGQgY29udHJvbHMgKyB0aGUgV2ViR0wgY2FudmFzIC0tLS0tLS0tLS0tLS0tIC8vCiAgICBsZXQgZmxvb3JJbnB1dCA9IG51bGw7CiAgICBsZXQgY2VpbElucHV0ID0gbnVsbDsKICAgIGxldCBmbG9vclZhbHVlID0gbnVsbDsKICAgIGxldCBjZWlsVmFsdWUgPSBudWxsOwogICAgY29uc3QgYm91bmRzID0gbW9kZWwuZ2V0KCJzbGlkZXJfYm91bmRzIikgfHwge307CiAgICAvLyBUaGUgd2luZG93IGlzIGEgbWFnbml0dWRlIHdpbmRvdyBtaXJyb3JlZCBvbnRvIHRoZSBuZWdhdGl2ZSBsaW1iLCBhbmQgYQogICAgLy8gZmxvb3Igb2YgemVybyAob3IgYmVsb3cpIGFkbWl0cyBldmVyeSB6ZXJvLXZhbHVlZCB2b3hlbCDigJQgdGhlIHdob2xlCiAgICAvLyB2b2x1bWUgYm94IG91dHNpZGUgdGhlIG1hc2sgcGFpbnRzIGluIHRoZSBuZWdhdGl2ZSBjb2xvcm1hcC4gTmV2ZXIgbGV0CiAgICAvLyB0aGUgYXBwbGllZCBmbG9vciByZWFjaCB6ZXJvLCB3aGF0ZXZlciB0aGUgc2xpZGVyIG9yIHRoZSBtb2RlbCBzYXlzLgogICAgLy8KICAgIC8vIFRoZSBlcHNpbG9uIGlzIHRoZSBzbGlkZXIncyBvd24gbG93ZXIgYm91bmQsIHdoaWNoIFB5dGhvbiBndWFyYW50ZWVzIGlzCiAgICAvLyBzdHJpY3RseSBwb3NpdGl2ZSBhbmQgYXQgb3IgYmVsb3cgdGhlIHJlc29sdmVkIGBjYWxfbWluYC4gRGVyaXZpbmcgaXQKICAgIC8vIGhlcmUgaW5zdGVhZCAoZnJvbSB0aGUgc3RlcCwgc2F5KSB3b3VsZCBsZXQgdGhlIHR3byBkcmlmdCBhcGFydCBhbmQKICAgIC8vIHJhaXNlIHRoZSByZW5kZXJlZCBmbG9vciBhYm92ZSB0aGUgd2luZG93IFB5dGhvbiByZXNvbHZlZC4KICAgIGNvbnN0IGZsb29yRXBzID0gTnVtYmVyKGJvdW5kcy5taW4pID4gMCA/IE51bWJlcihib3VuZHMubWluKSA6IDFlLTk7CiAgICBjb25zdCBjbGFtcEZsb29yID0gKHYpID0+IE1hdGgubWF4KE1hdGguYWJzKHYpLCBmbG9vckVwcyk7CgogICAgaWYgKG1vZGVsLmdldCgiY29udHJvbHMiKSkgewogICAgICBjb25zdCBjb250cm9scyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICBjb250cm9scy5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAiZGlzcGxheTpmbGV4O2dhcDowLjc1cmVtO2FsaWduLWl0ZW1zOmNlbnRlcjtmb250OjEycHgvMS40IHN5c3RlbS11aSwiICsKICAgICAgICAic2Fucy1zZXJpZjtwYWRkaW5nOjRweCAycHg7ZmxleC13cmFwOndyYXAiOwoKICAgICAgY29uc3QgbWtSYW5nZSA9IChsYWJlbFRleHQsIHZhbHVlKSA9PiB7CiAgICAgICAgY29uc3Qgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7CiAgICAgICAgd3JhcC5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAgICJkaXNwbGF5OmZsZXg7Z2FwOjAuNHJlbTthbGlnbi1pdGVtczpjZW50ZXI7ZmxleDoxIDEgMjAwcHgiOwogICAgICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgc3Bhbi50ZXh0Q29udGVudCA9IGxhYmVsVGV4dDsKICAgICAgICBjb25zdCBsb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgbG93LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoYm91bmRzLm1pbiA/PyAwKTsKICAgICAgICBjb25zdCBoaWdoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgIGhpZ2gudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShib3VuZHMubWF4ID8/IDEpOwogICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgICAgICBpbnB1dC50eXBlID0gInJhbmdlIjsKICAgICAgICBpbnB1dC5taW4gPSBib3VuZHMubWluID8/IDA7CiAgICAgICAgaW5wdXQubWF4ID0gYm91bmRzLm1heCA/PyAxOwogICAgICAgIGlucHV0LnN0ZXAgPSBib3VuZHMuc3RlcCA/PyAwLjAxOwogICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUgPz8gYm91bmRzLm1pbiA/PyAwOwogICAgICAgIGlucHV0LnN0eWxlLmZsZXggPSAiMSI7CiAgICAgICAgY29uc3Qgb3V0cHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3V0cHV0Iik7CiAgICAgICAgb3V0cHV0LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaW5wdXQudmFsdWUpOwogICAgICAgIG91dHB1dC5zdHlsZS5jc3NUZXh0ID0gIm1pbi13aWR0aDo2Y2g7dGV4dC1hbGlnbjpyaWdodDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXMiOwogICAgICAgIHdyYXAuYXBwZW5kKHNwYW4sIGxvdywgaW5wdXQsIGhpZ2gsIG91dHB1dCk7CiAgICAgICAgY29udHJvbHMuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICAgICAgcmV0dXJuIFtpbnB1dCwgb3V0cHV0XTsKICAgICAgfTsKCiAgICAgIFtmbG9vcklucHV0LCBmbG9vclZhbHVlXSA9IG1rUmFuZ2UoIm1pbiIsIGJvdW5kcy52YWx1ZV9sb3cpOwogICAgICBbY2VpbElucHV0LCBjZWlsVmFsdWVdID0gbWtSYW5nZSgibWF4IiwgYm91bmRzLnZhbHVlX2hpZ2gpOwogICAgICBlbC5hcHBlbmRDaGlsZChjb250cm9scyk7CiAgICB9CgogICAgY29uc3QgaGVpZ2h0ID0gbW9kZWwuZ2V0KCJoZWlnaHQiKSB8fCA0MDA7CiAgICAvLyBuaWl2dWUncyByZXNpemUgb2JzZXJ2ZXIgc2l6ZXMgdGhlIGNhbnZhcyBmcm9tIGl0cyAqcGFyZW50KiBhbmQgcmV3cml0ZXMKICAgIC8vIHRoZSBjYW52YXMncyBvd24gaW5saW5lIGhlaWdodCB0byAxMDAlLCBzbyB0aGUgcmVxdWVzdGVkIGhlaWdodCBoYXMgdG8KICAgIC8vIGxpdmUgb24gYSB3cmFwcGVyLiBXaXRob3V0IGl0IHRoZSB2aWV3ZXIgY29sbGFwc2VzIHRvIHRoZSBwYXJlbnQncwogICAgLy8gbmF0dXJhbCBoZWlnaHQgKH4xNTBweCkgaW4gYW55IGhvc3QgdGhhdCBkb2Vzbid0IHNpemUgdGhlIHdpZGdldCBmb3IKICAgIC8vIHVzIOKAlCBzdGF0aWMvZXhwb3J0ZWQgcGFnZXMsIGlmcmFtZXMsIHBsYWluIEp1cHl0ZXIgb3V0cHV0IGFyZWFzLgogICAgY29uc3QgY2FudmFzV3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgY2FudmFzV3JhcC5zdHlsZS5jc3NUZXh0ID0gYHdpZHRoOjEwMCU7aGVpZ2h0OiR7aGVpZ2h0fXB4YDsKICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogICAgY2FudmFzLnN0eWxlLmNzc1RleHQgPSAid2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtkaXNwbGF5OmJsb2NrIjsKICAgIGNhbnZhc1dyYXAuYXBwZW5kQ2hpbGQoY2FudmFzKTsKICAgIGVsLmFwcGVuZENoaWxkKGNhbnZhc1dyYXApOwoKICAgIC8vIC0tLSBuaWl2dWUgaW5zdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vCiAgICBjb25zdCBudiA9IG5ldyBOaWl2dWUoewogICAgICBpc0NvbG9yYmFyOiBtb2RlbC5nZXQoImNvbG9yYmFyIiksCiAgICAgIC4uLihtb2RlbC5nZXQoIm5paXZ1ZV9vcHRzIikgfHwge30pLAogICAgfSk7CiAgICBhd2FpdCBudi5hdHRhY2hUb0NhbnZhcyhjYW52YXMpOwoKICAgIC8vIEluZGV4IG9mIHRoZSBzdGF0IG1hcCBpbnNpZGUgbnYudm9sdW1lcyAoc2V0IGJ5IGxvYWRTdGFjayk7IHRoZSB0aHJlc2hvbGQKICAgIC8vIGNvbnRyb2xzIGRyaXZlIHRoaXMgdm9sdW1lJ3Mgd2luZG93LgogICAgbGV0IHN0YXRtYXBJZHggPSAtMTsKCiAgICAvLyBCdWlsZCB0aGUgdm9sdW1lIHN0YWNrIFtiYWNrZ3JvdW5kPywgc3RhdG1hcCwgYXRsYXM/XSBmcm9tIHRoZSBieXRlCiAgICAvLyB0cmFpdHMgKyBkaXNwbGF5IHBhcmFtcy4gUmVidWlsdCB3aGVuZXZlciBhbnkgdm9sdW1lJ3MgYnl0ZXMgY2hhbmdlLgogICAgYXN5bmMgZnVuY3Rpb24gbG9hZFN0YWNrKCkgewogICAgICB3aGlsZSAobnYudm9sdW1lcy5sZW5ndGgpIG52LnJlbW92ZVZvbHVtZUJ5SW5kZXgoMCk7CiAgICAgIHN0YXRtYXBJZHggPSAtMTsKCiAgICAgIGNvbnN0IGJnID0gYnl0ZXNUb0FycmF5QnVmZmVyKG1vZGVsLmdldCgiYmdfYnl0ZXMiKSk7CiAgICAgIGlmIChiZykgewogICAgICAgIGNvbnN0IGJnVm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoYmcsICJiYWNrZ3JvdW5kLm5paS5neiIsICJncmF5Iik7CiAgICAgICAgYmdWb2wuY29sb3JiYXJWaXNpYmxlID0gZmFsc2U7CiAgICAgICAgbnYuYWRkVm9sdW1lKGJnVm9sKTsKICAgICAgfQoKICAgICAgY29uc3Qgc3RhdCA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoInN0YXRtYXBfYnl0ZXMiKSk7CiAgICAgIGlmIChzdGF0KSB7CiAgICAgICAgY29uc3QgcCA9IG1vZGVsLmdldCgic3RhdG1hcCIpIHx8IHt9OwogICAgICAgIGNvbnN0IHZvbCA9IGF3YWl0IE5WSW1hZ2UubmV3KAogICAgICAgICAgc3RhdCwKICAgICAgICAgIChwLm5hbWUgfHwgInN0YXRtYXAiKSArICIubmlpLmd6IiwKICAgICAgICAgIHAuY29sb3JtYXAgfHwgIndhcm0iLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICAgIG51bGwsCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9taW4iKSksCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9tYXgiKSksCiAgICAgICAgKTsKICAgICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKHZvbC5jYWxfbWluKSkgdm9sLmNhbF9taW4gPSBjbGFtcEZsb29yKHZvbC5jYWxfbWluKTsKICAgICAgICBpZiAocC5jb2xvcm1hcF9uZWdhdGl2ZSkgdm9sLmNvbG9ybWFwTmVnYXRpdmUgPSBwLmNvbG9ybWFwX25lZ2F0aXZlOwogICAgICAgIHZvbC5jYWxfbWluTmVnID0gb3JOYU4obW9kZWwuZ2V0KCJjYWxfbWluX25lZyIpKTsKICAgICAgICB2b2wuY2FsX21heE5lZyA9IG9yTmFOKG1vZGVsLmdldCgiY2FsX21heF9uZWciKSk7CiAgICAgICAgdm9sLmNvbG9yYmFyVmlzaWJsZSA9IHRydWU7CiAgICAgICAgc3RhdG1hcElkeCA9IG52LnZvbHVtZXMubGVuZ3RoOwogICAgICAgIG52LmFkZFZvbHVtZSh2b2wpOwogICAgICB9CgogICAgICBjb25zdCBhdGxhcyA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoImF0bGFzX2J5dGVzIikpOwogICAgICBpZiAoYXRsYXMpIHsKICAgICAgICBjb25zdCBwID0gbW9kZWwuZ2V0KCJzdGF0bWFwIikgfHwge307CiAgICAgICAgY29uc3Qgdm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoCiAgICAgICAgICBhdGxhcywKICAgICAgICAgIChtb2RlbC5nZXQoImF0bGFzX25hbWUiKSB8fCAiYXRsYXMiKSArICIubmlpLmd6IiwKICAgICAgICAgICIiLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICApOwogICAgICAgIGNvbnN0IGx1dCA9IG1vZGVsLmdldCgiYXRsYXNfbHV0Iik7CiAgICAgICAgaWYgKGx1dCAmJiBsdXQubGFiZWxzKSB2b2wuc2V0Q29sb3JtYXBMYWJlbChsdXQpOwogICAgICAgIHZvbC5jb2xvcmJhclZpc2libGUgPSBmYWxzZTsKICAgICAgICBudi5hZGRWb2x1bWUodm9sKTsKICAgICAgfQoKICAgICAgbnYub3B0cy5hdGxhc091dGxpbmUgPSBtb2RlbC5nZXQoImF0bGFzX291dGxpbmUiKSB8fCAwOwogICAgICBudi51cGRhdGVHTFZvbHVtZSgpOwogICAgfQoKICAgIGF3YWl0IGxvYWRTdGFjaygpOwogICAgbnYuc2V0U2xpY2VUeXBlKFNMSUNFX1RZUEVbbW9kZWwuZ2V0KCJzbGljZV90eXBlIildID8/IFNMSUNFX1RZUEUuTVVMVElQTEFOQVIpOwoKICAgIC8vIC0tLSB0aHJlc2hvbGQgY29udHJvbHMgLT4gbmlpdnVlICsgUHl0aG9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy8KICAgIC8vIEFwcGxpZXMgdGhlIGNsYW1wZWQgd2luZG93IHRvIG5paXZ1ZSBhbmQgcmV0dXJucyBpdCwgc28gdGhlIGNhbGxlcnMgdGhhdAogICAgLy8gd3JpdGUgYmFjayB0byBQeXRob24gc2VuZCB3aGF0IHdhcyByZW5kZXJlZCByYXRoZXIgdGhhbiB3aGF0IHdhcyBkcmFnZ2VkLgogICAgZnVuY3Rpb24gYXBwbHlXaW5kb3coKSB7CiAgICAgIGlmIChzdGF0bWFwSWR4IDwgMCkgcmV0dXJuIG51bGw7CiAgICAgIGNvbnN0IHZvbCA9IG52LnZvbHVtZXNbc3RhdG1hcElkeF07CiAgICAgIGNvbnN0IGxvUmF3ID0gZmxvb3JJbnB1dCA/IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9taW4iKTsKICAgICAgY29uc3QgaGlSYXcgPSBjZWlsSW5wdXQgPyBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9tYXgiKTsKICAgICAgLy8gQm90aCBlZGdlcyBhcmUgbWFnbml0dWRlczogdGhlIGZsb29yIHN0YXlzIGFib3ZlIHplcm8gYW5kIHRoZSBjZWlsaW5nCiAgICAgIC8vIHN0YXlzIGFib3ZlIHRoZSBmbG9vci4KICAgICAgY29uc3QgbG8gPSBpc051bWJlcihsb1JhdykgPyBjbGFtcEZsb29yKGxvUmF3KSA6IG51bGw7CiAgICAgIGNvbnN0IGZsb29yID0gbG8gPT09IG51bGwgPyB2b2wuY2FsX21pbiA6IGxvOwogICAgICBjb25zdCBoaSA9IGlzTnVtYmVyKGhpUmF3KQogICAgICAgID8gTWF0aC5tYXgoTWF0aC5hYnMoaGlSYXcpLCBmbG9vciArIGZsb29yRXBzKQogICAgICAgIDogbnVsbDsKICAgICAgaWYgKGxvICE9PSBudWxsKSB2b2wuY2FsX21pbiA9IGxvOwogICAgICBpZiAoaGkgIT09IG51bGwpIHZvbC5jYWxfbWF4ID0gaGk7CiAgICAgIGlmIChtb2RlbC5nZXQoIm1pcnJvcl9uZWdhdGl2ZSIpKSB7CiAgICAgICAgaWYgKGhpICE9PSBudWxsKSB2b2wuY2FsX21pbk5lZyA9IC1oaTsKICAgICAgICBpZiAobG8gIT09IG51bGwpIHZvbC5jYWxfbWF4TmVnID0gLWxvOwogICAgICB9IGVsc2UgaWYgKGxvICE9PSBudWxsKSB7CiAgICAgICAgdm9sLmNhbF9tYXhOZWcgPSAtbG87CiAgICAgIH0KICAgICAgbnYudXBkYXRlR0xWb2x1bWUoKTsKICAgICAgcmV0dXJuIHsgbG8sIGhpIH07CiAgICB9CgogICAgaWYgKGZsb29ySW5wdXQpIHsKICAgICAgZmxvb3JJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsICgpID0+IHsKICAgICAgICBjb25zdCBhcHBsaWVkID0gYXBwbHlXaW5kb3coKTsKICAgICAgICBjb25zdCBsbyA9IGFwcGxpZWQgJiYgYXBwbGllZC5sbyAhPT0gbnVsbAogICAgICAgICAgPyBhcHBsaWVkLmxvCiAgICAgICAgICA6IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgICAgZmxvb3JWYWx1ZS50ZXh0Q29udGVudCA9IGZvcm1hdFZhbHVlKGxvKTsKICAgICAgICBtb2RlbC5zZXQoImNhbF9taW4iLCBsbyk7CiAgICAgICAgbW9kZWwuc2F2ZV9jaGFuZ2VzKCk7CiAgICAgIH0pOwogICAgfQogICAgaWYgKGNlaWxJbnB1dCkgewogICAgICBjZWlsSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCAoKSA9PiB7CiAgICAgICAgY29uc3QgYXBwbGllZCA9IGFwcGx5V2luZG93KCk7CiAgICAgICAgY29uc3QgaGkgPSBhcHBsaWVkICYmIGFwcGxpZWQuaGkgIT09IG51bGwKICAgICAgICAgID8gYXBwbGllZC5oaQogICAgICAgICAgOiBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSk7CiAgICAgICAgY2VpbFZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaGkpOwogICAgICAgIG1vZGVsLnNldCgiY2FsX21heCIsIGhpKTsKICAgICAgICBtb2RlbC5zYXZlX2NoYW5nZXMoKTsKICAgICAgfSk7CiAgICB9CgogICAgLy8gLS0tIFB5dGhvbiAtPiBKUyByZWFjdGl2aXR5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvLwogICAgY29uc3Qgb25CeXRlcyA9ICgpID0+IGxvYWRTdGFjaygpOwogICAgbW9kZWwub24oImNoYW5nZTpzdGF0bWFwX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmJnX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmF0bGFzX2J5dGVzIiwgb25CeXRlcyk7CgogICAgbW9kZWwub24oImNoYW5nZTpjYWxfbWluIiwgKCkgPT4gewogICAgICBpZiAoZmxvb3JJbnB1dCkgZmxvb3JJbnB1dC52YWx1ZSA9IG1vZGVsLmdldCgiY2FsX21pbiIpID8/IGZsb29ySW5wdXQudmFsdWU7CiAgICAgIGlmIChmbG9vclZhbHVlKSBmbG9vclZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgIGFwcGx5V2luZG93KCk7CiAgICB9KTsKICAgIG1vZGVsLm9uKCJjaGFuZ2U6Y2FsX21heCIsICgpID0+IHsKICAgICAgaWYgKGNlaWxJbnB1dCkgY2VpbElucHV0LnZhbHVlID0gbW9kZWwuZ2V0KCJjYWxfbWF4IikgPz8gY2VpbElucHV0LnZhbHVlOwogICAgICBpZiAoY2VpbFZhbHVlKSBjZWlsVmFsdWUudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShjZWlsSW5wdXQudmFsdWUpOwogICAgICBhcHBseVdpbmRvdygpOwogICAgfSk7CiAgICBtb2RlbC5vbigiY2hhbmdlOnNsaWNlX3R5cGUiLCAoKSA9PgogICAgICBudi5zZXRTbGljZVR5cGUoU0xJQ0VfVFlQRVttb2RlbC5nZXQoInNsaWNlX3R5cGUiKV0gPz8gU0xJQ0VfVFlQRS5NVUxUSVBMQU5BUiksCiAgICApOwogICAgbW9kZWwub24oImNoYW5nZTpjb2xvcmJhciIsICgpID0+IHsKICAgICAgbnYub3B0cy5pc0NvbG9yYmFyID0gbW9kZWwuZ2V0KCJjb2xvcmJhciIpOwogICAgICBudi5kcmF3U2NlbmUoKTsKICAgIH0pOwogICAgbW9kZWwub24oImNoYW5nZTphdGxhc19vdXRsaW5lIiwgKCkgPT4gewogICAgICBudi5vcHRzLmF0bGFzT3V0bGluZSA9IG1vZGVsLmdldCgiYXRsYXNfb3V0bGluZSIpIHx8IDA7CiAgICAgIG52LmRyYXdTY2VuZSgpOwogICAgfSk7CgogICAgLy8gbmlpdnVlIGhhcyBubyBkZXN0cm95KCk7IGRyb3AgdGhlIFdlYkdMIGNvbnRleHQgb24gdGVhcmRvd24gLyByZS1yZW5kZXIKICAgIC8vIHNvIHJlcGVhdGVkIGNlbGwgcnVucyBkb24ndCBsZWFrIEdMIGNvbnRleHRzIChicm93c2VycyBjYXAgdGhlbSkuCiAgICByZXR1cm4gKCkgPT4gewogICAgICBjYW52YXMKICAgICAgICAuZ2V0Q29udGV4dCgid2ViZ2wyIikKICAgICAgICA/LmdldEV4dGVuc2lvbigiV0VCR0xfbG9zZV9jb250ZXh0IikKICAgICAgICA/Lmxvc2VDb250ZXh0KCk7CiAgICB9OwogIH0sCn07Cg==\"' data-label=\"null\" data-model-id='\"0a49a25c293d4849847ac1d0ff99e36f\"'\u003e\u003c/div\u003e\u003cdiv class=\"marimo-book-plotly\" data-config=\"{}\" data-figure='{\"data\":[{\"hovertemplate\":\"TR: %{x}\\u003cbr\\u003eIntensity: %{y:.4f}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#EF553B\",\"width\":2},\"mode\":\"lines\",\"name\":\"Timecourse\",\"x\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127],\"y\":{\"dtype\":\"f4\",\"bdata\":\"SSIntpuCwblUHrY3IoRsul8V6jjoaDG7jbqQOAFpFTqKIVY60/iyOrY1j7olIcs6kqqoOkWmO7t9nis6OwjvOA+D9zetMi24yIk7usge3zk2oli6CTDSuYKMsrpjUV06+GlPOBGOqDrvwNE5QezUOtCz9jkUIgQ7Mwi8uqwSCbsA+u+5xbaSN9uIazp0F1G6y4oOOoTosjqoOr24O4bsOl6+B7sF/KM5LD9rOviPZLpxZcm6DwyVuutkxTr+NMO6xkDAurxp6bllfKk6pd22OWb7SDrG2f+6alNqOvBPljoIzmc6huyhuteGuLoBFok6pntlOvZDLzpV7M86hVy4uvrINTohium3hCWbOCotjTrFP866IiIHOT6iFDlRJ/u6wGAlOrYkhDoDy8U6Aacdu1u4wLpZvFw6/oj4uUiGIbon5E26n+WJukKCHLrqeT26LCwBO6PzwblSHuY5sc9zOpLfQTlK0y875W43OkV3YjpPUVK6nlQHuSaNkbrdxDk6TRPmOS38EbriiRk6ozF9uYc/OTq6Wnu57TOfOjExL7r7lT66v7c7uXewwjqW4kW6MjrDOGPfj7oVmQC6nCzrOUAW1rnFonW6Ad/9OiMrJ7tN9HA4CnLCOnYXXbq9xcM6PS8fuz2vKrl2bZu6NZxXOHId6bq8day5zlPrutqr9jg=\"},\"type\":\"scatter\",\"xaxis\":\"x\",\"yaxis\":\"y\"},{\"hovertemplate\":\"Freq: %{x:.4f} Hz\\u003cbr\\u003ePower: %{y:.4e}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#636EFA\",\"width\":2},\"mode\":\"lines\",\"name\":\"Power\",\"x\":{\"dtype\":\"f8\",\"bdata\":\"q6qqqqqqaj+rqqqqqqp6PwAAAAAAAIQ/q6qqqqqqij+rqqqqqqqQPwAAAAAAAJQ/VlVVVVVVlz+rqqqqqqqaPwAAAAAAAJ4/q6qqqqqqoD9WVVVVVVWiPwAAAAAAAKQ/q6qqqqqqpT9WVVVVVVWnPwAAAAAAAKk/q6qqqqqqqj9WVVVVVVWsPwAAAAAAAK4/q6qqqqqqrz+rqqqqqqqwPwAAAAAAgLE/VlVVVVVVsj+rqqqqqiqzPwAAAAAAALQ/VlVVVVXVtD+rqqqqqqq1PwAAAAAAgLY/VlVVVVVVtz+rqqqqqiq4PwAAAAAAALk/VlVVVVXVuT+rqqqqqqq6PwAAAAAAgLs/VlVVVVVVvD+rqqqqqiq9PwAAAAAAAL4/VlVVVVXVvj+rqqqqqqq/PwAAAAAAQMA/q6qqqqqqwD9WVVVVVRXBPwAAAAAAgME/q6qqqqrqwT9WVVVVVVXCPwAAAAAAwMI/q6qqqqoqwz9WVVVVVZXDPwAAAAAAAMQ/q6qqqqpqxD9WVVVVVdXEPwAAAAAAQMU/q6qqqqqqxT9WVVVVVRXGPwAAAAAAgMY/q6qqqqrqxj9WVVVVVVXHPwAAAAAAwMc/q6qqqqoqyD9WVVVVVZXIPwAAAAAAAMk/q6qqqqpqyT9WVVVVVdXJPwAAAAAAQMo/\"},\"y\":{\"dtype\":\"f4\",\"bdata\":\"CpCDOMTWJjmDVRU54HK4OHWNczm45yQ44kFWNwy6jjmKM7s3L9ThOSCUAjkRvCc2GhbROE9IiznTO+44eGOxOGm5ATeYFDo21mGaNwW8wjjzkv823WCSOaLJKTpktb82PTFjN1HHXzY2u/g4L+mkOVsdHToTcME52Q+gOIDXuzhN0BU5tDFcOM6FrzkWiv434R49OUHKADklGQ82aAHSN5OdkTkZz8A2WdxhOOOhZjkf1dM4CYl7OTcmXDgswNQ48e+dOSWrPzmpOI06Db+1OJTpsDgKT4s47/mrOdkn+DmmgLw21untN3whljnEe+85ojdbOZVmozhI3Q85\"},\"type\":\"scatter\",\"xaxis\":\"x2\",\"yaxis\":\"y2\"}],\"layout\":{\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermap\":[{\"type\":\"scattermap\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,0.41000000000000003],\"title\":{\"text\":\"TR\"}},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Intensity (AU)\"}},\"xaxis2\":{\"anchor\":\"y2\",\"domain\":[0.5900000000000001,1.0],\"title\":{\"text\":\"Frequency (Hz)\"}},\"yaxis2\":{\"anchor\":\"x2\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Power\"}},\"annotations\":[{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Timecourse (TR=2.4s)\",\"x\":0.20500000000000002,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"},{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Power Spectrum\",\"x\":0.795,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"}],\"margin\":{\"t\":40,\"b\":50,\"l\":70,\"r\":30},\"height\":280,\"showlegend\":false,\"dragmode\":\"zoom\"}}'\u003e\u003c/div\u003e\u003c/div\u003e\n\u003c/div\u003e"},"6":{"12":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cmarimo-slider data-initial-value='6' data-label='\u0026quot;\u0026#92;u003cspan class=\u0026#92;\u0026quot;markdown prose dark:prose-invert contents\u0026#92;\u0026quot;\u0026#92;u003e\u0026#92;u003cspan class=\u0026#92;\u0026quot;paragraph\u0026#92;\u0026quot;\u0026#92;u003eComponent\u0026#92;u003c/span\u0026#92;u003e\u0026#92;u003c/span\u0026#92;u003e\u0026quot;' data-start='0' data-stop='9' data-step='1' data-steps='[]' data-debounce='false' data-disabled='false' data-orientation='\u0026quot;horizontal\u0026quot;' data-show-value='true' data-include-input='false' data-full-width='false'\u003e\u003c/marimo-slider\u003e\n\u003c/div\u003e","13":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cdiv style=\"display: flex;flex: 1;flex-direction: column;justify-content: flex-start;align-items: normal;flex-wrap: nowrap;gap: 0.5rem\"\u003e\u003cspan class=\"markdown prose dark:prose-invert contents\"\u003e\u003cspan class=\"paragraph\"\u003e\u003cstrong\u003eComponent 7 of 10\u003c/strong\u003e\u003c/span\u003e\u003c/span\u003e\u003cdiv class=\"marimo-book-anywidget\" data-buffers='[{\"path\": [\"atlas_bytes\"], \"empty\": true}, {\"path\": [\"bg_bytes\"], \"url\": \"assets/anywidget/c02b4524b0c54de882947847c0f613f75d3131c979be42145b19a46de3dece42.bin\", \"size\": 533672}, {\"path\": [\"statmap_bytes\"], \"url\": \"assets/anywidget/1c074a745daa3e2ce07c7dfbe9c5e95fdaddacd856068283efb8f0725da667b6.bin\", \"size\": 910975}]' data-initial-value='{\"_anywidget_id\": \"nltools.data.braindata.viewer._NiivueViewer\", \"_dom_classes\": [], \"_model_module\": \"anywidget\", \"_model_module_version\": \"~0.10.*\", \"_model_name\": \"AnyModel\", \"_view_count\": null, \"_view_module\": \"anywidget\", \"_view_module_version\": \"~0.10.*\", \"_view_name\": \"AnyView\", \"atlas_lut\": {}, \"atlas_name\": \"\", \"atlas_outline\": 0.0, \"cal_max\": 2.864620075225828, \"cal_max_neg\": -2.0, \"cal_min\": 2.0, \"cal_min_neg\": -2.864620075225828, \"colorbar\": true, \"controls\": true, \"height\": 600, \"layout\": \"IPY_MODEL_a951545a92474d46a8e332a81adad639\", \"mirror_negative\": true, \"niivue_opts\": {}, \"slice_type\": \"MULTIPLANAR\", \"slider_bounds\": {\"min\": 0.0436702823638916, \"max\": 8.73405647277832, \"value_low\": 2.0, \"value_high\": 2.864620075225828, \"step\": 0.0436702823638916}, \"statmap\": {\"name\": \"statmap\", \"colormap\": \"warm\", \"colormap_negative\": \"winter\", \"opacity\": 1.0}, \"tabbable\": null, \"tooltip\": null}' data-js-url='\"data:text/javascript;base64,Ly8gbmlpdnVlIHZpZXdlciBmb3IgQnJhaW5EYXRhLmlwbG90KCksIGRyaXZlbiB0aHJvdWdoIGFueXdpZGdldCdzICpzdGFuZGFyZCoKLy8gbW9kZWwgQVBJIChnZXQgLyBzZXQgLyBzYXZlX2NoYW5nZXMgLyBvbikgb25seSDigJQgbm8gaG9zdC1zcGVjaWZpYyBwcm90b2NvbAovLyAodGhlIGNvbnRyYXN0IHdpdGggaXB5bmlpdnVlLCBzZWUgY29zYW5sYWIvbmx0b29scyM0NTUpLCBzbyB0aGUgd2lkZ2V0IHdvcmtzCi8vIGlkZW50aWNhbGx5IGluIEp1cHl0ZXIgYW5kIGBtYXJpbW8gZWRpdGAuCi8vCi8vIG5paXZ1ZSBpdHNlbGYgaXMgcHVsbGVkIGZyb20gYSBDRE4gYXMgYW4gRVMgbW9kdWxlLiBgX2VzbWAgaXMgYW4gRVMgbW9kdWxlLCBzbwovLyBhIHRvcC1sZXZlbCBgaW1wb3J0YCBpcyByZXNvbHZlZCBieSB0aGUgYnJvd3NlciBhdCByZW5kZXIgdGltZS4gVGhlIHBpbiBrZWVwcwovLyB0aGUgQVBJIHN0YWJsZS4KaW1wb3J0IHsKICBOaWl2dWUsCiAgTlZJbWFnZSwKICBTTElDRV9UWVBFLAp9IGZyb20gImh0dHBzOi8vZXNtLnNoL0BuaWl2dWUvbmlpdnVlQDAuNjkuMCI7CgovLyBBIHRyYWl0bGV0cyBgQnl0ZXNgIHRyYWl0IGFycml2ZXMgaW4gSlMgYXMgYSBEYXRhVmlldyBvdmVyIGEgc2hhcmVkIGJ1ZmZlci4KLy8gbmlpdnVlIHdhbnRzIGEgc3RhbmRhbG9uZSBBcnJheUJ1ZmZlciwgc28gc2xpY2Ugb3V0IGV4YWN0bHkgdGhpcyB2aWV3J3MKLy8gd2luZG93LiBFbXB0eSBieXRlcyAoYW4gYWJzZW50IG9wdGlvbmFsIHZvbHVtZSkgeWllbGQgYG51bGxgLgpmdW5jdGlvbiBieXRlc1RvQXJyYXlCdWZmZXIoZHYpIHsKICBpZiAoIWR2IHx8IGR2LmJ5dGVMZW5ndGggPT09IDApIHJldHVybiBudWxsOwogIHJldHVybiBkdi5idWZmZXIuc2xpY2UoZHYuYnl0ZU9mZnNldCwgZHYuYnl0ZU9mZnNldCArIGR2LmJ5dGVMZW5ndGgpOwp9CgovLyBOVkltYWdlLm5ldyB0cmVhdHMgTmFOIGNhbF9taW4vY2FsX21heCBhcyAiYXV0byIgKHBlcmNlbnRpbGUtZGVyaXZlZCkuIEEgbnVsbAovLyB0cmFpdCAod2luZG93IGxlZnQgb24gYXV0bykgbWFwcyB0byBOYU47IGEgbnVtYmVyIHBhc3NlcyB0aHJvdWdoLgpmdW5jdGlvbiBvck5hTih4KSB7CiAgcmV0dXJuIHggPT09IG51bGwgfHwgeCA9PT0gdW5kZWZpbmVkID8gTmFOIDogeDsKfQoKLy8gQSB0cmFpdCBvciBzbGlkZXIgdmFsdWUgdGhhdCBpcyByZWFsbHkgYSBudW1iZXIgKGEgbnVsbC91bmRlZmluZWQgdHJhaXQgb3IgYQovLyBOYU4gcGFyc2UgbWVhbnMgImxlYXZlIHRoaXMgZWRnZSBhbG9uZSIpLgpmdW5jdGlvbiBpc051bWJlcih4KSB7CiAgcmV0dXJuIHggIT09IG51bGwgJiYgeCAhPT0gdW5kZWZpbmVkICYmICFOdW1iZXIuaXNOYU4oeCk7Cn0KCmZ1bmN0aW9uIGZvcm1hdFZhbHVlKHZhbHVlKSB7CiAgY29uc3QgbnVtYmVyID0gTnVtYmVyKHZhbHVlKTsKICBpZiAoIU51bWJlci5pc0Zpbml0ZShudW1iZXIpKSByZXR1cm4gIuKAlCI7CiAgcmV0dXJuIE51bWJlci5wYXJzZUZsb2F0KG51bWJlci50b1ByZWNpc2lvbig0KSkudG9TdHJpbmcoKTsKfQoKZXhwb3J0IGRlZmF1bHQgewogIGFzeW5jIHJlbmRlcih7IG1vZGVsLCBlbCB9KSB7CiAgICBlbC5zdHlsZS53aWR0aCA9ICIxMDAlIjsKCiAgICAvLyAtLS0gRE9NOiBvcHRpb25hbCB0aHJlc2hvbGQgY29udHJvbHMgKyB0aGUgV2ViR0wgY2FudmFzIC0tLS0tLS0tLS0tLS0tIC8vCiAgICBsZXQgZmxvb3JJbnB1dCA9IG51bGw7CiAgICBsZXQgY2VpbElucHV0ID0gbnVsbDsKICAgIGxldCBmbG9vclZhbHVlID0gbnVsbDsKICAgIGxldCBjZWlsVmFsdWUgPSBudWxsOwogICAgY29uc3QgYm91bmRzID0gbW9kZWwuZ2V0KCJzbGlkZXJfYm91bmRzIikgfHwge307CiAgICAvLyBUaGUgd2luZG93IGlzIGEgbWFnbml0dWRlIHdpbmRvdyBtaXJyb3JlZCBvbnRvIHRoZSBuZWdhdGl2ZSBsaW1iLCBhbmQgYQogICAgLy8gZmxvb3Igb2YgemVybyAob3IgYmVsb3cpIGFkbWl0cyBldmVyeSB6ZXJvLXZhbHVlZCB2b3hlbCDigJQgdGhlIHdob2xlCiAgICAvLyB2b2x1bWUgYm94IG91dHNpZGUgdGhlIG1hc2sgcGFpbnRzIGluIHRoZSBuZWdhdGl2ZSBjb2xvcm1hcC4gTmV2ZXIgbGV0CiAgICAvLyB0aGUgYXBwbGllZCBmbG9vciByZWFjaCB6ZXJvLCB3aGF0ZXZlciB0aGUgc2xpZGVyIG9yIHRoZSBtb2RlbCBzYXlzLgogICAgLy8KICAgIC8vIFRoZSBlcHNpbG9uIGlzIHRoZSBzbGlkZXIncyBvd24gbG93ZXIgYm91bmQsIHdoaWNoIFB5dGhvbiBndWFyYW50ZWVzIGlzCiAgICAvLyBzdHJpY3RseSBwb3NpdGl2ZSBhbmQgYXQgb3IgYmVsb3cgdGhlIHJlc29sdmVkIGBjYWxfbWluYC4gRGVyaXZpbmcgaXQKICAgIC8vIGhlcmUgaW5zdGVhZCAoZnJvbSB0aGUgc3RlcCwgc2F5KSB3b3VsZCBsZXQgdGhlIHR3byBkcmlmdCBhcGFydCBhbmQKICAgIC8vIHJhaXNlIHRoZSByZW5kZXJlZCBmbG9vciBhYm92ZSB0aGUgd2luZG93IFB5dGhvbiByZXNvbHZlZC4KICAgIGNvbnN0IGZsb29yRXBzID0gTnVtYmVyKGJvdW5kcy5taW4pID4gMCA/IE51bWJlcihib3VuZHMubWluKSA6IDFlLTk7CiAgICBjb25zdCBjbGFtcEZsb29yID0gKHYpID0+IE1hdGgubWF4KE1hdGguYWJzKHYpLCBmbG9vckVwcyk7CgogICAgaWYgKG1vZGVsLmdldCgiY29udHJvbHMiKSkgewogICAgICBjb25zdCBjb250cm9scyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICBjb250cm9scy5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAiZGlzcGxheTpmbGV4O2dhcDowLjc1cmVtO2FsaWduLWl0ZW1zOmNlbnRlcjtmb250OjEycHgvMS40IHN5c3RlbS11aSwiICsKICAgICAgICAic2Fucy1zZXJpZjtwYWRkaW5nOjRweCAycHg7ZmxleC13cmFwOndyYXAiOwoKICAgICAgY29uc3QgbWtSYW5nZSA9IChsYWJlbFRleHQsIHZhbHVlKSA9PiB7CiAgICAgICAgY29uc3Qgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7CiAgICAgICAgd3JhcC5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAgICJkaXNwbGF5OmZsZXg7Z2FwOjAuNHJlbTthbGlnbi1pdGVtczpjZW50ZXI7ZmxleDoxIDEgMjAwcHgiOwogICAgICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgc3Bhbi50ZXh0Q29udGVudCA9IGxhYmVsVGV4dDsKICAgICAgICBjb25zdCBsb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgbG93LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoYm91bmRzLm1pbiA/PyAwKTsKICAgICAgICBjb25zdCBoaWdoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgIGhpZ2gudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShib3VuZHMubWF4ID8/IDEpOwogICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgICAgICBpbnB1dC50eXBlID0gInJhbmdlIjsKICAgICAgICBpbnB1dC5taW4gPSBib3VuZHMubWluID8/IDA7CiAgICAgICAgaW5wdXQubWF4ID0gYm91bmRzLm1heCA/PyAxOwogICAgICAgIGlucHV0LnN0ZXAgPSBib3VuZHMuc3RlcCA/PyAwLjAxOwogICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUgPz8gYm91bmRzLm1pbiA/PyAwOwogICAgICAgIGlucHV0LnN0eWxlLmZsZXggPSAiMSI7CiAgICAgICAgY29uc3Qgb3V0cHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3V0cHV0Iik7CiAgICAgICAgb3V0cHV0LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaW5wdXQudmFsdWUpOwogICAgICAgIG91dHB1dC5zdHlsZS5jc3NUZXh0ID0gIm1pbi13aWR0aDo2Y2g7dGV4dC1hbGlnbjpyaWdodDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXMiOwogICAgICAgIHdyYXAuYXBwZW5kKHNwYW4sIGxvdywgaW5wdXQsIGhpZ2gsIG91dHB1dCk7CiAgICAgICAgY29udHJvbHMuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICAgICAgcmV0dXJuIFtpbnB1dCwgb3V0cHV0XTsKICAgICAgfTsKCiAgICAgIFtmbG9vcklucHV0LCBmbG9vclZhbHVlXSA9IG1rUmFuZ2UoIm1pbiIsIGJvdW5kcy52YWx1ZV9sb3cpOwogICAgICBbY2VpbElucHV0LCBjZWlsVmFsdWVdID0gbWtSYW5nZSgibWF4IiwgYm91bmRzLnZhbHVlX2hpZ2gpOwogICAgICBlbC5hcHBlbmRDaGlsZChjb250cm9scyk7CiAgICB9CgogICAgY29uc3QgaGVpZ2h0ID0gbW9kZWwuZ2V0KCJoZWlnaHQiKSB8fCA0MDA7CiAgICAvLyBuaWl2dWUncyByZXNpemUgb2JzZXJ2ZXIgc2l6ZXMgdGhlIGNhbnZhcyBmcm9tIGl0cyAqcGFyZW50KiBhbmQgcmV3cml0ZXMKICAgIC8vIHRoZSBjYW52YXMncyBvd24gaW5saW5lIGhlaWdodCB0byAxMDAlLCBzbyB0aGUgcmVxdWVzdGVkIGhlaWdodCBoYXMgdG8KICAgIC8vIGxpdmUgb24gYSB3cmFwcGVyLiBXaXRob3V0IGl0IHRoZSB2aWV3ZXIgY29sbGFwc2VzIHRvIHRoZSBwYXJlbnQncwogICAgLy8gbmF0dXJhbCBoZWlnaHQgKH4xNTBweCkgaW4gYW55IGhvc3QgdGhhdCBkb2Vzbid0IHNpemUgdGhlIHdpZGdldCBmb3IKICAgIC8vIHVzIOKAlCBzdGF0aWMvZXhwb3J0ZWQgcGFnZXMsIGlmcmFtZXMsIHBsYWluIEp1cHl0ZXIgb3V0cHV0IGFyZWFzLgogICAgY29uc3QgY2FudmFzV3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgY2FudmFzV3JhcC5zdHlsZS5jc3NUZXh0ID0gYHdpZHRoOjEwMCU7aGVpZ2h0OiR7aGVpZ2h0fXB4YDsKICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogICAgY2FudmFzLnN0eWxlLmNzc1RleHQgPSAid2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtkaXNwbGF5OmJsb2NrIjsKICAgIGNhbnZhc1dyYXAuYXBwZW5kQ2hpbGQoY2FudmFzKTsKICAgIGVsLmFwcGVuZENoaWxkKGNhbnZhc1dyYXApOwoKICAgIC8vIC0tLSBuaWl2dWUgaW5zdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vCiAgICBjb25zdCBudiA9IG5ldyBOaWl2dWUoewogICAgICBpc0NvbG9yYmFyOiBtb2RlbC5nZXQoImNvbG9yYmFyIiksCiAgICAgIC4uLihtb2RlbC5nZXQoIm5paXZ1ZV9vcHRzIikgfHwge30pLAogICAgfSk7CiAgICBhd2FpdCBudi5hdHRhY2hUb0NhbnZhcyhjYW52YXMpOwoKICAgIC8vIEluZGV4IG9mIHRoZSBzdGF0IG1hcCBpbnNpZGUgbnYudm9sdW1lcyAoc2V0IGJ5IGxvYWRTdGFjayk7IHRoZSB0aHJlc2hvbGQKICAgIC8vIGNvbnRyb2xzIGRyaXZlIHRoaXMgdm9sdW1lJ3Mgd2luZG93LgogICAgbGV0IHN0YXRtYXBJZHggPSAtMTsKCiAgICAvLyBCdWlsZCB0aGUgdm9sdW1lIHN0YWNrIFtiYWNrZ3JvdW5kPywgc3RhdG1hcCwgYXRsYXM/XSBmcm9tIHRoZSBieXRlCiAgICAvLyB0cmFpdHMgKyBkaXNwbGF5IHBhcmFtcy4gUmVidWlsdCB3aGVuZXZlciBhbnkgdm9sdW1lJ3MgYnl0ZXMgY2hhbmdlLgogICAgYXN5bmMgZnVuY3Rpb24gbG9hZFN0YWNrKCkgewogICAgICB3aGlsZSAobnYudm9sdW1lcy5sZW5ndGgpIG52LnJlbW92ZVZvbHVtZUJ5SW5kZXgoMCk7CiAgICAgIHN0YXRtYXBJZHggPSAtMTsKCiAgICAgIGNvbnN0IGJnID0gYnl0ZXNUb0FycmF5QnVmZmVyKG1vZGVsLmdldCgiYmdfYnl0ZXMiKSk7CiAgICAgIGlmIChiZykgewogICAgICAgIGNvbnN0IGJnVm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoYmcsICJiYWNrZ3JvdW5kLm5paS5neiIsICJncmF5Iik7CiAgICAgICAgYmdWb2wuY29sb3JiYXJWaXNpYmxlID0gZmFsc2U7CiAgICAgICAgbnYuYWRkVm9sdW1lKGJnVm9sKTsKICAgICAgfQoKICAgICAgY29uc3Qgc3RhdCA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoInN0YXRtYXBfYnl0ZXMiKSk7CiAgICAgIGlmIChzdGF0KSB7CiAgICAgICAgY29uc3QgcCA9IG1vZGVsLmdldCgic3RhdG1hcCIpIHx8IHt9OwogICAgICAgIGNvbnN0IHZvbCA9IGF3YWl0IE5WSW1hZ2UubmV3KAogICAgICAgICAgc3RhdCwKICAgICAgICAgIChwLm5hbWUgfHwgInN0YXRtYXAiKSArICIubmlpLmd6IiwKICAgICAgICAgIHAuY29sb3JtYXAgfHwgIndhcm0iLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICAgIG51bGwsCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9taW4iKSksCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9tYXgiKSksCiAgICAgICAgKTsKICAgICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKHZvbC5jYWxfbWluKSkgdm9sLmNhbF9taW4gPSBjbGFtcEZsb29yKHZvbC5jYWxfbWluKTsKICAgICAgICBpZiAocC5jb2xvcm1hcF9uZWdhdGl2ZSkgdm9sLmNvbG9ybWFwTmVnYXRpdmUgPSBwLmNvbG9ybWFwX25lZ2F0aXZlOwogICAgICAgIHZvbC5jYWxfbWluTmVnID0gb3JOYU4obW9kZWwuZ2V0KCJjYWxfbWluX25lZyIpKTsKICAgICAgICB2b2wuY2FsX21heE5lZyA9IG9yTmFOKG1vZGVsLmdldCgiY2FsX21heF9uZWciKSk7CiAgICAgICAgdm9sLmNvbG9yYmFyVmlzaWJsZSA9IHRydWU7CiAgICAgICAgc3RhdG1hcElkeCA9IG52LnZvbHVtZXMubGVuZ3RoOwogICAgICAgIG52LmFkZFZvbHVtZSh2b2wpOwogICAgICB9CgogICAgICBjb25zdCBhdGxhcyA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoImF0bGFzX2J5dGVzIikpOwogICAgICBpZiAoYXRsYXMpIHsKICAgICAgICBjb25zdCBwID0gbW9kZWwuZ2V0KCJzdGF0bWFwIikgfHwge307CiAgICAgICAgY29uc3Qgdm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoCiAgICAgICAgICBhdGxhcywKICAgICAgICAgIChtb2RlbC5nZXQoImF0bGFzX25hbWUiKSB8fCAiYXRsYXMiKSArICIubmlpLmd6IiwKICAgICAgICAgICIiLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICApOwogICAgICAgIGNvbnN0IGx1dCA9IG1vZGVsLmdldCgiYXRsYXNfbHV0Iik7CiAgICAgICAgaWYgKGx1dCAmJiBsdXQubGFiZWxzKSB2b2wuc2V0Q29sb3JtYXBMYWJlbChsdXQpOwogICAgICAgIHZvbC5jb2xvcmJhclZpc2libGUgPSBmYWxzZTsKICAgICAgICBudi5hZGRWb2x1bWUodm9sKTsKICAgICAgfQoKICAgICAgbnYub3B0cy5hdGxhc091dGxpbmUgPSBtb2RlbC5nZXQoImF0bGFzX291dGxpbmUiKSB8fCAwOwogICAgICBudi51cGRhdGVHTFZvbHVtZSgpOwogICAgfQoKICAgIGF3YWl0IGxvYWRTdGFjaygpOwogICAgbnYuc2V0U2xpY2VUeXBlKFNMSUNFX1RZUEVbbW9kZWwuZ2V0KCJzbGljZV90eXBlIildID8/IFNMSUNFX1RZUEUuTVVMVElQTEFOQVIpOwoKICAgIC8vIC0tLSB0aHJlc2hvbGQgY29udHJvbHMgLT4gbmlpdnVlICsgUHl0aG9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy8KICAgIC8vIEFwcGxpZXMgdGhlIGNsYW1wZWQgd2luZG93IHRvIG5paXZ1ZSBhbmQgcmV0dXJucyBpdCwgc28gdGhlIGNhbGxlcnMgdGhhdAogICAgLy8gd3JpdGUgYmFjayB0byBQeXRob24gc2VuZCB3aGF0IHdhcyByZW5kZXJlZCByYXRoZXIgdGhhbiB3aGF0IHdhcyBkcmFnZ2VkLgogICAgZnVuY3Rpb24gYXBwbHlXaW5kb3coKSB7CiAgICAgIGlmIChzdGF0bWFwSWR4IDwgMCkgcmV0dXJuIG51bGw7CiAgICAgIGNvbnN0IHZvbCA9IG52LnZvbHVtZXNbc3RhdG1hcElkeF07CiAgICAgIGNvbnN0IGxvUmF3ID0gZmxvb3JJbnB1dCA/IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9taW4iKTsKICAgICAgY29uc3QgaGlSYXcgPSBjZWlsSW5wdXQgPyBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9tYXgiKTsKICAgICAgLy8gQm90aCBlZGdlcyBhcmUgbWFnbml0dWRlczogdGhlIGZsb29yIHN0YXlzIGFib3ZlIHplcm8gYW5kIHRoZSBjZWlsaW5nCiAgICAgIC8vIHN0YXlzIGFib3ZlIHRoZSBmbG9vci4KICAgICAgY29uc3QgbG8gPSBpc051bWJlcihsb1JhdykgPyBjbGFtcEZsb29yKGxvUmF3KSA6IG51bGw7CiAgICAgIGNvbnN0IGZsb29yID0gbG8gPT09IG51bGwgPyB2b2wuY2FsX21pbiA6IGxvOwogICAgICBjb25zdCBoaSA9IGlzTnVtYmVyKGhpUmF3KQogICAgICAgID8gTWF0aC5tYXgoTWF0aC5hYnMoaGlSYXcpLCBmbG9vciArIGZsb29yRXBzKQogICAgICAgIDogbnVsbDsKICAgICAgaWYgKGxvICE9PSBudWxsKSB2b2wuY2FsX21pbiA9IGxvOwogICAgICBpZiAoaGkgIT09IG51bGwpIHZvbC5jYWxfbWF4ID0gaGk7CiAgICAgIGlmIChtb2RlbC5nZXQoIm1pcnJvcl9uZWdhdGl2ZSIpKSB7CiAgICAgICAgaWYgKGhpICE9PSBudWxsKSB2b2wuY2FsX21pbk5lZyA9IC1oaTsKICAgICAgICBpZiAobG8gIT09IG51bGwpIHZvbC5jYWxfbWF4TmVnID0gLWxvOwogICAgICB9IGVsc2UgaWYgKGxvICE9PSBudWxsKSB7CiAgICAgICAgdm9sLmNhbF9tYXhOZWcgPSAtbG87CiAgICAgIH0KICAgICAgbnYudXBkYXRlR0xWb2x1bWUoKTsKICAgICAgcmV0dXJuIHsgbG8sIGhpIH07CiAgICB9CgogICAgaWYgKGZsb29ySW5wdXQpIHsKICAgICAgZmxvb3JJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsICgpID0+IHsKICAgICAgICBjb25zdCBhcHBsaWVkID0gYXBwbHlXaW5kb3coKTsKICAgICAgICBjb25zdCBsbyA9IGFwcGxpZWQgJiYgYXBwbGllZC5sbyAhPT0gbnVsbAogICAgICAgICAgPyBhcHBsaWVkLmxvCiAgICAgICAgICA6IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgICAgZmxvb3JWYWx1ZS50ZXh0Q29udGVudCA9IGZvcm1hdFZhbHVlKGxvKTsKICAgICAgICBtb2RlbC5zZXQoImNhbF9taW4iLCBsbyk7CiAgICAgICAgbW9kZWwuc2F2ZV9jaGFuZ2VzKCk7CiAgICAgIH0pOwogICAgfQogICAgaWYgKGNlaWxJbnB1dCkgewogICAgICBjZWlsSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCAoKSA9PiB7CiAgICAgICAgY29uc3QgYXBwbGllZCA9IGFwcGx5V2luZG93KCk7CiAgICAgICAgY29uc3QgaGkgPSBhcHBsaWVkICYmIGFwcGxpZWQuaGkgIT09IG51bGwKICAgICAgICAgID8gYXBwbGllZC5oaQogICAgICAgICAgOiBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSk7CiAgICAgICAgY2VpbFZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaGkpOwogICAgICAgIG1vZGVsLnNldCgiY2FsX21heCIsIGhpKTsKICAgICAgICBtb2RlbC5zYXZlX2NoYW5nZXMoKTsKICAgICAgfSk7CiAgICB9CgogICAgLy8gLS0tIFB5dGhvbiAtPiBKUyByZWFjdGl2aXR5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvLwogICAgY29uc3Qgb25CeXRlcyA9ICgpID0+IGxvYWRTdGFjaygpOwogICAgbW9kZWwub24oImNoYW5nZTpzdGF0bWFwX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmJnX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmF0bGFzX2J5dGVzIiwgb25CeXRlcyk7CgogICAgbW9kZWwub24oImNoYW5nZTpjYWxfbWluIiwgKCkgPT4gewogICAgICBpZiAoZmxvb3JJbnB1dCkgZmxvb3JJbnB1dC52YWx1ZSA9IG1vZGVsLmdldCgiY2FsX21pbiIpID8/IGZsb29ySW5wdXQudmFsdWU7CiAgICAgIGlmIChmbG9vclZhbHVlKSBmbG9vclZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgIGFwcGx5V2luZG93KCk7CiAgICB9KTsKICAgIG1vZGVsLm9uKCJjaGFuZ2U6Y2FsX21heCIsICgpID0+IHsKICAgICAgaWYgKGNlaWxJbnB1dCkgY2VpbElucHV0LnZhbHVlID0gbW9kZWwuZ2V0KCJjYWxfbWF4IikgPz8gY2VpbElucHV0LnZhbHVlOwogICAgICBpZiAoY2VpbFZhbHVlKSBjZWlsVmFsdWUudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShjZWlsSW5wdXQudmFsdWUpOwogICAgICBhcHBseVdpbmRvdygpOwogICAgfSk7CiAgICBtb2RlbC5vbigiY2hhbmdlOnNsaWNlX3R5cGUiLCAoKSA9PgogICAgICBudi5zZXRTbGljZVR5cGUoU0xJQ0VfVFlQRVttb2RlbC5nZXQoInNsaWNlX3R5cGUiKV0gPz8gU0xJQ0VfVFlQRS5NVUxUSVBMQU5BUiksCiAgICApOwogICAgbW9kZWwub24oImNoYW5nZTpjb2xvcmJhciIsICgpID0+IHsKICAgICAgbnYub3B0cy5pc0NvbG9yYmFyID0gbW9kZWwuZ2V0KCJjb2xvcmJhciIpOwogICAgICBudi5kcmF3U2NlbmUoKTsKICAgIH0pOwogICAgbW9kZWwub24oImNoYW5nZTphdGxhc19vdXRsaW5lIiwgKCkgPT4gewogICAgICBudi5vcHRzLmF0bGFzT3V0bGluZSA9IG1vZGVsLmdldCgiYXRsYXNfb3V0bGluZSIpIHx8IDA7CiAgICAgIG52LmRyYXdTY2VuZSgpOwogICAgfSk7CgogICAgLy8gbmlpdnVlIGhhcyBubyBkZXN0cm95KCk7IGRyb3AgdGhlIFdlYkdMIGNvbnRleHQgb24gdGVhcmRvd24gLyByZS1yZW5kZXIKICAgIC8vIHNvIHJlcGVhdGVkIGNlbGwgcnVucyBkb24ndCBsZWFrIEdMIGNvbnRleHRzIChicm93c2VycyBjYXAgdGhlbSkuCiAgICByZXR1cm4gKCkgPT4gewogICAgICBjYW52YXMKICAgICAgICAuZ2V0Q29udGV4dCgid2ViZ2wyIikKICAgICAgICA/LmdldEV4dGVuc2lvbigiV0VCR0xfbG9zZV9jb250ZXh0IikKICAgICAgICA/Lmxvc2VDb250ZXh0KCk7CiAgICB9OwogIH0sCn07Cg==\"' data-label=\"null\" data-model-id='\"68c9a880b5c64854b539ca1fc5d8ec76\"'\u003e\u003c/div\u003e\u003cdiv class=\"marimo-book-plotly\" data-config=\"{}\" data-figure='{\"data\":[{\"hovertemplate\":\"TR: %{x}\\u003cbr\\u003eIntensity: %{y:.4f}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#EF553B\",\"width\":2},\"mode\":\"lines\",\"name\":\"Timecourse\",\"x\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127],\"y\":{\"dtype\":\"f4\",\"bdata\":\"1ms7Oc8fUrqWxE67tD0wu/iUObu2BlS7JuoVu27EjLmAkm06AeQ0OJRp/DkS2rU6hzj5Op033jpW2dw6tNrKOcCgwrpiSrm65Ij3uqCZGbvhf2y6hwJ6Oc7yUzqchts486xyuiJgu7pbVwC7mOGluiwCrzovN0s7YZFCOwshrjrfE5063E0EOidFNLpkhTq6WQe2OiWxnzpxzB07M3a7OqBIrDpUk8y6OQdAu58XCrsPPuG6qvvIuS7FRbqg+K45t/MOurl9qDpsxfA5Nup1Ovc6zDm6vrO6nPGjumP+xLqUHQG7+/jTumaAXzgSTtQ6CjPbOv/CFjvhgRs7pYM2OS1EkLr/DAW6Tx1BugBG+LpaVqy5w3yeOkJNFzsb+tg6IXwLO2JEPztEGq46p4/Gun/T+bo4pbW6hbkSu/SZKrrIQxG73/5JOlPtfTlStgY6EP8Guga2Erpk5rE5Fb1supePhLqR6lm6DGBouoTr3DnDpHg6CziNOdejmLoFgDK7ujcyu/51djl06986XpopOnPz+TqYjvY6Tu2TOpVcP7pzSTu6uh/nugo8crr7jpW43iA8O+3tdzteDww7qp86OlJrPLqOApS6C6sYu5vV4zjKsV46GJpcOlDKbDpZ6OA67z2MOgP3lrdM/Ny4rLvYuCC+ULoBMeC51842uS+iYLk=\"},\"type\":\"scatter\",\"xaxis\":\"x\",\"yaxis\":\"y\"},{\"hovertemplate\":\"Freq: %{x:.4f} Hz\\u003cbr\\u003ePower: %{y:.4e}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#636EFA\",\"width\":2},\"mode\":\"lines\",\"name\":\"Power\",\"x\":{\"dtype\":\"f8\",\"bdata\":\"q6qqqqqqaj+rqqqqqqp6PwAAAAAAAIQ/q6qqqqqqij+rqqqqqqqQPwAAAAAAAJQ/VlVVVVVVlz+rqqqqqqqaPwAAAAAAAJ4/q6qqqqqqoD9WVVVVVVWiPwAAAAAAAKQ/q6qqqqqqpT9WVVVVVVWnPwAAAAAAAKk/q6qqqqqqqj9WVVVVVVWsPwAAAAAAAK4/q6qqqqqqrz+rqqqqqqqwPwAAAAAAgLE/VlVVVVVVsj+rqqqqqiqzPwAAAAAAALQ/VlVVVVXVtD+rqqqqqqq1PwAAAAAAgLY/VlVVVVVVtz+rqqqqqiq4PwAAAAAAALk/VlVVVVXVuT+rqqqqqqq6PwAAAAAAgLs/VlVVVVVVvD+rqqqqqiq9PwAAAAAAAL4/VlVVVVXVvj+rqqqqqqq/PwAAAAAAQMA/q6qqqqqqwD9WVVVVVRXBPwAAAAAAgME/q6qqqqrqwT9WVVVVVVXCPwAAAAAAwMI/q6qqqqoqwz9WVVVVVZXDPwAAAAAAAMQ/q6qqqqpqxD9WVVVVVdXEPwAAAAAAQMU/q6qqqqqqxT9WVVVVVRXGPwAAAAAAgMY/q6qqqqrqxj9WVVVVVVXHPwAAAAAAwMc/q6qqqqoqyD9WVVVVVZXIPwAAAAAAAMk/q6qqqqpqyT9WVVVVVdXJPwAAAAAAQMo/\"},\"y\":{\"dtype\":\"f4\",\"bdata\":\"LQkdOHUWjjm2Xaw6Cc8eOW2d6TmuWkY6ubDDOue/jDl+uQY5+nrGOovKojpOd/I51MCCO8/oUTqYd4I6Td/MOvAenTn5Yvg5kVe5NoRDvDhxDdo4UO0lOfLFgTa7gJw52xL4NfTaiDha/Vs4HAQWONpEMTjXoz43DlfxOLgG1Tj69Sg5reNFOQlwNDk/9sM4N16jOHdgUDgm6DQ4sJRuOPFcYzddFTQ47rPzN6V90TV0+pI3NWY5N5RgyDeMU344lZORNs4cFTdiXi83x3E5OAcrAThIU6I2mHujNsb/HzmjFXE4YThMN2aaSjdfgAQ5srAsOCDTnjdNwyA3\"},\"type\":\"scatter\",\"xaxis\":\"x2\",\"yaxis\":\"y2\"}],\"layout\":{\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermap\":[{\"type\":\"scattermap\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,0.41000000000000003],\"title\":{\"text\":\"TR\"}},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Intensity (AU)\"}},\"xaxis2\":{\"anchor\":\"y2\",\"domain\":[0.5900000000000001,1.0],\"title\":{\"text\":\"Frequency (Hz)\"}},\"yaxis2\":{\"anchor\":\"x2\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Power\"}},\"annotations\":[{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Timecourse (TR=2.4s)\",\"x\":0.20500000000000002,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"},{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Power Spectrum\",\"x\":0.795,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"}],\"margin\":{\"t\":40,\"b\":50,\"l\":70,\"r\":30},\"height\":280,\"showlegend\":false,\"dragmode\":\"zoom\"}}'\u003e\u003c/div\u003e\u003c/div\u003e\n\u003c/div\u003e"},"7":{"6":"\u003cdiv class=\"language-python highlight\"\u003e\u003cpre\u003e\u003cspan\u003e\u003c/span\u003e\u003ccode\u003e\u003cspan id=\"__span-0-1\"\u003e\u003ca id=\"__codelineno-0-1\" name=\"__codelineno-0-1\" href=\"#__codelineno-0-1\"\u003e\u003c/a\u003e\u003cspan class=\"n\"\u003esub\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;S01\u0026#39;\u003c/span\u003e\n\u003c/span\u003e\u003cspan id=\"__span-0-2\"\u003e\u003ca id=\"__codelineno-0-2\" name=\"__codelineno-0-2\" href=\"#__codelineno-0-2\"\u003e\u003c/a\u003e\u003cspan class=\"n\"\u003edata\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eBrainData\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003elocalizer\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eget_file\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003esub\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;derivatives\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;bold\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e))\u003c/span\u003e\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cpre class=\"marimo-book-output-text marimo-stream-stderr\"\u003eWarning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.\n\u003c/pre\u003e","12":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cmarimo-slider data-initial-value='7' data-label='\u0026quot;\u0026#92;u003cspan class=\u0026#92;\u0026quot;markdown prose dark:prose-invert contents\u0026#92;\u0026quot;\u0026#92;u003e\u0026#92;u003cspan class=\u0026#92;\u0026quot;paragraph\u0026#92;\u0026quot;\u0026#92;u003eComponent\u0026#92;u003c/span\u0026#92;u003e\u0026#92;u003c/span\u0026#92;u003e\u0026quot;' data-start='0' data-stop='9' data-step='1' data-steps='[]' data-debounce='false' data-disabled='false' data-orientation='\u0026quot;horizontal\u0026quot;' data-show-value='true' data-include-input='false' data-full-width='false'\u003e\u003c/marimo-slider\u003e\n\u003c/div\u003e","13":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cdiv style=\"display: flex;flex: 1;flex-direction: column;justify-content: flex-start;align-items: normal;flex-wrap: nowrap;gap: 0.5rem\"\u003e\u003cspan class=\"markdown prose dark:prose-invert contents\"\u003e\u003cspan class=\"paragraph\"\u003e\u003cstrong\u003eComponent 8 of 10\u003c/strong\u003e\u003c/span\u003e\u003c/span\u003e\u003cdiv class=\"marimo-book-anywidget\" data-buffers='[{\"path\": [\"atlas_bytes\"], \"empty\": true}, {\"path\": [\"bg_bytes\"], \"url\": \"assets/anywidget/c02b4524b0c54de882947847c0f613f75d3131c979be42145b19a46de3dece42.bin\", \"size\": 533672}, {\"path\": [\"statmap_bytes\"], \"url\": \"assets/anywidget/1be3c12786976853b6bbf94a5fa0c89e546d41ddb56c81ff27e00e643a5282fa.bin\", \"size\": 905343}]' data-initial-value='{\"_anywidget_id\": \"nltools.data.braindata.viewer._NiivueViewer\", \"_dom_classes\": [], \"_model_module\": \"anywidget\", \"_model_module_version\": \"~0.10.*\", \"_model_name\": \"AnyModel\", \"_view_count\": null, \"_view_module\": \"anywidget\", \"_view_module_version\": \"~0.10.*\", \"_view_name\": \"AnyView\", \"atlas_lut\": {}, \"atlas_name\": \"\", \"atlas_outline\": 0.0, \"cal_max\": 2.8507631587982165, \"cal_max_neg\": -2.0, \"cal_min\": 2.0, \"cal_min_neg\": -2.8507631587982165, \"colorbar\": true, \"controls\": true, \"height\": 600, \"layout\": \"IPY_MODEL_b9421272668d41f3b09bfdf9fe77a678\", \"mirror_negative\": true, \"niivue_opts\": {}, \"slice_type\": \"MULTIPLANAR\", \"slider_bounds\": {\"min\": 0.06205758571624756, \"max\": 12.411517143249512, \"value_low\": 2.0, \"value_high\": 2.8507631587982165, \"step\": 0.06205758571624756}, \"statmap\": {\"name\": \"statmap\", \"colormap\": \"warm\", \"colormap_negative\": \"winter\", \"opacity\": 1.0}, \"tabbable\": null, \"tooltip\": null}' data-js-url='\"data:text/javascript;base64,Ly8gbmlpdnVlIHZpZXdlciBmb3IgQnJhaW5EYXRhLmlwbG90KCksIGRyaXZlbiB0aHJvdWdoIGFueXdpZGdldCdzICpzdGFuZGFyZCoKLy8gbW9kZWwgQVBJIChnZXQgLyBzZXQgLyBzYXZlX2NoYW5nZXMgLyBvbikgb25seSDigJQgbm8gaG9zdC1zcGVjaWZpYyBwcm90b2NvbAovLyAodGhlIGNvbnRyYXN0IHdpdGggaXB5bmlpdnVlLCBzZWUgY29zYW5sYWIvbmx0b29scyM0NTUpLCBzbyB0aGUgd2lkZ2V0IHdvcmtzCi8vIGlkZW50aWNhbGx5IGluIEp1cHl0ZXIgYW5kIGBtYXJpbW8gZWRpdGAuCi8vCi8vIG5paXZ1ZSBpdHNlbGYgaXMgcHVsbGVkIGZyb20gYSBDRE4gYXMgYW4gRVMgbW9kdWxlLiBgX2VzbWAgaXMgYW4gRVMgbW9kdWxlLCBzbwovLyBhIHRvcC1sZXZlbCBgaW1wb3J0YCBpcyByZXNvbHZlZCBieSB0aGUgYnJvd3NlciBhdCByZW5kZXIgdGltZS4gVGhlIHBpbiBrZWVwcwovLyB0aGUgQVBJIHN0YWJsZS4KaW1wb3J0IHsKICBOaWl2dWUsCiAgTlZJbWFnZSwKICBTTElDRV9UWVBFLAp9IGZyb20gImh0dHBzOi8vZXNtLnNoL0BuaWl2dWUvbmlpdnVlQDAuNjkuMCI7CgovLyBBIHRyYWl0bGV0cyBgQnl0ZXNgIHRyYWl0IGFycml2ZXMgaW4gSlMgYXMgYSBEYXRhVmlldyBvdmVyIGEgc2hhcmVkIGJ1ZmZlci4KLy8gbmlpdnVlIHdhbnRzIGEgc3RhbmRhbG9uZSBBcnJheUJ1ZmZlciwgc28gc2xpY2Ugb3V0IGV4YWN0bHkgdGhpcyB2aWV3J3MKLy8gd2luZG93LiBFbXB0eSBieXRlcyAoYW4gYWJzZW50IG9wdGlvbmFsIHZvbHVtZSkgeWllbGQgYG51bGxgLgpmdW5jdGlvbiBieXRlc1RvQXJyYXlCdWZmZXIoZHYpIHsKICBpZiAoIWR2IHx8IGR2LmJ5dGVMZW5ndGggPT09IDApIHJldHVybiBudWxsOwogIHJldHVybiBkdi5idWZmZXIuc2xpY2UoZHYuYnl0ZU9mZnNldCwgZHYuYnl0ZU9mZnNldCArIGR2LmJ5dGVMZW5ndGgpOwp9CgovLyBOVkltYWdlLm5ldyB0cmVhdHMgTmFOIGNhbF9taW4vY2FsX21heCBhcyAiYXV0byIgKHBlcmNlbnRpbGUtZGVyaXZlZCkuIEEgbnVsbAovLyB0cmFpdCAod2luZG93IGxlZnQgb24gYXV0bykgbWFwcyB0byBOYU47IGEgbnVtYmVyIHBhc3NlcyB0aHJvdWdoLgpmdW5jdGlvbiBvck5hTih4KSB7CiAgcmV0dXJuIHggPT09IG51bGwgfHwgeCA9PT0gdW5kZWZpbmVkID8gTmFOIDogeDsKfQoKLy8gQSB0cmFpdCBvciBzbGlkZXIgdmFsdWUgdGhhdCBpcyByZWFsbHkgYSBudW1iZXIgKGEgbnVsbC91bmRlZmluZWQgdHJhaXQgb3IgYQovLyBOYU4gcGFyc2UgbWVhbnMgImxlYXZlIHRoaXMgZWRnZSBhbG9uZSIpLgpmdW5jdGlvbiBpc051bWJlcih4KSB7CiAgcmV0dXJuIHggIT09IG51bGwgJiYgeCAhPT0gdW5kZWZpbmVkICYmICFOdW1iZXIuaXNOYU4oeCk7Cn0KCmZ1bmN0aW9uIGZvcm1hdFZhbHVlKHZhbHVlKSB7CiAgY29uc3QgbnVtYmVyID0gTnVtYmVyKHZhbHVlKTsKICBpZiAoIU51bWJlci5pc0Zpbml0ZShudW1iZXIpKSByZXR1cm4gIuKAlCI7CiAgcmV0dXJuIE51bWJlci5wYXJzZUZsb2F0KG51bWJlci50b1ByZWNpc2lvbig0KSkudG9TdHJpbmcoKTsKfQoKZXhwb3J0IGRlZmF1bHQgewogIGFzeW5jIHJlbmRlcih7IG1vZGVsLCBlbCB9KSB7CiAgICBlbC5zdHlsZS53aWR0aCA9ICIxMDAlIjsKCiAgICAvLyAtLS0gRE9NOiBvcHRpb25hbCB0aHJlc2hvbGQgY29udHJvbHMgKyB0aGUgV2ViR0wgY2FudmFzIC0tLS0tLS0tLS0tLS0tIC8vCiAgICBsZXQgZmxvb3JJbnB1dCA9IG51bGw7CiAgICBsZXQgY2VpbElucHV0ID0gbnVsbDsKICAgIGxldCBmbG9vclZhbHVlID0gbnVsbDsKICAgIGxldCBjZWlsVmFsdWUgPSBudWxsOwogICAgY29uc3QgYm91bmRzID0gbW9kZWwuZ2V0KCJzbGlkZXJfYm91bmRzIikgfHwge307CiAgICAvLyBUaGUgd2luZG93IGlzIGEgbWFnbml0dWRlIHdpbmRvdyBtaXJyb3JlZCBvbnRvIHRoZSBuZWdhdGl2ZSBsaW1iLCBhbmQgYQogICAgLy8gZmxvb3Igb2YgemVybyAob3IgYmVsb3cpIGFkbWl0cyBldmVyeSB6ZXJvLXZhbHVlZCB2b3hlbCDigJQgdGhlIHdob2xlCiAgICAvLyB2b2x1bWUgYm94IG91dHNpZGUgdGhlIG1hc2sgcGFpbnRzIGluIHRoZSBuZWdhdGl2ZSBjb2xvcm1hcC4gTmV2ZXIgbGV0CiAgICAvLyB0aGUgYXBwbGllZCBmbG9vciByZWFjaCB6ZXJvLCB3aGF0ZXZlciB0aGUgc2xpZGVyIG9yIHRoZSBtb2RlbCBzYXlzLgogICAgLy8KICAgIC8vIFRoZSBlcHNpbG9uIGlzIHRoZSBzbGlkZXIncyBvd24gbG93ZXIgYm91bmQsIHdoaWNoIFB5dGhvbiBndWFyYW50ZWVzIGlzCiAgICAvLyBzdHJpY3RseSBwb3NpdGl2ZSBhbmQgYXQgb3IgYmVsb3cgdGhlIHJlc29sdmVkIGBjYWxfbWluYC4gRGVyaXZpbmcgaXQKICAgIC8vIGhlcmUgaW5zdGVhZCAoZnJvbSB0aGUgc3RlcCwgc2F5KSB3b3VsZCBsZXQgdGhlIHR3byBkcmlmdCBhcGFydCBhbmQKICAgIC8vIHJhaXNlIHRoZSByZW5kZXJlZCBmbG9vciBhYm92ZSB0aGUgd2luZG93IFB5dGhvbiByZXNvbHZlZC4KICAgIGNvbnN0IGZsb29yRXBzID0gTnVtYmVyKGJvdW5kcy5taW4pID4gMCA/IE51bWJlcihib3VuZHMubWluKSA6IDFlLTk7CiAgICBjb25zdCBjbGFtcEZsb29yID0gKHYpID0+IE1hdGgubWF4KE1hdGguYWJzKHYpLCBmbG9vckVwcyk7CgogICAgaWYgKG1vZGVsLmdldCgiY29udHJvbHMiKSkgewogICAgICBjb25zdCBjb250cm9scyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICBjb250cm9scy5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAiZGlzcGxheTpmbGV4O2dhcDowLjc1cmVtO2FsaWduLWl0ZW1zOmNlbnRlcjtmb250OjEycHgvMS40IHN5c3RlbS11aSwiICsKICAgICAgICAic2Fucy1zZXJpZjtwYWRkaW5nOjRweCAycHg7ZmxleC13cmFwOndyYXAiOwoKICAgICAgY29uc3QgbWtSYW5nZSA9IChsYWJlbFRleHQsIHZhbHVlKSA9PiB7CiAgICAgICAgY29uc3Qgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7CiAgICAgICAgd3JhcC5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAgICJkaXNwbGF5OmZsZXg7Z2FwOjAuNHJlbTthbGlnbi1pdGVtczpjZW50ZXI7ZmxleDoxIDEgMjAwcHgiOwogICAgICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgc3Bhbi50ZXh0Q29udGVudCA9IGxhYmVsVGV4dDsKICAgICAgICBjb25zdCBsb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgbG93LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoYm91bmRzLm1pbiA/PyAwKTsKICAgICAgICBjb25zdCBoaWdoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgIGhpZ2gudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShib3VuZHMubWF4ID8/IDEpOwogICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgICAgICBpbnB1dC50eXBlID0gInJhbmdlIjsKICAgICAgICBpbnB1dC5taW4gPSBib3VuZHMubWluID8/IDA7CiAgICAgICAgaW5wdXQubWF4ID0gYm91bmRzLm1heCA/PyAxOwogICAgICAgIGlucHV0LnN0ZXAgPSBib3VuZHMuc3RlcCA/PyAwLjAxOwogICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUgPz8gYm91bmRzLm1pbiA/PyAwOwogICAgICAgIGlucHV0LnN0eWxlLmZsZXggPSAiMSI7CiAgICAgICAgY29uc3Qgb3V0cHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3V0cHV0Iik7CiAgICAgICAgb3V0cHV0LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaW5wdXQudmFsdWUpOwogICAgICAgIG91dHB1dC5zdHlsZS5jc3NUZXh0ID0gIm1pbi13aWR0aDo2Y2g7dGV4dC1hbGlnbjpyaWdodDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXMiOwogICAgICAgIHdyYXAuYXBwZW5kKHNwYW4sIGxvdywgaW5wdXQsIGhpZ2gsIG91dHB1dCk7CiAgICAgICAgY29udHJvbHMuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICAgICAgcmV0dXJuIFtpbnB1dCwgb3V0cHV0XTsKICAgICAgfTsKCiAgICAgIFtmbG9vcklucHV0LCBmbG9vclZhbHVlXSA9IG1rUmFuZ2UoIm1pbiIsIGJvdW5kcy52YWx1ZV9sb3cpOwogICAgICBbY2VpbElucHV0LCBjZWlsVmFsdWVdID0gbWtSYW5nZSgibWF4IiwgYm91bmRzLnZhbHVlX2hpZ2gpOwogICAgICBlbC5hcHBlbmRDaGlsZChjb250cm9scyk7CiAgICB9CgogICAgY29uc3QgaGVpZ2h0ID0gbW9kZWwuZ2V0KCJoZWlnaHQiKSB8fCA0MDA7CiAgICAvLyBuaWl2dWUncyByZXNpemUgb2JzZXJ2ZXIgc2l6ZXMgdGhlIGNhbnZhcyBmcm9tIGl0cyAqcGFyZW50KiBhbmQgcmV3cml0ZXMKICAgIC8vIHRoZSBjYW52YXMncyBvd24gaW5saW5lIGhlaWdodCB0byAxMDAlLCBzbyB0aGUgcmVxdWVzdGVkIGhlaWdodCBoYXMgdG8KICAgIC8vIGxpdmUgb24gYSB3cmFwcGVyLiBXaXRob3V0IGl0IHRoZSB2aWV3ZXIgY29sbGFwc2VzIHRvIHRoZSBwYXJlbnQncwogICAgLy8gbmF0dXJhbCBoZWlnaHQgKH4xNTBweCkgaW4gYW55IGhvc3QgdGhhdCBkb2Vzbid0IHNpemUgdGhlIHdpZGdldCBmb3IKICAgIC8vIHVzIOKAlCBzdGF0aWMvZXhwb3J0ZWQgcGFnZXMsIGlmcmFtZXMsIHBsYWluIEp1cHl0ZXIgb3V0cHV0IGFyZWFzLgogICAgY29uc3QgY2FudmFzV3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgY2FudmFzV3JhcC5zdHlsZS5jc3NUZXh0ID0gYHdpZHRoOjEwMCU7aGVpZ2h0OiR7aGVpZ2h0fXB4YDsKICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogICAgY2FudmFzLnN0eWxlLmNzc1RleHQgPSAid2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtkaXNwbGF5OmJsb2NrIjsKICAgIGNhbnZhc1dyYXAuYXBwZW5kQ2hpbGQoY2FudmFzKTsKICAgIGVsLmFwcGVuZENoaWxkKGNhbnZhc1dyYXApOwoKICAgIC8vIC0tLSBuaWl2dWUgaW5zdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vCiAgICBjb25zdCBudiA9IG5ldyBOaWl2dWUoewogICAgICBpc0NvbG9yYmFyOiBtb2RlbC5nZXQoImNvbG9yYmFyIiksCiAgICAgIC4uLihtb2RlbC5nZXQoIm5paXZ1ZV9vcHRzIikgfHwge30pLAogICAgfSk7CiAgICBhd2FpdCBudi5hdHRhY2hUb0NhbnZhcyhjYW52YXMpOwoKICAgIC8vIEluZGV4IG9mIHRoZSBzdGF0IG1hcCBpbnNpZGUgbnYudm9sdW1lcyAoc2V0IGJ5IGxvYWRTdGFjayk7IHRoZSB0aHJlc2hvbGQKICAgIC8vIGNvbnRyb2xzIGRyaXZlIHRoaXMgdm9sdW1lJ3Mgd2luZG93LgogICAgbGV0IHN0YXRtYXBJZHggPSAtMTsKCiAgICAvLyBCdWlsZCB0aGUgdm9sdW1lIHN0YWNrIFtiYWNrZ3JvdW5kPywgc3RhdG1hcCwgYXRsYXM/XSBmcm9tIHRoZSBieXRlCiAgICAvLyB0cmFpdHMgKyBkaXNwbGF5IHBhcmFtcy4gUmVidWlsdCB3aGVuZXZlciBhbnkgdm9sdW1lJ3MgYnl0ZXMgY2hhbmdlLgogICAgYXN5bmMgZnVuY3Rpb24gbG9hZFN0YWNrKCkgewogICAgICB3aGlsZSAobnYudm9sdW1lcy5sZW5ndGgpIG52LnJlbW92ZVZvbHVtZUJ5SW5kZXgoMCk7CiAgICAgIHN0YXRtYXBJZHggPSAtMTsKCiAgICAgIGNvbnN0IGJnID0gYnl0ZXNUb0FycmF5QnVmZmVyKG1vZGVsLmdldCgiYmdfYnl0ZXMiKSk7CiAgICAgIGlmIChiZykgewogICAgICAgIGNvbnN0IGJnVm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoYmcsICJiYWNrZ3JvdW5kLm5paS5neiIsICJncmF5Iik7CiAgICAgICAgYmdWb2wuY29sb3JiYXJWaXNpYmxlID0gZmFsc2U7CiAgICAgICAgbnYuYWRkVm9sdW1lKGJnVm9sKTsKICAgICAgfQoKICAgICAgY29uc3Qgc3RhdCA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoInN0YXRtYXBfYnl0ZXMiKSk7CiAgICAgIGlmIChzdGF0KSB7CiAgICAgICAgY29uc3QgcCA9IG1vZGVsLmdldCgic3RhdG1hcCIpIHx8IHt9OwogICAgICAgIGNvbnN0IHZvbCA9IGF3YWl0IE5WSW1hZ2UubmV3KAogICAgICAgICAgc3RhdCwKICAgICAgICAgIChwLm5hbWUgfHwgInN0YXRtYXAiKSArICIubmlpLmd6IiwKICAgICAgICAgIHAuY29sb3JtYXAgfHwgIndhcm0iLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICAgIG51bGwsCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9taW4iKSksCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9tYXgiKSksCiAgICAgICAgKTsKICAgICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKHZvbC5jYWxfbWluKSkgdm9sLmNhbF9taW4gPSBjbGFtcEZsb29yKHZvbC5jYWxfbWluKTsKICAgICAgICBpZiAocC5jb2xvcm1hcF9uZWdhdGl2ZSkgdm9sLmNvbG9ybWFwTmVnYXRpdmUgPSBwLmNvbG9ybWFwX25lZ2F0aXZlOwogICAgICAgIHZvbC5jYWxfbWluTmVnID0gb3JOYU4obW9kZWwuZ2V0KCJjYWxfbWluX25lZyIpKTsKICAgICAgICB2b2wuY2FsX21heE5lZyA9IG9yTmFOKG1vZGVsLmdldCgiY2FsX21heF9uZWciKSk7CiAgICAgICAgdm9sLmNvbG9yYmFyVmlzaWJsZSA9IHRydWU7CiAgICAgICAgc3RhdG1hcElkeCA9IG52LnZvbHVtZXMubGVuZ3RoOwogICAgICAgIG52LmFkZFZvbHVtZSh2b2wpOwogICAgICB9CgogICAgICBjb25zdCBhdGxhcyA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoImF0bGFzX2J5dGVzIikpOwogICAgICBpZiAoYXRsYXMpIHsKICAgICAgICBjb25zdCBwID0gbW9kZWwuZ2V0KCJzdGF0bWFwIikgfHwge307CiAgICAgICAgY29uc3Qgdm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoCiAgICAgICAgICBhdGxhcywKICAgICAgICAgIChtb2RlbC5nZXQoImF0bGFzX25hbWUiKSB8fCAiYXRsYXMiKSArICIubmlpLmd6IiwKICAgICAgICAgICIiLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICApOwogICAgICAgIGNvbnN0IGx1dCA9IG1vZGVsLmdldCgiYXRsYXNfbHV0Iik7CiAgICAgICAgaWYgKGx1dCAmJiBsdXQubGFiZWxzKSB2b2wuc2V0Q29sb3JtYXBMYWJlbChsdXQpOwogICAgICAgIHZvbC5jb2xvcmJhclZpc2libGUgPSBmYWxzZTsKICAgICAgICBudi5hZGRWb2x1bWUodm9sKTsKICAgICAgfQoKICAgICAgbnYub3B0cy5hdGxhc091dGxpbmUgPSBtb2RlbC5nZXQoImF0bGFzX291dGxpbmUiKSB8fCAwOwogICAgICBudi51cGRhdGVHTFZvbHVtZSgpOwogICAgfQoKICAgIGF3YWl0IGxvYWRTdGFjaygpOwogICAgbnYuc2V0U2xpY2VUeXBlKFNMSUNFX1RZUEVbbW9kZWwuZ2V0KCJzbGljZV90eXBlIildID8/IFNMSUNFX1RZUEUuTVVMVElQTEFOQVIpOwoKICAgIC8vIC0tLSB0aHJlc2hvbGQgY29udHJvbHMgLT4gbmlpdnVlICsgUHl0aG9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy8KICAgIC8vIEFwcGxpZXMgdGhlIGNsYW1wZWQgd2luZG93IHRvIG5paXZ1ZSBhbmQgcmV0dXJucyBpdCwgc28gdGhlIGNhbGxlcnMgdGhhdAogICAgLy8gd3JpdGUgYmFjayB0byBQeXRob24gc2VuZCB3aGF0IHdhcyByZW5kZXJlZCByYXRoZXIgdGhhbiB3aGF0IHdhcyBkcmFnZ2VkLgogICAgZnVuY3Rpb24gYXBwbHlXaW5kb3coKSB7CiAgICAgIGlmIChzdGF0bWFwSWR4IDwgMCkgcmV0dXJuIG51bGw7CiAgICAgIGNvbnN0IHZvbCA9IG52LnZvbHVtZXNbc3RhdG1hcElkeF07CiAgICAgIGNvbnN0IGxvUmF3ID0gZmxvb3JJbnB1dCA/IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9taW4iKTsKICAgICAgY29uc3QgaGlSYXcgPSBjZWlsSW5wdXQgPyBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9tYXgiKTsKICAgICAgLy8gQm90aCBlZGdlcyBhcmUgbWFnbml0dWRlczogdGhlIGZsb29yIHN0YXlzIGFib3ZlIHplcm8gYW5kIHRoZSBjZWlsaW5nCiAgICAgIC8vIHN0YXlzIGFib3ZlIHRoZSBmbG9vci4KICAgICAgY29uc3QgbG8gPSBpc051bWJlcihsb1JhdykgPyBjbGFtcEZsb29yKGxvUmF3KSA6IG51bGw7CiAgICAgIGNvbnN0IGZsb29yID0gbG8gPT09IG51bGwgPyB2b2wuY2FsX21pbiA6IGxvOwogICAgICBjb25zdCBoaSA9IGlzTnVtYmVyKGhpUmF3KQogICAgICAgID8gTWF0aC5tYXgoTWF0aC5hYnMoaGlSYXcpLCBmbG9vciArIGZsb29yRXBzKQogICAgICAgIDogbnVsbDsKICAgICAgaWYgKGxvICE9PSBudWxsKSB2b2wuY2FsX21pbiA9IGxvOwogICAgICBpZiAoaGkgIT09IG51bGwpIHZvbC5jYWxfbWF4ID0gaGk7CiAgICAgIGlmIChtb2RlbC5nZXQoIm1pcnJvcl9uZWdhdGl2ZSIpKSB7CiAgICAgICAgaWYgKGhpICE9PSBudWxsKSB2b2wuY2FsX21pbk5lZyA9IC1oaTsKICAgICAgICBpZiAobG8gIT09IG51bGwpIHZvbC5jYWxfbWF4TmVnID0gLWxvOwogICAgICB9IGVsc2UgaWYgKGxvICE9PSBudWxsKSB7CiAgICAgICAgdm9sLmNhbF9tYXhOZWcgPSAtbG87CiAgICAgIH0KICAgICAgbnYudXBkYXRlR0xWb2x1bWUoKTsKICAgICAgcmV0dXJuIHsgbG8sIGhpIH07CiAgICB9CgogICAgaWYgKGZsb29ySW5wdXQpIHsKICAgICAgZmxvb3JJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsICgpID0+IHsKICAgICAgICBjb25zdCBhcHBsaWVkID0gYXBwbHlXaW5kb3coKTsKICAgICAgICBjb25zdCBsbyA9IGFwcGxpZWQgJiYgYXBwbGllZC5sbyAhPT0gbnVsbAogICAgICAgICAgPyBhcHBsaWVkLmxvCiAgICAgICAgICA6IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgICAgZmxvb3JWYWx1ZS50ZXh0Q29udGVudCA9IGZvcm1hdFZhbHVlKGxvKTsKICAgICAgICBtb2RlbC5zZXQoImNhbF9taW4iLCBsbyk7CiAgICAgICAgbW9kZWwuc2F2ZV9jaGFuZ2VzKCk7CiAgICAgIH0pOwogICAgfQogICAgaWYgKGNlaWxJbnB1dCkgewogICAgICBjZWlsSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCAoKSA9PiB7CiAgICAgICAgY29uc3QgYXBwbGllZCA9IGFwcGx5V2luZG93KCk7CiAgICAgICAgY29uc3QgaGkgPSBhcHBsaWVkICYmIGFwcGxpZWQuaGkgIT09IG51bGwKICAgICAgICAgID8gYXBwbGllZC5oaQogICAgICAgICAgOiBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSk7CiAgICAgICAgY2VpbFZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaGkpOwogICAgICAgIG1vZGVsLnNldCgiY2FsX21heCIsIGhpKTsKICAgICAgICBtb2RlbC5zYXZlX2NoYW5nZXMoKTsKICAgICAgfSk7CiAgICB9CgogICAgLy8gLS0tIFB5dGhvbiAtPiBKUyByZWFjdGl2aXR5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvLwogICAgY29uc3Qgb25CeXRlcyA9ICgpID0+IGxvYWRTdGFjaygpOwogICAgbW9kZWwub24oImNoYW5nZTpzdGF0bWFwX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmJnX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmF0bGFzX2J5dGVzIiwgb25CeXRlcyk7CgogICAgbW9kZWwub24oImNoYW5nZTpjYWxfbWluIiwgKCkgPT4gewogICAgICBpZiAoZmxvb3JJbnB1dCkgZmxvb3JJbnB1dC52YWx1ZSA9IG1vZGVsLmdldCgiY2FsX21pbiIpID8/IGZsb29ySW5wdXQudmFsdWU7CiAgICAgIGlmIChmbG9vclZhbHVlKSBmbG9vclZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgIGFwcGx5V2luZG93KCk7CiAgICB9KTsKICAgIG1vZGVsLm9uKCJjaGFuZ2U6Y2FsX21heCIsICgpID0+IHsKICAgICAgaWYgKGNlaWxJbnB1dCkgY2VpbElucHV0LnZhbHVlID0gbW9kZWwuZ2V0KCJjYWxfbWF4IikgPz8gY2VpbElucHV0LnZhbHVlOwogICAgICBpZiAoY2VpbFZhbHVlKSBjZWlsVmFsdWUudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShjZWlsSW5wdXQudmFsdWUpOwogICAgICBhcHBseVdpbmRvdygpOwogICAgfSk7CiAgICBtb2RlbC5vbigiY2hhbmdlOnNsaWNlX3R5cGUiLCAoKSA9PgogICAgICBudi5zZXRTbGljZVR5cGUoU0xJQ0VfVFlQRVttb2RlbC5nZXQoInNsaWNlX3R5cGUiKV0gPz8gU0xJQ0VfVFlQRS5NVUxUSVBMQU5BUiksCiAgICApOwogICAgbW9kZWwub24oImNoYW5nZTpjb2xvcmJhciIsICgpID0+IHsKICAgICAgbnYub3B0cy5pc0NvbG9yYmFyID0gbW9kZWwuZ2V0KCJjb2xvcmJhciIpOwogICAgICBudi5kcmF3U2NlbmUoKTsKICAgIH0pOwogICAgbW9kZWwub24oImNoYW5nZTphdGxhc19vdXRsaW5lIiwgKCkgPT4gewogICAgICBudi5vcHRzLmF0bGFzT3V0bGluZSA9IG1vZGVsLmdldCgiYXRsYXNfb3V0bGluZSIpIHx8IDA7CiAgICAgIG52LmRyYXdTY2VuZSgpOwogICAgfSk7CgogICAgLy8gbmlpdnVlIGhhcyBubyBkZXN0cm95KCk7IGRyb3AgdGhlIFdlYkdMIGNvbnRleHQgb24gdGVhcmRvd24gLyByZS1yZW5kZXIKICAgIC8vIHNvIHJlcGVhdGVkIGNlbGwgcnVucyBkb24ndCBsZWFrIEdMIGNvbnRleHRzIChicm93c2VycyBjYXAgdGhlbSkuCiAgICByZXR1cm4gKCkgPT4gewogICAgICBjYW52YXMKICAgICAgICAuZ2V0Q29udGV4dCgid2ViZ2wyIikKICAgICAgICA/LmdldEV4dGVuc2lvbigiV0VCR0xfbG9zZV9jb250ZXh0IikKICAgICAgICA/Lmxvc2VDb250ZXh0KCk7CiAgICB9OwogIH0sCn07Cg==\"' data-label=\"null\" data-model-id='\"c6535da1a96349dfa54360d54a0e7aa3\"'\u003e\u003c/div\u003e\u003cdiv class=\"marimo-book-plotly\" data-config=\"{}\" data-figure='{\"data\":[{\"hovertemplate\":\"TR: %{x}\\u003cbr\\u003eIntensity: %{y:.4f}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#EF553B\",\"width\":2},\"mode\":\"lines\",\"name\":\"Timecourse\",\"x\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127],\"y\":{\"dtype\":\"f4\",\"bdata\":\"k63Bt2DHGjqcgY06ALHXOgl09zp9eTI7bvmcOsDaw7gcr6y5nIIKurYWXLqvGpK4+a4ouvuoWbqf31w5xXSxOKtdMLry3MG5XXvQuba6HjnpmMI5f2K/uMc21DlDaG06LXGEOqqCUToEx5Q643leOTLBXrowFw26K3VFOUMUrLqkJbW6tFkBuvuqR7rTXxQ6NfXjuLFkSroPrMO6ubhvuhDwOTpFe1A6T2PWOUDyEDmMVN63t54Lumj6XLnNoZe5sA7NOhr62zqmO7A6MQGdOSa8Z7jHayo6ahYvueL73rn9pJa5UzUCOp1EOzoAZFw57z4IOkl8Hbo8MqO6K4ksutuEwbdZ/Ji5VgBcOZG0RTlxvJs5yrq3ufJ0fLfnjts52fObOj2pYrp/veq6II1Juq+9SLrJqTM5SGfFuJ1pmrrkXJO6WKC3ub+eyrinH/U58njduOiXizkuTjg6DhJZOuNruTqmcKA6NONvOihRZ7rZ3n66cGOVuWSzzTmFjgy6xtc0u7XM6Lrd8Co5e/A5OyMSVDvfH1A7lpEpO3O3sDqTg9Y5XpGFuvV1ALu+pMe6g0O/ui6nHLrcvLw6sjYIOyJCVjokZ7q4eCeKusfzkLp+qda6k7viulmHArl1rAI6gmcgtypI1Lp+SLS6sxsou9d5K7uQqfm6uncoula2Urg=\"},\"type\":\"scatter\",\"xaxis\":\"x\",\"yaxis\":\"y\"},{\"hovertemplate\":\"Freq: %{x:.4f} Hz\\u003cbr\\u003ePower: %{y:.4e}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#636EFA\",\"width\":2},\"mode\":\"lines\",\"name\":\"Power\",\"x\":{\"dtype\":\"f8\",\"bdata\":\"q6qqqqqqaj+rqqqqqqp6PwAAAAAAAIQ/q6qqqqqqij+rqqqqqqqQPwAAAAAAAJQ/VlVVVVVVlz+rqqqqqqqaPwAAAAAAAJ4/q6qqqqqqoD9WVVVVVVWiPwAAAAAAAKQ/q6qqqqqqpT9WVVVVVVWnPwAAAAAAAKk/q6qqqqqqqj9WVVVVVVWsPwAAAAAAAK4/q6qqqqqqrz+rqqqqqqqwPwAAAAAAgLE/VlVVVVVVsj+rqqqqqiqzPwAAAAAAALQ/VlVVVVXVtD+rqqqqqqq1PwAAAAAAgLY/VlVVVVVVtz+rqqqqqiq4PwAAAAAAALk/VlVVVVXVuT+rqqqqqqq6PwAAAAAAgLs/VlVVVVVVvD+rqqqqqiq9PwAAAAAAAL4/VlVVVVXVvj+rqqqqqqq/PwAAAAAAQMA/q6qqqqqqwD9WVVVVVRXBPwAAAAAAgME/q6qqqqrqwT9WVVVVVVXCPwAAAAAAwMI/q6qqqqoqwz9WVVVVVZXDPwAAAAAAAMQ/q6qqqqpqxD9WVVVVVdXEPwAAAAAAQMU/q6qqqqqqxT9WVVVVVRXGPwAAAAAAgMY/q6qqqqrqxj9WVVVVVVXHPwAAAAAAwMc/q6qqqqoqyD9WVVVVVZXIPwAAAAAAAMk/q6qqqqpqyT9WVVVVVdXJPwAAAAAAQMo/\"},\"y\":{\"dtype\":\"f4\",\"bdata\":\"rAHON/6w1DirG1s6XBShOCY0yTkbETU6UhUzOYi8rTqQBRo6ULmKOZNmDTnlo6A6HFBbOgFALzlsukM6LJNoOIcswzlMns84lZ0DOBXc0DiBnxI5KgWxORblUjmBGWM58J63NTjfqDiIRGc4NFmyOL2R1DgjMQQ4DVigOGiOwzdLsro4W39qNxJcITixkUA4YDAzOMmKTDagIE82/EH6N+4Rdjf+6bc3myD1N0tMPzgnDy42BbyoN3WIoTWm2/c3CbYJN27q0zahmM03i4ezNzup4zW5zyk1y9CtNmUhADjn6qo3YUGQN8b4yTemdBE3kLlJNrDEvzbuaoo2\"},\"type\":\"scatter\",\"xaxis\":\"x2\",\"yaxis\":\"y2\"}],\"layout\":{\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermap\":[{\"type\":\"scattermap\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,0.41000000000000003],\"title\":{\"text\":\"TR\"}},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Intensity (AU)\"}},\"xaxis2\":{\"anchor\":\"y2\",\"domain\":[0.5900000000000001,1.0],\"title\":{\"text\":\"Frequency (Hz)\"}},\"yaxis2\":{\"anchor\":\"x2\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Power\"}},\"annotations\":[{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Timecourse (TR=2.4s)\",\"x\":0.20500000000000002,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"},{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Power Spectrum\",\"x\":0.795,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"}],\"margin\":{\"t\":40,\"b\":50,\"l\":70,\"r\":30},\"height\":280,\"showlegend\":false,\"dragmode\":\"zoom\"}}'\u003e\u003c/div\u003e\u003c/div\u003e\n\u003c/div\u003e"},"8":{"6":"\u003cdiv class=\"language-python highlight\"\u003e\u003cpre\u003e\u003cspan\u003e\u003c/span\u003e\u003ccode\u003e\u003cspan id=\"__span-0-1\"\u003e\u003ca id=\"__codelineno-0-1\" name=\"__codelineno-0-1\" href=\"#__codelineno-0-1\"\u003e\u003c/a\u003e\u003cspan class=\"n\"\u003esub\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;S01\u0026#39;\u003c/span\u003e\n\u003c/span\u003e\u003cspan id=\"__span-0-2\"\u003e\u003ca id=\"__codelineno-0-2\" name=\"__codelineno-0-2\" href=\"#__codelineno-0-2\"\u003e\u003c/a\u003e\u003cspan class=\"n\"\u003edata\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eBrainData\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003elocalizer\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eget_file\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003esub\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;derivatives\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;bold\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e))\u003c/span\u003e\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cpre class=\"marimo-book-output-text marimo-stream-stderr\"\u003eWarning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.\n\u003c/pre\u003e","12":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cmarimo-slider data-initial-value='8' data-label='\u0026quot;\u0026#92;u003cspan class=\u0026#92;\u0026quot;markdown prose dark:prose-invert contents\u0026#92;\u0026quot;\u0026#92;u003e\u0026#92;u003cspan class=\u0026#92;\u0026quot;paragraph\u0026#92;\u0026quot;\u0026#92;u003eComponent\u0026#92;u003c/span\u0026#92;u003e\u0026#92;u003c/span\u0026#92;u003e\u0026quot;' data-start='0' data-stop='9' data-step='1' data-steps='[]' data-debounce='false' data-disabled='false' data-orientation='\u0026quot;horizontal\u0026quot;' data-show-value='true' data-include-input='false' data-full-width='false'\u003e\u003c/marimo-slider\u003e\n\u003c/div\u003e","13":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cdiv style=\"display: flex;flex: 1;flex-direction: column;justify-content: flex-start;align-items: normal;flex-wrap: nowrap;gap: 0.5rem\"\u003e\u003cspan class=\"markdown prose dark:prose-invert contents\"\u003e\u003cspan class=\"paragraph\"\u003e\u003cstrong\u003eComponent 9 of 10\u003c/strong\u003e\u003c/span\u003e\u003c/span\u003e\u003cdiv class=\"marimo-book-anywidget\" data-buffers='[{\"path\": [\"atlas_bytes\"], \"empty\": true}, {\"path\": [\"bg_bytes\"], \"url\": \"assets/anywidget/c02b4524b0c54de882947847c0f613f75d3131c979be42145b19a46de3dece42.bin\", \"size\": 533672}, {\"path\": [\"statmap_bytes\"], \"url\": \"assets/anywidget/03af674b57e2e700856a8afd31ff4dc82a1373c8931925950c9e88515a9970f6.bin\", \"size\": 910003}]' data-initial-value='{\"_anywidget_id\": \"nltools.data.braindata.viewer._NiivueViewer\", \"_dom_classes\": [], \"_model_module\": \"anywidget\", \"_model_module_version\": \"~0.10.*\", \"_model_name\": \"AnyModel\", \"_view_count\": null, \"_view_module\": \"anywidget\", \"_view_module_version\": \"~0.10.*\", \"_view_name\": \"AnyView\", \"atlas_lut\": {}, \"atlas_name\": \"\", \"atlas_outline\": 0.0, \"cal_max\": 2.7279923725128126, \"cal_max_neg\": -2.0, \"cal_min\": 2.0, \"cal_min_neg\": -2.7279923725128126, \"colorbar\": true, \"controls\": true, \"height\": 600, \"layout\": \"IPY_MODEL_60896c64457d44a6b3f7ce9cf7a39e87\", \"mirror_negative\": true, \"niivue_opts\": {}, \"slice_type\": \"MULTIPLANAR\", \"slider_bounds\": {\"min\": 0.04108122825622559, \"max\": 8.216245651245117, \"value_low\": 2.0, \"value_high\": 2.7279923725128126, \"step\": 0.04108122825622559}, \"statmap\": {\"name\": \"statmap\", \"colormap\": \"warm\", \"colormap_negative\": \"winter\", \"opacity\": 1.0}, \"tabbable\": null, \"tooltip\": null}' data-js-url='\"data:text/javascript;base64,Ly8gbmlpdnVlIHZpZXdlciBmb3IgQnJhaW5EYXRhLmlwbG90KCksIGRyaXZlbiB0aHJvdWdoIGFueXdpZGdldCdzICpzdGFuZGFyZCoKLy8gbW9kZWwgQVBJIChnZXQgLyBzZXQgLyBzYXZlX2NoYW5nZXMgLyBvbikgb25seSDigJQgbm8gaG9zdC1zcGVjaWZpYyBwcm90b2NvbAovLyAodGhlIGNvbnRyYXN0IHdpdGggaXB5bmlpdnVlLCBzZWUgY29zYW5sYWIvbmx0b29scyM0NTUpLCBzbyB0aGUgd2lkZ2V0IHdvcmtzCi8vIGlkZW50aWNhbGx5IGluIEp1cHl0ZXIgYW5kIGBtYXJpbW8gZWRpdGAuCi8vCi8vIG5paXZ1ZSBpdHNlbGYgaXMgcHVsbGVkIGZyb20gYSBDRE4gYXMgYW4gRVMgbW9kdWxlLiBgX2VzbWAgaXMgYW4gRVMgbW9kdWxlLCBzbwovLyBhIHRvcC1sZXZlbCBgaW1wb3J0YCBpcyByZXNvbHZlZCBieSB0aGUgYnJvd3NlciBhdCByZW5kZXIgdGltZS4gVGhlIHBpbiBrZWVwcwovLyB0aGUgQVBJIHN0YWJsZS4KaW1wb3J0IHsKICBOaWl2dWUsCiAgTlZJbWFnZSwKICBTTElDRV9UWVBFLAp9IGZyb20gImh0dHBzOi8vZXNtLnNoL0BuaWl2dWUvbmlpdnVlQDAuNjkuMCI7CgovLyBBIHRyYWl0bGV0cyBgQnl0ZXNgIHRyYWl0IGFycml2ZXMgaW4gSlMgYXMgYSBEYXRhVmlldyBvdmVyIGEgc2hhcmVkIGJ1ZmZlci4KLy8gbmlpdnVlIHdhbnRzIGEgc3RhbmRhbG9uZSBBcnJheUJ1ZmZlciwgc28gc2xpY2Ugb3V0IGV4YWN0bHkgdGhpcyB2aWV3J3MKLy8gd2luZG93LiBFbXB0eSBieXRlcyAoYW4gYWJzZW50IG9wdGlvbmFsIHZvbHVtZSkgeWllbGQgYG51bGxgLgpmdW5jdGlvbiBieXRlc1RvQXJyYXlCdWZmZXIoZHYpIHsKICBpZiAoIWR2IHx8IGR2LmJ5dGVMZW5ndGggPT09IDApIHJldHVybiBudWxsOwogIHJldHVybiBkdi5idWZmZXIuc2xpY2UoZHYuYnl0ZU9mZnNldCwgZHYuYnl0ZU9mZnNldCArIGR2LmJ5dGVMZW5ndGgpOwp9CgovLyBOVkltYWdlLm5ldyB0cmVhdHMgTmFOIGNhbF9taW4vY2FsX21heCBhcyAiYXV0byIgKHBlcmNlbnRpbGUtZGVyaXZlZCkuIEEgbnVsbAovLyB0cmFpdCAod2luZG93IGxlZnQgb24gYXV0bykgbWFwcyB0byBOYU47IGEgbnVtYmVyIHBhc3NlcyB0aHJvdWdoLgpmdW5jdGlvbiBvck5hTih4KSB7CiAgcmV0dXJuIHggPT09IG51bGwgfHwgeCA9PT0gdW5kZWZpbmVkID8gTmFOIDogeDsKfQoKLy8gQSB0cmFpdCBvciBzbGlkZXIgdmFsdWUgdGhhdCBpcyByZWFsbHkgYSBudW1iZXIgKGEgbnVsbC91bmRlZmluZWQgdHJhaXQgb3IgYQovLyBOYU4gcGFyc2UgbWVhbnMgImxlYXZlIHRoaXMgZWRnZSBhbG9uZSIpLgpmdW5jdGlvbiBpc051bWJlcih4KSB7CiAgcmV0dXJuIHggIT09IG51bGwgJiYgeCAhPT0gdW5kZWZpbmVkICYmICFOdW1iZXIuaXNOYU4oeCk7Cn0KCmZ1bmN0aW9uIGZvcm1hdFZhbHVlKHZhbHVlKSB7CiAgY29uc3QgbnVtYmVyID0gTnVtYmVyKHZhbHVlKTsKICBpZiAoIU51bWJlci5pc0Zpbml0ZShudW1iZXIpKSByZXR1cm4gIuKAlCI7CiAgcmV0dXJuIE51bWJlci5wYXJzZUZsb2F0KG51bWJlci50b1ByZWNpc2lvbig0KSkudG9TdHJpbmcoKTsKfQoKZXhwb3J0IGRlZmF1bHQgewogIGFzeW5jIHJlbmRlcih7IG1vZGVsLCBlbCB9KSB7CiAgICBlbC5zdHlsZS53aWR0aCA9ICIxMDAlIjsKCiAgICAvLyAtLS0gRE9NOiBvcHRpb25hbCB0aHJlc2hvbGQgY29udHJvbHMgKyB0aGUgV2ViR0wgY2FudmFzIC0tLS0tLS0tLS0tLS0tIC8vCiAgICBsZXQgZmxvb3JJbnB1dCA9IG51bGw7CiAgICBsZXQgY2VpbElucHV0ID0gbnVsbDsKICAgIGxldCBmbG9vclZhbHVlID0gbnVsbDsKICAgIGxldCBjZWlsVmFsdWUgPSBudWxsOwogICAgY29uc3QgYm91bmRzID0gbW9kZWwuZ2V0KCJzbGlkZXJfYm91bmRzIikgfHwge307CiAgICAvLyBUaGUgd2luZG93IGlzIGEgbWFnbml0dWRlIHdpbmRvdyBtaXJyb3JlZCBvbnRvIHRoZSBuZWdhdGl2ZSBsaW1iLCBhbmQgYQogICAgLy8gZmxvb3Igb2YgemVybyAob3IgYmVsb3cpIGFkbWl0cyBldmVyeSB6ZXJvLXZhbHVlZCB2b3hlbCDigJQgdGhlIHdob2xlCiAgICAvLyB2b2x1bWUgYm94IG91dHNpZGUgdGhlIG1hc2sgcGFpbnRzIGluIHRoZSBuZWdhdGl2ZSBjb2xvcm1hcC4gTmV2ZXIgbGV0CiAgICAvLyB0aGUgYXBwbGllZCBmbG9vciByZWFjaCB6ZXJvLCB3aGF0ZXZlciB0aGUgc2xpZGVyIG9yIHRoZSBtb2RlbCBzYXlzLgogICAgLy8KICAgIC8vIFRoZSBlcHNpbG9uIGlzIHRoZSBzbGlkZXIncyBvd24gbG93ZXIgYm91bmQsIHdoaWNoIFB5dGhvbiBndWFyYW50ZWVzIGlzCiAgICAvLyBzdHJpY3RseSBwb3NpdGl2ZSBhbmQgYXQgb3IgYmVsb3cgdGhlIHJlc29sdmVkIGBjYWxfbWluYC4gRGVyaXZpbmcgaXQKICAgIC8vIGhlcmUgaW5zdGVhZCAoZnJvbSB0aGUgc3RlcCwgc2F5KSB3b3VsZCBsZXQgdGhlIHR3byBkcmlmdCBhcGFydCBhbmQKICAgIC8vIHJhaXNlIHRoZSByZW5kZXJlZCBmbG9vciBhYm92ZSB0aGUgd2luZG93IFB5dGhvbiByZXNvbHZlZC4KICAgIGNvbnN0IGZsb29yRXBzID0gTnVtYmVyKGJvdW5kcy5taW4pID4gMCA/IE51bWJlcihib3VuZHMubWluKSA6IDFlLTk7CiAgICBjb25zdCBjbGFtcEZsb29yID0gKHYpID0+IE1hdGgubWF4KE1hdGguYWJzKHYpLCBmbG9vckVwcyk7CgogICAgaWYgKG1vZGVsLmdldCgiY29udHJvbHMiKSkgewogICAgICBjb25zdCBjb250cm9scyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICBjb250cm9scy5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAiZGlzcGxheTpmbGV4O2dhcDowLjc1cmVtO2FsaWduLWl0ZW1zOmNlbnRlcjtmb250OjEycHgvMS40IHN5c3RlbS11aSwiICsKICAgICAgICAic2Fucy1zZXJpZjtwYWRkaW5nOjRweCAycHg7ZmxleC13cmFwOndyYXAiOwoKICAgICAgY29uc3QgbWtSYW5nZSA9IChsYWJlbFRleHQsIHZhbHVlKSA9PiB7CiAgICAgICAgY29uc3Qgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7CiAgICAgICAgd3JhcC5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAgICJkaXNwbGF5OmZsZXg7Z2FwOjAuNHJlbTthbGlnbi1pdGVtczpjZW50ZXI7ZmxleDoxIDEgMjAwcHgiOwogICAgICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgc3Bhbi50ZXh0Q29udGVudCA9IGxhYmVsVGV4dDsKICAgICAgICBjb25zdCBsb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgbG93LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoYm91bmRzLm1pbiA/PyAwKTsKICAgICAgICBjb25zdCBoaWdoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgIGhpZ2gudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShib3VuZHMubWF4ID8/IDEpOwogICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgICAgICBpbnB1dC50eXBlID0gInJhbmdlIjsKICAgICAgICBpbnB1dC5taW4gPSBib3VuZHMubWluID8/IDA7CiAgICAgICAgaW5wdXQubWF4ID0gYm91bmRzLm1heCA/PyAxOwogICAgICAgIGlucHV0LnN0ZXAgPSBib3VuZHMuc3RlcCA/PyAwLjAxOwogICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUgPz8gYm91bmRzLm1pbiA/PyAwOwogICAgICAgIGlucHV0LnN0eWxlLmZsZXggPSAiMSI7CiAgICAgICAgY29uc3Qgb3V0cHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3V0cHV0Iik7CiAgICAgICAgb3V0cHV0LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaW5wdXQudmFsdWUpOwogICAgICAgIG91dHB1dC5zdHlsZS5jc3NUZXh0ID0gIm1pbi13aWR0aDo2Y2g7dGV4dC1hbGlnbjpyaWdodDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXMiOwogICAgICAgIHdyYXAuYXBwZW5kKHNwYW4sIGxvdywgaW5wdXQsIGhpZ2gsIG91dHB1dCk7CiAgICAgICAgY29udHJvbHMuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICAgICAgcmV0dXJuIFtpbnB1dCwgb3V0cHV0XTsKICAgICAgfTsKCiAgICAgIFtmbG9vcklucHV0LCBmbG9vclZhbHVlXSA9IG1rUmFuZ2UoIm1pbiIsIGJvdW5kcy52YWx1ZV9sb3cpOwogICAgICBbY2VpbElucHV0LCBjZWlsVmFsdWVdID0gbWtSYW5nZSgibWF4IiwgYm91bmRzLnZhbHVlX2hpZ2gpOwogICAgICBlbC5hcHBlbmRDaGlsZChjb250cm9scyk7CiAgICB9CgogICAgY29uc3QgaGVpZ2h0ID0gbW9kZWwuZ2V0KCJoZWlnaHQiKSB8fCA0MDA7CiAgICAvLyBuaWl2dWUncyByZXNpemUgb2JzZXJ2ZXIgc2l6ZXMgdGhlIGNhbnZhcyBmcm9tIGl0cyAqcGFyZW50KiBhbmQgcmV3cml0ZXMKICAgIC8vIHRoZSBjYW52YXMncyBvd24gaW5saW5lIGhlaWdodCB0byAxMDAlLCBzbyB0aGUgcmVxdWVzdGVkIGhlaWdodCBoYXMgdG8KICAgIC8vIGxpdmUgb24gYSB3cmFwcGVyLiBXaXRob3V0IGl0IHRoZSB2aWV3ZXIgY29sbGFwc2VzIHRvIHRoZSBwYXJlbnQncwogICAgLy8gbmF0dXJhbCBoZWlnaHQgKH4xNTBweCkgaW4gYW55IGhvc3QgdGhhdCBkb2Vzbid0IHNpemUgdGhlIHdpZGdldCBmb3IKICAgIC8vIHVzIOKAlCBzdGF0aWMvZXhwb3J0ZWQgcGFnZXMsIGlmcmFtZXMsIHBsYWluIEp1cHl0ZXIgb3V0cHV0IGFyZWFzLgogICAgY29uc3QgY2FudmFzV3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgY2FudmFzV3JhcC5zdHlsZS5jc3NUZXh0ID0gYHdpZHRoOjEwMCU7aGVpZ2h0OiR7aGVpZ2h0fXB4YDsKICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogICAgY2FudmFzLnN0eWxlLmNzc1RleHQgPSAid2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtkaXNwbGF5OmJsb2NrIjsKICAgIGNhbnZhc1dyYXAuYXBwZW5kQ2hpbGQoY2FudmFzKTsKICAgIGVsLmFwcGVuZENoaWxkKGNhbnZhc1dyYXApOwoKICAgIC8vIC0tLSBuaWl2dWUgaW5zdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vCiAgICBjb25zdCBudiA9IG5ldyBOaWl2dWUoewogICAgICBpc0NvbG9yYmFyOiBtb2RlbC5nZXQoImNvbG9yYmFyIiksCiAgICAgIC4uLihtb2RlbC5nZXQoIm5paXZ1ZV9vcHRzIikgfHwge30pLAogICAgfSk7CiAgICBhd2FpdCBudi5hdHRhY2hUb0NhbnZhcyhjYW52YXMpOwoKICAgIC8vIEluZGV4IG9mIHRoZSBzdGF0IG1hcCBpbnNpZGUgbnYudm9sdW1lcyAoc2V0IGJ5IGxvYWRTdGFjayk7IHRoZSB0aHJlc2hvbGQKICAgIC8vIGNvbnRyb2xzIGRyaXZlIHRoaXMgdm9sdW1lJ3Mgd2luZG93LgogICAgbGV0IHN0YXRtYXBJZHggPSAtMTsKCiAgICAvLyBCdWlsZCB0aGUgdm9sdW1lIHN0YWNrIFtiYWNrZ3JvdW5kPywgc3RhdG1hcCwgYXRsYXM/XSBmcm9tIHRoZSBieXRlCiAgICAvLyB0cmFpdHMgKyBkaXNwbGF5IHBhcmFtcy4gUmVidWlsdCB3aGVuZXZlciBhbnkgdm9sdW1lJ3MgYnl0ZXMgY2hhbmdlLgogICAgYXN5bmMgZnVuY3Rpb24gbG9hZFN0YWNrKCkgewogICAgICB3aGlsZSAobnYudm9sdW1lcy5sZW5ndGgpIG52LnJlbW92ZVZvbHVtZUJ5SW5kZXgoMCk7CiAgICAgIHN0YXRtYXBJZHggPSAtMTsKCiAgICAgIGNvbnN0IGJnID0gYnl0ZXNUb0FycmF5QnVmZmVyKG1vZGVsLmdldCgiYmdfYnl0ZXMiKSk7CiAgICAgIGlmIChiZykgewogICAgICAgIGNvbnN0IGJnVm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoYmcsICJiYWNrZ3JvdW5kLm5paS5neiIsICJncmF5Iik7CiAgICAgICAgYmdWb2wuY29sb3JiYXJWaXNpYmxlID0gZmFsc2U7CiAgICAgICAgbnYuYWRkVm9sdW1lKGJnVm9sKTsKICAgICAgfQoKICAgICAgY29uc3Qgc3RhdCA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoInN0YXRtYXBfYnl0ZXMiKSk7CiAgICAgIGlmIChzdGF0KSB7CiAgICAgICAgY29uc3QgcCA9IG1vZGVsLmdldCgic3RhdG1hcCIpIHx8IHt9OwogICAgICAgIGNvbnN0IHZvbCA9IGF3YWl0IE5WSW1hZ2UubmV3KAogICAgICAgICAgc3RhdCwKICAgICAgICAgIChwLm5hbWUgfHwgInN0YXRtYXAiKSArICIubmlpLmd6IiwKICAgICAgICAgIHAuY29sb3JtYXAgfHwgIndhcm0iLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICAgIG51bGwsCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9taW4iKSksCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9tYXgiKSksCiAgICAgICAgKTsKICAgICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKHZvbC5jYWxfbWluKSkgdm9sLmNhbF9taW4gPSBjbGFtcEZsb29yKHZvbC5jYWxfbWluKTsKICAgICAgICBpZiAocC5jb2xvcm1hcF9uZWdhdGl2ZSkgdm9sLmNvbG9ybWFwTmVnYXRpdmUgPSBwLmNvbG9ybWFwX25lZ2F0aXZlOwogICAgICAgIHZvbC5jYWxfbWluTmVnID0gb3JOYU4obW9kZWwuZ2V0KCJjYWxfbWluX25lZyIpKTsKICAgICAgICB2b2wuY2FsX21heE5lZyA9IG9yTmFOKG1vZGVsLmdldCgiY2FsX21heF9uZWciKSk7CiAgICAgICAgdm9sLmNvbG9yYmFyVmlzaWJsZSA9IHRydWU7CiAgICAgICAgc3RhdG1hcElkeCA9IG52LnZvbHVtZXMubGVuZ3RoOwogICAgICAgIG52LmFkZFZvbHVtZSh2b2wpOwogICAgICB9CgogICAgICBjb25zdCBhdGxhcyA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoImF0bGFzX2J5dGVzIikpOwogICAgICBpZiAoYXRsYXMpIHsKICAgICAgICBjb25zdCBwID0gbW9kZWwuZ2V0KCJzdGF0bWFwIikgfHwge307CiAgICAgICAgY29uc3Qgdm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoCiAgICAgICAgICBhdGxhcywKICAgICAgICAgIChtb2RlbC5nZXQoImF0bGFzX25hbWUiKSB8fCAiYXRsYXMiKSArICIubmlpLmd6IiwKICAgICAgICAgICIiLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICApOwogICAgICAgIGNvbnN0IGx1dCA9IG1vZGVsLmdldCgiYXRsYXNfbHV0Iik7CiAgICAgICAgaWYgKGx1dCAmJiBsdXQubGFiZWxzKSB2b2wuc2V0Q29sb3JtYXBMYWJlbChsdXQpOwogICAgICAgIHZvbC5jb2xvcmJhclZpc2libGUgPSBmYWxzZTsKICAgICAgICBudi5hZGRWb2x1bWUodm9sKTsKICAgICAgfQoKICAgICAgbnYub3B0cy5hdGxhc091dGxpbmUgPSBtb2RlbC5nZXQoImF0bGFzX291dGxpbmUiKSB8fCAwOwogICAgICBudi51cGRhdGVHTFZvbHVtZSgpOwogICAgfQoKICAgIGF3YWl0IGxvYWRTdGFjaygpOwogICAgbnYuc2V0U2xpY2VUeXBlKFNMSUNFX1RZUEVbbW9kZWwuZ2V0KCJzbGljZV90eXBlIildID8/IFNMSUNFX1RZUEUuTVVMVElQTEFOQVIpOwoKICAgIC8vIC0tLSB0aHJlc2hvbGQgY29udHJvbHMgLT4gbmlpdnVlICsgUHl0aG9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy8KICAgIC8vIEFwcGxpZXMgdGhlIGNsYW1wZWQgd2luZG93IHRvIG5paXZ1ZSBhbmQgcmV0dXJucyBpdCwgc28gdGhlIGNhbGxlcnMgdGhhdAogICAgLy8gd3JpdGUgYmFjayB0byBQeXRob24gc2VuZCB3aGF0IHdhcyByZW5kZXJlZCByYXRoZXIgdGhhbiB3aGF0IHdhcyBkcmFnZ2VkLgogICAgZnVuY3Rpb24gYXBwbHlXaW5kb3coKSB7CiAgICAgIGlmIChzdGF0bWFwSWR4IDwgMCkgcmV0dXJuIG51bGw7CiAgICAgIGNvbnN0IHZvbCA9IG52LnZvbHVtZXNbc3RhdG1hcElkeF07CiAgICAgIGNvbnN0IGxvUmF3ID0gZmxvb3JJbnB1dCA/IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9taW4iKTsKICAgICAgY29uc3QgaGlSYXcgPSBjZWlsSW5wdXQgPyBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9tYXgiKTsKICAgICAgLy8gQm90aCBlZGdlcyBhcmUgbWFnbml0dWRlczogdGhlIGZsb29yIHN0YXlzIGFib3ZlIHplcm8gYW5kIHRoZSBjZWlsaW5nCiAgICAgIC8vIHN0YXlzIGFib3ZlIHRoZSBmbG9vci4KICAgICAgY29uc3QgbG8gPSBpc051bWJlcihsb1JhdykgPyBjbGFtcEZsb29yKGxvUmF3KSA6IG51bGw7CiAgICAgIGNvbnN0IGZsb29yID0gbG8gPT09IG51bGwgPyB2b2wuY2FsX21pbiA6IGxvOwogICAgICBjb25zdCBoaSA9IGlzTnVtYmVyKGhpUmF3KQogICAgICAgID8gTWF0aC5tYXgoTWF0aC5hYnMoaGlSYXcpLCBmbG9vciArIGZsb29yRXBzKQogICAgICAgIDogbnVsbDsKICAgICAgaWYgKGxvICE9PSBudWxsKSB2b2wuY2FsX21pbiA9IGxvOwogICAgICBpZiAoaGkgIT09IG51bGwpIHZvbC5jYWxfbWF4ID0gaGk7CiAgICAgIGlmIChtb2RlbC5nZXQoIm1pcnJvcl9uZWdhdGl2ZSIpKSB7CiAgICAgICAgaWYgKGhpICE9PSBudWxsKSB2b2wuY2FsX21pbk5lZyA9IC1oaTsKICAgICAgICBpZiAobG8gIT09IG51bGwpIHZvbC5jYWxfbWF4TmVnID0gLWxvOwogICAgICB9IGVsc2UgaWYgKGxvICE9PSBudWxsKSB7CiAgICAgICAgdm9sLmNhbF9tYXhOZWcgPSAtbG87CiAgICAgIH0KICAgICAgbnYudXBkYXRlR0xWb2x1bWUoKTsKICAgICAgcmV0dXJuIHsgbG8sIGhpIH07CiAgICB9CgogICAgaWYgKGZsb29ySW5wdXQpIHsKICAgICAgZmxvb3JJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsICgpID0+IHsKICAgICAgICBjb25zdCBhcHBsaWVkID0gYXBwbHlXaW5kb3coKTsKICAgICAgICBjb25zdCBsbyA9IGFwcGxpZWQgJiYgYXBwbGllZC5sbyAhPT0gbnVsbAogICAgICAgICAgPyBhcHBsaWVkLmxvCiAgICAgICAgICA6IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgICAgZmxvb3JWYWx1ZS50ZXh0Q29udGVudCA9IGZvcm1hdFZhbHVlKGxvKTsKICAgICAgICBtb2RlbC5zZXQoImNhbF9taW4iLCBsbyk7CiAgICAgICAgbW9kZWwuc2F2ZV9jaGFuZ2VzKCk7CiAgICAgIH0pOwogICAgfQogICAgaWYgKGNlaWxJbnB1dCkgewogICAgICBjZWlsSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCAoKSA9PiB7CiAgICAgICAgY29uc3QgYXBwbGllZCA9IGFwcGx5V2luZG93KCk7CiAgICAgICAgY29uc3QgaGkgPSBhcHBsaWVkICYmIGFwcGxpZWQuaGkgIT09IG51bGwKICAgICAgICAgID8gYXBwbGllZC5oaQogICAgICAgICAgOiBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSk7CiAgICAgICAgY2VpbFZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaGkpOwogICAgICAgIG1vZGVsLnNldCgiY2FsX21heCIsIGhpKTsKICAgICAgICBtb2RlbC5zYXZlX2NoYW5nZXMoKTsKICAgICAgfSk7CiAgICB9CgogICAgLy8gLS0tIFB5dGhvbiAtPiBKUyByZWFjdGl2aXR5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvLwogICAgY29uc3Qgb25CeXRlcyA9ICgpID0+IGxvYWRTdGFjaygpOwogICAgbW9kZWwub24oImNoYW5nZTpzdGF0bWFwX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmJnX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmF0bGFzX2J5dGVzIiwgb25CeXRlcyk7CgogICAgbW9kZWwub24oImNoYW5nZTpjYWxfbWluIiwgKCkgPT4gewogICAgICBpZiAoZmxvb3JJbnB1dCkgZmxvb3JJbnB1dC52YWx1ZSA9IG1vZGVsLmdldCgiY2FsX21pbiIpID8/IGZsb29ySW5wdXQudmFsdWU7CiAgICAgIGlmIChmbG9vclZhbHVlKSBmbG9vclZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgIGFwcGx5V2luZG93KCk7CiAgICB9KTsKICAgIG1vZGVsLm9uKCJjaGFuZ2U6Y2FsX21heCIsICgpID0+IHsKICAgICAgaWYgKGNlaWxJbnB1dCkgY2VpbElucHV0LnZhbHVlID0gbW9kZWwuZ2V0KCJjYWxfbWF4IikgPz8gY2VpbElucHV0LnZhbHVlOwogICAgICBpZiAoY2VpbFZhbHVlKSBjZWlsVmFsdWUudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShjZWlsSW5wdXQudmFsdWUpOwogICAgICBhcHBseVdpbmRvdygpOwogICAgfSk7CiAgICBtb2RlbC5vbigiY2hhbmdlOnNsaWNlX3R5cGUiLCAoKSA9PgogICAgICBudi5zZXRTbGljZVR5cGUoU0xJQ0VfVFlQRVttb2RlbC5nZXQoInNsaWNlX3R5cGUiKV0gPz8gU0xJQ0VfVFlQRS5NVUxUSVBMQU5BUiksCiAgICApOwogICAgbW9kZWwub24oImNoYW5nZTpjb2xvcmJhciIsICgpID0+IHsKICAgICAgbnYub3B0cy5pc0NvbG9yYmFyID0gbW9kZWwuZ2V0KCJjb2xvcmJhciIpOwogICAgICBudi5kcmF3U2NlbmUoKTsKICAgIH0pOwogICAgbW9kZWwub24oImNoYW5nZTphdGxhc19vdXRsaW5lIiwgKCkgPT4gewogICAgICBudi5vcHRzLmF0bGFzT3V0bGluZSA9IG1vZGVsLmdldCgiYXRsYXNfb3V0bGluZSIpIHx8IDA7CiAgICAgIG52LmRyYXdTY2VuZSgpOwogICAgfSk7CgogICAgLy8gbmlpdnVlIGhhcyBubyBkZXN0cm95KCk7IGRyb3AgdGhlIFdlYkdMIGNvbnRleHQgb24gdGVhcmRvd24gLyByZS1yZW5kZXIKICAgIC8vIHNvIHJlcGVhdGVkIGNlbGwgcnVucyBkb24ndCBsZWFrIEdMIGNvbnRleHRzIChicm93c2VycyBjYXAgdGhlbSkuCiAgICByZXR1cm4gKCkgPT4gewogICAgICBjYW52YXMKICAgICAgICAuZ2V0Q29udGV4dCgid2ViZ2wyIikKICAgICAgICA/LmdldEV4dGVuc2lvbigiV0VCR0xfbG9zZV9jb250ZXh0IikKICAgICAgICA/Lmxvc2VDb250ZXh0KCk7CiAgICB9OwogIH0sCn07Cg==\"' data-label=\"null\" data-model-id='\"64227781e80341d2920685a8565f76f1\"'\u003e\u003c/div\u003e\u003cdiv class=\"marimo-book-plotly\" data-config=\"{}\" data-figure='{\"data\":[{\"hovertemplate\":\"TR: %{x}\\u003cbr\\u003eIntensity: %{y:.4f}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#EF553B\",\"width\":2},\"mode\":\"lines\",\"name\":\"Timecourse\",\"x\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127],\"y\":{\"dtype\":\"f4\",\"bdata\":\"UhN2toRzMjpdmKA7fFtdOwbAOTvWmjg74OFrO0of7Tp8XVW6aCSPuQjgQboT4pg512kpO8oOLTqJllY65QiIumDzl7on6rm5VELvODhl7TquFHa6kURFOet257p7X1q6bdwLu6yj27iDc5m5P/j9OoPKOjrngpS53Dh7uoh+vTlypaE6lBMFumY3iTksVU+6/JsRuzEM8rp14uq6DgSkOpzG6zgq5w+6c4aOOthpHLvh5n+6q83zuB8igjrc9tE54F3WOuhrXjpNwio7CeJKOkeItblizfe54WVLujJnBbtFoJ05LYLvOsO3mTrIg4w68ofluk1+0blQjaq6nxPauCUWELqqrm260AAROlEDlTr55dA6GHGcOqtZtjqWgKk2ZCWXOie+l7o3Ako4csDiuWnuCjk8iRG7uuAUuyW3SruCTTS5cAZ9OXzfgDrrw4k5ldohO2pRCjtaZg478k+EOi9OjTpwhcs58xmHunaA9zoprko6bcATO6ZnJLt09oC7Kt01uwAg2Dl+KKE6WmqvOtPD0rpFHHe6pClTu2gtTruM/5u7UGGouiAtQbnbiw45OjLoOsmJ8jp3tb06Gp5Sur8CwbkUnma6FqvTOjZOITl1om869rFMOyFmBjt5Jh87Q71POQJz8Tpoo8c6KYfEOlnUKTuK/9w6ZnpYOxzRNbk=\"},\"type\":\"scatter\",\"xaxis\":\"x\",\"yaxis\":\"y\"},{\"hovertemplate\":\"Freq: %{x:.4f} Hz\\u003cbr\\u003ePower: %{y:.4e}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#636EFA\",\"width\":2},\"mode\":\"lines\",\"name\":\"Power\",\"x\":{\"dtype\":\"f8\",\"bdata\":\"q6qqqqqqaj+rqqqqqqp6PwAAAAAAAIQ/q6qqqqqqij+rqqqqqqqQPwAAAAAAAJQ/VlVVVVVVlz+rqqqqqqqaPwAAAAAAAJ4/q6qqqqqqoD9WVVVVVVWiPwAAAAAAAKQ/q6qqqqqqpT9WVVVVVVWnPwAAAAAAAKk/q6qqqqqqqj9WVVVVVVWsPwAAAAAAAK4/q6qqqqqqrz+rqqqqqqqwPwAAAAAAgLE/VlVVVVVVsj+rqqqqqiqzPwAAAAAAALQ/VlVVVVXVtD+rqqqqqqq1PwAAAAAAgLY/VlVVVVVVtz+rqqqqqiq4PwAAAAAAALk/VlVVVVXVuT+rqqqqqqq6PwAAAAAAgLs/VlVVVVVVvD+rqqqqqiq9PwAAAAAAAL4/VlVVVVXVvj+rqqqqqqq/PwAAAAAAQMA/q6qqqqqqwD9WVVVVVRXBPwAAAAAAgME/q6qqqqrqwT9WVVVVVVXCPwAAAAAAwMI/q6qqqqoqwz9WVVVVVZXDPwAAAAAAAMQ/q6qqqqpqxD9WVVVVVdXEPwAAAAAAQMU/q6qqqqqqxT9WVVVVVRXGPwAAAAAAgMY/q6qqqqrqxj9WVVVVVVXHPwAAAAAAwMc/q6qqqqoqyD9WVVVVVZXIPwAAAAAAAMk/q6qqqqpqyT9WVVVVVdXJPwAAAAAAQMo/\"},\"y\":{\"dtype\":\"f4\",\"bdata\":\"AQiNOi6IIztSus46fB0aOtOqMzm6N8o6fVfQOT/LcDlwzp856PRLOqhgZTq8wFY5XC0eOihEsDdv1u46oQ7iOmwADTpwm/g5Sm+7OUtalThV3gk6ofO0OXpGljliubc5/snGOHapCTmTiog49wuSOMyY2jglPrE5N50COu8UYTkv/Xc2o77XOHTtnDjoC5k4i0DUNxuyADif4Es4k6qBOM+eJzfzI5Q4TptKOA/8FjgMve03dbl4ODkZ/jjKh2E4/ZLyN3IGEzlz8ZE4Y4r5OLwhFzeNjDQ3dS63OQ98pjn1aAc5gKg/OIGzlzgGOcc521bUOeNSlDntLuU3\"},\"type\":\"scatter\",\"xaxis\":\"x2\",\"yaxis\":\"y2\"}],\"layout\":{\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermap\":[{\"type\":\"scattermap\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,0.41000000000000003],\"title\":{\"text\":\"TR\"}},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Intensity (AU)\"}},\"xaxis2\":{\"anchor\":\"y2\",\"domain\":[0.5900000000000001,1.0],\"title\":{\"text\":\"Frequency (Hz)\"}},\"yaxis2\":{\"anchor\":\"x2\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Power\"}},\"annotations\":[{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Timecourse (TR=2.4s)\",\"x\":0.20500000000000002,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"},{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Power Spectrum\",\"x\":0.795,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"}],\"margin\":{\"t\":40,\"b\":50,\"l\":70,\"r\":30},\"height\":280,\"showlegend\":false,\"dragmode\":\"zoom\"}}'\u003e\u003c/div\u003e\u003c/div\u003e\n\u003c/div\u003e"},"9":{"12":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cmarimo-slider data-initial-value='9' data-label='\u0026quot;\u0026#92;u003cspan class=\u0026#92;\u0026quot;markdown prose dark:prose-invert contents\u0026#92;\u0026quot;\u0026#92;u003e\u0026#92;u003cspan class=\u0026#92;\u0026quot;paragraph\u0026#92;\u0026quot;\u0026#92;u003eComponent\u0026#92;u003c/span\u0026#92;u003e\u0026#92;u003c/span\u0026#92;u003e\u0026quot;' data-start='0' data-stop='9' data-step='1' data-steps='[]' data-debounce='false' data-disabled='false' data-orientation='\u0026quot;horizontal\u0026quot;' data-show-value='true' data-include-input='false' data-full-width='false'\u003e\u003c/marimo-slider\u003e\n\u003c/div\u003e","13":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cdiv style=\"display: flex;flex: 1;flex-direction: column;justify-content: flex-start;align-items: normal;flex-wrap: nowrap;gap: 0.5rem\"\u003e\u003cspan class=\"markdown prose dark:prose-invert contents\"\u003e\u003cspan class=\"paragraph\"\u003e\u003cstrong\u003eComponent 10 of 10\u003c/strong\u003e\u003c/span\u003e\u003c/span\u003e\u003cdiv class=\"marimo-book-anywidget\" data-buffers='[{\"path\": [\"atlas_bytes\"], \"empty\": true}, {\"path\": [\"bg_bytes\"], \"url\": \"assets/anywidget/c02b4524b0c54de882947847c0f613f75d3131c979be42145b19a46de3dece42.bin\", \"size\": 533672}, {\"path\": [\"statmap_bytes\"], \"url\": \"assets/anywidget/1f5db35dbd498c97136acb643682724f9021ea00641258ba16da71050cca1f90.bin\", \"size\": 913296}]' data-initial-value='{\"_anywidget_id\": \"nltools.data.braindata.viewer._NiivueViewer\", \"_dom_classes\": [], \"_model_module\": \"anywidget\", \"_model_module_version\": \"~0.10.*\", \"_model_name\": \"AnyModel\", \"_view_count\": null, \"_view_module\": \"anywidget\", \"_view_module_version\": \"~0.10.*\", \"_view_name\": \"AnyView\", \"atlas_lut\": {}, \"atlas_name\": \"\", \"atlas_outline\": 0.0, \"cal_max\": 2.77545287132263, \"cal_max_neg\": -2.0, \"cal_min\": 2.0, \"cal_min_neg\": -2.77545287132263, \"colorbar\": true, \"controls\": true, \"height\": 600, \"layout\": \"IPY_MODEL_55fe75ee47604b6ca6599b9d20dda80a\", \"mirror_negative\": true, \"niivue_opts\": {}, \"slice_type\": \"MULTIPLANAR\", \"slider_bounds\": {\"min\": 0.0642370891571045, \"max\": 12.847417831420898, \"value_low\": 2.0, \"value_high\": 2.77545287132263, \"step\": 0.0642370891571045}, \"statmap\": {\"name\": \"statmap\", \"colormap\": \"warm\", \"colormap_negative\": \"winter\", \"opacity\": 1.0}, \"tabbable\": null, \"tooltip\": null}' data-js-url='\"data:text/javascript;base64,Ly8gbmlpdnVlIHZpZXdlciBmb3IgQnJhaW5EYXRhLmlwbG90KCksIGRyaXZlbiB0aHJvdWdoIGFueXdpZGdldCdzICpzdGFuZGFyZCoKLy8gbW9kZWwgQVBJIChnZXQgLyBzZXQgLyBzYXZlX2NoYW5nZXMgLyBvbikgb25seSDigJQgbm8gaG9zdC1zcGVjaWZpYyBwcm90b2NvbAovLyAodGhlIGNvbnRyYXN0IHdpdGggaXB5bmlpdnVlLCBzZWUgY29zYW5sYWIvbmx0b29scyM0NTUpLCBzbyB0aGUgd2lkZ2V0IHdvcmtzCi8vIGlkZW50aWNhbGx5IGluIEp1cHl0ZXIgYW5kIGBtYXJpbW8gZWRpdGAuCi8vCi8vIG5paXZ1ZSBpdHNlbGYgaXMgcHVsbGVkIGZyb20gYSBDRE4gYXMgYW4gRVMgbW9kdWxlLiBgX2VzbWAgaXMgYW4gRVMgbW9kdWxlLCBzbwovLyBhIHRvcC1sZXZlbCBgaW1wb3J0YCBpcyByZXNvbHZlZCBieSB0aGUgYnJvd3NlciBhdCByZW5kZXIgdGltZS4gVGhlIHBpbiBrZWVwcwovLyB0aGUgQVBJIHN0YWJsZS4KaW1wb3J0IHsKICBOaWl2dWUsCiAgTlZJbWFnZSwKICBTTElDRV9UWVBFLAp9IGZyb20gImh0dHBzOi8vZXNtLnNoL0BuaWl2dWUvbmlpdnVlQDAuNjkuMCI7CgovLyBBIHRyYWl0bGV0cyBgQnl0ZXNgIHRyYWl0IGFycml2ZXMgaW4gSlMgYXMgYSBEYXRhVmlldyBvdmVyIGEgc2hhcmVkIGJ1ZmZlci4KLy8gbmlpdnVlIHdhbnRzIGEgc3RhbmRhbG9uZSBBcnJheUJ1ZmZlciwgc28gc2xpY2Ugb3V0IGV4YWN0bHkgdGhpcyB2aWV3J3MKLy8gd2luZG93LiBFbXB0eSBieXRlcyAoYW4gYWJzZW50IG9wdGlvbmFsIHZvbHVtZSkgeWllbGQgYG51bGxgLgpmdW5jdGlvbiBieXRlc1RvQXJyYXlCdWZmZXIoZHYpIHsKICBpZiAoIWR2IHx8IGR2LmJ5dGVMZW5ndGggPT09IDApIHJldHVybiBudWxsOwogIHJldHVybiBkdi5idWZmZXIuc2xpY2UoZHYuYnl0ZU9mZnNldCwgZHYuYnl0ZU9mZnNldCArIGR2LmJ5dGVMZW5ndGgpOwp9CgovLyBOVkltYWdlLm5ldyB0cmVhdHMgTmFOIGNhbF9taW4vY2FsX21heCBhcyAiYXV0byIgKHBlcmNlbnRpbGUtZGVyaXZlZCkuIEEgbnVsbAovLyB0cmFpdCAod2luZG93IGxlZnQgb24gYXV0bykgbWFwcyB0byBOYU47IGEgbnVtYmVyIHBhc3NlcyB0aHJvdWdoLgpmdW5jdGlvbiBvck5hTih4KSB7CiAgcmV0dXJuIHggPT09IG51bGwgfHwgeCA9PT0gdW5kZWZpbmVkID8gTmFOIDogeDsKfQoKLy8gQSB0cmFpdCBvciBzbGlkZXIgdmFsdWUgdGhhdCBpcyByZWFsbHkgYSBudW1iZXIgKGEgbnVsbC91bmRlZmluZWQgdHJhaXQgb3IgYQovLyBOYU4gcGFyc2UgbWVhbnMgImxlYXZlIHRoaXMgZWRnZSBhbG9uZSIpLgpmdW5jdGlvbiBpc051bWJlcih4KSB7CiAgcmV0dXJuIHggIT09IG51bGwgJiYgeCAhPT0gdW5kZWZpbmVkICYmICFOdW1iZXIuaXNOYU4oeCk7Cn0KCmZ1bmN0aW9uIGZvcm1hdFZhbHVlKHZhbHVlKSB7CiAgY29uc3QgbnVtYmVyID0gTnVtYmVyKHZhbHVlKTsKICBpZiAoIU51bWJlci5pc0Zpbml0ZShudW1iZXIpKSByZXR1cm4gIuKAlCI7CiAgcmV0dXJuIE51bWJlci5wYXJzZUZsb2F0KG51bWJlci50b1ByZWNpc2lvbig0KSkudG9TdHJpbmcoKTsKfQoKZXhwb3J0IGRlZmF1bHQgewogIGFzeW5jIHJlbmRlcih7IG1vZGVsLCBlbCB9KSB7CiAgICBlbC5zdHlsZS53aWR0aCA9ICIxMDAlIjsKCiAgICAvLyAtLS0gRE9NOiBvcHRpb25hbCB0aHJlc2hvbGQgY29udHJvbHMgKyB0aGUgV2ViR0wgY2FudmFzIC0tLS0tLS0tLS0tLS0tIC8vCiAgICBsZXQgZmxvb3JJbnB1dCA9IG51bGw7CiAgICBsZXQgY2VpbElucHV0ID0gbnVsbDsKICAgIGxldCBmbG9vclZhbHVlID0gbnVsbDsKICAgIGxldCBjZWlsVmFsdWUgPSBudWxsOwogICAgY29uc3QgYm91bmRzID0gbW9kZWwuZ2V0KCJzbGlkZXJfYm91bmRzIikgfHwge307CiAgICAvLyBUaGUgd2luZG93IGlzIGEgbWFnbml0dWRlIHdpbmRvdyBtaXJyb3JlZCBvbnRvIHRoZSBuZWdhdGl2ZSBsaW1iLCBhbmQgYQogICAgLy8gZmxvb3Igb2YgemVybyAob3IgYmVsb3cpIGFkbWl0cyBldmVyeSB6ZXJvLXZhbHVlZCB2b3hlbCDigJQgdGhlIHdob2xlCiAgICAvLyB2b2x1bWUgYm94IG91dHNpZGUgdGhlIG1hc2sgcGFpbnRzIGluIHRoZSBuZWdhdGl2ZSBjb2xvcm1hcC4gTmV2ZXIgbGV0CiAgICAvLyB0aGUgYXBwbGllZCBmbG9vciByZWFjaCB6ZXJvLCB3aGF0ZXZlciB0aGUgc2xpZGVyIG9yIHRoZSBtb2RlbCBzYXlzLgogICAgLy8KICAgIC8vIFRoZSBlcHNpbG9uIGlzIHRoZSBzbGlkZXIncyBvd24gbG93ZXIgYm91bmQsIHdoaWNoIFB5dGhvbiBndWFyYW50ZWVzIGlzCiAgICAvLyBzdHJpY3RseSBwb3NpdGl2ZSBhbmQgYXQgb3IgYmVsb3cgdGhlIHJlc29sdmVkIGBjYWxfbWluYC4gRGVyaXZpbmcgaXQKICAgIC8vIGhlcmUgaW5zdGVhZCAoZnJvbSB0aGUgc3RlcCwgc2F5KSB3b3VsZCBsZXQgdGhlIHR3byBkcmlmdCBhcGFydCBhbmQKICAgIC8vIHJhaXNlIHRoZSByZW5kZXJlZCBmbG9vciBhYm92ZSB0aGUgd2luZG93IFB5dGhvbiByZXNvbHZlZC4KICAgIGNvbnN0IGZsb29yRXBzID0gTnVtYmVyKGJvdW5kcy5taW4pID4gMCA/IE51bWJlcihib3VuZHMubWluKSA6IDFlLTk7CiAgICBjb25zdCBjbGFtcEZsb29yID0gKHYpID0+IE1hdGgubWF4KE1hdGguYWJzKHYpLCBmbG9vckVwcyk7CgogICAgaWYgKG1vZGVsLmdldCgiY29udHJvbHMiKSkgewogICAgICBjb25zdCBjb250cm9scyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICBjb250cm9scy5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAiZGlzcGxheTpmbGV4O2dhcDowLjc1cmVtO2FsaWduLWl0ZW1zOmNlbnRlcjtmb250OjEycHgvMS40IHN5c3RlbS11aSwiICsKICAgICAgICAic2Fucy1zZXJpZjtwYWRkaW5nOjRweCAycHg7ZmxleC13cmFwOndyYXAiOwoKICAgICAgY29uc3QgbWtSYW5nZSA9IChsYWJlbFRleHQsIHZhbHVlKSA9PiB7CiAgICAgICAgY29uc3Qgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7CiAgICAgICAgd3JhcC5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAgICJkaXNwbGF5OmZsZXg7Z2FwOjAuNHJlbTthbGlnbi1pdGVtczpjZW50ZXI7ZmxleDoxIDEgMjAwcHgiOwogICAgICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgc3Bhbi50ZXh0Q29udGVudCA9IGxhYmVsVGV4dDsKICAgICAgICBjb25zdCBsb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgbG93LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoYm91bmRzLm1pbiA/PyAwKTsKICAgICAgICBjb25zdCBoaWdoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgIGhpZ2gudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShib3VuZHMubWF4ID8/IDEpOwogICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgICAgICBpbnB1dC50eXBlID0gInJhbmdlIjsKICAgICAgICBpbnB1dC5taW4gPSBib3VuZHMubWluID8/IDA7CiAgICAgICAgaW5wdXQubWF4ID0gYm91bmRzLm1heCA/PyAxOwogICAgICAgIGlucHV0LnN0ZXAgPSBib3VuZHMuc3RlcCA/PyAwLjAxOwogICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUgPz8gYm91bmRzLm1pbiA/PyAwOwogICAgICAgIGlucHV0LnN0eWxlLmZsZXggPSAiMSI7CiAgICAgICAgY29uc3Qgb3V0cHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3V0cHV0Iik7CiAgICAgICAgb3V0cHV0LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaW5wdXQudmFsdWUpOwogICAgICAgIG91dHB1dC5zdHlsZS5jc3NUZXh0ID0gIm1pbi13aWR0aDo2Y2g7dGV4dC1hbGlnbjpyaWdodDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXMiOwogICAgICAgIHdyYXAuYXBwZW5kKHNwYW4sIGxvdywgaW5wdXQsIGhpZ2gsIG91dHB1dCk7CiAgICAgICAgY29udHJvbHMuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICAgICAgcmV0dXJuIFtpbnB1dCwgb3V0cHV0XTsKICAgICAgfTsKCiAgICAgIFtmbG9vcklucHV0LCBmbG9vclZhbHVlXSA9IG1rUmFuZ2UoIm1pbiIsIGJvdW5kcy52YWx1ZV9sb3cpOwogICAgICBbY2VpbElucHV0LCBjZWlsVmFsdWVdID0gbWtSYW5nZSgibWF4IiwgYm91bmRzLnZhbHVlX2hpZ2gpOwogICAgICBlbC5hcHBlbmRDaGlsZChjb250cm9scyk7CiAgICB9CgogICAgY29uc3QgaGVpZ2h0ID0gbW9kZWwuZ2V0KCJoZWlnaHQiKSB8fCA0MDA7CiAgICAvLyBuaWl2dWUncyByZXNpemUgb2JzZXJ2ZXIgc2l6ZXMgdGhlIGNhbnZhcyBmcm9tIGl0cyAqcGFyZW50KiBhbmQgcmV3cml0ZXMKICAgIC8vIHRoZSBjYW52YXMncyBvd24gaW5saW5lIGhlaWdodCB0byAxMDAlLCBzbyB0aGUgcmVxdWVzdGVkIGhlaWdodCBoYXMgdG8KICAgIC8vIGxpdmUgb24gYSB3cmFwcGVyLiBXaXRob3V0IGl0IHRoZSB2aWV3ZXIgY29sbGFwc2VzIHRvIHRoZSBwYXJlbnQncwogICAgLy8gbmF0dXJhbCBoZWlnaHQgKH4xNTBweCkgaW4gYW55IGhvc3QgdGhhdCBkb2Vzbid0IHNpemUgdGhlIHdpZGdldCBmb3IKICAgIC8vIHVzIOKAlCBzdGF0aWMvZXhwb3J0ZWQgcGFnZXMsIGlmcmFtZXMsIHBsYWluIEp1cHl0ZXIgb3V0cHV0IGFyZWFzLgogICAgY29uc3QgY2FudmFzV3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgY2FudmFzV3JhcC5zdHlsZS5jc3NUZXh0ID0gYHdpZHRoOjEwMCU7aGVpZ2h0OiR7aGVpZ2h0fXB4YDsKICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogICAgY2FudmFzLnN0eWxlLmNzc1RleHQgPSAid2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtkaXNwbGF5OmJsb2NrIjsKICAgIGNhbnZhc1dyYXAuYXBwZW5kQ2hpbGQoY2FudmFzKTsKICAgIGVsLmFwcGVuZENoaWxkKGNhbnZhc1dyYXApOwoKICAgIC8vIC0tLSBuaWl2dWUgaW5zdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vCiAgICBjb25zdCBudiA9IG5ldyBOaWl2dWUoewogICAgICBpc0NvbG9yYmFyOiBtb2RlbC5nZXQoImNvbG9yYmFyIiksCiAgICAgIC4uLihtb2RlbC5nZXQoIm5paXZ1ZV9vcHRzIikgfHwge30pLAogICAgfSk7CiAgICBhd2FpdCBudi5hdHRhY2hUb0NhbnZhcyhjYW52YXMpOwoKICAgIC8vIEluZGV4IG9mIHRoZSBzdGF0IG1hcCBpbnNpZGUgbnYudm9sdW1lcyAoc2V0IGJ5IGxvYWRTdGFjayk7IHRoZSB0aHJlc2hvbGQKICAgIC8vIGNvbnRyb2xzIGRyaXZlIHRoaXMgdm9sdW1lJ3Mgd2luZG93LgogICAgbGV0IHN0YXRtYXBJZHggPSAtMTsKCiAgICAvLyBCdWlsZCB0aGUgdm9sdW1lIHN0YWNrIFtiYWNrZ3JvdW5kPywgc3RhdG1hcCwgYXRsYXM/XSBmcm9tIHRoZSBieXRlCiAgICAvLyB0cmFpdHMgKyBkaXNwbGF5IHBhcmFtcy4gUmVidWlsdCB3aGVuZXZlciBhbnkgdm9sdW1lJ3MgYnl0ZXMgY2hhbmdlLgogICAgYXN5bmMgZnVuY3Rpb24gbG9hZFN0YWNrKCkgewogICAgICB3aGlsZSAobnYudm9sdW1lcy5sZW5ndGgpIG52LnJlbW92ZVZvbHVtZUJ5SW5kZXgoMCk7CiAgICAgIHN0YXRtYXBJZHggPSAtMTsKCiAgICAgIGNvbnN0IGJnID0gYnl0ZXNUb0FycmF5QnVmZmVyKG1vZGVsLmdldCgiYmdfYnl0ZXMiKSk7CiAgICAgIGlmIChiZykgewogICAgICAgIGNvbnN0IGJnVm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoYmcsICJiYWNrZ3JvdW5kLm5paS5neiIsICJncmF5Iik7CiAgICAgICAgYmdWb2wuY29sb3JiYXJWaXNpYmxlID0gZmFsc2U7CiAgICAgICAgbnYuYWRkVm9sdW1lKGJnVm9sKTsKICAgICAgfQoKICAgICAgY29uc3Qgc3RhdCA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoInN0YXRtYXBfYnl0ZXMiKSk7CiAgICAgIGlmIChzdGF0KSB7CiAgICAgICAgY29uc3QgcCA9IG1vZGVsLmdldCgic3RhdG1hcCIpIHx8IHt9OwogICAgICAgIGNvbnN0IHZvbCA9IGF3YWl0IE5WSW1hZ2UubmV3KAogICAgICAgICAgc3RhdCwKICAgICAgICAgIChwLm5hbWUgfHwgInN0YXRtYXAiKSArICIubmlpLmd6IiwKICAgICAgICAgIHAuY29sb3JtYXAgfHwgIndhcm0iLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICAgIG51bGwsCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9taW4iKSksCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9tYXgiKSksCiAgICAgICAgKTsKICAgICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKHZvbC5jYWxfbWluKSkgdm9sLmNhbF9taW4gPSBjbGFtcEZsb29yKHZvbC5jYWxfbWluKTsKICAgICAgICBpZiAocC5jb2xvcm1hcF9uZWdhdGl2ZSkgdm9sLmNvbG9ybWFwTmVnYXRpdmUgPSBwLmNvbG9ybWFwX25lZ2F0aXZlOwogICAgICAgIHZvbC5jYWxfbWluTmVnID0gb3JOYU4obW9kZWwuZ2V0KCJjYWxfbWluX25lZyIpKTsKICAgICAgICB2b2wuY2FsX21heE5lZyA9IG9yTmFOKG1vZGVsLmdldCgiY2FsX21heF9uZWciKSk7CiAgICAgICAgdm9sLmNvbG9yYmFyVmlzaWJsZSA9IHRydWU7CiAgICAgICAgc3RhdG1hcElkeCA9IG52LnZvbHVtZXMubGVuZ3RoOwogICAgICAgIG52LmFkZFZvbHVtZSh2b2wpOwogICAgICB9CgogICAgICBjb25zdCBhdGxhcyA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoImF0bGFzX2J5dGVzIikpOwogICAgICBpZiAoYXRsYXMpIHsKICAgICAgICBjb25zdCBwID0gbW9kZWwuZ2V0KCJzdGF0bWFwIikgfHwge307CiAgICAgICAgY29uc3Qgdm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoCiAgICAgICAgICBhdGxhcywKICAgICAgICAgIChtb2RlbC5nZXQoImF0bGFzX25hbWUiKSB8fCAiYXRsYXMiKSArICIubmlpLmd6IiwKICAgICAgICAgICIiLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICApOwogICAgICAgIGNvbnN0IGx1dCA9IG1vZGVsLmdldCgiYXRsYXNfbHV0Iik7CiAgICAgICAgaWYgKGx1dCAmJiBsdXQubGFiZWxzKSB2b2wuc2V0Q29sb3JtYXBMYWJlbChsdXQpOwogICAgICAgIHZvbC5jb2xvcmJhclZpc2libGUgPSBmYWxzZTsKICAgICAgICBudi5hZGRWb2x1bWUodm9sKTsKICAgICAgfQoKICAgICAgbnYub3B0cy5hdGxhc091dGxpbmUgPSBtb2RlbC5nZXQoImF0bGFzX291dGxpbmUiKSB8fCAwOwogICAgICBudi51cGRhdGVHTFZvbHVtZSgpOwogICAgfQoKICAgIGF3YWl0IGxvYWRTdGFjaygpOwogICAgbnYuc2V0U2xpY2VUeXBlKFNMSUNFX1RZUEVbbW9kZWwuZ2V0KCJzbGljZV90eXBlIildID8/IFNMSUNFX1RZUEUuTVVMVElQTEFOQVIpOwoKICAgIC8vIC0tLSB0aHJlc2hvbGQgY29udHJvbHMgLT4gbmlpdnVlICsgUHl0aG9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy8KICAgIC8vIEFwcGxpZXMgdGhlIGNsYW1wZWQgd2luZG93IHRvIG5paXZ1ZSBhbmQgcmV0dXJucyBpdCwgc28gdGhlIGNhbGxlcnMgdGhhdAogICAgLy8gd3JpdGUgYmFjayB0byBQeXRob24gc2VuZCB3aGF0IHdhcyByZW5kZXJlZCByYXRoZXIgdGhhbiB3aGF0IHdhcyBkcmFnZ2VkLgogICAgZnVuY3Rpb24gYXBwbHlXaW5kb3coKSB7CiAgICAgIGlmIChzdGF0bWFwSWR4IDwgMCkgcmV0dXJuIG51bGw7CiAgICAgIGNvbnN0IHZvbCA9IG52LnZvbHVtZXNbc3RhdG1hcElkeF07CiAgICAgIGNvbnN0IGxvUmF3ID0gZmxvb3JJbnB1dCA/IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9taW4iKTsKICAgICAgY29uc3QgaGlSYXcgPSBjZWlsSW5wdXQgPyBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9tYXgiKTsKICAgICAgLy8gQm90aCBlZGdlcyBhcmUgbWFnbml0dWRlczogdGhlIGZsb29yIHN0YXlzIGFib3ZlIHplcm8gYW5kIHRoZSBjZWlsaW5nCiAgICAgIC8vIHN0YXlzIGFib3ZlIHRoZSBmbG9vci4KICAgICAgY29uc3QgbG8gPSBpc051bWJlcihsb1JhdykgPyBjbGFtcEZsb29yKGxvUmF3KSA6IG51bGw7CiAgICAgIGNvbnN0IGZsb29yID0gbG8gPT09IG51bGwgPyB2b2wuY2FsX21pbiA6IGxvOwogICAgICBjb25zdCBoaSA9IGlzTnVtYmVyKGhpUmF3KQogICAgICAgID8gTWF0aC5tYXgoTWF0aC5hYnMoaGlSYXcpLCBmbG9vciArIGZsb29yRXBzKQogICAgICAgIDogbnVsbDsKICAgICAgaWYgKGxvICE9PSBudWxsKSB2b2wuY2FsX21pbiA9IGxvOwogICAgICBpZiAoaGkgIT09IG51bGwpIHZvbC5jYWxfbWF4ID0gaGk7CiAgICAgIGlmIChtb2RlbC5nZXQoIm1pcnJvcl9uZWdhdGl2ZSIpKSB7CiAgICAgICAgaWYgKGhpICE9PSBudWxsKSB2b2wuY2FsX21pbk5lZyA9IC1oaTsKICAgICAgICBpZiAobG8gIT09IG51bGwpIHZvbC5jYWxfbWF4TmVnID0gLWxvOwogICAgICB9IGVsc2UgaWYgKGxvICE9PSBudWxsKSB7CiAgICAgICAgdm9sLmNhbF9tYXhOZWcgPSAtbG87CiAgICAgIH0KICAgICAgbnYudXBkYXRlR0xWb2x1bWUoKTsKICAgICAgcmV0dXJuIHsgbG8sIGhpIH07CiAgICB9CgogICAgaWYgKGZsb29ySW5wdXQpIHsKICAgICAgZmxvb3JJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsICgpID0+IHsKICAgICAgICBjb25zdCBhcHBsaWVkID0gYXBwbHlXaW5kb3coKTsKICAgICAgICBjb25zdCBsbyA9IGFwcGxpZWQgJiYgYXBwbGllZC5sbyAhPT0gbnVsbAogICAgICAgICAgPyBhcHBsaWVkLmxvCiAgICAgICAgICA6IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgICAgZmxvb3JWYWx1ZS50ZXh0Q29udGVudCA9IGZvcm1hdFZhbHVlKGxvKTsKICAgICAgICBtb2RlbC5zZXQoImNhbF9taW4iLCBsbyk7CiAgICAgICAgbW9kZWwuc2F2ZV9jaGFuZ2VzKCk7CiAgICAgIH0pOwogICAgfQogICAgaWYgKGNlaWxJbnB1dCkgewogICAgICBjZWlsSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCAoKSA9PiB7CiAgICAgICAgY29uc3QgYXBwbGllZCA9IGFwcGx5V2luZG93KCk7CiAgICAgICAgY29uc3QgaGkgPSBhcHBsaWVkICYmIGFwcGxpZWQuaGkgIT09IG51bGwKICAgICAgICAgID8gYXBwbGllZC5oaQogICAgICAgICAgOiBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSk7CiAgICAgICAgY2VpbFZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaGkpOwogICAgICAgIG1vZGVsLnNldCgiY2FsX21heCIsIGhpKTsKICAgICAgICBtb2RlbC5zYXZlX2NoYW5nZXMoKTsKICAgICAgfSk7CiAgICB9CgogICAgLy8gLS0tIFB5dGhvbiAtPiBKUyByZWFjdGl2aXR5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvLwogICAgY29uc3Qgb25CeXRlcyA9ICgpID0+IGxvYWRTdGFjaygpOwogICAgbW9kZWwub24oImNoYW5nZTpzdGF0bWFwX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmJnX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmF0bGFzX2J5dGVzIiwgb25CeXRlcyk7CgogICAgbW9kZWwub24oImNoYW5nZTpjYWxfbWluIiwgKCkgPT4gewogICAgICBpZiAoZmxvb3JJbnB1dCkgZmxvb3JJbnB1dC52YWx1ZSA9IG1vZGVsLmdldCgiY2FsX21pbiIpID8/IGZsb29ySW5wdXQudmFsdWU7CiAgICAgIGlmIChmbG9vclZhbHVlKSBmbG9vclZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgIGFwcGx5V2luZG93KCk7CiAgICB9KTsKICAgIG1vZGVsLm9uKCJjaGFuZ2U6Y2FsX21heCIsICgpID0+IHsKICAgICAgaWYgKGNlaWxJbnB1dCkgY2VpbElucHV0LnZhbHVlID0gbW9kZWwuZ2V0KCJjYWxfbWF4IikgPz8gY2VpbElucHV0LnZhbHVlOwogICAgICBpZiAoY2VpbFZhbHVlKSBjZWlsVmFsdWUudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShjZWlsSW5wdXQudmFsdWUpOwogICAgICBhcHBseVdpbmRvdygpOwogICAgfSk7CiAgICBtb2RlbC5vbigiY2hhbmdlOnNsaWNlX3R5cGUiLCAoKSA9PgogICAgICBudi5zZXRTbGljZVR5cGUoU0xJQ0VfVFlQRVttb2RlbC5nZXQoInNsaWNlX3R5cGUiKV0gPz8gU0xJQ0VfVFlQRS5NVUxUSVBMQU5BUiksCiAgICApOwogICAgbW9kZWwub24oImNoYW5nZTpjb2xvcmJhciIsICgpID0+IHsKICAgICAgbnYub3B0cy5pc0NvbG9yYmFyID0gbW9kZWwuZ2V0KCJjb2xvcmJhciIpOwogICAgICBudi5kcmF3U2NlbmUoKTsKICAgIH0pOwogICAgbW9kZWwub24oImNoYW5nZTphdGxhc19vdXRsaW5lIiwgKCkgPT4gewogICAgICBudi5vcHRzLmF0bGFzT3V0bGluZSA9IG1vZGVsLmdldCgiYXRsYXNfb3V0bGluZSIpIHx8IDA7CiAgICAgIG52LmRyYXdTY2VuZSgpOwogICAgfSk7CgogICAgLy8gbmlpdnVlIGhhcyBubyBkZXN0cm95KCk7IGRyb3AgdGhlIFdlYkdMIGNvbnRleHQgb24gdGVhcmRvd24gLyByZS1yZW5kZXIKICAgIC8vIHNvIHJlcGVhdGVkIGNlbGwgcnVucyBkb24ndCBsZWFrIEdMIGNvbnRleHRzIChicm93c2VycyBjYXAgdGhlbSkuCiAgICByZXR1cm4gKCkgPT4gewogICAgICBjYW52YXMKICAgICAgICAuZ2V0Q29udGV4dCgid2ViZ2wyIikKICAgICAgICA/LmdldEV4dGVuc2lvbigiV0VCR0xfbG9zZV9jb250ZXh0IikKICAgICAgICA/Lmxvc2VDb250ZXh0KCk7CiAgICB9OwogIH0sCn07Cg==\"' data-label=\"null\" data-model-id='\"fa50e612426046d9b8a2557f94410693\"'\u003e\u003c/div\u003e\u003cdiv class=\"marimo-book-plotly\" data-config=\"{}\" data-figure='{\"data\":[{\"hovertemplate\":\"TR: %{x}\\u003cbr\\u003eIntensity: %{y:.4f}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#EF553B\",\"width\":2},\"mode\":\"lines\",\"name\":\"Timecourse\",\"x\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127],\"y\":{\"dtype\":\"f4\",\"bdata\":\"DrE7uIWzaDrHaQO7Ar9rul9wZrqPIZK6S0HvuvhvhrlbSQE6f3oDutihbDob9rC6fsYaOeLxrzlInBu66sOJOhewXLq4cKm6tFOOuoC4JbmgloG62xlfOo2GwjqrXtk647ADO+kcAjv4QAk7f93MOvtlErkBH2e6YsGHuDE2eLpBIT26BtK+uYiGWrquC0K7vxKoOixtTDrQP8E692ZxudYnXzrx1jG6Bktxuv5dVzogYiE6gXkguSPwBTrIrIY6yauOOQJevDpBhBQ6CTnxulQBWbphkza7z74bu1LLS7olX266EiSeus+fjbqptQa6kCJ5OtPqOTrHD4c6pjvaukP/JLl899g5iwc/OqDm8jhKDLM6IIwEumKkmDqU9Ic6uCJvuoEtrTrKTzu6pbNbuoZH6rpD0rU5INP1upR1jTqqLpk4UewtOsp9mjoqIaA6nXU7O3kgpDq49G87Cv1DO9U+8ToxIRw7aXZYOdX6/zpcICQ7ANvZOi/ja7s0OHi7/4dqu+A7gruylFK7gzK5u1VQ/rqdSoC7gMuwuoE9VbvLNbY6KJt3OnJ4qTrbdRQ6Kc+5OgAtnTokInc6rNJ7OqHygrmfUI46wxUXOw6RCzuo1806uWj4OhPtJjping46GUKRuRi1GLqCYyC67N5LOSCZvrog+Z+6pSqQusW+gLk=\"},\"type\":\"scatter\",\"xaxis\":\"x\",\"yaxis\":\"y\"},{\"hovertemplate\":\"Freq: %{x:.4f} Hz\\u003cbr\\u003ePower: %{y:.4e}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#636EFA\",\"width\":2},\"mode\":\"lines\",\"name\":\"Power\",\"x\":{\"dtype\":\"f8\",\"bdata\":\"q6qqqqqqaj+rqqqqqqp6PwAAAAAAAIQ/q6qqqqqqij+rqqqqqqqQPwAAAAAAAJQ/VlVVVVVVlz+rqqqqqqqaPwAAAAAAAJ4/q6qqqqqqoD9WVVVVVVWiPwAAAAAAAKQ/q6qqqqqqpT9WVVVVVVWnPwAAAAAAAKk/q6qqqqqqqj9WVVVVVVWsPwAAAAAAAK4/q6qqqqqqrz+rqqqqqqqwPwAAAAAAgLE/VlVVVVVVsj+rqqqqqiqzPwAAAAAAALQ/VlVVVVXVtD+rqqqqqqq1PwAAAAAAgLY/VlVVVVVVtz+rqqqqqiq4PwAAAAAAALk/VlVVVVXVuT+rqqqqqqq6PwAAAAAAgLs/VlVVVVVVvD+rqqqqqiq9PwAAAAAAAL4/VlVVVVXVvj+rqqqqqqq/PwAAAAAAQMA/q6qqqqqqwD9WVVVVVRXBPwAAAAAAgME/q6qqqqrqwT9WVVVVVVXCPwAAAAAAwMI/q6qqqqoqwz9WVVVVVZXDPwAAAAAAAMQ/q6qqqqpqxD9WVVVVVdXEPwAAAAAAQMU/q6qqqqqqxT9WVVVVVRXGPwAAAAAAgMY/q6qqqqrqxj9WVVVVVVXHPwAAAAAAwMc/q6qqqqoqyD9WVVVVVZXIPwAAAAAAAMk/q6qqqqpqyT9WVVVVVdXJPwAAAAAAQMo/\"},\"y\":{\"dtype\":\"f4\",\"bdata\":\"ioPeN+WiSjktSAQ7cv87O+EtCzuhV5M7YyqPOYxvcDohqYU49T7wOd3NtTrYTgE55VtDOEhdhTX+86Y4/+w/NcEZbDlaFBw5ZyyrNzTpeDj2ihA6W7XGOCSXhzkNlZE4BKp2OICDITfXYxI3WL6NObefmTkv22M4ZTGwN+jV2jiS/zI43uIGOOM9nzgddgw5640IN1/lQjhdylo4di2NN6EJOzlFsAE6w5bRNwTTvDjDj2g4iCyTNydJwDgochI5rPBsOBijHjcjhgA2/CcCOBwi7TX6LBI5/DLOODarxzmt1fI5ycYMOaWl7Tiif4Q5KfQ+ORp0nDlOT7Y3\"},\"type\":\"scatter\",\"xaxis\":\"x2\",\"yaxis\":\"y2\"}],\"layout\":{\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermap\":[{\"type\":\"scattermap\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,0.41000000000000003],\"title\":{\"text\":\"TR\"}},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Intensity (AU)\"}},\"xaxis2\":{\"anchor\":\"y2\",\"domain\":[0.5900000000000001,1.0],\"title\":{\"text\":\"Frequency (Hz)\"}},\"yaxis2\":{\"anchor\":\"x2\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Power\"}},\"annotations\":[{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Timecourse (TR=2.4s)\",\"x\":0.20500000000000002,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"},{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Power Spectrum\",\"x\":0.795,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"}],\"margin\":{\"t\":40,\"b\":50,\"l\":70,\"r\":30},\"height\":280,\"showlegend\":false,\"dragmode\":\"zoom\"}}'\u003e\u003c/div\u003e\u003c/div\u003e\n\u003c/div\u003e"}}