@bendurso I had this on Win 11, and after clearing AppData path (Use Win + R, paste and run it) %AppData%
delete folders HISE or HISE.exe.
You will lose the settings, but Hise will start running.

Best posts made by It_Used
-
RE: Hise won't open on Windows 10
-
RE: Few questions from a newbie
@ScreamingWaves I think it will work, but I can't know in advance.
I use this naming format:
Mic1¹_21²_3³ [A-1]⁴.wav
(You can use many of your custom separators into sample mapper).- Mic position.
- Key (numberic type).
- Fixed velocity value.
- Key (string type).
-
RE: Custom vectorized piano keyboard with unique octave indicator (Keyboard from VSL)
19.08.25 Update. Wtat's new?
- Fully rewritten to stock graphics pipeline. Do not use SVG anymore (More freedom for customize).
- Fixed issue with scaling by Vertical and Horizontal (When keys and octave-marks incorrectly shows).
- Some core optimisations.
Many thanks to this wonderful people - @ustk for help!
️
Script:
/* Author: It_Used, ustk Date: 19.08.25 | 03:26 Copyright:(c)2025, Vienna Symphonic Library */ Content.makeFrontInterface(1140, 500); // Change both-key spacing (white). reg KeySpacing = 2; // Change octave-mark visible. reg ShowOctaveMark = 1; // Octaves array. const var Octaves = ["-2", "-1", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"]; // Key for octave center (add +-12 to change). const var OctCenter = 60; // Declare keyboard. const var fltKeyboard = Content.getComponent("fltKeyboard"); // Create LookAndFeel. const keyboardLaf = Content.createLocalLookAndFeel(); fltKeyboard.setLocalLookAndFeel(keyboardLaf); keyboardLaf.registerFunction("drawKeyboardBackground", function(g, obj) { // Draw background. g.fillAll(Colours.black); }); // Draw white note via LAF. keyboardLaf.registerFunction("drawWhiteNote", function(g, obj) { var mark_proportion = 0.75; var font_proportion = 12.0 / 15.0; var text_y_proportion = 1.5 / 15.0; var mark_width = obj.area[2] * mark_proportion; var mark_height = mark_width; var font_size = mark_width * font_proportion; var text_y_offset = mark_width * text_y_proportion; if (!obj.down) { // Up key. // Bottom bounds. g.setColour(Colours.withAlpha(0x9E9E9E, 100)); g.fillRect([obj.area[0], obj.area[1] + 25, obj.area[2] - KeySpacing, obj.area[3] - 30]); // Key body. g.setColour(Colours.withAlpha(0xBABABA, 100)); g.fillRoundedRectangle([obj.area[0], obj.area[1] + 3, obj.area[2] - KeySpacing, obj.area[3] - 15], 2.50); if (ShowOctaveMark && obj.noteNumber % 12 == 0) { var is_center = (OctCenter == obj.noteNumber); var bg_color = is_center ? Colours.withAlpha(0xB26776, 100) : Colours.withAlpha(0x6B6B6B, 100); var mark_x = obj.area[0] + (obj.area[2] - mark_width - KeySpacing) / 2; var mark_y = obj.area[1] + obj.area[3] - 30; g.setColour(bg_color); g.fillEllipse([mark_x, mark_y, mark_width, mark_height]); g.setFont("Inria Sans", font_size); g.setColour(Colours.withAlpha(0xBABABA, 100)); g.drawAlignedText(Octaves[Math.floor(obj.noteNumber / 12) + 1], [mark_x, mark_y + text_y_offset, mark_width, mark_height], "centred"); } } else { // Down key. // Top bounds. g.setColour(Colours.withAlpha(0x666666, 100)); g.fillRoundedRectangle([obj.area[0], obj.area[1] + 3, obj.area[2] - KeySpacing, obj.area[3] - 15], 2.50); // Key body gradient. g.setGradientFill([Colours.withAlpha(0xD9D9D9, 100), obj.area[0], obj.area[1] + 5, Colours.withAlpha(0x737373, 100), obj.area[0], obj.area[1] + 90]); g.fillRoundedRectangle([obj.area[0], obj.area[1] + 5, obj.area[2] - KeySpacing, obj.area[3] - 7], 2.50); if (ShowOctaveMark && obj.noteNumber % 12 == 0) { var is_center = (OctCenter == obj.noteNumber); var bg_color = is_center ? Colours.withAlpha(0xB26776, 100) : Colours.withAlpha(0x575757, 100); var mark_x = obj.area[0] + (obj.area[2] - mark_width - KeySpacing) / 2; var mark_y = obj.area[1] + obj.area[3] - 20; g.setColour(bg_color); g.fillEllipse([mark_x, mark_y, mark_width, mark_height]); g.setFont("Inria Sans", font_size); g.setColour(Colours.withAlpha(0xBABABA, 100)); g.drawAlignedText(Octaves[Math.floor(obj.noteNumber / 12) + 1], [mark_x, mark_y + text_y_offset, mark_width, mark_height], "centred"); } } }); // Draw black note via LAF. keyboardLaf.registerFunction("drawBlackNote", function(g, obj) { if (!obj.down) { // Up key. // Background. g.setColour(Colours.black); g.fillRoundedRectangle(obj.area, {CornerSize: 4, Rounded: [0, 0, 1, 1]}); // Top gradient. g.setGradientFill([Colours.withAlpha(0x4C4C4C, 100), obj.area[0], obj.area[1] + 2, Colours.withAlpha(0x323232, 100), obj.area[0], obj.area[1] + 53]); g.fillRoundedRectangle([obj.area[0] + 2, obj.area[1] + 2, obj.area[2] - 4, obj.area[3] - 10], 2); // Bottom gradient. g.setGradientFill([Colours.withAlpha(0x252525, 100), obj.area[0], obj.area[3] - 6, Colours.withAlpha(0x0D0D0D, 100), obj.area[0], obj.area[3]]); g.fillRoundedRectangle([obj.area[0] + 2, obj.area[3] - 6, obj.area[2] - 4, 6], {CornerSize: 2, Rounded: [1, 1, 1, 1]}); } else { // Down key. // Background. g.setColour(Colours.black); g.fillRoundedRectangle(obj.area, {CornerSize: 4, Rounded: [0, 0, 1, 1]}); // Top gradient. g.setGradientFill([Colours.withAlpha(0x3E3E3E, 100), obj.area[0], obj.area[1] + 4, Colours.withAlpha(0x262626, 100), obj.area[0], obj.area[1] + 52]); g.fillRoundedRectangle([obj.area[0] + 2, obj.area[1] + 4, obj.area[2] - 4, obj.area[3] - 7], 2); } });
Snippet:
HiseSnippet 2126.3oc6YstaiiaEVNSzhMdm.rKP6+YCPWXOqiij7s3DDrIwNd2fIYlf0YlsEAAAzRz1rQVzPhNYbmlGh9l0Gk9FzdN5hMkhykw6rnKZqYfh44B4GO7vOQSdluvlEDH70xk+7oiYZ4dod2odxgsFR4dZG2VK2WpSct85QtZGNcLMHf4nkK2K9ATat0VUK7y+76Oj5R8rYyEoo8dA2lcBeDWNW5Y6+ZtqaGpC6b9HEqqt+w1BuVBWwD.IuP2PaL09Z5.1annYqnq8izfgZ4dkNyoeCCaSpikAqQCnRcyZ8Y8pVkY1neid8ZRsptMcaSsbewQNbovuqjJYAZ4V8PgyztCE25E0AumGv64xvJlZcgdNRbGgqCNDQoZsFxccNKIDEnAsxYyCXuHJf86zOk6vmIedf6qCUPl6gZ.L2Jog2KRAOSU3Yn.uE.obJPZ0HH8M5cs84iky0f34qzO1Sx76Sg4IUnDYq1Ju42qu0qVO+54W6fIxgB+cHGKu5cfQkHSBjWCxaCXcGhYyxFaW1pF4uQLpriUcPQKw3o97ACk6TvtnkgUsRj2yYddTR2oiFOT3wsImv64S8mhcvq1Be1R.vwSVdD8ZVGenxL3UvzrpQIRMCih6hVt0VDHr5MfQ5IjC27Z1TR.jfv8FPJb6PtjUr7548YCHulMsarh8HVY7UXKo2v1bD0+ZxMQg2X2v39aC0dJpbOhYhqQRCHTee5TvZHKMPRtg5OSydjK1XSqMJQ1XSS7oA9H7agBqfOphOpgOpiOZfO1FezLz3HWL23xjdEFFj9B+XDSrYXfgTf53P9tMMsHRAwNbLULKjZEY5dj5FIMValsK0mQfnVOA02IkK8ckuNVN3TxLx.lrkXzXgGTovFJ1rw74CeFjLPNQHt9.OmNLl6r1MoiNg1WoMsCc3DgM0UwoBXCpzAkCXx6YiRCF0+JBJCye7.XL2YhmsjK7JrgiO81j16PfFYfuXhmCDi6mXxfRDQu+Rw0y+w0ySfOXTBbhzal0kiTLnbefu5.W2BQbSAk64B1fn3tYghPWCSCIdB3wMbJ4jC5T94fyeFc6MfWKFdqEACblBSauZruXrvGMBhrFkaTa24FzGBzoMvzprAYKhYsxFJ1IYePd0zLVVtVZCyzu2xcjCA6.XUFxknWXcI4UYgztYbZHCYD.ul2DYga.+uxRY.zpYFG2G4h98grjrtcugU3zC5JuOove.QtCvtVLRV7De7j+6FiIskmKKk1CERoXDP8.4EAJFM.SVixKlkdbKWN7.2wCoEL9PyivRIhIPiUbWU+vjpehYKKbwr.pwkklGcMuj7cDjDUMduoB6lhlJnlJFWp1CofORlzCd4xm.xO7.r7fHGCDLGb..bPtrGcTT44OHLqAdaUtlwhGJ3zXFh5u8aCaBbU2alLpGP78GgjdxdvZihycTYtNIShGbkcBSYAEZy8xzdpHIw2dCtxFhYnqyalumrv3nU8FMpGEGI6rPSpeHVhLISmc+tNLg+CpqCMvXbgzQXkkEpg6hvJbqcefFcpZiFNwkMA6QAmZBUR7I6vIJ44HWW93.HmIZrTJt6Kof5RpzGWV7o63NB70TG64CDucodAHWZB6x8Qwxk5G4KRYefKefGy4bfuoP7l.t3TpbX49tBgegLIj.qpUQHbZB41YFyfzTLZObL.1d.lm4yhdAbBdtK5qw+i4FvVD4Vaf06wn2NWL9Smaqd3m+iyPrPhNx.epCG2yQlwyODKuC.wBWrngU6lXIZXUh7HfF3lWj+Mpfkmg+MSSXuDgsOg2Nz3+A4Uq0.K+lmW05+yq9aYd0LaxOby+e5ax+PzsGdS9el1kZ1e6xCMqL6Wv7DjOIIpkHerkv2i42El12gTsDI1zcHW.+Hc3OS3uKu6A2.J9BlkmRtZKr7LnTsVLkbEKr7bnzq7oRIG0o2CEoYMpduWhgcs0CFsh+0FKe.ypFVd7AbHPpu3.lQar7T9+KLVk.f6EqpeYl7MK07MynjsT4a+B29y+sttoxQX4Yj2WcwoAV0wxyYci0mi0MUex0MMTW1LmaNgPkH7PJ125UnX9Oles72kmjUU+9KTGdBU9BWWl+BUimTs+i4XAuvWIUBdqu6D1LC0xsZ5i38Kd3i3U8DnsiNvLECEdG6wkucLKt9ieF0Zwm3F7s2cbapjhmQbrLvtwLeIGgSt1ra31rnSLdM81rfqkhwg1FezeZ4doL9HtiNi3NtBpD1xy4b.1b.Aqqqb1cZeP83+mNuBe+v28NSv+3uueLdh5775yZhdCRtDfWpW0Z6pMp2rx1FZbIaThhuRuZMqlaWc6JlJxsh7nY0l0aX0rlFtC.06SHLPrxayo+QH+YCn+9YDRa.7KFkPIs4AicoSi13QzdL.k8o.qRn9SD3YJBhLsBq+i73pFaGVu0j.f1FVVNdH2NHkqsY8oSbkGLdLi5i2RRJsgaN.ZqeBhrBPiQ4Z0BUbtX.rv4TgSZ6w6T.OPaOlK18gxdW.68vJMguR+K8mvRT1wkJ6Jm5xTke5YGM6XcS0AmcDjw5Km2IVIxOxyQoqqm+NsnMRMep9Ouu18uNhuVGFES.Lj91Qv6PJVArdJ0URf2DfW.WNU8Nl9rckIOWH9M5mwk1CWLFWYAXDVo8qAFiuno00OpeeXZdN.WUuye5WmaURCHvwU5vFv84v5ZcXIQWXwjMKNA.Zb8bqfrMQ0Mv5XDnKyyIrx+B9DqzDqmKVoYhRsQTaewU1Qrn3UY8kgR.L4EdseqoeJVmXpExrpFmGAqBtx1NcScOGsVVGqrrNVcYcr1x5X8k0wFKqia+zNhjTGLAHDiV1noAjGgLv4xcjGEx.CyV092vq1OFJ
-
RE: Custom vectorized piano keyboard with unique octave indicator (Keyboard from VSL)
@ustk No, thanks, I already understand everything. Thanks again for the help
️!
-
Custom vectorized piano keyboard with unique octave indicator (Keyboard from VSL)
I will be glad if my code is reviewed, as well as give me feedback.
I also want to thank David Healey for his instructive videos. See.
Visit to a HISE Bootcamp.
Link to Figma project: Soon...
Known issues: The keyboard breaks when zooming horizontally or vertically. SVG does not have stretches.Resault:
Script:
/* Author: It_Used Date: 13.08.25 | 02:20 Copyright:(c)2025, Vienna Symphonic Library */ Content.makeFrontInterface(1140, 100); // Define Keyboard (KeyRange: 24-108). const var fltKeyboard = Content.getComponent("fltKeyboard"); // Create LookAndFeel. const keyboardLaf = Content.createLocalLookAndFeel(); // Declare SVGpath for state: Key up/Key down. // --- UP State --- \\ const WK_up = Content.createSVG("168.nT6K8CFE.TOA.HMhd7ATAwB.4hv5uwu2QVD0.9e+ppX3aU.JR51iQmVmq3DEBXZyXBQSx6ZzdURRBEBF3qrPdOvdj20zAvQAbgzgEsLf4sYLwLqRsHniE8fRoozAAjR263CLf5d1CzyaH70XUqkW9cEpgxdy8bAj2RW6wb6Uq2NIiGcay3R.M..P.4AbQn3dUtuJC4BSWQNfg0qJenRrnX.TlgEV7ZVF"); const BK_up = Content.createSVG("443.nT6K8C1nBzXC.XH1LMBHsUOhXDdaecZP62idX9gSldMStetkbjQholalOUBgHjggEDD.DAvP.PqNLjRxRCEwxb2eFT0zBFVKrrrXrCnt2nVZkpSbw8TZRpk0JEB+O6r2xqIDrlzHb+hs7FAQmQb+eKitOTKFJhUIzFJH7niuwK5vir+92h9u.1XdsF7CxOHCN5QCVX.jeFOx+Bs7gitMTJIKrVBmlZDWmY0.t+gyUv+vCPfZEEsL51PQ.UPxROsOHwvzogxgpokhVZuToGffs7+qVEb2ZsrcwcKen7UZReZpTPIYwBY9njr.wZtVdUw8CgsJ39a4EqpYJQqO7qT..r.EwxlWZjkiOxtyuXiw03EYXieQ+cQ9elO53+FN6czsoAJZ0gw8LdGrwJ36VKuSKDHSrNAOfVVMUmbHfoltVkvLf.FQJTQKGbgjv0BAf.jzgVOaqWYgTojSyCryHCU9DNIU6.99huUvXwhGx.TD6IC412RQEBzVdWIbA3EjH.7wo0K7xOp6s.xPy3R9Phj8+CGx66hQ+gMJiTHELSPtJw9cZKfzOEKUrMyCakoXe5F.HDPN4hCyVCu0td."); // --- Down State --- \\ const WK_down = Content.createSVG("338.nT6K8ClFATjB.X4D.QB.q4J.PwhQvcWYhBifmey9u2K6SEjSYJzjMwEAZuQUUknt.F.M.bC.1.PVhBWBGG26QfVNe8I1h4PWepMy9IFVspkJMrge1kU.Gst0G1D+LeYUoW8kJedkopbs0FFJwFNcTQoW53CTl7HUjPtXoY5EY23.eRjvzQENcDgOo5qrjFDRz6MLIgwPdhdgPht0F9AgP4y5F7Oopc1RqTR2CfPhvUTJAZhNVVXjNtRTaEyALaqRZHB.69X4ytaeIC7Me9P+3mcu2fXAmFwEw.Pj0F98TR73mYJtpJ68GCP74MCKaZfVKKigPhNEyvl.cRRSgKE+3SbtZYX02gQ1Ee3yXWGGf.iwnXldMIgpV.sVdfDV.dYIBTONtdAVtiwUsBRcXDUvSAE3+eui4ruiBjHwHxnhuQRX9h8DII0MS67G4.nL+BKdsJC"); const BK_down = Content.createSVG("377.nT6K8ClZAz2B.XWkDMBLqUCIFZ0xraRCFrVoCo1Uk2NKtD2FMch9IKi4898xHnRJ9fC.7.fN.zbN22lVUJKvTvvvZsBt4LkGw1JDYsKsUVOVqzo9+10NOlUY.ljd0NCziYpIUR09+djJKQw54E1INIOylEjzRqPbYKE5t3wLq1aZZd9hGin82iYM+gHnpC4Hok.KOjkkAdHtDATsh3QpLzUwkVi5oSxiOuvAUM+fEI7nUUsJRQeqxXmjGWhcXUPFAcYvRhi3QblZcLa+gd7+rWDs+dd7k0tGknc1JoRPVH3j7fmjRAvy7B2jYJEVCtGOrcNlFGj.kGikFLvt40LP22On6UVf8+Ld3i+a3ZWBWpLzBWZMxI4ow79yiYIdZJPIf.CBPJz7UkD9rP.P.RngdrH1B0kgg.KCXCq9gjC.3zA7gKeFIYH1FfWHQ.+i6WunkynNt.G1Mgjd9+gSh0.v.r+9sfP8NCwa+7OeFcw.H.HGr3vf0vasqG."); // Declare SVGpath for keys with octave mark. // --- UP State --- \\ const WK_oct0_up = Content.createSVG("503.nT6K8C1pCz1C.X7EEABPsMNhMA9.bUzPhHiILCY4UbyNQl9OY2Lst+MCOjYFAXD.8..M.3ff.JH0.4QBhnlz3nwsQWTTTRx.R.A4jTdvXQDQrDCiFLRJKV77foqgFlThzPQDyCDKgqLo.4z7v3XIcSJNPN7DYMPdPPv1p6yE946e260JSqY85bo0y0zx2+SkHjTbvbfVPBEKLQU0bYfhHNrjx7Au.Ml9cBKkIkHIIHZXgEL.0.S.Hn.qbe728s++KI7MdJuIep53s5laer04gr4q99cYWey44lx+as3MepMSPw+oLeY91+5gA.PAMPdjv.83DofstUl3BQe+9V4xRc9tv+ecq7016J0xK14wo2piY1ykMWoZwYxKlczuF40QkqFpQ0JYJqFRTzR.fY.fUlY.whQM.Lh5..4H.X0d.qM3EY10VaFmkQNSylrxRCLpMwFhmzkjX1mCqnlrXQKs9gkFhK9yAZctaD4mBFDWK1ONhg5zIq49NimrG1iUNSSVGhU.9heN8SWLaac5UqAXig+aqQnRFXlXk.HFZgHbXKnIzd.ANfFnF..m.0A.puCILKRXVjfopPTKbYrtJXKLnaO8cBWZpFibCokIIlgJe.p5cvZwXD9bvLFe62kBFPruox7W55Y8j7Y7qDwUAyLhmFk4RuHLcO."); const WK_oct1_up = Content.createSVG("255.nT6K8CFy.z5A.HmCtDBPo0M5xf07PurYJBrd0seMCVvQEynIi1Tx0LLuY3gQFV..HZnlVPoSbd.SqU7uKgO7DcyU7HMiQ7DsFm7t9MmBe3LIrl61el4LNmclqu6HgYtA6qgFkKXXw0d++6NBVZ6qRR2u0JPQ.jdUX99ZPWeeUqUAFKdPPx.JcH.DaC0zp69WMRQLaxy4bsFfAoLtuInmEpzEBEAsumGmDzmos16qJZYBcnzsc99jwFGXT2msunrgyTanlNTFf.GREP2C2DZ9DrlHcwMQqbj+VQ1lklgGMFwgWjV1msC3BTbgx8eFxvzA4vv5o7gRrHG.kYVXwqbY"); const WK_oct2_up = Content.createSVG("582.nT6K8C1zCTdD.XSXYEBLsR5.XzUDQl9y4uzx4PzE0.d0ZHWIY2j1IzgDxHBuf5.Y.nD.EAPlXafhKTPob2CTB3WRoSfRXp4BSBhFVHBCNMzfBAATPxgkJL2cIiCJSL8wdddXXFPBGmGolJRhDwETpgjIRRMQh.4ATpnCcolKST7z.hET5ZL037vAjFOPoTSMObb.xCxgkJDD8hoxY06Um5lJt+kl2K6KU9l5m03Bkhmq9sczVD0tZL97ZSD4Gs9s9UJGob2706OCzu1RDgaQFN21qHB0KMElPpwAzCmEjPQe3kgm+kFq52eubdwkw74EyVa29++CuiYKwE4l5g77r6T1zeYkpaO2s+leaaOW62FiHE6Won1MUlJq4iaV2FajducKFWF64FF.E3vRElFNPd7n.BIy9u9kli4RYGulSq0K89WGQiw0yG2FiKx6LF4JaKhOaWE00xs25Y5w2mKFrRcMMEhTnprGW8u75lu9aMtPOXGpgghCSQ1jTndAf5.PYTWz3zPEQDC5f.feSI.bxdqohWZpASjlBDNlD050vMopwRm5TEkRRSnfxFfujGURTWQDxBy6orniJYpED3dPAeCIjc4.Gt.JQGNfmjnqMnWAAKlK9vu1UHoLPdhs8V7eqoVuaDH01PtGkDSXHRaBfcHyWfYtAAsf1L7LQ1yhHwJLzbaDgQbhOqxDIjIOuy+AqFwoDVrCi0jOqd9c5cOX6P4DiFV5GkR4AudCEHKjrJ+9ZutsNFirW+ULLgzLQFEPYx1Wj43G"); const WK_oct3_up = Content.createSVG("709.nT6K8ClTEzcE.XZZoABDQBL.6pcnoDqYRC.EfG4z0PVrI6lz1QFA9GKh.UffX7G.SAPU.7tYn+R58iV+T+EXdDwQhEGt3.sdYlc0fCz.iCigHBs.awz2FGly7PCGLS.gCTdvBDPvff.JfIRFUbTUYNhfgEzcgtb4hCGCbgEKRXdToBJTnwgAREVTAyCJTlHwwtScJlGZXwAWfLIiCSom4gEIQl.QxgwNlGRrDwjKmHYTgf.q0UL4a4h1eZz1Sqmz2n2PjqtOLeqYWDmWpogXdte2oBlga9uZaeIKUSM5dywsVLc+vUe8H7uI7MIR4O6oBQkze3lOKSZeClG049t2l6k3e9Kha1GO53yNS2a9Yn1UpD9CpUiZ6csO8ptTaqZa0u1qyCYpZNFY31R+GYsk4RVpGpkd6c8WLsDNKo6NCMcOAC07LyVuMgmWtNJu8zTJsEQtzMaRsNokQM..EDIiJNfXYhjKMzewe9oMqMeJSVw8NtER3qFyFs13N4r07T8zsWyiW1ZVVaDo2Fx+rnRMWKwu4puEi418oZkTlrcGm3lnlVaXgmtDe617pP7PqLlreVKffhZXfjnPEMXffVJ..5.PUjB.AgEaITMDPCD.8CGw+vxwzOggmr6bkx45XnREHaaVIeBDh2nVwuFfvjG9cRaFFMuXOSXlpCPBjxmbpYCg7Fc+In4vvIfTaBDkAIEJFCNTGcuoH81jCBXx7zomPTCzn3F3oV1l2hjPv0Tqg+7YkYKBgOWRuz2yeVNILQ+3DqXAwhvzdyadJK3vN3KsfrjxYgXi23FHyAN117NFhYe.6Tz4DvDXCd4jvda+DQQUO0aDjfyDoPSY2AGbFMfxPefKTfFyTcFn.qrClJmkAlTBtyTMX.cYFf3stoYsft6lOMxoq6v406550u.FBJVnieM5pzkQf5GxLdkfJjQPMnL8xK5U0C"); const WK_oct4_up = Content.createSVG("370.nT6K8CFnATzB.XmkBIBLMNM.fg1h1nQHHSsLaFrrTht2Xrztksrk+li.Isv.X.xBAA.O..C.MRhnjRIUoAxiTEkQQQJJCHADjCtDwQiHlbHiiGNvkFMdd3T0ktDtL4gAQLORNLwGWfbZdXbNTU3hCjCOQWijHJBiV0jodBZmK0ONwsrOB3hCmCzBRrXL9omTUOWfAKtLAxg5tGzBvRXqNtLwgGWlnfPzvBMX.pAFHJBf.LPZks9qO245Wq3Lsat9hskea12Tp319b+0Vatpes1Zp9hNkLS0T42OYmQZeB7psx1C.DzHIhBCziSjB5aohYsT86Mtosb+wWoTbt9hd0oV4k0rsUrdS1Wvp1I6L1Ma5OtsTI+aEm.BflIfrjGvRQnMsDFkjMgxAAjhZllf9RNnrAkfqOkyXZLT9HYwhxDj9CkMzRiA2zA87uPuoEDa.F0vNZarUfCjAbAWbS49YF5goK4xv5c4CgXQZ.TlagEunkA"); const WK_oct5_up = Content.createSVG("567.nT6K8CF3CzVD.XnXa8ALOBCUrnyN8FUHdv8eLX4nfphcJSOkTRupvST5Gz2XoA.S.bD.qcFh3sFbvELNHTUDt.rgdlwAcHlKMPS.gCRdfBDNvff.J.8nxjFlYXiGXXQkVJKVrznw.WPgBDDyjJjPwkCxQEVTAhQhjHRbv7XGCwbwhCr3HRkCx1CwPAxiHNfbPXhXfPIhHVNOpLgfJeWq9Noz49r8YEeMmsuXd6I69X1z34jUo8ExmOJZHpolzc3QE9dszKgtNdL7Le0WBpVM1Wk8qj0tvSAb2Ry6b83JuEPLQbfPwgKNHjkl1M0mDp32ro+UMpu673EU8EdmN87ZkWS1mSqMLepz6f507s4qLs6tVtw0Zrto8V811IkcwMaxLrHV60qR2zChYooc0uFM.TviJSZ3fRDHVZ3fWai2DMUa598xkZ3x2Ps4ZhqzgqpYyOOtz0pz4apRHlbsIMuex9EuHWblXJKlW6+fG0Zul+cUsO7LlK2be+s.xgZPjrvdzoAQuF.3L.DoBDNLJEYyPBPBAr3NPi6lC15kQvrNVQQeNzApG1nMWFsVF3niqQLjJqToyypD.Wllhwd6VifDJ0ubu.zJxDYTYX917z9mKh1.rR4k4+rW00f61KHjZrBK4UshGFYdnZrw5JrMp0KC27jQuYmUMrO.Tb2NiRThocehuqDv8Tz3nJLa2g8isBt9KfmgvGkGuL4Le8aVvWQfyqO+Hsea22mn2dRbeBBXhV00xjiu3LqO"); const WK_oct6_up = Content.createSVG("710.nT6K8CFOETdE.XhJq8ALOBCUrnyN8FUHdvaiDX6T3WrjRRbozB+87IJ8C5aL+AfU.XE.eaz1UJ9yUqq9Jvz7vABEFp3.0tc2c0fCtXwg4PHDZAViowyzbwg4LMWXvDgCLHoAJN3vBBBn.lGUlvvL6X7vBJJzRYwhEFLFnBJTfvzLYBIRb4v3XBJlfoQhjHPbN7XGio4BEGXwQjJGFSOSCEHOh3.xg4PlFHTdHhkyiJSHHf3xnU6S2TFuJ+4Vs3CuB8ztnpOFk6UllG8P0SIpqCeiqnJYs+y59AO2HW2SJp+1nBST9BkMaU9zYXo+ruLTi0lLe5U7SIdUaWW7OZw3O4tY0+b5VapC+zqV6SGaM2Ms6Ky8sIjZO0MuzL9nn7vWhG6Bw2.O9ttve5NW7E5IEgXMKjcqRDqU9zem3Scajp3hIU2yqxM+yOCcMuqok.haNUztV0+roloMQoU7OGF.E7nxDFNnDAhkENYxLe7nZx3hKZ74emVI2pgWxVheuepVnmJZ4YXlUlZnKxK2bxGx2Mq2TYz4NgPrcYkOuNg596y8P0ZGxYooFnqREV3n5q7fHVn8ouMxWQEG.FIpwAhxwJZjBPPGE.HC.EQbCDGMsUUiw.fDBbNcCoS+fHmg79GwUAQcjU4wnf7xeK8iuKp+wF4PnbUqSBHS9sfnw3l6i4rJgn.MGzS5FhEQvIJOXzIFSMookNBPhpbivE5zRGcEjNYxVax7nzG6oKADvA33pGswT441j.MI0A4h3viN6VFh5hXpuyF4FrHsMUmz+.rsJCXgCpG7dNA19w+ad4n+Wq6zdgP6hMutEktvI1diiSQqyEpDgYGQdxDCVgAlUoxGWJAOWHkkRsl57eS4pr.lWJvfRFMpcl4cR7Mbfq3gMKCnNDtog3i5iDNV769xEaSvML59mQ5q0+opC9J7vCYTnBTla5ESD6A"); const WK_oct7_up = Content.createSVG("345.nT6K8C1WAzmB.XBk8HBPIha.32R8zXYeq6Cf0C1qmGhmi.pcWYWQDIbYxXGcLDfE3.vM.zB.LRhn9jNMMonL.CQQM4CBxyBSvbARDH464wIArcbwMeShjXZwQBy847E0v3rzfY64qI5gyDxHAcH58pTGaP9dfMQMXHwu71cyOAIT4ahDLakp.m.rMcNmuFvjy2DkTAGMdPHxwhjCAfHYjfT1cak.9tNcwHyt1bFWNF+80m8WeVg2Zpxca+r5MGSYL5VkxNiLWuzFqve00LCkRaMG.ffQBRYIxoY5fELbuozlWzTW2Mkw3RsTl4ZeqNa0s2w91yZlWpt8phU3rlqJdwpXLbBHPpn.p3gBegxvSXmkr.VM+H70b3LM1.6nDI9VbgCYArMM7FTPP5.h7fTCA3KDsXnfMXfYXGrsZkbfNfKRwEJ22yPJL8IGLr9U9vIVDCfxLVXwqSY."); const WK_oct8_up = Content.createSVG("812.nT6K8C1sFTQF.X4r84ALwAyP.FlX1sONAxG.L9jYiIRoKtTZo+e9eWj6m.pk.jF.mAvdzs8WtG1bRiv6LZ8xV5k1tb9b7bH0MGsny4kS0jRq.yiGVjPgAKN3kKyLeCNPiKVXryAgUfrX1aiEFy7PCGLQ3.CRz.EGfbAAAT.SjLvvQUk4HxEUPWEpRkJNbLfETnHg4AFTHwDZrv.ghJnf4gDRLAhE6Vpkh4gFUbPEHSxXgotYdPQRjIPjrvXGyCITdXRkkHYfAAAhjZactxiSZUTuenpw5Q9Tkg3AIS0yU8MO1Y2U5py26iZ53kLQ5nGtfVYunyMlw6Xt6R38OKHhzazzTlkuiuE8zEsSlabd2drSsmpzcYRG2bpWBMUGu70lRujpt5ori1WocRR+86jMIFvl2o6kaIslYDKpN58a8NJUM1cLpjscyy9QUUw8eukL7m0py14+mtSX8c9RzNK+q0eiyCu8zzq4tzYEVXw4dviTubWeRpatitVQlqa4jZyWib9ip7NmVzLst4ZYEh0pTt3on71a21kM.TPjLvvADJSjTYgkiKma5Zpkda6b7WddRmSmWGgNAqJBMilZ0Y3pGZkvyL6ikWPizaPqt87Xj5ksHc84L7+RDMJOaCt5u4KuYoUmKO6EoqwEobW5KlKGqTsX4sVZ5bL7VdUoylGgt4tpriAf3hZTXbPsrZPPBAB5..pD.yPU.DGRMFLBYPgRHHlbzIStrHSEK39gEaaDNZ9RvZTAKb+SCBD217Zn9nqOhtyoEpPDwwJjOc+IezZRTCPqPjdnwlRLcSXhav0ATREaXxTZtOqfij1PXbThJew0ISRyvlitPDQ45BMfSMIrlD0lA.JnOMk1LrONNaWjeCqLBw0MWQAtjj9dEnjW.G6QxPGOUSz5BGm.VqHmGHHX49q+oBgSmx7.5wy8D5RI9vHiH3Loy1tSTtv7gzXni.yX74TI+FAcNxiFX9kXbJioD+qVxLWf1KgLS+yQTFMHf3FmZ55F6kShFWFVeoQo1woCls32FaRhA3G5GcOjCX52YAVHRSB6xWmdHzUwmhOhX7UBpZFAJqxzXdwEld."); // --- Down State --- \\ const WK_oct0_down = Content.createSVG("663.nT6K8C1rDzFE.XuXkQBDOha.H06e3+gUUQklIL5rpfZ3wz4IjPatjPkVqKGQ..HPUMvX.fE.PAvyXbFCc5xlkO3580kLCL4Fz3iTBUiIKJENZ7LAkiFoCB.AMBkok0ZwVhHEsspsppZYwfITTRz3DzSEURsAJBRiOONPRVKW4RiUhRnpwgRpqGqQJIQbZjjJqoQITObpxHTlNHv15dY7m+yV1c6yL826peHzeOlsPN8lsNy3r8abxO7Wm6V7hwbM9QP6LIXNGSBoFMPNORrnfbZLQfAdjrn0XEoTYtk9z3EoxZrxh9DHBHClAlY.aYm7uXa.t0ctaaca471Lzca2MjYZ7ysf6qYtecCWv0WcCtrEqaHhl091u6a6+mgw6qk0MtWFCt1F64aia91LS57xtD97c4XZue+8SG7WmA589Zlgq+..HDgxzxRyoZlf.IZQeEDPiRQOQNJHmDQMoMSP.4PiiFSdPpYxBMNQ4.AQjTgNVEl0HWIUM9vIofZbdzPZgIHMOZnbjTku0ytYds+as50gs22GyzMb+jet8Y5+WnmOL.GpwCJQHoifBB.QAD.PDBwL3wQXfvPHkTBwPoD.NOTeoZpEnEme0YFxKBzqj3R3I5MqgHBaWECE0qjmCnPO401IDZHrp3lurvhjZWq9.s6LxzJLXX+3f6iMKi3pQs.f05Ieyx8EE6.pGkOJQCF0R1XQFbAiVMby8rW+ZdOd1TZstTJzSmN3lS4uHzzEUUvZrDusUPwYXxrVkPvt7GtsZMMzXANeVBjJAvKHK.oCgxE6Q5YTM2Bnqc5Ijk4nMOb+cJ.kd9gNNUOnjpaOSH55Aa2.TFy8JgEnUlW3ffsLXpgtBdydBgGhI0KUrIZX4QteUl26hZX7"); const WK_oct1_down = Content.createSVG("417.nT6K8ClzAzKC.XMlMMBHsUOhXDdaeI1Hq0CBk0pxb13AX9un6RHIakFtYxI.oHgzZPD.CAPP.L8v8A8pQgSGEwl3btOI5pp8vZXXXIIDXcuR8zRMEQF2TpJpdNMUgv+icrqmYUEfQqQ31I8ddkhpTIt+WOktPULNJhsItKU8wZQ.SWR.6Y1E2ez0xdNA2dOyRZ4hFVb3Lb2wB6uGCYmw8Ml2.kmAjiL7Y4hiQoEY2fE1SnmPrz8wpQgSRCwimXgPgn2pDVCnyw+xkVzY3Q2wq3dMEmAD1XdN+PISK5MVdtl67u87FRu8PmeYbo8ThN28e74RAftCPX7c35gRUmbH.3DEwlj7TZumWpEBjpjl4fE87pZp5w.rU001nvooVFnTf93wZgKpUhdZuUJFh3dI9Y9DbK8d5Yb2SnJeonUnmKDZT3zIf.EfPDkGMYBEs.ZTd.I7CvKIQf8330KZ4Nlq6qfTG9BIv4+s5XtgWcBKBMpbDmjBgAmd1qls0gRS6iFFw1pgq6YeFEiHwHxTw2XILdwdfjjxMSq7G8.nL2BKdQKC"); const WK_oct2_down = Content.createSVG("748.nT6K8CV1DTwE.XJa5IBHQNGDQ+B+2Up4QEyHeTZlOOrQnVQDQDorY1dY+u..FjWCAB.Z..F.WTqjYqd4rgZgKmLMqV.IdGHCH53U0pvFKuV93ICqhUap5m07iU3yqPGVNPTRldXoYcQEOlPwTEPWNH.DVQzPpgwXYSjKUNEygACllFCrLMIY4HQYBFYTKHJUnrblLIxBUpJlhsbxTIALPQZnVrFWNSRhDAIQsRc4HYBRDFUDMjNH35XY9k8hYyY06mN+S0MUbeVddureM9zx+VmcM1PSQl2N+31waQU650O97ylHxOdJpv9O+aMW0b+9EUOu+NPm0WhLfL5v49ZKpP0YFxxjUrIXwI1kyIt7.hRzjIXSThdXQfAlbIic4jIiYpWebv3dI2zCcMuFpZn1tGe5W06Wd8yW+uFeP2S7YYp52e+37hKiW97hYqses+YHiw7kXC4lXpLOelxm9K2ZmhOc64t827ea64y98wnRw9a50GKaLy3l0swVor+vGN..HDQColF0W3xYBRxBKpzrZJHvx4RkIUpn.kkJSRKHoHn7.TEOr.wEHoLVNRSQThHhZ8blAwkClQsVNPhTSTfhf73xBRV.AAZJRBFFRl8ecVdOl2hOJ6myZNOmkd+qi3w3yyW2GiMjL10JW4iUL63UQc4a8VY2F.3enFFFKIkoFgFRJCxBvo.SUEY.ghyyXTQLfnA.Monj1RqFYAbd05.lr9Fva35VOrkQMA5dGvOeKuexT2SgLK+lfQC5KaUdrTUG7W.WPuwZivsCQpWSRmfTlUhLoBDF9o.WQ0DbWqObWn3oeOI3NQvaAPFtA.fDBKZNAIGOboRluiVhBQ.6Y6xAS.eDAA84ZtM3Ir0ud.Ai1jfkjcEc5YHXwrb1OfG3t+y6kBGD2qnadrYIdBYKIpPDb08frDDxGMC6jGv2ChtkDQeyquRGFoA+O2l+fF6L7qh.KzKSOnwlv+xSkYtBjX4mYWgCpHjFTlo8ESf9A."); const WK_oct3_down = Content.createSVG("879.nT6K8CFVFzxF.X+7IJB.yBM.yNQObuDN+HJ8R6z07Y10I2TRII8p9G7MU++uqZXDcB.a.vF.mhL0iBMRlfwxEJTbvXQxFBLvEMbjoHdnAkNUk1TjOPomh3AjzJvDKINC+RrPThdqNquG9XHQJJOztTMaJ5OKzcHE4BTENR1.RJCKjboBNVLQyAAfPhRGafnTpCBEMYLri0oSGHPLXCNbpjhrAyEM7.klfIClTjKWrfA5PjBoRQ7HSBclXoCTRsOEgSEJVlTAkNLEoBmKrzAQoiMGDrxEsV027QW3xKkwG04wndus+Y+k4R0Ml5y6Uakont5ko9U+t0FtKWV+4suy1o6smg+AW8pVFdzR0eQK+aK+illdDe64Z6QqdgmpF+mTQSoGsJ+t4d0rsN5WY8y6Vh9rw4Qq52ZVUWcmheIHCf3RSVyUu9VZpRbYqwiPletRkXd1U2xti3qehFtv6KC+ywK2VoqkGkq5YOF+139cYSw6wpqXTwbY+AWoD+X6Nt8oJantXtpEYD6yodLfmZYdIZCOCWt5Wq00ba5W7Rg1965s1dblK0xZa70psB.BT5XCDHHmlrACLx.I0JHPJhlLWxXQAnMxvYyjMQf4gIVHYCHzLYCGoHa3XASDTPokdd7OPo6AJkhbgEDGLSrbgDMKrAiIWLgikJc5y4QG2ds851pqMY7IqRSup2qcd8sZco8p3t2R9qhKdgO7Z6Lsquz9Ror9HNwkhs0eP0Y0JUtabWkxmtt..1JpgggBTYiHDV.AJET..x.RQTgAQwjSQTsADMPSNJMrznob8a5ZROXpBpk6Cg0yIMw5P+2FJifZeT3XrKYNWIOqcseRLYVhVTAgIehYhsw.swzk5eibX0oHID21z0HWyg8Hh7sOsgF59bO4vzHZB.JAmQPH2Q23FLCgQd.Ffjuz8dnTIxki8YTQ3XZGih7Twv4.HBJ.zohiASA4LgkTskGkA2LJiLXczPy+1ygMhkIgrGxnKwDwrXrol0ujk3Yi+L.HVNdRObcaPTWWJNnUv1LEltVHkzz3zXJpopt0RY2hVybM3c3Isv.XXM8XzXdlGBGnxoFouFmnIjHPkDBlAlmx+OvSttcCVdgauQz5a4dWm8PivZ0MMfc6YgmW.bLIxTgMZFuE5gfwK.HUmJ1TdXstHnFTlh5EUx6A"); const WK_oct4_down = Content.createSVG("529.nT6K8CloBzCD.XJXgUBDsha.q6ldn+8U.bn6lIalQS797GfbDQDkTF540hKoppZJvfS.cAPU.rD.5KxjP1ocST6D1YDkhkSEFJZvrP.wI5AKHOTLTzXmXohgwXNyDpItcwWWWLLDTwxhxNqjhh3htORSR6LJBRh5MkorcdYxfqGHK5xd8NsnLA5ghtdamTrh.coSrTwH8imK53X6P5NG+9gK4225i8hrzfWiCV.qYt6Z8Sfuc3em6.kyiDTjCLKIHmJKBHhRhemWnz0cr8syIzs24El8sng3i1Q2OhZ2Z5qsj4rzaftiWc56A7XW2HcRlzeOTBeYCJeF1MO2kLrc7OKas9htF+Z0wbL6aU1OI6ZU1db+O65lOx9Kg8y3+E+l+VitmceqRW5bqajLFBcm8WKaF1NZW.PiIVpXXZvs2o0SkDISLq7fE6jZJZBx.ZkIqJFJZrOULHovCDmJKP8TIwNqrfjXXhtQmeomP2Wuy9ht6LBjZI8.EwgBAFJZTI4IxiEDkKui7+fQt0ZGeQOxcq0B1.BX.YJBs2DIT2BnA4AjvO.ujDAVOtY8BWtCv0oUPtCCgDh4+qJGyR7pmyRfByfXYf.onlgInGjCJLp9fkf6LEiaP3T9xmEKJIH8Gh1vVZ.3FGz4cqnWcXmJMsLZZDaslttmwYTThLiHiJ9FQByWrWRRRxloU9id.TlbgEudkA"); const WK_oct5_down = Content.createSVG("738.nT6K8Cl4DTrE.XDa4EBHQJNDCpVg3CvF.KKzwXmrhwdTlHo7aR6ysQvWK.gC.dDf.fF.dAPJWpDmb5vRXxYyiDKvDtDHCHJgq1Z3qx6ymNYXsksowt56aY3ianCImH1jHHZ7HggEPpTQjEPXNH.DRR3HyCkRkOjf4xoZNMZz73gAZDEMI4jwRkL1XIHKWrjbpTgxEVplxTImMWRPCDENrjhwjSzDITflXoTSNShhPQiIgiLGDrM964nsVe6F6n5Z74a0yohrot+o9342K0sPK4+z9aaSUl65YgX94sXCO+6sHC9oVThW0+bjgcuWc7T+usW+Rrgj4asn8K1m1KEpxboHSvhTr6Jo.CDHKTpPgJxBEHZHv.Uvrwlb1fwBsp4RutY0+V94dL97Oy65X9cpb+f+qzaWLubaka9r93Odetu6J17t+kn4qW+8T7Q8uUkqR8W2hVt3yydiG5teLZq1SV44oVp046YWsT+7GVaI3Lu9W73WsVpJ7d7YC..BR3HyiGZmvjSDTlKt3xizqf.IGLWpbwhBLMtDkIAkIBKO.YADMf.CTlMRNYhnXIBIVxW4FDSN3FKkbhPwhr.QIBDLKj4BnHPQTlnwxecUyZp18w8249VUx8qx842UeXx6pd+J12hUGaOuNNSsudsJ9l5+4b1W.FHpgwwhZYHXlYAjAP..vpfglhB.wRiRYJZHfQC.MonHeockascdMEACH8tPxgqW9H1rjIGjPt82a7S.84p2qU1Zw9rNgtYf0VmBDhcGL0y2gUF7o9+X.jJlkAXpiFtUU7YkhhsfBdYrKMHOpQ+ENito1.PF07mi8JqAthOXYzVTpXn6kEJ2ApkeX9Dpf.DPtuZNKz95r73TRM1fZ0LkullKKObwM73eZEJnkL.NTXPYJIfe1y2DhEcXFa2B2ZiFyoJZ8j59iNzWCPv3MtQm6Yv2EowLhLx0FjBuedFPmf.IU5Yo6P09HOYUlAwKJexC"); const WK_oct6_down = Content.createSVG("875.nT6K8ClPFzvF.XKMKFBHQJNDCpVg3CvFhkPvgXlrhwdTXujraR6ysQvWK.gC.djl..G.wAPSvhSrKmSfIBjEJUlPEYgRDMDXfJX1XSNavXojUoN4zgkvjylGoV.IdHHCHB4UaMboxakOdxvZrso0uZ4Ga3yanCIGKrIQQz3QBiJhTghnJfvbP.HjjvQlGJkJeHAykS0bZzn4wCCzHJZRxIikJYrwRPVtXI4ToBkKrTMkoRNatjfFHJbXIUiImnIRn.MwRolblDYAEMlDNxbPlyM+37xp6UU8WUmiOnZ47aMOFsz6aoZdK939dpeYOOrYqy8xGdWmtHDr2q+dgHeIZJ9K8uDe5cg9ZOUsLdKud0w3SpzqQywCW547+Ym2iOrlmhQCU45dz5asnwty2Bsr86eVnCwWzvVstkyJTkIqXbOeat2m3snoOe9CjMu1AIrtwqMU0icruE9f9Rer26Qa4843CpqlcmUI5+uR+YaExc5bxJ0eKe6mrh551Egn4m45TzVK1U7o28vu4Sgpi2uOFePbwJxsu1tUWe51w2O+O05QCS0hMmXypF1e8butqtEF.ffDNx73g5InLWbwkGokBBjbvboxkJJvz3RTFnLQX4AnJhnADXfxrQxISDEKQHwROmaPL4farTxwBJVjEHJVDAyBYt.xBnHJSzXL++ip0M+peK9ntpd7wL6i+UqzjeEqnmX18wH2phSkx70OPZWeeue87qehJ0x49WjOGse8r6qR93luEmqaWq.fghZXfnnZ1LyfE.IAE.ICH0TEGDHOrkQis.hF.zjhRYiF4gV+.rpo7KWBXS2mBKc1mw7AJvFQNfdhrJ0JAVI5FURp0ryIkfAKEQjFnjHNs+jPXmNHix3tk.0mESLUSNirZU0jkPljVjercz8B4+vB0FrWfrrBtLGogSvHlJy.feQ.kt59Cq0QJLc5n+s1ThGkdzd5nfyOT8bGSpkabp0ahNlW9gDT5p8IE8CtE55vFMCMy1DArnkUqYyCtAJklPA.OZ9D8woDFGYuBx5ZjWswSprQ5.eLYfuM6HzQAVF8DFXGingoEbdJXl6npRVaHMg5xto16dAZlxQCRtgaibsB6lWjK2quY2I0YIZt3oYqhouNC+cAvTpKCC0frwaimdIu.Phg7r8aHEWDnBJSz7hcG8."); const WK_oct7_down = Content.createSVG("500.nT6K8CVYBT0C.XmmaQBLKhd.sJ6+Pel9shUv2SaDaNbYRuHFxUHkxj86L+ax.GzIn3iU.3D.HAf2PtNBLUx5TwPYQBFKrCQXfZnJRcZQBFbSEpEFi8KMSRcypsrrVVHfRUkCSohfd3Z4ZjTDSgfdlreaYKioWREXUeprLC5Lsxo4o5r72XpSkjGqsoB0hvb9CmqmMeaOy0y3i4r+eMGJfyg3buGxDSM5ABBqJ5gghh.flfvwzqok+GigLMhkcldsvPELHe3Nb+gb8VacqOYeO+Fw2gaeq6WnjMi8a2QeetW+woD9sK9dIbFgRX7c+4dIrcdiVT1Zm6ve91XrY+708VOc99l9BYvN5MXC8FMoresI6gd6jyXG8cxb867MN+WK8FMXG..ilJTKKsH6LspRMYhzBOMPASmjfjhLvRQphZQBFbkZgnDpQXnnvTkBBlRU8DsPyxx2e4QrLzYpesLSk7rUQ0GILSGrHACpIUI0pGGKGOZMoqe2grYuLTCJPZlglrSLXoPGyzBZ1YdSFJ7.ZlaLDG3kSHfGWiWfcGO5HDDCFlSFL0Os7FExWMMINW7hsW5vWG7o8PdTFwwwEOAN1lCu3hMIgHojMRnzSayItCAqQ.EYaImIhyxGEWjDEYl3arGSA1a1SRWyz1eTffxTKrXhnL."); const WK_oct8_down = Content.createSVG("980.nT6K8CVuGTkG.XFOZBB.yB9rSzC2KgyOhRuzNcMelcuHI6lr08Eudj++eW0vH3J.7Afe.rpV98ntUqdnz8t5dsyPbyiIPOJTcQJzHYBFKWnv3fwhjMDXfKZ3PSQ7PCJgqk3TjOPoKEwCHIVfIbINFtSBOQJ5dCqGeZjAEsHEQraeWK5dbz4PJxEnJbjrAjTFVH4REbrXhlCB.gDkN1.wLCgPQSlJ6Tc5zABDC1fCmJoHavbQCOPoIXxfIE4xEKXfvDYHKEwiLIzYhkNPIiuTDNUnXYRETByTjJbtvRGDkN1bPfL90Ve9VdVqWWludxZcOmmEplg6paktmmY72JlXxdolxOepekdnt2bQKZHaUdO3sIu8+Oerh1cq9w6q71tTuD4o+KxEdOW+Jp1mtWY1co2S52W6U2dH9uq5C0t+tZXV1xViZWOmbp9SueVM9b1etOZiEmIV+gdyyFeTdJmddcHry5v9JUwszmcuzuyZumLMC486DwXWFdO6Z0odx74nT85dvTuE+G0Ixp6Ot+L+4mKqn6w2xCUlYt3qg+x7xduqsiY2X945bYjazYu+uxygIPW+5lkeH04t76IU+QqxyRj19C+XgMm00oVeY5hW82C6FZ6l16neUq56IeN.HPoiMPfjMmIav.iLPRuBBjhnIykLVT.ZiLb1LYSDXdXhER1.BMS1vQJxFNVvDAETxWzi6CT57.kRQtvBhClIVtPhlE1fwjKlvwRkNHdQJeU6saNeGp7xYqbWJWKaYsWCnYEi2hnk39dtmWbh3c7ZGZus5mEMF4VwxOza+oItLm8tX05+ruyLdYyH1noYmHa0+29a4+W8uMJfKiZTTf7zJC.F.jP.n..nP.LCsxPj33R0LTggM.PyVnNMfVVJg9LsX.HOA.Lza+X34L9GGOzbyCKkjiidJSYaSTC1Dl7cEyzA72.Uja0EjCRDyc5tLuaILNXhgaoqie3I87fPfQk0tEblnDQ4tvlUJcv2hkwI6N.GzpmCQFbHpBvABkqIUuGHUN1IYMy4RJhQjhAMjFLeEYh+jUF6AeA7FgTmImSHevGjHHEL.AfTfWr4f9.EJ9l9Il9QHbcXRBfKxIeuNiovE.ZgJUpTvS8Zsd84bLXejiEBFT3lJuXByaorAH0KWYybKEeytfuXBMCXuofbnZx2QBT3hZluOysMcFRDbxqeGBFl.9Mg5GZepMkd.TDEFOm5UjxFhAKGKakPVigyQJ+LJn9I0ZCRwbJm9Vqm+NFtFwGDasQo1yTpcAUGn1L8lazz3SDdn11uUI1gybZC48Q5zZYhktXxoN."); // Draw path white note via LAF. keyboardLaf.registerFunction("drawWhiteNote", function(g, obj) { var OctKey = 12; // First octave key. if (obj.down) // Key state condition. { g.drawSVG(WK_down, obj.area, 100); switch (obj.noteNumber) // Separate by octave. { case OctKey*2: g.drawSVG(WK_oct0_down, obj.area, 100); break; case OctKey*3: g.drawSVG(WK_oct1_down, obj.area, 100); break; case OctKey*4: g.drawSVG(WK_oct2_down, obj.area, 100); break; case OctKey*5: g.drawSVG(WK_oct3_down, obj.area, 100); break; case OctKey*6: g.drawSVG(WK_oct4_down, obj.area, 100); break; case OctKey*7: g.drawSVG(WK_oct5_down, obj.area, 100); break; case OctKey*8: g.drawSVG(WK_oct6_down, obj.area, 100); break; case OctKey*9: g.drawSVG(WK_oct7_down, obj.area, 100); break; case OctKey*10: g.drawSVG(WK_oct8_down, obj.area, 100); break; } } else { g.drawSVG(WK_up, obj.area, 100); switch (obj.noteNumber) // Separate by octave. { case OctKey*2: g.drawSVG(WK_oct0_up, obj.area, 100); break; case OctKey*3: g.drawSVG(WK_oct1_up, obj.area, 100); break; case OctKey*4: g.drawSVG(WK_oct2_up, obj.area, 100); break; case OctKey*5: g.drawSVG(WK_oct3_up, obj.area, 100); break; case OctKey*6: g.drawSVG(WK_oct4_up, obj.area, 100); break; case OctKey*7: g.drawSVG(WK_oct5_up, obj.area, 100); break; case OctKey*8: g.drawSVG(WK_oct6_up, obj.area, 100); break; case OctKey*9: g.drawSVG(WK_oct7_up, obj.area, 100); break; case OctKey*10: g.drawSVG(WK_oct8_up, obj.area, 100); break; } } }); fltKeyboard.setLocalLookAndFeel(keyboardLaf); // Draw path black note via LAF. keyboardLaf.registerFunction("drawBlackNote", function(g, obj) { var areaPath = [obj.area[0], obj.area[1], obj.area[2], obj.area[3] - 8]; if (obj.down) // Key state condition. { g.drawSVG(BK_down, areaPath, 100); } else { g.drawSVG(BK_up, areaPath, 100); } }); fltKeyboard.setLocalLookAndFeel(keyboardLaf);
Snippet:
HiseSnippet 14484.3oMk6luyjqbkmXWMSKC2BtArA7CvE8e0SyoYy8k1vvC2222IFfAjI2IStmIWfef7imeDLKo4JoFRWAOUgBeeLIYDQdhy42RDQYuN8pbaaZ8m9M+N+q4xe527+xu06ZbugqIqc7mT3+oey+y+V60xsx8eh8ZNaaqr3m9M+l+iR+3t+l+9+te52+m+e++hMaHa7U4e5i9oeJbp8Uod6618+zmZ+eQqcXPLqnzu88e1Si8eQ40zH2zvzmmQx+weKzOMm8pOqtzL6GO1+ge6OIms07S+l+4eKBR0KJHHJTTbnrLzhrLL3RT5xJhpW3PzPE43PO+k3m9M+OITztOs5smsWt8znrSEWdMSGi+gNHrcqMen7GW.+SdO87e3i+Itl1gB6eIrr8S+zu4uy9OEj9O9GBR+u+aMZKZ+ie9eJX8+5u+F+7e5M9yCZ+l+C+sFRv+OvP527mMj969CCo+29sduVam2+S24Gim+teafx+twve3g9o+C++X+a+W+m+c+8Le1alV+29Yk8+aAOOwu6um+Yn8u8yvnfPTfH3+7+2+LDx+FBzu6umaZ9ZsstY+e6e50+IDHD7+y+bXa43X1O6c8dtYZr80Oq2lulsd869c+y+q+teG2z3d43N36r9Rw0mKTdtdsJ6U4+DLLFz+4eFFB5+z+G+C+t+ge2+5+5OyWV0NV9yZkW4SYqE+7+zyu4lMV+LTPv9Wfgn9OA9O76dxP11+4uYq+b0v9e7Q++7m+kdptbma587z3yE+S+i+YOy+3ere3VKe998y5SS8LiEhkkC+w1s++9CqmU8m0lu98uf9zqrg+rW5e5Oaf+ZHas7m8Bkly1a94po0eda+2GCe58e9y7+5O9QwyTL3+823e4e4e4mCr+4eeNvu+h+q+W+kgPj1+sOy+Ec9SS+O8OBSPAN5SnQwIJ.5aw.JazTPx3ybvBh07E+ywGDmPdHP5Rf44Xzr.PUWb3Vm2guWP4EXiSuhYc7NIRuKBbcYEXEQWVsKr9Vzg.cy70gIu9tVXSuBaKQ+PewcSdrUfpxcZ5lgoyEg.kSuBu.l69JSlDJNXoOh9kvb8YwEUNSGhaDwQNQvBhoRqzqrKTWPCPPaPLlbmQzhf8OpbXrdQNlU0PKpkitqiwf9C0Bgjogh+9oo+Pjf8WORfgg9eOR.OxdGyAFKCqavJuEX0DyWjU9J0l.osHlt1anvvaubuOuyoYZHavJfsVtqtVfmGjm4qMn8hodm6oKmvwYNRonOzMqXn155Z7J23NxXXZ+rW9Akep6bOjp.KfEwJx4hB+5vsbNPyFoHiyambfRs1cKeMQ0l.kaQUYxw1OGZ3eaWAnQZn+.BGWrIRxcZIyYh6vEFC1UJZcBvtQV2ta3qpnsFx9dHkO5cBD3NP8UvWfub1UoBOSK3v1NfA1mtVaVxGeumpOqmm5aBS+3OIUUsQBrDJjijts953kV4HYPpaY5rusRxAaB8X2J3Q5dXQvAEW8lJJcFlvxbhpyhE4hOH3J3SPXHJsqu05b+5Sb6ADpPRbaoCvKG5xAKbT.QShW2aSLpoP0GT5ERqGpnDgZe7z3k8VMYrpBCMBdmKWMMrG1+UuBTzQ02QSJut6KDKSEX2ccnU1RTRs+Tm2E25kLW.MuoR.AHMcymfuwGMRmf97DJbXvHtNBr2gEQJ4LnBcxfjGSPZjmVyDafm1OYYz1McT.bRmDDMN.0Fps9xB5d16pGzuR0ptsDzBVMt3x5mhKwEAk4sMwZ3tB49.sW.9mvG9Q8H+Sw5uV44OJj+qmVhh9KEnChL9crfwX7fNrfKXpf1GMNeeEkzv1V8t7h9ChFgmPmWh5cmwg.S5Gmff9m1S7odImCDFzNrgMhURBgvoJzrjRAtAyNpb13hVQLbatW0XstDtO.TZaGRBlGPuLIXJhpWsrneZNeCRTT8Pz7kuyTDNJm+.obPm8d7TBtPBBJXoa22aGAyW70VS3Kqch7t2DF5J0G1EME01M6PhzL01XW3hjVSyufcW7cQ3pra9F3qxj1XFFF2Yt65mIbwnms3lJyBRPGicsmUpvQZTRaCf990GjpXl2hGBGf1cOMJkuKI56D08YUBJINaRLCNsrzpPMs1m90T356.3KWWuZMA.Tu78zjXHjZGXgRzq3HIoJv1iw3mhak54PvsvhJ9PvhDEVeKy8Blv81ifMV2Ww7Ae8XDPAJ+zhs9oksS9P9br4iiaLcCEuhBjgGAoDF3nN.qVwlJ2+dLn+FS2jj+xzcJyMxyzcTOuAq9R.mhXJz4ZlKm3Z3D2DbPOho1NOhnwqFZEsVLJZpS4QWU5JNPRvJSv6bSDjgv.Usu9e+9McicGSuW5.VkOYSaKHzJb4dhF.FxzZHHAbnq.xj6tMYVIvEhFnnSUy4.GS.VwTw5ZPn61cwNOQS.eG8AIGNKMsftQpcjBoMw.nVdblCSdpGTypqumoPdmmweqA0YV+N3nOrEex6r05yWl.CfJAExwffMUWmxky32cRQMuhCrEYdk70soE0IeH8kdFPcAIvZD+FPQAYOztT+3KX0IW6PYzNxp2ctLeuHYQ5RTEB41krVeYNHJ0A1K01Kp+cGCR2FAwZjHHrhBPu.sEHCMMhM5YTwFkZbpfMcPRe0lnTjpZqTAxwZqdSFzySu9fkC5NVWrJCyB0WWCpwEysPW2wAhdyPVqUJpjHCKVEI6.BzRD8Yr+ZzbGTB1ntqfFn1qAB7K3CZ8VkMkI2QF.oUo3qCPYPYoUzuUPey1Vj9AZwO+2f8+QGw1Oez9b0zq8ruk+76r09++G4+yK.8qx6gC8G48l4tge38HEDXXs2LLaLXnAyCtsajaUz4RvBxuLcFnsRPz21AL3r5RDYh4Ao.e.XPqp.Ukg.wbXaFGtQGO1bh788cOAcAYv57K9F6v6rxy0Jp6ppERRVMsTKN32ba6vewwqUunOAhcS9EMV4kmposIIehgcgs8W3YhKAZLhRDBHUukDJ77InKn6SD.ud4N+7u4Ug1rBZ5NAP4IUMxlqcmjLe.MFnewp0qzKqnHmFWKnCBA5AJOBtjWRhPsA.noPZTn9QobFGcCeHqbEBqdEagl9URT4EF1vIP1FpwCPom8AvzCnHML.dMCnMyyvq6KHEJ+T01dv.JqSI.cH1o6K58u.kuVHgfITgN0fwNlPlaSfu5MhlRORN0Fdc+QDCxoeQb1ARMQcQz0+1ErJArJXHA7Ae2.TuAGDDSFLFp.bw3g4DFJLS7cuio20v5iFC8YiCwl228cwvu4VFGVicz1nq6EaznuXReRW3wdyJxGoAaY1TieqrfQa19dUBtMvz6IMnI.jtozjxKROK6EdvBSbaMP1hynqX7PbOnrXZsbdr1nxcAHiYk3nHH3aPHFv4ObJ5ZtwgcUSy19Z4Iq6pwZ5iYVTudJulEay4l5UTFpUKAmwe8M8HlmN+qtXIAROqn85moSxHb7DpNxDxE9i.lK8l2h8Xtej0eYA9mAd9Gxlg+UylQvw+E8rWf23O5YeysyyZOAYfeVAQZ+YMQkcs.ZqzfK7qiv0nRKr+Ijt9mDzZGwPPP4zwgP6Iu7BPuk.xOZ0Vj7utBHkMZcH42DeStSa7lsDUWYcf.tb.S278qgkODx0I6LDOI08ZwwGPE..DlrgoDKttHefTeTZ0UDDSSm9P5VFrDvHp8jbeBp9RFjOiC5dlfNxv0QO67BKeSrhYRe+ix3ag4aAVAlsOukdye+dZClXQMMg80381KZ5tCQoXej2aeFWqu7yFGL8Eq.kbErQ3P3SoejUJ+5vvYIuCHzAdnenVxP7nNpKD98FGJqed8IUo342aFruewmHqcWkk.6SBiOVxS9KlBP90ATnP9E.kaN+BdvXu3DAV8MWbv36.9G.jKrO2mX12BPfEPoxQJIHcvJ207mxrepvAS.G4AEXrGhypZz7smxQ37YQibm7pbimez5y1HFJyxYZbWwxv3aeV2qpi7RokS0Sm5nnnHNVzlU5szzfpaC+gf+bcmhqqgSyiuA+4QtWSCZd9j2fMB93o5PnjeY5Dsrm78LrxyAO49QixyS0Lcl.QD7FePcGne3QjkV.8.9aHT19l2KzautebHsmpSSl5wiIsQuQGnJ8LnIgHr3t+.6xWm4HZh.uHyBoYHLXOevby8Vny1oDsu9MPu3BNR4m7hi9CRLgqvLDZ..tOsIZGBXC30jjqD9v2kI8yYVHa.CkYYVQDHhsxBDQSivFACpKXsYgHhYcEedoIFIRfIJBJf90UXPzztfbDjU4QlHc+PKlahzmAuEHMJ5HImGM4WROMl1IgtHlZlViUVj.Dz4FBdB9AxaMwU2WFFBM9iyqRQTeHwG9PmYraaEKMWW2v44.24OVv7L+Ym3GcidaK3vygWAVU5o.leVrL07fGv30MvxaNvCgC80XZ9v8MtuP+itrwpSwpOcRAt9QN7mrWDSqispIyB7nE1LkbJcuv.k1AUcjLeH9GWLFiXXzFzn+9ANPdR+Qh4FUHY4xT3mLdYHX6G4B7dwxtYrUujuhpdpOY1pf0I0cfuZjOT0uyy3qcxarVN4U5Tr9bAvrHdLwGtx0B0YsTP+B+kULgMFeqXHtTuKFymBNAYstUU.5zO6alhsqQ.A55025NhB1ImvQcXnR+EkMn+pkMjPz+hxOeg6WBfwooSLr7Nr5fDyuFm3WRb4.EpjvtgrCWUHFtgcDYnkzZ.CpphIk.8XrC.I2SFAbwoZCA7ADhK3ObZDj1QA2JRFdAUwcC1x0VKytAlcbiHJMbQZyIo6AV+Tt9kk296OXxqTbECx8CRLappeFP064OVaj3xqEdP6K7mXU8GOpYbEB8Yt3T8GjON18doNHkFevDUo+TL5M8FqVPwY.z4r9vbPxck+nS6sbhecE3BTfNVFVCbY5Mr2x6ajQD6tkcK8xkjH92QyS0wE6kHSrC0YzeRej+qE3YfWbcrEp+B3aPIkL4mG1aEWLKhIVm96RzAKMuzRtAIHL5cjAhdzRZslLXoGilWldHYzIivAy7zbyAsoDu1rnl28yVRyf9.ubwkLmZJlfB6BHkr8PBENKM2WP7hJRei2Tahvjy3kECGDo9U3Gi52Q6lpent8U2Db1uMxb2Lm5eXtAE3UZUMqhSZ5zLtKOJomLVLJU8BOnL2EbQWDuD2fQMwVgH8ot2htZifSCCy3mPDOAVGcMhzN9fM+QnEClZJs2eX8kzazgGJpr35267kDvjy1j1K5CqkgZUUMowUci1BFwUUgpffOkiAO9FYpExT7M3s4dzqwIc.78731pt98JQd+IFd7nqfbVVnRIKeCxX3wGwpucRzubyDEM9Da4EOLyYy1c9NeNgqlT7Efx3CWgRkeFKeOihfpHmouzqOSxTvcbrwmj2Sus84tGQEQmBgGPZ5r+B4uTCPlzmnwVaE494F4pLzTQ2A.keIl4n46cwUVgpF5WSTsspGYbI0wsHnhxWLlvvjlhMIkfD92X7e4i4Jv59VjAv63DXAkw2UcwOY6kfvHkKZTcZWVo4WId4+R7Qw2J2f56dlAe18KeiXvWIhUna6SIaU6DCVFmSKDewfHvwg9.JxpFN1VZfOe26TgKcpWzWo14XaLpScpgG.w8WTfi8qVfiRB8KRSFY7uer18tmUgU2vz.rpFtAdzQV1aSOSbc0uYGId8dueasGXnETY6KXL34CUGnEHHGngayXmqRvDyY6C1oiiipJmLCe2iXmCmV4gb41VIyu8hFEEn9P86765X0LN5Vtl5GRQU4oEw4l9AnMbcbVNQscxprsgPcSErou0frLO1VsXet8ataV20Xc5o29AVQULZ65Lm036R2reciWL20OpkhFFqru+x9DSmYDeZqJPc6z9M5EKDL7nET8src5ls9xLXD+YTX5bfGcr6ykavoyzMl85dP9XHVIucRKYIm2Ne7hveKqzv9XI0qiEOapIYymhvXeZKG3HZxO+oEKflBw5gV2BVK7fi9NCqPnCajgasu4q.jI7FjsZP4IMR5qqynwFuXemQ8ICSWS5vPEsq43JSe0hU+UbptOsbxQyIeGMWuwsaKCxMCE4G6OSB7YfhPeMSyVCp35XxYhx8vnSDwqmzvN+h+BiqN1IEzeHqV3wFHyeQxA9utnIhew2uHJ2ibBv3w3LJFcKVtf0wKSJw.4huTk5wXiUyMuT8r58c+L+0yGW5FIdh4wRSNO3xKwFzMw7uB5lx9A76fq0ECGLujGzLr+ADuaQ0C66uGhGjZ7rSbHItUJN1oO7wS1583AXjcMKO+UmZm8QO2oyOP3abZ5jcy+RFKwcjezvshJ69bSXtC6mjPYypb63l3JakF4PSqY85J0xnEZyoaL5UpDgRiG0owEDJDzwv2nXcASTBmusTSkmmFteg5HPWrcqUuaV7vNWBEwNGZ.G0SszAs+0iIGw8hHmBU8ifstSdk8QslobW+.rAza9YTj0If.i4ODjnBATBEuMoHS6i7fe6sXnWNeSTgCQtgsnuQrGte.kttOQERACqz+HMN6TeUNj.ZwE4lqIYZ5EzGQCP+uspdonUt7xgO+HJqEg2HHCml5rOE8DwdCKsY4tdYN4xxZ+FZ9FKa18oBbSw3S4IsvG4n7gXUsgHBfJInzOC.uB1rH0GzPxKA1.OqSs6V+VbOw37QDDUGje5YJRWUH4xl0lkYE0ztkXfCFu246pYniSo4MyrD7nQj3VnH5X6hidm5h+z00LOXzvPyQAQXaEuJzm7Of2pm7I9Iwzvj2zu0ZfAWcw5w.ViffpHf0j6RWY0vB1ZjDSJFSWOvUWMlgz3PH6b9j7NvX0BzOGwr00uY5UYymE9uT9Ol7U0yPpoZ2X2o0pdW+UpW5iNldIUV32HmpqEK.4sxLDj2iHEt4krrwMgO5J6Z+fpuX8WThP7qKPB9OheZI3W7HPpQc4unDIqkOlvGMZsy0Me5lEfhTQkhCOSGfoJ.LV.rL6FNPk9JXYgV868ipeVAwYTPn8WH+Pdzd7QMlsLeJSX6zw0c9yk5FQwe4q4zkmXTMQ+xxxNBNHEL78qNQL4WVU0a2GbCAQcwwGgQUeu0SXUbyw9hFypNTM8ixG6bymxm1ILVAo3CmNUIQOKuGgjVMnOYAX1Chx9ExM8WO4bxxUnmiADdH9heTAvB2P49vRcuONaI1SDLLHQYC4oLuvU1tLplrAbgSyXgHGg3oNC.Ox54Sy1ajEPemDOAr9Q2uEZPuDOfzSoHHKJhzJ8.0BaOABHGOLalC3dIjvSJy.wXiP6hZSoK0Bx3ysN83H42nFIB1CDPK588uk3lQjB3JB0wFZcuVb4Wd5ox2ndux5lQaTBPtVNM.tr3dY7YYpGrIyL3dODBXcZXxvYJfzR5weB43Iun4HOSSufYxodI4X5IZiVJIV46PEj45nyvlxOkygiuUSwRhGBFRG0NepeNkNQLVP7StwLqsWekza8wrFml35I3jJc9TGKNt7nQEcDegrRNbjZ5iwYjifDnnxiKrlyC0zNVaaIAP4G40N4b7RFaAAsGfU7r4lu3l7.pjeWSRKcDv37pK.6Xrh7rTip8i1LvgHl8XdvhGqrG8V03A5.QK1pZ8HngzsGtXifyWEUq3aEQOioodSV6l471uB32tRuD5d9NGlcRNdKQLowv+kAEcVZ6vGCCtCzPAhAqA8aqIQnXCdS77mKQLwU4Mif22.fqapbw0byRjElLvzG.YEXi.QKD2E01DMFe1E52+p.Wz154rbILyWmH4TbxyEVyLDLcJEoxXEI226tMfSV5gMuBNDo9sxUzX90.1KWRi7pEzZCMtQS98oZzV7VdyPRB5SgLuuF53zucvWf.ll4nUI+xk3Ox9PBhK3wS7WRBR9qqPB6WV7F3Hl62OJjX6ojYenTx.QQbotiSJWH3pf3fWdK07tEb9UTxiUQk7jyXoW57UBnfeM.eDWo+nPhtyzvXZTGjyww.ii87h06aNyCTNFA1gBy5q7CiRult3zCG1KJLRAnunq2UIDXKJ30W7mxOLm3Ty9RY1zEUFNFwxGeHgecYwn3ik0vqm0OC9Fb03k46Ohe6tP368YjLJrkOOZ53XpjS5p7gek0CRua95P9ZGNWLxTDfB5MUTYXMR574qLfUbCIuDc7v9SyV8nO2hKeKgfz45cyLj.qpbXcSTNmRvqDzy+LcODc6GgXzef5t4OfkVtXlAsgbPCekNDMuSM2DftNrnVbLGqmyJaOOBNiVyVVe906Q84JXnAfLITNptALHwHuBcXdMWBypgAonusMNXCYkOGCpF+V7X0iihjXo0sz97JyJM2CAUDjKaUcJEI8U5.5uJg7bUm5+XMi7R9KW2Npe0odJ3+3hFsI56HBFisRgwnevbYCJNDCuYYxbJApS2kzp3Nos6mNATRWF0Q7FbtGrSD7MyCG5FUztDbta6WB8TpyP7d38b5bxbYHCoswKrdOnN2EvqVovN6ZFMSzdsK8RtGJVsv30Kl5fp0X3rVAw+fuXGTPN2aPAopbFFFePuN8uecB5wjOEBriDlc6UMy0qD7GkqwXD8kO3SW+BV2nNVgUy6pyzHPDN22fU+3n1VP16LtdZOov1wsS4GT+wRWbJ9Ewt88xIUO8RSWZ1q8yVuz.+OkiyG3Nz980nLJdPWATFVvIHA3yWHDso3n85N3iR6UgIeFuLFNHh2IbQorzjatytu8G5+z9Qf5VXyaHKu.oX0a6878qDWIj74HVi.oOjPCte5l2wmVagild45BPQzYnH9c.YhnOSYaHgWa1DmJixTMv.9k9b21qqKZmffCpxO85juglufw.du6ES8h181TCXApr8h6wb78B19chvSlAVw2V+O4QktyY6s6gNCKYXcoWQs4zsyjluCu021wRSDZfl82QmFIgyPf6ezhY+iPOCupWmeRceq16L7zGq4YD4jQEEtu8dGIUaxrnxZzNjBk7fil1+8RmnsOxt8NydYmhLtCueS9EElNIfKugpUF2N9GLsOISAu0rHDlVNDlxiv0FzjV72hw1BSwy0ICKBltFjp2w1mWaYpPaR8iys2VSseDowhCB9n85xN.jWx0PTmMwt1U9QH3sh29prmfFJ8iG7LdyTZ2uo9LZ4.dbr7HvjoiziKVM6WSBy17GGpcVOlqKuSc84rWr6JFOFb0e4E2j8Ehw2UHK9zOc2ZopsC1NN2uQs7.Rwy856P6tMuCFNqQkmgx5.Oz.Cn5nkQOr9pkoYVTWI2hN6AjQjCydWGcgvXWDnDgyosjUf2MNqzavvE42RxxwXzK.Sr0duOIAwOtn3wcUn+J2JipOcAu64u+kr9NdrE7JlD6wukHyKyyVwX593b01IdfkvS8nJXsZcOfKGeQiGcMhuSwwEI58ZDiDCKmblfOl3F1PQDybaXPkvkdY0wEiijvDJ65wRbF8tP9N33ciUSLY.6bpHi5x4cbwgvv+irS6+98B6We+WIH9i6F1J+s3iHyOw8Nr7VOTPxPDkn.0AAN8CJ53qyUonG2XJc1Y6c18gKZRNffx1AFeiAqD.sY9dEmKx8B+bn2BEmBpWmSGS7Fs0mMnUQSUvLkTmouUbhiEjwfsepGJ8HrQVXaadadNM4nRw228Fk+1SHvciQk0s0xxz1MTKBysMnw8Abn1cdQZwQUwIOs6wFvjihuU97or+fo7WX7hDx2.WgvuHtzoPHlKkuKsF1rMoF1LuPWoxxOsHidSDR1bjaP6XSnqDaJ4wNIZXaZ4tNVkmp6TwTzsNBEKL4mr2SeiJLcltd1PyKyJyMvLj.lk7l7SbF3Nzq8rrWYXjv52uxPL5RRIu1pHVR1KewE8EJ5E29pvRlby.DM7GhLBf20GDK8PF6Qhb6vhDXYsYzv5d3jm67zjuvhS+TBP4I8LVYvonSGpW.dh370m2mtWSoCUfJoNkB71stNVNlpxu4cLlL7rAwraaE8JrmSNYMLcv.Yb57qMCEFfjiTBLd3tlpRyKtsSqUjMrRGy676+.c8fSuAjsgCUugfHccajCzUtSkfCDM91RGTZ9fS0QdpshkEzggGzlm8PG8vIt5qsbuO6g8DOnoke4T5rvnv6RnDwSM16kNTWTEbikZY1rHANAnkt2bi1VXPvJ7oxqynCeV+9PE7XiFbiP+7VUONF.shn0PqEc1YCrBBWo75jRPf.bVp2R0gSDxEN1QLmoMzH+hZMBHsvp.1Oca2W816sI5fG1G46agffuoq7e1BrORhOWC6s+tSJsukZXbGyXVFx1ox7USVCbhq9TfvAOw2.gcb4EtRWO1ngUNvKUv9B5ZSy.qwt4LKOYbblLDPewKJ0ZgwfgHzppM8345c1hqB1ZoFEHsfUkzXLm8xfADhlzXx+Jaw2udQJF7e7PRbybqwAFaLX7meTsTfkWf3X6glOygQYho+LR3Jqj0Ktmbp.NIWemZyCxwXaCpS8khgZ1o1SR3X.Me2RAedl5aZbbrhBe7qOOBOcMDbDQ7mUmKLMBp+Bz9Zc4cRfPkyhCJrBUQQeyruxNPjU+tcftoZylxtV.0QpCnWjKHQBr.R4Mz4iLcjBqK2TrFwvGkW4HGrDej3RdePYLf.1+loqUmLAqo0YRHAoR.1a7s85M0wOFjtbGsuiqsqGQl4C4FuN.N6CuSPcPNVPKLDdyvCGWXBXq3ogaDVrOPP9ghTz8Ck86xj7IJ+FSDpRRLWlpcN6XxWn30t+3nUAhx+DB5H8S+7NZVfsata.qRfhbNcF+.bM.BBd76zTn3neEM5QZs1bPSQ5m.UwFzBE5DZ9bMpB7jbDuQ0xowfw2Z7o9n2JUfBU178RFIrBafo9EfJjbe0TbpnPQgzRwLGVHVp7knYU9hArgGuWG8hUi0XNm+cGaMy6B3kgMnZWOhVQwC345EhjRQg1eb3a7OPhUzKNJp55NM7VHkn.G0QX0Jbz39qr4k+5IWjX+xAtJDl2+3gAPMCWgU1wTh2AfE.IXFyQ3RtzOcvxZ0YLzg2geZMAtHA3CHnXWDGCKX5yuAF4uzkrTfsV+DpdqarDBpTHIyIiiF.M+UT6SHMpB2RSP1L9aHx1.zqEaoPSae2gh3ojWNBVC1G9B1Qlxf7gN21y0GwIdcZAlBW0LbCChbq5FJIXxNIrhI9ZxpAiq4C5JmrAypCMa4m9JL51NoigqOFO7ba3YTb1begImv5xKFvazYJihGmP2S0jbk.Q71DvCxHHuLrn3yZoA88IP36WFv1dNCHl.nvGYNAD3PVzjWCxmVEpyeos.xLhfxAnEBr9.XZ+FJpQuRG+KFcp1r8Ov8N6dJ8iOTf6uT1IAabu6Th87aJheXWFxUZeg0ozlLGUl+8IiB49Gqcf3b5H7tTIdDDQTA0UDvGwRaDOxjjYbjR.TxFs1HZxljksxMfD41Cx9XNrg3Ycqxgy2zZHoOJGdQfsSgPVlQfcQScL5dPmgCIokoegN.scDNsB7Ux7GLJNbSChPQnmOQnSVs460TU4umXt8JAOtn56U8b0jmjGIA8ErVAODjmzCMc8b7ajaRoxGXN54Fb1dlKa787qZpHQOYcCAYXRUcYEEcGnJeEVXMfzXoR79J0z5ceAvRK5A50UDhTqQmNLjZDVafNAZfyKrLpvDDQPzxQQQQMk9IwZQWUtS1uSfdABIOVNtth8czqFY.eL91A6tHlvjW.gCNrRK9MCEOzZs2wfAuP5qUo1mxSeDuZcMfgJGNbsrfhU+fG9UvH6OGose23bli7beW4ODznOwxKROAF4.wmGsXkGMhNUZofZ57MiwVbm4GKYhVpIihjU9j6vm1vFVmGrOhSFOvRdFFJrzcCTkUnOEfLsvcU8cuDdgmHGerlCaUIgtCbQzyJwirLlUrlnTvlno7nJNGhpZkm+TxfinS5KBWydOuS40xGWIwIF.KjAfJQBcxkFPsaMOqGMyeAN85S1Y6hwdmDUyMK2I5OLQI3UQy.9WYyY+0gEnH+ksmULT797wfJ.ohJK3EqA3koiU9GdS.YUJWhaHxDXHEDeWEEpYZIRi..fOKow7uXAy.+9XTsQGpk0vcn53TP0O+aryoHq9WAi7tI4hQldyfdX+NK6o2MnLc2pe40TL4.bWseJUVLW9HQGK6npZcu6ajohaoc+RV.i0WvzEF7ImPqKeh0LT24hgoxtwUJqZzeliUvHQesEZxSR1VOlyLetqYk4RvfDrenRgavuSKZshA2ticx0gT1i80P7Dmu6lkPsmfZ3f+yvSWXh8s15MiyTqgD+5ovVHDBoySAiV+gDD1wXwmmJQfdLWHiA7Khfr9mfJd+Dc.vNj3tVTH.11mK3Ihs20.LQTyghE2tPkNZ.YZ.sCCE7kDXoDNKE0umEAd663MIsoBriU.stYhGkPcQD1Pudf4rfijFFD85cSohLWEpqW3UvG5vzY27jkiV6gxc293B3.jy8VzkxFw8uDZb.WGZHgSK8R8K3IVh.vnzuR7NHNlWh8OxSdFYOlXhIL2olTyF2i2mER3ItlJzqdmlTnjxYwEsiGs.AkmgGQ5VCSSfuAWjOnAcllQBMuwBx5iGywKK+dXkgS+DTARU1VsYPO5L1gYz37axUmgSEVsRnbBm7sdBmzjbFZLiGuu8TeQA4S5.AiZeSds.ujt2ZdMug1JSqRjdcau5K7KLGIjhMJb34EiDRkEWuOyHKuJn1ReMQMiti3RuznUTaQlRnus74l1cZkV17nuYCp7AgFRMXOKOp+789NHHr5bccMqeRqL+CxkpfOH3InqieMiyQ2CV2FCugsmopw583TN0icbWq3Y14dBtZnKEiCba.DQ01pzRez3UsDyHEqkWakt5IgMg9L0JkMIMaGfaG283ks4wPSxJOdhuejkeUSI2PtYsUKhSmag88VNkETk4sisLhCBpnNWsSAnXU2maphQeky9VpDeGz3To1FR+iuXfxrpf2SMsLdLX5089aOyzLH5ps5wutsu.fupMZ5UpWkNG0N3OViWmFf9z0ilzBnCJGZV3Zk+Jy1OJR0bL3Krtvvdnb+8M5cr57z7NjaBRS3UtA5Kze+F0FaPE+3LcPhUZ7bRb5i36QkNY6dd1GSRuOAr95su+hKrnN6iyMdFVQzaJ61uoPFFUuHRpeGAl+Pf6WajJ9Q.ut5PCTN3sJreQ71t73CJVCtPv4ekkWE6uAHFNxe7LlLwdyw+nsItNfke6wc6BwPwH.U.X9HwfR1fiGIMoTU9i3ldeQbLnFsoGGopeq7.e8iyYxJOHt1YmM7zKOeBd3D99ldOAQ0zuq1fGJ3LZxV9592wuimZdTsXdwOqr+5HJJRW+QZ0Yyo4RWSCZytkqmKg9i41Fbi9o0WEImUKRxZ3mETlai5L30M6EYu8Wa.eM4s5eHS09VCGMlvF2TBftVCCAAukpY8tJpkKD7wmIQJkW0mWnkuI.6uZ4863z0TjeqpwJ231T9NZ7F50J01kx8FBlv.01XMZKrChUSJRJ9xVG15cV0dazKbBFx3HD4WtCOdm8YKS3TKEgMrP50WeQZoksQ2rKBjBcjqSjE.aoPjF7.B.XQfOXcRqUScgBH.L.D1t+9U4haDd9RVmtH6q2TQZYhvloQf1sJgywwoe2Plf754U7zWHqDH5RUSYOAS6UVTehvqVA5xSe43e9xXS4qbXtrV0EG2r67tb5sMRzmqmwCgNaWpBEnvQMKyyq4qfob1Jv2q8okDnxYGJUpzw570BDKLHaLXhJ6FBuh+iKOFLltuVfe53YBs1SnXi149BMEXuywUy2fArnJc4RN+9xsh8pJNoBbZbnVYTpiSUeltpuhPWnMyF0m97sflphLkTC72vTPTQoarWKiQuheqZromlxmsMru+9Hw2uQuUtUkVzg8JZMx008bXJfts.ze3A36Swe0sU+ugb9+z++Iv38WejyymgI7HmW0jmaNrFk6gPVS69H98ZyQg+f7DYlKw0ly2HMvZNvB9JvJQvBFa0nY9243eciOSdRmz9xuy+nkWsdANEc4j35sYR7V+1zwNNQVBZa1HmxaY3NY4TR45ZA6YemNA63eHk20EU9hq2s2pqB6bJ0zH8lDslIkWvPAq6vsWGNVQ9gLtKe1+w9c37viN92FQt1b7BlqcMOHv2OyUUO7y9dldMM1NsJ0s5O7wFzDXiagkDhDi3ojXYPWSMqS6.SznXHZPa1ZX.2zYYdACD3I0wzXawbV.DaxbzSg9MQP.4c0u9D8hzG3yVzizi5NrrsQJM32vZBOFqmj8913uRnNA9vro4OaWqdxJHmJ+EL365wPNb0A61Ll6merAigzXE5zjVWD3wzulyAp.Vtyhz+jm0mQuRiZUTt+gPElbGneDaIBfxmzg5SP+hKUzC.69ir3hVI78R8zEXuPLrovYHLhjnMe.RovLET8OzQjnQagypjEjIbffr+HL2Jk99a2CO5f1N5Y68REnhjdzb9QCqtwNeuBSuBqlEXxCcVEHm+fgqYRyXrBqR3YDlHumIpnVedi8QyJniBKutVGF6nrsi+v3wY4qfqzYXpCJDL5vfSpkSJLjfx3Sh4B.UXjl.oLqOlldaeJ1ToGvAvxgi.Ekebyczj9H+cHgoiwFD76bU8PCK3gaqahZp7ir7eHkWtb5Ue11qGC9LbxT61m0KQzxvqcJRc1OtZxH8.ovdX6CfSOnWMq2SpfBeyx27RRG5BoNPjbhFHFrScnmIdtUbOHfLouoYqhsHYUyP1Z1APvrceBFzVDh7cKk5BydiUbxcn+b7HQufJBybeYLM+bEHu89mTSsaZ7URTeWC3pTH89OCCZZV4GFjnkoBpi85fl9w1IpJUkvWH7MBuhEyPXQRaEulTSo5voaMui3r+hZ7fdQj7EQX5PuQ+DRri8SYgn86m4q.7jIBaHZYqjfGuUZpkmb+UN7.+sDv+Kat3fs38SQerlgl3+dffld6u0wC+dff3Ocq+6AB5F.Ak.OXrex68V0d6Uov1InFLXKjT6xavGWoFCG6Yl8MdpKXxD6tt+a20fzzO78K+fUvhEjYjOcl0aUb9MccaB5SJlTF50OvJjzVUbbtQcXaUa7qaFUq9laCJ2080YPRsWsTl4p2CJO8dD6fi6VVM08T4Q6Wx5gqc3drBl+Dau1p+CKpqY1dWknrZdrRPqxiDD2QPiC2og7A9DFAiAdyyb6gKiGCzmyDAATQAuasFSwHyLrD2tIxlRKznQoKlKSrrVSVtnNkdzprKyuhr.TTKWpjpRqQ8guD+UMcpUvldg1mBnCTu46EmqCtHbLRfj2HsVqCuab3BvvKdj7rMdregvtsRQTFNxcDc+Mbau+R0+ghKN25YdC4M513jUIMWmwGXFk08iEi.n1WqeDnqncKWQHbxvnvP4lWFd8NPAG3iKPRlv4K77SUnRsRhGTcbbXg5Qr2X392gZvAjSHTe+f4UO2h7wRrzN+P8b6C7dPTIN7AhEfEDtCmGTiw63qYQ3Rp7O6K6BhfUUOwrGXZbkQ8n7idoodV1t7uOSo8ppeuQc8EG0chwXFUaFYdxHNWcNU73EzbjObsdmYqiUks5edvpF1IHqFxybwlrCd9fln5cGqC.zNCY.LWpQOtOWPdnSzBDrb2UJrL9N9AjQFYtwq+jDxxNMpr7SIE4ieFUnSL5nNKosRpUhEWZzgOBuWxhV.qp+wYBcbLEV+pR.Tg44ebxP9BR7x+X4.Z2.aDAu6ZbSZEwpCA.WmmH0hXi8Pdyp8B98AIi5WQGyphlUUHUlPEbw.2Yn0Kk9JFMAmNwwNYyMfN632lxsmn68fPuE7zC7LaWSCf55sG5B6JWecSwhA7kERbMpZckcWWZp16q7f5EXUoCX+NNM2Bjip9K7QfMX+Fo9h6B7wpKKepbIu49r7YnrFygH5Zde7YJEAJtcAb7uhFbFWv7Lqi8AKIWb6O1kFrY.sRo4oNl3EkR9vdhm1Esc3Mu5fCVpmT8wfP91gITjhWLVpcrdRHuPMdfXb1MLS1nF+7ASjnfIc3zgycuNqMeikXHpSCY4SBhBThR5N5TxRyzmGW5uX95OqwwAUsdj09tP4CncSM4JUlrPD+H6yzL4CpLE3ekiFweCs6P+xweJLg0GhCL986LGVcslBvMUB.6xA5slfuHdY7Yl4ItejEOCj6O6nHzAxNAktUFQaC.Q4AkYpPr2MY0CNw8OrSbXE0V4bhqRGUcek9bYtmvrfXKklgm6qq4s00vP4J2fdNuolpBzTrzNedu5phgmgXhV6TjqPbP47pNGt914D1zCs.R7rWemzx1DKTy2bZt2KuMJyrtftPawVAJMjTqtpQy+Hcx6YfyvxtnhWW2z.VMT883dYpGPpsV+wh1qghsu1B5xknl4.04TgYuVrRJs.DOPpyJWHhF6LZoxPbJK2i.dlto2znKTxEqciIeAfUn7XrnMzGN8Mw2RZ330D.RHpPqWzzCzrIeMwMh4nDMlVK2THpKH5thkndclSQPZXBDo8buXIPv1AUeMsM4GKzytFIM2rVF1Ldu6p5Zz+55L276Cg8o0i7yNwiie8efIFbCn32ruNOQJwbV0uSlK2z85IWCbfjTz8jVkY3lUBTflkjzjrRMlVJQpWS9n6yoZmNTOr5oGOYKccylBmT3IpRBlNjoyKg16IWIE0FU8RxBWlmmSbvSTGxZiTT3LxvPwLhrYKB+ajD4Dkcgu3wwgfEiI7.2GzFCkZ4oNC2waurKkcNlEGPgjLk2JMWmRBQc7BICnYqRdLvYvdtQW2vk9UUm9ZqwMi5+0NqG+54xzT+wb4OR98RfwhVor+XwznW8t4PzpurZb+ba9xnb30GYEhgUHpGw+c..kQPekQUAIYpJevoBooF2CVJFuo1wK1tryuZUrsT8e4ndKm7jXGM9Es5no6G7yZon1dNj1bOh16Q+8qvllvAmrRXkRtho3tGqkiJdA2hTYZGivlrfyZVYjFdQ9Mls5ovnZd2JSmuXnLlqP9yW9ANVvZ9dSXvCctZaGuAUB+W32Lr7bvUbuUmjy9l6v8zWJwmUJBXmBZwUe4Sje56Vck6jldSak1O97lAiwItB9rW9cp46eck9QCmaWoSCEVRGVDtDEM7o3L8k062ByC0DyY86uemPhnNDeVLMbZUNW1WLtij6nkJmETXgto7gBvpbsA90B8AwBI7t+GdrI.sSgBqH.0Y326QIvulP7vQhHBPJjo+rfyAsCrmFGBeF1lFY8Nel16SYnAcNb4tUZqvakPf5hqKwR+B02EEujWuv+RqFbrc+90m6OWoedqavgQQveDGIVXQjBMUbRhM5SgW70+i.fDjxi5Cqc.c.r2ZKiDGHmbACI6nK0.mjmEeV1ZSPdrnfmmzkcm7A3y4UshcD.9PeoLD1NIgR.fyx4kaGLMGPbswaHnovxD7lHJDNBwThAXhwxfEbBkRSPY6oVC6pNi2JYeAa0sc+7Pi2Lpb0qG5Cl1pmCqm3wGWD2H393L1vC9qi5onY3WdFA+yn6VBNebRvdWm8urMbCJg61MCBOVd5zF99XeyTtvQsLfXKyrTZl7LYIOR8wmexVD2XhPKRyX+ixp82Q4MnuHSkR+rg+VvPDK73z5NCXRYW+M0dLDNv5mK8hjKY3woj2xYP.HzYX.QTeLTqzZS88qHuU4.EA6rAGAAGsA041Ns6PQcgz8qqM.suBGMMpBCUqo02hAksX.0e5jXTLcZIIq67KNs9t11BUujLOeNX9AxWBW2LjHfAcYPBcbt7Wuv20+jonaF2TmMszVhpPQVYW4zCsKjOLx6fs+cHP80Wjl9CEByGVm42bNh4xyreYX6WTB9HIGXBqjXbg4p13z0vXzIpWJjz.zEHRvTxPJV6+V4smb4WoGyyB5fLU9UQqXUzfBOtmnUFncjyeE6xVocpT9wrc5q.XZsZvr+WOpzsBJrb83xtVAVQezA0OwrWYSqLxPZQIW4ZBkW6UOenAW7mop7wzSDGVezlzgOVWaFuDc4yOWJkX++qXt95osQBh6fpqNmpHc2q2SV7DbkKJNg+DZUkNffyAEHPCPq.gp1XuIYabrcsWSHf3Cw8M69FwMyZmDGRLP2SmtGRTlcl42L65cl0VJ9moSwMga.n9ET+C6YW7zZ6Z1n+Zm8saL6t0Gq+QRuiOm0Y3I6+1C12cy8JcwNeZPq86u44eu+agtIlCpWiDdhmwvS8s15r5tFGT0gb6sUZVy10vH5r8L5Lr0EP4wIqc6EPa.9Wtw6nT+aVpEPFnKdEvGzkwo5tdvWWyH5GrkYwB4SwsLECncXgbZfYjqEm44tzh1fyeFc6HvqEWQu8HMcVQ2q02VtP96JjWC48lFVHm1.8pMJ+dcHrlr.nOdx6YNDDwqYtFqs9RfeEw95Kilg9HHkFcnwuMCwFrTCQUqSQL7X29D5sPDyhD3PfwTzilF9Ib.ia0MFZb9cTT+Vz.Q.ZR8IAH9sFljMH9wAPyhDRSx7eq76DCMcTG+W8YtgVqEH2K9myfWkLvyPR7VMC7JKIdqkAdUjDu0y.uUkDuMx.u0jDupYf25Rh2lYf2FRhmQoL.r5KBv6guvOTmP5bKfh7+ep7Ii.KYwiLnkcoiLnkcgiLnkcYiLnkcQiLnkcIiLnkcAiLn8DkKOObIEK2iJRQFaECo7Y3SsTGPNmyTa4Pr58iel51naO6Yp3D3XLJeP+xQSnKKc0jY2kFoEJmVnxU5+td0qd++lic2dzwtiRjIqlY2pY63VMy0E4VvGs.o64hKYMbWZ472kWK+840erp1smqN74GC7bbnAyUMR3iAOkiK4J5Hth90DmH5XCUx8poYMwW+xXMQq3GmMkgdt64x3M7oIxldN1HoHh+dVNVTI44ggec1d0HbBR6hIiA14SC3LLcxUidMyhFSBiZp0ng83d9BaS3hPkbugmvZjwrunoiGgyb6bJCRaFjAETSc8R4lzrn4vzBIgONV4UG6QqNinNSsWaaa+.ZKb+j8mL5CO7vuN8nkSFVXLmdCehwiBmXVuPibp2kWWeQHZelYy6t36zKWZEbjZrPeGxvFhirhOOCT1l.aYE5Ova.3DZ+pB4+jEKZj3+NQgbu90CH9cYVgS4ZMZaRjCeKeeJbznqEcJshJaAEQBag.MkJtgX7S85zwgdnm8zliTx4NcIttTGL5hwNKjdN0B1VkJ77fH5HklNDdS9PmGgzw6NlTIez3v1y.9jnTdz365ZmJ1qm+dkA3p33Kq+8e8GJyxlm+rJLKhfbXZxEEoc0DEPsyTD6IRultgL9vzzx5O.iiV5IYbzWZJ9KpGi2ly7ywElSNBUU+WjiI7zZA0ca2FtLOIAekp4WjkTVelv+IuHrp9PBOfA0vpPEQSnhxhlb8G.WM2BXYbrbITFWAZRcsEBX4XhRCTNWhRiQJU5SrB79pUbGSjIX+IwHPN4JXJWM0CQYcCEQWzzqy8gpfuZYMMTy3XYYcrhrNtprNtlrNttrNtgrNV84cDaRsUDzOLtrQQA5cHZ.mK2ttDXGnX2px+vevBYg
-
RE: Release Triggers with Sustain pedal support
@d-healey Thank you, I will study it and maybe make some changes, or I will use it as a reference.
-
RE: LAF errors
@paper_lung throuble with Colour in else branch on second condition
if(obj.obj.isHighlighted)
Use double-click on the error line number from the console to move the cursor of the code editor to the place where the compiler show the error.fixed code:
Content.makeFrontInterface(600, 600); /// Set LAF for combo boxes const comboBox = Content.createLocalLookAndFeel(); comboBox.registerFunction("drawComboBox", function(g, obj) { if (obj.active) { g.fillAll(obj.bgColour); g.setColour(Colours.black); g.setFontWithSpacing("Oxygen", 15, 0.1); g.drawAlignedText(obj.text, obj.area, "centred"); } else { g.fillAll(0xFFD2D2D2); g.setColour(Colours.black); g.setFontWithSpacing("Oxygen", 15, 0.1); g.drawAlignedText(obj.text, obj.area, "centred"); } }); comboBox.registerFunction("drawPopupMenuBackground", function(g, obj) { g.fillAll(Colours.black); }); comboBox.registerFunction("drawPopupMenuItem", function(g, obj) { g.setFontWithSpacing("Avenir Next", 15, 0.1); g.setColour(Colours.white); g.drawAlignedText(obj.text, obj.area, "centred"); var a = obj.area; if(obj.obj.isHighlighted) { g.setColour(Colours.white); g.fillRect(a); } if(obj.obj.isHighlighted) { g.setColour(Colours.black); } else { g.setColour(Colours.black); } g.drawAlignedText(obj.text, a, "centred"); }); // declare combobox variables const var ComboBox1 = Content.getComponent("ComboBox1"); // link 'comboBox' LAF declared in 'Set LAF for combo boxes' to above combobox variables ComboBox1.setLocalLookAndFeel(comboBox);
Latest posts made by It_Used
-
RE: Few questions from a newbie
@ScreamingWaves said in Few questions from a newbie:
@d-healey i would start simpler as well, but that's what i need at the moment for a school project, and i have 5 months time to finish it. Would it be that hard for a newbie?
If you have such a small amount of time, then don't waste it creating a plugin without scripts, because you'll probably do it quickly without revealing your full idea, so learn programming, at least from the same videos from David Healey, he explains it perfectly, I only know two languages, it's Russian and Serbian, but even with the language barrier, I understand what he means. And I have experience using Hise/in programming - only a month, or even less. But I can already do many things that I couldn't before, and I'm proud of this result. Of course, this is mostly due to the participants of the forum, David, and all those who helped me, I am pleased with the fact that it works.
-
RE: Few questions from a newbie
@ScreamingWaves I think it will work, but I can't know in advance.
I use this naming format:
Mic1¹_21²_3³ [A-1]⁴.wav
(You can use many of your custom separators into sample mapper).- Mic position.
- Key (numberic type).
- Fixed velocity value.
- Key (string type).
-
RE: Few questions from a newbie
@ScreamingWaves You wrote that you started studying the creation of plugins without using scripts, I want to say in advance that most issues cannot be solved with this approach, or the approach will be greatly complicated and the result may not be impressive at all.
- I don't know exactly how it's implemented there, but i think, it will definitely be impossible to link the button to audio routing without using scripts.
- it is definitely impossible to do this without scripts, your interface will be based on panels, each panel contains ui controls, if you want hide one any panel - you need change it's visibility parameters, and you can control parameters such as panel visibility or status (on/off) only through scripts.
- The question is not entirely clear, if we are talking about samples, then yes, Hise has an excellent Sample Mapper, to be honest, I only have such in the sampler from Steinberg (HALion). There you can sort all their characteristics by the name of the samples, from notes to velocity and proximity to a specific microphone position. And you won't even need scripts for that.
- This is what I was talking about, the result may not make the right impression, and too much effort may be put in. It is possible to style knobs, but it will be necessary to create a huge photo in which there will be frames on which it rotates, or how the progress is filled (its named filmstrip). this is very inconvenient, and you may not get a clear picture at the output.
To do well, change your approach, start learning js.
-
RE: setMinValue not working.
@Chazrox I need to keep the range the way it is. See the last line of the script. Your solution can change only range, not current value
-
setMinValue not working.
Hello, I noticed that cannot set the minimum value for the slider in range mode. Only setMaxValue works. Is that how it should be?
Commit hash:71968e90
Snippet:
HiseSnippet 902.3ocsVssaaaDDcWYyzXgzfFf7APnmjKLbDUjMkQPQb8sVgTYKD5Zz2LVsbn0BQtKwxUNRsn+a8SpO12ZmkWrnrcbKDZDDD3b4L7vYOyPMRq3PVlRSnMubQJPnuvIXgzL43ILgjL3DB8kNCYYFP6V35nEorrLHjPoa7CVGzs1jj+4Oe+QrXljCKcQHWoDb3mDIByRuiN7Ch33yXgvkhjZY26vAbk7XUrZFxmMb5PRY7orafyY1zZ3P9QV1DB8acfvH+NbOVX2NfuOZru2dQv3d8.O+H+wiOf0sWeVeOB8YmFJLJcfgYfLrnGoBWDLQ8IYwM3JQlXbLXM7HA3ctvM43Ih3vQUMmLBgt4nkspMJZUu1YnHTbm+ksruIOf6RD0aZzFOEk7pSoNOMkn0nzlET5UNAbsH0rLhkOekyGYxafUnQQdjF+E04MuwcfTX1s4wJoAjlcSXSgyznw.zVGw3Paut82wcuNa+tl3QTlw8Vl1cpbbdcc+N2JjrvvOHUia2pJVqcb6feQbUd1MCL4WzFC300G+4dQCLKhg1sJveuXsaMAD2LwzpjMqFKicKLPNRCnElQDKNCdXRXu9RXt4H07OSNCExqXwyf1us61uyEaOmqLteRomJj23pjtbUBJnca46cv98gC5zZ2UgylW.2GgGMSxMBDjRhUAtP1d6l+VysZ96McuennnGMls2pUwwf9QCamgzOEv1xYIiA8N3YFRp6RD0LqJDc97Bw5yF7hi5ZIpjV4yEoPo8CkpjR8Ad0OO3DlgYUuk9v7RAsQXo.8D3VbeQgVdKmSfroFUZdtIoJosBzWXxi9xRkdPrHDzDAJpa5TcJPliONT6NkEUWjYEUKGERDggwvHUlv1rtaGzebwg3ttz.wuB0WrkvluLkqOrlB5txWS4U4Kgw0pxCA6n44J2g0cUnjwB+rtUqKe3DMtKQENKlYVcAic0aY.K+qOYaGZk3y0h5OA+us04+JEekyHggO4w4XiGginj3KAGK2U+0NmFEAbyRBtoyY+xWlEyjOplYvUECYFsvpPNeVR.9NMNf2coDhsCazF1whB6NUJl.PFla723mxfdVaZYPupfEhqq4ERI6aCddtGjSx72VtkStVy0ijO1WuOiZew0b9pk5A.6tt.e65Br25Bbu0E39qKP+0EX++cf1+6v2OynRJFaHjgiNMemIkdpjgJvb0J4eTSa05J
Script:
// Init. Content.makeFrontInterface(128, 50); const var knbRange = Content.addKnob("knbRange", 0, 0); knbRange.setRange(0, 127, 1); knbRange.setStyle("Range"); knbRange.set("height", 50); knbRange.set("saveInPreset", false); knbRange.set("showTextBox", false); knbRange.setMinValue(32); // Not working on commit "71968e90". knbRange.setMaxValue(72);
-
RE: How i can create a Multi-Mic monolith?
@d-healey Yes, I did that later, and found out that it turns out that samples with the same duration are needed there.
-
RE: How i can create a Multi-Mic monolith?
And i can't find info aboutMulti-Mic into documentation. There are only contain functions related to Multi-Mic.
-
RE: How i can create a Multi-Mic monolith?
@d-healey I know this, I learned from your video how it works, but I guess my mistake was trying already created monolith sample maps convert to multi-mic. It was probably necessary to put all the samples decompressed into one sampler, combine them into a multi-microphone system, and then "bake" them into a monolith
-
How i can create a Multi-Mic monolith?
I don't want to create a lot of samples, and I don't want to store 500+GB of wav samples for the sake of combining them in one sampler, is it possible to create a multi-mic monolith?
Thank in advance. -
RE: Hise won't open on Windows 10
I found the file, as well as the string in it that prevent Hise from starting.
fileeditorData.json
into%AppData%
Hise folder.Temporary solution:
You have into
position
variable, here you have a array"Position": [ x, y, w, h ]
decriment values for
w
andh
variables and off"isFullScreen"
parameter byfalse
value, then Hise will launching again.Broken strings:
{ "Position": [ 0, 0, 2560, 1345 ], "isFullScreen": true,
Other broken settings (Hise has launched)
{ "Position": [ 0, 0, 25659, 1344 ], "isFullScreen": false,
Resault screenshot
Manually repaired strings:
{ "Position": [ 0, 0, 2555, 1340 ], "isFullScreen": false,