Free LED - Activity Indicator
-
Just wanted to share an LED Indicator I put together today. It comes curtesy of a script that I believe @clevername27 has posted before on a VU Meter (can't find the link) as well as @d-healey 's video on LED styled buttons
For this one I just mapped it to a gain node but it could easily be routed to something else.
Enjoy and let me know if you have feedback.
HiseSnippet 2181.3oc2Y01TajbDdEv5Xzcj5tTWpKebJW4CqHJXsB33HTjCYIAnJ.RkjNewkKJpgcGIMm22pcmErxU9eZ9P9Ij+AN8Ly9xrn0XLmOebYKaX2d5tmddlt6o6gAg9VjnH+PsJUGOOfnU4y0GM2iMq8LL0SqWGsJ55NDasmMO.GEAuToxxGwGpxpqnId9ue2yvNXOKRNIMsm6SsHmPcorbpCN3ePcbNDaSFScU3dqC5Y46012wOFLik0anEfsdEdJ4LLmskz0NFGMSqx556t81lX6I6LwbSycuzdhEYycZ7MasSS71e6jI6zvbqMs2YxVfQ9nt1Tle3HFlQhzprxy7smOZl+0dxI34zH5kND9GlZifYVR9PeGa9RjSUq8Lpi8fT7IRCPhA4n0xRz5qzOkZSynmiZegX.TtDp.XkkJZdKWv7LUMuFJlWIlTEESZEoI8k5irBoAr7Q31ymo2yiQBmfg8IUSQxq1R6uldaefCO1Ft3WQNLD9HSBCyFMpifeTaupUe5SQ6m8fNoaGTqy5cZqw85elx.b1FOiFgf+4hCBH1HlOhMifNEGApEwchPt91wNj5nKiYHJCY4G6Xi9w3HFBGgH3HpybthtjfBIAwgA9QR8.ZDg8li7AEFhlD6Ywn9dHCg9v72qiNsWmdHxUvJpNhvr1n1Zbam65EVE72f43JbHhg1G00aJ0irgUHA1NDLz+xejXwLfk6ZJ7NvyokG0UnePrT7ZJg012Mv2C9v3IpL8jZ6oJOeImr52GIhx3x1cxD9b8D4HbdDhkJXmtsa8hKF1ZbWPnFar6dH.P5PrvyQCAyMksQm1u+3i6c1QWbXq1i6ODX1D8WAA1YagDGReM.cQt9.jQ8lB1iSblvG+hQi6Nr6nditX7wvuOt+IcDyVCEYmMmaejHXCUHb5DOnaWNylaCbyMaPf1wgg.XfdNmun0pFRlhrhCOA1MbNIQwEoNr.UoYRrKQfBCkKkXZOAPPzQeeOo8Egl3GpX0qUkuG3.7bTLUXY4Z9libCE2gLAbPPrq8AWTGHxSnZJO7HvW5ukBkN9Wyyjw2gU8D3azFOgxHtx7bJdFynSmcWDoYhaA0ygaLYN84lAQnFCvDpKzZcDD7BoYpg9o0phfGGeKrSBQX1NECdfgXuoDCIs57EMDnuQC9TwkHjvhC8PRKHZCW5qKQ8.uuIam+RpUQjIyRWzzs3b2SkYiHFNjGv5Y+wy5E5D8WPFfVgXBwm0PqiRjCdK6EiMAFZlQol5Za.1i3fxy.Xz0wgFDQPWSYyP1y8vtvZW3fTDAfLOE1XiHrAPXNaneLCvCiT7vXZ1Zk6PhgEIDrFwcDNgu1elermcjQ1xiyjmenK1g9uH1hDpEfkhwJKBOb4sjgpoNfk4LIdodteZ8aLoR2RtB4wfPx.YFs+FpeLOU2zPrMkmMHZF11+ZQnCmqofpQDAqRomxAliR39PnTAiWl52wQ3VNAyvFYTlAQF7kz10pivur44nmhZxeaS4aRUVxy6VkW5.kcvUYSgJabN3xHz75.sM2YaNQSIwMUHxBiImmBoS2XBX3INFFu7lZoQIJQRKggcqmOvtmW.Y644QxQtO.HScKVt+WDwLO+CAsJpsFar0B3+cELLaVBZjPLgEInuY5GEAj1DtypvuzA9+OKuns9YgIKnNyaCTrCwW+wDTpiZJioeC+GUYb.PTESariykfOcdBFH+RVjOOz8DxDdAP4ElHJlQtCKxZXXVaODpfLC4X8sKjnNwTYBH3WkcPd5jppzLFFlvfXFRz.cBxPQC+875HRWK7G0hKx4dOw3uAQbfjzkw756qTdUB2het3TOTYpGV1TOTcpG9dl5gkO0od1sBBblKOc7FmklU.mf0EpSprCTKvS87Ue8EpYr1dKp0g2AsNLWqCKUqB0V3HPnbd9IfPE1HtaqnqhQDlnAAlnDcvMleNsvQ1PTjYs8xJbv26LeFoO3PW8mptZUXS6lCMYRoiwqYOz2wAzYYCKmsaQPCuX2KIPhOQIlYLBMeUriN82cGcpMbZIagPgQeuddTV+.h26pMTsj9Nf299dcvLLuMvDZ.eAjPFkaBU5PtBZBW1T3p5cHQuh4GH3MoYEsJ+NlXz0RaYjWgiFEZL72qqtco8Z0d6mq9wLBOXMmxKNPohUf7id6+V6s7AxIyo1XcIUsE6eE5bV1EWw1oEoaxZuqPOrbWSuHJat5kR7QqG66pI9k5CnLqYkaiKUhMB6a+RXiI2LwZ5xxvxMvUzO7e9I3ZHdb18HQcCbHGkN8etddGt2x0Ioo0g3fK.S+.0lMS0EqjKbpm2Ufi+.H+T3MA4kuyqRyaeUtxc1SPTK9CZu0+ft.lenajhs9G1F4WnCoM+UxDkcPNE54KjB4n0OK1cDjg0h.lGztfC+jnJKwOyP9cC92biXDzJr3i2BOICZx+tRxfloCpBCesDF9L8e.eEQbAVBD3OJ9F5qyEcDAZRgiOleLtw3f67MF22hAlvXnu2H9kDZpp4QDW5X3.unBTugDMKUhlEyKwh8JpZIoBbwghCAnPguGePJwlpDA2lBJC9tflNkpbr6+4655gAmhQDXka2OxB.FNNqhpChgpMEQLlpBlStoJ4iwg1vdn0skqbk6Vtx2y8l+nGb2a9uAJ6nvYpqlZixyT6BG14.U5kkIeBN1gkRsXn2o9d9Ay78nE1nGRfLFSmRJ3+T5BpEiAsPlS4qNXHwgfiTBG+yGbB0ifCAbhbOwByO3+LGkte8mzklKhmu.8a2xEW9+qKW7tG8Ao.eXuK905Pp3lHwVI5Wm8xOE0.7oXNbwVg9WXI6ylGz+XAEXc6I96.uJz+.7MxTSz6sJX5BGYbgkUQUsffMuuBt48UvstuBt88Uvu49J3N2WA+12uf7SzaEy7StLAnxlAcEWbQkJxhZDgIZ+OvkIPQf
// ========== LED ANIMATION ========== // This is mapped to the Master Gain module, but it could just as easily // be repurposed to map any other function (modulation, MIDI event, etc.) //Timer const var t = Engine.createTimerObject(); const var PnlAnimation = Content.getComponent("PnlAnimation"); const var GainMaster = Synth.getEffect("MasterGain"); const DECAY_RATE = 0.9; // Decay Rate const SMOOTHING_FACTOR = 1 - 0.75; // Fixed smoothing value const HYSTERESIS_THRESHOLD = 0.0; // Fixed hysteresis value const SPEED = 15.0; // Current Values reg curLevelL = 0.0; reg curLevelR = 0.0; reg smoothedLevelL = 0.0; reg smoothedLevelR = 0.0; // Last GUI values for hysteresis var lastGuiValueL = 0.0; var lastGuiValueR = 0.0; // Define two colors for interpolation const lowColor = PnlAnimation.get("itemColour"); const highColor = PnlAnimation.get("itemColour2"); inline function interpolateColor(low, high, factor) { local factor = Math.range(factor, 0.0, 1.0); return Colours.mix(low, high, factor); } // Cubic interpolation function inline function cubicInterpolation(start, end, factor) { local factor = Math.range(factor, 0.0, 1.0); return start + (end - start) * (factor * factor * (3 - 2 * factor)); } // Panel Animation (Ellipse with dynamic color interpolation) PnlAnimation.setPaintRoutine(function(g) { var a = this.getLocalBounds(0); var normalizedGain = Math.range(smoothedLevelR, 0.0, 1.0); var currentColor = interpolateColor(lowColor, highColor, normalizedGain); // LED Effect: Outer gradient shadow for LED glow effect g.setGradientFill([Colours.withAlpha(Colours.white, 0.5), a[2] / 2, a[3] / 2, Colours.withAlpha(Colours.black, 0.2), a[0] + a[2] * 0.375, a[1] + a[3] * 0.375, true]); g.fillEllipse([a[0] + a[2] * 0.05, a[1] + a[3] * 0.05, a[2] * 0.9, a[3] * 0.9]); // Inner LED glow g.setGradientFill([Colours.withAlpha(currentColor, 1.0), a[2] / 2, a[1], Colours.withAlpha(currentColor, 0.4), a[2] / 2, a[3]]); g.fillEllipse([a[0] + a[2] * 0.125, a[1] + a[3] * 0.125, a[2] * 0.75, a[3] * 0.75]); // Center highlight g.setGradientFill([Colours.withAlpha(Colours.white, 0.4), a[2] / 2, a[1], Colours.withAlpha(Colours.white, 0.1), a[2] / 2, a[3]]); g.drawEllipse([a[0] + a[2] * 0.125, a[1] + a[3] * 0.125, a[2] * 0.75, a[3] * 0.75], 2.0); }); t.setTimerCallback(function() { var GainLeft = GainMaster.getCurrentLevel(1); var GainRight = GainMaster.getCurrentLevel(0); var peakLevelL = GainLeft; var peakLevelR = GainRight; if (peakLevelL > curLevelL) { curLevelL = peakLevelL; } else { curLevelL *= DECAY_RATE; } if (peakLevelR > curLevelR) { curLevelR = peakLevelR; } else { curLevelR *= DECAY_RATE; } // Apply cubic interpolation smoothing smoothedLevelL = cubicInterpolation(smoothedLevelL, curLevelL, SMOOTHING_FACTOR); smoothedLevelR = cubicInterpolation(smoothedLevelR, curLevelR, SMOOTHING_FACTOR); PnlAnimation.repaint(); }); // Set the timer t.startTimer(SPEED);
-
@HISEnberg thank you
-
@HISEnberg Excellent!!!!
-
@HISEnberg Thank you very much. Very realistic!
-
@HISEnberg it displays a bit better if you add a velocity modulator to your demo source:
HiseSnippet 2223.3ocyYztaaibjx1LMV24hbGtCs+bQPK.cNcNRx1WZpg6YGIYagZaIHojqAAFFqIWIsITjDjKsi5g7l1ezGg9FjNyt7ikVJNN9b7EhDZtyNyryW6ryrpanuMKJxOznzxClFvLJ80l8m5IF2XLk6YztoQISSWliwylFPihfOJUZw8woJs7RFxm+2O+LpK0ylkCxv3E9ba1g7IbQNzt67O4tt6QcXC3SzvdicZa660v20OFDiEMqZDPseCcD6XJh1BlFktWKGtvOrufJXQFkV5Y9NS6O1+BOE9ufGwOykgCpYzGXjB7d9tNnDiPMZLl65zMUciL.EqatxunR4+Nyi3N7L34FgGHmfjSgt8nzBEEuEKHd0zEupZh2bDoRZhzRJQ5aL6aGxCD4yfxyWY11SvBGRAyttnnv0XgsWwrgOfgmXsIz2v1KDFjQgUspUqPfWqtU4xO9wjsydHG1pIY2iaeztCZ24XsIPzFLlGQf+MgFDvbHBehXLibDMBXKAiIHS7chcYUHmEKHbAw1O10g753HAgFQXzHt6TjQmwHgrf3v.+HEe.NRndSI9.CCICi8rEbeOhkjeT76JjiZ2rMgcNnQUHLg8ZqtBJ6XjTXYH7AViyogDAYaRKuQbO1Z1gLvcHQnyYulYKr.0cEMb654tqGehj+.Yo1qQLQC+IA9dv.qGpizCWcKc5QUNQ62lH2zfz1Z3PbsdnZFDGIYoD1rUice4o81cPKfnpq8zsHfAoIylNkzCD2Tz5eTmNCNn8w6e5d61XPmd.x0H+HPvS1TRwd72BltnI9fIi6MBjG23LhO3k8GzpWq9s6e5fCf+dPmCaJWspZzNdJJerHvgJINcg61pEhbsMArQwFHnQbXHXLHu.wKZkxgrQD63vCAug6gILtHzdEfpDSlybHnvT4TIW1CAKHY+m2VIeQjg9gZR8JkQefKfy9wbojky4KOykXbS1PH.gHtvGBQcgcdRVywsGA9p3sTSoq+EXhIzCqGIfNZqGxErIpzVZQFi4iFecHodRXA2yEElrf9bwfIYiEHBUjbsBA17BoYVk7qqTl.Ot91T2DfvpcDEh.CodiXVJXUPkF1nuVUboPJBYh3POhRBhVaB+syg8.tuKyyeF2tnkISRmUzsQraqirUjfFhaX8bt8jdIOI+.wB3JrmPNbUxiHIzAek8g05.B0yfrptt0k5wbI4Y.rZ45xChXjK3hwDmodzIftKCPJZAfLOEbrQLQWXatnmer.rGVo1CqQY5JFPRAkD1rFgABGh59y7i8bhrxTODIO+vITW9+l4HSnVvrTbuxrlGjda0V0z.v4ELI+nRdbZkKsnpvRjg3dPHYfJi1emzIFS0MJj5vwrAQioN9WH25fXMBXMgIQUQ8HzvreB16Am7a8pz3NzBuqavXpUFjwvNCTk1b0JD5qpeB4wj53Wqq9Rwx477gY4YtPUDHKqKYY0SfPFImeD.a8mrIBrlB35Z.EgwrSRMoiVaHH3IAFVu5xbo5bXhBVBBOsR9DO8jBV11ddrbK2mfIS2Eq7+EsX0N4SwZUjaUWaiYr+WWiQs5ywZj.LAEkQe8zAEMHMXXvpLtzE9+uonnM9MYSlgc0tJihSH8haSiRERc0d52guJKPCfrJlFTW2yfX57DLP9krc93V2CYCwBfxKLQVLixCKyZXUa0sHjBzzCs0WMQx5DSoIfQeS1A4oKpNSyPnWBBxUHgC7gDKMN7OxqiHUWvG8hKxwdK47uivbgjzyC4GssV4UIXKeO6R2Sao6Muktm9R26irz8l+RmFYuaPf6T0oiW5rzrB3jnNScRy6.0B3TIW6qLSMiqt0rbs20fq8x4Zu4xUIaKbDHTNOdBHTgMACakcUzmIjMHHjknCgw34zx.YKYQlqtUVgC9dG6KXcf.5x+Z4kKCNsKO0vgycNrl8PeWWfmyaZ0pcEDZ4EO4LFj3SVhYFhPyWE6ny7C2QmdCm1pVHzPz2qsGWzIf48gZC0HouC3qm2tIUPw1.SfA3EvBEbTDJ0jcNzSspovkMaxhdivOPhaRyJFk9CB4rqj1xHVgiAGZL7OZp6tLdqdq5S0GLlgaVyg7xczpXE.eu2+eLdONQNXDZ0GofZLa+qPmypt3J1NsLcSV6cE5gECM8h3ho52wvsVO1WWQ7aL6xE1imuLtvbjQvu84PFStYhULUkgkKfKYt2+5N3ZHte10BwmD3x1Oc4+Zy7NbuhaGxvnIykVvL8KbGwX8Pr4b+Qs8NGB76B4mBurQdwqsVV6p0xkt1QBxZw+hNZ8aMkl4uzERoq+Kag7AlPZyemDQUGjifd9B4PNZyiimzGxvZy.wCZWvEOIpzB3YFpwUwwnPzGZEVN38vSxj0vwkRlrV5j5lguWYF9JyegdNSdAVRKv2KGC80MgrOCZRAsO0tMt.3fq8E.2wV.hv.nu2H7RBqoy4KMW8h4ZDwdEQWAp.Vn5sGndZ3c+cRAVWGHDJTfYv3Bb5Ht1Qo+2etkGEbz8Yf13zIxFTVz1oao5FCUPJ2ETSmvbv00Ae.MzA7K1WU9uktd4+9H2E989bcW3Kc81Lb0h2cWYEexVy4dxxBcm4mU4AIme1BNXyEppKKq8PZrqHEZwsYG464GL12iWH.nGCxNLZDqPb0bUtcEBncwbHe2N8XtLZj1Vu+xNGx8XzPvlwtg4zp8I+SZLWe2e1TItDL2.4yjO7lExkTBTYyW.NIab0UoISGRxTmZebo84QrATo3n68vpcPhzyaYyOi4Vzw.4USVSIOjsKT5uZVei0J9bdG30ve.+7oMd8f0G2w3VyidqT.8hWqBnu08j27houiyiAGr7k0dfqRb+Slvgc0IR2M42e+8cQUT2EqwDpcn+o1pap.SkdeIDPu8j+v3KCcfAiI0Lj2dgtgcBb.8o11EY0LDV+lR352TB23lR3l2TB+oaJgO4lR3e6iSHV+ztwB+jqiApiraKUt7RpRHkaYL9+PAXm0I
-
@HISEnberg said in Free LED - Activity Indicator:
The snippet works for me, but when I incorporate this into my project, and assign the reference to my own simple gain processor, the LED doesn't illuminate. I'm already using one timer, but as far as I know, you can have multiple, and can confirm your timer is running? I'm using a sampler as my source, but am guessing that isn't the culprit.
Any idea what I might be doing wrong?
Thank you.
-
@clevername27 Interesting, the timers aren't named the same are they? Can you post a snippet?
Possibly too, there is a certain weighing factor that needs to be incorporated. If the max dB you get in your gain is less then -6dB, it won't illuminate very much (or at all).
-
This post is deleted! -
@Lindon Thanks this is a great suggestion! I agree it is much nicer display
@clevername27 You can also play around with the variables. Decreasing the smoothing will cause it to react faster, as will decreasing the speed. I recommend trying Lindon's version here.
-
Hey I just got around to looking at this snippet. I have a suggestion/optimisation.
Instead of using a timer and all that fun, use the peak meter floating tile.
-
@d-healey Ah it took me a minute to follow what you meant here, but yes it would be better in this scenario to do the LAF on the peak meter floating tile. I designed this with the idea of having any input (modulator, midi event, etc.) triggering the LED so I think the timer offers more flexibility.
@clevername27 Here is another version where it's mapped to an LFO. I included a few knobs to control the parameters (
Speed, Hysteresis, Decay, Smooth
) so it should be a bit more user friendly. You should be able to combine this with the first version in order to continue controlling the gain.HiseSnippet 3114.3oc6arsaabbcok1Fa5bwIMAon.EXfQefxgklWjrrpganL0ESDIKUREmj5ZDLb2gja7xc1tWrLSQ.xeP+EJPeueC8CHOj25qs+A8k9b64LydYFwkTzJNNNEkvll6LmyYN2lykYVeb.2hEFxCLJU9jo9LiRutY+odQi6Ll53YzcGiR+DyCX1MMt2TeZXHy1nToU1GmqzUV0P74e8g2i5R8rX4CYX7PtiE6.mINQ4idb6Oxw0cOpM6DmIJPud6tVbuNbWdLvGqXV2vmZ8D5H1CnHXWxz39zvwFktg4VarQCp8vMG1nUisFXOzh0Zy52Z8MaR231CGtY8Fq2xdygqCL4OYWamHdP+HZDKznzp2iaOs+X9odxE3gNgNCbY3CML5Cqrb383t1nHhiZzYriq8woJnPCfnGmqtVQptdWyCcrcxFOWscMwDjbLTUfktjN6shF60Pk8pqvdEvRkTXoUkrzaa12JvwOJeFjetpYWuHVvPJXmTYEIrFW5adGyNb.BunZSnOgsW.7PFFUZUudUB70Z2ob4adSxcy9PNX2cHa+ftGt8IcO5AJSffcxXmPB7mITeelMIhShFyHGRCAxRPmHxDtcrKqJYPbDwIhXwicsIeQbXDgFRXzPG2oHgFvHAL+3.ednjN.EITuoDNPv.xvXOqHGtGohfdT72UIG1cmtD1SAIpJgEYUaMAqitdAkA+MXMdJMfDQtKYWuQNdrZVALvbH.3nAeAyJphTb+HO9fPETN1ycaOmIhkAvNUsMhE0gOwm6AOT45p.ccfN4n+DuA2eJpBXgftYd3qA0LDn+DNH5KBYIDyhnOCzfKBODfYPaGlEc5hPS.v0k5qCEFUzLMj65xOUgTnQOw9eWhHPCRpcGND01WWNCBiNCbvdGcnzvxCZnhX1nUtN.CIGnDNgzINH.XQxCotwrvxArQDq3fC.uB2C.BUuV86nMXO0ACEpPl8rfqMSFN3BtCaH3JQhNkCNytvdTPGDPbvMR9bomI.1mwiIVTOh0Xp2HlXWgkH7GrcwS7ne.2mEDMkvDAJRTFfxDCShJOU+KTUT45NQrIxfn4ZuwNiFuLXzLUg8PZfCEB8DBLjWT.X+.2kASIgtN1rfvxn4vFs08fsJ.QafBNNnTk33MZOpUjX8pWq4Fx4Fm4HexX3eFCQYS0YBTS7IaknC6HWYRGpq6.HSfPEpsenrimKply13y8zlOgBUrR8QqB9QfGvZk+ikIvmhYHAH2o7WUt7RskrVHNqXgR4zJEyGqsX4RtUsXYRN24IOyp7A6B4WQpHfhbCTW2XsEKZoALlqXowJmmHglz4HQ3Tmq.k3RbHE1nGvi8rkhBrr3zQ0BinAQhP0UDvt1cH.67w91naItAJBmKgNNSl.aifYfrIKTEHi8MeMfBqeNJ.Q7vhU.hoNOEvY1i8bZKShFOWAQkEPA4r7Yd7JlH5QEHvSUQvjpjgBWr0HR9zkaQcSFKydgA0pHGqJxtUQQHwzEvhhC7HxvNg0l37rBHtP5NKSYEOvwpqZjzJBu.H6tm8KJ9RPQxGPp.zDT5hGWCT5InA+J6GUZA.zLaj0jbM3SbL0i4RxKQnrVjWvlbLjgKpGONBjuJoxWkQo7NFSjBLMriNDssGfxx8vMAgUDUfg.Aqy9rHgqtGOXB004KAOcoOxv.9DwLXRwIoIEyns6PNPcsjp3xrcTTfCTHFqRpNIAXQxyhvHI6pHKXEEFKo5jTNPvTIJYkbm6cTJgKxxdFnplwHUOazNkE9PnrPbUSwNe4SK9TjTNS3rjBPZFxhb6E+nZdhzpyH.JqOVLrrXleM4nXrJmQATaGrBjvwTa9ohvCHTi.RSXBPEHOB8K1OA38f1jp7nzsHm5DMdaW+wzJYiLFxbidvarVUB8QMeL4ljl3uZI+kfhE7Y9TbfKDa.oXSAEq+XXKffvX3lVatANXC4fsTFLJHl83DmkQ0FBr8tttN9grJO5rDodAzPNVB.aUMehsdrhRsqmGSQoMfh8.v8Jv8ZoThp1bY..ccXiG+bn+zIV8ZqOiAYIUOMZVf9IYvDPjVgVoOnph5vPOWgSpK72uKtTq+cQcLC0Zr.8gc.8zWj5ipjlhn4eURpYLX.50.67wVJJeyaTNBUIhpFxxGlE9UM5KB+ArgXug4crLSDOHKLgngSOT4uXjxBfi33ynOIq6hzEUknY.zKA.wJjPAmgjJJT32nzZyGTTItoRH9QsKnbZHMMeEg4FxJD3ab27JSR.V78r7SOE9o2xyO8T4mdmC+zqP9QohXkd2VTNFALUyEyhRwLCQ6sDDsWNQ6M27VZUGDv7whCfroDgi7MtY1gVfNxISKaQTTlQV3v7PgKiW9BWTbI6KJDJqR5xEUxsRcsOfGwNBHOT95UfxfHmcpgCKbtNoMYFT3zxUaAHVwKdx.VfRwyB.MJsp9ArYN+CXS87+rjETq.H2qqmSzQ9Lu4cpfFIUgimOXBWAfFINJt2L4n35K5d1vw1nzaYp0gngfwSOKz+9e4a+PikfHW0LqeLMB7292U9lkh.kMSamQC+u9tkq0dowWzEgF9j+59+Sk0eUI9uQB9mfGrf.8KaJ9cCcoG+.8uQMJsgYqaUS+ySO5fG9r3sZswuczlcDOCeM7Cvo1pyWbRqwGYrLL9qiL9AC46Ev9C5q9Z+92pswG2cGjALJUJwpdr7bXbPmnR6vdpiESdJqWwbGV3Sh39FkdsrlufeqKxhVADK7aZptky3YpB8T0GFyvP74i7YsUNlFT.Vu4VquU8FasQKi7YjSb6FsZsws23VnpHikLWZewbl5qYs0XpH1yhvkPA3kaIT8TmG42usj7W1LAPURekkwGddT9SaOQ8lJp0dBUQw6.yZa6xNlG5HLJYyzMgidMSI8sYCowtQOT2aUrUYIzAJaVlCi1dP1BJgyX9tTErKZdNSNsO0wFzmkLK8mU7rLK86fm7Sig0EH06Y9PFzxrSzTkCQUiKt5xskJmUZqYIbRDv2xDySgfFy7rlZnYe9Genl8Ym4Ze9ksCiGNzAf0zjb+uTWVtlo9YAa3SCnSXfeaWgCY9haL6kmbMyLDUuKGQAcY2sf1Enfo+8.Fbp5Mh8B6BdVVV7sMO1IxZbw73kJfGgXbeeviIWK1aXJaCNmAW0buO8kvcfc4rawzYhuKa+zk+0MyubgEbWlfSGykpol9D4Vn7vwEbamc8dJjj3XnFvfypjWYokxFKVJWco8DD2r1qzdquioPM+pNSJL8uZyjWyDJw3GHVTdBliNjFEHBE+f3I8gRQrX.64A08f0cW5RXExxmqiOiLQelms3g+C7IYxF3ykRlrQ5jFyt09matuKe.0MWY.UpApCl7dt+EISmm.fjAPiEry+aW12hA+k9sX36m89uZ7hGrr9m+zYLGguDcQ0RM71R1zDKOHQSclBENWF6dNXe9A374UQnz+.5UzM2op8ep8mPeJaHOXRRSCYT5.1HXMUG4DFTqU+odVpNf8SOx.ces2s8Abt+tdX4e1pD43wzPrY6PVjFY.xdBWlArCTm2SzRdMxiGvjMvqNdm3vH9jTAP7d3zOh4KZPpziLu050T5.C9p0QuXd94ovjyYeykVZuTzSHyji9DO+doqtbdoK9cLx34hiybB+Q.GuvJTW4+oqP8kclx2WJhW0D27JdYYDB36YltYlrOCRGNaPuK3K12xmR7HqHfENIf5EhuKWMzBRwl3bBzsYn1nmAilEhQS8J3ih8zIsbHMnPUwdfpPAtK2NcvlpCBEXoQL3YMJcnyyTagUFUtOCjb6iBs.ECpm0BRG6FxD0V1PEw7gapN78oA1mMsvYqrX0kKB4O5d8F+QPC5Z4XtRJOJ69bWnsPWNLRZOOhSQJcT8sdGx839i4dNZF5dLHhwnQLM+mBEnsihnp40e218XtLnZ.0SM4.nJXZ.nmXWPcQim62F0BsW+LSI6JtXie3avJoyhxYGBVR3xhNSrykC+3Pl7H5zrX34CnVpFFSxxY.yU2X.wWSVSAM146vog+Byp9+Sv+BLNEjr3U6CT38MgjVMIBSI4GFa4KipkdYrFSnVA7OO48nECOdYwHfb6I9O1vULODelTv0fMARt94VV5jZFDadQQr0EEw0unHtwEEwacQQbyKJh297QDq8Y6Xn6X4dCnFvi2UFqtTVS4kVw3+hOyOXl
-
@HISEnberg Bruv…thank you.