Please try with my latest changes. I think I fixed it.
> On Dec 24, 2019, at 12:03 PM, Carlos Rovira <[email protected]> wrote: > > Hi Harbs, > > the problem seems to affect the Basic DataGrid if you check DataGridExample > you can see the error too. > > In CruxGitHubCommitLogViewer the problem is: > > Activating JSStageEvents > [WARNING] getStaticConstantsByConvention :: the reflection target > mx.rpc.http.mxml.HTTPService was not Compiled with default initializers > enabled > InjectProcessor set up [Inject( "configuratorService" )] on Bean{ source: > [object Object], name: configurationDelegate } > InjectProcessor set up [Inject] on Bean{ source: [object Object], name: > configurationController } > getProject executing in ConfigurationController via PostConstruct processing > InjectProcessor set up [Inject( "commitsService" )] on Bean{ source: > [object Object], name: commitsDelegate } > InjectProcessor set up [Inject] on Bean{ source: [object Object], name: > commitsController } > InjectProcessor set up [Inject] on Bean{ source: [object Object], name: > commitsController } > RangeError: Maximum call stack size exceeded > at Array.concat (<anonymous>) > at crux.view.MainContent.goog.events.EventTarget.fireListeners > (/Users/carlosrovira/Dev/Royale/Source/royale-asjs/examples/crux/CruxGitHubCommitLogViewer/target/javascript/bin/js-debug/library/closure/goog/events/eventtarget.js:271:34) > at Function.goog.events.EventTarget.dispatchEventInternal_ > (/Users/carlosrovira/Dev/Royale/Source/royale-asjs/examples/crux/CruxGitHubCommitLogViewer/target/javascript/bin/js-debug/library/closure/goog/events/eventtarget.js:372:27) > at > org.apache.royale.html.DataGridButtonBar.goog.events.EventTarget.dispatchEvent > (/Users/carlosrovira/Dev/Royale/Source/royale-asjs/examples/crux/CruxGitHubCommitLogViewer/target/javascript/bin/js-debug/library/closure/goog/events/eventtarget.js:196:35) > at > org.apache.royale.html.DataGridButtonBar.org.apache.royale.events.EventDispatcher.dispatchEvent > (/Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/projects/Core/src/main/royale/org/apache/royale/events/EventDispatcher.as:94:32) > at > org.apache.royale.html.DataGridButtonBar.org.apache.royale.core.ElementWrapper.dispatchEvent > (/Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/projects/Core/src/main/royale/org/apache/royale/core/ElementWrapper.as:370:44) > at org.apache.royale.express.beads.layouts.DataGridLayout.layout > (/Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/projects/Express/src/main/royale/org/apache/royale/express/beads/layouts/DataGridLayout.as:225:11) > at > org.apache.royale.express.beads.layouts.DataGridLayout.org_apache_royale_express_beads_layouts_DataGridLayout_handleLayoutNeeded > (/Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/projects/Express/src/main/royale/org/apache/royale/express/beads/layouts/DataGridLayout.as:105:4) > at > org.apache.royale.express.DataGrid.goog.events.EventTarget.fireListeners > (/Users/carlosrovira/Dev/Royale/Source/royale-asjs/examples/crux/CruxGitHubCommitLogViewer/target/javascript/bin/js-debug/library/closure/goog/events/eventtarget.js:284:24) > at Function.goog.events.EventTarget.dispatchEventInternal_ > (/Users/carlosrovira/Dev/Royale/Source/royale-asjs/examples/crux/CruxGitHubCommitLogViewer/target/javascript/bin/js-debug/library/closure/goog/events/eventtarget.js:389:27) > InjectProcessor set up [Inject( source="commitsController.commits.commits", > bind="true" )] on Bean{ source: [object Object], name: null } > InjectProcessor set up [Inject( source="configurationController.project", > bind="true" )] on Bean{ source: [object Object], name: null } > > > El mar., 24 dic. 2019 a las 10:33, Carlos Rovira (<[email protected]>) > escribió: > >> Hi Harbs, >> >> thanks for taking the time to look into this and sorry for my delay in >> response, as Piotr exposed I'm as well on Christmas time here in Spain, so >> with few time, although hope to be around here from in some slices of time. >> >> About the problem, I built all and check all Crux examples: >> >> >> - examples/crux/CruxQuickStart -> This is now working ok >> - examples/crux/CruxQuickStartBasic -> This is now working ok >> - examples/crux/CruxGitHubCommitLogViewer -> This is not working, not >> retrieve the GitHub data and even the DataGrid seems to be not laying the >> header right. Can you take a look at this one, maybe something was missing >> for make this working again. >> >> >> I saw 2 test failing, but just see you fixed right now so I'll try to >> rebuild again to check that part. >> >> Anyway good work! :) >> >> Carlos >> >> >> >> El mar., 24 dic. 2019 a las 9:10, Harbs (<[email protected]>) >> escribió: >> >>> 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 <[email protected]> >>> 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" <[email protected] <mailto: >>> [email protected]>> 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 <[email protected]> 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, <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 < >>>>>> [email protected]> >>>>>>>> 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 <[email protected] <mailto: >>>>>>>> [email protected]>> 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 <[email protected]> >>> 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 <[email protected] >>> <mailto: >>>>>>>> [email protected]> <mailto: >>>>>>>>>> [email protected] <mailto:[email protected]>>> 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 <[email protected] >>> <mailto: >>>>>>>> [email protected]> <mailto: >>>>>>>>>> [email protected] <mailto:[email protected]>>> 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 < >>>>>> [email protected] >>>>>>>> <mailto:[email protected]> >>>>>>>>>> <mailto:[email protected] <mailto:[email protected] >>>>>> >>>>>>>> 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 (< >>> [email protected] >>>>>>>> <mailto:[email protected]> >>>>>>>>>> <mailto:[email protected] <mailto:[email protected]>>>) >>>>>>>> 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 < >>>>>>>> [email protected] <mailto:[email protected]> >>>>>>>>>> <mailto:[email protected] <mailto:[email protected] >>>>>> >>>>>>>>>>>>>>> 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 (< >>>>>> [email protected] >>>>>>>> <mailto:[email protected]> >>>>>>>>>> <mailto:[email protected] <mailto:[email protected]>>>) >>>>>>>>>>>>>>> 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 >>>>>>>> <[email protected] <mailto:[email protected]> >>>>>>>>>> <mailto:[email protected] <mailto:[email protected] >>>>>> >>>>>>>>>>>>>>>>> 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" <[email protected] >>>>>> <mailto: >>>>>>>> [email protected]> <mailto: >>>>>>>>>> [email protected] <mailto:[email protected]>>> 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 >>>>>> * >>> >>> >> >> -- >> Carlos Rovira >> http://about.me/carlosrovira >> >> > > -- > Carlos Rovira > http://about.me/carlosrovira
