master b6ebfa3e88fb cached
373 files
8.4 MB
2.2M tokens
133 symbols
1 requests
Download .txt
Showing preview only (8,913K chars total). Download the full file or copy to clipboard to get everything.
Repository: CreativeLyons/NukeSurvivalToolkit_publicRelease
Branch: master
Commit: b6ebfa3e88fb
Files: 373
Total size: 8.4 MB

Directory structure:
gitextract_r8btb1q3/

├── .gitattributes
├── .gitignore
├── CHANGELOG.md
├── DEVELOPMENT.md
├── LICENSE
├── NukeSurvivalToolkit/
│   ├── gizmos/
│   │   ├── NST_AdditiveKeyerPro.gizmo
│   │   ├── NST_AnimationCurve.gizmo
│   │   ├── NST_AntiAliasingFilter.gizmo
│   │   ├── NST_AutoCropTool.gizmo
│   │   ├── NST_AutoFlare2.gizmo
│   │   ├── NST_BBoxToFormat.gizmo
│   │   ├── NST_BeautifulSkin.gizmo
│   │   ├── NST_BiasedSaturation.gizmo
│   │   ├── NST_BinaryAlpha.gizmo
│   │   ├── NST_BlacksExpon.gizmo
│   │   ├── NST_BlacksMatch.gizmo
│   │   ├── NST_BokehBuilder.gizmo
│   │   ├── NST_C44Kernel.gizmo
│   │   ├── NST_CProject.gizmo
│   │   ├── NST_CProject2.gizmo
│   │   ├── NST_CameraNormals.gizmo
│   │   ├── NST_CardToTrack.gizmo
│   │   ├── NST_CardToTrack2.gizmo
│   │   ├── NST_CatsEyeDefocus.gizmo
│   │   ├── NST_CellNoise.gizmo
│   │   ├── NST_ChannelCombiner.gizmo
│   │   ├── NST_ChannelControl.gizmo
│   │   ├── NST_ChannelCreator.gizmo
│   │   ├── NST_ChromaSmear.gizmo
│   │   ├── NST_Chromatik.gizmo
│   │   ├── NST_ColorCopy.gizmo
│   │   ├── NST_ColorSampler.gizmo
│   │   ├── NST_ColorSmear.gizmo
│   │   ├── NST_ConstantPro.gizmo
│   │   ├── NST_ContactSheetAuto.gizmo
│   │   ├── NST_Contrast.gizmo
│   │   ├── NST_ConvertPNZ.gizmo
│   │   ├── NST_ConvolutionMatrix.gizmo
│   │   ├── NST_CornerPin2D_Matrix.gizmo
│   │   ├── NST_CrossProductVector2.gizmo
│   │   ├── NST_CrossProductVector3.gizmo
│   │   ├── NST_DVPColorCorrect.gizmo
│   │   ├── NST_DVPToImage.gizmo
│   │   ├── NST_DVP_Shader.gizmo
│   │   ├── NST_DVP_ToonShader.gizmo
│   │   ├── NST_DVPattern.gizmo
│   │   ├── NST_DVPfresnel.gizmo
│   │   ├── NST_DVPmatte.gizmo
│   │   ├── NST_DVPortal.gizmo
│   │   ├── NST_DVPrelight.gizmo
│   │   ├── NST_DVPrelightPT.gizmo
│   │   ├── NST_DVProjection.gizmo
│   │   ├── NST_DVPscene.gizmo
│   │   ├── NST_DVPsetLight.gizmo
│   │   ├── NST_DasGrain.gizmo
│   │   ├── NST_Deep2VP.gizmo
│   │   ├── NST_Deep2VPosition.gizmo
│   │   ├── NST_DeepBoolean.gizmo
│   │   ├── NST_DeepCopyBBox.gizmo
│   │   ├── NST_DeepCropSoft.gizmo
│   │   ├── NST_DeepFromDepth.gizmo
│   │   ├── NST_DeepFromPosition.gizmo
│   │   ├── NST_DeepHoldoutSmoother.gizmo
│   │   ├── NST_DeepKeyMix.gizmo
│   │   ├── NST_DeepMerge_Advanced.gizmo
│   │   ├── NST_DeepRecolorMatte.gizmo
│   │   ├── NST_DeepSampleCount.gizmo
│   │   ├── NST_DeepSer.gizmo
│   │   ├── NST_DeflickerVelocity.gizmo
│   │   ├── NST_DefocusSwirlyBokeh.gizmo
│   │   ├── NST_DespillToColor.gizmo
│   │   ├── NST_Diffusion.gizmo
│   │   ├── NST_DirectionalBlur.gizmo
│   │   ├── NST_Distance3D.gizmo
│   │   ├── NST_DistanceBetween_CS.gizmo
│   │   ├── NST_DotProductVector2.gizmo
│   │   ├── NST_DotProductVector3.gizmo
│   │   ├── NST_DummyCam.gizmo
│   │   ├── NST_Edge.gizmo
│   │   ├── NST_EdgeDetectAlias.gizmo
│   │   ├── NST_EdgeDetectPRO.gizmo
│   │   ├── NST_EdgeFromAlpha.gizmo
│   │   ├── NST_Edge_Expand.gizmo
│   │   ├── NST_Edge_RimLight.gizmo
│   │   ├── NST_Emission.gizmo
│   │   ├── NST_EnvReflect_BB.gizmo
│   │   ├── NST_ErodeSmooth.gizmo
│   │   ├── NST_Erode_Fine.gizmo
│   │   ├── NST_ExponBlurSimple.gizmo
│   │   ├── NST_ExponGlow.gizmo
│   │   ├── NST_F_P_Project.gizmo
│   │   ├── NST_F_P_Ramp.gizmo
│   │   ├── NST_FastComplexityDistort.gizmo
│   │   ├── NST_FillSampler.gizmo
│   │   ├── NST_FlareSuperStar.gizmo
│   │   ├── NST_FractalBlur.gizmo
│   │   ├── NST_FrameFiller.gizmo
│   │   ├── NST_FrameHoldSpecial.gizmo
│   │   ├── NST_FrameMedian.gizmo
│   │   ├── NST_GUI_Switch.gizmo
│   │   ├── NST_GammaPlus.gizmo
│   │   ├── NST_GenerateMatrix4.gizmo
│   │   ├── NST_GenerateSTMap.gizmo
│   │   ├── NST_GeoToPoints.gizmo
│   │   ├── NST_Glass.gizmo
│   │   ├── NST_Glow_Exponential.gizmo
│   │   ├── NST_GlueP.gizmo
│   │   ├── NST_GodRaysProjector.gizmo
│   │   ├── NST_GradMagic.gizmo
│   │   ├── NST_GradeLayerPass.gizmo
│   │   ├── NST_Grain_Advanced.gizmo
│   │   ├── NST_GuidedBlur.gizmo
│   │   ├── NST_HSL_Tool.gizmo
│   │   ├── NST_Halation.gizmo
│   │   ├── NST_HeatWave.gizmo
│   │   ├── NST_HexColor.gizmo
│   │   ├── NST_HighPass.gizmo
│   │   ├── NST_HighlightSuppress.gizmo
│   │   ├── NST_ID_Extractor.gizmo
│   │   ├── NST_IIDistort.gizmo
│   │   ├── NST_ITransformU.gizmo
│   │   ├── NST_ImagePlane3D.gizmo
│   │   ├── NST_InjectMatteChannel.gizmo
│   │   ├── NST_InverseMatrix33.gizmo
│   │   ├── NST_InverseMatrix44.gizmo
│   │   ├── NST_InvertAxis.gizmo
│   │   ├── NST_InvertMatrix4.gizmo
│   │   ├── NST_KeyChew.gizmo
│   │   ├── NST_KeymixBBox.gizmo
│   │   ├── NST_KillOutline.gizmo
│   │   ├── NST_LabelFromRead.gizmo
│   │   ├── NST_LensEngine.gizmo
│   │   ├── NST_LightSwitch.gizmo
│   │   ├── NST_LightWrapPro.gizmo
│   │   ├── NST_Lightning3D.gizmo
│   │   ├── NST_LineTool.gizmo
│   │   ├── NST_Looper.gizmo
│   │   ├── NST_LumaGrain.gizmo
│   │   ├── NST_LumaKeyer.gizmo
│   │   ├── NST_LumaToVector3.gizmo
│   │   ├── NST_MECfiller.gizmo
│   │   ├── NST_MagnitudeVector2.gizmo
│   │   ├── NST_MagnitudeVector3.gizmo
│   │   ├── NST_Matrix4x4Math.gizmo
│   │   ├── NST_Matrix4x4_Inverse.gizmo
│   │   ├── NST_MergeAll.gizmo
│   │   ├── NST_MergeAtmos.gizmo
│   │   ├── NST_MergeBlend.gizmo
│   │   ├── NST_MirrorBorder.gizmo
│   │   ├── NST_MirrorDimension.gizmo
│   │   ├── NST_MonochromePlus.gizmo
│   │   ├── NST_MorphDissolve.gizmo
│   │   ├── NST_MotionBlurPaint.gizmo
│   │   ├── NST_MultiplyVector3Matrix3.gizmo
│   │   ├── NST_NAN_INF_Killer.gizmo
│   │   ├── NST_N_Reflection.gizmo
│   │   ├── NST_Noise3DTexture.gizmo
│   │   ├── NST_Noise3D_spin.gizmo
│   │   ├── NST_NoiseAdvanced.gizmo
│   │   ├── NST_NormalizeVector2.gizmo
│   │   ├── NST_NormalizeVector3.gizmo
│   │   ├── NST_NormalsRotate.gizmo
│   │   ├── NST_NukeZ.gizmo
│   │   ├── NST_P2N.gizmo
│   │   ├── NST_P2Z.gizmo
│   │   ├── NST_P_Noise_Advanced.gizmo
│   │   ├── NST_ParticleKiller.gizmo
│   │   ├── NST_ParticleLights.gizmo
│   │   ├── NST_PerspectiveGuide.gizmo
│   │   ├── NST_PlanarProjection.gizmo
│   │   ├── NST_PlotScanline.gizmo
│   │   ├── NST_PointCloudKeyer.gizmo
│   │   ├── NST_PosMatte_MJ.gizmo
│   │   ├── NST_PosPattern_MJ.gizmo
│   │   ├── NST_PosProjection_MJ.gizmo
│   │   ├── NST_ProductMatrix4.gizmo
│   │   ├── NST_Pyclopedia.gizmo
│   │   ├── NST_Python_and_TCL.gizmo
│   │   ├── NST_RP_Reformat.gizmo
│   │   ├── NST_RadialAdvanced.gizmo
│   │   ├── NST_RadialDilate.gizmo
│   │   ├── NST_RainMaker.gizmo
│   │   ├── NST_Randomizer.gizmo
│   │   ├── NST_RankFilter.gizmo
│   │   ├── NST_RayDeepAO.gizmo
│   │   ├── NST_ReProject_3D.gizmo
│   │   ├── NST_Reconcile3DFast.gizmo
│   │   ├── NST_Relight_Simple.gizmo
│   │   ├── NST_Relight_bb.gizmo
│   │   ├── NST_Rings_of_Power.gizmo
│   │   ├── NST_RotateMatrix4.gizmo
│   │   ├── NST_RotateVector2.gizmo
│   │   ├── NST_RotateVector3.gizmo
│   │   ├── NST_RotoCentroid.gizmo
│   │   ├── NST_RotoPaintTransform.gizmo
│   │   ├── NST_RotoQC.gizmo
│   │   ├── NST_SSMesh.gizmo
│   │   ├── NST_STMapToVector2.gizmo
│   │   ├── NST_STmapInverse.gizmo
│   │   ├── NST_ScaleMatrix4.gizmo
│   │   ├── NST_SceneDepthCalculator.gizmo
│   │   ├── NST_ShadowMult.gizmo
│   │   ├── NST_SimpleSSS.gizmo
│   │   ├── NST_SkyMatte.gizmo
│   │   ├── NST_SliceTool.gizmo
│   │   ├── NST_Sparky.gizmo
│   │   ├── NST_Spill_Correct.gizmo
│   │   ├── NST_SpotFlare.gizmo
│   │   ├── NST_SpotLight.gizmo
│   │   ├── NST_Suppress_RGBCMY.gizmo
│   │   ├── NST_Symmetry.gizmo
│   │   ├── NST_TProject.gizmo
│   │   ├── NST_TProject2.gizmo
│   │   ├── NST_TimeMachine.gizmo
│   │   ├── NST_TransformCutOut.gizmo
│   │   ├── NST_TransformMatrix.gizmo
│   │   ├── NST_TransformMatrix4.gizmo
│   │   ├── NST_TransformMix.gizmo
│   │   ├── NST_TransformVector2.gizmo
│   │   ├── NST_TransformVector3.gizmo
│   │   ├── NST_TranslateMatrix4.gizmo
│   │   ├── NST_TransposeMatrix4.gizmo
│   │   ├── NST_UVEditor.gizmo
│   │   ├── NST_UV_Map.gizmo
│   │   ├── NST_UV_Mapper.gizmo
│   │   ├── NST_Unify3DCoordinate.gizmo
│   │   ├── NST_Vector2ToSTMap.gizmo
│   │   ├── NST_Vector3ToMatrix4.gizmo
│   │   ├── NST_VectorExtendEdge.gizmo
│   │   ├── NST_VectorTracker.gizmo
│   │   ├── NST_Vectors_Direction.gizmo
│   │   ├── NST_Vectors_to_Degrees.gizmo
│   │   ├── NST_VoronoiGradient.gizmo
│   │   ├── NST_WaterLens.gizmo
│   │   ├── NST_WaveletBlur.gizmo
│   │   ├── NST_WhiteBalance.gizmo
│   │   ├── NST_WhiteSoftClip.gizmo
│   │   ├── NST_X_Aton_Volumetrics.gizmo
│   │   ├── NST_X_Denoise.gizmo
│   │   ├── NST_X_Distort.gizmo
│   │   ├── NST_X_Sharpen.gizmo
│   │   ├── NST_X_Soften.gizmo
│   │   ├── NST_X_Tesla.gizmo
│   │   ├── NST_Z2N.gizmo
│   │   ├── NST_Z2P.gizmo
│   │   ├── NST_ZeroAxis.gizmo
│   │   ├── NST_aPCard.gizmo
│   │   ├── NST_aPMatte_v2.gizmo
│   │   ├── NST_aeRefracTHOR.gizmo
│   │   ├── NST_aeRelight2D.gizmo
│   │   ├── NST_aeShadows.gizmo
│   │   ├── NST_apChroma.gizmo
│   │   ├── NST_apChromaBlurNew.gizmo
│   │   ├── NST_apChromaMergeNew.gizmo
│   │   ├── NST_apChromaPremult.gizmo
│   │   ├── NST_apChromaTransformNew.gizmo
│   │   ├── NST_apChromaUnpremult.gizmo
│   │   ├── NST_apDespill.gizmo
│   │   ├── NST_apDirLight.gizmo
│   │   ├── NST_apEdgeCrush.gizmo
│   │   ├── NST_apEdgePush.gizmo
│   │   ├── NST_apFresnel.gizmo
│   │   ├── NST_apLoop.gizmo
│   │   ├── NST_apViewerBlocker.gizmo
│   │   ├── NST_apVignette.gizmo
│   │   ├── NST_apeGlow.gizmo
│   │   ├── NST_apeScreenClean.gizmo
│   │   ├── NST_apeScreenGrow.gizmo
│   │   ├── NST_bm_CameraShake.gizmo
│   │   ├── NST_bm_CurveRemapper.gizmo
│   │   ├── NST_bm_MatteCheck.gizmo
│   │   ├── NST_bm_NoiseGen.gizmo
│   │   ├── NST_bm_OpticalGlow.gizmo
│   │   ├── NST_bm_OpticalLightwrap.gizmo
│   │   ├── NST_deHaze.gizmo
│   │   ├── NST_fxT_ChromaticAberration.gizmo
│   │   ├── NST_h_gradienteditor.gizmo
│   │   ├── NST_h_silk.gizmo
│   │   ├── NST_h_stickit.gizmo
│   │   ├── NST_iBlurU.gizmo
│   │   ├── NST_iConvolve.gizmo
│   │   ├── NST_iErode.gizmo
│   │   ├── NST_iMorph.gizmo
│   │   ├── NST_iMorph_v2.gizmo
│   │   ├── NST_iTransform_ae.gizmo
│   │   ├── NST_mScatterGeo.gizmo
│   │   ├── NST_origami.gizmo
│   │   ├── NST_renameChannels.gizmo
│   │   ├── NST_streamCart.gizmo
│   │   ├── NST_vector3DMathExpression.gizmo
│   │   ├── NST_viewer_render.gizmo
│   │   ├── NST_waterSchmutz.gizmo
│   │   ├── NST_waveCustom.gizmo
│   │   ├── NST_waveGrade.gizmo
│   │   ├── NST_waveMaker.gizmo
│   │   ├── NST_waveMerge.gizmo
│   │   └── NST_waveRetime.gizmo
│   ├── init.py
│   ├── menu.py
│   ├── nk_files/
│   │   ├── C4x4.nk
│   │   ├── GradientCorner.nk
│   │   ├── IBKGizmo_Expression.nk
│   │   ├── Lines_Horizontal.nk
│   │   ├── Lines_Horizontal_Animated.nk
│   │   ├── Lines_Vertical.nk
│   │   ├── Lines_Vertical_Animated.nk
│   │   ├── NST_AdvancedKeyingTemplate.nk
│   │   ├── NST_AdvancedKeyingTemplate_Stamps.nk
│   │   ├── NST_LightSwitchPuppet.nk
│   │   ├── NST_Noise4D.nk
│   │   ├── NST_ParticleLights_ExampleScript.nk
│   │   ├── NST_SSMesh_demo.nk
│   │   ├── NST_STMap_Keying_Setup.nk
│   │   ├── NST_SparkyExampleScene.nk
│   │   ├── NST_UVEditor_demo_clean.nk
│   │   ├── NST_WaterLens_sampleScript.nk
│   │   ├── NST_X_Aton_Examples.nk
│   │   ├── Noise.nk
│   │   ├── Random_colors.nk
│   │   ├── Random_every_frame.nk
│   │   ├── Random_every_pixel.nk
│   │   ├── STMap_invert.nk
│   │   ├── Trunc.nk
│   │   ├── UV_to_Vector.nk
│   │   ├── Vector_to_UV.nk
│   │   ├── abs.nk
│   │   ├── alpha_binary.nk
│   │   ├── alpha_comparison.nk
│   │   ├── alpha_exists.nk
│   │   ├── alpha_sum.nk
│   │   ├── bricks.nk
│   │   ├── check_nan_inf.nk
│   │   ├── check_negative.nk
│   │   ├── circles.nk
│   │   ├── circles_user.nk
│   │   ├── coordinates.nk
│   │   ├── create_inf.nk
│   │   ├── create_nan.nk
│   │   ├── deepThickness.nk
│   │   ├── deepToDepth.nk
│   │   ├── depth_normalize.nk
│   │   ├── despill_blue.nk
│   │   ├── despill_blue_list.nk
│   │   ├── despill_green.nk
│   │   ├── despill_green_list.nk
│   │   ├── differenceKey.nk
│   │   ├── fBm.nk
│   │   ├── gradient_horizontal.nk
│   │   ├── gradient_horizontal_invert.nk
│   │   ├── gradient_vertical.nk
│   │   ├── gradient_vertical_invert.nk
│   │   ├── keying.nk
│   │   ├── kill_inf.nk
│   │   ├── kill_nan.nk
│   │   ├── normalPass_relight.nk
│   │   ├── points.nk
│   │   ├── points_advanced.nk
│   │   ├── radial.nk
│   │   ├── radial_gradient.nk
│   │   ├── radial_rays.nk
│   │   ├── transform.nk
│   │   ├── transform_advanced.nk
│   │   ├── turbulence.nk
│   │   └── twist.nk
│   └── python/
│       ├── ColorGradientUi.py
│       ├── GradientPresets.cfg
│       ├── NST_ID_Extractor.py
│       ├── NST_VectorTracker.py
│       ├── NST_cardToTrack.py
│       ├── NST_cardToTrack_v9.py
│       ├── NST_helper.py
│       └── NST_stickit.py
└── README.md

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
# Auto detect text files and perform LF normalization
* text=auto


================================================
FILE: .gitignore
================================================
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

## Mac ignore

# General
.DS_Store
.AppleDouble
.LSOverride
*.pyc
tab_stats.dat
*.dat

.dropbox

# Thumbnails
._*

# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent

# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk


# C extensions
*.so

# Distribution / packaging
*.zip
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
.python-version

# pipenv
#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
#   However, in case of collaboration, if having platform-specific dependencies or dependencies
#   having no cross-platform support, pipenv may install dependencies that don't work, or not
#   install all needed dependencies.
#Pipfile.lock

# celery beat schedule file
celerybeat-schedule

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/
.DS_Store
*.dat

# Cursor IDE
.cursor/

# AI assistant/tooling
.claude/
.codex/

# JetBrains IDE
.idea/

# Code review reports
.code-review/
.code-review


================================================
FILE: CHANGELOG.md
================================================
# Changelog

All notable changes to the Nuke Survival Toolkit are documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [2.2.0] - 2026-03-19

### Added

**Tools (gizmos and Python)**

**2026**
- CardToTrack (AK) v9.0

**2024**
- aeShadows (AE) v1.0
- FastComplexity_Distort (MHD)
- fxT_ChromaticAberration (fxT) v3.1
- Emission (NW) v1.2
- aeRefracTHOR (AE) v1.0
- LightSwitch (TL)
- LightSwitchPuppet template
- ChromaSmear (LJ)
- apEdgeCrush (AP)
- MirrorDimension (TL)

**2023**
- PointCloudKeyer (IS)
- SpotLight (TL)
- Rings of Power (TL)
- Symmetry (TL)
- SkyMatte

**2022**
- CardToTrack (AK) updated to v8.0 with NST_cardToTrack.py
- ID_Extractor (TL) with NST_ID_Extractor.py
- ConstantPro (TL)
- HexColor (NW)
- RadialDilate (CF)

**2021**
- GuidedBlur (RF)
- iErode (PP)
- aeRelight2D (AE)
- iTransform_ae (AE) — later fixed onCreate code for render farm
- ImagePlane3D_v2 (TL) v2.0
- bm_OpticalLightwrap (renamed from bm_Lightwrap)

---

**Other**

- `LOAD_EXPRESSION_MENU` configuration option in `menu.py` to optionally enable or disable the Expression Nodes AG submenu (default: disabled).

### Changed

- Icon assets recompressed for ~53% size reduction (~127 KB saved); no visual changes.
- `ColorGradientUi.py` updated for Nuke 16+ compatibility and PySide6 migration (GradientEditor MHD).
- Menu refactor: `nk_path()` and `icon_path()` helpers, f-strings, improved readability; no user-visible behavior change.
- Documentation menu now uses a `Documentation` submenu with `Wiki/Docs (Auto)`, `Wiki (Online)`, `Wiki (Offline)`, and `Docs (PDF)` commands. The auto command now falls back in order: online wiki -> offline local wiki -> local PDF, with reachability checks and concise missing-target guidance.
- Documentation (offline HTML): **`Wiki/Docs (Auto)`** and **`Wiki (Offline)`** open the bundled wiki via a local **`http://127.0.0.1`** static server (ephemeral port) so **MkDocs Material search** works; falls back to **`file://`** if the server cannot start; browser launch is **non-blocking** (background thread). Reuses the same server when the offline root path is unchanged.
- Added dedicated icons for documentation submenu entries (`wiki_default`, `wiki_online`, `wiki_offline`) and used Nuke native `StickyNote` for PDF.
- `README.md` now includes an optional offline documentation install section that points users to release ZIP downloads and the required local path (`NukeSurvivalToolkit/NST_Documentation/index.html`).
- Updated .nk templates: NST_AdvancedKeyingTemplate_Stamps.nk, NST_X_Aton_Examples.nk, deepThickness.nk.
- New icon assets for aeRefracTHOR, aeShadows.
- EdgeDetect, GuidedBlur: corrected icons and attribution (#62).
- iMorph v2 AP (beta) added alongside v1 in menu.
- CardToTrack v9 (AK): Transform menu entries CardToTrack_v9 AK, CProject2 AK, TProject2 AK now use NST_-prefixed gizmos (NST_CardToTrack2, NST_CProject2, NST_TProject2) and NST_cardToTrack_v9.py.

**Updated Tools**

*Nuke 13 compatibility:*
- aPCard
- AutoCropTool
- DeepKeyMix
- FrameFiller
- GradMagic
- ImagePlane3D
- LumaGrain
- Matrix4x4_Inverse
- mScatterGeo
- origami
- PlanarProjection (also fixed XAton volumes example)
- Reconcile3DFast
- Relight_Simple
- ReProject_3D
- RotoCentroid
- RP_Reformat
- Sparky
- SSMesh
- viewer_render
- VoronoiGradient

*Other updates:*
- apeGlow (fixed overscan bug on crop knobs)
- apChroma (internal restructure)
- apChromaMergeNew (internal restructure)
- apDespill: v1 deprecated, v2 promoted as canonical — `NST_apDespill_v2.gizmo` renamed to `NST_apDespill.gizmo` (#63)
- apVignette (v0.5: added transform tab, "Apply to White Constant" option)
- bm_CameraShake (v4.0: fewer internal nodes/expressions, curve smoothness control, cleaner UI, experimental auto-motionblur beta) (#39)
- bm_OpticalGlow (v4.1: fixed mix slider with mask input, removed stale `algorithm_code` knob) (#40, #64)
- bm_OpticalLightwrap (fixed mix slider with mask input, removed stale `algorithm_code` knob, default `effect_only` to false, renamed menu entry and icon) (#41)
- CameraNormals (updated DummyCam to v1.3)
- CellNoise (fixed onCreate center calculation)
- ColorSampler (added option to export constant)
- DeepRecolorMatte (bug fixes, ported later version)
- DummyCam (v1.3, Nuke 13/14+ Camera3 class)
- ExponGlow (fixed bug that deleted luma key when changing iterations)
- Glass (added channel support and mask input)
- InjectMatteChannel (exposed bbox knob)
- LightWrapPro (fixed bounding box in non-final view modes)
- MorphDissolve (added 0→1 / 1→0 options, STmap export)
- SimpleSSS (internal cleanup)
- SliceTool (code cleanup)
- STmapInverse (code cleanup)
- Suppress_RGBCMY (added mask and mix features)
- UV_Map (fixed overscan scaling bug)
- UV_Mapper (internal cleanup)

### Removed

- `h_Qt.py` — obsolete Qt compatibility shim (no longer needed after PySide6 migration).
- `NST_bm_Lightwrap.gizmo` — replaced by bm_OpticalLightwrap.
- `NST_apDespill_v2.gizmo` — renamed to `NST_apDespill.gizmo` (v2 promoted as canonical).
- GlobalCTRL, AnamorphicLensBlur — removed from toolkit (no menu entry, not maintained).
- Duplicate `NST_ImagePlane3D_v2.gizmo` — identical to v1, single copy retained.

### Fixed

- CellNoise: Blink kernel compile errors on Nuke 15+ (moved globals to #define, replaced abs() with signedness check) (#36).
- apEdgeCrush: BlinkScript compile error on Nuke 16 — replaced global inline `lerp()` with `#define` macro (#59).
- Windows filepath issues: use `Path.as_posix()` for all toolkit paths so forward slashes are used on every platform, avoiding backslash escape sequences (e.g. `\n` in `\nk_files`) that broke `nuke.nodePaste()` and file knobs on Windows.
- Help documentation link on Windows: use `Path.as_uri()` for the documentation PDF URL so drive-letter paths open correctly in the browser.
- Documentation online reachability check now handles environments where Python SSL certificate validation fails, preventing false fallback from online docs to PDF.
- Offline MkDocs **search** was unreliable when the wiki was opened as **`file://`** — mitigated by serving the same folder over **localhost** when launching from Nuke (**Wiki/Docs (Auto)** / **Wiki (Offline)**).
- Node class check in `filepathCreateNode`: use tuple membership instead of chained `or` for file-node detection (#46).
- Replaced bare `except:` clauses with specific exception handling (ImportError, RuntimeError) for ColorGradientUi, VectorTracker, and NST_cardToTrack imports (#45).
- Menu: corrected bm_Lightwrap node name to bm_OpticalLightwrap (#61).
- Menu: replaced broken DeepToPosition TL with Deep2VPosition MJT (#60).
- Issue #43: **`NST_FolderPath` is defined inside `NST_helper`** (from `__file__`) instead of being assigned from `menu.py`, so the helper does not depend on `menu.py` having run first and avoids import-order `NameError` risk.

---

## [2.1.1] - 2021-05-19

### Changed

- Updated NST_ImagePlane3D, NST_apDespill_v2, NST_FrameHoldSpecial gizmos.
- Updated deepThickness.nk script.

---

## [2.1.0] - 2021-04-28

### Added

**Tools (gizmos and Python)**

**2021**
- BokehBuilder (KB)
- LensEngine (KB)
- RankFilter (JP)
- MotionBlurPaint (AG)
- RotoPaintTransform (AG)
- Deep2VP (MJT)
- DVPColorCorrect (MJT)
- DVP_Shader (MJT)
- DVP_ToonShader (MJT)
- DVPrelightPT (MJT)
- DVPortal (MJT)
- FrameHoldSpecial (AG)
- InverseMatrix33 (MJT)
- InverseMatrix44 (MJT)
- apDespill v2 (AP)
- MonochromePlus (CF)

**2020**
- iMorph v2 (AP)
- LabelFromRead (TL)
- Unify3DCoordinate (MJT)
- SceneDepthCalculator (MJT)
- DasGrain (FH)
- Looper (DB)
- HeatWave (DB)

---

**Other**

- New documentation.

### Changed

- NST_ImagePlane3D, NST_GradMagic, NST_iMorph updates.
- Menu structure updates.

---

## [2.0.0] - 2021-03-29

### Added

**Tools (gizmos and Python)**

**2021**
- GodRaysProjector (CF)
- MonochromePlus (CF)
- RainMaker (MR)

**2020**
- ImagePlane3D (TL) v2.0
- FrameFiller (MJT)
- Edge (RB)
- Reconcile3DFast (DR)
- GlueP (LS)
- AutoFlare2 (NKPD)
- DeepMerge_Advanced (BM)
- bm_MatteCheck (BM)
- bm_NoiseGen (BM)
- bm_Lightwrap (BM)
- SimpleSSS (MHD)
- KeyChew (NKPD)
- AdditiveKeyerPro (TL)
- apeGlow (AP)
- iBlurU (NKPD)
- DeepFromDepth

---

**Other**

- ReadGeo class support in NST_helper.
- PerspectiveBB reset points button.
- UV_Map, injectChannelMatte tab rename.
- Menu restructure and submenus.

### Changed

- Nuke 13 compatibility updates across multiple gizmos.
- Major init.py restructure.
- Documentation updates.

### Fixed

- ImagePlane3D crop1, DirectionalBlur CopyBBox, bm_MatteCheck grey_amt.
- Menu bugs.
- NST_Reconcile3DFast.

---

## [1.1.1] - 2020-10-05

### Changed

- Updated NST_AutoFlare2 gizmo.

---

## [1.1.0] - 2020-10-04

### Added

**Tools (gizmos and Python)**

- AutoFlare2 (NKPD)
- FrameFiller (MJT)
- Edge (RB)
- Reconcile3DFast (DR)
- GlueP (LS)
- DeepMerge_Advanced (BM)
- bm_MatteCheck (BM)
- bm_NoiseGen (BM)
- bm_CurveRemapper (BM)
- bm_Lightwrap (BM)
- SimpleSSS (MHD)
- KeyChew (NKPD)

---

### Changed

- Dev branch merge; bm_Lightwrap replaced prior NST_bm_Lightwrap; various tool updates.

---

## [1.0.1] - 2020-09-26

### Changed

- Sparky DB updated to v1.5.
- README updates.

---

## [1.0.0] - 2020-09-23

### Added

**Tools (gizmos and Python)**

- Initial curated gizmo collection.

---

**Other**

- Portable tool menu for Foundry Nuke.
- Installation via init.py plugin path.

[Unreleased]: https://github.com/CreativeLyons/NukeSurvivalToolkit_publicRelease/compare/v2.2.0...HEAD
[2.2.0]: https://github.com/CreativeLyons/NukeSurvivalToolkit_publicRelease/compare/v2.1.1...v2.2.0
[2.1.1]: https://github.com/CreativeLyons/NukeSurvivalToolkit_publicRelease/compare/v2.1.0...v2.1.1
[2.1.0]: https://github.com/CreativeLyons/NukeSurvivalToolkit_publicRelease/compare/v2.0.0...v2.1.0
[2.0.0]: https://github.com/CreativeLyons/NukeSurvivalToolkit_publicRelease/compare/v1.1.1...v2.0.0
[1.1.1]: https://github.com/CreativeLyons/NukeSurvivalToolkit_publicRelease/compare/v1.1.0...v1.1.1
[1.1.0]: https://github.com/CreativeLyons/NukeSurvivalToolkit_publicRelease/compare/v1.0.1...v1.1.0
[1.0.1]: https://github.com/CreativeLyons/NukeSurvivalToolkit_publicRelease/compare/v1.0.0...v1.0.1
[1.0.0]: https://github.com/CreativeLyons/NukeSurvivalToolkit_publicRelease/releases/tag/v1.0.0


================================================
FILE: DEVELOPMENT.md
================================================
# NukeSurvivalToolkit Development Notes

This document captures key learnings, architecture decisions, and development knowledge for AI agents and developers working on this project.

## Architecture Overview

```
NukeSurvivalToolkit/
├── menu.py            # Main entry point - creates toolbar, loads all tools
├── init.py            # Minimal (plugin path setup happens in menu.py)
├── gizmos/            # 290+ .gizmo files (prefixed NST_)
├── python/            # Supporting Python modules
├── nk_files/          # .nk script templates and presets
├── icons/             # Menu and tool icons (.png)
└── images/            # Demo images referenced by gizmos
```

**Loading Flow:**
1. User adds `nuke.pluginAddPath("path/to/NukeSurvivalToolkit")` to their `init.py`
2. Nuke auto-loads `menu.py` on startup
3. `menu.py` registers plugin paths, imports helpers, creates the toolbar menu structure

**Documentation menu:** Online/offline/PDF targets and opening offline HTML (preferring a local `http://127.0.0.1` server so MkDocs Material search works) are implemented in `NST_helper`—see that module and `CHANGELOG.md`.

## Menu System

### Entry Point: `menu.py`

The menu system uses `nuke.menu('Nodes')` to create a toolbar with submenus:

```python
toolbar = nuke.menu('Nodes')
NST_menu = toolbar.addMenu('NukeSurvivalToolkit', icon="SurvivalToolkit.png")
```

### Helper Functions

Two utility functions simplify path construction:

```python
def nk_path(filename, prefix=False):
    """Return full path to an .nk file in nk_files folder."""
    name = f"{prefixNST}{filename}" if prefix else filename
    return f"{NST_FolderPath}/nk_files/{name}"

def icon_path(filename):
    """Return full path to an icon file."""
    return f"{NST_FolderPath}/icons/{filename}"
```

Usage patterns:
```python
# With prefix (NST_AdvancedKeyingTemplate.nk)
nk_path("AdvancedKeyingTemplate.nk", prefix=True)

# Without prefix (deepThickness.nk)
nk_path("deepThickness.nk")
```

### Tool Creation Methods

There are three ways tools are added to menus:

1. **Direct gizmo creation** (most common):
   ```python
   menu.addCommand('ToolName', f"nuke.createNode('{prefixNST}ToolName')", icon="icon.png")
   ```

2. **Node paste from .nk file** (for templates/multi-node setups):
   ```python
   menu.addCommand('Template', f'nuke.nodePaste("{nk_path("Template.nk")}")')
   ```

3. **Helper function** (for tools needing file path replacement):
   ```python
   menu.addCommand('AutoFlare', f"NST_helper.filepathCreateNode('{prefixNST}AutoFlare2')")
   ```

## Gizmo Naming Convention

**All toolkit gizmos are prefixed with `NST_`** to avoid conflicts with user tools or other plugins.

```
NST_DummyCam.gizmo
NST_LabelFromRead.gizmo
NST_ID_Extractor.gizmo
```

The prefix is stored as a global in `menu.py`:
```python
global prefixNST
prefixNST = "NST_"
```

## Cross-Platform Path Handling

### The Windows Backslash Problem

Windows uses backslashes (`\`) in paths, which causes issues:
- `\n` in a path like `C:\nk_files\` is interpreted as a newline
- `nuke.nodePaste()` fails with malformed paths
- File knobs display incorrectly

**Solution:** Always use `Path.as_posix()` to force forward slashes:

```python
from pathlib import Path

# CORRECT - works on all platforms
NST_FolderPath = Path(__file__).parent.as_posix()

# WRONG - breaks on Windows
NST_FolderPath = os.path.dirname(__file__)
```

`NST_helper.py` also defines `NST_FolderPath` at import time from its own location (toolkit root is the parent of `python/`). `menu.py` still assigns `NST_helper.NST_FolderPath` after import; both point at the same toolkit folder.

### Documentation URLs (`NST_helper`)

Documentation is opened from `NST_helper` (see `openNSTDocumentationDefault`, `openNSTDocumentationOffline`, `openNSTDocumentationPDF`).

- **Online wiki:** `webbrowser.open(NST_DOCS_ONLINE_URL)` with a prior HTTPS reachability check (`is_online_wiki_reachable`).
- **Offline HTML:** Prefer `http://127.0.0.1:<port>/` via a small local static server so MkDocs Material search works; if that fails, fall back to `offline_index.as_uri()` (`file://`).
- **PDF in toolkit root:** Resolve with `find_pdf_doc()` (`NST_DOCS_PDF_NAME` under `_toolkit_root()`), then open with `Path.as_uri()` so Windows drive letters become valid `file:///…` URLs:

```python
pdf_doc = find_pdf_doc()
if pdf_doc:
    webbrowser.open(pdf_doc.as_uri())
```

## Dynamic File Path Replacement

Some gizmos contain Read/Camera nodes that reference image files in the toolkit. These use a placeholder pattern:

```python
# In gizmo: file path contains "<<<replace>>>"
# NST_helper.filepathCreateNode() swaps it with actual path

def filepathCreateNode(gizmoName):
    # ...create node...
    for i in fileNodes:
        if i.Class() in ("Read", "DeepRead", "ReadGeo", "ReadGeo2", "Camera2", "Axis2"):
            filepath = i.knob("file").getValue()
            if "<<<replace>>>" in filepath:
                newFilepath = filepath.replace("<<<replace>>>", NST_FolderPath)
                i.knob("file").setValue(newFilepath)
```

**Example (Read node `file` knob):**

| | Path |
|---|------|
| **Before** (placeholder in gizmo) | `<<<replace>>>/images/my_demo.exr` |
| **After** (at runtime) | `NST_FolderPath` + `/images/my_demo.exr` — e.g. `/…/NukeSurvivalToolkit/images/my_demo.exr` |

Put assets under `images/` next to `gizmos/`, `python/`, etc., and keep the path after `<<<replace>>>` relative to the toolkit root.

**Node classes that support file replacement:** Read, DeepRead, ReadGeo, ReadGeo2, Camera2, Axis2

## Python Module Loading

### Safe Import Pattern

When loading optional Python modules, use specific exception handling:

```python
# CORRECT - catches specific errors
try:
    import ColorGradientUi
    drawMenu.addCommand("GradientEditor", ...)
except ImportError as e:
    print(f"Could not load ColorGradientUi: {e}")
    pass

# ALSO CORRECT - for nuke.load()
try:
    nuke.load(f'{prefixNST}VectorTracker.py')
    menu.addCommand('VectorTracker', ...)
except RuntimeError as e:
    print(f"Could not load VectorTracker.py: {e}")
    pass
```

### Module Dependencies

| Module | Purpose | Dependencies |
|--------|---------|--------------|
| `ColorGradientUi.py` | Gradient editor widget | PySide6, ConfigParser |
| `NST_helper.py` | Path replacement utility; documentation submenu (online/offline/PDF); local HTTP for offline HTML | nuke, nukescripts, pathlib, stdlib (http, threading) |
| `NST_ID_Extractor.py` | ID channel extraction | nuke, nukescripts |
| `NST_VectorTracker.py` | Vector-based tracking | nuke |
| `NST_cardToTrack.py` | CardToTrack v7 — 3D card to 2D track | nuke, math, threading |
| `NST_cardToTrack_v9.py` | CardToTrack v9 — used by NST_CardToTrack2, NST_CProject2, NST_TProject2 | nuke, math, re, time |
| `NST_stickit.py` | Camera tracker warping | nuke, nuke.splinewarp, math |

## Nuke Version Compatibility

### Camera Class Changes (Nuke 13+)

Nuke 13 introduced `Camera3` class. Code must check for all camera types:

```tcl
# In DummyCam.gizmo TCL expression
if {[class $x]=="Camera3"||[class $x]=="Camera2"||[class $x]=="Camera"} {
    # handle camera...
}
```

### PySide Migration (Nuke 16+)

Nuke 16+ uses PySide6 instead of PySide2. The `ColorGradientUi.py` was updated:

```python
# Old (PySide2)
from PySide2 import QtGui, QtCore, QtWidgets

# New (PySide6)
from PySide6 import QtGui, QtCore, QtWidgets
from PySide6.QtWidgets import QWidget, QLabel, ...
from PySide6.QtGui import QColor, QPainter, ...
```

**Key change:** In PySide6, some classes moved from `QtWidgets` to `QtGui` (e.g., `QAction`).

## Gizmo Etiquette

### Save as Group, not Gizmo

When you save a tool to disk, use a **Group** as the root node, not a **Gizmo**. NST ships tools as Groups so scripts remain valid if NST is not installed (for example on a render farm) or if the toolkit is removed. Internal nodes, expressions, and the Group structure still load; a Gizmo definition would not.

### Clean the header when pasting from Nuke

Copying a node from Nuke into a text editor often includes paste/stack boilerplate before the node block. Strip that so **`Group {` is the first line** of the tool, and verify the **`name`** matches the tool.

**Remove these lines** (everything above `Group {`):

```nk
set cut_paste_input [stack 0]
version 16.0 v8
push $cut_paste_input
```

(Version numbers will differ; remove the `set`, `version`, and `push` block in full.)

**Remove graph position** so the node does not snap to a fixed spot when the script is merged or opened elsewhere. Delete the `xpos` and `ypos` lines near the top of the Group, **before** the first `addUserKnob`:

```nk
 xpos 136
 ypos -78
```

**Example — raw paste (abbreviated):**

```nk
---

set cut_paste_input [stack 0]
version 16.0 v8
push $cut_paste_input
Group {
 name GradMagic
 tile_color 0x621d5aff
 gl_color 0xbffffff
 note_font "Verdana Bold"
 note_font_color 0x73e6e2ff
 selected true
 xpos 136
 ypos -78
 addUserKnob {20 GradMagic}
```

**Example — cleaned header:**

```nk
Group {
 name GradMagic
 tile_color 0x621d5aff
 gl_color 0xbffffff
 note_font "Verdana Bold"
 note_font_color 0x73e6e2ff
 selected true
 addUserKnob {20 GradMagic}
```

## TCL Expression Techniques

### DummyCam's Camera Traversal

The DummyCam gizmo uses TCL to find an upstream camera through any number of group levels:

```tcl
# Traverse up through inputs and groups to find camera
set x [node $starting_point]
while {$finished != 1} {
    while {[class $x] != "Camera3" && [class $x] != "Camera2" ...} {
        set x [node $x.input0]
    }
    # If found Input node, jump to parent group's corresponding input
    if {[class $x]=="Input"} {
        set inp "$x.parent.input"
        set inputNum [value $x.number]
        # ...
    }
}
```

## Configuration Options

`menu.py` includes user-configurable variables:

```python
# Set to True to load the Expression Nodes AG submenu under Draw
LOAD_EXPRESSION_MENU = False
```

**Note:** Disabled by default to reduce menu clutter for users who don't need expression node presets.

## Integration with External Tools

### Stamps Integration

Several tools attempt to integrate with Adrian Pueyo's Stamps tool:

```python
try:
    import stamps
    stamps.anchor(title=channelName, tags="ID", input_node="", node_type="2D")
except ImportError:
    pass  # Stamps not installed, skip silently
```

**Tools with Stamps support:** ID_Extractor

## File Reference

| File | Purpose |
|------|---------|
| `menu.py` | Main menu creation and tool registration |
| `init.py` | Minimal stub (most work in menu.py) |
| `NST_helper.py` | `filepathCreateNode()` for dynamic paths; documentation menu (online/offline/PDF); local HTTP server for offline wiki when opening bundled HTML |
| `ColorGradientUi.py` | PySide6 gradient editor widget |
| `NST_ID_Extractor.py` | RGB channel extraction with Stamps |
| `NST_VectorTracker.py` | Vector/motion vector based tracking |
| `NST_cardToTrack.py` | CardToTrack v7 3D→2D conversion |
| `NST_cardToTrack_v9.py` | CardToTrack v9 3D→2D conversion; used by NST_CardToTrack2, NST_CProject2, NST_TProject2 gizmos |
| `NST_stickit.py` | SplineWarp from CameraTracker |
| `GradientPresets.cfg` | Stored gradient presets (ConfigParser) |

## Testing

1. Add toolkit path to `~/.nuke/init.py`:
   ```python
   nuke.pluginAddPath("/path/to/NukeSurvivalToolkit")
   ```

2. Restart Nuke

3. Look for red multi-tool icon in toolbar

4. Test individual tools by creating them from the menu

## Contributing

When adding new tools:

1. Name the gizmo file `NST_ToolName.gizmo`
2. Add menu entry in appropriate section of `menu.py`
3. Use existing icon or add new one to `icons/`
4. If tools or tool demos need images to read in, add them to `images/` and use the `<<<replace>>>` placeholder in the Read (or other file) node's file path so `NST_helper.filepathCreateNode()` can substitute the toolkit root.
5. Update CHANGELOG.md with addition


================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2020 CreativeLyons

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: NukeSurvivalToolkit/gizmos/NST_AdditiveKeyerPro.gizmo
================================================
Group {
 name AdditiveKeyerPro
 tile_color 0x5200ff
 note_font "Verdana Bold"
 note_font_color 0xffffffff
 selected true
 addUserKnob {20 AdditiveKeyer}
 addUserKnob {6 useSC l "Use Screen Color as CleanPlate" +STARTLINE}
 addUserKnob {41 screenColor l "Screen Color" T Keylight1.screenColour}
 addUserKnob {6 despillSat l "Despill Screen Color from Saturation?" +STARTLINE}
 despillSat true
 addUserKnob {26 ""}
 addUserKnob {7 DarkValue l "Dark Value" R 0 5}
 DarkValue 1
 addUserKnob {7 satDarks l "Saturate Darks"}
 satDarks 0.2
 addUserKnob {18 darkTint l "Dark Tint"}
 darkTint 1
 addUserKnob {6 darkTint_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
 addUserKnob {26 ""}
 addUserKnob {6 lightTint_panelDropped l "panel dropped state" +HIDDEN +STARTLINE}
 addUserKnob {7 ExtraLightValue l "Light Value Plus" R 0 2}
 ExtraLightValue 1
 addUserKnob {7 satLights l "Saturate Lights"}
 satLights 0.2
 addUserKnob {18 lightTint l "Light Tint"}
 lightTint 1
 addUserKnob {6 lightTint_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
 addUserKnob {7 LightValue l "Light Value BG Mult" R 0 5}
 LightValue 0.25
 addUserKnob {26 ""}
 addUserKnob {6 darkTint_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" +HIDDEN +STARTLINE}
 addUserKnob {6 lightTint_panelDropped_1_1_1_1_1_1_1_1_1_1_1_1 l "panel dropped state" +HIDDEN +STARTLINE}
 addUserKnob {6 compositeSwitch l "Output Difference to RGB" +STARTLINE}
 addUserKnob {6 outputDiffAlpha l "Output Difference Matte to Alpha" +STARTLINE}
 addUserKnob {26 ""}
 addUserKnob {41 maskChannelMask l mask T MergeKeymix.maskChannelMask}
 addUserKnob {41 inject -STARTLINE T MergeKeymix.inject}
 addUserKnob {41 invert_mask l invert -STARTLINE T MergeKeymix.invert_mask}
 addUserKnob {41 fringe -STARTLINE T MergeKeymix.fringe}
 addUserKnob {41 mix T MergeKeymix.mix}
 addUserKnob {20 info l Info}
 addUserKnob {26 creator l "Modified By:" T "<b><big>Tony Lyons"}
 addUserKnob {26 desc l Description: t "adds the difference between cleanplate and key plate to the BG\n\nGood for hair details and shadows and sensitive edge treatment" T AdditiveKeyer}
 addUserKnob {26 ver l Version: T v04}
}
 Input {
  inputs 0
  name Inputmask
  xpos 685
  ypos 1141
  number 3
 }
 Dot {
  name Dot10
  label Mask
  note_font_size 41
  xpos 719
  ypos 1883
 }
 Dot {
  name Dot11
  note_font_size 41
  xpos 719
  ypos 1983
 }
 Input {
  inputs 0
  name fg
  label "\[value number]"
  xpos -500
  ypos -221
  number 1
 }
 Remove {
  channels alpha
  name Remove2
  xpos -500
  ypos -147
 }
 AddChannels {
  channels rgba
  name AddChannels2
  xpos -500
  ypos -109
 }
 Dot {
  name Dot26
  note_font_size 41
  xpos -466
  ypos 5
 }
set Ne63218b0 [stack 0]
 OFXuk.co.thefoundry.keylight.keylight_v201 {
  show "Final Result"
  unPreMultiply false
  screenColour {0 0 0}
  screenGain 1
  screenBalance 0.5
  alphaBias {0.5 0.5 0.5}
  despillBias {0.5 0.5 0.5}
  gangBiases true
  preBlur 0
  "Screen Matte" 0
  screenClipMin 0
  screenClipMax 1
  screenClipRollback 0
  screenGrowShrink 0
  screenSoftness 0
  screenDespotBlack 0
  screenDespotWhite 0
  screenReplaceMethod "Soft Colour"
  screenReplaceColour {0.5 0.5 0.5}
  Tuning 0
  midPoint 0.5
  lowGain 1
  midGain 1
  highGain 1
  "Inside Mask" 0
  sourceAlphaHandling Ignore
  insideReplaceMethod "Soft Colour"
  insideReplaceColour {0.5 0.5 0.5}
  Crops 0
  SourceXMethod Colour
  SourceYMethod Colour
  SourceEdgeColour 0
  SourceCropL 0
  SourceCropR 1
  SourceCropB 0
  SourceCropT 1
  balanceSet false
  insideComponent None
  outsideComponent None
  cacheBreaker true
  name Keylight1
  xpos -500
  ypos 73
 }
set Nda7c91c0 [stack 0]
push $Ne63218b0
 Dot {
  name Dot27
  note_font_size 41
  xpos -356
  ypos 5
 }
 Merge2 {
  inputs 2
  operation from
  name Merge3
  label "\[ expr \{ \[value mix] == 1 ? \" \" : \[concat Mix: \[value mix]] \}]"
  xpos -390
  ypos 73
 }
 Clamp {
  channels rgba
  name Clamp1
  xpos -390
  ypos 99
 }
 Saturation {
  saturation 0
  name Saturation4
  xpos -390
  ypos 125
 }
push $Nda7c91c0
 Merge2 {
  inputs 2
  operation plus
  name Merge7
  label "\[ expr \{ \[value mix] == 1 ? \" \" : \[concat Mix: \[value mix]] \}]"
  xpos -500
  ypos 125
 }
push $Ne63218b0
 Dot {
  name Dot30
  note_font_size 41
  xpos -598
  ypos 5
 }
 Dot {
  name Dot31
  note_font_size 41
  xpos -598
  ypos 218
 }
 Switch {
  inputs 2
  which {{parent.despillSat}}
  name DespillSwitch1
  label "\[value which]"
  xpos -500
  ypos 208
 }
 Dot {
  name Dot8
  xpos -466
  ypos 373
 }
set Ne61ad600 [stack 0]
 Input {
  inputs 0
  name clean
  label "\[value number]"
  xpos 126
  ypos -175
  number 2
 }
 Remove {
  channels alpha
  name Remove3
  xpos 126
  ypos -101
 }
 AddChannels {
  channels rgba
  name AddChannels1
  xpos 126
  ypos -63
 }
 Grade {
  multiply 0
  add {{parent.Keylight1.screenColour} {parent.Keylight1.screenColour} {parent.Keylight1.screenColour} {parent.Keylight1.screenColour}}
  name ScreenColor
  xpos 126
  ypos -14
  disable {{!parent.useSC}}
 }
 Dot {
  name Dot28
  note_font_size 41
  xpos 160
  ypos 50
 }
set Ne61d0820 [stack 0]
 OFXuk.co.thefoundry.keylight.keylight_v201 {
  show "Final Result"
  unPreMultiply false
  screenColour {{parent.Keylight1.screenColour} {parent.Keylight1.screenColour} {parent.Keylight1.screenColour}}
  screenGain 1
  screenBalance 0.5
  alphaBias {0.5 0.5 0.5}
  despillBias {0.5 0.5 0.5}
  gangBiases true
  preBlur 0
  "Screen Matte" 0
  screenClipMin 0
  screenClipMax 1
  screenClipRollback 0
  screenGrowShrink 0
  screenSoftness 0
  screenDespotBlack 0
  screenDespotWhite 0
  screenReplaceMethod "Soft Colour"
  screenReplaceColour {0.5 0.5 0.5}
  Tuning 0
  midPoint 0.5
  lowGain 1
  midGain 1
  highGain 1
  "Inside Mask" 0
  sourceAlphaHandling Ignore
  insideReplaceMethod "Soft Colour"
  insideReplaceColour {0.5 0.5 0.5}
  Crops 0
  SourceXMethod Colour
  SourceYMethod Colour
  SourceEdgeColour 0
  SourceCropL 0
  SourceCropR 1
  SourceCropB 0
  SourceCropT 1
  balanceSet false
  insideComponent None
  outsideComponent None
  cacheBreaker true
  name Keylight2
  xpos 126
  ypos 118
 }
set Ne61d4760 [stack 0]
push $Ne61d0820
 Dot {
  name Dot29
  note_font_size 41
  xpos 270
  ypos 50
 }
 Merge2 {
  inputs 2
  operation from
  name Merge8
  label "\[ expr \{ \[value mix] == 1 ? \" \" : \[concat Mix: \[value mix]] \}]"
  xpos 236
  ypos 118
 }
 Clamp {
  channels rgba
  name Clamp2
  xpos 236
  ypos 144
 }
 Saturation {
  saturation 0
  name Saturation5
  xpos 236
  ypos 170
 }
push $Ne61d4760
 Merge2 {
  inputs 2
  operation plus
  name Merge9
  label "\[ expr \{ \[value mix] == 1 ? \" \" : \[concat Mix: \[value mix]] \}]"
  xpos 126
  ypos 170
 }
push $Ne61d0820
 Dot {
  name Dot33
  note_font_size 41
  xpos 28
  ypos 50
 }
 Dot {
  name Dot34
  note_font_size 41
  xpos 28
  ypos 230
 }
 Switch {
  inputs 2
  which {{parent.despillSat}}
  name DespillSwitch2
  label "\[value which]"
  xpos 126
  ypos 223
 }
 Dot {
  name Dot35
  note_font_size 41
  xpos 160
  ypos 320
 }
set Ndc6e9920 [stack 0]
 Dot {
  name Dot6
  xpos 412
  ypos 320
 }
 Merge2 {
  inputs 2
  operation difference
  Achannels rgb
  Bchannels rgb
  name Merge6
  xpos 378
  ypos 370
 }
 Group {
  name ChannelControl_v3
  label "\[value channel_selector.in]"
  note_font "Bitstream Vera Sans"
  xpos 378
  ypos 440
  mapsize {0.15 0.15}
  addUserKnob {20 channelControl}
  addUserKnob {41 Channel_Selection T channel_selector.in}
  addUserKnob {26 Description l "" +STARTLINE T ":Channel Control:\n\nChannel math with choice of merge operation"}
  addUserKnob {26 ""}
  addUserKnob {7 redGain}
  redGain 0.3
  addUserKnob {7 greenGain}
  greenGain 0.59
  addUserKnob {7 blueGain}
  blueGain 0.11
  addUserKnob {7 alphaGain}
  addUserKnob {41 operation T Merge1.operation}
 }
  Input {
   inputs 0
   name Input1
   xpos 558
   ypos -694
  }
  Shuffle {
   name channel_selector
   label "\[value in]"
   xpos 558
   ypos -668
  }
set Ne600a100 [stack 0]
  Shuffle {
   green red
   blue red
   alpha red
   name Shuffle1
   xpos 386
   ypos -536
  }
  Grade {
   channels rgba
   white {{parent.redGain i}}
   name Grade12
   xpos 386
   ypos -492
  }
push $Ne600a100
  Shuffle {
   red green
   blue green
   alpha green
   name Shuffle2
   xpos 499
   ypos -534
  }
  Grade {
   channels rgba
   white {{parent.greenGain i}}
   name Grade13
   xpos 499
   ypos -493
  }
  Merge2 {
   inputs 2
   operation plus
   name Merge1
   xpos 411
   ypos -428
  }
  set C310f6910 [stack 0]
push $Ne600a100
  Shuffle {
   red blue
   green blue
   alpha blue
   name Shuffle3
   xpos 610
   ypos -538
  }
  Grade {
   channels rgba
   white {{parent.blueGain i}}
   name Grade14
   xpos 610
   ypos -494
  }
clone $C310f6910 {
   inputs 2
   xpos 486
   ypos -369
   selected false
  }
push $Ne600a100
  Shuffle {
   red alpha
   green alpha
   blue alpha
   name Shuffle4
   selected true
   xpos 725
   ypos -535
  }
  Grade {
   channels rgba
   white {{parent.alphaGain i}}
   name Grade15
   xpos 725
   ypos -494
  }
clone $C310f6910 {
   inputs 2
   xpos 580
   ypos -307
   selected false
  }
  Output {
   name Output1
   xpos 600
   ypos -210
  }
 end_group
 Dot {
  name Dot14
  note_font_size 41
  xpos 412
  ypos 1768
 }
 Input {
  inputs 0
  name bg
  label "\[value number]"
  xpos -845
  ypos -242
 }
 AddChannels {
  channels rgba
  name AddChannels3
  xpos -845
  ypos -151
 }
 Dot {
  name Dot9
  note_font_size 41
  xpos -811
  ypos -78
 }
 Dot {
  name Dot4
  xpos -811
  ypos 1449
 }
set Nd631a0b0 [stack 0]
 Dot {
  name Dot13
  note_font_size 41
  xpos -811
  ypos 1688
 }
set Nd631df90 [stack 0]
push $Ne61ad600
 Dot {
  name Dot2
  note_font_size 41
  xpos -466
  ypos 421
 }
set Nd6321e60 [stack 0]
 Saturation {
  saturation {{parent.satDarks}}
  name Saturation9
  xpos -378
  ypos 418
 }
push $Ndc6e9920
 Saturation {
  saturation {{parent.satDarks}}
  name Saturation8
  xpos -215
  ypos 317
 }
 Merge2 {
  inputs 2
  operation divide
  name Merge5
  label "\[ expr \{ \[value mix] == 1 ? \" \" : \[concat Mix: \[value mix]] \}]"
  xpos -215
  ypos 418
 }
 Dot {
  name Dot38
  note_font_size 41
  xpos -181
  ypos 674
 }
 Clamp {
  channels rgba
  minimum 1
  minimum_enable false
  name Clamp4
  xpos -215
  ypos 786
 }
 Add {
  channels rgba
  value -1
  name Add3
  xpos -215
  ypos 840
 }
 Multiply {
  channels rgb
  value {{parent.DarkValue} {parent.DarkValue} {parent.DarkValue} 0}
  name DARK_VALUE
  xpos -215
  ypos 892
 }
 Grade {
  multiply {{parent.darkTint} {parent.darkTint} {parent.darkTint} {parent.darkTint}}
  reverse true
  black_clamp false
  name DARK_TINT
  xpos -215
  ypos 931
 }
 Add {
  channels rgba
  value 1
  name Add4
  xpos -215
  ypos 988
 }
 Clamp {
  channels rgb
  name Clamp5
  xpos -215
  ypos 1065
 }
 Dot {
  name Dot39
  note_font_size 41
  xpos -181
  ypos 1257
 }
push $Nd6321e60
 Dot {
  name Dot36
  note_font_size 41
  xpos -466
  ypos 577
 }
 Saturation {
  saturation {{parent.satLights}}
  name Saturation1
  xpos -101
  ypos 574
 }
set Nb662b010 [stack 0]
push $Ndc6e9920
 Saturation {
  saturation {{parent.satLights}}
  name Saturation6
  xpos 126
  ypos 500
 }
set Nb662f000 [stack 0]
 Merge2 {
  inputs 2
  operation divide
  also_merge all
  name Merge10
  label all
  xpos 126
  ypos 568
 }
 Clamp {
  channels rgba
  minimum 1
  maximum_enable false
  name Clamp3
  xpos 126
  ypos 780
 }
 Add {
  channels rgba
  value -1
  name Add1
  xpos 126
  ypos 838
 }
 Multiply {
  channels rgb
  value {{parent.LightValue} {parent.LightValue} {parent.LightValue} 0}
  name LIGHT_VALUE
  xpos 126
  ypos 961
 }
 Multiply {
  channels rgb
  value {{parent.lightTint.r} {parent.lightTint.g} {parent.lightTint.b} 0}
  name LIGHT_TINT
  xpos 126
  ypos 1039
 }
 Add {
  channels rgba
  value 1
  name Add2
  xpos 126
  ypos 1120
 }
 Merge2 {
  inputs 2
  operation multiply
  Achannels rgb
  Bchannels rgb
  output rgb
  name __CONSTRAIN_DARKS__
  xpos 128
  ypos 1253
 }
 Dot {
  name Dot19
  note_font_size 41
  xpos 162
  ypos 1354
 }
set Nd6028a80 [stack 0]
 Dot {
  name Dot3
  xpos -8
  ypos 1354
 }
 Dot {
  name Dot16
  note_font_size 41
  xpos -8
  ypos 1611
 }
push $Nb662f000
 Dot {
  name Dot7
  note_font_size 41
  xpos 310
  ypos 503
 }
push $Nb662b010
 Dot {
  name Dot5
  note_font_size 41
  xpos -67
  ypos 691
 }
 Merge2 {
  inputs 2
  operation from
  name Merge1
  label "\[ expr \{ \[value mix] == 1 ? \" \" : \[concat Mix: \[value mix]] \}]"
  xpos 276
  ypos 688
 }
 Clamp {
  channels rgba
  maximum_enable false
  name Clamp6
  xpos 276
  ypos 781
 }
 Multiply {
  channels rgba
  value {{parent.ExtraLightValue}}
  name Multiply1
  label "\[value value]"
  xpos 276
  ypos 899
 }
 Multiply {
  channels rgb
  value {{parent.lightTint.r} {parent.lightTint.g} {parent.lightTint.b} 0}
  name LIGHT_TINT1
  xpos 276
  ypos 1036
 }
 Dot {
  name Dot15
  note_font_size 41
  xpos 310
  ypos 1513
 }
push $Nd6028a80
 Dot {
  name Dot1
  note_font_size 41
  xpos 162
  ypos 1449
 }
push $Nd631a0b0
 Merge2 {
  inputs 2
  operation multiply
  Achannels rgb
  Bchannels rgb
  output rgb
  name CONSTRAIN_LIGHTS
  xpos 128
  ypos 1446
 }
 Merge2 {
  inputs 2
  operation plus
  output rgb
  name Merge2
  label "\[ expr \{ \[value mix] == 1 ? \" \" : \[concat Mix: \[value mix]] \}]"
  xpos 128
  ypos 1510
 }
 Switch {
  inputs 2
  which {{parent.compositeSwitch}}
  name Switch1
  label "\[value which]"
  xpos 128
  ypos 1604
 }
 Copy {
  inputs 2
  from0 rgba.alpha
  to0 rgba.alpha
  name Copy1
  xpos 128
  ypos 1678
  disable {{parent.outputDiffAlpha}}
 }
 Copy {
  inputs 2
  from0 rgba.blue
  to0 rgba.alpha
  name __LUMA_INTO_ALPHA__
  xpos 128
  ypos 1758
  disable {{!parent.outputDiffAlpha}}
 }
 Dot {
  name Dot17
  label A
  note_font_size 41
  xpos 162
  ypos 1910
 }
push $Nd631df90
 Dot {
  name Dot18
  label B
  note_font_size 41
  xpos -811
  ypos 1895
 }
 Dot {
  name Dot12
  note_font_size 41
  xpos -811
  ypos 1986
 }
 Merge2 {
  inputs 2+1
  operation copy
  bbox B
  Achannels none
  Bchannels none
  output none
  also_merge rgba
  name MergeKeymix
  xpos 128
  ypos 1973
 }
 Output {
  name Output1
  xpos 128
  ypos 2235
 }
end_group


================================================
FILE: NukeSurvivalToolkit/gizmos/NST_AnimationCurve.gizmo
================================================
Group {
 name ANIMATION_CURVES
 inputs 0
 knobChanged "nk = nuke.thisNode()\nk = nuke.thisKnob()\nif ('active_translate' in k.name()) or ('active_scale' in k.name()) or ('active_time' in k.name())or ('scale_1' in k.name()) or ('translate' in k.name()) or ('delay' in k.name()):\n    input = nk.knob('input_modify').getValue()\n    value = input\n    expression = 'input_modify'\n    string = 'input'\n    if(nk.knob('active_time').getValue() == 1):\n        expression = 'input_modify(frame + delay)'\n        string = 'input(frame + offset)'\n    if(nk.knob('active_scale').getValue() == 1):\n        value = value * nk.knob('scale_1').getValue()\n        expression = expression + '*scale_1'\n        string = string + ' * scale'\n    if(nk.knob('active_translate').getValue() == 1):\n        value = value + nk.knob('translate').getValue()\n        expression = '(' + expression + ' + translate)'\n        string = '(' + string + '+ translate)'\n    nk.knob('output_modify').setExpression(expression)\n    nk.knob('expression_modify').setValue(string)\nif ('wave_type' in k.name()):\n    if int(nk.knob('wave_type').getValue())==0:\n        expression = 'random((frame+offset)/speed) * (max_val-min_val) + min_val'\n    elif int(nk.knob('wave_type').getValue())==1:\n        expression = '(noise((frame+offset)/speed)+1)/2 * (max_val-min_val) + min_val'\n    elif int(nk.knob('wave_type').getValue())==2:\n        expression = '(sin(2*pi*(frame+offset)/speed)+1)/2 * (max_val-min_val) + min_val'\n    elif int(nk.knob('wave_type').getValue())==3:\n        expression = '(asin(sin(2*pi*(frame+offset)/speed))/pi+0.5) * (max_val-min_val) + min_val'\n    elif int(nk.knob('wave_type').getValue())==4:\n        expression = 'int(sin(2*pi*(frame+offset)/speed)+1) * (max_val-min_val) + min_val'\n    elif int(nk.knob('wave_type').getValue())==5:\n        expression = '((frame+(offset+speed)) % (speed+blip)/(speed)) *(speed/blip) - (speed/blip) >= 0 ? max_val : min_val'\n    elif int(nk.knob('wave_type').getValue())==6:\n        expression = '((int((frame+offset) % speed)) >= 0 ? ((int((frame+offset) % speed)) <= (0+(blip-1)) ? ((sin(pi*((frame+offset) % speed)/blip)/2+1/2) * (2*max_val-2*min_val) + (2*min_val-max_val)) : min_val)  : min_val)'\n    elif int(nk.knob('wave_type').getValue())==7:\n        expression = 'abs(sin(pi*(frame + offset)/speed))* (max_val-min_val) + min_val'\n    elif int(nk.knob('wave_type').getValue())==8:\n        expression = '((frame+offset) % speed)/speed * (max_val-min_val) + min_val'\n    elif int(nk.knob('wave_type').getValue())==9:\n        expression = 'sin((pi*(frame+offset)/(2*speed)) % (pi/2)) * (max_val-min_val) + min_val'\n    elif int(nk.knob('wave_type').getValue())==10:\n        expression = 'cos((pi*(frame+offset)/(2*speed)) % (pi/2)) * (max_val-min_val) + min_val'\n    elif int(nk.knob('wave_type').getValue())==11:\n        expression = '(exp(2*pi*((frame+offset) % speed)/speed)-1)/exp(2*pi) * (max_val-min_val) + min_val'\n    nk.knob('output_wave').setExpression(expression)\n    nk.knob('expression_wave').setValue(expression)\n#----------------------------------------\n#FADE\n\n\nif ('fade_type' in k.name()) or ('fade_dissolve' in k.name()):\n    fadeStart = nk.knob('fadeStart').getValue()\n    fadeEnd = nk.knob('fadeEnd').getValue()\n    \n    if int(nk.knob('fade_type').getValue())==0:\n        expression_fade=\"clamp((frame-fadeStart)/(fadeEnd-fadeStart))\"\n    elif int(nk.knob('fade_type').getValue())==1:\n        expression_fade=\"(sin(clamp(((frame-fadeStart)*pi)/(fadeEnd-fadeStart) - pi/2, -pi/2, pi/2))+1) /2\"\n    elif int(nk.knob('fade_type').getValue())==2:\n        expression_fade=\"sin(clamp(((frame-fadeStart)*pi)/((fadeEnd-fadeStart)*2)-pi/2, -pi/2,0))+1\"\n    elif int(nk.knob('fade_type').getValue())==3:\n        expression_fade=\"sin(clamp(((frame-(fadeStart*2-fadeEnd))*pi)/((fadeEnd-fadeStart)*2)-pi/2,0,pi/2))\"\n\n\n           \n    saveExpression = expression_fade\n        \n    if int(nk.knob('fade_dissolve').getValue())==0:\n        expression_fade = saveExpression\n    elif int(nk.knob('fade_dissolve').getValue())==1:\n        expression_fade = \"1-(\" + saveExpression + \")\"\n        \n    nk.knob('out_fade').setExpression(expression_fade)\n    nk.knob('expression_fade').setValue(expression_fade)\n"
 autolabel nuke.thisNode().name()
 tile_color 0x367f5eff
 note_font "Bitstream Vera Sans Bold"
 note_font_color 0xffffffff
 addUserKnob {20 wave_generator l "Wave Generator"}
 addUserKnob {4 wave_type l "Wave type" M {Random Noise Sine Triangle Square Blip "Sine Blip" Bounce SawTooth "Saw Parabolic" "Saw Parabolic Reverse" "Saw Exponential" ""}}
 addUserKnob {7 min_val l "Min val" R -10 10}
 min_val 10
 addUserKnob {7 max_val l "Max val" R -10 10}
 max_val 28
 addUserKnob {7 speed l "Speed (frequency)" R 1 100}
 speed 2
 addUserKnob {7 offset l "Time offset" R -10 10}
 addUserKnob {7 blip l Blip R 1 10}
 blip 1
 addUserKnob {26 ""}
 addUserKnob {7 output_wave l "<font color=orangered><i>output wave"}
 output_wave {{"random((frame+offset)/speed) * (max_val-min_val) + min_val"}}
 addUserKnob {1 expression_wave l "<font color=darkcyan>Expression"}
 expression_wave "random((frame+offset)/speed) * (max_val-min_val) + min_val"
 addUserKnob {26 ""}
 addUserKnob {26 email l "" +STARTLINE T "<b><font color=\"MediumSeaGreen\">Animation and Curves v2.2</font></b><br>\n<font size=“1”><i>by Andrea Geremia</i><br>\n<br>\nandrea.geremia89@gmail.com<br>\nwww.andreageremia.it</font>"}
 addUserKnob {22 Tutorial l "<b><font color=\"MediumSeaGreen\">Tutorial" -STARTLINE T "nuke.tcl('start', 'http://www.andreageremia.it/tutorial_animation_nuke.html')"}
 addUserKnob {20 newrange l "New Range"}
 addUserKnob {26 message l "" +STARTLINE T "<i>Normalize animation curves\nRemap a curve into a new min-max range, keeping the proportion"}
 addUserKnob {26 "" +STARTLINE}
 addUserKnob {7 input_range l "<font color=springgreen><i>input"}
 addUserKnob {26 original l "ORIGINAL RANGE"}
 addUserKnob {22 calc_min_max l "Calculate Min and Max" t "Drag and drop your input curve, then press this button. \nYou can calculate automatically the min and max value of the curve" T "first = nuke.Root().firstFrame()\nlast = nuke.Root().lastFrame()\n\nframeRange = str(first) + \"-\" + str(last)\n\n\nret = nuke.getFramesAndViews('insert frame range', frameRange)\nif ret:\n    frame_range = ret\[0].split('-')\n    \n    min = max = nuke.thisNode()\['input_range'].getValueAt(int(frame_range\[0]))\n    \n    nuke.frame(int(frame_range\[0]))\n    \n    for i in range(int(frame_range\[0]), int(frame_range\[1])+1):\n        knob = nuke.thisNode()\['input_range'].getValueAt(i)\n        if (knob > max):\n            max = knob\n    \n        if (knob < min):\n            min = knob\n    \n    \n    nuke.thisNode()\['min_old'].setValue(min)\n    nuke.thisNode()\['max_old'].setValue(max)" +STARTLINE}
 addUserKnob {7 min_old l min}
 min_old -5
 addUserKnob {7 max_old l max}
 max_old 6
 addUserKnob {26 new l "NEW RANGE"}
 addUserKnob {7 min_new l min}
 addUserKnob {7 max_new l max}
 max_new 1
 addUserKnob {26 ""}
 addUserKnob {7 output_range l "<font color=orangered><i>output range" -STARTLINE}
 output_range {{min_new+(((max_new-min_new)/(max_old-min_old))*(input_range-min_old))}}
 addUserKnob {1 expression_range l "<font color=darkcyan>Expression"}
 expression_range min_new+(((max_new-min_new)/(max_old-min_old))*(input-min_old))
 addUserKnob {22 generate l Generate -STARTLINE T "nk = nuke.thisNode()\nnk.knob('expression_range').setValue(\"min_new+(((max_new-min_new)/(max_old-min_old))*(input-min_old))\")"}
 addUserKnob {20 smooth_curve l "Smooth Curves"}
 addUserKnob {26 message_2 l "" +STARTLINE T "<i>Drag and drop your curve and apply the smooth."}
 addUserKnob {26 "" +STARTLINE}
 addUserKnob {14 input_smooth l "<font color=springgreen><i>input" R 0 100}
 addUserKnob {26 ""}
 addUserKnob {14 smooth l Smooth R 0 100}
 smooth 2
 addUserKnob {4 smooth_type l Type M {low high "" ""}}
 smooth_type high
 addUserKnob {26 ""}
 addUserKnob {14 output_smooth l "<font color=orangered><i>output smooth" R 0 100}
 output_smooth {{"smooth_type==0?input_smooth.w.integrate(frame-1, frame+1) / (2*smooth.w):input_smooth.w.integrate(frame-smooth.w, frame+smooth.w) / (2*smooth.w)"}}
 addUserKnob {1 expression_smooth l "<font color=darkcyan>Expression"}
 expression_smooth "input.x.integrate(frame-smooth, frame+smooth) / (2*smooth)"
 addUserKnob {22 generate_smooth l Generate -STARTLINE T "nk = nuke.thisNode()\nnk.knob('expression_smooth').setValue(\"input.x.integrate(frame-smooth, frame+smooth) / (2*smooth)\")"}
 addUserKnob {20 modify l "Modify Curves"}
 addUserKnob {26 message_5 l "" +STARTLINE T "<i>Change size, translation or offset of your curve"}
 addUserKnob {26 "" +STARTLINE}
 addUserKnob {14 input_modify l "<font color=springgreen><i>input" R 0 100}
 addUserKnob {26 ""}
 addUserKnob {6 active_translate l "" +STARTLINE +STARTLINE}
 addUserKnob {26 position l TRANSLATE -STARTLINE T " "}
 addUserKnob {14 translate R 0 100}
 translate 1
 addUserKnob {26 ""}
 addUserKnob {6 active_scale l "" +STARTLINE +STARTLINE}
 addUserKnob {26 scale l SCALE -STARTLINE T " "}
 addUserKnob {14 scale_1 l scale R 0 100}
 scale_1 1
 addUserKnob {26 ""}
 addUserKnob {6 active_time l "" +STARTLINE +STARTLINE}
 addUserKnob {26 time l TIME -STARTLINE T " "}
 addUserKnob {3 delay l "Time offset"}
 delay 1
 addUserKnob {26 frames -STARTLINE T " "}
 addUserKnob {26 ""}
 addUserKnob {14 output_modify l "<font color=orangered><i>output modify" R 0 100}
 output_modify {{input_modify}}
 addUserKnob {1 expression_modify l "<font color=darkcyan>Expression"}
 expression_modify input
 addUserKnob {20 Fade}
 addUserKnob {26 fade_message l "" +STARTLINE T "<i>Create the fade/dissolve from start frame till end frame. \nYou can animate mix or another value from 0-1 or 1-0"}
 addUserKnob {26 "" +STARTLINE}
 addUserKnob {4 fade_type l Type M {Linear "Slow-in Slow-out" "Slow-in Linear-out" "Linear-in Slow-Out"}}
 fade_type "Slow-in Slow-out"
 addUserKnob {4 fade_dissolve l "fade from" M {"0 to 1" "1 to 0"}}
 fade_dissolve "1 to 0"
 addUserKnob {26 ""}
 addUserKnob {26 fade_message_1 l "" +STARTLINE T "<b>Start frame has to be less than End frame"}
 addUserKnob {3 fadeStart l "start Frame"}
 addUserKnob {3 fadeEnd l "end Frame"}
 fadeEnd 5
 addUserKnob {26 ""}
 addUserKnob {7 out_fade l "<font color=orangered><i>output fade"}
 out_fade {{"1-((sin(clamp(((frame-fadeStart)*pi)/(fadeEnd-fadeStart) - pi/2, -pi/2, pi/2))+1) /2)"}}
 addUserKnob {1 expression_fade l "<font color=darkcyan>Expression"}
 expression_fade "1-((sin(clamp(((frame-fadeStart)*pi)/(fadeEnd-fadeStart) - pi/2, -pi/2, pi/2))+1) /2)"
 addUserKnob {20 reference_frame l "Ref frame"}
 addUserKnob {26 message_1 l "" +STARTLINE T "<i>Change reference frame of your curve.\nSet the input equal to 0 in the reference frame"}
 addUserKnob {26 "" +STARTLINE}
 addUserKnob {7 input_ref l "<font color=springgreen><i>input"}
 addUserKnob {3 ref_frame l "Reference frame"}
 ref_frame 100
 addUserKnob {22 set_frame l "set current to frame" -STARTLINE T "nk = nuke.thisNode()\nnk.knob('ref_frame').setValue(nuke.frame())"}
 addUserKnob {26 ""}
 addUserKnob {7 output_ref l "<font color=orangered><i>output ref"}
 output_ref {{"input_ref - input_ref(ref_frame)"}}
 addUserKnob {1 expression_ref l "<font color=darkcyan>Expression"}
 expression_ref "input - input(frame)"
 addUserKnob {22 generate_3 l Generate -STARTLINE T "nk = nuke.thisNode()\nnk.knob('expression_ref').setValue(\"input - input(frame)\")"}
 addUserKnob {20 percentage l Percentage}
 addUserKnob {26 message_4 l "" +STARTLINE T "<i>Increase or reduce the curve with %"}
 addUserKnob {26 "" +STARTLINE}
 addUserKnob {7 input_percentage l "<font color=springgreen><i>input"}
 addUserKnob {4 operation M {increase reduce "" "" ""}}
 addUserKnob {3 percentage_1 l "       "}
 percentage_1 10
 addUserKnob {26 percentage_2 l % -STARTLINE}
 addUserKnob {26 ""}
 addUserKnob {7 output_percentage l "<font color=orangered><i>output percentage"}
 output_percentage {{operation==0?input_percentage+(input_percentage*percentage_1)/100:input_percentage-(input_percentage*percentage_1)/100}}
 addUserKnob {1 expression_percentage l "<font color=darkcyan>Expression" t "nk = nuke.thisNode()\nnk.knob('expression_percentage').setValue(\"input+(input*percentage)/100\")"}
 expression_percentage input+(input*percentage)/100
 addUserKnob {22 generate_1 l Generate -STARTLINE T "nk = nuke.thisNode()\nnk.knob('expression_percentage').setValue(\"input+(input*percentage)/100\")"}
 addUserKnob {20 average_1 l Average}
 addUserKnob {26 message_3 l "" +STARTLINE T "<i>Find the average number of the curve values"}
 addUserKnob {26 "" +STARTLINE}
 addUserKnob {7 input_average l "<font color=springgreen><i>input"}
 addUserKnob {3 frame_in l "frame range"}
 frame_in 1
 addUserKnob {3 frame_out l "" -STARTLINE}
 frame_out 100
 addUserKnob {26 ""}
 addUserKnob {7 average l "<font color=orangered><i>average"}
 average {{"input_average.integrate(frame_in, frame_out)/(frame_out-frame_in)"}}
 addUserKnob {1 expression_average l "<font color=darkcyan>Expression"}
 expression_average "input.integrate(frame_in, frame_out)/(frame_out-frame_in)"
 addUserKnob {22 generate_2 l Generate -STARTLINE T "nk = nuke.thisNode()\nnk.knob('expression_average').setValue(\"input.integrate(frame_in, frame_out)/(frame_out-frame_in)\")"}
}
 Output {
  inputs 0
  name Output1
  xpos 0
  ypos 300
 }
end_group


================================================
FILE: NukeSurvivalToolkit/gizmos/NST_AntiAliasingFilter.gizmo
================================================
Group {
 name AntialiasingFilter
 inputs 2
 tile_color 0xc17a4aff
 label "(\[value antialiasing])"
 note_font "Verdana Bold"
 addUserKnob {20 Antialiasing}
 addUserKnob {41 channels T Matrix3.channels}
 addUserKnob {26 ""}
 addUserKnob {4 antialiasing t "Select which filter you want to apply: you have 3 intensity for the antialiasing filter and other 3 for to tweak the aliasing and get the image sharper" M {"- aliasing high" "- aliasing medium" "- aliasing low" none "+ antialiasing low" "+ antialiasing medium" "+ antialiasing high" ""}}
 antialiasing none
 addUserKnob {6 blackClamp l "black clamp" t "Aliasing filter can give you negative values" +STARTLINE}
 blackClamp true
 addUserKnob {6 whiteClamp l "white clamp" t "Aliasing filter can give you values over 1 in the alpha channel" -STARTLINE}
 addUserKnob {6 normalize l INVISIBLE -STARTLINE +INVISIBLE}
 normalize true
 addUserKnob {26 ""}
 addUserKnob {41 maskChannel l "mask channel" T Keymix1.maskChannel}
 addUserKnob {41 invertMask l invert -STARTLINE T Keymix1.invertMask}
 addUserKnob {26 ""}
 addUserKnob {41 mix T Keymix1.mix}
 addUserKnob {26 "" +STARTLINE}
 addUserKnob {26 email l "" +STARTLINE T "<b><font color='SandyBrown'>Antialiasing filter  v2.0</font></b><br>\n<font size=“1”><i>by Andrea Geremia</i><br>\n<br>\nandrea.geremia89@gmail.com<br>\nwww.andreageremia.it</font> "}
}
 Reformat {
  inputs 0
  type "to box"
  box_width 10
  box_height 10
  box_fixed true
  name Reformat1
  xpos 207
  ypos -40
 }
 Shuffle {
  alpha white
  name Shuffle1
  xpos 207
  ypos 40
 }
 Input {
  inputs 0
  name mask
  xpos 55
  ypos -187
  number 1
 }
 Switch {
  inputs 2
  which {{"!\[exists parent.input1]"}}
  name Switch3
  xpos 55
  ypos 40
 }
 Dot {
  name Dot8
  xpos 88
  ypos 432
 }
 Input {
  inputs 0
  name src
  xpos -1152
  ypos -390
 }
set N66a8cd60 [stack 0]
 Dot {
  name Dot3
  xpos -1119
  ypos -180
 }
set N7f720840 [stack 0]
 Dot {
  name Dot9
  xpos -1005
  ypos -180
 }
set N66ce7a80 [stack 0]
 Dot {
  name Dot10
  xpos -858
  ypos -180
 }
set N66ce9ee0 [stack 0]
 Dot {
  name Dot4
  xpos -623
  ypos -180
 }
 Matrix {
  channels {{{parent.Matrix3.channels}}}
  matrix {
      {1 1 1}
      {1 1 1}
      {1 1 1}
    }
  normalize true
  name Matrix8
  label "ANTIALIASING HIGH"
  xpos -656
  ypos -34
 }
push $N66ce9ee0
 Matrix {
  channels {{{parent.Matrix3.channels}}}
  matrix {
      {1 2 1}
      {2 4 2}
      {1 2 1}
    }
  normalize true
  name Matrix5
  label "ANTIALIASING MEDIUM"
  xpos -891
  ypos -24
 }
push $N66ce7a80
 Matrix {
  channels {{{parent.Matrix3.channels}}}
  matrix {
      {0 1 0}
      {1 2 1}
      {0 1 0}
    }
  normalize true
  name Matrix6
  label "ANTIALIASING LOW"
  xpos -1038
  ypos -26
 }
push $N7f720840
push $N7f720840
 Dot {
  name Dot12
  xpos -1309
  ypos -180
 }
set N66ce0a50 [stack 0]
 Matrix {
  channels {{{parent.Matrix3.channels}}}
  matrix {
      {0 -0.5 0}
      {-0.5 3 -0.5}
      {0 -0.5 0}
    }
  normalize {{parent.normalize}}
  name Matrix10
  label "ALIASING LOW"
  xpos -1342
  ypos -65
 }
push $N66ce0a50
 Dot {
  name Dot5
  xpos -1464
  ypos -180
 }
set N66cc8b70 [stack 0]
 Matrix {
  channels {{{parent.Matrix3.channels}}}
  matrix {
      {0 -1 0}
      {-1 5 -1}
      {0 -1 0}
    }
  normalize true
  name Matrix7
  label "ALIASING MEDIUM"
  xpos -1497
  ypos -59
 }
push $N66cc8b70
 Dot {
  name Dot13
  xpos -1699
  ypos -180
 }
 Matrix {
  channels {{{parent.Matrix3.channels}}}
  matrix {
      {-1 -1 -1}
      {-1 9 -1}
      {-1 -1 -1}
    }
  normalize {{parent.normalize}}
  name Matrix4
  label "ALIASING HIGH"
  xpos -1732
  ypos -58
 }
 Switch {
  inputs 7
  which {{parent.antialiasing}}
  name Switch1
  xpos -1152
  ypos 244
 }
 Clamp {
  channels {{{parent.Matrix3.channels}}}
  minimum_enable {{parent.blackClamp}}
  maximum_enable {{parent.whiteClamp}}
  name Clamp1
  xpos -1152
  ypos 323
 }
 Dot {
  name Dot2
  xpos -1119
  ypos 432
 }
push $N66a8cd60
 Dot {
  name Dot1
  xpos -234
  ypos -388
 }
 Keymix {
  inputs 3
  name Keymix1
  xpos -267
  ypos 426
 }
 Output {
  name Output1
  xpos -267
  ypos 516
 }
 StickyNote {
  inputs 0
  name StickyNote2
  label "<b>sharp        ."
  note_font_size 20
  xpos -1486
  ypos -239
 }
 StickyNote {
  inputs 0
  name StickyNote1
  label "<b>antialiasing        ."
  note_font_size 20
  xpos -925
  ypos -226
 }
 Matrix {
  inputs 0
  channels rgba
  matrix {
      {0 0 0}
      {0 1 0}
      {0 0 0}
    }
  name Matrix3
  xpos -1936
  ypos -79
 }
end_group


================================================
FILE: NukeSurvivalToolkit/gizmos/NST_AutoCropTool.gizmo
================================================
Group {
 name AutoCropTool
 tile_color 0xa57aaaff
 note_font "Bitstream Vera Sans Bold"
 note_font_color 0xffffffff
 selected true
 addUserKnob {20 AutoCropTool}
 addUserKnob {41 channels l "Channels to Analyse" T CurveTool.channels}
 addUserKnob {26 ""}
 addUserKnob {26 preReformat l "@b; Pre-Reformat Scale" T " "}
 addUserKnob {41 scale l "" -STARTLINE T Reformat1.scale}
 addUserKnob {22 go l Go! T "import time\nn = nuke.thisNode()\n#Define this node\n\nct1 = nuke.toNode(\"CurveTool\")\n# Define curveTool nodes\n\nfirst_frame = int(nuke.Root()\['first_frame'].getValue())\nlast_frame = int(nuke.Root()\['last_frame'].getValue())\n# Grab first and last frame from root\n\np = nuke.Panel(\"Execute on FrameRange\")\np.addSingleLineInput('First Frame', first_frame)\np.addSingleLineInput('Last Frame', last_frame)\np.addSingleLineInput('Increment', 1)\nif p.show():\n    \n    # Create user input panel\n    \n    ff = int(p.value(\"First Frame\"))\n    lf = int(p.value(\"Last Frame\"))\n    i = int(p.value(\"Increment\"))\n    # Define first, last, increment from user input panel\n    \n    with n:\n        \n        ct1\[\"autocropdata\"].clearAnimated()\n        # Clear any intensitydata from all CurveTool nodes\n    \n        def executeCT(first,last,inc):\n            runMe = True\n            while runMe == True:\n                nuke.execute(ct1,first,last,inc)\n                stop_event.set()\n                runMe = False\n                print('CurveTools done')\n                break\n            # Define CurveTool execution function\n    \n    \n        global stop_event \n        stop_event = threading.Event()\n        threading.Thread(target=executeCT, kwargs=dict(first=ff,last=lf,inc=i) ).start() \n        while not stop_event.is_set():\n            time.sleep(0.1)\n        # run CurveTools with threading" +STARTLINE}
 addUserKnob {26 adjustbbox l "@b;Adjust Final BBox"}
 addUserKnob {6 blackOutside l BlackOutside +STARTLINE}
 addUserKnob {7 addPix l "Add Pixels" R 0 100}
 addPix 20
 addUserKnob {20 outbbox2 l "Output BBox Data" n 1}
 outbbox2 0
 addUserKnob {41 box T CropBBox_v02_.box}
 addUserKnob {41 bboxCenter l "bbox Center" T CropBBox_v02_.bboxCenter}
 addUserKnob {20 endGroup n -1}
 addUserKnob {20 Info}
 addUserKnob {26 creator l Creator: T "<big><b>Tony Lyons"}
 addUserKnob {26 desc l Name: T AutoCropTool}
 addUserKnob {26 ver l Version: T v03}
}
 Input {
  inputs 0
  name Input1
  xpos -489
  ypos 342
 }
 Dot {
  name Dot159
  xpos -455
  ypos 404
 }
set N1f815980 [stack 0]
 Reformat {
  type scale
  scale 0.05
  pbb true
  name Reformat1
  xpos -629
  ypos 400
 }
set N1f864460 [stack 0]
 CurveTool {
  operation "Auto Crop"
  channels alpha
  ROI {{"min(bboxSize1.Crop6.box.x, bboxSize2.Crop6.box.x)"} {"min(bboxSize1.Crop6.box.y, bboxSize2.Crop6.box.y)"} {"max(bboxSize1.Crop6.box.r, bboxSize2.Crop6.box.r)"} {"max(bboxSize1.Crop6.box.t, bboxSize2.Crop6.box.t)"}}
  autocropdata {{curve} {curve} {curve} {curve}}
  intensitydata {0 0 0 0}
  name CurveTool
  xpos -629
  ypos 496
 }
 Crop {
  box {{parent.CurveTool.autocropdata} {parent.CurveTool.autocropdata} {"parent.CurveTool.autocropdata.r == 0 ? 1 : parent.CurveTool.autocropdata.r"} {"parent.CurveTool.autocropdata.t == 0 ? 1 : parent.CurveTool.autocropdata.t"}}
  name Crop29
  xpos -629
  ypos 534
  addUserKnob {20 User}
  addUserKnob {22 cropToBbox l "Crop to Bounding Box" -STARTLINE T codeBBox()}
  addUserKnob {22 cropToBbox_1 l "Crop to Bounding Box" -STARTLINE T codeBBox()}
  addUserKnob {22 cropToBbox_2 l "Crop to Bounding Box" -STARTLINE T codeBBox()}
 }
 Reformat {
  type scale
  scale {{1/parent.Reformat1.scale}}
  pbb true
  name Reformat6
  xpos -629
  ypos 560
 }
 Group {
  name CropBBox_v02_
  tile_color 0xa57aaaff
  xpos -629
  ypos 586
  lock_connections {{curve x1000 0}}
  addUserKnob {20 User}
  addUserKnob {26 info l "" +STARTLINE T "crop node with width/height set to the inputs width/height, with black outside checked off"}
  addUserKnob {4 type l Type M {"To Format" "To BBox"}}
  type "To BBox"
  addUserKnob {41 intersect T Crop6.intersect}
  addUserKnob {6 blackOutside l "Black Outside" -STARTLINE}
  addUserKnob {20 inputBbox n 1}
  addUserKnob {41 box T Crop6.box}
  addUserKnob {14 bboxCenter l "bbox Center" R 0 100}
  bboxCenter {{"(this.Crop6.box.r-this.Crop6.box.x)/2 + this.Crop6.box.x"} {"(this.Crop6.box.t-this.Crop6.box.y)/2 + this.Crop6.box.y"}}
  addUserKnob {20 endGroup n -1}
 }
  Input {
   inputs 0
   name Input1
   xpos 261
   ypos 388
  }
  Crop {
   box {{"type == 0 ? 0 : input.bbox.x"} {"type == 0 ? 0 : input.bbox.y"} {"type == 0 ? input.width : input.bbox.r"} {"type == 0 ? input.height : input.bbox.t"}}
   crop {{parent.blackOutside}}
   name Crop6
   xpos 261
   ypos 466
   addUserKnob {20 User}
   addUserKnob {22 cropToBbox l "Crop to Bounding Box" -STARTLINE T codeBBox()}
   addUserKnob {22 cropToBbox_1 l "Crop to Bounding Box" -STARTLINE T codeBBox()}
   addUserKnob {22 cropToBbox_2 l "Crop to Bounding Box" -STARTLINE T codeBBox()}
  }
  Output {
   name Output1
   xpos 261
   ypos 583
  }
 end_group
 AdjBBox {
  numpixels {{parent.addPix}}
  name AdjBBox6
  xpos -629
  ypos 612
 }
push $N1f815980
 CopyBBox {
  inputs 2
  name CopyBBox13
  xpos -489
  ypos 612
 }
 BlackOutside {
  name BlackOutside1
  xpos -489
  ypos 636
  disable {{!parent.blackOutside}}
 }
 Output {
  name Output1
  xpos -489
  ypos 712
 }
push $N1f864460
 Group {
  name bboxSize1
  tile_color 0xa57aaaff
  xpos -780
  ypos 400
  lock_connections {{curve x1000 0}}
  addUserKnob {20 User}
  addUserKnob {26 info l "" +STARTLINE T "crop node with width/height set to the inputs width/height, with black outside checked off"}
  addUserKnob {4 type l Type M {"To Format" "To BBox"}}
  addUserKnob {41 intersect T Crop6.intersect}
  addUserKnob {6 blackOutside l "Black Outside" -STARTLINE}
  addUserKnob {20 inputBbox n 1}
  addUserKnob {41 box T Crop6.box}
  addUserKnob {14 bboxCenter l "bbox Center" R 0 100}
  bboxCenter {{"(this.Crop6.box.r-this.Crop6.box.x)/2 + this.Crop6.box.x"} {"(this.Crop6.box.t-this.Crop6.box.y)/2 + this.Crop6.box.y"}}
  addUserKnob {20 endGroup n -1}
 }
  Input {
   inputs 0
   name Input1
   xpos 261
   ypos 388
  }
  Crop {
   box {{"type == 0 ? 0 : input.bbox.x"} {"type == 0 ? 0 : input.bbox.y"} {"type == 0 ? input.width : input.bbox.r"} {"type == 0 ? input.height : input.bbox.t"}}
   intersect true
   crop {{parent.blackOutside}}
   name Crop6
   xpos 261
   ypos 466
   addUserKnob {20 User}
   addUserKnob {22 cropToBbox l "Crop to Bounding Box" -STARTLINE T codeBBox()}
   addUserKnob {22 cropToBbox_1 l "Crop to Bounding Box" -STARTLINE T codeBBox()}
   addUserKnob {22 cropToBbox_2 l "Crop to Bounding Box" -STARTLINE T codeBBox()}
  }
  Output {
   name Output1
   xpos 261
   ypos 583
  }
 end_group
push $N1f864460
 Group {
  name bboxSize2
  tile_color 0xa57aaaff
  xpos -763
  ypos 501
  lock_connections {{curve x1000 0}}
  addUserKnob {20 User}
  addUserKnob {26 info l "" +STARTLINE T "crop node with width/height set to the inputs width/height, with black outside checked off"}
  addUserKnob {4 type l Type M {"To Format" "To BBox"}}
  type "To BBox"
  addUserKnob {41 intersect T Crop6.intersect}
  addUserKnob {6 blackOutside l "Black Outside" -STARTLINE}
  addUserKnob {20 inputBbox n 1}
  addUserKnob {20 endGroup n -1}
 }
  Input {
   inputs 0
   name Input1
   xpos 261
   ypos 388
  }
  Crop {
   box {{"type == 0 ? 0 : input.bbox.x"} {"type == 0 ? 0 : input.bbox.y"} {"type == 0 ? input.width : input.bbox.r"} {"type == 0 ? input.height : input.bbox.t"}}
   intersect true
   crop {{parent.blackOutside}}
   name Crop6
   xpos 261
   ypos 466
   addUserKnob {20 User}
   addUserKnob {22 cropToBbox l "Crop to Bounding Box" -STARTLINE T codeBBox()}
   addUserKnob {22 cropToBbox_1 l "Crop to Bounding Box" -STARTLINE T codeBBox()}
   addUserKnob {22 cropToBbox_2 l "Crop to Bounding Box" -STARTLINE T codeBBox()}
  }
  Output {
   name Output1
   xpos 261
   ypos 583
  }
 end_group
end_group


================================================
FILE: NukeSurvivalToolkit/gizmos/NST_AutoFlare2.gizmo
================================================
Group {
 name AutoFlare
 selected true
 lock_connections true
 addUserKnob {20 User l Controls}
 addUserKnob {41 effectOnly l "effect only" T _INPUT_CTRL.effectOnly}
 addUserKnob {41 viewSelectedHighlights l "view highlights selection" T _INPUT_CTRL.viewSelectedHighlights}
 addUserKnob {41 brightspot T _INPUT_CTRL.brightspot}
 addUserKnob {41 threshold T _INPUT_CTRL.threshold}
 addUserKnob {41 gamma T _INPUT_CTRL.gamma}
 addUserKnob {41 clampBright l "clamp to brightspot" T _INPUT_CTRL.clampBright}
 addUserKnob {41 quality T _INPUT_CTRL.quality}
 addUserKnob {26 ""}
 addUserKnob {41 overallMult l "overall mult" T _INPUT_CTRL.overallMult}
 addUserKnob {41 overallLensScale l "overall lens scale" T _INPUT_CTRL.overallLensScale}
 addUserKnob {41 overallLensDistance l "overall lens distance" T _INPUT_CTRL.overallLensDistance}
 addUserKnob {41 overallSaturation l "overall saturation" T _INPUT_CTRL.overallSaturation}
 addUserKnob {41 sourceCol l "source color" T _INPUT_CTRL.sourceCol}
 addUserKnob {41 sourceSat l "source sat" T _INPUT_CTRL.sourceSat}
 addUserKnob {26 ""}
 addUserKnob {41 overallGrainOpacity l "overall grain opacity" T _INPUT_CTRL.overallGrainOpacity}
 addUserKnob {41 overallGrainSizeMult l "grain size mult" T _INPUT_CTRL.overallGrainSizeMult}
 addUserKnob {41 overallGrainGainMult l "grain gain mult" T _INPUT_CTRL.overallGrainGainMult}
 addUserKnob {26 ""}
 addUserKnob {41 reflectionsOpacity l "reflections opacity" T _INPUT_CTRL.reflectionsOpacity}
 addUserKnob {41 reflectionsRotOffset l "reflections rot offset" T _INPUT_CTRL.reflectionsRotOffset}
 addUserKnob {41 reflectionsBlurAdd l "reflections add blur" T _INPUT_CTRL.reflectionsBlurAdd}
 addUserKnob {41 reflectionsWhitepointMult l "refl whitepoint mult" T _INPUT_CTRL.reflectionsWhitepointMult}
 addUserKnob {41 reflectionsGammaMult l "refl gamma mult" T _INPUT_CTRL.reflectionsGammaMult}
 addUserKnob {26 ""}
 addUserKnob {41 vignetteActive l "vignette source" T _INPUT_CTRL.vignetteActive}
 addUserKnob {41 vignetteScale l scale T _INPUT_CTRL.vignetteScale}
 addUserKnob {41 vignetteDarkness l darkness T _INPUT_CTRL.vignetteDarkness}
 addUserKnob {20 Presets}
 addUserKnob {41 preset_01 l "Pink on Blue" T _INPUT_CTRL.preset_01}
 addUserKnob {41 preset_02 l "Fat Orange" T _INPUT_CTRL.preset_02}
 addUserKnob {41 preset_03 l "Classic Orange Blue" T _INPUT_CTRL.preset_03}
 addUserKnob {41 preset_04 l "Giant Colorful" T _INPUT_CTRL.preset_04}
 addUserKnob {41 preset_05 l "Thin and Wide" T _INPUT_CTRL.preset_05}
 addUserKnob {41 preset_06 l "Hexa Green Orange" T _INPUT_CTRL.preset_06}
 addUserKnob {20 Lenses}
 addUserKnob {41 showNumbers l "show numbers on lenses" T _INPUT_CTRL.showNumbers}
 addUserKnob {26 ""}
 addUserKnob {20 Lens1GRP l "lens 01" n 1}
 Lens1GRP 0
 addUserKnob {41 lens1Active l active T _INPUT_CTRL.lens1Active}
 addUserKnob {41 lens1Size l size T _INPUT_CTRL.lens1Size}
 addUserKnob {41 lens1Col l color T _INPUT_CTRL.lens1Col}
 addUserKnob {41 lens1Blur l blur T _INPUT_CTRL.lens1Blur}
 addUserKnob {41 lens1AxisPos l "axis pos" T _INPUT_CTRL.lens1AxisPos}
 addUserKnob {41 lens1Polygon l polygon T _INPUT_CTRL.lens1Polygon}
 addUserKnob {41 lens1Diaphragm l diaphragm T _INPUT_CTRL.lens1Diaphragm}
 addUserKnob {41 lens1DiaphRot l "diaph rotation" T _INPUT_CTRL.lens1DiaphRot}
 addUserKnob {41 lens1grainOpacity l "grain opacity" T _INPUT_CTRL.lens1grainOpacity}
 addUserKnob {41 lens1grainSize l "grain size" T _INPUT_CTRL.lens1grainSize}
 addUserKnob {41 lens1grainGain l "grain gain" T _INPUT_CTRL.lens1grainGain}
 addUserKnob {41 lens1reflectionOpacity l "refl opacity" T _INPUT_CTRL.lens1reflectionOpacity}
 addUserKnob {41 lens1reflectionRotation l "refl rotation" T _INPUT_CTRL.lens1reflectionRotation}
 addUserKnob {41 lens1reflWhitepoint l "refl whitepoint" T _INPUT_CTRL.lens1reflWhitepoint}
 addUserKnob {41 lens1reflectionGamma l "refl gamma" T _INPUT_CTRL.lens1reflectionGamma}
 addUserKnob {41 lens1reflectionBlur l "refl blur" T _INPUT_CTRL.lens1reflectionBlur}
 addUserKnob {20 endGroup n -1}
 addUserKnob {26 ""}
 addUserKnob {20 lens2GRP l "lens 02" n 1}
 lens2GRP 0
 addUserKnob {41 lens2Active l active T _INPUT_CTRL.lens2Active}
 addUserKnob {41 lens2Size l size T _INPUT_CTRL.lens2Size}
 addUserKnob {41 lens2Col l color T _INPUT_CTRL.lens2Col}
 addUserKnob {41 lens2Blur l blur T _INPUT_CTRL.lens2Blur}
 addUserKnob {41 lens2AxisPos l "axis pos" T _INPUT_CTRL.lens2AxisPos}
 addUserKnob {41 lens2Polygon l polygon T _INPUT_CTRL.lens2Polygon}
 addUserKnob {41 lens2Diaphragm l diaphragm T _INPUT_CTRL.lens2Diaphragm}
 addUserKnob {41 lens2DiaphRot l "diaph rotation" T _INPUT_CTRL.lens2DiaphRot}
 addUserKnob {41 lens2grainOpacity l "grain opacity" T _INPUT_CTRL.lens2grainOpacity}
 addUserKnob {41 lens2grainSize l "grain size" T _INPUT_CTRL.lens2grainSize}
 addUserKnob {41 lens2grainGain l "grain gain" T _INPUT_CTRL.lens2grainGain}
 addUserKnob {41 lens2reflectionOpacity l "refl opacity" T _INPUT_CTRL.lens2reflectionOpacity}
 addUserKnob {41 lens2reflectionRotation l "refl rotation" T _INPUT_CTRL.lens2reflectionRotation}
 addUserKnob {41 lens2reflWhitepoint l "refl whitepoint" T _INPUT_CTRL.lens2reflWhitepoint}
 addUserKnob {41 lens2reflectionGamma l "refl gamma" T _INPUT_CTRL.lens2reflectionGamma}
 addUserKnob {41 lens2reflectionBlur l "refl blur" T _INPUT_CTRL.lens2reflectionBlur}
 addUserKnob {20 endGroup_1 l endGroup n -1}
 addUserKnob {26 ""}
 addUserKnob {20 lens3GRP l "lens 03" n 1}
 lens3GRP 0
 addUserKnob {41 lens3Active l active T _INPUT_CTRL.lens3Active}
 addUserKnob {41 lens3Size l size T _INPUT_CTRL.lens3Size}
 addUserKnob {41 lens3Col l color T _INPUT_CTRL.lens3Col}
 addUserKnob {41 lens3Blur l blur T _INPUT_CTRL.lens3Blur}
 addUserKnob {41 lens3AxisPos l "axis pos" T _INPUT_CTRL.lens3AxisPos}
 addUserKnob {41 lens3Polygon l polygon T _INPUT_CTRL.lens3Polygon}
 addUserKnob {41 lens3Diaphragm l diaphragm T _INPUT_CTRL.lens3Diaphragm}
 addUserKnob {41 lens3DiaphRot l "diaph rotation" T _INPUT_CTRL.lens3DiaphRot}
 addUserKnob {41 lens3grainOpacity l "grain opacity" T _INPUT_CTRL.lens3grainOpacity}
 addUserKnob {41 lens3grainSize l "grain size" T _INPUT_CTRL.lens3grainSize}
 addUserKnob {41 lens3grainGain l "grain gain" T _INPUT_CTRL.lens3grainGain}
 addUserKnob {41 lens3reflectionOpacity l "refl opacity" T _INPUT_CTRL.lens3reflectionOpacity}
 addUserKnob {41 lens3reflectionRotation l "refl rotation" T _INPUT_CTRL.lens3reflectionRotation}
 addUserKnob {41 lens3reflWhitepoint l "refl whitepoint" T _INPUT_CTRL.lens3reflWhitepoint}
 addUserKnob {41 lens3reflectionGamma l "refl gamma" T _INPUT_CTRL.lens3reflectionGamma}
 addUserKnob {41 lens3reflectionBlur l "refl blur" T _INPUT_CTRL.lens3reflectionBlur}
 addUserKnob {20 endGroup_2 l endGroup n -1}
 addUserKnob {26 ""}
 addUserKnob {20 lens4GRP l "lens 04" n 1}
 lens4GRP 0
 addUserKnob {41 lens4Active l active T _INPUT_CTRL.lens4Active}
 addUserKnob {41 lens4Size l size T _INPUT_CTRL.lens4Size}
 addUserKnob {41 lens4Col l color T _INPUT_CTRL.lens4Col}
 addUserKnob {41 lens4Blur l blur T _INPUT_CTRL.lens4Blur}
 addUserKnob {41 lens4AxisPos l "axis pos" T _INPUT_CTRL.lens4AxisPos}
 addUserKnob {41 lens4Polygon l polygon T _INPUT_CTRL.lens4Polygon}
 addUserKnob {41 lens4Diaphragm l diaphragm T _INPUT_CTRL.lens4Diaphragm}
 addUserKnob {41 lens4DiaphRot l "diaph rotation" T _INPUT_CTRL.lens4DiaphRot}
 addUserKnob {41 lens4grainOpacity l "grain opacity" T _INPUT_CTRL.lens4grainOpacity}
 addUserKnob {41 lens4grainSize l "grain size" T _INPUT_CTRL.lens4grainSize}
 addUserKnob {41 lens4grainGain l "grain gain" T _INPUT_CTRL.lens4grainGain}
 addUserKnob {41 lens4reflectionOpacity l "refl opacity" T _INPUT_CTRL.lens4reflectionOpacity}
 addUserKnob {41 lens4reflectionRotation l "refl rotation" T _INPUT_CTRL.lens4reflectionRotation}
 addUserKnob {41 lens4reflWhitepoint l "refl whitepoint" T _INPUT_CTRL.lens4reflWhitepoint}
 addUserKnob {41 lens4reflectionGamma l "refl gamma" T _INPUT_CTRL.lens4reflectionGamma}
 addUserKnob {41 lens4reflectionBlur l "refl blur" T _INPUT_CTRL.lens4reflectionBlur}
 addUserKnob {20 endGroup_3 l endGroup n -1}
 addUserKnob {26 ""}
 addUserKnob {20 lens5GRP l "lens 05" n 1}
 lens5GRP 0
 addUserKnob {41 lens5Active l active T _INPUT_CTRL.lens5Active}
 addUserKnob {41 lens5Size l size T _INPUT_CTRL.lens5Size}
 addUserKnob {41 lens5Col l color T _INPUT_CTRL.lens5Col}
 addUserKnob {41 lens5Blur l blur T _INPUT_CTRL.lens5Blur}
 addUserKnob {41 lens5AxisPos l "axis pos" T _INPUT_CTRL.lens5AxisPos}
 addUserKnob {41 lens5Polygon l polygon T _INPUT_CTRL.lens5Polygon}
 addUserKnob {41 lens5Diaphragm l diaphragm T _INPUT_CTRL.lens5Diaphragm}
 addUserKnob {41 lens5DiaphRot l "diaph rotation" T _INPUT_CTRL.lens5DiaphRot}
 addUserKnob {41 lens5grainOpacity l "grain opacity" T _INPUT_CTRL.lens5grainOpacity}
 addUserKnob {41 lens5grainSize l "grain size" T _INPUT_CTRL.lens5grainSize}
 addUserKnob {41 lens5grainGain l "grain gain" T _INPUT_CTRL.lens5grainGain}
 addUserKnob {41 lens5reflectionOpacity l "refl opacity" T _INPUT_CTRL.lens5reflectionOpacity}
 addUserKnob {41 lens5reflectionRotation l "refl rotation" T _INPUT_CTRL.lens5reflectionRotation}
 addUserKnob {41 lens5reflWhitepoint l "refl whitepoint" T _INPUT_CTRL.lens5reflWhitepoint}
 addUserKnob {41 lens5reflectionGamma l "refl gamma" T _INPUT_CTRL.lens5reflectionGamma}
 addUserKnob {41 lens5reflectionBlur l "refl blur" T _INPUT_CTRL.lens5reflectionBlur}
 addUserKnob {20 endGroup_4 l endGroup n -1}
 addUserKnob {26 ""}
 addUserKnob {20 lens6GRP l "lens 06" n 1}
 lens6GRP 0
 addUserKnob {41 lens6Active l active T _INPUT_CTRL.lens6Active}
 addUserKnob {41 lens6Size l size T _INPUT_CTRL.lens6Size}
 addUserKnob {41 lens6Col l color T _INPUT_CTRL.lens6Col}
 addUserKnob {41 lens6Blur l blur T _INPUT_CTRL.lens6Blur}
 addUserKnob {41 lens6AxisPos l "axis pos" T _INPUT_CTRL.lens6AxisPos}
 addUserKnob {41 lens6Polygon l polygon T _INPUT_CTRL.lens6Polygon}
 addUserKnob {41 lens6Diaphragm l diaphragm T _INPUT_CTRL.lens6Diaphragm}
 addUserKnob {41 lens6DiaphRot l "diaph rotation" T _INPUT_CTRL.lens6DiaphRot}
 addUserKnob {41 lens6grainOpacity l "grain opacity" T _INPUT_CTRL.lens6grainOpacity}
 addUserKnob {41 lens6grainSize l "grain size" T _INPUT_CTRL.lens6grainSize}
 addUserKnob {41 lens6grainGain l "grain gain" T _INPUT_CTRL.lens6grainGain}
 addUserKnob {41 lens6reflectionOpacity l "refl opacity" T _INPUT_CTRL.lens6reflectionOpacity}
 addUserKnob {41 lens6reflectionRotation l "refl rotation" T _INPUT_CTRL.lens6reflectionRotation}
 addUserKnob {41 lens6reflWhitepoint l "refl whitepoint" T _INPUT_CTRL.lens6reflWhitepoint}
 addUserKnob {41 lens6reflectionGamma l "refl gamma" T _INPUT_CTRL.lens6reflectionGamma}
 addUserKnob {41 lens6reflectionBlur l "refl blur" T _INPUT_CTRL.lens6reflectionBlur}
 addUserKnob {20 endGroup_5 l endGroup n -1}
 addUserKnob {26 ""}
 addUserKnob {20 lens7GRP l "lens 07" n 1}
 lens7GRP 0
 addUserKnob {41 lens7Active l active T _INPUT_CTRL.lens7Active}
 addUserKnob {41 lens7Size l size T _INPUT_CTRL.lens7Size}
 addUserKnob {41 lens7Col l color T _INPUT_CTRL.lens7Col}
 addUserKnob {41 lens7Blur l blur T _INPUT_CTRL.lens7Blur}
 addUserKnob {41 lens7AxisPos l "axis pos" T _INPUT_CTRL.lens7AxisPos}
 addUserKnob {41 lens7Polygon l polygon T _INPUT_CTRL.lens7Polygon}
 addUserKnob {41 lens7Diaphragm l diaphragm T _INPUT_CTRL.lens7Diaphragm}
 addUserKnob {41 lens7DiaphRot l "diaph rotation" T _INPUT_CTRL.lens7DiaphRot}
 addUserKnob {41 lens7grainOpacity l "grain opacity" T _INPUT_CTRL.lens7grainOpacity}
 addUserKnob {41 lens7grainSize l "grain size" T _INPUT_CTRL.lens7grainSize}
 addUserKnob {41 lens7grainGain l "grain gain" T _INPUT_CTRL.lens7grainGain}
 addUserKnob {41 lens7reflectionOpacity l "refl opacity" T _INPUT_CTRL.lens7reflectionOpacity}
 addUserKnob {41 lens7reflectionRotation l "refl rotation" T _INPUT_CTRL.lens7reflectionRotation}
 addUserKnob {41 lens7reflWhitepoint l "refl whitepoint" T _INPUT_CTRL.lens7reflWhitepoint}
 addUserKnob {41 lens7reflectionGamma l "refl gamma" T _INPUT_CTRL.lens7reflectionGamma}
 addUserKnob {41 lens7reflectionBlur l "refl blur" T _INPUT_CTRL.lens7reflectionBlur}
 addUserKnob {20 endGroup_6 l endGroup n -1}
 addUserKnob {26 ""}
 addUserKnob {20 lens8GRP l "lens 08" n 1}
 lens8GRP 0
 addUserKnob {41 lens8Active l active T _INPUT_CTRL.lens8Active}
 addUserKnob {41 lens8Size l size T _INPUT_CTRL.lens8Size}
 addUserKnob {41 lens8Col l color T _INPUT_CTRL.lens8Col}
 addUserKnob {41 lens8Blur l blur T _INPUT_CTRL.lens8Blur}
 addUserKnob {41 lens8AxisPos l "axis pos" T _INPUT_CTRL.lens8AxisPos}
 addUserKnob {41 lens8Polygon l polygon T _INPUT_CTRL.lens8Polygon}
 addUserKnob {41 lens8Diaphragm l diaphragm T _INPUT_CTRL.lens8Diaphragm}
 addUserKnob {41 lens8DiaphRot l "diaph rotation" T _INPUT_CTRL.lens8DiaphRot}
 addUserKnob {41 lens8grainOpacity l "grain opacity" T _INPUT_CTRL.lens8grainOpacity}
 addUserKnob {41 lens8grainSize l "grain size" T _INPUT_CTRL.lens8grainSize}
 addUserKnob {41 lens8grainGain l "grain gain" T _INPUT_CTRL.lens8grainGain}
 addUserKnob {41 lens8reflectionOpacity l "refl opacity" T _INPUT_CTRL.lens8reflectionOpacity}
 addUserKnob {41 lens8reflectionRotation l "refl rotation" T _INPUT_CTRL.lens8reflectionRotation}
 addUserKnob {41 lens8reflWhitepoint l "refl whitepoint" T _INPUT_CTRL.lens8reflWhitepoint}
 addUserKnob {41 lens8reflectionGamma l "refl gamma" T _INPUT_CTRL.lens8reflectionGamma}
 addUserKnob {41 lens8reflectionBlur l "refl blur" T _INPUT_CTRL.lens8reflectionBlur}
 addUserKnob {20 endGroup_7 l endGroup n -1}
 addUserKnob {26 ""}
 addUserKnob {20 lens9GRP l "lens 09" n 1}
 lens9GRP 0
 addUserKnob {41 lens9Active l active T _INPUT_CTRL.lens9Active}
 addUserKnob {41 lens9Size l size T _INPUT_CTRL.lens9Size}
 addUserKnob {41 lens9Col l color T _INPUT_CTRL.lens9Col}
 addUserKnob {41 lens9Blur l blur T _INPUT_CTRL.lens9Blur}
 addUserKnob {41 lens9AxisPos l "axis pos" T _INPUT_CTRL.lens9AxisPos}
 addUserKnob {41 lens9Polygon l polygon T _INPUT_CTRL.lens9Polygon}
 addUserKnob {41 lens9Diaphragm l diaphragm T _INPUT_CTRL.lens9Diaphragm}
 addUserKnob {41 lens9DiaphRot l "diaph rotation" T _INPUT_CTRL.lens9DiaphRot}
 addUserKnob {41 lens9grainOpacity l "grain opacity" T _INPUT_CTRL.lens9grainOpacity}
 addUserKnob {41 lens9grainSize l "grain size" T _INPUT_CTRL.lens9grainSize}
 addUserKnob {41 lens9grainGain l "grain gain" T _INPUT_CTRL.lens9grainGain}
 addUserKnob {41 lens9reflectionOpacity l "refl opacity" T _INPUT_CTRL.lens9reflectionOpacity}
 addUserKnob {41 lens9reflectionRotation l "refl rotation" T _INPUT_CTRL.lens9reflectionRotation}
 addUserKnob {41 lens9reflWhitepoint l "refl whitepoint" T _INPUT_CTRL.lens9reflWhitepoint}
 addUserKnob {41 lens9reflectionGamma l "refl gamma" T _INPUT_CTRL.lens9reflectionGamma}
 addUserKnob {41 lens9reflectionBlur l "refl blur" T _INPUT_CTRL.lens9reflectionBlur}
 addUserKnob {20 endGroup_8 l endGroup n -1}
 addUserKnob {26 ""}
 addUserKnob {20 lens10GRP l "lens 10" n 1}
 lens10GRP 0
 addUserKnob {41 lens10Active l active T _INPUT_CTRL.lens10Active}
 addUserKnob {41 lens10Size l size T _INPUT_CTRL.lens10Size}
 addUserKnob {41 lens10Col l color T _INPUT_CTRL.lens10Col}
 addUserKnob {41 lens10Blur l blur T _INPUT_CTRL.lens10Blur}
 addUserKnob {41 lens10AxisPos l "axis pos" T _INPUT_CTRL.lens10AxisPos}
 addUserKnob {41 lens10Polygon l polygon T _INPUT_CTRL.lens10Polygon}
 addUserKnob {41 lens10Diaphragm l diaphragm T _INPUT_CTRL.lens10Diaphragm}
 addUserKnob {41 lens10DiaphRot l "diaph rotation" T _INPUT_CTRL.lens10DiaphRot}
 addUserKnob {41 lens10grainOpacity l "grain opacity" T _INPUT_CTRL.lens10grainOpacity}
 addUserKnob {41 lens10grainSize l "grain size" T _INPUT_CTRL.lens10grainSize}
 addUserKnob {41 lens10grainGain l "grain gain" T _INPUT_CTRL.lens10grainGain}
 addUserKnob {41 lens10reflectionOpacity l "refl opacity" T _INPUT_CTRL.lens10reflectionOpacity}
 addUserKnob {41 lens10reflectionRotation l "refl rotation" T _INPUT_CTRL.lens10reflectionRotation}
 addUserKnob {41 lens10reflWhitepoint l "refl whitepoint" T _INPUT_CTRL.lens10reflWhitepoint}
 addUserKnob {41 lens10reflectionGamma l "refl gamma" T _INPUT_CTRL.lens10reflectionGamma}
 addUserKnob {41 lens10reflectionBlur l "refl blur" T _INPUT_CTRL.lens10reflectionBlur}
 addUserKnob {20 endGroup_9 l endGroup n -1}
 addUserKnob {26 ""}
 addUserKnob {20 lens11GRP l "lens 11" n 1}
 lens11GRP 0
 addUserKnob {41 lens11Active l active T _INPUT_CTRL.lens11Active}
 addUserKnob {41 lens11Size l size T _INPUT_CTRL.lens11Size}
 addUserKnob {41 lens11Col l color T _INPUT_CTRL.lens11Col}
 addUserKnob {41 lens11Blur l blur T _INPUT_CTRL.lens11Blur}
 addUserKnob {41 lens11AxisPos l "axis pos" T _INPUT_CTRL.lens11AxisPos}
 addUserKnob {41 lens11Polygon l polygon T _INPUT_CTRL.lens11Polygon}
 addUserKnob {41 lens11Diaphragm l diaphragm T _INPUT_CTRL.lens11Diaphragm}
 addUserKnob {41 lens11DiaphRot l "diaph rotation" T _INPUT_CTRL.lens11DiaphRot}
 addUserKnob {41 lens11grainOpacity l "grain opacity" T _INPUT_CTRL.lens11grainOpacity}
 addUserKnob {41 lens11grainSize l "grain size" T _INPUT_CTRL.lens11grainSize}
 addUserKnob {41 lens11grainGain l "grain gain" T _INPUT_CTRL.lens11grainGain}
 addUserKnob {41 lens11reflectionOpacity l "refl opacity" T _INPUT_CTRL.lens11reflectionOpacity}
 addUserKnob {41 lens11reflectionRotation l "refl rotation" T _INPUT_CTRL.lens11reflectionRotation}
 addUserKnob {41 lens11reflWhitepoint l "refl whitepoint" T _INPUT_CTRL.lens11reflWhitepoint}
 addUserKnob {41 lens11reflectionGamma l "refl gamma" T _INPUT_CTRL.lens11reflectionGamma}
 addUserKnob {41 lens11reflectionBlur l "refl blur" T _INPUT_CTRL.lens11reflectionBlur}
 addUserKnob {20 endGroup_10 l endGroup n -1}
 addUserKnob {26 ""}
 addUserKnob {20 lens12GRP l "lens 12" n 1}
 lens12GRP 0
 addUserKnob {41 lens12Active l active T _INPUT_CTRL.lens12Active}
 addUserKnob {41 lens12Size l size T _INPUT_CTRL.lens12Size}
 addUserKnob {41 lens12Col l color T _INPUT_CTRL.lens12Col}
 addUserKnob {41 lens12Blur l blur T _INPUT_CTRL.lens12Blur}
 addUserKnob {41 lens12AxisPos l "axis pos" T _INPUT_CTRL.lens12AxisPos}
 addUserKnob {41 lens12Polygon l polygon T _INPUT_CTRL.lens12Polygon}
 addUserKnob {41 lens12Diaphragm l diaphragm T _INPUT_CTRL.lens12Diaphragm}
 addUserKnob {41 lens12DiaphRot l "diaph rotation" T _INPUT_CTRL.lens12DiaphRot}
 addUserKnob {41 lens12grainOpacity l "grain opacity" T _INPUT_CTRL.lens12grainOpacity}
 addUserKnob {41 lens12grainSize l "grain size" T _INPUT_CTRL.lens12grainSize}
 addUserKnob {41 lens12grainGain l "grain gain" T _INPUT_CTRL.lens12grainGain}
 addUserKnob {41 lens12reflectionOpacity l "refl opacity" T _INPUT_CTRL.lens12reflectionOpacity}
 addUserKnob {41 lens12reflectionRotation l "refl rotation" T _INPUT_CTRL.lens12reflectionRotation}
 addUserKnob {41 lens12reflWhitepoint l "refl whitepoint" T _INPUT_CTRL.lens12reflWhitepoint}
 addUserKnob {41 lens12reflectionGamma l "refl gamma" T _INPUT_CTRL.lens12reflectionGamma}
 addUserKnob {41 lens12reflectionBlur l "refl blur" T _INPUT_CTRL.lens12reflectionBlur}
 addUserKnob {20 endGroup_11 l endGroup n -1}
 addUserKnob {26 ""}
 addUserKnob {20 len13GRP l "lens 13" n 1}
 len13GRP 0
 addUserKnob {41 lens13Active l active T _INPUT_CTRL.lens13Active}
 addUserKnob {41 lens13Size l size T _INPUT_CTRL.lens13Size}
 addUserKnob {41 lens13Col l color T _INPUT_CTRL.lens13Col}
 addUserKnob {41 lens13Blur l blur T _INPUT_CTRL.lens13Blur}
 addUserKnob {41 lens13AxisPos l "axis pos" T _INPUT_CTRL.lens13AxisPos}
 addUserKnob {41 lens13Polygon l polygon T _INPUT_CTRL.lens13Polygon}
 addUserKnob {41 lens13Diaphragm l diaphragm T _INPUT_CTRL.lens13Diaphragm}
 addUserKnob {41 lens13DiaphRot l "diaph rotation" T _INPUT_CTRL.lens13DiaphRot}
 addUserKnob {41 lens13grainOpacity l "grain opacity" T _INPUT_CTRL.lens13grainOpacity}
 addUserKnob {41 lens13grainSize l "grain size" T _INPUT_CTRL.lens13grainSize}
 addUserKnob {41 lens13grainGain l "grain gain" T _INPUT_CTRL.lens13grainGain}
 addUserKnob {41 lens13reflectionOpacity l "refl opacity" T _INPUT_CTRL.lens13reflectionOpacity}
 addUserKnob {41 lens13reflectionRotation l "refl rotation" T _INPUT_CTRL.lens13reflectionRotation}
 addUserKnob {41 lens13reflWhitepoint l "refl whitepoint" T _INPUT_CTRL.lens13reflWhitepoint}
 addUserKnob {41 lens13reflectionGamma l "refl gamma" T _INPUT_CTRL.lens13reflectionGamma}
 addUserKnob {41 lens13reflectionBlur l "refl blur" T _INPUT_CTRL.lens13reflectionBlur}
 addUserKnob {20 endGroup_12 l endGroup n -1}
 addUserKnob {26 ""}
 addUserKnob {20 lens14GRP l "lens 14" n 1}
 lens14GRP 0
 addUserKnob {41 lens14Active l active T _INPUT_CTRL.lens14Active}
 addUserKnob {41 lens14Size l size T _INPUT_CTRL.lens14Size}
 addUserKnob {41 lens14Col l color T _INPUT_CTRL.lens14Col}
 addUserKnob {41 lens14Blur l blur T _INPUT_CTRL.lens14Blur}
 addUserKnob {41 lens14AxisPos l "axis pos" T _INPUT_CTRL.lens14AxisPos}
 addUserKnob {41 lens14Polygon l polygon T _INPUT_CTRL.lens14Polygon}
 addUserKnob {41 lens14Diaphragm l diaphragm T _INPUT_CTRL.lens14Diaphragm}
 addUserKnob {41 lens14DiaphRot l "diaph rotation" T _INPUT_CTRL.lens14DiaphRot}
 addUserKnob {41 lens14grainOpacity l "grain opacity" T _INPUT_CTRL.lens14grainOpacity}
 addUserKnob {41 lens14grainSize l "grain size" T _INPUT_CTRL.lens14grainSize}
 addUserKnob {41 lens14grainGain l "grain gain" T _INPUT_CTRL.lens14grainGain}
 addUserKnob {41 lens14reflectionOpacity l "refl opacity" T _INPUT_CTRL.lens14reflectionOpacity}
 addUserKnob {41 lens14reflectionRotation l "refl rotation" T _INPUT_CTRL.lens14reflectionRotation}
 addUserKnob {41 lens14reflWhitepoint l "refl whitepoint" T _INPUT_CTRL.lens14reflWhitepoint}
 addUserKnob {41 lens14reflectionGamma l "refl gamma" T _INPUT_CTRL.lens14reflectionGamma}
 addUserKnob {41 lens14reflectionBlur l "refl blur" T _INPUT_CTRL.lens14reflectionBlur}
 addUserKnob {20 endGroup_13 l endGroup n -1}
 addUserKnob {26 ""}
 addUserKnob {20 lens15GRP l "lens 15" n 1}
 lens15GRP 0
 addUserKnob {41 lens15Active l active T _INPUT_CTRL.lens15Active}
 addUserKnob {41 lens15Size l size T _INPUT_CTRL.lens15Size}
 addUserKnob {41 lens15Col l color T _INPUT_CTRL.lens15Col}
 addUserKnob {41 lens15Blur l blur T _INPUT_CTRL.lens15Blur}
 addUserKnob {41 lens15AxisPos l "axis pos" T _INPUT_CTRL.lens15AxisPos}
 addUserKnob {41 lens15Polygon l polygon T _INPUT_CTRL.lens15Polygon}
 addUserKnob {41 lens15Diaphragm l diaphragm T _INPUT_CTRL.lens15Diaphragm}
 addUserKnob {41 lens15DiaphRot l "diaph rotation" T _INPUT_CTRL.lens15DiaphRot}
 addUserKnob {41 lens15grainOpacity l "grain opacity" T _INPUT_CTRL.lens15grainOpacity}
 addUserKnob {41 lens15grainSize l "grain size" T _INPUT_CTRL.lens15grainSize}
 addUserKnob {41 lens15grainGain l "grain gain" T _INPUT_CTRL.lens15grainGain}
 addUserKnob {41 lens15reflectionOpacity l "refl opacity" T _INPUT_CTRL.lens15reflectionOpacity}
 addUserKnob {41 lens15reflectionRotation l "refl rotation" T _INPUT_CTRL.lens15reflectionRotation}
 addUserKnob {41 lens15reflWhitepoint l "refl whitepoint" T _INPUT_CTRL.lens15reflWhitepoint}
 addUserKnob {41 lens15reflectionGamma l "refl gamma" T _INPUT_CTRL.lens15reflectionGamma}
 addUserKnob {41 lens15reflectionBlur l "refl blur" T _INPUT_CTRL.lens15reflectionBlur}
 addUserKnob {20 endGroup_14 l endGroup n -1}
 addUserKnob {26 ""}
 addUserKnob {20 lens16GRP l "lens 16" n 1}
 lens16GRP 0
 addUserKnob {41 lens16Active l active T _INPUT_CTRL.lens16Active}
 addUserKnob {41 lens16Size l size T _INPUT_CTRL.lens16Size}
 addUserKnob {41 lens16Col l color T _INPUT_CTRL.lens16Col}
 addUserKnob {41 lens16Blur l blur T _INPUT_CTRL.lens16Blur}
 addUserKnob {41 lens16AxisPos l "axis pos" T _INPUT_CTRL.lens16AxisPos}
 addUserKnob {41 lens16Polygon l polygon T _INPUT_CTRL.lens16Polygon}
 addUserKnob {41 lens16Diaphragm l diaphragm T _INPUT_CTRL.lens16Diaphragm}
 addUserKnob {41 lens16DiaphRot l "diaph rotation" T _INPUT_CTRL.lens16DiaphRot}
 addUserKnob {41 lens16grainOpacity l "grain opacity" T _INPUT_CTRL.lens16grainOpacity}
 addUserKnob {41 lens16grainSize l "grain size" T _INPUT_CTRL.lens16grainSize}
 addUserKnob {41 lens16grainGain l "grain gain" T _INPUT_CTRL.lens16grainGain}
 addUserKnob {41 lens16reflectionOpacity l "refl opacity" T _INPUT_CTRL.lens16reflectionOpacity}
 addUserKnob {41 lens16reflectionRotation l "refl rotation" T _INPUT_CTRL.lens16reflectionRotation}
 addUserKnob {41 lens16reflWhitepoint l "refl whitepoint" T _INPUT_CTRL.lens16reflWhitepoint}
 addUserKnob {41 lens16reflectionGamma l "refl gamma" T _INPUT_CTRL.lens16reflectionGamma}
 addUserKnob {41 lens16reflectionBlur l "refl blur" T _INPUT_CTRL.lens16reflectionBlur}
 addUserKnob {20 endGroup_15 l endGroup n -1}
 addUserKnob {26 ""}
 addUserKnob {20 lens17GRP l "lens 17" n 1}
 lens17GRP 0
 addUserKnob {41 lens17Active l active T _INPUT_CTRL.lens17Active}
 addUserKnob {41 lens17Size l size T _INPUT_CTRL.lens17Size}
 addUserKnob {41 lens17Col l color T _INPUT_CTRL.lens17Col}
 addUserKnob {41 lens17Blur l blur T _INPUT_CTRL.lens17Blur}
 addUserKnob {41 lens17AxisPos l "axis pos" T _INPUT_CTRL.lens17AxisPos}
 addUserKnob {41 lens17Polygon l polygon T _INPUT_CTRL.lens17Polygon}
 addUserKnob {41 lens17Diaphragm l diaphragm T _INPUT_CTRL.lens17Diaphragm}
 addUserKnob {41 lens17DiaphRot l "diaph rotation" T _INPUT_CTRL.lens17DiaphRot}
 addUserKnob {41 lens17grainOpacity l "grain opacity" T _INPUT_CTRL.lens17grainOpacity}
 addUserKnob {41 lens17grainSize l "grain size" T _INPUT_CTRL.lens17grainSize}
 addUserKnob {41 lens17grainGain l "grain gain" T _INPUT_CTRL.lens17grainGain}
 addUserKnob {41 lens17reflectionOpacity l "refl opacity" T _INPUT_CTRL.lens17reflectionOpacity}
 addUserKnob {41 lens17reflectionRotation l "refl rotation" T _INPUT_CTRL.lens17reflectionRotation}
 addUserKnob {41 lens17reflWhitepoint l "refl whitepoint" T _INPUT_CTRL.lens17reflWhitepoint}
 addUserKnob {41 lens17reflectionGamma l "refl gamma" T _INPUT_CTRL.lens17reflectionGamma}
 addUserKnob {41 lens17reflectionBlur l "refl blur" T _INPUT_CTRL.lens17reflectionBlur}
 addUserKnob {20 endGroup_16 l endGroup n -1}
 addUserKnob {26 ""}
 addUserKnob {20 lens18GRP l "lens 18" n 1}
 lens18GRP 0
 addUserKnob {41 lens18Active l active T _INPUT_CTRL.lens18Active}
 addUserKnob {41 lens18Size l size T _INPUT_CTRL.lens18Size}
 addUserKnob {41 lens18Col l color T _INPUT_CTRL.lens18Col}
 addUserKnob {41 lens18Blur l blur T _INPUT_CTRL.lens18Blur}
 addUserKnob {41 lens18AxisPos l "axis pos" T _INPUT_CTRL.lens18AxisPos}
 addUserKnob {41 lens18Polygon l polygon T _INPUT_CTRL.lens18Polygon}
 addUserKnob {41 lens18Diaphragm l diaphragm T _INPUT_CTRL.lens18Diaphragm}
 addUserKnob {41 lens18DiaphRot l "diaph rotation" T _INPUT_CTRL.lens18DiaphRot}
 addUserKnob {41 lens18grainOpacity l "grain opacity" T _INPUT_CTRL.lens18grainOpacity}
 addUserKnob {41 lens18grainSize l "grain size" T _INPUT_CTRL.lens18grainSize}
 addUserKnob {41 lens18grainGain l "grain gain" T _INPUT_CTRL.lens18grainGain}
 addUserKnob {41 lens18reflectionOpacity l "refl opacity" T _INPUT_CTRL.lens18reflectionOpacity}
 addUserKnob {41 lens18reflectionRotation l "refl rotation" T _INPUT_CTRL.lens18reflectionRotation}
 addUserKnob {41 lens18reflWhitepoint l "refl whitepoint" T _INPUT_CTRL.lens18reflWhitepoint}
 addUserKnob {41 lens18reflectionGamma l "refl gamma" T _INPUT_CTRL.lens18reflectionGamma}
 addUserKnob {41 lens18reflectionBlur l "refl blur" T _INPUT_CTRL.lens18reflectionBlur}
 addUserKnob {20 endGroup_17 l endGroup n -1}
 addUserKnob {26 ""}
 addUserKnob {20 lens19GRP l "lens 19" n 1}
 lens19GRP 0
 addUserKnob {41 lens19Active l active T _INPUT_CTRL.lens19Active}
 addUserKnob {41 lens19Size l size T _INPUT_CTRL.lens19Size}
 addUserKnob {41 lens19Col l color T _INPUT_CTRL.lens19Col}
 addUserKnob {41 lens19Blur l blur T _INPUT_CTRL.lens19Blur}
 addUserKnob {41 lens19AxisPos l "axis pos" T _INPUT_CTRL.lens19AxisPos}
 addUserKnob {41 lens19Polygon l polygon T _INPUT_CTRL.lens19Polygon}
 addUserKnob {41 lens19Diaphragm l diaphragm T _INPUT_CTRL.lens19Diaphragm}
 addUserKnob {41 lens19DiaphRot l "diaph rotation" T _INPUT_CTRL.lens19DiaphRot}
 addUserKnob {41 lens19grainOpacity l "grain opacity" T _INPUT_CTRL.lens19grainOpacity}
 addUserKnob {41 lens19grainSize l "grain size" T _INPUT_CTRL.lens19grainSize}
 addUserKnob {41 lens19grainGain l "grain gain" T _INPUT_CTRL.lens19grainGain}
 addUserKnob {41 lens19reflectionOpacity l "refl opacity" T _INPUT_CTRL.lens19reflectionOpacity}
 addUserKnob {41 lens19reflectionRotation l "refl rotation" T _INPUT_CTRL.lens19reflectionRotation}
 addUserKnob {41 lens19reflWhitepoint l "refl whitepoint" T _INPUT_CTRL.lens19reflWhitepoint}
 addUserKnob {41 lens19reflectionGamma l "refl gamma" T _INPUT_CTRL.lens19reflectionGamma}
 addUserKnob {41 lens19reflectionBlur l "refl blur" T _INPUT_CTRL.lens19reflectionBlur}
 addUserKnob {20 endGroup_18 l endGroup n -1}
 addUserKnob {26 ""}
 addUserKnob {20 lens20GRP l "lens 20" n 1}
 lens20GRP 0
 addUserKnob {41 lens20Active l active T _INPUT_CTRL.lens20Active}
 addUserKnob {41 lens20Size l size T _INPUT_CTRL.lens20Size}
 addUserKnob {41 lens20Col l color T _INPUT_CTRL.lens20Col}
 addUserKnob {41 lens20Blur l blur T _INPUT_CTRL.lens20Blur}
 addUserKnob {41 lens20AxisPos l "axis pos" T _INPUT_CTRL.lens20AxisPos}
 addUserKnob {41 lens20Polygon l polygon T _INPUT_CTRL.lens20Polygon}
 addUserKnob {41 lens20Diaphragm l diaphragm T _INPUT_CTRL.lens20Diaphragm}
 addUserKnob {41 lens20DiaphRot l "diaph rotation" T _INPUT_CTRL.lens20DiaphRot}
 addUserKnob {41 lens20grainOpacity l "grain opacity" T _INPUT_CTRL.lens20grainOpacity}
 addUserKnob {41 lens20grainSize l "grain size" T _INPUT_CTRL.lens20grainSize}
 addUserKnob {41 lens20grainGain l "grain gain" T _INPUT_CTRL.lens20grainGain}
 addUserKnob {41 lens20reflectionOpacity l "refl opacity" T _INPUT_CTRL.lens20reflectionOpacity}
 addUserKnob {41 lens20reflectionRotation l "refl rotation" T _INPUT_CTRL.lens20reflectionRotation}
 addUserKnob {41 lens20reflWhitepoint l "refl whitepoint" T _INPUT_CTRL.lens20reflWhitepoint}
 addUserKnob {41 lens20reflectionGamma l "refl gamma" T _INPUT_CTRL.lens20reflectionGamma}
 addUserKnob {41 lens20reflectionBlur l "refl blur" T _INPUT_CTRL.lens20reflectionBlur}
 addUserKnob {20 endGroup_19 l endGroup n -1}
}
 Input {
  inputs 0
  name Input
  xpos 153
  ypos 416
 }
 NoOp {
  name _INPUT_
  xpos 153
  ypos 456
 }
set N49d16e70 [stack 0]
 NoOp {
  name _SOURCE
  xpos -72
  ypos 456
 }
 Multiply {
  value 0
  name _compOnSource
  xpos -72
  ypos 10508
  disable {{1-_INPUT_CTRL.effectOnly i}}
 }
push $N49d16e70
 Reformat {
  type scale
  scale {{_INPUT_CTRL.quality i}}
  name _reformatQuality
  xpos 153
  ypos 485
 }
 NoOp {
  name _INPUT_CTRL
  xpos 153
  ypos 523
  addUserKnob {20 Controls}
  addUserKnob {6 effectOnly l "effect only" +STARTLINE}
  addUserKnob {6 viewSelectedHighlights l "view highlights selection" +STARTLINE}
  addUserKnob {7 brightspot R 0.9 15}
  brightspot 2
  addUserKnob {7 threshold}
  threshold 1
  addUserKnob {7 gamma t "Value for the gamma function applied between threshold value and brightspot value.\n" R 0 3}
  gamma 2.2
  addUserKnob {6 clampBright l "clamp to brightspot" t "Clamp the maximum values to the brightspot value." +STARTLINE}
  clampBright true
  addUserKnob {7 quality}
  quality 0.5
  addUserKnob {26 ""}
  addUserKnob {7 overallMult l "overall mult" R 0 2}
  overallMult 1
  addUserKnob {7 overallLensScale l "overall lens scale" R 0 2}
  overallLensScale 1
  addUserKnob {7 overallLensDistance l "overall lens distance" R 0 2}
  overallLensDistance 1
  addUserKnob {7 overallSaturation l "overall saturation" R 0 2}
  overallSaturation 1
  addUserKnob {7 sourceCol l "source color" t "Mix with source color"}
  sourceCol 1
  addUserKnob {7 sourceSat l "source sat" R 0 3}
  sourceSat 1
  addUserKnob {26 ""}
  addUserKnob {7 overallGrainOpacity l "overall grain opacity"}
  addUserKnob {7 overallGrainSizeMult l "grain size mult" R 0 10}
  overallGrainSizeMult 1
  addUserKnob {7 overallGrainGainMult l "grain gain mult" R 0 5}
  overallGrainGainMult 1
  addUserKnob {26 ""}
  addUserKnob {7 reflectionsOpacity l "reflections opacity"}
  addUserKnob {7 reflectionsRotOffset l "reflections rot offset" R 0 360}
  addUserKnob {7 reflectionsBlurAdd l "reflections add blur" R 0 50}
  addUserKnob {18 reflectionsWhitepointMult l "refl whitepoint mult" R 0 2}
  reflectionsWhitepointMult 1
  addUserKnob {6 reflectionsWhitepointMult_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 reflectionsWhitepointMult_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 reflectionsWhitepointMult_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {18 reflectionsGammaMult l "refl gamma mult" R 0 5}
  reflectionsGammaMult 1
  addUserKnob {6 reflectionsGammaMult_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 reflectionsGammaMult_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 reflectionsGammaMult_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {26 ""}
  addUserKnob {6 vignetteActive l "vignette source" +STARTLINE}
  vignetteActive true
  addUserKnob {7 vignetteScale l scale}
  vignetteScale 0.7
  addUserKnob {7 vignetteDarkness l darkness}
  vignetteDarkness 1
  addUserKnob {20 Presets}
  addUserKnob {22 preset_01 l "Pink on Blue" T "n=nuke.toNode('_INPUT_CTRL')\n\nn.knob('lens1Active').setValue(True)\nn.knob('lens1Size').setValue(230)\nn.knob('lens1Col').setValue(2.48,0)\nn.knob('lens1Col').setValue(2.86,1)\nn.knob('lens1Col').setValue(16.6,2)\nn.knob('lens1Blur').setValue(17)\nn.knob('lens1AxisPos').setValue(-1.18)\nn.knob('lens1Polygon').setValue(0)\nn.knob('lens1Diaphragm').setValue(1)\nn.knob('lens1DiaphRot').setValue(0)\n\nn.knob('lens2Active').setValue(True)\nn.knob('lens2Size').setValue(50)\nn.knob('lens2Col').setValue(0.0027,0)\nn.knob('lens2Col').setValue(0.0095,1)\nn.knob('lens2Col').setValue(0.3,2)\nn.knob('lens2Blur').setValue(0)\nn.knob('lens2AxisPos').setValue(1.86)\nn.knob('lens2Polygon').setValue(0)\nn.knob('lens2Diaphragm').setValue(1)\nn.knob('lens2DiaphRot').setValue(0)\n\nn.knob('lens3Active').setValue(True)\nn.knob('lens3Size').setValue(200)\nn.knob('lens3Col').setValue(7,0)\nn.knob('lens3Col').setValue(6.02,1)\nn.knob('lens3Col').setValue(2.79,2)\nn.knob('lens3Blur').setValue(0)\nn.knob('lens3AxisPos').setValue(-1.18)\nn.knob('lens3Polygon').setValue(0)\nn.knob('lens3Diaphragm').setValue(1)\nn.knob('lens3DiaphRot').setValue(0)\n\nn.knob('lens4Active').setValue(True)\nn.knob('lens4Size').setValue(900)\nn.knob('lens4Col').setValue(26,0)\nn.knob('lens4Col').setValue(5.88,1)\nn.knob('lens4Col').setValue(10.64,2)\nn.knob('lens4Blur').setValue(0)\nn.knob('lens4AxisPos').setValue(-2.2)\nn.knob('lens4Polygon').setValue(0)\nn.knob('lens4Diaphragm').setValue(1)\nn.knob('lens4DiaphRot').setValue(0)\n\nn.knob('lens5Active').setValue(True)\nn.knob('lens5Size').setValue(540)\nn.knob('lens5Col').setValue(0.6,0)\nn.knob('lens5Col').setValue(0.34,1)\nn.knob('lens5Col').setValue(0.4,2)\nn.knob('lens5Blur').setValue(0)\nn.knob('lens5AxisPos').setValue(1)\nn.knob('lens5Polygon').setValue(0)\nn.knob('lens5Diaphragm').setValue(1)\nn.knob('lens5DiaphRot').setValue(0)\n\nn.knob('lens6Active').setValue(True)\nn.knob('lens6Size').setValue(430)\nn.knob('lens6Col').setValue(1.29,0)\nn.knob('lens6Col').setValue(0.19,1)\nn.knob('lens6Col').setValue(1.17,2)\nn.knob('lens6Blur').setValue(0)\nn.knob('lens6AxisPos').setValue(2.2)\nn.knob('lens6Polygon').setValue(0)\nn.knob('lens6Diaphragm').setValue(1)\nn.knob('lens6DiaphRot').setValue(0)\n\nn.knob('lens7Active').setValue(True)\nn.knob('lens7Size').setValue(400)\nn.knob('lens7Col').setValue(0,0)\nn.knob('lens7Col').setValue(674.66,1)\nn.knob('lens7Col').setValue(720,2)\nn.knob('lens7Blur').setValue(0)\nn.knob('lens7AxisPos').setValue(0.1)\nn.knob('lens7Polygon').setValue(0)\nn.knob('lens7Diaphragm').setValue(1)\nn.knob('lens7DiaphRot').setValue(0)\n\nn.knob('lens8Active').setValue(True)\nn.knob('lens8Size').setValue(950)\nn.knob('lens8Col').setValue(5,0)\nn.knob('lens8Col').setValue(13.21,1)\nn.knob('lens8Col').setValue(20,2)\nn.knob('lens8Blur').setValue(40)\nn.knob('lens8AxisPos').setValue(-2.16)\nn.knob('lens8Polygon').setValue(0)\nn.knob('lens8Diaphragm').setValue(1)\nn.knob('lens8DiaphRot').setValue(0)\n\nn.knob('lens9Active').setValue(True)\nn.knob('lens9Size').setValue(130)\nn.knob('lens9Col').setValue(0.07,0)\nn.knob('lens9Col').setValue(0.23,1)\nn.knob('lens9Col').setValue(4.8,2)\nn.knob('lens9Blur').setValue(5.6)\nn.knob('lens9AxisPos').setValue(0.7)\nn.knob('lens9Polygon').setValue(0)\nn.knob('lens9Diaphragm').setValue(1)\nn.knob('lens9DiaphRot').setValue(0)\n\nn.knob('lens10Active').setValue(True)\nn.knob('lens10Size').setValue(350)\nn.knob('lens10Col').setValue(1.549,0)\nn.knob('lens10Col').setValue(1,1)\nn.knob('lens10Col').setValue(0.85,2)\nn.knob('lens10Blur').setValue(0)\nn.knob('lens10AxisPos').setValue(-1.8)\nn.knob('lens10Polygon').setValue(0)\nn.knob('lens10Diaphragm').setValue(1)\nn.knob('lens10DiaphRot').setValue(0)\n\nn.knob('lens11Active').setValue(True)\nn.knob('lens11Size').setValue(10)\nn.knob('lens11Col').setValue(0.1,0)\nn.knob('lens11Col').setValue(0.032,1)\nn.knob('lens11Col').setValue(0.087,2)\nn.knob('lens11Blur').setValue(3.8)\nn.knob('lens11AxisPos').setValue(-0.6)\nn.knob('lens11Polygon').setValue(0)\nn.knob('lens11Diaphragm').setValue(1)\nn.knob('lens11DiaphRot').setValue(0)\n\nn.knob('lens12Active').setValue(True)\nn.knob('lens12Size').setValue(390)\nn.knob('lens12Col').setValue(0.11,0)\nn.knob('lens12Col').setValue(0.053,1)\nn.knob('lens12Col').setValue(0.036,2)\nn.knob('lens12Blur').setValue(2.1)\nn.knob('lens12AxisPos').setValue(-1.8)\nn.knob('lens12Polygon').setValue(0)\nn.knob('lens12Diaphragm').setValue(1)\nn.knob('lens12DiaphRot').setValue(0)\n\nn.knob('lens13Active').setValue(True)\nn.knob('lens13Size').setValue(140)\nn.knob('lens13Col').setValue(0.5,0)\nn.knob('lens13Col').setValue(2.75,1)\nn.knob('lens13Col').setValue(5,2)\nn.knob('lens13Blur').setValue(140)\nn.knob('lens13AxisPos').setValue(2)\nn.knob('lens13Polygon').setValue(0)\nn.knob('lens13Diaphragm').setValue(1)\nn.knob('lens13DiaphRot').setValue(0)\n\nn.knob('lens14Active').setValue(True)\nn.knob('lens14Size').setValue(420)\nn.knob('lens14Col').setValue(509.29,0)\nn.knob('lens14Col').setValue(-50.93,1)\nn.knob('lens14Col').setValue(500.3,2)\nn.knob('lens14Blur').setValue(20)\nn.knob('lens14AxisPos').setValue(0.08)\nn.knob('lens14Polygon').setValue(0)\nn.knob('lens14Diaphragm').setValue(1)\nn.knob('lens14DiaphRot').setValue(0)\n\nn.knob('lens15Active').setValue(True)\nn.knob('lens15Size').setValue(590)\nn.knob('lens15Col').setValue(1120,0)\nn.knob('lens15Col').setValue(-55.99,1)\nn.knob('lens15Col').setValue(946.47,2)\nn.knob('lens15Blur').setValue(0)\nn.knob('lens15AxisPos').setValue(-0.1)\nn.knob('lens15Polygon').setValue(0)\nn.knob('lens15Diaphragm').setValue(1)\nn.knob('lens15DiaphRot').setValue(0)\n\nn.knob('lens16Active').setValue(True)\nn.knob('lens16Size').setValue(130)\nn.knob('lens16Col').setValue(0.8,0)\nn.knob('lens16Col').setValue(0.74,1)\nn.knob('lens16Col').setValue(0.119,2)\nn.knob('lens16Blur').setValue(5.8)\nn.knob('lens16AxisPos').setValue(-0.51)\nn.knob('lens16Polygon').setValue(0)\nn.knob('lens16Diaphragm').setValue(1)\nn.knob('lens16DiaphRot').setValue(0)\n\nn.knob('lens17Active').setValue(True)\nn.knob('lens17Size').setValue(210)\nn.knob('lens17Col').setValue(0.4911,0)\nn.knob('lens17Col').setValue(1.01,1)\nn.knob('lens17Col').setValue(2.59,2)\nn.knob('lens17Blur').setValue(0)\nn.knob('lens17AxisPos').setValue(1.2)\nn.knob('lens17Polygon').setValue(0)\nn.knob('lens17Diaphragm').setValue(1)\nn.knob('lens17DiaphRot').setValue(0)\n\nn.knob('lens18Active').setValue(True)\nn.knob('lens18Size').setValue(50)\nn.knob('lens18Col').setValue(0.26,0)\nn.knob('lens18Col').setValue(0.039,1)\nn.knob('lens18Col').setValue(-0.624,2)\nn.knob('lens18Blur').setValue(0)\nn.knob('lens18AxisPos').setValue(-0.83)\nn.knob('lens18Polygon').setValue(0)\nn.knob('lens18Diaphragm').setValue(1)\nn.knob('lens18DiaphRot').setValue(0)\n\nn.knob('lens19Active').setValue(True)\nn.knob('lens19Size').setValue(410)\nn.knob('lens19Col').setValue(4.4,0)\nn.knob('lens19Col').setValue(2.7,1)\nn.knob('lens19Col').setValue(2.04,2)\nn.knob('lens19Blur').setValue(0)\nn.knob('lens19AxisPos').setValue(-0.95)\nn.knob('lens19Polygon').setValue(0)\nn.knob('lens19Diaphragm').setValue(1)\nn.knob('lens19DiaphRot').setValue(0)\n\nn.knob('lens20Active').setValue(True)\nn.knob('lens20Size').setValue(700)\nn.knob('lens20Col').setValue(2.32,0)\nn.knob('lens20Col').setValue(0,1)\nn.knob('lens20Col').setValue(104,2)\nn.knob('lens20Blur').setValue(0)\nn.knob('lens20AxisPos').setValue(0.6)\nn.knob('lens20Polygon').setValue(0)\nn.knob('lens20Diaphragm').setValue(1)\nn.knob('lens20DiaphRot').setValue(0)\n\n\n" +STARTLINE}
  addUserKnob {22 preset_02 l "Fat Orange" T "n=nuke.toNode('_INPUT_CTRL')\n\nn.knob('lens1Active').setValue(True)\nn.knob('lens1Size').setValue(7)\nn.knob('lens1Col').setValue(0.0074,0)\nn.knob('lens1Col').setValue(0,1)\nn.knob('lens1Col').setValue(0.07,2)\nn.knob('lens1Blur').setValue(17)\nn.knob('lens1AxisPos').setValue(-1.3)\nn.knob('lens1Polygon').setValue(0)\nn.knob('lens1Diaphragm').setValue(1)\nn.knob('lens1DiaphRot').setValue(0)\n\nn.knob('lens2Active').setValue(True)\nn.knob('lens2Size').setValue(130)\nn.knob('lens2Col').setValue(0.11,0)\nn.knob('lens2Col').setValue(0.055,1)\nn.knob('lens2Col').setValue(0.0709,2)\nn.knob('lens2Blur').setValue(9.5)\nn.knob('lens2AxisPos').setValue(-1.66)\nn.knob('lens2Polygon').setValue(0)\nn.knob('lens2Diaphragm').setValue(1)\nn.knob('lens2DiaphRot').setValue(0)\n\nn.knob('lens3Active').setValue(True)\nn.knob('lens3Size').setValue(340)\nn.knob('lens3Col').setValue(3.9,0)\nn.knob('lens3Col').setValue(1.125,1)\nn.knob('lens3Col').setValue(0.195,2)\nn.knob('lens3Blur').setValue(0)\nn.knob('lens3AxisPos').setValue(-0.32)\nn.knob('lens3Polygon').setValue(0)\nn.knob('lens3Diaphragm').setValue(1)\nn.knob('lens3DiaphRot').setValue(0)\n\nn.knob('lens4Active').setValue(True)\nn.knob('lens4Size').setValue(160)\nn.knob('lens4Col').setValue(2.59,0)\nn.knob('lens4Col').setValue(0.13,1)\nn.knob('lens4Col').setValue(0.228,2)\nn.knob('lens4Blur').setValue(0)\nn.knob('lens4AxisPos').setValue(-0.24)\nn.knob('lens4Polygon').setValue(0)\nn.knob('lens4Diaphragm').setValue(1)\nn.knob('lens4DiaphRot').setValue(0)\n\nn.knob('lens5Active').setValue(True)\nn.knob('lens5Size').setValue(350)\nn.knob('lens5Col').setValue(0.6,0)\nn.knob('lens5Col').setValue(0.135,1)\nn.knob('lens5Col').setValue(0,2)\nn.knob('lens5Blur').setValue(0)\nn.knob('lens5AxisPos').setValue(-0.78)\nn.knob('lens5Polygon').setValue(0)\nn.knob('lens5Diaphragm').setValue(1)\nn.knob('lens5DiaphRot').setValue(0)\n\nn.knob('lens6Active').setValue(True)\nn.knob('lens6Size').setValue(30)\nn.knob('lens6Col').setValue(0.11,0)\nn.knob('lens6Col').setValue(0.053,1)\nn.knob('lens6Col').setValue(0.0000012,2)\nn.knob('lens6Blur').setValue(4)\nn.knob('lens6AxisPos').setValue(-0.75)\nn.knob('lens6Polygon').setValue(0)\nn.knob('lens6Diaphragm').setValue(1)\nn.knob('lens6DiaphRot').setValue(0)\n\nn.knob('lens7Active').setValue(True)\nn.knob('lens7Size').setValue(1000)\nn.knob('lens7Col').setValue(190,0)\nn.knob('lens7Col').setValue(24.27,1)\nn.knob('lens7Col').setValue(0,2)\nn.knob('lens7Blur').setValue(0)\nn.knob('lens7AxisPos').setValue(-0.04)\nn.knob('lens7Polygon').setValue(0)\nn.knob('lens7Diaphragm').setValue(1)\nn.knob('lens7DiaphRot').setValue(0)\n\nn.knob('lens8Active').setValue(True)\nn.knob('lens8Size').setValue(350)\nn.knob('lens8Col').setValue(0.6,0)\nn.knob('lens8Col').setValue(0.233,1)\nn.knob('lens8Col').setValue(0.089,2)\nn.knob('lens8Blur').setValue(100)\nn.knob('lens8AxisPos').setValue(-1.9)\nn.knob('lens8Polygon').setValue(0)\nn.knob('lens8Diaphragm').setValue(1)\nn.knob('lens8DiaphRot').setValue(0)\n\nn.knob('lens9Active').setValue(True)\nn.knob('lens9Size').setValue(200)\nn.knob('lens9Col').setValue(0.949,0)\nn.knob('lens9Col').setValue(0.05,1)\nn.knob('lens9Col').setValue(0,2)\nn.knob('lens9Blur').setValue(30)\nn.knob('lens9AxisPos').setValue(-0.76)\nn.knob('lens9Polygon').setValue(0)\nn.knob('lens9Diaphragm').setValue(1)\nn.knob('lens9DiaphRot').setValue(0)\n\nn.knob('lens10Active').setValue(True)\nn.knob('lens10Size').setValue(270)\nn.knob('lens10Col').setValue(5,0)\nn.knob('lens10Col').setValue(1.78,1)\nn.knob('lens10Col').setValue(0.87,2)\nn.knob('lens10Blur').setValue(0)\nn.knob('lens10AxisPos').setValue(0.18)\nn.knob('lens10Polygon').setValue(0)\nn.knob('lens10Diaphragm').setValue(1)\nn.knob('lens10DiaphRot').setValue(0)\n\nn.knob('lens11Active').setValue(True)\nn.knob('lens11Size').setValue(20)\nn.knob('lens11Col').setValue(0.03,0)\nn.knob('lens11Col').setValue(0.0093,1)\nn.knob('lens11Col').setValue(0,2)\nn.knob('lens11Blur').setValue(3.5)\nn.knob('lens11AxisPos').setValue(-0.6)\nn.knob('lens11Polygon').setValue(0)\nn.knob('lens11Diaphragm').setValue(1)\nn.knob('lens11DiaphRot').setValue(0)\n\nn.knob('lens12Active').setValue(True)\nn.knob('lens12Size').setValue(700)\nn.knob('lens12Col').setValue(0.04,0)\nn.knob('lens12Col').setValue(0,1)\nn.knob('lens12Col').setValue(0.0058,2)\nn.knob('lens12Blur').setValue(10)\nn.knob('lens12AxisPos').setValue(-2.2)\nn.knob('lens12Polygon').setValue(0)\nn.knob('lens12Diaphragm').setValue(1)\nn.knob('lens12DiaphRot').setValue(0)\n\nn.knob('lens13Active').setValue(True)\nn.knob('lens13Size').setValue(100)\nn.knob('lens13Col').setValue(0.12,0)\nn.knob('lens13Col').setValue(0,1)\nn.knob('lens13Col').setValue(0.0178,2)\nn.knob('lens13Blur').setValue(200)\nn.knob('lens13AxisPos').setValue(2)\nn.knob('lens13Polygon').setValue(0)\nn.knob('lens13Diaphragm').setValue(1)\nn.knob('lens13DiaphRot').setValue(0)\n\nn.knob('lens14Active').setValue(True)\nn.knob('lens14Size').setValue(80)\nn.knob('lens14Col').setValue(0.28,0)\nn.knob('lens14Col').setValue(0.0419,1)\nn.knob('lens14Col').setValue(0.101,2)\nn.knob('lens14Blur').setValue(0)\nn.knob('lens14AxisPos').setValue(0.38)\nn.knob('lens14Polygon').setValue(0)\nn.knob('lens14Diaphragm').setValue(1)\nn.knob('lens14DiaphRot').setValue(0)\n\nn.knob('lens15Active').setValue(True)\nn.knob('lens15Size').setValue(500)\nn.knob('lens15Col').setValue(1,0)\nn.knob('lens15Col').setValue(0.2428,1)\nn.knob('lens15Col').setValue(0.1,2)\nn.knob('lens15Blur').setValue(0)\nn.knob('lens15AxisPos').setValue(-0.5)\nn.knob('lens15Polygon').setValue(0)\nn.knob('lens15Diaphragm').setValue(1)\nn.knob('lens15DiaphRot').setValue(0)\n\nn.knob('lens16Active').setValue(True)\nn.knob('lens16Size').setValue(130)\nn.knob('lens16Col').setValue(0.449,0)\nn.knob('lens16Col').setValue(0.146,1)\nn.knob('lens16Col').setValue(0.0225,2)\nn.knob('lens16Blur').setValue(0)\nn.knob('lens16AxisPos').setValue(1.4)\nn.knob('lens16Polygon').setValue(0)\nn.knob('lens16Diaphragm').setValue(1)\nn.knob('lens16DiaphRot').setValue(0)\n\nn.knob('lens17Active').setValue(True)\nn.knob('lens17Size').setValue(210)\nn.knob('lens17Col').setValue(0.09,0)\nn.knob('lens17Col').setValue(0.009,1)\nn.knob('lens17Col').setValue(0.056,2)\nn.knob('lens17Blur').setValue(0)\nn.knob('lens17AxisPos').setValue(1.2)\nn.knob('lens17Polygon').setValue(0)\nn.knob('lens17Diaphragm').setValue(1)\nn.knob('lens17DiaphRot').setValue(0)\n\nn.knob('lens18Active').setValue(True)\nn.knob('lens18Size').setValue(100)\nn.knob('lens18Col').setValue(0.06,0)\nn.knob('lens18Col').setValue(0.009,1)\nn.knob('lens18Col').setValue(0.0579,2)\nn.knob('lens18Blur').setValue(120)\nn.knob('lens18AxisPos').setValue(2.5)\nn.knob('lens18Polygon').setValue(0)\nn.knob('lens18Diaphragm').setValue(1)\nn.knob('lens18DiaphRot').setValue(0)\n\nn.knob('lens19Active').setValue(True)\nn.knob('lens19Size').setValue(150)\nn.knob('lens19Col').setValue(0.2,0)\nn.knob('lens19Col').setValue(0.0708,1)\nn.knob('lens19Col').setValue(0.1219,2)\nn.knob('lens19Blur').setValue(9)\nn.knob('lens19AxisPos').setValue(0.8)\nn.knob('lens19Polygon').setValue(0)\nn.knob('lens19Diaphragm').setValue(1)\nn.knob('lens19DiaphRot').setValue(0)\n\nn.knob('lens20Active').setValue(True)\nn.knob('lens20Size').setValue(1100)\nn.knob('lens20Col').setValue(0.8,0)\nn.knob('lens20Col').setValue(0.178,1)\nn.knob('lens20Col').setValue(0.119,2)\nn.knob('lens20Blur').setValue(0)\nn.knob('lens20AxisPos').setValue(0.95)\nn.knob('lens20Polygon').setValue(0)\nn.knob('lens20Diaphragm').setValue(1)\nn.knob('lens20DiaphRot').setValue(0)\n\n\n" +STARTLINE}
  addUserKnob {22 preset_03 l "Classic Orange Blue" T "n=nuke.toNode('_INPUT_CTRL')\n\nn.knob('lens1Active').setValue(True)\nn.knob('lens1Size').setValue(650)\nn.knob('lens1Col').setValue(35.59,0)\nn.knob('lens1Col').setValue(19.95,1)\nn.knob('lens1Col').setValue(5.27,2)\nn.knob('lens1Blur').setValue(17)\nn.knob('lens1AxisPos').setValue(0.98)\nn.knob('lens1Polygon').setValue(0)\nn.knob('lens1Diaphragm').setValue(1)\nn.knob('lens1DiaphRot').setValue(0)\n\nn.knob('lens2Active').setValue(True)\nn.knob('lens2Size').setValue(20)\nn.knob('lens2Col').setValue(0.649,0)\nn.knob('lens2Col').setValue(0.34,1)\nn.knob('lens2Col').setValue(0.137,2)\nn.knob('lens2Blur').setValue(7)\nn.knob('lens2AxisPos').setValue(0.77)\nn.knob('lens2Polygon').setValue(0)\nn.knob('lens2Diaphragm').setValue(1)\nn.knob('lens2DiaphRot').setValue(0)\n\nn.knob('lens3Active').setValue(True)\nn.knob('lens3Size').setValue(520)\nn.knob('lens3Col').setValue(446,0)\nn.knob('lens3Col').setValue(249.31,1)\nn.knob('lens3Col').setValue(44.6,2)\nn.knob('lens3Blur').setValue(9.4)\nn.knob('lens3AxisPos').setValue(-0.43)\nn.knob('lens3Polygon').setValue(0)\nn.knob('lens3Diaphragm').setValue(1)\nn.knob('lens3DiaphRot').setValue(0)\n\nn.knob('lens4Active').setValue(True)\nn.knob('lens4Size').setValue(60)\nn.knob('lens4Col').setValue(26,0)\nn.knob('lens4Col').setValue(22.8,1)\nn.knob('lens4Col').setValue(14,2)\nn.knob('lens4Blur').setValue(7)\nn.knob('lens4AxisPos').setValue(0.7)\nn.knob('lens4Polygon').setValue(0)\nn.knob('lens4Diaphragm').setValue(1)\nn.knob('lens4DiaphRot').setValue(0)\n\nn.knob('lens5Active').setValue(True)\nn.knob('lens5Size').setValue(220)\nn.knob('lens5Col').setValue(30,0)\nn.knob('lens5Col').setValue(11.46,1)\nn.knob('lens5Col').setValue(0,2)\nn.knob('lens5Blur').setValue(4.4)\nn.knob('lens5AxisPos').setValue(0.66)\nn.knob('lens5Polygon').setValue(0)\nn.knob('lens5Diaphragm').setValue(1)\nn.knob('lens5DiaphRot').setValue(0)\n\nn.knob('lens6Active').setValue(True)\nn.knob('lens6Size').setValue(130)\nn.knob('lens6Col').setValue(0.134,0)\nn.knob('lens6Col').setValue(17.49,1)\nn.knob('lens6Col').setValue(40,2)\nn.knob('lens6Blur').setValue(0)\nn.knob('lens6AxisPos').setValue(0.23)\nn.knob('lens6Polygon').setValue(0)\nn.knob('lens6Diaphragm').setValue(1)\nn.knob('lens6DiaphRot').setValue(0)\n\nn.knob('lens7Active').setValue(True)\nn.knob('lens7Size').setValue(200)\nn.knob('lens7Col').setValue(50,0)\nn.knob('lens7Col').setValue(47.767,1)\nn.knob('lens7Col').setValue(31.44,2)\nn.knob('lens7Blur').setValue(0)\nn.knob('lens7AxisPos').setValue(0.203)\nn.knob('lens7Polygon').setValue(0)\nn.knob('lens7Diaphragm').setValue(1)\nn.knob('lens7DiaphRot').setValue(0)\n\nn.knob('lens8Active').setValue(True)\nn.knob('lens8Size').setValue(850)\nn.knob('lens8Col').setValue(130,0)\nn.knob('lens8Col').setValue(61.45,1)\nn.knob('lens8Col').setValue(1.76,2)\nn.knob('lens8Blur').setValue(40)\nn.knob('lens8AxisPos').setValue(-0.96)\nn.knob('lens8Polygon').setValue(0)\nn.knob('lens8Diaphragm').setValue(1)\nn.knob('lens8DiaphRot').setValue(0)\n\nn.knob('lens9Active').setValue(True)\nn.knob('lens9Size').setValue(10)\nn.knob('lens9Col').setValue(1.25,0)\nn.knob('lens9Col').setValue(0.249,1)\nn.knob('lens9Col').setValue(0.756,2)\nn.knob('lens9Blur').setValue(0)\nn.knob('lens9AxisPos').setValue(0.53)\nn.knob('lens9Polygon').setValue(0)\nn.knob('lens9Diaphragm').setValue(1)\nn.knob('lens9DiaphRot').setValue(0)\n\nn.knob('lens10Active').setValue(True)\nn.knob('lens10Size').setValue(65)\nn.knob('lens10Col').setValue(20,0)\nn.knob('lens10Col').setValue(9.2,1)\nn.knob('lens10Col').setValue(5.5,2)\nn.knob('lens10Blur').setValue(4.8)\nn.knob('lens10AxisPos').setValue(0.18)\nn.knob('lens10Polygon').setValue(0)\nn.knob('lens10Diaphragm').setValue(1)\nn.knob('lens10DiaphRot').setValue(0)\n\nn.knob('lens11Active').setValue(True)\nn.knob('lens11Size').setValue(30)\nn.knob('lens11Col').setValue(4.5,0)\nn.knob('lens11Col').setValue(8.26,1)\nn.knob('lens11Col').setValue(10,2)\nn.knob('lens11Blur').setValue(0)\nn.knob('lens11AxisPos').setValue(-0.2)\nn.knob('lens11Polygon').setValue(0)\nn.knob('lens11Diaphragm').setValue(1)\nn.knob('lens11DiaphRot').setValue(0)\n\nn.knob('lens12Active').setValue(True)\nn.knob('lens12Size').setValue(1090)\nn.knob('lens12Col').setValue(0.11,0)\nn.knob('lens12Col').setValue(0.053,1)\nn.knob('lens12Col').setValue(0.036,2)\nn.knob('lens12Blur').setValue(2.1)\nn.knob('lens12AxisPos').setValue(-0.8)\nn.knob('lens12Polygon').setValue(0)\nn.knob('lens12Diaphragm').setValue(1)\nn.knob('lens12DiaphRot').setValue(0)\n\nn.knob('lens13Active').setValue(True)\nn.knob('lens13Size').setValue(32)\nn.knob('lens13Col').setValue(10,0)\nn.knob('lens13Col').setValue(9.7,1)\nn.knob('lens13Col').setValue(6.26,2)\nn.knob('lens13Blur').setValue(19.6)\nn.knob('lens13AxisPos').setValue(0.68)\nn.knob('lens13Polygon').setValue(0)\nn.knob('lens13Diaphragm').setValue(1)\nn.knob('lens13DiaphRot').setValue(0)\n\nn.knob('lens14Active').setValue(True)\nn.knob('lens14Size').setValue(320)\nn.knob('lens14Col').setValue(2509,0)\nn.knob('lens14Col').setValue(1171,1)\nn.knob('lens14Col').setValue(1256,2)\nn.knob('lens14Blur').setValue(0)\nn.knob('lens14AxisPos').setValue(-0.04)\nn.knob('lens14Polygon').setValue(0)\nn.knob('lens14Diaphragm').setValue(1)\nn.knob('lens14DiaphRot').setValue(0)\n\nn.knob('lens15Active').setValue(True)\nn.knob('lens15Size').setValue(590)\nn.knob('lens15Col').setValue(1120,0)\nn.knob('lens15Col').setValue(506,1)\nn.knob('lens15Col').setValue(456,2)\nn.knob('lens15Blur').setValue(0)\nn.knob('lens15AxisPos').setValue(-0.1)\nn.knob('lens15Polygon').setValue(0)\nn.knob('lens15Diaphragm').setValue(1)\nn.knob('lens15DiaphRot').setValue(0)\n\nn.knob('lens16Active').setValue(True)\nn.knob('lens16Size').setValue(60)\nn.knob('lens16Col').setValue(18,0)\nn.knob('lens16Col').setValue(4.51,1)\nn.knob('lens16Col').setValue(1.8,2)\nn.knob('lens16Blur').setValue(5.8)\nn.knob('lens16AxisPos').setValue(-0.27)\nn.knob('lens16Polygon').setValue(0)\nn.knob('lens16Diaphragm').setValue(1)\nn.knob('lens16DiaphRot').setValue(0)\n\nn.knob('lens17Active').setValue(True)\nn.knob('lens17Size').setValue(70)\nn.knob('lens17Col').setValue(20,0)\nn.knob('lens17Col').setValue(13.74,1)\nn.knob('lens17Col').setValue(4.58,2)\nn.knob('lens17Blur').setValue(0)\nn.knob('lens17AxisPos').setValue(-0.24)\nn.knob('lens17Polygon').setValue(0)\nn.knob('lens17Diaphragm').setValue(1)\nn.knob('lens17DiaphRot').setValue(0)\n\nn.knob('lens18Active').setValue(True)\nn.knob('lens18Size').setValue(50)\nn.knob('lens18Col').setValue(30,0)\nn.knob('lens18Col').setValue(8.94,1)\nn.knob('lens18Col').setValue(-10.5,2)\nn.knob('lens18Blur').setValue(30)\nn.knob('lens18AxisPos').setValue(-0.32)\nn.knob('lens18Polygon').setValue(0)\nn.knob('lens18Diaphragm').setValue(1)\nn.knob('lens18DiaphRot').setValue(0)\n\nn.knob('lens19Active').setValue(True)\nn.knob('lens19Size').setValue(50)\nn.knob('lens19Col').setValue(1.97,0)\nn.knob('lens19Col').setValue(3.2,1)\nn.knob('lens19Col').setValue(0.32,2)\nn.knob('lens19Blur').setValue(4.4)\nn.knob('lens19AxisPos').setValue(-0.47)\nn.knob('lens19Polygon').setValue(0)\nn.knob('lens19Diaphragm').setValue(1)\nn.knob('lens19DiaphRot').setValue(0)\n\nn.knob('lens20Active').setValue(True)\nn.knob('lens20Size').setValue(80)\nn.knob('lens20Col').setValue(3.79,0)\nn.knob('lens20Col').setValue(3.11,1)\nn.knob('lens20Col').setValue(0.8,2)\nn.knob('lens20Blur').setValue(0)\nn.knob('lens20AxisPos').setValue(-0.15)\nn.knob('lens20Polygon').setValue(0)\nn.knob('lens20Diaphragm').setValue(1)\nn.knob('lens20DiaphRot').setValue(0)\n\n\n" +STARTLINE}
  addUserKnob {22 preset_04 l "Giant Colorful" T "n=nuke.toNode('_INPUT_CTRL')\n\nn.knob('lens1Active').setValue(True)\nn.knob('lens1Size').setValue(6)\nn.knob('lens1Col').setValue(0.4,0)\nn.knob('lens1Col').setValue(0.664,1)\nn.knob('lens1Col').setValue(1.85,2)\nn.knob('lens1Blur').setValue(0)\nn.knob('lens1AxisPos').setValue(-0.16)\nn.knob('lens1Polygon').setValue(0)\nn.knob('lens1Diaphragm').setValue(1)\nn.knob('lens1DiaphRot').setValue(0)\n\nn.knob('lens2Active').setValue(True)\nn.knob('lens2Size').setValue(1.1)\nn.knob('lens2Col').setValue(2.67,0)\nn.knob('lens2Col').setValue(3.09,1)\nn.knob('lens2Col').setValue(0.68,2)\nn.knob('lens2Blur').setValue(0)\nn.knob('lens2AxisPos').setValue(0.05)\nn.knob('lens2Polygon').setValue(0)\nn.knob('lens2Diaphragm').setValue(1)\nn.knob('lens2DiaphRot').setValue(0)\n\nn.knob('lens3Active').setValue(True)\nn.knob('lens3Size').setValue(410)\nn.knob('lens3Col').setValue(14,0)\nn.knob('lens3Col').setValue(4.77,1)\nn.knob('lens3Col').setValue(0.76,2)\nn.knob('lens3Blur').setValue(0)\nn.knob('lens3AxisPos').setValue(1.1)\nn.knob('lens3Polygon').setValue(0)\nn.knob('lens3Diaphragm').setValue(1)\nn.knob('lens3DiaphRot').setValue(0)\n\nn.knob('lens4Active').setValue(True)\nn.knob('lens4Size').setValue(370)\nn.knob('lens4Col').setValue(12,0)\nn.knob('lens4Col').setValue(3.96,1)\nn.knob('lens4Col').setValue(10.37,2)\nn.knob('lens4Blur').setValue(7)\nn.knob('lens4AxisPos').setValue(0.95)\nn.knob('lens4Polygon').setValue(0)\nn.knob('lens4Diaphragm').setValue(1)\nn.knob('lens4DiaphRot').setValue(0)\n\nn.knob('lens5Active').setValue(True)\nn.knob('lens5Size').setValue(1120)\nn.knob('lens5Col').setValue(110,0)\nn.knob('lens5Col').setValue(48.46,1)\nn.knob('lens5Col').setValue(7.55,2)\nn.knob('lens5Blur').setValue(18.8)\nn.knob('lens5AxisPos').setValue(0.26)\nn.knob('lens5Polygon').setValue(0)\nn.knob('lens5Diaphragm').setValue(1)\nn.knob('lens5DiaphRot').setValue(0)\n\nn.knob('lens6Active').setValue(True)\nn.knob('lens6Size').setValue(330)\nn.knob('lens6Col').setValue(0.55,0)\nn.knob('lens6Col').setValue(0.329,1)\nn.knob('lens6Col').setValue(0.073,2)\nn.knob('lens6Blur').setValue(0)\nn.knob('lens6AxisPos').setValue(-1.43)\nn.knob('lens6Polygon').setValue(0)\nn.knob('lens6Diaphragm').setValue(1)\nn.knob('lens6DiaphRot').setValue(0)\n\nn.knob('lens7Active').setValue(True)\nn.knob('lens7Size').setValue(360)\nn.knob('lens7Col').setValue(5.69,0)\nn.knob('lens7Col').setValue(3.44,1)\nn.knob('lens7Col').setValue(0,2)\nn.knob('lens7Blur').setValue(0)\nn.knob('lens7AxisPos').setValue(-1.58)\nn.knob('lens7Polygon').setValue(0)\nn.knob('lens7Diaphragm').setValue(1)\nn.knob('lens7DiaphRot').setValue(0)\n\nn.knob('lens8Active').setValue(True)\nn.knob('lens8Size').setValue(8)\nn.knob('lens8Col').setValue(0.38,0)\nn.knob('lens8Col').setValue(1.5,1)\nn.knob('lens8Col').setValue(3.79,2)\nn.knob('lens8Blur').setValue(0)\nn.knob('lens8AxisPos').setValue(0.1)\nn.knob('lens8Polygon').setValue(0)\nn.knob('lens8Diaphragm').setValue(1)\nn.knob('lens8DiaphRot').setValue(0)\n\nn.knob('lens9Active').setValue(True)\nn.knob('lens9Size').setValue(46.5)\nn.knob('lens9Col').setValue(1.8,0)\nn.knob('lens9Col').setValue(1.88,1)\nn.knob('lens9Col').setValue(3.29,2)\nn.knob('lens9Blur').setValue(2.8)\nn.knob('lens9AxisPos').setValue(-0.22)\nn.knob('lens9Polygon').setValue(0)\nn.knob('lens9Diaphragm').setValue(1)\nn.knob('lens9DiaphRot').setValue(0)\n\nn.knob('lens10Active').setValue(True)\nn.knob('lens10Size').setValue(400)\nn.knob('lens10Col').setValue(14,0)\nn.knob('lens10Col').setValue(7.09,1)\nn.knob('lens10Col').setValue(12.38,2)\nn.knob('lens10Blur').setValue(0)\nn.knob('lens10AxisPos').setValue(0.44)\nn.knob('lens10Polygon').setValue(0)\nn.knob('lens10Diaphragm').setValue(1)\nn.knob('lens10DiaphRot').setValue(0)\n\nn.knob('lens11Active').setValue(True)\nn.knob('lens11Size').setValue(6.2)\nn.knob('lens11Col').setValue(0.14,0)\nn.knob('lens11Col').setValue(0.11,1)\nn.knob('lens11Col').setValue(0.014,2)\nn.knob('lens11Blur').setValue(10.8)\nn.knob('lens11AxisPos').setValue(-1.4)\nn.knob('lens11Polygon').setValue(0)\nn.knob('lens11Diaphragm').setValue(1)\nn.knob('lens11DiaphRot').setValue(0)\n\nn.knob('lens12Active').setValue(True)\nn.knob('lens12Size').setValue(10)\nn.knob('lens12Col').setValue(0.11,0)\nn.knob('lens12Col').setValue(0.05,1)\nn.knob('lens12Col').setValue(0.02,2)\nn.knob('lens12Blur').setValue(4.6)\nn.knob('lens12AxisPos').setValue(-1.42)\nn.knob('lens12Polygon').setValue(0)\nn.knob('lens12Diaphragm').setValue(1)\nn.knob('lens12DiaphRot').setValue(0)\n\nn.knob('lens13Active').setValue(True)\nn.knob('lens13Size').setValue(2.3)\nn.knob('lens13Col').setValue(0.14,0)\nn.knob('lens13Col').setValue(0.13,1)\nn.knob('lens13Col').setValue(0.04,2)\nn.knob('lens13Blur').setValue(3)\nn.knob('lens13AxisPos').setValue(-1.48)\nn.knob('lens13Polygon').setValue(0)\nn.knob('lens13Diaphragm').setValue(1)\nn.knob('lens13DiaphRot').setValue(0)\n\nn.knob('lens14Active').setValue(True)\nn.knob('lens14Size').setValue(1020)\nn.knob('lens14Col').setValue(260,0)\nn.knob('lens14Col').setValue(122,1)\nn.knob('lens14Col').setValue(12.6,2)\nn.knob('lens14Blur').setValue(0)\nn.knob('lens14AxisPos').setValue(0.5)\nn.knob('lens14Polygon').setValue(0)\nn.knob('lens14Diaphragm').setValue(1)\nn.knob('lens14DiaphRot').setValue(0)\n\nn.knob('lens15Active').setValue(True)\nn.knob('lens15Size').setValue(650)\nn.knob('lens15Col').setValue(80,0)\nn.knob('lens15Col').setValue(21.6,1)\nn.knob('lens15Col').setValue(47.88,2)\nn.knob('lens15Blur').setValue(0)\nn.knob('lens15AxisPos').setValue(0.4)\nn.knob('lens15Polygon').setValue(0)\nn.knob('lens15Diaphragm').setValue(1)\nn.knob('lens15DiaphRot').setValue(0)\n\nn.knob('lens16Active').setValue(True)\nn.knob('lens16Size').setValue(60)\nn.knob('lens16Col').setValue(2.04,0)\nn.knob('lens16Col').setValue(0.42,1)\nn.knob('lens16Col').setValue(0.10,2)\nn.knob('lens16Blur').setValue(0)\nn.knob('lens16AxisPos').setValue(0.4)\nn.knob('lens16Polygon').setValue(0)\nn.knob('lens16Diaphragm').setValue(1)\nn.knob('lens16DiaphRot').setValue(0)\n\nn.knob('lens17Active').setValue(True)\nn.knob('lens17Size').setValue(80)\nn.knob('lens17Col').setValue(1.2,0)\nn.knob('lens17Col').setValue(0.36,1)\nn.knob('lens17Col').setValue(0.388,2)\nn.knob('lens17Blur').setValue(70)\nn.knob('lens17AxisPos').setValue(-2.4)\nn.knob('lens17Polygon').setValue(0)\nn.knob('lens17Diaphragm').setValue(1)\nn.knob('lens17DiaphRot').setValue(0)\n\nn.knob('lens18Active').setValue(True)\nn.knob('lens18Size').setValue(60)\nn.knob('lens18Col').setValue(10,0)\nn.knob('lens18Col').setValue(4.42,1)\nn.knob('lens18Col').setValue(0,2)\nn.knob('lens18Blur').setValue(30)\nn.knob('lens18AxisPos').setValue(-0.54)\nn.knob('lens18Polygon').setValue(0)\nn.knob('lens18Diaphragm').setValue(1)\nn.knob('lens18DiaphRot').setValue(0)\n\nn.knob('lens19Active').setValue(True)\nn.knob('lens19Size').setValue(99)\nn.knob('lens19Col').setValue(1.54,0)\nn.knob('lens19Col').setValue(1.25,1)\nn.knob('lens19Col').setValue(0.24,2)\nn.knob('lens19Blur').setValue(50)\nn.knob('lens19AxisPos').setValue(1.8)\nn.knob('lens19Polygon').setValue(0)\nn.knob('lens19Diaphragm').setValue(1)\nn.knob('lens19DiaphRot').setValue(0)\n\nn.knob('lens20Active').setValue(True)\nn.knob('lens20Size').setValue(9.4)\nn.knob('lens20Col').setValue(0.239,0)\nn.knob('lens20Col').setValue(0.121,1)\nn.knob('lens20Col').setValue(0.065,2)\nn.knob('lens20Blur').setValue(4)\nn.knob('lens20AxisPos').setValue(0.58)\nn.knob('lens20Polygon').setValue(0)\nn.knob('lens20Diaphragm').setValue(1)\nn.knob('lens20DiaphRot').setValue(0)\n\n\n" +STARTLINE}
  addUserKnob {22 preset_05 l "Thin and Wide" T "n=nuke.toNode('_INPUT_CTRL')\n\nn.knob('lens1Active').setValue(True)\nn.knob('lens1Size').setValue(25.2)\nn.knob('lens1Col').setValue(0.97,0)\nn.knob('lens1Col').setValue(2.927,1)\nn.knob('lens1Col').setValue(18,2)\nn.knob('lens1Blur').setValue(0)\nn.knob('lens1AxisPos').setValue(-0.11)\nn.knob('lens1Polygon').setValue(0)\nn.knob('lens1Diaphragm').setValue(0.8)\nn.knob('lens1DiaphRot').setValue(0)\n\nn.knob('lens2Active').setValue(True)\nn.knob('lens2Size').setValue(4.8)\nn.knob('lens2Col').setValue(-2.3,0)\nn.knob('lens2Col').setValue(6.32,1)\nn.knob('lens2Col').setValue(15.39,2)\nn.knob('lens2Blur').setValue(0)\nn.knob('lens2AxisPos').setValue(-0.082)\nn.knob('lens2Polygon').setValue(0)\nn.knob('lens2Diaphragm').setValue(1)\nn.knob('lens2DiaphRot').setValue(0)\n\nn.knob('lens3Active').setValue(True)\nn.knob('lens3Size').setValue(13.5)\nn.knob('lens3Col').setValue(1.17,0)\nn.knob('lens3Col').setValue(1.72,1)\nn.knob('lens3Col').setValue(26,2)\nn.knob('lens3Blur').setValue(0)\nn.knob('lens3AxisPos').setValue(-0.06)\nn.knob('lens3Polygon').setValue(0)\nn.knob('lens3Diaphragm').setValue(0.8)\nn.knob('lens3DiaphRot').setValue(0)\n\nn.knob('lens4Active').setValue(True)\nn.knob('lens4Size').setValue(2.05)\nn.knob('lens4Col').setValue(6.93,0)\nn.knob('lens4Col').setValue(32,1)\nn.knob('lens4Col').setValue(29.82,2)\nn.knob('lens4Blur').setValue(0)\nn.knob('lens4AxisPos').setValue(0.08)\nn.knob('lens4Polygon').setValue(0)\nn.knob('lens4Diaphragm').setValue(1)\nn.knob('lens4DiaphRot').setValue(0)\n\nn.knob('lens5Active').setValue(True)\nn.knob('lens5Size').setValue(200)\nn.knob('lens5Col').setValue(1.09,0)\nn.knob('lens5Col').setValue(1.14,1)\nn.knob('lens5Col').setValue(8,2)\nn.knob('lens5Blur').setValue(0)\nn.knob('lens5AxisPos').setValue(0.27)\nn.knob('lens5Polygon').setValue(0)\nn.knob('lens5Diaphragm').setValue(1)\nn.knob('lens5DiaphRot').setValue(0)\n\nn.knob('lens6Active').setValue(True)\nn.knob('lens6Size').setValue(1000)\nn.knob('lens6Col').setValue(50,0)\nn.knob('lens6Col').setValue(6.38,1)\nn.knob('lens6Col').setValue(0,2)\nn.knob('lens6Blur').setValue(0)\nn.knob('lens6AxisPos').setValue(-1.08)\nn.knob('lens6Polygon').setValue(0)\nn.knob('lens6Diaphragm').setValue(1)\nn.knob('lens6DiaphRot').setValue(0)\n\nn.knob('lens7Active').setValue(True)\nn.knob('lens7Size').setValue(460)\nn.knob('lens7Col').setValue(0,0)\nn.knob('lens7Col').setValue(0.99,1)\nn.knob('lens7Col').setValue(20,2)\nn.knob('lens7Blur').setValue(0)\nn.knob('lens7AxisPos').setValue(-0.88)\nn.knob('lens7Polygon').setValue(0)\nn.knob('lens7Diaphragm').setValue(1)\nn.knob('lens7DiaphRot').setValue(0)\n\nn.knob('lens8Active').setValue(True)\nn.knob('lens8Size').setValue(450)\nn.knob('lens8Col').setValue(12,0)\nn.knob('lens8Col').setValue(2.25,1)\nn.knob('lens8Col').setValue(10.04,2)\nn.knob('lens8Blur').setValue(9.9)\nn.knob('lens8AxisPos').setValue(-0.69)\nn.knob('lens8Polygon').setValue(0)\nn.knob('lens8Diaphragm').setValue(1)\nn.knob('lens8DiaphRot').setValue(0)\n\nn.knob('lens9Active').setValue(True)\nn.knob('lens9Size').setValue(50.4)\nn.knob('lens9Col').setValue(0.9,0)\nn.knob('lens9Col').setValue(1.012,1)\nn.knob('lens9Col').setValue(3,2)\nn.knob('lens9Blur').setValue(2.8)\nn.knob('lens9AxisPos').setValue(0.34)\nn.knob('lens9Polygon').setValue(0)\nn.knob('lens9Diaphragm').setValue(1)\nn.knob('lens9DiaphRot').setValue(0)\n\nn.knob('lens10Active').setValue(True)\nn.knob('lens10Size').setValue(85.6)\nn.knob('lens10Col').setValue(2.79,0)\nn.knob('lens10Col').setValue(1.537,1)\nn.knob('lens10Col').setValue(-2.6,2)\nn.knob('lens10Blur').setValue(4.6)\nn.knob('lens10AxisPos').setValue(0.37)\nn.knob('lens10Polygon').setValue(0)\nn.knob('lens10Diaphragm').setValue(1)\nn.knob('lens10DiaphRot').setValue(0)\n\nn.knob('lens11Active').setValue(True)\nn.knob('lens11Size').setValue(83.5)\nn.knob('lens11Col').setValue(0,0)\nn.knob('lens11Col').setValue(4.86,1)\nn.knob('lens11Col').setValue(30,2)\nn.knob('lens11Blur').setValue(0)\nn.knob('lens11AxisPos').setValue(0.15)\nn.knob('lens11Polygon').setValue(0)\nn.knob('lens11Diaphragm').setValue(1)\nn.knob('lens11DiaphRot').setValue(0)\n\nn.knob('lens12Active').setValue(True)\nn.knob('lens12Size').setValue(40)\nn.knob('lens12Col').setValue(10,0)\nn.knob('lens12Col').setValue(3.9,1)\nn.knob('lens12Col').setValue(7.98,2)\nn.knob('lens12Blur').setValue(4.6)\nn.knob('lens12AxisPos').setValue(0.44)\nn.knob('lens12Polygon').setValue(0)\nn.knob('lens12Diaphragm').setValue(1)\nn.knob('lens12DiaphRot').setValue(0)\n\nn.knob('lens13Active').setValue(True)\nn.knob('lens13Size').setValue(1.4)\nn.knob('lens13Col').setValue(3.29,0)\nn.knob('lens13Col').setValue(1.28,1)\nn.knob('lens13Col').setValue(2.6,2)\nn.knob('lens13Blur').setValue(5.6)\nn.knob('lens13AxisPos').setValue(0.45)\nn.knob('lens13Polygon').setValue(0)\nn.knob('lens13Diaphragm').setValue(1)\nn.knob('lens13DiaphRot').setValue(0)\n\nn.knob('lens14Active').setValue(True)\nn.knob('lens14Size').setValue(1)\nn.knob('lens14Col').setValue(1.64,0)\nn.knob('lens14Col').setValue(0.74,1)\nn.knob('lens14Col').setValue(1.3,2)\nn.knob('lens14Blur').setValue(2)\nn.knob('lens14AxisPos').setValue(0.458)\nn.knob('lens14Polygon').setValue(0)\nn.knob('lens14Diaphragm').setValue(1)\nn.knob('lens14DiaphRot').setValue(0)\n\nn.knob('lens15Active').setValue(True)\nn.knob('lens15Size').setValue(1050)\nn.knob('lens15Col').setValue(80,0)\nn.knob('lens15Col').setValue(24,1)\nn.knob('lens15Col').setValue(49.19,2)\nn.knob('lens15Blur').setValue(0)\nn.knob('lens15AxisPos').setValue(0.8)\nn.knob('lens15Polygon').setValue(0)\nn.knob('lens15Diaphragm').setValue(1)\nn.knob('lens15DiaphRot').setValue(0)\n\nn.knob('lens16Active').setValue(True)\nn.knob('lens16Size').setValue(600)\nn.knob('lens16Col').setValue(30,0)\nn.knob('lens16Col').setValue(7.29,1)\nn.knob('lens16Col').setValue(12.7,2)\nn.knob('lens16Blur').setValue(0)\nn.knob('lens16AxisPos').setValue(-0.42)\nn.knob('lens16Polygon').setValue(0)\nn.knob('lens16Diaphragm').setValue(1)\nn.knob('lens16DiaphRot').setValue(0)\n\nn.knob('lens17Active').setValue(True)\nn.knob('lens17Size').setValue(600)\nn.knob('lens17Col').setValue(25,0)\nn.knob('lens17Col').setValue(7.5,1)\nn.knob('lens17Col').setValue(8.08,2)\nn.knob('lens17Blur').setValue(50)\nn.knob('lens17AxisPos').setValue(0.7)\nn.knob('lens17Polygon').setValue(0)\nn.knob('lens17Diaphragm').setValue(1)\nn.knob('lens17DiaphRot').setValue(0)\n\nn.knob('lens18Active').setValue(True)\nn.knob('lens18Size').setValue(270)\nn.knob('lens18Col').setValue(6.4,0)\nn.knob('lens18Col').setValue(3.69,1)\nn.knob('lens18Col').setValue(0.73,2)\nn.knob('lens18Blur').setValue(0)\nn.knob('lens18AxisPos').setValue(-0.36)\nn.knob('lens18Polygon').setValue(0)\nn.knob('lens18Diaphragm').setValue(1)\nn.knob('lens18DiaphRot').setValue(0)\n\nn.knob('lens19Active').setValue(True)\nn.knob('lens19Size').setValue(99)\nn.knob('lens19Col').setValue(5.249,0)\nn.knob('lens19Col').setValue(7.51,1)\nn.knob('lens19Col').setValue(40,2)\nn.knob('lens19Blur').setValue(20)\nn.knob('lens19AxisPos').setValue(-0.16)\nn.knob('lens19Polygon').setValue(0)\nn.knob('lens19Diaphragm').setValue(1)\nn.knob('lens19DiaphRot').setValue(0)\n\nn.knob('lens20Active').setValue(True)\nn.knob('lens20Size').setValue(9.4)\nn.knob('lens20Col').setValue(0.03,0)\nn.knob('lens20Col').setValue(0.006,1)\nn.knob('lens20Col').setValue(0.015,2)\nn.knob('lens20Blur').setValue(4)\nn.knob('lens20AxisPos').setValue(0.5)\nn.knob('lens20Polygon').setValue(0)\nn.knob('lens20Diaphragm').setValue(1)\nn.knob('lens20DiaphRot').setValue(0)\n\n\n" +STARTLINE}
  addUserKnob {22 preset_06 l "Hexa Green Orange" T "n=nuke.toNode('_INPUT_CTRL')\n\nn.knob('lens1Active').setValue(True)\nn.knob('lens1Size').setValue(140)\nn.knob('lens1Col').setValue(0.918,0)\nn.knob('lens1Col').setValue(6.62,1)\nn.knob('lens1Col').setValue(7,2)\nn.knob('lens1Blur').setValue(12.9)\nn.knob('lens1AxisPos').setValue(-0.426)\nn.knob('lens1Polygon').setValue(0)\nn.knob('lens1Diaphragm').setValue(0.722)\nn.knob('lens1DiaphRot').setValue(26)\n\nn.knob('lens2Active').setValue(True)\nn.knob('lens2Size').setValue(140)\nn.knob('lens2Col').setValue(10.72,0)\nn.knob('lens2Col').setValue(13,1)\nn.knob('lens2Col').setValue(1.63,2)\nn.knob('lens2Blur').setValue(9.5)\nn.knob('lens2AxisPos').setValue(-0.358)\nn.knob('lens2Polygon').setValue(0)\nn.knob('lens2Diaphragm').setValue(0.656)\nn.knob('lens2DiaphRot').setValue(26)\n\nn.knob('lens3Active').setValue(True)\nn.knob('lens3Size').setValue(82)\nn.knob('lens3Col').setValue(3,0)\nn.knob('lens3Col').setValue(1.72,1)\nn.knob('lens3Col').setValue(0,2)\nn.knob('lens3Blur').setValue(5.4)\nn.knob('lens3AxisPos').setValue(-0.346)\nn.knob('lens3Polygon').setValue(0)\nn.knob('lens3Diaphragm').setValue(0.792)\nn.knob('lens3DiaphRot').setValue(26)\n\nn.knob('lens4Active').setValue(True)\nn.knob('lens4Size').setValue(230)\nn.knob('lens4Col').setValue(152,0)\nn.knob('lens4Col').setValue(41.01,1)\nn.knob('lens4Col').setValue(0,2)\nn.knob('lens4Blur').setValue(6.1)\nn.knob('lens4AxisPos').setValue(-0.634)\nn.knob('lens4Polygon').setValue(0)\nn.knob('lens4Diaphragm').setValue(0.566)\nn.knob('lens4DiaphRot').setValue(26)\n\nn.knob('lens5Active').setValue(True)\nn.knob('lens5Size').setValue(250)\nn.knob('lens5Col').setValue(23,0)\nn.knob('lens5Col').setValue(19,1)\nn.knob('lens5Col').setValue(0,2)\nn.knob('lens5Blur').setValue(60)\nn.knob('lens5AxisPos').setValue(-0.66)\nn.knob('lens5Polygon').setValue(0)\nn.knob('lens5Diaphragm').setValue(1)\nn.knob('lens5DiaphRot').setValue(26)\n\nn.knob('lens6Active').setValue(True)\nn.knob('lens6Size').setValue(520)\nn.knob('lens6Col').setValue(12,0)\nn.knob('lens6Col').setValue(-2.54,1)\nn.knob('lens6Col').setValue(-4.8,2)\nn.knob('lens6Blur').setValue(21)\nn.knob('lens6AxisPos').setValue(-1.06)\nn.knob('lens6Polygon').setValue(0)\nn.knob('lens6Diaphragm').setValue(0.446)\nn.knob('lens6DiaphRot').setValue(26)\n\nn.knob('lens7Active').setValue(True)\nn.knob('lens7Size').setValue(460)\nn.knob('lens7Col').setValue(2.46,0)\nn.knob('lens7Col').setValue(9,1)\nn.knob('lens7Col').setValue(0.9,2)\nn.knob('lens7Blur').setValue(50)\nn.knob('lens7AxisPos').setValue(-1.04)\nn.knob('lens7Polygon').setValue(0)\nn.knob('lens7Diaphragm').setValue(0.536)\nn.knob('lens7DiaphRot').setValue(26)\n\nn.knob('lens8Active').setValue(True)\nn.knob('lens8Size').setValue(110)\nn.knob('lens8Col').setValue(4,0)\nn.knob('lens8Col').setValue(2.44,1)\nn.knob('lens8Col').setValue(0,2)\nn.knob('lens8Blur').setValue(4.5)\nn.knob('lens8AxisPos').setValue(0.414)\nn.knob('lens8Polygon').setValue(0)\nn.knob('lens8Diaphragm').setValue(0.754)\nn.knob('lens8DiaphRot').setValue(26)\n\nn.knob('lens9Active').setValue(True)\nn.knob('lens9Size').setValue(50)\nn.knob('lens9Col').setValue(7,0)\nn.knob('lens9Col').setValue(4.89,1)\nn.knob('lens9Col').setValue(2.45,2)\nn.knob('lens9Blur').setValue(2.8)\nn.knob('lens9AxisPos').setValue(0.19)\nn.knob('lens9Polygon').setValue(0)\nn.knob('lens9Diaphragm').setValue(0.726)\nn.knob('lens9DiaphRot').setValue(26)\n\nn.knob('lens10Active').setValue(True)\nn.knob('lens10Size').setValue(40)\nn.knob('lens10Col').setValue(-0.32,0)\nn.knob('lens10Col').setValue(10,1)\nn.knob('lens10Col').setValue(-5,2)\nn.knob('lens10Blur').setValue(12.1)\nn.knob('lens10AxisPos').setValue(0.234)\nn.knob('lens10Polygon').setValue(0)\nn.knob('lens10Diaphragm').setValue(0.836)\nn.knob('lens10DiaphRot').setValue(26)\n\nn.knob('lens11Active').setValue(True)\nn.knob('lens11Size').setValue(57)\nn.knob('lens11Col').setValue(5.3,0)\nn.knob('lens11Col').setValue(10,1)\nn.knob('lens11Col').setValue(6.13,2)\nn.knob('lens11Blur').setValue(3)\nn.knob('lens11AxisPos').setValue(0.3)\nn.knob('lens11Polygon').setValue(0)\nn.knob('lens11Diaphragm').setValue(0.732)\nn.knob('lens11DiaphRot').setValue(26)\n\nn.knob('lens12Active').setValue(True)\nn.knob('lens12Size').setValue(70)\nn.knob('lens12Col').setValue(-9,0)\nn.knob('lens12Col').setValue(16,1)\nn.knob('lens12Col').setValue(20,2)\nn.knob('lens12Blur').setValue(4.6)\nn.knob('lens12AxisPos').setValue(0.216)\nn.knob('lens12Polygon').setValue(0)\nn.knob('lens12Diaphragm').setValue(1)\nn.knob('lens12DiaphRot').setValue(26)\n\nn.knob('lens13Active').setValue(True)\nn.knob('lens13Size').setValue(120)\nn.knob('lens13Col').setValue(10,0)\nn.knob('lens13Col').setValue(8.51,1)\nn.knob('lens13Col').setValue(1.19,2)\nn.knob('lens13Blur').setValue(5.6)\nn.knob('lens13AxisPos').setValue(0.242)\nn.knob('lens13Polygon').setValue(0)\nn.knob('lens13Diaphragm').setValue(0.363)\nn.knob('lens13DiaphRot').setValue(26)\n\nn.knob('lens14Active').setValue(True)\nn.knob('lens14Size').setValue(20)\nn.knob('lens14Col').setValue(5.5,0)\nn.knob('lens14Col').setValue(3.02,1)\nn.knob('lens14Col').setValue(0,2)\nn.knob('lens14Blur').setValue(1.7)\nn.knob('lens14AxisPos').setValue(0.18)\nn.knob('lens14Polygon').setValue(0)\nn.knob('lens14Diaphragm').setValue(0.532)\nn.knob('lens14DiaphRot').setValue(26)\n\nn.knob('lens15Active').setValue(True)\nn.knob('lens15Size').setValue(500)\nn.knob('lens15Col').setValue(50,0)\nn.knob('lens15Col').setValue(21.61,1)\nn.knob('lens15Col').setValue(-7.5,2)\nn.knob('lens15Blur').setValue(500)\nn.knob('lens15AxisPos').setValue(1.2)\nn.knob('lens15Polygon').setValue(0)\nn.knob('lens15Diaphragm').setValue(1)\nn.knob('lens15DiaphRot').setValue(0)\n\nn.knob('lens16Active').setValue(True)\nn.knob('lens16Size').setValue(30)\nn.knob('lens16Col').setValue(20,0)\nn.knob('lens16Col').setValue(16.7,1)\nn.knob('lens16Col').setValue(5,2)\nn.knob('lens16Blur').setValue(5)\nn.knob('lens16AxisPos').setValue(0.7)\nn.knob('lens16Polygon').setValue(0)\nn.knob('lens16Diaphragm').setValue(0.496)\nn.knob('lens16DiaphRot').setValue(26)\n\nn.knob('lens17Active').setValue(True)\nn.knob('lens17Size').setValue(10)\nn.knob('lens17Col').setValue(5,0)\nn.knob('lens17Col').setValue(2.31,1)\nn.knob('lens17Col').setValue(0.26,2)\nn.knob('lens17Blur').setValue(3.7)\nn.knob('lens17AxisPos').setValue(0.67)\nn.knob('lens17Polygon').setValue(0)\nn.knob('lens17Diaphragm').setValue(0.468)\nn.knob('lens17DiaphRot').setValue(26)\n\nn.knob('lens18Active').setValue(True)\nn.knob('lens18Size').setValue(200)\nn.knob('lens18Col').setValue(6.4,0)\nn.knob('lens18Col').setValue(0.86,1)\nn.knob('lens18Col').setValue(-0.64,2)\nn.knob('lens18Blur').setValue(70)\nn.knob('lens18AxisPos').setValue(0.75)\nn.knob('lens18Polygon').setValue(0)\nn.knob('lens18Diaphragm').setValue(0.624)\nn.knob('lens18DiaphRot').setValue(26)\n\nn.knob('lens19Active').setValue(True)\nn.knob('lens19Size').setValue(9)\nn.knob('lens19Col').setValue(0.3,0)\nn.knob('lens19Col').setValue(0.1,1)\nn.knob('lens19Col').setValue(0.284,2)\nn.knob('lens19Blur').setValue(9.4)\nn.knob('lens19AxisPos').setValue(0.64)\nn.knob('lens19Polygon').setValue(0)\nn.knob('lens19Diaphragm').setValue(1)\nn.knob('lens19DiaphRot').setValue(0)\n\nn.knob('lens20Active').setValue(True)\nn.knob('lens20Size').setValue(500)\nn.knob('lens20Col').setValue(500,0)\nn.knob('lens20Col').setValue(100,1)\nn.knob('lens20Col').setValue(250,2)\nn.knob('lens20Blur').setValue(100)\nn.knob('lens20AxisPos').setValue(-0.1)\nn.knob('lens20Polygon').setValue(0)\nn.knob('lens20Diaphragm').setValue(1)\nn.knob('lens20DiaphRot').setValue(26)\n\n\n" +STARTLINE}
  addUserKnob {20 Lenses}
  addUserKnob {6 showNumbers l "show numbers on lenses" +STARTLINE}
  addUserKnob {26 ""}
  addUserKnob {20 Lens1GRP l "lens 01" n 1}
  Lens1GRP 0
  addUserKnob {6 lens1Active l active +STARTLINE}
  lens1Active true
  addUserKnob {14 lens1Size l size R 0 100}
  lens1Size 25.2
  addUserKnob {18 lens1Col l color R 0 10}
  lens1Col {0.97 2.927 18}
  addUserKnob {6 lens1Col_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens1Col_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens1Col_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens1Blur l blur R 0 50}
  addUserKnob {7 lens1AxisPos l "axis pos" R -3 3}
  lens1AxisPos -0.11
  addUserKnob {4 lens1Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon ""}}
  addUserKnob {7 lens1Diaphragm l diaphragm}
  lens1Diaphragm 0.8
  addUserKnob {7 lens1DiaphRot l "diaph rotation" R -180 180}
  addUserKnob {7 lens1grainOpacity l "grain opacity"}
  lens1grainOpacity 1
  addUserKnob {7 lens1grainSize l "grain size" R 0 1000}
  lens1grainSize 100
  addUserKnob {7 lens1grainGain l "grain gain" R 0 3}
  lens1grainGain 1
  addUserKnob {7 lens1reflectionOpacity l "refl opacity"}
  lens1reflectionOpacity 1
  addUserKnob {7 lens1reflectionRotation l "refl rotation" R 0 360}
  addUserKnob {7 lens1reflWhitepoint l "refl whitepoint" R 0 2}
  lens1reflWhitepoint 1
  addUserKnob {18 lens1reflectionGamma l "refl gamma" R 0 5}
  lens1reflectionGamma 1
  addUserKnob {6 lens1reflectionGamma_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens1reflectionGamma_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens1reflectionGamma_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens1reflectionBlur l "refl blur" R 0 50}
  addUserKnob {20 endGroup n -1}
  addUserKnob {26 ""}
  addUserKnob {20 lens2GRP l "lens 02" n 1}
  lens2GRP 0
  addUserKnob {6 lens2Active l active +STARTLINE}
  lens2Active true
  addUserKnob {14 lens2Size l size R 0 100}
  lens2Size 4.8
  addUserKnob {18 lens2Col l color R 0 10}
  lens2Col {-2.3 6.32 15.39}
  addUserKnob {6 lens2Col_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens2Col_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens2Col_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens2Blur l blur R 0 50}
  addUserKnob {7 lens2AxisPos l "axis pos" R -3 3}
  lens2AxisPos -0.082
  addUserKnob {4 lens2Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon ""}}
  addUserKnob {7 lens2Diaphragm l diaphragm}
  lens2Diaphragm 1
  addUserKnob {7 lens2DiaphRot l "diaph rotation" R -180 180}
  addUserKnob {7 lens2grainOpacity l "grain opacity"}
  lens2grainOpacity 1
  addUserKnob {7 lens2grainSize l "grain size" R 0 1000}
  lens2grainSize 100
  addUserKnob {7 lens2grainGain l "grain gain" R 0 3}
  lens2grainGain 1
  addUserKnob {7 lens2reflectionOpacity l "refl opacity"}
  lens2reflectionOpacity 1
  addUserKnob {7 lens2reflectionRotation l "refl rotation" R 0 360}
  addUserKnob {7 lens2reflWhitepoint l "refl whitepoint" R 0 2}
  lens2reflWhitepoint 1
  addUserKnob {18 lens2reflectionGamma l "refl gamma" R 0 5}
  lens2reflectionGamma 1
  addUserKnob {6 lens2reflectionGamma_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens2reflectionGamma_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens2reflectionGamma_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens2reflectionBlur l "refl blur" R 0 50}
  addUserKnob {20 endGroup_1 l endGroup n -1}
  addUserKnob {26 ""}
  addUserKnob {20 lens3GRP l "lens 03" n 1}
  lens3GRP 0
  addUserKnob {6 lens3Active l active +STARTLINE}
  lens3Active true
  addUserKnob {14 lens3Size l size R 0 100}
  lens3Size 13.5
  addUserKnob {18 lens3Col l color R 0 10}
  lens3Col {1.17 1.72 26}
  addUserKnob {6 lens3Col_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens3Col_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens3Col_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens3Blur l blur R 0 50}
  addUserKnob {7 lens3AxisPos l "axis pos" R -3 3}
  lens3AxisPos -0.06
  addUserKnob {4 lens3Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon ""}}
  addUserKnob {7 lens3Diaphragm l diaphragm}
  lens3Diaphragm 0.8
  addUserKnob {7 lens3DiaphRot l "diaph rotation" R -180 180}
  addUserKnob {7 lens3grainOpacity l "grain opacity"}
  lens3grainOpacity 1
  addUserKnob {7 lens3grainSize l "grain size" t "\t" R 0 1000}
  lens3grainSize 100
  addUserKnob {7 lens3grainGain l "grain gain" R 0 3}
  lens3grainGain 1
  addUserKnob {7 lens3reflectionOpacity l "refl opacity"}
  lens3reflectionOpacity 1
  addUserKnob {7 lens3reflectionRotation l "refl rotation" R 0 360}
  addUserKnob {7 lens3reflWhitepoint l "refl whitepoint" R 0 2}
  lens3reflWhitepoint 1
  addUserKnob {18 lens3reflectionGamma l "refl gamma" R 0 5}
  lens3reflectionGamma 1
  addUserKnob {6 lens3reflectionGamma_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens3reflectionGamma_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens3reflectionGamma_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens3reflectionBlur l "refl blur" R 0 50}
  addUserKnob {20 endGroup_2 l endGroup n -1}
  addUserKnob {26 ""}
  addUserKnob {20 lens4GRP l "lens 04" n 1}
  lens4GRP 0
  addUserKnob {6 lens4Active l active +STARTLINE}
  lens4Active true
  addUserKnob {14 lens4Size l size R 0 100}
  lens4Size 2.05
  addUserKnob {18 lens4Col l color R 0 10}
  lens4Col {6.93 32 29.82}
  addUserKnob {6 lens4Col_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens4Col_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens4Col_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens4Blur l blur R 0 50}
  addUserKnob {7 lens4AxisPos l "axis pos" R -3 3}
  lens4AxisPos 0.08
  addUserKnob {4 lens4Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon ""}}
  addUserKnob {7 lens4Diaphragm l diaphragm}
  lens4Diaphragm 1
  addUserKnob {7 lens4DiaphRot l "diaph rotation" R -180 180}
  addUserKnob {7 lens4grainOpacity l "grain opacity"}
  lens4grainOpacity 1
  addUserKnob {7 lens4grainSize l "grain size" R 0 1000}
  lens4grainSize 100
  addUserKnob {7 lens4grainGain l "grain gain" R 0 3}
  lens4grainGain 1
  addUserKnob {7 lens4reflectionOpacity l "refl opacity"}
  lens4reflectionOpacity 1
  addUserKnob {7 lens4reflectionRotation l "refl rotation" R 0 360}
  addUserKnob {7 lens4reflWhitepoint l "refl whitepoint" R 0 2}
  lens4reflWhitepoint 1
  addUserKnob {18 lens4reflectionGamma l "refl gamma" R 0 5}
  lens4reflectionGamma 1
  addUserKnob {6 lens4reflectionGamma_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens4reflectionGamma_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens4reflectionGamma_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens4reflectionBlur l "refl blur" R 0 50}
  addUserKnob {20 endGroup_3 l endGroup n -1}
  addUserKnob {26 ""}
  addUserKnob {20 lens5GRP l "lens 05" n 1}
  lens5GRP 0
  addUserKnob {6 lens5Active l active +STARTLINE}
  lens5Active true
  addUserKnob {14 lens5Size l size R 0 100}
  lens5Size 200
  addUserKnob {18 lens5Col l color R 0 10}
  lens5Col {1.09 1.14 8}
  addUserKnob {6 lens5Col_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens5Col_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens5Col_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens5Blur l blur R 0 50}
  addUserKnob {7 lens5AxisPos l "axis pos" R -3 3}
  lens5AxisPos 0.27
  addUserKnob {4 lens5Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon ""}}
  addUserKnob {7 lens5Diaphragm l diaphragm}
  lens5Diaphragm 1
  addUserKnob {7 lens5DiaphRot l "diaph rotation" R -180 180}
  addUserKnob {7 lens5grainOpacity l "grain opacity"}
  lens5grainOpacity 1
  addUserKnob {7 lens5grainSize l "grain size" R 0 1000}
  lens5grainSize 100
  addUserKnob {7 lens5grainGain l "grain gain" R 0 3}
  lens5grainGain 1
  addUserKnob {7 lens5reflectionOpacity l "refl opacity"}
  lens5reflectionOpacity 1
  addUserKnob {7 lens5reflectionRotation l "refl rotation" R 0 360}
  addUserKnob {7 lens5reflWhitepoint l "refl whitepoint" R 0 2}
  lens5reflWhitepoint 1
  addUserKnob {18 lens5reflectionGamma l "refl gamma" R 0 5}
  lens5reflectionGamma 1
  addUserKnob {6 lens5reflectionGamma_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens5reflectionGamma_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens5reflectionGamma_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens5reflectionBlur l "refl blur" R 0 50}
  addUserKnob {20 endGroup_4 l endGroup n -1}
  addUserKnob {26 ""}
  addUserKnob {20 lens6GRP l "lens 06" n 1}
  lens6GRP 0
  addUserKnob {6 lens6Active l active +STARTLINE}
  lens6Active true
  addUserKnob {14 lens6Size l size R 0 100}
  lens6Size 1000
  addUserKnob {18 lens6Col l color R 0 10}
  lens6Col {50 6.38 0}
  addUserKnob {6 lens6Col_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens6Col_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens6Col_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens6Blur l blur R 0 50}
  addUserKnob {7 lens6AxisPos l "axis pos" R -3 3}
  lens6AxisPos -1.08
  addUserKnob {4 lens6Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon ""}}
  addUserKnob {7 lens6Diaphragm l diaphragm}
  lens6Diaphragm 1
  addUserKnob {7 lens6DiaphRot l "diaph rotation" R -180 180}
  addUserKnob {7 lens6grainOpacity l "grain opacity"}
  lens6grainOpacity 1
  addUserKnob {7 lens6grainSize l "grain size" R 0 1000}
  lens6grainSize 100
  addUserKnob {7 lens6grainGain l "grain gain" R 0 3}
  lens6grainGain 1
  addUserKnob {7 lens6reflectionOpacity l "refl opacity"}
  lens6reflectionOpacity 1
  addUserKnob {7 lens6reflectionRotation l "refl rotation" R 0 360}
  addUserKnob {7 lens6reflWhitepoint l "refl whitepoint" R 0 2}
  lens6reflWhitepoint 1
  addUserKnob {18 lens6reflectionGamma l "refl gamma" R 0 5}
  lens6reflectionGamma 1
  addUserKnob {6 lens6reflectionGamma_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens6reflectionGamma_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens6reflectionGamma_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens6reflectionBlur l "refl blur" R 0 50}
  addUserKnob {20 endGroup_5 l endGroup n -1}
  addUserKnob {26 ""}
  addUserKnob {20 lens7GRP l "lens 07" n 1}
  lens7GRP 0
  addUserKnob {6 lens7Active l active +STARTLINE}
  lens7Active true
  addUserKnob {14 lens7Size l size R 0 100}
  lens7Size 460
  addUserKnob {18 lens7Col l color R 0 10}
  lens7Col {0 3.959999084 80}
  addUserKnob {6 lens7Col_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens7Col_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens7Col_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {16 lens7Blur l blur}
  addUserKnob {7 lens7AxisPos l "axis pos" R -3 3}
  lens7AxisPos -0.88
  addUserKnob {4 lens7Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon ""}}
  addUserKnob {7 lens7Diaphragm l diaphragm}
  lens7Diaphragm 1
  addUserKnob {7 lens7DiaphRot l "diaph rotation" R -180 180}
  addUserKnob {7 lens7grainOpacity l "grain opacity"}
  lens7grainOpacity 1
  addUserKnob {7 lens7grainSize l "grain size" R 0 1000}
  lens7grainSize 100
  addUserKnob {7 lens7grainGain l "grain gain" R 0 3}
  lens7grainGain 1
  addUserKnob {7 lens7reflectionOpacity l "refl opacity"}
  lens7reflectionOpacity 1
  addUserKnob {7 lens7reflectionRotation l "refl rotation" R 0 360}
  addUserKnob {7 lens7reflWhitepoint l "refl whitepoint" R 0 2}
  lens7reflWhitepoint 1
  addUserKnob {18 lens7reflectionGamma l "refl gamma" R 0 5}
  lens7reflectionGamma 1
  addUserKnob {6 lens7reflectionGamma_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens7reflectionGamma_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens7reflectionGamma_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens7reflectionBlur l "refl blur" R 0 50}
  addUserKnob {20 endGroup_6 l endGroup n -1}
  addUserKnob {26 ""}
  addUserKnob {20 lens8GRP l "lens 08" n 1}
  lens8GRP 0
  addUserKnob {6 lens8Active l active +STARTLINE}
  lens8Active true
  addUserKnob {14 lens8Size l size R 0 100}
  lens8Size 450
  addUserKnob {18 lens8Col l color R 0 10}
  lens8Col {12 2.25 10.04}
  addUserKnob {6 lens8Col_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens8Col_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens8Col_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens8Blur l blur R 0 10}
  lens8Blur 9.9
  addUserKnob {7 lens8AxisPos l "axis pos" R -3 3}
  lens8AxisPos -0.69
  addUserKnob {4 lens8Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon ""}}
  addUserKnob {7 lens8Diaphragm l diaphragm}
  lens8Diaphragm 1
  addUserKnob {7 lens8DiaphRot l "diaph rotation" R -180 180}
  addUserKnob {7 lens8grainOpacity l "grain opacity"}
  lens8grainOpacity 1
  addUserKnob {7 lens8grainSize l "grain size" R 0 1000}
  lens8grainSize 100
  addUserKnob {7 lens8grainGain l "grain gain" R 0 3}
  lens8grainGain 1
  addUserKnob {7 lens8reflectionOpacity l "refl opacity"}
  lens8reflectionOpacity 1
  addUserKnob {7 lens8reflectionRotation l "refl rotation" R 0 360}
  addUserKnob {7 lens8reflWhitepoint l "refl whitepoint" R 0 2}
  lens8reflWhitepoint 1
  addUserKnob {18 lens8reflectionGamma l "refl gamma" R 0 5}
  lens8reflectionGamma 1
  addUserKnob {6 lens8reflectionGamma_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens8reflectionGamma_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens8reflectionGamma_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens8reflectionBlur l "refl blur" R 0 50}
  addUserKnob {20 endGroup_7 l endGroup n -1}
  addUserKnob {26 ""}
  addUserKnob {20 lens9GRP l "lens 09" n 1}
  lens9GRP 0
  addUserKnob {6 lens9Active l active +STARTLINE}
  lens9Active true
  addUserKnob {14 lens9Size l size R 0 100}
  lens9Size 50.4
  addUserKnob {18 lens9Col l color R 0 10}
  lens9Col {0.9 1.012 3}
  addUserKnob {6 lens9Col_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens9Col_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens9Col_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens9Blur l blur R 0 50}
  lens9Blur 2.8
  addUserKnob {7 lens9AxisPos l "axis pos" R -3 3}
  lens9AxisPos 0.34
  addUserKnob {4 lens9Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon ""}}
  addUserKnob {7 lens9Diaphragm l diaphragm}
  lens9Diaphragm 1
  addUserKnob {7 lens9DiaphRot l "diaph rotation" R -180 180}
  addUserKnob {7 lens9grainOpacity l "grain opacity"}
  lens9grainOpacity 1
  addUserKnob {7 lens9grainSize l "grain size" R 0 1000}
  lens9grainSize 100
  addUserKnob {7 lens9grainGain l "grain gain" R 0 3}
  lens9grainGain 1
  addUserKnob {7 lens9reflectionOpacity l "refl opacity"}
  lens9reflectionOpacity 1
  addUserKnob {7 lens9reflectionRotation l "refl rotation" R 0 360}
  addUserKnob {7 lens9reflWhitepoint l "refl whitepoint" R 0 2}
  lens9reflWhitepoint 1
  addUserKnob {18 lens9reflectionGamma l "refl gamma" R 0 5}
  lens9reflectionGamma 1
  addUserKnob {6 lens9reflectionGamma_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens9reflectionGamma_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens9reflectionGamma_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens9reflectionBlur l "refl blur" R 0 50}
  addUserKnob {20 endGroup_8 l endGroup n -1}
  addUserKnob {26 ""}
  addUserKnob {20 lens10GRP l "lens 10" n 1}
  lens10GRP 0
  addUserKnob {6 lens10Active l active +STARTLINE}
  lens10Active true
  addUserKnob {14 lens10Size l size R 0 100}
  lens10Size 85.6
  addUserKnob {18 lens10Col l color R 0 10}
  lens10Col {2.79 1.537 -2.6}
  addUserKnob {6 lens10Col_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens10Col_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens10Col_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens10Blur l blur R 0 50}
  lens10Blur 4.6
  addUserKnob {7 lens10AxisPos l "axis pos" R -3 3}
  lens10AxisPos 0.37
  addUserKnob {4 lens10Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon ""}}
  addUserKnob {7 lens10Diaphragm l diaphragm}
  lens10Diaphragm 1
  addUserKnob {7 lens10DiaphRot l "diaph rotation" R -180 180}
  addUserKnob {7 lens10grainOpacity l "grain opacity"}
  lens10grainOpacity 1
  addUserKnob {7 lens10grainSize l "grain size" R 0 1000}
  lens10grainSize 100
  addUserKnob {7 lens10grainGain l "grain gain" R 0 3}
  lens10grainGain 1
  addUserKnob {7 lens10reflectionOpacity l "refl opacity"}
  lens10reflectionOpacity 1
  addUserKnob {7 lens10reflectionRotation l "refl rotation" R 0 360}
  addUserKnob {7 lens10reflWhitepoint l "refl whitepoint" R 0 2}
  lens10reflWhitepoint 1
  addUserKnob {18 lens10reflectionGamma l "refl gamma" R 0 5}
  lens10reflectionGamma 1
  addUserKnob {6 lens10reflectionGamma_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens10reflectionGamma_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens10reflectionGamma_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens10reflectionBlur l "refl blur" R 0 50}
  addUserKnob {20 endGroup_9 l endGroup n -1}
  addUserKnob {26 ""}
  addUserKnob {20 lens11GRP l "lens 11" n 1}
  lens11GRP 0
  addUserKnob {6 lens11Active l active +STARTLINE}
  lens11Active true
  addUserKnob {14 lens11Size l size R 0 100}
  lens11Size 83.5
  addUserKnob {18 lens11Col l color R 0 10}
  lens11Col {0 4.86 30}
  addUserKnob {6 lens11Col_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens11Col_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens11Col_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens11Blur l blur R 0 50}
  addUserKnob {7 lens11AxisPos l "axis pos" R -3 3}
  lens11AxisPos 0.15
  addUserKnob {4 lens11Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon ""}}
  addUserKnob {7 lens11Diaphragm l diaphragm}
  lens11Diaphragm 1
  addUserKnob {7 lens11DiaphRot l "diaph rotation" R -180 180}
  addUserKnob {7 lens11grainOpacity l "grain opacity"}
  lens11grainOpacity 1
  addUserKnob {7 lens11grainSize l "grain size" R 0 1000}
  lens11grainSize 100
  addUserKnob {7 lens11grainGain l "grain gain" R 0 3}
  lens11grainGain 1
  addUserKnob {7 lens11reflectionOpacity l "refl opacity"}
  lens11reflectionOpacity 1
  addUserKnob {7 lens11reflectionRotation l "refl rotation" R 0 360}
  addUserKnob {7 lens11reflWhitepoint l "refl whitepoint" R 0 2}
  lens11reflWhitepoint 1
  addUserKnob {18 lens11reflectionGamma l "refl gamma" R 0 5}
  lens11reflectionGamma 1
  addUserKnob {6 lens11reflectionGamma_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens11reflectionGamma_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens11reflectionGamma_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens11reflectionBlur l "refl blur" R 0 50}
  addUserKnob {20 endGroup_10 l endGroup n -1}
  addUserKnob {26 ""}
  addUserKnob {20 lens12GRP l "lens 12" n 1}
  lens12GRP 0
  addUserKnob {6 lens12Active l active +STARTLINE}
  lens12Active true
  addUserKnob {14 lens12Size l size R 0 100}
  lens12Size 40
  addUserKnob {18 lens12Col l color R 0 10}
  lens12Col {10 3.9 7.98}
  addUserKnob {6 lens12Col_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens12Col_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens12Col_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens12Blur l blur R 0 10}
  lens12Blur 4.6
  addUserKnob {7 lens12AxisPos l "axis pos" R -3 3}
  lens12AxisPos 0.44
  addUserKnob {4 lens12Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon "" ""}}
  addUserKnob {7 lens12Diaphragm l diaphragm}
  lens12Diaphragm 1
  addUserKnob {7 lens12DiaphRot l "diaph rotation" R -180 180}
  addUserKnob {7 lens12grainOpacity l "grain opacity"}
  lens12grainOpacity 1
  addUserKnob {7 lens12grainSize l "grain size" R 0 1000}
  lens12grainSize 100
  addUserKnob {7 lens12grainGain l "grain gain" R 0 3}
  lens12grainGain 1
  addUserKnob {7 lens12reflectionOpacity l "refl opacity"}
  lens12reflectionOpacity 1
  addUserKnob {7 lens12reflectionRotation l "refl rotation" R 0 360}
  addUserKnob {7 lens12reflWhitepoint l "refl whitepoint" R 0 2}
  lens12reflWhitepoint 1
  addUserKnob {18 lens12reflectionGamma l "refl gamma" R 0 5}
  lens12reflectionGamma 1
  addUserKnob {6 lens12reflectionGamma_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens12reflectionGamma_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens12reflectionGamma_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens12reflectionBlur l "refl blur" R 0 50}
  addUserKnob {20 endGroup_11 l endGroup n -1}
  addUserKnob {26 ""}
  addUserKnob {20 len13GRP l "lens 13" n 1}
  len13GRP 0
  addUserKnob {6 lens13Active l active +STARTLINE}
  lens13Active true
  addUserKnob {14 lens13Size l size R 0 100}
  lens13Size 1.4
  addUserKnob {18 lens13Col l color R 0 10}
  lens13Col {3.29 1.28 2.6}
  addUserKnob {6 lens13Col_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens13Col_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens13Col_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens13Blur l blur R 0 50}
  lens13Blur 5.6
  addUserKnob {7 lens13AxisPos l "axis pos" R -3 3}
  lens13AxisPos 0.45
  addUserKnob {4 lens13Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon}}
  addUserKnob {7 lens13Diaphragm l diaphragm}
  lens13Diaphragm 1
  addUserKnob {7 lens13DiaphRot l "diaph rotation" R -180 180}
  addUserKnob {7 lens13grainOpacity l "grain opacity"}
  lens13grainOpacity 1
  addUserKnob {7 lens13grainSize l "grain size" R 0 1000}
  lens13grainSize 100
  addUserKnob {7 lens13grainGain l "grain gain" R 0 3}
  lens13grainGain 1
  addUserKnob {7 lens13reflectionOpacity l "refl opacity"}
  lens13reflectionOpacity 1
  addUserKnob {7 lens13reflectionRotation l "refl rotation" R 0 360}
  addUserKnob {7 lens13reflWhitepoint l "refl whitepoint" R 0 2}
  lens13reflWhitepoint 1
  addUserKnob {18 lens13reflectionGamma l "refl gamma" R 0 5}
  lens13reflectionGamma 1
  addUserKnob {6 lens13reflectionGamma_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens13reflectionGamma_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens13reflectionGamma_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens13reflectionBlur l "refl blur" R 0 50}
  addUserKnob {20 endGroup_12 l endGroup n -1}
  addUserKnob {26 ""}
  addUserKnob {20 lens14GRP l "lens 14" n 1}
  lens14GRP 0
  addUserKnob {6 lens14Active l active +STARTLINE}
  lens14Active true
  addUserKnob {14 lens14Size l size R 0 100}
  lens14Size 1
  addUserKnob {18 lens14Col l color R 0 10}
  lens14Col {1.64 0.74 1.3}
  addUserKnob {6 lens14Col_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens14Col_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens14Col_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens14Blur l blur R 0 50}
  lens14Blur 2
  addUserKnob {7 lens14AxisPos l "axis pos" R -3 3}
  lens14AxisPos 0.458
  addUserKnob {4 lens14Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon ""}}
  addUserKnob {7 lens14Diaphragm l diaphragm}
  lens14Diaphragm 1
  addUserKnob {7 lens14DiaphRot l "diaph rotation" R -180 180}
  addUserKnob {7 lens14grainOpacity l "grain opacity"}
  lens14grainOpacity 1
  addUserKnob {7 lens14grainSize l "grain size" R 0 1000}
  lens14grainSize 100
  addUserKnob {7 lens14grainGain l "grain gain" R 0 3}
  lens14grainGain 1
  addUserKnob {7 lens14reflectionOpacity l "refl opacity"}
  lens14reflectionOpacity 1
  addUserKnob {7 lens14reflectionRotation l "refl rotation" R 0 360}
  addUserKnob {7 lens14reflWhitepoint l "refl whitepoint" R 0 2}
  lens14reflWhitepoint 1
  addUserKnob {18 lens14reflectionGamma l "refl gamma" R 0 5}
  lens14reflectionGamma 1
  addUserKnob {6 lens14reflectionGamma_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens14reflectionGamma_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens14reflectionGamma_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens14reflectionBlur l "refl blur" R 0 50}
  addUserKnob {20 endGroup_13 l endGroup n -1}
  addUserKnob {26 ""}
  addUserKnob {20 lens15GRP l "lens 15" n 1}
  lens15GRP 0
  addUserKnob {6 lens15Active l active +STARTLINE}
  lens15Active true
  addUserKnob {14 lens15Size l size R 0 100}
  lens15Size 1050
  addUserKnob {18 lens15Col l color R 0 10}
  lens15Col {80 24 49.19}
  addUserKnob {6 lens15Col_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens15Col_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens15Col_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens15Blur l blur R 0 50}
  addUserKnob {7 lens15AxisPos l "axis pos" R -3 3}
  lens15AxisPos 0.8
  addUserKnob {4 lens15Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon ""}}
  addUserKnob {7 lens15Diaphragm l diaphragm}
  lens15Diaphragm 1
  addUserKnob {7 lens15DiaphRot l "diaph rotation" R -180 180}
  addUserKnob {7 lens15grainOpacity l "grain opacity"}
  lens15grainOpacity 1
  addUserKnob {7 lens15grainSize l "grain size" R 0 1000}
  lens15grainSize 100
  addUserKnob {7 lens15grainGain l "grain gain" R 0 3}
  lens15grainGain 1
  addUserKnob {7 lens15reflectionOpacity l "refl opacity"}
  lens15reflectionOpacity 1
  addUserKnob {7 lens15reflectionRotation l "refl rotation" R 0 360}
  addUserKnob {7 lens15reflWhitepoint l "refl whitepoint" R 0 2}
  lens15reflWhitepoint 1
  addUserKnob {18 lens15reflectionGamma l "refl gamma" R 0 5}
  lens15reflectionGamma 1
  addUserKnob {6 lens15reflectionGamma_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens15reflectionGamma_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens15reflectionGamma_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens15reflectionBlur l "refl blur" R 0 50}
  addUserKnob {20 endGroup_14 l endGroup n -1}
  addUserKnob {26 ""}
  addUserKnob {20 lens16GRP l "lens 16" n 1}
  lens16GRP 0
  addUserKnob {6 lens16Active l active +STARTLINE}
  lens16Active true
  addUserKnob {14 lens16Size l size R 0 100}
  lens16Size 600
  addUserKnob {18 lens16Col l color R 0 10}
  lens16Col {30 7.29 12.7}
  addUserKnob {6 lens16Col_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens16Col_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens16Col_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens16Blur l blur R 0 50}
  addUserKnob {7 lens16AxisPos l "axis pos" R -3 3}
  lens16AxisPos -0.42
  addUserKnob {4 lens16Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon ""}}
  addUserKnob {7 lens16Diaphragm l diaphragm}
  lens16Diaphragm 1
  addUserKnob {7 lens16DiaphRot l "diaph rotation" R -180 180}
  addUserKnob {7 lens16grainOpacity l "grain opacity"}
  lens16grainOpacity 1
  addUserKnob {7 lens16grainSize l "grain size" R 0 1000}
  lens16grainSize 100
  addUserKnob {7 lens16grainGain l "grain gain" R 0 3}
  lens16grainGain 1
  addUserKnob {7 lens16reflectionOpacity l "refl opacity"}
  lens16reflectionOpacity 1
  addUserKnob {7 lens16reflectionRotation l "refl rotation" R 0 360}
  addUserKnob {7 lens16reflWhitepoint l "refl whitepoint" R 0 2}
  lens16reflWhitepoint 1
  addUserKnob {18 lens16reflectionGamma l "refl gamma" R 0 5}
  lens16reflectionGamma 1
  addUserKnob {6 lens16reflectionGamma_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens16reflectionGamma_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens16reflectionGamma_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens16reflectionBlur l "refl blur" R 0 50}
  addUserKnob {20 endGroup_15 l endGroup n -1}
  addUserKnob {26 ""}
  addUserKnob {20 lens17GRP l "lens 17" n 1}
  lens17GRP 0
  addUserKnob {6 lens17Active l active +STARTLINE}
  lens17Active true
  addUserKnob {14 lens17Size l size R 0 100}
  lens17Size 600
  addUserKnob {18 lens17Col l color R 0 10}
  lens17Col {25 7.5 8.08}
  addUserKnob {6 lens17Col_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens17Col_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens17Col_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens17Blur l blur R 0 50}
  lens17Blur 50
  addUserKnob {7 lens17AxisPos l "axis pos" R -3 3}
  lens17AxisPos 0.7
  addUserKnob {4 lens17Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon ""}}
  addUserKnob {7 lens17Diaphragm l diaphragm}
  lens17Diaphragm 1
  addUserKnob {7 lens17DiaphRot l "diaph rotation" R -180 180}
  addUserKnob {7 lens17grainOpacity l "grain opacity"}
  lens17grainOpacity 1
  addUserKnob {7 lens17grainSize l "grain size" R 0 1000}
  lens17grainSize 100
  addUserKnob {7 lens17grainGain l "grain gain" R 0 3}
  lens17grainGain 1
  addUserKnob {7 lens17reflectionOpacity l "refl opacity"}
  lens17reflectionOpacity 1
  addUserKnob {7 lens17reflectionRotation l "refl rotation" R 0 360}
  addUserKnob {7 lens17reflWhitepoint l "refl whitepoint" R 0 2}
  lens17reflWhitepoint 1
  addUserKnob {18 lens17reflectionGamma l "refl gamma" R 0 5}
  lens17reflectionGamma 1
  addUserKnob {6 lens17reflectionGamma_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens17reflectionGamma_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens17reflectionGamma_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens17reflectionBlur l "refl blur" R 0 50}
  addUserKnob {20 endGroup_16 l endGroup n -1}
  addUserKnob {26 ""}
  addUserKnob {20 lens18GRP l "lens 18" n 1}
  lens18GRP 0
  addUserKnob {6 lens18Active l active +STARTLINE}
  lens18Active true
  addUserKnob {14 lens18Size l size R 0 100}
  lens18Size 270
  addUserKnob {18 lens18Col l color R 0 10}
  lens18Col {6.4 3.69 0.73}
  addUserKnob {6 lens18Col_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens18Col_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens18Col_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens18Blur l blur R 0 50}
  addUserKnob {7 lens18AxisPos l "axis pos" R -3 3}
  lens18AxisPos -0.36
  addUserKnob {4 lens18Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon ""}}
  addUserKnob {7 lens18Diaphragm l diaphragm}
  lens18Diaphragm 1
  addUserKnob {7 lens18DiaphRot l "diaph rotation" R -180 180}
  addUserKnob {7 lens18grainOpacity l "grain opacity"}
  lens18grainOpacity 1
  addUserKnob {7 lens18grainSize l "grain size" R 0 1000}
  lens18grainSize 100
  addUserKnob {7 lens18grainGain l "grain gain" R 0 3}
  lens18grainGain 1
  addUserKnob {7 lens18reflectionOpacity l "refl opacity"}
  lens18reflectionOpacity 1
  addUserKnob {7 lens18reflectionRotation l "refl rotation" R 0 360}
  addUserKnob {7 lens18reflWhitepoint l "refl whitepoint" R 0 2}
  lens18reflWhitepoint 1
  addUserKnob {18 lens18reflectionGamma l "refl gamma" R 0 5}
  lens18reflectionGamma 1
  addUserKnob {6 lens18reflectionGamma_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens18reflectionGamma_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens18reflectionGamma_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens18reflectionBlur l "refl blur" R 0 50}
  addUserKnob {20 endGroup_17 l endGroup n -1}
  addUserKnob {26 ""}
  addUserKnob {20 lens19GRP l "lens 19" n 1}
  lens19GRP 0
  addUserKnob {6 lens19Active l active +STARTLINE}
  lens19Active true
  addUserKnob {14 lens19Size l size R 0 100}
  lens19Size 99
  addUserKnob {18 lens19Col l color R 0 10}
  lens19Col {5.249 7.51 40}
  addUserKnob {6 lens19Col_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens19Col_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens19Col_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens19Blur l blur R 0 50}
  lens19Blur 20
  addUserKnob {7 lens19AxisPos l "axis pos" R -3 3}
  lens19AxisPos -0.16
  addUserKnob {4 lens19Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon ""}}
  addUserKnob {7 lens19Diaphragm l diaphragm}
  lens19Diaphragm 1
  addUserKnob {7 lens19DiaphRot l "diaph rotation" R -180 180}
  addUserKnob {7 lens19grainOpacity l "grain opacity"}
  lens19grainOpacity 1
  addUserKnob {7 lens19grainSize l "grain size" R 0 1000}
  lens19grainSize 100
  addUserKnob {7 lens19grainGain l "grain gain" R 0 3}
  lens19grainGain 1
  addUserKnob {7 lens19reflectionOpacity l "refl opacity"}
  lens19reflectionOpacity 1
  addUserKnob {7 lens19reflectionRotation l "refl rotation" R 0 360}
  addUserKnob {7 lens19reflWhitepoint l "refl whitepoint" R 0 2}
  lens19reflWhitepoint 1
  addUserKnob {18 lens19reflectionGamma l "refl gamma" R 0 5}
  lens19reflectionGamma 1
  addUserKnob {6 lens19reflectionGamma_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens19reflectionGamma_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens19reflectionGamma_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens19reflectionBlur l "refl blur" R 0 50}
  addUserKnob {20 endGroup_18 l endGroup n -1}
  addUserKnob {26 ""}
  addUserKnob {20 lens20GRP l "lens 20" n 1}
  lens20GRP 0
  addUserKnob {6 lens20Active l active +STARTLINE}
  lens20Active true
  addUserKnob {14 lens20Size l size R 0 100}
  lens20Size 9.4
  addUserKnob {18 lens20Col l color R 0 10}
  lens20Col {0.03 0.006 0.015}
  addUserKnob {6 lens20Col_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens20Col_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens20Col_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens20Blur l blur R 0 50}
  lens20Blur 4
  addUserKnob {7 lens20AxisPos l "axis pos" R -3 3}
  lens20AxisPos 0.5
  addUserKnob {4 lens20Polygon l polygon M {Pentagon Hexagon Heptagon Octogon Nonagon Decagon Undecagon Dodecagon ""}}
  addUserKnob {7 lens20Diaphragm l diaphragm}
  lens20Diaphragm 1
  addUserKnob {7 lens20DiaphRot l "diaph rotation" R -180 180}
  addUserKnob {7 lens20grainOpacity l "grain opacity"}
  lens20grainOpacity 1
  addUserKnob {7 lens20grainSize l "grain size" R 0 1000}
  lens20grainSize 100
  addUserKnob {7 lens20grainGain l "grain gain" R 0 3}
  lens20grainGain 1
  addUserKnob {7 lens20reflectionOpacity l "refl opacity"}
  lens20reflectionOpacity 1
  addUserKnob {7 lens20reflectionRotation l "refl rotation" R 0 360}
  addUserKnob {7 lens20reflWhitepoint l "refl whitepoint" R 0 2}
  lens20reflWhitepoint 1
  addUserKnob {18 lens20reflectionGamma l "refl gamma" R 0 5}
  lens20reflectionGamma 1
  addUserKnob {6 lens20reflectionGamma_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens20reflectionGamma_panelDropped_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {6 lens20reflectionGamma_panelDropped_1_1 l "panel dropped state" -STARTLINE +HIDDEN}
  addUserKnob {7 lens20reflectionBlur l "refl blur" R 0 50}
  addUserKnob {20 endGroup_19 l endGroup n -1}
 }
set N49978760 [stack 0]
 Dot {
  name Dot21
  xpos 274
  ypos 566
 }
 SphericalTransform {
  fix true
  name _SphericalTransformLensALL
  xpos 240
  ypos 960
 }
 Reformat {
  format "256 256 0 0 256 256 1 square_256"
  resize distort
  name _ReformatReflectionLensALL
  xpos 240
  ypos 1002
 }
 Shuffle {
  alpha white
  name _ShuffleCleanALensALL
  xpos 240
  ypos 1044
 }
 Dot {
  name Dot26
  xpos 274
  ypos 1128
 }
set N474c77c0 [stack 0]
 Dot {
  name Dot22
  xpos 274
  ypos 1560
 }
set N3f716ff0 [stack 0]
 Dot {
  name Dot23
  xpos 274
  ypos 1992
 }
set N4a48a940 [stack 0]
 Dot {
  name Dot24
  xpos 274
  ypos 2428
 }
set N47423090 [stack 0]
 Dot {
  name Dot27
  xpos 274
  ypos 2889
 }
set N3f719100 [stack 0]
 Dot {
  name Dot28
  xpos 274
  ypos 3335
 }
set N4a6543b0 [stack 0]
 Dot {
  name Dot30
  xpos 274
  ypos 3791
 }
set N4a469eb0 [stack 0]
 Dot {
  name Dot31
  xpos 274
  ypos 4338
 }
set N676f4660 [stack 0]
 Dot {
  name Dot32
  xpos 274
  ypos 4811
 }
set N4a6df9c0 [stack 0]
 Dot {
  name Dot33
  xpos 274
  ypos 5253
 }
set N4a6925e0 [stack 0]
 Dot {
  name Dot29
  xpos 274
  ypos 5734
 }
set N6662b930 [stack 0]
 Dot {
  name Dot34
  xpos 274
  ypos 6211
 }
set N67043a20 [stack 0]
 Dot {
  name Dot35
  xpos 274
  ypos 6685
 }
set N6d8e0a10 [stack 0]
 Dot {
  name Dot36
  xpos 274
  ypos 7163
 }
set N4a2dc600 [stack 0]
 Dot {
  name Dot37
  xpos 274
  ypos 7632
 }
set N474278a0 [stack 0]
 Dot {
  name Dot38
  xpos 274
  ypos 8100
 }
set N4a542850 [stack 0]
 Dot {
  name Dot39
  xpos 273
  ypos 8578
 }
set N4a541e20 [stack 0]
 Dot {
  name Dot40
  xpos 273
  ypos 9052
 }
set N4a58cd50 [stack 0]
 Dot {
  name Dot41
  xpos 273
  ypos 9548
 }
set N66a55920 [stack 0]
 Dot {
  name Dot25
  xpos 273
  ypos 10031
 }
 Grade {
  whitepoint {{_INPUT_CTRL.lens1reflWhitepoint*_INPUT_CTRL.reflectionsWhitepointMult i}}
  gamma {{_INPUT_CTRL.lens1reflectionGamma*_INPUT_CTRL.reflectionsGammaMult i}}
  name _GradeReflectionLens20
  xpos 402
  ypos 10026
 }
 Transform {
  rotate {{_INPUT_CTRL.reflectionsRotOffset+_INPUT_CTRL.lens1reflectionRotation i}}
  center {128 128}
  name _TransformReflectionLens20
  xpos 402
  ypos 10054
 }
 Blur {
  size {{_INPUT_CTRL.lens1reflectionBlur+_INPUT_CTRL.reflectionsBlurAdd}}
  name _BlurReflectionLens20
  xpos 402
  ypos 10082
 }
 Read {
  inputs 0
  file_type png
  file <<<replace>>>/images/dodecagon.png
  format "512 512 0 0 512 512 1 square_512"
  origset true
  name Read19
  xpos 1735
  ypos 632
 }
 Shuffle {
  green red
  blue red
  alpha red
  name Shuffle1
  note_font_color 0xffffffff
  xpos 1735
  ypos 712
 }
set N4a2244b0 [stack 0]
 Read {
  inputs 0
  file_type png
  file <<<replace>>>/images/undecagon.png
  format "512 512 0 0 512 512 1 square_512"
  origset true
  name Read26
  xpos 1649
  ypos 632
 }
 Shuffle {
  green red
  blue red
  alpha red
  name Shuffle2
  note_font_color 0xffffffff
  xpos 1649
  ypos 712
 }
set N4a638510 [stack 0]
 Read {
  inputs 0
  file_type png
  file <<<replace>>>/images/decagon.png
  format "512 512 0 0 512 512 1 square_512"
  origset true
  name Read3
  xpos 1562
  ypos 633
 }
 Shuffle {
  green red
  blue red
  alpha red
  name Shuffle3
  note_font_color 0xffffffff
  xpos 1562
  ypos 713
 }
set N6703bbe0 [stack 0]
 Read {
  inputs 0
  file_type png
  file <<<replace>>>/images/nonagon.png
  format "512 512 0 0 512 512 1 square_512"
  origset true
  name Read22
  xpos 1475
  ypos 632
 }
 Shuffle {
  green red
  blue red
  alpha red
  name Shuffle4
  note_font_color 0xffffffff
  xpos 1475
  ypos 712
 }
set N4993c8b0 [stack 0]
 Read {
  inputs 0
  file_type png
  file <<<replace>>>/images/octogon.png
  format "512 512 0 0 512 512 1 square_512"
  origset true
  name Read23
  xpos 1388
  ypos 632
 }
 Shuffle {
  green red
  blue red
  alpha red
  name Shuffle5
  note_font_color 0xffffffff
  xpos 1388
  ypos 712
 }
set N4a1d10d0 [stack 0]
 Read {
  inputs 0
  file_type png
  file <<<replace>>>/images/heptagon.png
  format "512 512 0 0 512 512 1 square_512"
  origset true
  name Read20
  xpos 1301
  ypos 632
 }
 Shuffle {
  green red
  blue red
  alpha red
  name Shuffle8
  note_font_color 0xffffffff
  xpos 1301
  ypos 712
 }
set N4a055400 [stack 0]
 Read {
  inputs 0
  file_type png
  file <<<replace>>>/images/hexagon.png
  format "512 512 0 0 512 512 1 square_512"
  origset true
  name Read21
  xpos 1214
  ypos 633
 }
 Shuffle {
  green red
  blue red
  alpha red
  name Shuffle6
  note_font_color 0xffffffff
  xpos 1214
  ypos 713
 }
set N4a07d0f0 [stack 0]
 Read {
  inputs 0
  file_type png
  file <<<replace>>>/images/pentagon.png
  format "512 512 0 0 512 512 1 square_512"
  origset true
  name Read24
  xpos 1128
  ypos 633
 }
 Shuffle {
  green red
  blue red
  alpha red
  name Shuffle7
  note_font_color 0xffffffff
  xpos 1128
  ypos 713
 }
set N49b24150 [stack 0]
 Switch {
  inputs 8
  which {{_INPUT_CTRL.lens20Polygon i}}
  name _switchPolygon20
  xpos 684
  ypos 9983
 }
 Transform {
  translate {-128 -128}
  rotate {{_INPUT_CTRL.lens20DiaphRot i}}
  scale {{_INPUT_CTRL.lens20Diaphragm*0.65 i}}
  center {256 256}
  name _transformPolygon20
  xpos 684
  ypos 10012
 }
 Noise {
  opacity {{_INPUT_CTRL.lens7grainOpacity*_INPUT_CTRL.overallGrainOpacity}}
  maskChannelInput rgba.red
  size {{_INPUT_CTRL.lens1grainSize*_INPUT_CTRL.overallGrainSizeMult}}
  octaves 4
  lacunarity 5
  gain {{_INPUT_CTRL.lens1grainGain*_INPUT_CTRL.overallGrainGainMult}}
  gamma 1
  center {640 360}
  name _NoiseLens20
  xpos 684
  ypos 10040
 }
 Merge2 {
  inputs 2
  output rgb
  maskChannelInput rgba.red
  mix {{_INPUT_CTRL.lens1reflectionOpacity*_INPUT_CTRL.reflectionsOpacity}}
  name _MergeReflectionLens20
  xpos 684
  ypos 10082
 }
 Read {
  inputs 0
  file_type png
  file <<<replace>>>/images/twoCircle2.png
  format "256 256 0 0 256 256 1 square_256"
  origset true
  name Read12
  xpos 893
  ypos 3398
 }
set N49bb6c00 [stack 0]
 Dot {
  name Dot8
  xpos 927
  ypos 6783
 }
set N49b4e340 [stack 0]
 Dot {
  name Dot13
  xpos 927
  ypos 8198
 }
set N477b0ad0 [stack 0]
 Dot {
  name Dot16
  xpos 927
  ypos 10129
 }
 Merge2 {
  inputs 2
  operation multiply
  name _multPolygon20
  xpos 684
  ypos 10124
 }
 Reformat {
  format "256 256 0 0 256 256 1 square_256"
  name _reformatPolyMask20
  xpos 684
  ypos 10153
 }
 Bezier {
  replace true
  points {{
{87.8 180.4}
{107.6 179.9}
{108.6 87.6}
{87.4 86.8}
{87.4 155.4}
{73.1 143.4}
{60.9 158.9}
}}
  shape {}
  center {128 128}
  color 10
  name _number30
  xpos 574
  ypos 10160
  disable {{1-_INPUT_CTRL.showNumbers i}}
 }
 Bezier {
  points {{
{123 89.3}
{123 102.5}
{161.3 104 7.1 0.64 14.9}
{169.1 124.7}
{127.3 123.1 15.2 2.59 16.7}
{114.3 159.5 19.5 1.33 18.5}
{170.4 176.6 19.5 -0.72 18.8}
{183.7 141.3}
{169.5 138}
{157 167.5 16.1 2.79 15.4}
{127.3 155.2 3.5 4.4 9.3}
{135.5 135.8 11.8 5.78 11}
{183.7 141.3}
{172.6 95.5 17.6 4.01 19.1}
}}
  shape {}
  center {128 128}
  color 10
  name _number31
  xpos 574
  ypos 10189
  disable {{1-_INPUT_CTRL.showNumbers i}}
 }
 Reformat {
  type scale
  scale {{(_INPUT_CTRL.lens20Size.w*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i} {(_INPUT_CTRL.lens20Size.h*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i}}
  name _bokehSize20
  xpos 574
  ypos 10218
 }
push $N49978760
 Dot {
  name Dot1
  xpos 72
  ypos 528
 }
 Multiply {
  value 0
  name _mkBlack
  xpos 38
  ypos 701
 }
set N49dbb260 [stack 0]
 Dot {
  name Dot12
  xpos -149
  ypos 713
 }
set N49b99050 [stack 0]
 Dot {
  name Dot11
  xpos -259
  ypos 713
 }
 Add {
  value 1
  name _mkWhite
  xpos -293
  ypos 772
 }
 Clamp {
  name _vignetteClamp
  xpos -293
  ypos 815
 }
 Crop {
  box {{_INPUT_CTRL.width-((_INPUT_CTRL.width/2)+((_INPUT_CTRL.vignetteScale/2+0.5))*(_INPUT_CTRL.width/2)) i} {_INPUT_CTRL.height-((_INPUT_CTRL.width/2)+((_INPUT_CTRL.vignetteScale/2+0.5))*(_INPUT_CTRL.width/2)-(_INPUT_CTRL.width-_INPUT_CTRL.height)) i} {(_INPUT_CTRL.width/2)+((_INPUT_CTRL.vignetteScale/2+0.5))*(_INPUT_CTRL.width/2) i} {(_INPUT_CTRL.width/2)+((_INPUT_CTRL.vignetteScale/2+0.5))*(_INPUT_CTRL.width/2)-(_INPUT_CTRL.width-_INPUT_CTRL.height) i}}
  name _cropVignette
  xpos -293
  ypos 858
 }
push $N49b99050
 Add {
  value {{1-_INPUT_CTRL.vignetteDarkness i}}
  name _vignetteDarkness
  xpos -183
  ypos 772
 }
 Merge2 {
  inputs 2
  name _compVignette
  xpos -183
  ypos 858
 }
 Blur {
  size {{_cropVignette.box.x*0.8 i}}
  name Blur2
  xpos -183
  ypos 887
 }
push $N49978760
 Clamp {
  name _clampCol
  xpos 310
  ypos 516
 }
 Saturation {
  saturation {{_INPUT_CTRL.sourceSat i}}
  name _sourceSaturation
  xpos 310
  ypos 617
 }
push $N49978760
 Expression {
  temp_name0 X
  temp_expr0 (_INPUT_CTRL.brightspot/pow((_INPUT_CTRL.brightspot-_INPUT_CTRL.threshold),_INPUT_CTRL.gamma))*pow(((0.2126*r+0.7152*g+0.0722*b)-_INPUT_CTRL.threshold),(_INPUT_CTRL.gamma+0.000000001))
  expr0 X
  expr1 X
  expr2 X
  expr3 X
  name _curvOp
  xpos 153
  ypos 610
 }
 Clamp {
  minimum_enable false
  maximum {{_INPUT_CTRL.brightspot i}}
  MinClampTo_enable true
  MaxClampTo {{_INPUT_CTRL.brightspot i}}
  MaxClampTo_enable true
  name _resultClamp
  xpos 153
  ypos 639
  disable {{1-(_INPUT_CTRL.clampBright) i}}
 }
 Merge2 {
  inputs 2
  operation multiply
  mix {{_INPUT_CTRL.sourceCol i}}
  name _multCol
  xpos 310
  ypos 646
 }
 NoOp {
  name _GAMMA_RESULT
  xpos 310
  ypos 674
 }
set N499e6c00 [stack 0]
 Merge2 {
  inputs 2
  operation multiply
  name _multVignette
  xpos 310
  ypos 894
  disable {{1-_INPUT_CTRL.vignetteActive i}}
 }
set N67220f40 [stack 0]
 NoOp {
  name _inputToBokeh20
  xpos 473
  ypos 10218
 }
 Transform {
  scale {{_INPUT_CTRL.lens20AxisPos*_INPUT_CTRL.overallLensDistance i}}
  center {{_INPUT_CTRL.width/2 i} {_INPUT_CTRL.height/2 i}}
  name _symSource20
  xpos 473
  ypos 10247
 }
 Convolve {
  inputs 2
  channels rgb
  name _convolveLens20
  xpos 574
  ypos 10247
 }
 Multiply {
  value {{_INPUT_CTRL.lens20Col.r i} {_INPUT_CTRL.lens20Col.g i} {_INPUT_CTRL.lens20Col.b i} 0}
  name _colorLens20
  xpos 574
  ypos 10276
 }
 Blur {
  size {{_INPUT_CTRL.lens20Blur*(1-_INPUT_CTRL.showNumbers) i}}
  name _blurLens20
  xpos 574
  ypos 10319
 }
push $N66a55920
 Grade {
  whitepoint {{_INPUT_CTRL.lens1reflWhitepoint*_INPUT_CTRL.reflectionsWhitepointMult i}}
  gamma {{_INPUT_CTRL.lens1reflectionGamma*_INPUT_CTRL.reflectionsGammaMult i}}
  name _GradeReflectionLens19
  xpos 401
  ypos 9543
 }
 Transform {
  rotate {{_INPUT_CTRL.reflectionsRotOffset+_INPUT_CTRL.lens1reflectionRotation i}}
  center {128 128}
  name _TransformReflectionLens19
  xpos 401
  ypos 9571
 }
 Blur {
  size {{_INPUT_CTRL.lens1reflectionBlur+_INPUT_CTRL.reflectionsBlurAdd}}
  name _BlurReflectionLens19
  xpos 401
  ypos 9599
 }
push $N4a2244b0
push $N4a638510
push $N6703bbe0
push $N4993c8b0
push $N4a1d10d0
push $N4a055400
push $N4a07d0f0
push $N49b24150
 Switch {
  inputs 8
  which {{_INPUT_CTRL.lens19Polygon i}}
  name _switchPolygon19
  xpos 683
  ypos 9500
 }
 Transform {
  translate {-128 -128}
  rotate {{_INPUT_CTRL.lens19DiaphRot i}}
  scale {{_INPUT_CTRL.lens19Diaphragm*0.65 i}}
  center {256 256}
  name _transformPolygon19
  xpos 683
  ypos 9529
 }
 Noise {
  opacity {{_INPUT_CTRL.lens7grainOpacity*_INPUT_CTRL.overallGrainOpacity}}
  maskChannelInput rgba.red
  size {{_INPUT_CTRL.lens1grainSize*_INPUT_CTRL.overallGrainSizeMult}}
  octaves 4
  lacunarity 5
  gain {{_INPUT_CTRL.lens1grainGain*_INPUT_CTRL.overallGrainGainMult}}
  gamma 1
  center {640 360}
  name _NoiseLens19
  xpos 683
  ypos 9557
 }
 Merge2 {
  inputs 2
  output rgb
  maskChannelInput rgba.red
  mix {{_INPUT_CTRL.lens1reflectionOpacity*_INPUT_CTRL.reflectionsOpacity}}
  name _MergeReflectionLens19
  xpos 683
  ypos 9599
 }
 Read {
  inputs 0
  file_type png
  file <<<replace>>>/images/circleNoise1.png
  format "256 256 0 0 256 256 1 square_256"
  origset true
  name Read7
  xpos 1110
  ypos 2055
 }
set N4996bc50 [stack 0]
 Dot {
  name Dot5
  xpos 1144
  ypos 5351
 }
set N4995abf0 [stack 0]
 Dot {
  name Dot15
  xpos 1143
  ypos 9646
 }
 Merge2 {
  inputs 2
  operation multiply
  name _multPolygon19
  xpos 683
  ypos 9641
 }
 Reformat {
  format "256 256 0 0 256 256 1 square_256"
  name _reformatPolyMask19
  xpos 683
  ypos 9670
 }
 Bezier {
  replace true
  points {{
{87.8 180.4}
{107.6 179.9}
{108.6 87.6}
{87.4 86.8}
{87.4 155.4}
{73.1 143.4}
{60.9 158.9}
}}
  shape {}
  center {128 128}
  color 10
  name _number28
  xpos 573
  ypos 9677
  disable {{1-_INPUT_CTRL.showNumbers i}}
 }
 Bezier {
  points {{
{123 89.3}
{123 102.5}
{161.3 104 7.1 0.64 14.9}
{169.1 124.7}
{127.3 123.1 15.2 2.59 16.7}
{114.3 159.5 19.5 1.33 18.5}
{170.4 176.6 19.5 -0.72 18.8}
{183.7 141.3}
{169.5 138}
{157 167.5 16.1 2.79 15.4}
{127.3 155.2 3.5 4.4 9.3}
{135.5 135.8 11.8 5.78 11}
{183.7 141.3}
{172.6 95.5 17.6 4.01 19.1}
}}
  shape {}
  center {128 128}
  color 10
  name _number29
  xpos 573
  ypos 9706
  disable {{1-_INPUT_CTRL.showNumbers i}}
 }
 Reformat {
  type scale
  scale {{(_INPUT_CTRL.lens19Size.w*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i} {(_INPUT_CTRL.lens19Size.h*_INPUT_CTRL.quality*_INPUT_CTRL.overallLensScale/223)+0.01 i}}
  name _bokehSize19
  xpos 573
  ypos 9735
 }
push $N67220f40
 NoOp {
  name _inputToBokeh19
  xpos 472
  ypos 9735
 }
 Transform {
  scale {{_INPUT_CTRL.lens19AxisPos*_INPUT_CTRL.overallLensDistance i}}
  center {{_INPUT_CTRL.width/2 i} {_INPUT_CTRL.height/2 i}}
  name _symSource19
  xpos 472
  ypos 9764
 }
 Convolve {
  inputs 2
  channels rgb
  name _convolveLens19
  xpos 573
  ypos 9764
 }
 Multiply {
  value {{_INPUT_CTRL.lens19Col.r i} {_INPUT_CTRL.lens19Col.g i} {_INPUT_CTRL.lens19Col.b i} 0}
  name _colorLens19
  xpos 573
  ypos 9793
 }
 Blur {
  size {{_INPUT_CTRL.lens19Blur*(1-_INPUT_CTRL.showNumbers) i}}
  name _blurLens19
  xpos 573
  ypos 9836
 }
push $N4a58cd50
 Grade {
  whitepoint {{_INPUT_CTRL.lens1reflWhitepoint*_INPUT_CTRL.reflectionsWhitepointMult i}}
  gamma {{_INPUT_CTRL.lens1reflectionGamma*_INPUT_CTRL.reflectionsGammaMult i}}
  name _GradeReflectionLens18
  xpos 401
  ypos 9047
 }
 Transform {
  rotate {{_INPUT_CTRL.reflectionsRotOffset+_INPUT_CTRL.lens1reflectionRotation i}}
  center {128 128}
  name _TransformReflectionLens18
  xpos 401
  ypos 9075
 }
 Blur {
  size {{_INPUT_CTRL.lens1reflectionBlur+_INPUT_CTRL.reflectionsBlurAdd}}
  name _BlurReflectionLens18
  xpos 401
  ypos 9103
 }
push $N4a2244b0
push $N4a638510
push $N6703bbe0
push $N4993c8b0
push $N4a1d10d0
push $N4a055400
push $N4a07d0f0
push $N49b24150
 Switch {
  inputs 8
  which {{_INPUT_CTRL.lens18Polygon i}}
  name _switchPolygon18
  xpos 683
  ypos 9004
 }
 Transform {
  translate {-128 -128}
  rotate {{_INPUT_CTRL.lens18DiaphRot i}}
  scale {{_INPUT_CTRL.lens18Diaphragm*0.65 i}}
  center {256 256}
  name _transformPolygon18
  xpos 683
  ypos 9033
 }
 Noise {
  opacity {{_INPUT_CTRL.lens7grainOpacity*_INPUT_CTRL.overallGrainOpacity}}
  maskChannelInput rgba.red
  size {{_INPUT_CTRL.lens1grainSize*_INPUT_CTRL.overallGrainSizeMult}}
  octaves 4
  lacunarity 5
  gain {{_INPUT_CTRL.lens1grainGain*_INPUT_CTRL.overallGrainGainMult}}
  gamma 1
  center {640 360}
  name _NoiseLens18
  xpos 683
  ypos 9061
 }
 Merge2 {
  inputs 2
  output rgb
  maskChannelInput rgba.red
  mix {{_INPUT_CTRL.lens1reflectionOpacity*_INPUT_CTRL.reflectionsOpacity}}
  name _MergeReflectionLens18
  xpos 683
  ypos 9103
 }
 Read {
  inputs 0
  file_type png
  file <<<replace>>>/images/circleHard1.png
  format "256 256 0 0 256 256 1 square_256"
  origset true
  name Read14
  xpos 817
  ypos 3854
 }
set N4a1f2640 [stack 0]
 Dot {
  name Dot9
  xpos 851
  ypos 7261
 }
set N67230a50 [stack 0]
 Dot {
  name Dot10
  xpos 851
  ypos 7730
 }
set N4a1df840 [stack 0]
 Dot {
  name Dot2
  xpos 850
  ypos 9150
 }
 Merge2 {
  inputs 2
  operation multiply
  name _multPolygon18
  xpos 683
  ypos 9145
 }
 Reformat {
  format "256 256 0 0 256 256 1 square_256"
  name _reformatPolyMask18
  xpos 683
  ypos 9174
 }
 Bezier {
  replace true
  points {{
{87.8 180.4}
{107.6 179.9}
{108.6 87.6}
{87.4 86.8}
{87.4 155.4}
{73.1 143.4}
{60.9 158.9}
}}
  shape {}
  center {128 128}
  color 10
  name _number26
  xpos 573
  ypos 9181
  disable {{1-_INPUT_CTRL.showNumbers i}}
 }
 Bezier {
  points {{
{159.8 178.7 1.4 -1.72 4.3 1.7 0 0 0 0 0 1.7}
{159.4 167.3 4.7 -3.07 2.5 1.44 0 0 0 0 0 1.44}
{144.1 152.3 8.9 -1.57 13.4}
{157.2 136 6.1 0.68 2.9 -1.3 0 0 0 0 0 -1.3}
{173.6 153.5 11.3 -4.79 14}
{159.6 167.
Download .txt
gitextract_r8btb1q3/

├── .gitattributes
├── .gitignore
├── CHANGELOG.md
├── DEVELOPMENT.md
├── LICENSE
├── NukeSurvivalToolkit/
│   ├── gizmos/
│   │   ├── NST_AdditiveKeyerPro.gizmo
│   │   ├── NST_AnimationCurve.gizmo
│   │   ├── NST_AntiAliasingFilter.gizmo
│   │   ├── NST_AutoCropTool.gizmo
│   │   ├── NST_AutoFlare2.gizmo
│   │   ├── NST_BBoxToFormat.gizmo
│   │   ├── NST_BeautifulSkin.gizmo
│   │   ├── NST_BiasedSaturation.gizmo
│   │   ├── NST_BinaryAlpha.gizmo
│   │   ├── NST_BlacksExpon.gizmo
│   │   ├── NST_BlacksMatch.gizmo
│   │   ├── NST_BokehBuilder.gizmo
│   │   ├── NST_C44Kernel.gizmo
│   │   ├── NST_CProject.gizmo
│   │   ├── NST_CProject2.gizmo
│   │   ├── NST_CameraNormals.gizmo
│   │   ├── NST_CardToTrack.gizmo
│   │   ├── NST_CardToTrack2.gizmo
│   │   ├── NST_CatsEyeDefocus.gizmo
│   │   ├── NST_CellNoise.gizmo
│   │   ├── NST_ChannelCombiner.gizmo
│   │   ├── NST_ChannelControl.gizmo
│   │   ├── NST_ChannelCreator.gizmo
│   │   ├── NST_ChromaSmear.gizmo
│   │   ├── NST_Chromatik.gizmo
│   │   ├── NST_ColorCopy.gizmo
│   │   ├── NST_ColorSampler.gizmo
│   │   ├── NST_ColorSmear.gizmo
│   │   ├── NST_ConstantPro.gizmo
│   │   ├── NST_ContactSheetAuto.gizmo
│   │   ├── NST_Contrast.gizmo
│   │   ├── NST_ConvertPNZ.gizmo
│   │   ├── NST_ConvolutionMatrix.gizmo
│   │   ├── NST_CornerPin2D_Matrix.gizmo
│   │   ├── NST_CrossProductVector2.gizmo
│   │   ├── NST_CrossProductVector3.gizmo
│   │   ├── NST_DVPColorCorrect.gizmo
│   │   ├── NST_DVPToImage.gizmo
│   │   ├── NST_DVP_Shader.gizmo
│   │   ├── NST_DVP_ToonShader.gizmo
│   │   ├── NST_DVPattern.gizmo
│   │   ├── NST_DVPfresnel.gizmo
│   │   ├── NST_DVPmatte.gizmo
│   │   ├── NST_DVPortal.gizmo
│   │   ├── NST_DVPrelight.gizmo
│   │   ├── NST_DVPrelightPT.gizmo
│   │   ├── NST_DVProjection.gizmo
│   │   ├── NST_DVPscene.gizmo
│   │   ├── NST_DVPsetLight.gizmo
│   │   ├── NST_DasGrain.gizmo
│   │   ├── NST_Deep2VP.gizmo
│   │   ├── NST_Deep2VPosition.gizmo
│   │   ├── NST_DeepBoolean.gizmo
│   │   ├── NST_DeepCopyBBox.gizmo
│   │   ├── NST_DeepCropSoft.gizmo
│   │   ├── NST_DeepFromDepth.gizmo
│   │   ├── NST_DeepFromPosition.gizmo
│   │   ├── NST_DeepHoldoutSmoother.gizmo
│   │   ├── NST_DeepKeyMix.gizmo
│   │   ├── NST_DeepMerge_Advanced.gizmo
│   │   ├── NST_DeepRecolorMatte.gizmo
│   │   ├── NST_DeepSampleCount.gizmo
│   │   ├── NST_DeepSer.gizmo
│   │   ├── NST_DeflickerVelocity.gizmo
│   │   ├── NST_DefocusSwirlyBokeh.gizmo
│   │   ├── NST_DespillToColor.gizmo
│   │   ├── NST_Diffusion.gizmo
│   │   ├── NST_DirectionalBlur.gizmo
│   │   ├── NST_Distance3D.gizmo
│   │   ├── NST_DistanceBetween_CS.gizmo
│   │   ├── NST_DotProductVector2.gizmo
│   │   ├── NST_DotProductVector3.gizmo
│   │   ├── NST_DummyCam.gizmo
│   │   ├── NST_Edge.gizmo
│   │   ├── NST_EdgeDetectAlias.gizmo
│   │   ├── NST_EdgeDetectPRO.gizmo
│   │   ├── NST_EdgeFromAlpha.gizmo
│   │   ├── NST_Edge_Expand.gizmo
│   │   ├── NST_Edge_RimLight.gizmo
│   │   ├── NST_Emission.gizmo
│   │   ├── NST_EnvReflect_BB.gizmo
│   │   ├── NST_ErodeSmooth.gizmo
│   │   ├── NST_Erode_Fine.gizmo
│   │   ├── NST_ExponBlurSimple.gizmo
│   │   ├── NST_ExponGlow.gizmo
│   │   ├── NST_F_P_Project.gizmo
│   │   ├── NST_F_P_Ramp.gizmo
│   │   ├── NST_FastComplexityDistort.gizmo
│   │   ├── NST_FillSampler.gizmo
│   │   ├── NST_FlareSuperStar.gizmo
│   │   ├── NST_FractalBlur.gizmo
│   │   ├── NST_FrameFiller.gizmo
│   │   ├── NST_FrameHoldSpecial.gizmo
│   │   ├── NST_FrameMedian.gizmo
│   │   ├── NST_GUI_Switch.gizmo
│   │   ├── NST_GammaPlus.gizmo
│   │   ├── NST_GenerateMatrix4.gizmo
│   │   ├── NST_GenerateSTMap.gizmo
│   │   ├── NST_GeoToPoints.gizmo
│   │   ├── NST_Glass.gizmo
│   │   ├── NST_Glow_Exponential.gizmo
│   │   ├── NST_GlueP.gizmo
│   │   ├── NST_GodRaysProjector.gizmo
│   │   ├── NST_GradMagic.gizmo
│   │   ├── NST_GradeLayerPass.gizmo
│   │   ├── NST_Grain_Advanced.gizmo
│   │   ├── NST_GuidedBlur.gizmo
│   │   ├── NST_HSL_Tool.gizmo
│   │   ├── NST_Halation.gizmo
│   │   ├── NST_HeatWave.gizmo
│   │   ├── NST_HexColor.gizmo
│   │   ├── NST_HighPass.gizmo
│   │   ├── NST_HighlightSuppress.gizmo
│   │   ├── NST_ID_Extractor.gizmo
│   │   ├── NST_IIDistort.gizmo
│   │   ├── NST_ITransformU.gizmo
│   │   ├── NST_ImagePlane3D.gizmo
│   │   ├── NST_InjectMatteChannel.gizmo
│   │   ├── NST_InverseMatrix33.gizmo
│   │   ├── NST_InverseMatrix44.gizmo
│   │   ├── NST_InvertAxis.gizmo
│   │   ├── NST_InvertMatrix4.gizmo
│   │   ├── NST_KeyChew.gizmo
│   │   ├── NST_KeymixBBox.gizmo
│   │   ├── NST_KillOutline.gizmo
│   │   ├── NST_LabelFromRead.gizmo
│   │   ├── NST_LensEngine.gizmo
│   │   ├── NST_LightSwitch.gizmo
│   │   ├── NST_LightWrapPro.gizmo
│   │   ├── NST_Lightning3D.gizmo
│   │   ├── NST_LineTool.gizmo
│   │   ├── NST_Looper.gizmo
│   │   ├── NST_LumaGrain.gizmo
│   │   ├── NST_LumaKeyer.gizmo
│   │   ├── NST_LumaToVector3.gizmo
│   │   ├── NST_MECfiller.gizmo
│   │   ├── NST_MagnitudeVector2.gizmo
│   │   ├── NST_MagnitudeVector3.gizmo
│   │   ├── NST_Matrix4x4Math.gizmo
│   │   ├── NST_Matrix4x4_Inverse.gizmo
│   │   ├── NST_MergeAll.gizmo
│   │   ├── NST_MergeAtmos.gizmo
│   │   ├── NST_MergeBlend.gizmo
│   │   ├── NST_MirrorBorder.gizmo
│   │   ├── NST_MirrorDimension.gizmo
│   │   ├── NST_MonochromePlus.gizmo
│   │   ├── NST_MorphDissolve.gizmo
│   │   ├── NST_MotionBlurPaint.gizmo
│   │   ├── NST_MultiplyVector3Matrix3.gizmo
│   │   ├── NST_NAN_INF_Killer.gizmo
│   │   ├── NST_N_Reflection.gizmo
│   │   ├── NST_Noise3DTexture.gizmo
│   │   ├── NST_Noise3D_spin.gizmo
│   │   ├── NST_NoiseAdvanced.gizmo
│   │   ├── NST_NormalizeVector2.gizmo
│   │   ├── NST_NormalizeVector3.gizmo
│   │   ├── NST_NormalsRotate.gizmo
│   │   ├── NST_NukeZ.gizmo
│   │   ├── NST_P2N.gizmo
│   │   ├── NST_P2Z.gizmo
│   │   ├── NST_P_Noise_Advanced.gizmo
│   │   ├── NST_ParticleKiller.gizmo
│   │   ├── NST_ParticleLights.gizmo
│   │   ├── NST_PerspectiveGuide.gizmo
│   │   ├── NST_PlanarProjection.gizmo
│   │   ├── NST_PlotScanline.gizmo
│   │   ├── NST_PointCloudKeyer.gizmo
│   │   ├── NST_PosMatte_MJ.gizmo
│   │   ├── NST_PosPattern_MJ.gizmo
│   │   ├── NST_PosProjection_MJ.gizmo
│   │   ├── NST_ProductMatrix4.gizmo
│   │   ├── NST_Pyclopedia.gizmo
│   │   ├── NST_Python_and_TCL.gizmo
│   │   ├── NST_RP_Reformat.gizmo
│   │   ├── NST_RadialAdvanced.gizmo
│   │   ├── NST_RadialDilate.gizmo
│   │   ├── NST_RainMaker.gizmo
│   │   ├── NST_Randomizer.gizmo
│   │   ├── NST_RankFilter.gizmo
│   │   ├── NST_RayDeepAO.gizmo
│   │   ├── NST_ReProject_3D.gizmo
│   │   ├── NST_Reconcile3DFast.gizmo
│   │   ├── NST_Relight_Simple.gizmo
│   │   ├── NST_Relight_bb.gizmo
│   │   ├── NST_Rings_of_Power.gizmo
│   │   ├── NST_RotateMatrix4.gizmo
│   │   ├── NST_RotateVector2.gizmo
│   │   ├── NST_RotateVector3.gizmo
│   │   ├── NST_RotoCentroid.gizmo
│   │   ├── NST_RotoPaintTransform.gizmo
│   │   ├── NST_RotoQC.gizmo
│   │   ├── NST_SSMesh.gizmo
│   │   ├── NST_STMapToVector2.gizmo
│   │   ├── NST_STmapInverse.gizmo
│   │   ├── NST_ScaleMatrix4.gizmo
│   │   ├── NST_SceneDepthCalculator.gizmo
│   │   ├── NST_ShadowMult.gizmo
│   │   ├── NST_SimpleSSS.gizmo
│   │   ├── NST_SkyMatte.gizmo
│   │   ├── NST_SliceTool.gizmo
│   │   ├── NST_Sparky.gizmo
│   │   ├── NST_Spill_Correct.gizmo
│   │   ├── NST_SpotFlare.gizmo
│   │   ├── NST_SpotLight.gizmo
│   │   ├── NST_Suppress_RGBCMY.gizmo
│   │   ├── NST_Symmetry.gizmo
│   │   ├── NST_TProject.gizmo
│   │   ├── NST_TProject2.gizmo
│   │   ├── NST_TimeMachine.gizmo
│   │   ├── NST_TransformCutOut.gizmo
│   │   ├── NST_TransformMatrix.gizmo
│   │   ├── NST_TransformMatrix4.gizmo
│   │   ├── NST_TransformMix.gizmo
│   │   ├── NST_TransformVector2.gizmo
│   │   ├── NST_TransformVector3.gizmo
│   │   ├── NST_TranslateMatrix4.gizmo
│   │   ├── NST_TransposeMatrix4.gizmo
│   │   ├── NST_UVEditor.gizmo
│   │   ├── NST_UV_Map.gizmo
│   │   ├── NST_UV_Mapper.gizmo
│   │   ├── NST_Unify3DCoordinate.gizmo
│   │   ├── NST_Vector2ToSTMap.gizmo
│   │   ├── NST_Vector3ToMatrix4.gizmo
│   │   ├── NST_VectorExtendEdge.gizmo
│   │   ├── NST_VectorTracker.gizmo
│   │   ├── NST_Vectors_Direction.gizmo
│   │   ├── NST_Vectors_to_Degrees.gizmo
│   │   ├── NST_VoronoiGradient.gizmo
│   │   ├── NST_WaterLens.gizmo
│   │   ├── NST_WaveletBlur.gizmo
│   │   ├── NST_WhiteBalance.gizmo
│   │   ├── NST_WhiteSoftClip.gizmo
│   │   ├── NST_X_Aton_Volumetrics.gizmo
│   │   ├── NST_X_Denoise.gizmo
│   │   ├── NST_X_Distort.gizmo
│   │   ├── NST_X_Sharpen.gizmo
│   │   ├── NST_X_Soften.gizmo
│   │   ├── NST_X_Tesla.gizmo
│   │   ├── NST_Z2N.gizmo
│   │   ├── NST_Z2P.gizmo
│   │   ├── NST_ZeroAxis.gizmo
│   │   ├── NST_aPCard.gizmo
│   │   ├── NST_aPMatte_v2.gizmo
│   │   ├── NST_aeRefracTHOR.gizmo
│   │   ├── NST_aeRelight2D.gizmo
│   │   ├── NST_aeShadows.gizmo
│   │   ├── NST_apChroma.gizmo
│   │   ├── NST_apChromaBlurNew.gizmo
│   │   ├── NST_apChromaMergeNew.gizmo
│   │   ├── NST_apChromaPremult.gizmo
│   │   ├── NST_apChromaTransformNew.gizmo
│   │   ├── NST_apChromaUnpremult.gizmo
│   │   ├── NST_apDespill.gizmo
│   │   ├── NST_apDirLight.gizmo
│   │   ├── NST_apEdgeCrush.gizmo
│   │   ├── NST_apEdgePush.gizmo
│   │   ├── NST_apFresnel.gizmo
│   │   ├── NST_apLoop.gizmo
│   │   ├── NST_apViewerBlocker.gizmo
│   │   ├── NST_apVignette.gizmo
│   │   ├── NST_apeGlow.gizmo
│   │   ├── NST_apeScreenClean.gizmo
│   │   ├── NST_apeScreenGrow.gizmo
│   │   ├── NST_bm_CameraShake.gizmo
│   │   ├── NST_bm_CurveRemapper.gizmo
│   │   ├── NST_bm_MatteCheck.gizmo
│   │   ├── NST_bm_NoiseGen.gizmo
│   │   ├── NST_bm_OpticalGlow.gizmo
│   │   ├── NST_bm_OpticalLightwrap.gizmo
│   │   ├── NST_deHaze.gizmo
│   │   ├── NST_fxT_ChromaticAberration.gizmo
│   │   ├── NST_h_gradienteditor.gizmo
│   │   ├── NST_h_silk.gizmo
│   │   ├── NST_h_stickit.gizmo
│   │   ├── NST_iBlurU.gizmo
│   │   ├── NST_iConvolve.gizmo
│   │   ├── NST_iErode.gizmo
│   │   ├── NST_iMorph.gizmo
│   │   ├── NST_iMorph_v2.gizmo
│   │   ├── NST_iTransform_ae.gizmo
│   │   ├── NST_mScatterGeo.gizmo
│   │   ├── NST_origami.gizmo
│   │   ├── NST_renameChannels.gizmo
│   │   ├── NST_streamCart.gizmo
│   │   ├── NST_vector3DMathExpression.gizmo
│   │   ├── NST_viewer_render.gizmo
│   │   ├── NST_waterSchmutz.gizmo
│   │   ├── NST_waveCustom.gizmo
│   │   ├── NST_waveGrade.gizmo
│   │   ├── NST_waveMaker.gizmo
│   │   ├── NST_waveMerge.gizmo
│   │   └── NST_waveRetime.gizmo
│   ├── init.py
│   ├── menu.py
│   ├── nk_files/
│   │   ├── C4x4.nk
│   │   ├── GradientCorner.nk
│   │   ├── IBKGizmo_Expression.nk
│   │   ├── Lines_Horizontal.nk
│   │   ├── Lines_Horizontal_Animated.nk
│   │   ├── Lines_Vertical.nk
│   │   ├── Lines_Vertical_Animated.nk
│   │   ├── NST_AdvancedKeyingTemplate.nk
│   │   ├── NST_AdvancedKeyingTemplate_Stamps.nk
│   │   ├── NST_LightSwitchPuppet.nk
│   │   ├── NST_Noise4D.nk
│   │   ├── NST_ParticleLights_ExampleScript.nk
│   │   ├── NST_SSMesh_demo.nk
│   │   ├── NST_STMap_Keying_Setup.nk
│   │   ├── NST_SparkyExampleScene.nk
│   │   ├── NST_UVEditor_demo_clean.nk
│   │   ├── NST_WaterLens_sampleScript.nk
│   │   ├── NST_X_Aton_Examples.nk
│   │   ├── Noise.nk
│   │   ├── Random_colors.nk
│   │   ├── Random_every_frame.nk
│   │   ├── Random_every_pixel.nk
│   │   ├── STMap_invert.nk
│   │   ├── Trunc.nk
│   │   ├── UV_to_Vector.nk
│   │   ├── Vector_to_UV.nk
│   │   ├── abs.nk
│   │   ├── alpha_binary.nk
│   │   ├── alpha_comparison.nk
│   │   ├── alpha_exists.nk
│   │   ├── alpha_sum.nk
│   │   ├── bricks.nk
│   │   ├── check_nan_inf.nk
│   │   ├── check_negative.nk
│   │   ├── circles.nk
│   │   ├── circles_user.nk
│   │   ├── coordinates.nk
│   │   ├── create_inf.nk
│   │   ├── create_nan.nk
│   │   ├── deepThickness.nk
│   │   ├── deepToDepth.nk
│   │   ├── depth_normalize.nk
│   │   ├── despill_blue.nk
│   │   ├── despill_blue_list.nk
│   │   ├── despill_green.nk
│   │   ├── despill_green_list.nk
│   │   ├── differenceKey.nk
│   │   ├── fBm.nk
│   │   ├── gradient_horizontal.nk
│   │   ├── gradient_horizontal_invert.nk
│   │   ├── gradient_vertical.nk
│   │   ├── gradient_vertical_invert.nk
│   │   ├── keying.nk
│   │   ├── kill_inf.nk
│   │   ├── kill_nan.nk
│   │   ├── normalPass_relight.nk
│   │   ├── points.nk
│   │   ├── points_advanced.nk
│   │   ├── radial.nk
│   │   ├── radial_gradient.nk
│   │   ├── radial_rays.nk
│   │   ├── transform.nk
│   │   ├── transform_advanced.nk
│   │   ├── turbulence.nk
│   │   └── twist.nk
│   └── python/
│       ├── ColorGradientUi.py
│       ├── GradientPresets.cfg
│       ├── NST_ID_Extractor.py
│       ├── NST_VectorTracker.py
│       ├── NST_cardToTrack.py
│       ├── NST_cardToTrack_v9.py
│       ├── NST_helper.py
│       └── NST_stickit.py
└── README.md
Download .txt
SYMBOL INDEX (133 symbols across 8 files)

FILE: NukeSurvivalToolkit/menu.py
  function nk_path (line 38) | def nk_path(filename, prefix=False):
  function icon_path (line 43) | def icon_path(filename):

FILE: NukeSurvivalToolkit/python/ColorGradientUi.py
  function saveTemplate (line 29) | def saveTemplate(_curves):
  function setColorCurve (line 52) | def setColorCurve(node, colorlist, parent, _object):
  function LoadCurveDataX (line 97) | def LoadCurveDataX(_curves):
  class SectionPanel (line 140) | class SectionPanel(nukescripts.PythonPanel):
    method __init__ (line 141) | def __init__(self):
  class ColorValue (line 149) | class ColorValue:
    method __init__ (line 150) | def __init__(self):
  class GradientWidget (line 157) | class GradientWidget(QWidget):
    method __init__ (line 158) | def __init__(self, parent=None, mainDiameter=138, outerRingWidth=10,my...
    method initCurve (line 171) | def initCurve(self,fromNode=True,_data=""):  #This function is used wh...
    method sliderUpdate (line 187) | def sliderUpdate(self,_color):
    method _update (line 194) | def _update(self):
    method paintEvent (line 198) | def paintEvent(self, evt):
    method setSelection (line 205) | def setSelection(self,_item):
    method testPointsSetup (line 212) | def testPointsSetup(self): #DEPRICATED!!
    method getColorAtOffset (line 219) | def getColorAtOffset(self,posx):
    method drawRectangles (line 253) | def drawRectangles(self, painter):
    method getNearestHandle (line 280) | def getNearestHandle(self,posx,posy,dc=False):
    method mousePressEvent (line 325) | def mousePressEvent(self, evt):
    method mouseReleaseEvent (line 334) | def mouseReleaseEvent(self,evt):
    method mouseDoubleClickEvent (line 341) | def mouseDoubleClickEvent(self, evt):
    method mouseMoveEvent (line 348) | def mouseMoveEvent(self, evt):
    method colorNodeUpdate (line 361) | def colorNodeUpdate(self):
  class GradientLabel (line 370) | class GradientLabel(QLabel):
    method __init__ (line 372) | def __init__(self, _gradient="",name=""):
    method mouseReleaseEvent (line 380) | def mouseReleaseEvent(self, ev):
    method ExtractColorData (line 383) | def ExtractColorData(self):
    method paintEvent (line 391) | def paintEvent(self, evt):
    method drawRectangles (line 398) | def drawRectangles(self, painter):
  class MyToolButton (line 412) | class MyToolButton(QToolButton):
    method __init__ (line 413) | def __init__(self, *args):
    method eventFilter (line 416) | def eventFilter(self, menu, event):
  class Example (line 424) | class Example(QWidget):
    method __init__ (line 425) | def __init__(self, parent=None,myNode="none"):
    method gradientClicked (line 483) | def gradientClicked(self, values):
    method addPreset (line 486) | def addPreset(self):
    method removePreset (line 490) | def removePreset(self, section, preset_name):
    method UpdatePresetList (line 503) | def UpdatePresetList(self):
    method updateSlider (line 544) | def updateSlider(self,_color):
    method sliderUpdate (line 549) | def sliderUpdate(self):
    method updateValue (line 552) | def updateValue(self):
    method UpdateStylesheet (line 555) | def UpdateStylesheet(self):
  class ColorWheelKnob_GRADIENT (line 608) | class ColorWheelKnob_GRADIENT:
    method __init__ (line 609) | def __init__( self ):
    method makeUI (line 613) | def makeUI( self ):

FILE: NukeSurvivalToolkit/python/NST_ID_Extractor.py
  function set (line 4) | def set():
  function extractRed (line 30) | def extractRed():
  function extractGreen (line 78) | def extractGreen():
  function extractBlue (line 126) | def extractBlue():
  function extractAll (line 174) | def extractAll():
  function reset (line 207) | def reset():

FILE: NukeSurvivalToolkit/python/NST_VectorTracker.py
  function allScriptNodes (line 9) | def allScriptNodes():
  function J_VTT_Track (line 26) | def J_VTT_Track(first, last, pb = True):
  function J_VTT_AddTracker (line 137) | def J_VTT_AddTracker():
  function J_VTT_Export (line 172) | def J_VTT_Export():

FILE: NukeSurvivalToolkit/python/NST_cardToTrack.py
  function setRefFrame (line 3) | def setRefFrame():
  function stabilize (line 45) | def stabilize():
  function consolidateAnimatedNodeTransforms (line 64) | def consolidateAnimatedNodeTransforms():
  function happy (line 117) | def happy():
  function go (line 129) | def go():
  function objectOnly (line 674) | def objectOnly():

FILE: NukeSurvivalToolkit/python/NST_cardToTrack_v9.py
  function _undo_disable (line 26) | def _undo_disable():
  function _undo_enable (line 30) | def _undo_enable():
  function set_anim_curve_from_data (line 38) | def set_anim_curve_from_data(knob, data_list_per_channel):
  function kill_animation (line 72) | def kill_animation(knobs):
  function offset_nodes (line 84) | def offset_nodes(x,y):
  function check_first_last_frame (line 97) | def check_first_last_frame(C2Tgroup):
  function check_curve (line 122) | def check_curve(knob,first,last,ref):
  function fix_curves (line 139) | def fix_curves(one,first,last,ref):
  function delete_tab (line 193) | def delete_tab():
  function set_ref_frame (line 219) | def set_ref_frame():
  function stabilize (line 269) | def stabilize():
  function happy (line 292) | def happy():
  function show_grid_axis (line 321) | def show_grid_axis():
  function go (line 328) | def go():
  function recalculate_camera (line 479) | def recalculate_camera():
  function select_associated_nodes (line 507) | def select_associated_nodes():
  function update_baked (line 530) | def update_baked():
  function calculate_corner_pin (line 595) | def calculate_corner_pin(C2Tgroup,label,recalculate):
  function calculate_translate (line 749) | def calculate_translate(C2Tgroup,label):
  function calculate_matrix (line 796) | def calculate_matrix(C2Tgroup,label):
  function card_code (line 853) | def card_code():
  function corner_code (line 855) | def corner_code():
  function transform_code (line 857) | def transform_code():
  function roto_code (line 859) | def roto_code():
  function _create_object_helper (line 862) | def _create_object_helper(type):
  function _card_impl (line 868) | def _card_impl():
  function _cp_impl (line 903) | def _cp_impl():
  function _tr_impl (line 934) | def _tr_impl():
  function _roto_impl (line 969) | def _roto_impl():
  function object_only (line 1044) | def object_only():
  function set_ref_frame_cp (line 1064) | def set_ref_frame_cp(frame, node):
  function recurseUpSelect (line 1089) | def recurseUpSelect(node):
  function toggle_matchmove_stabilise (line 1101) | def toggle_matchmove_stabilise(node):
  function set_to_input_label_toggle (line 1170) | def set_to_input_label_toggle(ntn, unset):
  function set_to_input_cp (line 1187) | def set_to_input_cp():
  function knob_changed_cp (line 1198) | def knob_changed_cp():

FILE: NukeSurvivalToolkit/python/NST_helper.py
  function filepathCreateNode (line 29) | def filepathCreateNode(gizmoName):
  function _toolkit_root (line 58) | def _toolkit_root():
  function find_offline_index (line 62) | def find_offline_index():
  function find_pdf_doc (line 71) | def find_pdf_doc():
  class _ReusableThreadingTCPServer (line 87) | class _ReusableThreadingTCPServer(socketserver.ThreadingTCPServer):
  class _QuietStaticHTTPRequestHandler (line 91) | class _QuietStaticHTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
    method log_message (line 94) | def log_message(self, format, *args):
  function _shutdown_offline_http_server (line 98) | def _shutdown_offline_http_server():
  function _ensure_local_http_server (line 116) | def _ensure_local_http_server(root):
  function _open_url_in_browser_async (line 138) | def _open_url_in_browser_async(url):
  function _open_offline_index_in_browser (line 153) | def _open_offline_index_in_browser(offline_index):
  function is_online_wiki_reachable (line 165) | def is_online_wiki_reachable(timeout=None):
  function openNSTDocumentationDefault (line 199) | def openNSTDocumentationDefault():
  function openNSTDocumentationOnline (line 224) | def openNSTDocumentationOnline():
  function openNSTDocumentationOffline (line 236) | def openNSTDocumentationOffline():
  function openNSTDocumentationPDF (line 250) | def openNSTDocumentationPDF():

FILE: NukeSurvivalToolkit/python/NST_stickit.py
  function CreateWarpPinPair (line 86) | def CreateWarpPinPair(myNode,pointlist,refframe):
  function ExportCameraTrack (line 156) | def ExportCameraTrack(myNode):
  function GetAnimtionList (line 238) | def GetAnimtionList(myList,nestedPoints,myFrame,_rev=False,_ofs=False):
  function GetNearestPoints (line 270) | def GetNearestPoints(refpoint,pointList,_rev=False):
  function GrabListData (line 321) | def GrabListData():
  function median (line 340) | def median(lst):
  class rangeKeeper (line 352) | class rangeKeeper():
    method __init__ (line 353) | def __init__(self,_type):
    method initvalues (line 361) | def initvalues(self):
  function KeyframeReducer (line 392) | def KeyframeReducer(knob):
  function CalculatePositionDelta (line 423) | def CalculatePositionDelta(_method,_refpointList,temp_pos=[0,0]):
  function Solve2DTransform (line 479) | def Solve2DTransform(_node):
  function SolveCornerpin (line 569) | def SolveCornerpin(_node):
  function SolveCurves (line 628) | def SolveCurves(_node,_isSplineWarp=False):
  function Solve2DTracker (line 686) | def Solve2DTracker(_node):
  function Initializer (line 737) | def Initializer(_method):
  function ResolveSelectedNodes (line 749) | def ResolveSelectedNodes():
  function StickIT (line 796) | def StickIT():
Condensed preview — 373 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (9,307K chars).
[
  {
    "path": ".gitattributes",
    "chars": 66,
    "preview": "# Auto detect text files and perform LF normalization\n* text=auto\n"
  },
  {
    "path": ".gitignore",
    "chars": 2303,
    "preview": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n## Mac ignore\n\n# General\n.DS_Store\n.AppleDoub"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 10388,
    "preview": "# Changelog\n\nAll notable changes to the Nuke Survival Toolkit are documented in this file.\n\nThe format is based on [Keep"
  },
  {
    "path": "DEVELOPMENT.md",
    "chars": 11949,
    "preview": "# NukeSurvivalToolkit Development Notes\n\nThis document captures key learnings, architecture decisions, and development k"
  },
  {
    "path": "LICENSE",
    "chars": 1070,
    "preview": "MIT License\n\nCopyright (c) 2020 CreativeLyons\n\nPermission is hereby granted, free of charge, to any person obtaining a c"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_AdditiveKeyerPro.gizmo",
    "chars": 14164,
    "preview": "Group {\n name AdditiveKeyerPro\n tile_color 0x5200ff\n note_font \"Verdana Bold\"\n note_font_color 0xffffffff\n selected true"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_AnimationCurve.gizmo",
    "chars": 13509,
    "preview": "Group {\n name ANIMATION_CURVES\n inputs 0\n knobChanged \"nk = nuke.thisNode()\\nk = nuke.thisKnob()\\nif ('active_translate'"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_AntiAliasingFilter.gizmo",
    "chars": 4498,
    "preview": "Group {\n name AntialiasingFilter\n inputs 2\n tile_color 0xc17a4aff\n label \"(\\[value antialiasing])\"\n note_font \"Verdana B"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_AutoCropTool.gizmo",
    "chars": 8028,
    "preview": "Group {\n name AutoCropTool\n tile_color 0xa57aaaff\n note_font \"Bitstream Vera Sans Bold\"\n note_font_color 0xffffffff\n sel"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_AutoFlare2.gizmo",
    "chars": 192104,
    "preview": "Group {\n name AutoFlare\n selected true\n lock_connections true\n addUserKnob {20 User l Controls}\n addUserKnob {41 effectO"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_BBoxToFormat.gizmo",
    "chars": 4577,
    "preview": "Group {\n name BBoxToFormat\n onCreate \"n = nuke.thisNode()\\ninputFormat = n.knob(\\\"inputFormat\\\")\\ninputBBox = n.knob(\\\"i"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_BeautifulSkin.gizmo",
    "chars": 3018,
    "preview": "Group {\n name BeautifulSkin\n tile_color 0xb2776dff\n note_font \"Verdana Bold\"\n note_font_color 0xffffffff\n selected true\n"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_BiasedSaturation.gizmo",
    "chars": 3992,
    "preview": "Group {\n name BiasedSaturation\n tile_color 0x5c7fc0ff\n note_font \"Verdana Bold\"\n note_font_color 0xffffffff\n selected tr"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_BinaryAlpha.gizmo",
    "chars": 1167,
    "preview": "Group {\n name BinaryAlpha\n tile_color 0x2a2a2aff\n label \"(\\[value an] --> \\[value output1])\"\n note_font Verdana\n note_fo"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_BlacksExpon.gizmo",
    "chars": 47135,
    "preview": "Group {\nname BlacksExpon\nknobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"steps\\\":    \\n    s ="
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_BlacksMatch.gizmo",
    "chars": 27028,
    "preview": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name BlacksMatch\n help \"Choose a black point color or plug "
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_BokehBuilder.gizmo",
    "chars": 471244,
    "preview": "Group {\n inputs 0\n name BokehBuilder\n tile_color 0x242424ff\n note_font_color 0x91d5ffff\n selected true\n addUserKnob {20 "
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_C44Kernel.gizmo",
    "chars": 4001,
    "preview": "Group {\n name C44Kernel\n help \"C44Kernel v1.0 by Adrian Pueyo\\n\\nMultiply the rgb or rgba colors by an arbitrary 4x4 Mat"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_CProject.gizmo",
    "chars": 5039,
    "preview": "Group {\nname CProject\nhelp \"it is just cornerpin tracked\\nnothing fancy at all\\nhave fun!\"\nknobChanged \"nn = nuke.thisNo"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_CProject2.gizmo",
    "chars": 9072,
    "preview": "Group {\n name CProject\n help \"it is just cornerpin tracked\\nnothing fancy at all\\nhave fun!\"\n knobChanged \"nn = nuke.thi"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_CameraNormals.gizmo",
    "chars": 9490,
    "preview": "add_layer {N N.red N.green N.blue N.alpha}\nadd_layer {P P.red P.green P.blue P.alpha}\nGroup {\n name CameraNormals\n knobC"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_CardToTrack.gizmo",
    "chars": 49552,
    "preview": "Group {\n name CardToTrack\n onCreate \"#nuke.thisNode()\\['picker'].setValue(\\[nuke.toNode(\\\"root\\\")\\['format'].value().wid"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_CardToTrack2.gizmo",
    "chars": 83483,
    "preview": "Group {\n name CardToTrack_v9_\n inputs 3\n help \"This group helps to find position of 3d point in space, extract this posi"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_CatsEyeDefocus.gizmo",
    "chars": 10773,
    "preview": "Group {\n inputs 2\n name CatsEyeDefocus\n tile_color 0xb16f43ff\n addUserKnob {20 CtrlTab l \"Cat's Eye Defocus\"}\n addUserKn"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_CellNoise.gizmo",
    "chars": 38180,
    "preview": "Group {\nname CellNoise\nonCreate \"n = nuke.thisNode()\\nif n is not None:\\n    w = n.format().width()/2\\n    h = n.format("
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ChannelCombiner.gizmo",
    "chars": 3221,
    "preview": "Group {\n name ChannelCombiner\n tile_color 0x9e3c63ff\n note_font \"Verdana Bold Bold Bold Bold Bold Bold Bold Bold Bold Bo"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ChannelControl.gizmo",
    "chars": 3014,
    "preview": "Group {\n name ChannelControl\n help \"Mix the ratio of Red, Green, Blue, Alpha Channels and choose a Merge operation.\\nRes"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ChannelCreator.gizmo",
    "chars": 3968,
    "preview": "Group {\n name ChannelCreator\n tile_color 0x9e3c63ff\n label \"\\n\"\n note_font \"Verdana Bold\"\n note_font_color 0xffffffff\n s"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ChromaSmear.gizmo",
    "chars": 6974,
    "preview": "Group {\nname ChromaSmear\ntile_color 0xd26524ff\nnote_font \"Bitstream Vera Sans Bold\"\nnote_font_color 0xffffffff\nselected "
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Chromatik.gizmo",
    "chars": 13723,
    "preview": "Group {\n name Chromatik\n help \"Chromatic aberration node using a real spectral gradient.\"\n addUserKnob {20 User l Chroma"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ColorCopy.gizmo",
    "chars": 9373,
    "preview": "set cut_paste_input [stack 0]\npush $cut_paste_input\npush 0\nGroup {\n inputs 2\n name ColorCopy\n knobChanged \"n = nuke.this"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ColorSampler.gizmo",
    "chars": 26601,
    "preview": "Group {\n name apColorSampler\n help \"ColorSampler BETA v0.7 by Adrian Pueyo\\n\\nTool to calculate the average color of a t"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ColorSmear.gizmo",
    "chars": 10585,
    "preview": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name ColorSmear\n note_font Verdana\n selected true\n addUserK"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ConstantPro.gizmo",
    "chars": 13155,
    "preview": "Group {\n name ConstantPro\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() in \\[\\\"hue\\\", \\\"saturati"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ContactSheetAuto.gizmo",
    "chars": 643,
    "preview": "ContactSheet {\nwidth {{input.width*columns*resMult}}\nheight {{input.height*rows*resMult}}\nrows {{\"\\[expr \\{int( (sqrt( \\"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Contrast.gizmo",
    "chars": 2756,
    "preview": "Group {\n name Contrast\n tile_color 0x6a93ddff\n note_font \"DejaVu LGC Sans Bold\"\n note_font_color 0xffffffff\n selected tr"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ConvertPNZ.gizmo",
    "chars": 22350,
    "preview": "Group {\n name ConvertPNZ\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nif not thisGRP\\['disable_error'].getValue() :\\n    imp"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ConvolutionMatrix.gizmo",
    "chars": 9756,
    "preview": "Group {\n name ConvolutionMatrix\n inputs 2\n autolabel \"nuke.thisNode().name() + \\\"\\\\n\\\" + '(' + str(nuke.thisNode()\\['mat"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_CornerPin2D_Matrix.gizmo",
    "chars": 4051,
    "preview": "Group {\n name CornerPin2D_Matrix\n tile_color 0xa57aaa00\n selected true\n addUserKnob {20 CornerPin2D}\n addUserKnob {26 \"\""
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_CrossProductVector2.gizmo",
    "chars": 1546,
    "preview": "Group {\n name CrossProductVector2_\n help \"Calculates the cross product of 2 Vector2 inputs.\"\n addUserKnob {20 main_tab l"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_CrossProductVector3.gizmo",
    "chars": 1579,
    "preview": "Group {\n name CrossProductVector3_\n help \"Calculates the cross product of 2 Vector3 inputs.\"\n addUserKnob {20 main_tab l"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DVPColorCorrect.gizmo",
    "chars": 11679,
    "preview": "Group {\n name DVPColorCorrect\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nfor knob in thisGRP.knobs() :\\n    try :\\n       "
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DVPToImage.gizmo",
    "chars": 6196,
    "preview": "Group {\n name DVPToImage\n onCreate \"\\nnver = nuke.NUKE_VERSION_MAJOR\\nthisGRP = nuke.thisGroup()\\nif nver >= 11 :\\n    t"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DVP_Shader.gizmo",
    "chars": 12692,
    "preview": "Group {\n inputs 0\n name DVP_Shader\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nfor knob in thisGRP.knobs() :\\n    try :\\n  "
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DVP_ToonShader.gizmo",
    "chars": 11758,
    "preview": "Group {\n inputs 0\n name DVP_ToonShader\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nfor knob in thisGRP.knobs() :\\n    try :"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DVPattern.gizmo",
    "chars": 26454,
    "preview": "Group {\n name DVPattern\n tile_color 0x597fff\n label \"node type : \\[value node_type]\\noperation : \\[value matte_op]\\n<fon"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DVPfresnel.gizmo",
    "chars": 13167,
    "preview": "Group {\n name DVPfresnel\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nfor knob in thisGRP.knobs() :\\n    try :\\n        if t"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DVPmatte.gizmo",
    "chars": 32739,
    "preview": "Group {\n name DVPmatte\n tile_color 0x597fff\n label \"node type : \\[value node_type]\\noperation : \\[value matte_op]\\n<font"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DVPortal.gizmo",
    "chars": 5920,
    "preview": "Group {\n name DVPortal\n tile_color 0x4d00ccff\n label \"<img src='Camera.png'> info\"\n note_font \"MS Shell Dlg 2\"\n addUserK"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DVPrelight.gizmo",
    "chars": 53066,
    "preview": "Group {\n name DVPrelight\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nfor knob in thisGRP.knobs() :\\n    try :\\n        if t"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DVPrelightPT.gizmo",
    "chars": 59325,
    "preview": "Group {\n name DVPrelightPT\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nfor knob in thisGRP.knobs() :\\n    try :\\n        if"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DVProjection.gizmo",
    "chars": 35801,
    "preview": "Group {\n name DVProjection\n tile_color 0x597fff\n label \"<font color=cyan>2D image Output</font>\"\n addUserKnob {20 tab_ge"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DVPscene.gizmo",
    "chars": 18201,
    "preview": "Group {\n name DVPscene\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nfor knob in thisGRP.knobs() :\\n    try :\\n        if thi"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DVPsetLight.gizmo",
    "chars": 4039,
    "preview": "Group {\n name DVPsetLight\n tile_color 0x597fff\n label \"<font color=cyan>Deep Output</font>\"\n addUserKnob {20 t_VERSION l"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DasGrain.gizmo",
    "chars": 48458,
    "preview": "Group {\n name DasGrain\n help \"DasGrain makes regraining as simple as clicking a few buttons.\\n\\nFollow the steps in the "
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Deep2VP.gizmo",
    "chars": 41340,
    "preview": "Group {\n name Deep2VP\n tile_color 0x2866ff\n label \"<font color=cyan>Deep Output</font>\"\n addUserKnob {20 tab_general l G"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Deep2VPosition.gizmo",
    "chars": 16059,
    "preview": "Group {\n name Deep2VPosition\n tile_color 0x2866ff\n label \"<font color=cyan>Deep Output</font>\"\n addUserKnob {20 tab_gene"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DeepBoolean.gizmo",
    "chars": 22011,
    "preview": "Group {\n name DeepBoolean\n tile_color 0x597fff\n label \"mode : \\[value mode]\\n<font color=cyan>Deep Output</font>\"\n addUs"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DeepCopyBBox.gizmo",
    "chars": 561,
    "preview": "Group {\n name DeepCopyBBox\n tile_color 0x5fff\n addUserKnob {20 D_DeepCopyBBox}\n addUserKnob {26 \"\" +STARTLINE}\n addUserK"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DeepCropSoft.gizmo",
    "chars": 11382,
    "preview": "Group {\n name DeepCropSoft\n tile_color 0x6000\n selected true\n addUserKnob {20 deepCropSoftTab l DeepCropSoft}\n addUserKn"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DeepFromDepth.gizmo",
    "chars": 842,
    "preview": "Group {\n name DeepFromDepth\n tile_color 0x66ff\n selected true\n addUserKnob {20 User}\n addUserKnob {41 in l z T Shuffle21"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DeepFromPosition.gizmo",
    "chars": 2659,
    "preview": "Group {\n name DeepFromPosition\n tile_color 0x145bff\n label \"<font color=cyan>Deep Output</font>\"\n selected true\n addUser"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DeepHoldoutSmoother.gizmo",
    "chars": 7798,
    "preview": "Group {\n name DeepHoldoutSmoother\n help \"DeepAntialias creates an antialiased Deep edge by adding adjacent slices of the"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DeepKeyMix.gizmo",
    "chars": 4055,
    "preview": "Group {\n inputs 2\n name DeepKeyMix\n tile_color 0x59ff\n addUserKnob {20 User l DeepKeyMix}\n addUserKnob {26 \"\"}\n addUserK"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DeepMerge_Advanced.gizmo",
    "chars": 2289,
    "preview": "Group {\n name DeepMergeAdvanced\n help \"- Merges all channels from A and B in deep. - Fixes issue with DeepMerge's holdou"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DeepRecolorMatte.gizmo",
    "chars": 6045,
    "preview": "Group {\n inputs 2\n name DeepRecolorMatte\n help \"this node creates a new single channel\\n<NewChannelName>.red and injects"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DeepSampleCount.gizmo",
    "chars": 24256,
    "preview": "Group {\n name DeepSampleCount\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nfor knob in thisGRP.knobs() :\\n    if knob\\[0:6] "
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DeepSer.gizmo",
    "chars": 16688,
    "preview": "Group {\n name DeepSer\n onCreate \"\\nnver = nuke.NUKE_VERSION_MAJOR\\nthisGRP = nuke.thisGroup()\\nif nver >= 11 :\\n\\t thisG"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DeflickerVelocity.gizmo",
    "chars": 15830,
    "preview": "Group {\n name DeflickerVelocity\n tile_color 0x7f00ffff\n note_font Verdana\n selected true\n mapsize {0.15 0.15}\n addUserKn"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DefocusSwirlyBokeh.gizmo",
    "chars": 11666,
    "preview": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name DefocusSwirlyBokeh\n tile_color 0xb16f43ff\n selected tr"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DespillToColor.gizmo",
    "chars": 7353,
    "preview": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name DespillToColor\n tile_color 0x475247ff\n note_font \"Bits"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Diffusion.gizmo",
    "chars": 2861,
    "preview": "Group {\n name Diffusion\n onCreate \"n = nuke.thisNode()\\nn.knob('size').setRange(0, 300)\"\n tile_color 0xcc804eff\n note_fo"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DirectionalBlur.gizmo",
    "chars": 8312,
    "preview": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name DirectionalBlur\n tile_color 0xcc804eff\n note_font \"Luc"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Distance3D.gizmo",
    "chars": 1330,
    "preview": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\nname Distance3d\nselected true\naddUserKnob {20 distance3D}\nad"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DistanceBetween_CS.gizmo",
    "chars": 1955,
    "preview": "Group {\n name DistanceBetween_CS\n tile_color 0x9c0000ff\n label \"Distance2D: \\[value Distance2D]\\nDistance3D: \\[value Dis"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DotProductVector2.gizmo",
    "chars": 1584,
    "preview": "Group {\n name DotProductVector2_\n help \"Calculates the dot product of 2 Vector2 inputs.\"\n addUserKnob {20 main_tab l \"Do"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DotProductVector3.gizmo",
    "chars": 1590,
    "preview": "Group {\n name DotProductVector3_\n help \"Calculates the dot product of 2 Vector3 inputs.\"\n addUserKnob {20 main_tab l \"Do"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_DummyCam.gizmo",
    "chars": 4218,
    "preview": "Camera {\n projection_mode {{\"\\[expression \\[value the_cam]projection_mode(\\[value the_frame])]\"}}\n focal {{\"\\[expression"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Edge.gizmo",
    "chars": 27125,
    "preview": "Group {\n name Edge\n help \"Edge allows you to extend the proper color out over transparent edges or areas with a lot of m"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_EdgeDetectAlias.gizmo",
    "chars": 2041,
    "preview": "Group {\n name EdgeDetectAlias\n tile_color 0xcc804eff\n note_font \"Bitstream Vera Sans Bold Bold\"\n note_font_color 0xfffff"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_EdgeDetectPRO.gizmo",
    "chars": 8353,
    "preview": "Group {\n name EdgeDetectPRO\n tile_color 0xcc804e00\n addUserKnob {20 EdgeDetect}\n addUserKnob {41 channels T CTRL.channel"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_EdgeFromAlpha.gizmo",
    "chars": 2240,
    "preview": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name EdgeFromAlpha\n note_font Verdana\n selected true\n mapsi"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Edge_Expand.gizmo",
    "chars": 31912,
    "preview": "Group {\n name Edge_Expand\n inputs 2\n help \"Expand edges to fix fringing on keys.\\nUse after a premult is preferred, but "
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Edge_RimLight.gizmo",
    "chars": 6257,
    "preview": "Group {\n name Edge_RimLight\n autolabel nuke.thisNode().name()\n tile_color 0xff6e00ff\n note_font \"Verdana Bold Bold\"\n not"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Emission.gizmo",
    "chars": 34458,
    "preview": "Group {\n name Emission\n knobChanged \"def add_input(group, prefix):\\n    with group:\\n        fullname = group.fullName()"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_EnvReflect_BB.gizmo",
    "chars": 4140,
    "preview": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name EnvReflect_Bb_\n help \"Fake Env reflections using a nor"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ErodeSmooth.gizmo",
    "chars": 2085,
    "preview": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name ErodeSmooth\n tile_color 0xcc804eff\n selected true\n add"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Erode_Fine.gizmo",
    "chars": 10501,
    "preview": "Group {\n name Erode_Fine\n inputs 2\n help \"Erode an image with fine controls, as opposed to Nuke's default erode node.\"\n "
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ExponBlurSimple.gizmo",
    "chars": 20300,
    "preview": "Group {\n name ExponBlurSimple\n onCreate \"n = nuke.thisNode()\\nn.knob('size').setRange(-100, 100)\\nn.knob('adjustBBoxPixe"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ExponGlow.gizmo",
    "chars": 32634,
    "preview": "Group {\n name ExponGlow\n onCreate \"n = nuke.thisNode()\\nn.knob('size').setRange(0, 5)\\nn.knob('exp').setRange(0, 4)\\nn.k"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_F_P_Project.gizmo",
    "chars": 10025,
    "preview": "Group {\n name P_Project\n help \"Position Project\\n\\nCamera Project using only the render of the Position pass and the Cam"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_F_P_Ramp.gizmo",
    "chars": 19316,
    "preview": "Group {\n name P_Ramp\n help \"P_Ramp\\n\\nCreate a ramp in the alpha channel using the render of the Position pass.\\n\\nThe r"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_FastComplexityDistort.gizmo",
    "chars": 8095,
    "preview": "Group {\n name FastComplexity_Distort\n tile_color 0xa57aaaff\n selected true\n addUserKnob {20 User}\n addUserKnob {26 text "
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_FillSampler.gizmo",
    "chars": 43939,
    "preview": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name FillSampler\n selected true\n addUserKnob {20 User}\n add"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_FlareSuperStar.gizmo",
    "chars": 30110,
    "preview": "Group {\n name FlareSuperStar\n selected true\n addUserKnob {20 User l \"Shape Controls\"}\n addUserKnob {26 \"\"}\n addUserKnob "
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_FractalBlur.gizmo",
    "chars": 4532,
    "preview": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name FractalBlur\n selected true\n addUserKnob {20 User}\n add"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_FrameFiller.gizmo",
    "chars": 12502,
    "preview": "Group {\n name FrameFiller\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nlogKnobs = \\['vectorDetailLocal','smoothnessLocal','v"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_FrameHoldSpecial.gizmo",
    "chars": 4083,
    "preview": "Group {\n name FrameHold_special\n knobChanged \"\\nnk = nuke.thisNode()\\nk = nuke.thisKnob()\\ntype=nk\\['type']\\npause=nk\\['"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_FrameMedian.gizmo",
    "chars": 12079,
    "preview": "Group {\n name FrameMedian\n tile_color 0x2f66ff\n selected true\n addUserKnob {20 FrameMedian}\n addUserKnob {26 \"\"}\n addUse"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_GUI_Switch.gizmo",
    "chars": 1241,
    "preview": "Group {\n name GUI_Switch\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == \\\"disable\\\":\\n    if k"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_GammaPlus.gizmo",
    "chars": 7929,
    "preview": "Group {\n name GammaPlus\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nfor knob in thisGRP.knobs() :\\n    if thisGRP\\[knob].la"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_GenerateMatrix4.gizmo",
    "chars": 3981,
    "preview": "Group {\n name GenerateMatrix4_\n help \"Generate a Matrix4 based on a Matrix Knob. (Defaults to an identity matrix)\"\n knob"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_GenerateSTMap.gizmo",
    "chars": 1045,
    "preview": "Group {\n inputs 0\n name GenerateSTMap\n postage_stamp true\n addUserKnob {20 STMap l \"ST Map\"}\n addUserKnob {41 format l F"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_GeoToPoints.gizmo",
    "chars": 3167,
    "preview": "Group {\n name GeoToPoints\n tile_color 0x807291ff\n selected true\n addUserKnob {20 User}\n addUserKnob {26 info l \"\" +START"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Glass.gizmo",
    "chars": 6295,
    "preview": "Group {\nname Glass\ntile_color 0xcc804eff\nnote_font \"Bitstream Vera Sans Bold\"\nnote_font_color 0xffffffff\nselected true\na"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Glow_Exponential.gizmo",
    "chars": 10867,
    "preview": "Group {\n name Glow_Exponential\n inputs 2\n help \"Exponential Glow node, with options to recolor and adjust falloff.\"\n kno"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_GlueP.gizmo",
    "chars": 14547,
    "preview": "Group {\n name Ls_GlueP\n help \"GlueP - glues an image to a position pass, by projecting on it.\\n\\nInputs:\\n  Image to pro"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_GodRaysProjector.gizmo",
    "chars": 64684,
    "preview": "Group {\n name GodRaysProjector\n tile_color 0xcc804eff\n selected true\n addUserKnob {20 User}\n addUserKnob {41 \"Local GPU:"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_GradMagic.gizmo",
    "chars": 48075,
    "preview": "Group {\n name GradMagic\n help \"Creates a 4 point gradient that samples corners from the input. Ability to bake color res"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_GradeLayerPass.gizmo",
    "chars": 3960,
    "preview": "Group {\n name GradeLayerPass\n help \"Select a lighting pass layer to minus from CG beauty input, do your color correction"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Grain_Advanced.gizmo",
    "chars": 5874,
    "preview": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name GrainAdvanced\n help \"Adds synthetic grain. \\n\\nThe def"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_GuidedBlur.gizmo",
    "chars": 13302,
    "preview": "Group {\n inputs 2\n name GuidedBlur\n help \"Description:\\n\\nThe guided filter is an edge-preserving blur,\\nuseful to add d"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_HSL_Tool.gizmo",
    "chars": 3162,
    "preview": "Group {\n name HSL_Tool\n tile_color 0xe2f1ff\n selected true\n addUserKnob {20 hue}\n addUserKnob {41 lut l \"\" -STARTLINE T "
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Halation.gizmo",
    "chars": 4805,
    "preview": "Group {\n name Halation\n tile_color 0xcc804eff\n note_font \"Verdana Bold\"\n note_font_color 0xffffffff\n selected true\n addU"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_HeatWave.gizmo",
    "chars": 19706,
    "preview": "Group {\n name HeatWave\n knobChanged \"n = nuke.thisNode()\\n\\nif n.input(2) !=None :\\n    n\\['evolutionspeed'].setEnabled("
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_HexColor.gizmo",
    "chars": 5590,
    "preview": "Group {\n inputs 0\n name HexColor\n knobChanged \"\\ndef int2hex(x):\\n    val = hex(x)\\[2:]\\n    val = \\\"0\\\"+val if len(val)"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_HighPass.gizmo",
    "chars": 4068,
    "preview": "Group {\n name HighPass\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == 'output1':\\n    if n.kno"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_HighlightSuppress.gizmo",
    "chars": 4827,
    "preview": "Group {\n name HighlightSuppress\n tile_color 0x5c7fc0ff\n note_font \"Verdana Bold\"\n note_font_color 0xffffffff\n selected t"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ID_Extractor.gizmo",
    "chars": 2532,
    "preview": "Group {\n name ID_Extractor\n tile_color 0x3d3d3dff\n label \"<big><font color=\\\"white\\\">\\[value Achannels]\\n<font color=\\\"R"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_IIDistort.gizmo",
    "chars": 3603,
    "preview": "Group {\n inputs 2\n name IIDistort\n help \"Recursuve IDistort Node, the vectors advect themselves multiple times, creating"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ITransformU.gizmo",
    "chars": 6066,
    "preview": "Group {\n name ITransformU\n tile_color 0xa57aaaff\n selected true\n addUserKnob {20 \"\" l Transform}\n addUserKnob {14 AdjBBo"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ImagePlane3D.gizmo",
    "chars": 41493,
    "preview": "Group {\n name ImagePlane3D\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif k.name() == 'inputChange':\\n    "
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_InjectMatteChannel.gizmo",
    "chars": 5647,
    "preview": "Group {\n name InjectMatteChannel\n help \"this node creates a new single channel\\n<NewChannelName>.red and injects it into"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_InverseMatrix33.gizmo",
    "chars": 3931,
    "preview": "Group {\n inputs 0\n name InverseMatrix33_\n tile_color 0x337f4cff\n addUserKnob {20 tab_general l General}\n addUserKnob {1 "
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_InverseMatrix44.gizmo",
    "chars": 17592,
    "preview": "Group {\n inputs 0\n name InverseMatrix44_\n tile_color 0x337f4cff\n addUserKnob {20 tab_general l General}\n addUserKnob {1 "
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_InvertAxis.gizmo",
    "chars": 8176,
    "preview": "Group {\n name InvertAxis\n help \"Inverts an input Axis\"\n tile_color 0x9c0000ff\n addUserKnob {20 InvertAxis l \"Invert Axis"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_InvertMatrix4.gizmo",
    "chars": 11503,
    "preview": "Group {\n name InvertMatrix4_\n help \"Invert a pixel based Matrix4 (Defined as layers matrix0, matrix1, matrix2 and matrix"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_KeyChew.gizmo",
    "chars": 2486,
    "preview": "Group {\n name KeyChew\n help \"Cheaply dilates and erodes a matte\"\n onCreate \"n = nuke.thisNode()\\nn.knob(\\\"shrinkDilate\\\""
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_KeymixBBox.gizmo",
    "chars": 1220,
    "preview": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n inputs 3\n name KeymixBBox\n tile_color 0x4b5ec6ff\n selected "
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_KillOutline.gizmo",
    "chars": 13127,
    "preview": "Group {\n name KillOutline\n help \"KillOutline reduces unwanted outlines from keyed footage.\\n\\nerode controls: erode the "
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_LabelFromRead.gizmo",
    "chars": 5956,
    "preview": "Group {\n name LabelFromRead\n tile_color 0x1f1f1fff\n label \"\\[ expr \\{ \\[value splitPath] ? \\[value finalFilePath] : \\[] "
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_LensEngine.gizmo",
    "chars": 1639524,
    "preview": "Group {\n name LensEngine\n selected true\n addUserKnob {20 mainTab l main}\n addUserKnob {26 headline l \"\" +STARTLINE T \"<f"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_LightSwitch.gizmo",
    "chars": 31114,
    "preview": "add_layer {LG01 LG01.red LG01.green LG01.blue LG01.alpha}\nadd_layer {LG02 LG02.red LG02.green LG02.blue LG02.alpha}\nadd_"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_LightWrapPro.gizmo",
    "chars": 60115,
    "preview": "Group {\n name LightWrapPro\n help \"Adds exponentially blurred lightwrap\\n\\nAdds a bright highlight wrap and an overall wr"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Lightning3D.gizmo",
    "chars": 50764,
    "preview": "set cut_paste_input [stack 0]\nGroup {\n inputs 0\n name Lightning3D\n tile_color 0x131b56ff\n note_font \"Bitstream Vera Sans"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_LineTool.gizmo",
    "chars": 3263,
    "preview": "Group {\n name LineTool\n tile_color 0xc4f8cff\n note_font \"Verdana Bold Bold Bold\"\n note_font_color 0xffd199ff\n selected t"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Looper.gizmo",
    "chars": 7958,
    "preview": "Group {\n name Looper\n inputs 2\n knobChanged \"n = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nclipendtrue = str(n\\['avoidclip"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_LumaGrain.gizmo",
    "chars": 9350,
    "preview": "Group {\n name LumaGrain\n help \"<b><u>L_Grain_v04\\t</b></u>\\t\\nAdded functionality to Nuke's default grain node.\\n \\n<b>\\"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_LumaKeyer.gizmo",
    "chars": 4817,
    "preview": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n name LumaKeyer\n onCreate \"n = nuke.thisNode()\\nn.knob('blac"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_LumaToVector3.gizmo",
    "chars": 4371,
    "preview": "Group {\n name LumaToVector3_\n help \"Performs a Sobel filter on the Luminance channel of an image to extract an approxima"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_MECfiller.gizmo",
    "chars": 84741,
    "preview": "Group {\n inputs 0\n name MECfiller\n tile_color 0xff00ffff\n addUserKnob {20 User}\n addUserKnob {26 name_1 l \"\" +STARTLINE "
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_MagnitudeVector2.gizmo",
    "chars": 1214,
    "preview": "Group {\n name MagnitudeVector2_\n help \"Calculate the magnitude (scalar) of an input Vector2.\"\n addUserKnob {20 main_tab "
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_MagnitudeVector3.gizmo",
    "chars": 1221,
    "preview": "Group {\n name Magnitude_Vector3_\n help \"Calculate the magnitude (scalar) of an input Vector3.\"\n addUserKnob {20 main_tab"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Matrix4x4Math.gizmo",
    "chars": 8874,
    "preview": "set cut_paste_input [stack 0]\npush $cut_paste_input\nGroup {\n inputs 2\n name Matrix4x4Math\n tile_color 0x9c0000ff\n select"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Matrix4x4_Inverse.gizmo",
    "chars": 23866,
    "preview": "Group {\nname Matrix4x4_Inverse\ntile_color 0x9c0000ff\nselected true\naddUserKnob {20 MatrixInverse}\naddUserKnob {4 inputMa"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_MergeAll.gizmo",
    "chars": 3092,
    "preview": "set cut_paste_input [stack 0]\npush $cut_paste_input\npush 0\nGroup {\n inputs 2\n name MergeAll\n help \"MergeAll v1.0\\n\\nMerg"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_MergeAtmos.gizmo",
    "chars": 2677,
    "preview": "set cut_paste_input [stack 0]\npush $cut_paste_input\npush 0\nGroup {\n inputs 2\n name MergeAtmos\n tile_color 0x4b5ec6ff\n no"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_MergeBlend.gizmo",
    "chars": 2461,
    "preview": "Group {\n inputs 2\n name MergeBlend\n tile_color 0x4b5ec6ff\n label \"\\[value merge1] | \\[value merge2]\"\n note_font \"Verdana"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_MirrorBorder.gizmo",
    "chars": 14182,
    "preview": "Group {\n name MirrorBorder\n onCreate \"n = nuke.thisNode()\\nsize = n.knob(\\\"size\\\")\\n\\nsize.setRange(0, 500)\"\n tile_color"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_MirrorDimension.gizmo",
    "chars": 20802,
    "preview": "Group {\n name MirrorDimension\n tile_color 0x9c0000ff\n note_font_color 0xffffffff\n selected true\n addUserKnob {20 MirrorD"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_MonochromePlus.gizmo",
    "chars": 3688,
    "preview": "Group {\n name MonochromePlus\n tile_color 0x7aa9ffff\n note_font \"Bitstream Vera Sans\"\n selected true\n addUserKnob {20 Mon"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_MorphDissolve.gizmo",
    "chars": 8296,
    "preview": "Group {\n name MorphDissolve\n help \"Allows to morph between two moving plates automatically, or can be used to improve ma"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_MotionBlurPaint.gizmo",
    "chars": 8073,
    "preview": "Group {\n name MotionBlurPaint\n onCreate \"n = nuke.thisNode()\\nn\\['format'].setFlag(nuke.DISABLED)\"\n tile_color 0xcc804e0"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_MultiplyVector3Matrix3.gizmo",
    "chars": 3430,
    "preview": "Group {\n name MultiplyVector3Matrix3_\n help \"Multiply (transform) a Vector3 by a Matrix3. This is the equivalent of appl"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_NAN_INF_Killer.gizmo",
    "chars": 9239,
    "preview": "Group {\n name NAN_INF_Killer\n tile_color 0xff6200ff\n label \"\\[value which]\"\n note_font \"Bitstream Vera Sans Bold Bold\"\n "
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_N_Reflection.gizmo",
    "chars": 2147,
    "preview": "Group {\n name N_Reflection\n tile_color 0x417c3eff\n note_font Verdana\n note_font_color 0xffffffff\n selected true\n addUser"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Noise3DTexture.gizmo",
    "chars": 6130,
    "preview": "Group {\n name Noise3DTexture\n tile_color 0x303030ff\n note_font_color 0x99ffffff\n selected true\n addUserKnob {20 User}\n a"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Noise3D_spin.gizmo",
    "chars": 16293,
    "preview": "Group {\n name Noise3D\n inputs 2\n help \"Generate Noise in 3D space based on Position passes. It includes pre-made Positio"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_NoiseAdvanced.gizmo",
    "chars": 5588,
    "preview": "Group {\n name NoiseAdvanced\n help \"Noise node with various time sliders.  Can quickly create animated noise.\\n\\nAdded an"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_NormalizeVector2.gizmo",
    "chars": 1452,
    "preview": "Group {\n name NormalizeVector2_\n help \"Normalize the magnitude of a Vector2 (to be of magnitude 1)\"\n addUserKnob {20 mai"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_NormalizeVector3.gizmo",
    "chars": 1558,
    "preview": "Group {\n name NormalizeVector3_\n help \"Normalize the magnitude of a Vector3 (to be of magnitude 1)\"\n addUserKnob {20 mai"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_NormalsRotate.gizmo",
    "chars": 7301,
    "preview": "Group {\n name NormalsRotate\n onCreate \"\\nn=nuke.thisNode()\\nn\\['mblack'].setFlag(0x0000000000000004)\\nn\\['mgain'].setFla"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_NukeZ.gizmo",
    "chars": 17432,
    "preview": "Group {\n name NukeZ\n inputs 0\n tile_color 0xffc900ff\n label \"<center><img src='PoissonMesh.png'></center>\"\n note_font \"D"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_P2N.gizmo",
    "chars": 19224,
    "preview": "Group {\n name P2N\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nif not thisGRP\\['disable_error'].getValue() :\\n    import os\\"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_P2Z.gizmo",
    "chars": 17325,
    "preview": "Group {\n name P2Z\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nif not thisGRP\\['disable_error'].getValue() :\\n    import os\\"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_P_Noise_Advanced.gizmo",
    "chars": 35578,
    "preview": "Group {\n name P_Noise_Advanced\n knobChanged \"\\nn = nuke.thisNode()\\ntype = n\\['noisetype'].value()\\nblock = n\\['Trunc']."
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ParticleKiller.gizmo",
    "chars": 2153,
    "preview": "Group {\nname ParticleKiller\ntile_color 0x101010ff\nselected true\naddUserKnob {20 particleKillerTab l ParticleKiller}\naddU"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ParticleLights.gizmo",
    "chars": 9985,
    "preview": "Group {\n name ParticleLights\n selected true\n addUserKnob {20 User}\n addUserKnob {26 info1 l \"\" +STARTLINE T \"Particle Li"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_PerspectiveGuide.gizmo",
    "chars": 22252,
    "preview": "Group {\n name PerspectiveGuide_BB\n tile_color 0x566d6dff\n note_font Verdana\n selected true\n mapsize {0.15 0.15}\n addUser"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_PlanarProjection.gizmo",
    "chars": 82829,
    "preview": "Group {\n name PlanarProjection\n help \"<b>Planar Projection</b>\\nGenerates 2D coordinates for points in 3D space. Type in"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_PlotScanline.gizmo",
    "chars": 4026,
    "preview": "Group {\nname PlotScanline\ntile_color 0x9c0000ff\nselected true\naddUserKnob {20 Controls}\naddUserKnob {4 mode l \"Sampling "
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_PointCloudKeyer.gizmo",
    "chars": 8709,
    "preview": "Group {\n name PointCloudKeyer\n onCreate \"try: \\n    n = nuke.thisNode()\\n    n\\['translate'].setFlag(0x0000002000000000)"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_PosMatte_MJ.gizmo",
    "chars": 15783,
    "preview": "Group {\n name PosMatte\n tile_color 0x5f3f7fff\n addUserKnob {20 tab_general l General}\n addUserKnob {41 geo_select T geoC"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_PosPattern_MJ.gizmo",
    "chars": 12127,
    "preview": "Group {\n name PosPattern\n tile_color 0x5f3f7fff\n addUserKnob {20 tab_general l General}\n addUserKnob {41 position l \"wor"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_PosProjection_MJ.gizmo",
    "chars": 19719,
    "preview": "Group {\n name PosProjection\n tile_color 0x5f3f7fff\n addUserKnob {20 tab_general l General}\n addUserKnob {41 position l \""
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ProductMatrix4.gizmo",
    "chars": 3939,
    "preview": "Group {\n name ProductMatrix4_\n help \"Multiply two pixel based Matrix4 (Defined as layers matrix0, matrix1, matrix2 and m"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Pyclopedia.gizmo",
    "chars": 12841,
    "preview": "Group {\n inputs 0\n name Pyclopedia\n onCreate \"\\nimport os, pydoc, re\\n\\n##########\\n\\ndef pyclopediaLoadField( _thisG ) "
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Python_and_TCL.gizmo",
    "chars": 58300,
    "preview": "Group {\n inputs 0\n name Python_and_TCL\n knobChanged \"\\nnk = nuke.thisNode()\\nk = nuke.thisKnob()\\n\\nif ('operation' in k"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_RP_Reformat.gizmo",
    "chars": 11310,
    "preview": "Group {\n name RP_Reformat\n onCreate \"\\nnuke.thisGroup()\\['old_pixel_aspect'].setFlag(0x00000100)\\nnuke.thisGroup()\\['new"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_RadialAdvanced.gizmo",
    "chars": 4605,
    "preview": "Group {\n name RadialAdvanced\n tile_color 0x5f5f5fff\n note_font \"Verdana Bold Bold Bold Bold Bold Bold Bold Bold Bold Bol"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_RadialDilate.gizmo",
    "chars": 3500,
    "preview": "Group {\n name RadialDilate\n tile_color 0xcc804eff\n note_font_color 0xffffffff\n addUserKnob {20 RadialDilate}\n addUserKno"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_RainMaker.gizmo",
    "chars": 19870,
    "preview": "Group {\n name RainMaker\n selected true\n addUserKnob {20 User l RainMaker}\n addUserKnob {6 rainonly l \"Rain only (No comp"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Randomizer.gizmo",
    "chars": 5253,
    "preview": "Group {\n name Randomizer\n tile_color 0x5f5f5fff\n label \"\\[value type]\"\n note_font \"Verdana Bold Bold Bold Bold Bold Bold"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_RankFilter.gizmo",
    "chars": 3773,
    "preview": "Group {\n inputs 0\n name RankFilter\n tile_color 0x168696ff\n addUserKnob {20 RankFilter}\n addUserKnob {41 \"Local GPU: \" T "
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_RayDeepAO.gizmo",
    "chars": 4815,
    "preview": "Group {\n name RayDeepAO\n onCreate \"\\nthisGRP = nuke.thisGroup()\\nfor knob in thisGRP.knobs() :\\n    try :\\n        if kn"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ReProject_3D.gizmo",
    "chars": 8702,
    "preview": "Group {\n name Reproject_3D\n help \"This gizmo does camera projection using the STMap node to remap all the layers in the "
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Reconcile3DFast.gizmo",
    "chars": 10403,
    "preview": "Group {\n inputs 3\n name reconcile3DFast\n tile_color 0x421010ff\n addUserKnob {20 PlanarProjection l reconcile3DFast}\n add"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Relight_Simple.gizmo",
    "chars": 5407,
    "preview": "Group {\n name Relight_Simple\n help \"Simpliflied relight node.\\nOnly requires a normal map to get started.\\n\\nThis node w"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Relight_bb.gizmo",
    "chars": 12890,
    "preview": "Group {\n name Relight_BB\n help \"2D tool to help relight 3d renders with help of a normals pass\\n\\nFeed it with a normals"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_Rings_of_Power.gizmo",
    "chars": 19582,
    "preview": "Group {\n name Rings_of_Power\n onCreate \"n = nuke.thisNode()\\nn.knob('outerRadius').setRange(0, 2)\\nn.knob('innerRadius')"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_RotateMatrix4.gizmo",
    "chars": 78273,
    "preview": "Group {\n name RotateMatrix4_\n addUserKnob {20 Matrix4x4_Rotate}\n addUserKnob {4 rotation_unit l \"rotation unit\" M {radia"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_RotateVector2.gizmo",
    "chars": 2785,
    "preview": "Group {\n name RotateVector2_\n help \"Rotate a 2D vector on the same 2D plane.\"\n knobChanged \"\\nnode = nuke.thisNode()\\nkn"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_RotateVector3.gizmo",
    "chars": 9509,
    "preview": "Group {\n name RotateVector3_\n help \"Rotate a Vector3 in 3 dimensions.\"\n knobChanged \"node = nuke.thisNode()\\nknob = nuke"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_RotoCentroid.gizmo",
    "chars": 2511,
    "preview": "Group {\n name RotoCentroid\n tile_color 0x70ff66ff\n selected true\n addUserKnob {20 RotoCentroid}\n addUserKnob {12 centroi"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_RotoPaintTransform.gizmo",
    "chars": 9783,
    "preview": "Group {\n name RotoPaint_Transform\n onCreate \"n = nuke.thisNode()\\nn\\['format'].setFlag(nuke.DISABLED)\"\n knobChanged \"n ="
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_RotoQC.gizmo",
    "chars": 12492,
    "preview": "set cut_paste_input [stack 0]\npush 0\npush $cut_paste_input\nGroup {\n inputs 2\n name RotoQC\n help \"matte QC tool for check"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_SSMesh.gizmo",
    "chars": 35196,
    "preview": "Group {\n name SSMesh\n tile_color 0x5c9e83ff\n label \"<font color=cyan>Geo Output</font>\"\n addUserKnob {20 tab_general l G"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_STMapToVector2.gizmo",
    "chars": 1034,
    "preview": "Group {\n name STMapToVector2_\n help \"Transforms a distorted UV Map to Motion Vectors corresponding to the distortion.\"\n "
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_STmapInverse.gizmo",
    "chars": 2384,
    "preview": "Group {\n name STMapInverse\n tile_color 0x196654ff\n selected true\n addUserKnob {20 InverseSTMap}\n addUserKnob {41 in l ch"
  },
  {
    "path": "NukeSurvivalToolkit/gizmos/NST_ScaleMatrix4.gizmo",
    "chars": 1330,
    "preview": "Group {\n name ScaleMatrix4_\n help \"Scale a matrix4 using a control channel (rgb from vector input) for which each channe"
  }
]

// ... and 173 more files (download for full content)

About this extraction

This page contains the full source code of the CreativeLyons/NukeSurvivalToolkit_publicRelease GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 373 files (8.4 MB), approximately 2.2M tokens, and a symbol index with 133 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!