I realized that the reason bubbling is not working is because EventTarget.getParentEventTarget() is relying on parentEventTarget_ which is generally not set in Royale.
Royale already has a parent getter for objects which have hierarchy. I changed the method to simply return the parent instead of parentEventTarget_ which will be null if there is no parent or its not an IChild. Ideally, the change should be in the EventTarget code, but I’m not trying to touch that. I overrode the the method in EventDispatcher. If the event does not have bubbling set to true, none of this should effect anything. If there are any apps which have bubbling events and are relying on Royale bubbling to be broken, they might break with this change… ;-) Royale should now support event bubbling out of the box. :-) Harbs > On Dec 24, 2019, at 9:01 AM, Alex Harui <aha...@adobe.com.INVALID> wrote: > > I took a peek at the commit and made some comments on the commit thread that > may help. > > HTH, > -Alex > > On 12/23/19, 2:24 PM, "Harbs" <harbs.li...@gmail.com > <mailto:harbs.li...@gmail.com>> wrote: > > I read through what you did in JSStageEvents. That’s really quite > ingenious. Well done! :-) > > I think we could use a similar approach for an application bead to support > full event bubbling without modifying ElementWrapper and HTMLElementWrapper. > > I still have no idea what broke though. > > Let me know if I should revert the changes until someone has the time to > look at this. > > Thanks, > Harbs >> On Dec 23, 2019, at 10:59 PM, Greg Dove <greg.d...@gmail.com> wrote: >> >> Iirc it was dispatching capture phase events that was 'difficult'. I think >> I had to override something and undo something in Royale that was switching >> off goog support for that. It was only needed in the JSStageEvents >> emulation stuff iirc. I have no idea what the issue is, but that is >> probably what I would look at first. Have to go now... I can look at this >> if needed but not for a few days. >> >> On Tue, 24 Dec 2019, 09:38 Harbs, <harbs.li...@gmail.com> wrote: >> >>> AIUI, for bubbling to work automatically, setParentEventTarget needs to be >>> called to construct the hierarchy. >>> >>> Maybe we should have a bead that takes care of this (on addedToParent or >>> something) for applications which rely on bubbling for non-browser-native >>> events. >>> >>> There is a dispatchBubblingEvent in HTMLElementWrapper which forces the >>> event to bubble up for all events, but it’s JS only. We could add a method >>> for SWF for compatibility. >>> >>> I just tested dispatchBubblingEvent and that makes the alert appear. >>> >>> None of this explains why it worked before my change, though... >>> >>>> On Dec 23, 2019, at 10:17 PM, Greg Dove <greg.d...@gmail.com> wrote: >>>> >>>> Harbs, I can only check Crux in 4-5 days time. >>>> From memory I did set up something specific to make either capture or >>>> bubbling work, maybe that was for the 'addedToStage' event emulation. I >>>> think one of them (either capture or bubbling) was not working by >>> default, >>>> or did was not easy to enable by default. >>>> >>>> >>>> >>>> On Tue, Dec 24, 2019 at 9:13 AM Harbs <harbs.li...@gmail.com> wrote: >>>> >>>>> Nope. Didn’t figure it out. >>>>> >>>>> It looks like Crux listens on the ancestor and is relying on bubbling. >>>>> >>>>> I’m guessing bubbling is not working, but I have no idea why that would >>>>> have changed with my commit. >>>>> >>>>>> On Dec 23, 2019, at 10:06 PM, Piotr Zarzycki < >>> piotrzarzyck...@gmail.com> >>>>> wrote: >>>>>> >>>>>> Harbs, >>>>>> >>>>>> I feel like Carlos has started his Christmas time ;) I'm glad that you >>>>>> figured it out! :) >>>>>> >>>>>> pon., 23 gru 2019 o 21:01 Harbs <harbs.li...@gmail.com <mailto: >>>>> harbs.li...@gmail.com>> napisał(a): >>>>>> >>>>>>> The asconfig file did not include the necessary metadata. Fixed that… >>>>>>> >>>>>>> OK. I’m not getting any errors, but UserForm is dispatching an event >>> not >>>>>>> listened to by anyone. >>>>>>> >>>>>>> Where is the listener supposed to be attached? Maybe it’s listening to >>>>> the >>>>>>> wrong object? >>>>>>> >>>>>>> >>>>>>>> On Dec 23, 2019, at 9:35 PM, Harbs <harbs.li...@gmail.com> wrote: >>>>>>>> >>>>>>>> I’m getting an error that UserForm.user is null. >>>>>>>> >>>>>>>> I have no idea where that should have been set, and I have no idea >>> how >>>>>>> my commit could have possibly effected that. I don’t see anything that >>>>>>> would initialize the user variable. >>>>>>>> >>>>>>>> If you want my help on this, I’m going to need some direction. >>>>>>>> >>>>>>>> Thanks, >>>>>>>> Harbs >>>>>>>> >>>>>>>>> On Dec 23, 2019, at 9:28 PM, Harbs <harbs.li...@gmail.com <mailto: >>>>> harbs.li...@gmail.com> <mailto: >>>>>>> harbs.li...@gmail.com <mailto:harbs.li...@gmail.com>>> wrote: >>>>>>>>> >>>>>>>>> I fixed this, but I have no idea what Crux is supposed to do. >>>>>>>>> >>>>>>>>> What am I looking for? >>>>>>>>> >>>>>>>>>> On Dec 23, 2019, at 8:30 PM, Harbs <harbs.li...@gmail.com <mailto: >>>>> harbs.li...@gmail.com> <mailto: >>>>>>> harbs.li...@gmail.com <mailto:harbs.li...@gmail.com>>> wrote: >>>>>>>>>> >>>>>>>>>> I can’t compile Jewel right now. >>>>>>>>>> >>>>>>>>>> I’m getting an error: >>>>>>>>>> >>>>>>>>>> [java] >>>>>>> >>>>> >>> /Apache/royale-asjs/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/IconButton.as(104): >>>>>>> col: 13 Access of possibly undefined property classSelectorList. >>>>>>>>>> [java] >>>>>>>>>> [java] classSelectorList.toggle("icon", (_icon != >>>>>>> null)); >>>>>>>>>> [java] ^ >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> On Dec 23, 2019, at 7:17 PM, Carlos Rovira < >>> carlosrov...@apache.org >>>>> <mailto:carlosrov...@apache.org> >>>>>>> <mailto:carlosrov...@apache.org <mailto:carlosrov...@apache.org>>> >>>>> wrote: >>>>>>>>>>> >>>>>>>>>>> Compilation is ok. The problem is that example is not really >>>>> working. >>>>>>>>>>> In that example you should be able to fill the form and push the >>>>>>> button. >>>>>>>>>>> After that a JS Alert should be show with the ID of the user >>> record >>>>>>> saved. >>>>>>>>>>> That Alert is not show anymore. >>>>>>>>>>> If you revert locally that commit and recompile Core and then the >>>>>>> example >>>>>>>>>>> and run you'll be able to see it again. >>>>>>>>>>> We have a client complaining about the app stopped to work today >>>>>>> since they >>>>>>>>>>> are using Crux. >>>>>>>>>>> After investigation I was able to trace the problem to that >>> commit. >>>>>>>>>>> >>>>>>>>>>> Thanks >>>>>>>>>>> >>>>>>>>>>> Carlos >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> El lun., 23 dic. 2019 a las 17:59, Harbs (<harbs.li...@gmail.com >>>>> <mailto:harbs.li...@gmail.com> >>>>>>> <mailto:harbs.li...@gmail.com <mailto:harbs.li...@gmail.com>>>) >>>>> escribió: >>>>>>>>>>> >>>>>>>>>>>> I compiled CruxQuickStartBasic and I don’t see anything wrong. >>>>>>>>>>>> >>>>>>>>>>>> Can you give me more clues? >>>>>>>>>>>> >>>>>>>>>>>> FWIW, I used Ant, is the problem specific to Maven? >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>> On Dec 23, 2019, at 6:26 PM, Carlos Rovira < >>>>> carlosrov...@apache.org <mailto:carlosrov...@apache.org> >>>>>>> <mailto:carlosrov...@apache.org <mailto:carlosrov...@apache.org>>> >>>>>>>>>>>> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> Hi Harbs, >>>>>>>>>>>>> >>>>>>>>>>>>> seems recent changes break Crux library >>>>>>>>>>>>> (commit: f50c9990a3190cf681364905525656984ab2e9c5 - Cleaned up >>>>>>>>>>>>> ElementWrapper and HTMLElementWrapper) >>>>>>>>>>>>> I'm trying to see what could be the problem. I suppose that is >>> the >>>>>>> change >>>>>>>>>>>>> of HTMLElementWrapper now extending ElementWrapper. >>>>>>>>>>>>> Tried to change one for the other in Crux library, but with no >>>>> luck >>>>>>>>>>>>> I'm using /examples/crux/CruxQuickStartBasic to test >>>>>>>>>>>>> Can you see what could be wrong? >>>>>>>>>>>>> Thanks >>>>>>>>>>>>> >>>>>>>>>>>>> Carlos >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> El dom., 22 dic. 2019 a las 17:24, Harbs (< >>> harbs.li...@gmail.com >>>>> <mailto:harbs.li...@gmail.com> >>>>>>> <mailto:harbs.li...@gmail.com <mailto:harbs.li...@gmail.com>>>) >>>>>>>>>>>> escribió: >>>>>>>>>>>>> >>>>>>>>>>>>>>> There is lots of what looks like shared code, so could >>>>>>>>>>>>>> HTMLElementWrapper extend ElementWrapper? >>>>>>>>>>>>>> >>>>>>>>>>>>>> Totally. Excellent idea. >>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Dec 22, 2019, at 5:46 PM, Alex Harui >>>>> <aha...@adobe.com.INVALID <mailto:aha...@adobe.com.INVALID> >>>>>>> <mailto:aha...@adobe.com.INVALID <mailto:aha...@adobe.com.INVALID>>> >>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> In a quick look at history, HTMLElementWrapper's override >>> logic >>>>>>> was the >>>>>>>>>>>>>> same as ElementWrapper's. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Maybe as you upgraded HTMLElementWrapper's logic, >>> ElementWrapper >>>>>>> should >>>>>>>>>>>>>> have changed as well but didn't? >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> There is lots of what looks like shared code, so could >>>>>>>>>>>>>> HTMLElementWrapper extend ElementWrapper? >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> My 2 cents, >>>>>>>>>>>>>>> -Alex >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On 12/22/19, 1:00 AM, "Harbs" <harbs.li...@gmail.com >>> <mailto: >>>>> harbs.li...@gmail.com> <mailto: >>>>>>> harbs.li...@gmail.com <mailto:harbs.li...@gmail.com>>> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> We found a weird bug with events and currentTarget. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I traced the problem to the following: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> The app loads both HTMLElementWrapper and ElementWrapper. The >>>>>>> lstener >>>>>>>>>>>>>> overrides in the two are stepping on each other. Here’s what >>>>>>> happens: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> 1. HTMLElementWrapper is loaded first. It replaces >>>>>>>>>>>>>> goog.events.fireListener with its fireListenerOverride function >>>>>>> (which >>>>>>>>>>>>>> calls the existing one when it’s done). >>>>>>>>>>>>>>> 2. ElementWrapper is loaded next and it replaces the existing >>>>>>>>>>>>>> goog.events.fireListener function — which was already changed >>> to >>>>>>> point >>>>>>>>>>>> to >>>>>>>>>>>>>> HTMLElementWrapper.fireListenerOverride with the one from >>>>>>>>>>>> ElementWrapper. >>>>>>>>>>>>>>> 3. When an event is actually dispatched, >>>>>>>>>>>>>> ElementWrapper.fireListenerOverride first changes the event to >>> a >>>>>>> royale >>>>>>>>>>>>>> BrowserEvent instead of a goog one. >>>>>>>>>>>> HTMLElementWrapper.fireListenerOverride >>>>>>>>>>>>>> is then called and where it expects a goog BrowserEvent, it in >>>>> fact >>>>>>>>>>>> gets a >>>>>>>>>>>>>> royale BrowserEvent. This causes the wrappedEvent to be the >>> wrong >>>>>>> type >>>>>>>>>>>> and >>>>>>>>>>>>>> messes things up down the line. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I’m not sure of the best way to fix this. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> * We could check the event type in >>>>>>> HTMLElementWrapper/ElementWrapper, >>>>>>>>>>>>>> but that’s just-in-case code. >>>>>>>>>>>>>>> * I’m not completely sure why we need this logic in both >>>>>>>>>>>>>> ElementWrapper and HTMLElementWrapper. Is there something that >>>>> can >>>>>>> be >>>>>>>>>>>>>> changed there? >>>>>>>>>>>>>>> * Maybe there’s some way for ElementWrapper to know that some >>>>>>> other >>>>>>>>>>>>>> class is installing an override? >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thoughts? >>>>>>>>>>>>>>> Harbs >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>>>>>>>>>> Carlos Rovira >>>>>>>>>>>>> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0 >>>>>>>>>>>>> >>>>>>>>>>>>> <https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0><https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0 >>>>>>>>>>>>> >>>>>>>>>>>>> <https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0>> >>>>>>>>>>>>> < >>>>> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0 >>>>> >>>>> <https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0> >>>>> >>>>> <https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0 >>>>> >>>>> <https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> Carlos Rovira >>>>>>>>>>> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0 >>>>>>>>>>> >>>>>>>>>>> <https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0> >>>>>>>>>>> >>>>>>>>>>> <https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0 >>>>>>>>>>> >>>>>>>>>>> <https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0>> >>>>>>>>>>> < >>>>> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0 >>>>> >>>>> <https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0> >>>>> >>>>> <https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0 >>>>> >>>>> <https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> -- >>>>>> >>>>>> Piotr Zarzycki >>>>>> >>>>>> Patreon: >>>>>> *https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=BPJwWOdHi1NDnDQ7vujOyeQNUInTpQDUQ%2FQ0isRcamc%3D&reserved=0 >>>>>> >>>>>> <https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=BPJwWOdHi1NDnDQ7vujOyeQNUInTpQDUQ%2FQ0isRcamc%3D&reserved=0> >>>>>> < >>>>> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852987537&sdata=abJP9qz96wpalZO2LidV9yth27gCABvHahThSnn%2FHxw%3D&reserved=0 >>>>> >>>>> <https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852987537&sdata=abJP9qz96wpalZO2LidV9yth27gCABvHahThSnn%2FHxw%3D&reserved=0>> >>>>>> <https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852987537&sdata=abJP9qz96wpalZO2LidV9yth27gCABvHahThSnn%2FHxw%3D&reserved=0 >>>>>> >>>>>> <https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852987537&sdata=abJP9qz96wpalZO2LidV9yth27gCABvHahThSnn%2FHxw%3D&reserved=0> >>>>>> < >>>>> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852987537&sdata=abJP9qz96wpalZO2LidV9yth27gCABvHahThSnn%2FHxw%3D&reserved=0 >>>>> >>>>> <https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852987537&sdata=abJP9qz96wpalZO2LidV9yth27gCABvHahThSnn%2FHxw%3D&reserved=0>>>*