From dev-return-7207-archive-asf-public=cust-asf.ponee.io@royale.apache.org Tue Oct 16 23:36:50 2018 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx-eu-01.ponee.io (Postfix) with SMTP id 4B6F9180649 for ; Tue, 16 Oct 2018 23:36:49 +0200 (CEST) Received: (qmail 74540 invoked by uid 500); 16 Oct 2018 21:36:48 -0000 Mailing-List: contact dev-help@royale.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@royale.apache.org Delivered-To: mailing list dev@royale.apache.org Received: (qmail 74521 invoked by uid 99); 16 Oct 2018 21:36:47 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 16 Oct 2018 21:36:47 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id D606618214A for ; Tue, 16 Oct 2018 21:36:46 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 2.999 X-Spam-Level: ** X-Spam-Status: No, score=2.999 tagged_above=-999 required=6.31 tests=[HEADER_FROM_DIFFERENT_DOMAINS=0.001, HTML_MESSAGE=2, KAM_INFOUSMEBIZ=0.75, KAM_LOTSOFHASH=0.25, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id HFAO9yjYTaDi for ; Tue, 16 Oct 2018 21:36:40 +0000 (UTC) Received: from mail-lf1-f41.google.com (mail-lf1-f41.google.com [209.85.167.41]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTPS id 64C9C5F418 for ; Tue, 16 Oct 2018 21:36:39 +0000 (UTC) Received: by mail-lf1-f41.google.com with SMTP id p34-v6so18158143lfg.10 for ; Tue, 16 Oct 2018 14:36:39 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=lSrjsz25WwHj+P888p2/YLb85gicWr9n0V4lXv5UN5o=; b=rj81oAKaNhlFH9w/7LjEK1LQnlDJjR4ewI9Ix+At7gUwdEm5MpxPNIhYRyRmeZDQ8y gf3IeJdtuBzU1iqSKiRiNxqfj6X3YbkVL7FpAdqjA/hxbtYmVPw3XF2s02YoJ1XBf/3R dPHElN5pto/VyU6LBljLKzQt50MewS5++VMq0sL46cvpjL5Km1+pEvPlqyLCVbxoLwcO dibR5/iG4Yl/8a/vnzmhRRnX3b8rIVvp9SW0PtOdeblU4wK1d3DEeqA9RQnRO/7HeH0M uKiKQOCnQBy9JTelLcvSITcTutbtAgAwTTueqC7s5oPIC0cbdx6UFCeGpg45bH83hE1g tXTg== X-Gm-Message-State: ABuFfoidIAyEub3KWbGTGK3u3+nc+zhE1Z+HDJ4vA1oSOBRQvWtfenao q3DDc0e3cH90zEmvp/M0zQQ6gb7dGyoxJyEdcTFXDMer X-Google-Smtp-Source: ACcGV63FAU9KSHNUPlU6v5/7TGSIP9l6dRAK+eNerX0Gq6XjKP9VmSfllu9OT1GO+skikSCaEYuwLsa+c0jm2IJpYZc= X-Received: by 2002:ac2:41d8:: with SMTP id d24-v6mr10854501lfi.138.1539725797086; Tue, 16 Oct 2018 14:36:37 -0700 (PDT) MIME-Version: 1.0 References: <88EB6E7E-7B96-482C-9464-E9681A4BA14B@adobe.com> <5D9B175E-F194-4532-94F7-E7C85DD8BF39@adobe.com> In-Reply-To: From: Carlos Rovira Date: Tue, 16 Oct 2018 23:36:25 +0200 Message-ID: Subject: Re: Proxy method calls with RemoteObject To: dev@royale.apache.org Content-Type: multipart/alternative; boundary="0000000000002fdb2405785f5936" --0000000000002fdb2405785f5936 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Alex, I'm starting with our simple MXRoyale RO text example and our Java sample. I just pushed a commit to easy change between the old example and the new MX RO test case, and enable RELEASE mode. When doing so and running it doesn't work. this is the output [Error] TypeError: undefined is not an object (evaluating 'a.length') hz (App.js:998:141) Yy (App.js:997:181) rm (App.js:971:266) tr (App.js:969:323) pq (App.js:239:887) R (App.js:166:1223) W (App.js:511:1288) pw (App.js:642:796) Gz (App.js:1045:726) create (App.js:908:164) start (App.js:909:229) C=C3=B3digo global (index.html:13) The additional compiler options are: "additionalOptions": "-remove-circulars -js-output-optimization=3DskipAsCoercions", I must to close for today, but I think it will be more easy to debug from this example than from my real world app that has many other things bundled= . Thanks El mar., 16 oct. 2018 a las 18:49, Alex Harui () escribi=C3=B3: > Hi Carlos, > > Are you saying you can see that the response from the server was received > by XHR in the browser? > > I can't think of anything that I pushed yesterday that would affect > response handling. IMO, the changes I made affected the call to send(), > but not the response handling. The other change would affect what MXML > elements were created. I guess you'll just have to debug into it. > > If it helps, there is a -skip-transpile option that is relatively > untested, but causes the compiler to skip over any transpilation and just > run the Google Closure Compiler on the js-debug folder. This should allo= w > you to add trace statements (actually console.out) to the .JS files in th= e > js-debug folder and help you debug. If you are only modifying framework > files and not the application files, you don't even need -skip-transpile, > since the framework JS files from the SWC that are in js-debug are not > overwritten if they already exist. > > You could also revert back until you get a version that works, or compare > the current js-debug against working js-debug, if you still have a workin= g > copy somewhere. > > -Alex > > =EF=BB=BFOn 10/16/18, 3:57 AM, "Carlos Rovira" = wrote: > > Hi Alex > > It seems that latest changes makes MX RO not work in js-release mode. > If you remember I could by-pass this problem setting up > -js-dynamic-access-unknown-members=3Dtrue > compiling my Application, but now testing js-release it's not working > at > all, since we are in release no traces are shown > calling the operation in the backend just fails silenty. > > I only can say that call is done since I can see traces on my java > server, > and enabling XHR in browser I can see the request is received but in > Royale > nothing happens. I think this in an important issue (in the end it > will be > blocking for me to go to production), do you know of something done i= n > the > latest changes that could make this fail now? > > Thanks > > > > El lun., 15 oct. 2018 a las 21:17, Carlos Rovira (< > carlosrovira@apache.org>) > escribi=C3=B3: > > > Hi Alex, > > with your latest fixes all is working ok :) > > thanks! > > > > El lun., 15 oct. 2018 a las 20:12, Alex Harui > () > > escribi=C3=B3: > > > >> Either syntax should work. I just pushed changes to > AbstractService that > >> got service.echo() to work. > >> > >> -Alex > >> > >> On 10/15/18, 10:51 AM, "Carlos Rovira" > wrote: > >> > >> Hi Alex, > >> > >> one thing I not understand is that this: > >> > >> (service.echo as Operation).send(); > >> > >> should be > >> > >> service.echo() > >> > >> I think we're trying to remove "send()" and call directly > "echo()" > >> > >> I can go to your latest commits in both compiler and framework > and > >> try, but > >> don't understand the purpose, since calling with send() was > what we > >> had, > >> right? > >> > >> Or maybe I'm missing something? > >> > >> thanks > >> > >> Carlos > >> > >> > >> > >> > >> > >> El lun., 15 oct. 2018 a las 19:15, Alex Harui > >> () > >> escribi=C3=B3: > >> > >> > About 10 hours ago, after I cast the call to send in the > example to > >> be > >> > (service.echo as Operation).send() , it worked for me. > >> > > >> > I see you have made several changes to the example since. G= o > back > >> to > >> > where the example was about 10 hours ago, make that one > change to > >> > service.echo.send() and it should work. If other things are > not > >> working, I > >> > will look into them later. > >> > > >> > -Alex > >> > > >> > On 10/15/18, 10:11 AM, "Carlos Rovira" < > carlosrovira@apache.org> > >> wrote: > >> > > >> > Hi Alex, > >> > > >> > El lun., 15 oct. 2018 a las 18:54, Alex Harui > >> > () > >> > escribi=C3=B3: > >> > > >> > > There may be a couple of things affecting you. One is > that > >> in the > >> > bug you > >> > > reported, it looks like only the first RO is created > and the > >> others > >> > are not. > >> > > > >> > > >> > I 'm pretty sure the bug about mx:method is not present > since I > >> test > >> > in my > >> > real project and in the example in our repo. In the firs= t > one I > >> don't > >> > have > >> > any mx:method and in the second I comment to test. Maybe > we > >> should > >> > comment > >> > mx:method section in the example for now. > >> > > >> > > >> > > > >> > > Second, if you notice in the example, you'll see thing= s > like > >> > (service.echo > >> > > as Operation).lastResult. After adding support for > >> callProperty, > >> > the calls > >> > > now have to change to be either (service.echo as > >> Operation).send() or > >> > > service.echo(). The current syntax in the repo: > >> service.echo.send() > >> > will > >> > > result in an error because the compiler cannot know if > the > >> echo > >> > property on > >> > > service is also a proxy or not. The compiler currentl= y > >> guesses > >> > "yes" to > >> > > make it easier for folks who have existing nested > ObjectProxy > >> data > >> > sets. > >> > > So, Royale developers will have to do more "casting" > with > >> "as" than > >> > in > >> > > Flash. > >> > > > >> > > >> > check the example since I change already to the new > syntax to > >> help you > >> > try > >> > it. There's no "send()" anymore in the example in our > repo. > >> > > >> > > >> > > > >> > > In Flash, the difference between proxy access and > regular > >> property > >> > access > >> > > is handled in the runtime. The JS runtimes do not do > this. > >> The > >> > compiler > >> > > could generate code that tests the class at runtime, > but I > >> think > >> > that will > >> > > be too slow. > >> > > > >> > > Specific to RemoteObject, it might be possible to > declare the > >> JS > >> > > RemoteObject to not be a Proxy and just Dynamic and > have the > >> > constructor > >> > > and getOperation call Object.defineProperty, but that > is not a > >> > general case > >> > > solution for Proxy. > >> > > > >> > > >> > Hi Alex, that's for me a bit far from my knowledge. I'm > sure > >> whatever > >> > you > >> > get would be the best solution. > >> > Currently mx:RO is broken and I'm working with the repo > just > >> before the > >> > change localy to advance, hope you could take a look and > see if > >> you > >> > can fix > >> > the issue. > >> > If not, probably is better to comment the changes in the > >> compiler (and > >> > maybe in the framework?) to make it work again until we > know > >> how to > >> > fix it. > >> > > >> > One thing I could test today (not related) in the > meanwhile is > >> if mx:RO > >> > works with small messages on. The response is not, I > think that > >> is the > >> > AMF > >> > serialization-deserialization. But I think this is not > crucial, > >> just > >> > disabling it could be ok for now for most of folks out > there > >> (just > >> > knowing > >> > that they need to configure that to false). > >> > > >> > Thanks > >> > > >> > Carlos > >> > > >> > > >> > > > >> > > My 2 cents, > >> > > -Alex > >> > > > >> > > On 10/15/18, 4:51 AM, "Carlos Rovira" < > >> carlosrovira@apache.org> > >> > wrote: > >> > > > >> > > Hi Alex, > >> > > > >> > > I added to the RO test example the CompressedRO > test case > >> > commented to > >> > > help > >> > > you find the problem. > >> > > I couldn't test like in net RO since now the entir= e > >> example is > >> > > failing, but > >> > > once the callProperty works for a normal case > should help > >> us to > >> > check > >> > > if > >> > > the rest of RO works since it uses > >> "convertParametersHandler" > >> > > > >> > > I'll revert localy this changes in order to advanc= e > in my > >> real > >> > world > >> > > app in > >> > > the mean while > >> > > > >> > > thanks > >> > > > >> > > > >> > > > >> > > El lun., 15 oct. 2018 a las 13:40, Carlos Rovira (= < > >> > > carlosrovira@apache.org>) > >> > > escribi=C3=B3: > >> > > > >> > > > Hi Alex, > >> > > > > >> > > > I found that even if I remove completely > >> > CompressedRemoteObject and > >> > > use > >> > > > only normal mx:RemoteObject the error shows: > >> > > > > >> > > > [Error] TypeError: undefined is not an object > >> (evaluating > >> > > > 'this.remoteObject.convertParametersHandler') > >> > > > > >> > > > > >> > > > > >> > > > > >> > > > El lun., 15 oct. 2018 a las 13:00, Carlos Rovira > (< > >> > > carlosrovira@apache.org>) > >> > > > escribi=C3=B3: > >> > > > > >> > > >> Hi Alex, > >> > > >> > >> > > >> I'm finding a problem with callProperty. I'm > using a > >> > > >> CompressedRemoteObjeect that uses two hooks in > >> RemoteObject > >> > API > >> > > >> > >> > > >> public var convertParametersHandler:Function; > >> > > >> > >> > > >> and > >> > > >> public var convertResultHandler:Function; > >> > > >> > >> > > >> this makes the call fail with > >> > > >> > >> > > >> [Error] TypeError: undefined is not an object > >> (evaluating > >> > > >> 'this.remoteObject.convertParametersHandler') > >> > > >> send (Operation.js:109) > >> > > >> callProperty (AbstractService.js:147:111) > >> > > >> dologin (LoginForm.js:181) > >> > > >> $EH1 (LoginForm.js:226) > >> > > >> (funci=C3=B3n an=C3=B3nima) > >> > > >> fireListener (events.js:744) > >> > > >> fireListenerOverride (HTMLElementWrapper.js:61) > >> > > >> handleBrowserEvent_ (events.js:870) > >> > > >> (funci=C3=B3n an=C3=B3nima) (events.js:289) > >> > > >> > >> > > >> So I guess the proxy is trying to proxy all eve= n > its > >> own > >> > member > >> > > functions > >> > > >> that should not be affected, makes this sense? > >> > > >> > >> > > >> thanks > >> > > >> > >> > > >> > >> > > >> El lun., 15 oct. 2018 a las 7:15, Alex Harui > >> > > () > >> > > >> escribi=C3=B3: > >> > > >> > >> > > >>> I pushed changes to the compiler and framework > to try > >> to get > >> > > >>> callProperty to work. I don't have a test cas= e > but > >> give it > >> > a try > >> > > and see > >> > > >>> what happens. > >> > > >>> > >> > > >>> If you compare the size of the output with and > without > >> > > >>> -js-dynamic-access, you can see the theoretica= l > >> savings of > >> > not > >> > > using that > >> > > >>> option. If that savings might matter, then it > might > >> be worth > >> > > spending some > >> > > >>> time on fixing up the issues that > -js-dynamic-access > >> "works > >> > > around". But > >> > > >>> keep in mind that there probably isn't any way > to > >> grab all > >> > of the > >> > > >>> theoretical savings. What we don=E2=80=99t kn= ow yet is > where > >> you'll > >> > > actually end > >> > > >>> up. It might even be true that > -js-dynamic-access is > >> more > >> > optimal. > >> > > >>> > >> > > >>> -Alex > >> > > >>> > >> > > >>> On 10/14/18, 3:02 PM, "Carlos Rovira" < > >> > carlosrovira@apache.org> > >> > > wrote: > >> > > >>> > >> > > >>> Hi Alex > >> > > >>> > >> > > >>> El dom., 14 oct. 2018 a las 23:48, Alex > Harui > >> > > >>> () > >> > > >>> escribi=C3=B3: > >> > > >>> > >> > > >>> > I got the resources working so I will > look into > >> > > Proxy.callProperty. > >> > > >>> > > >> > > >>> > > >> > > >>> That's cool, I'm closing for today, I can > try in > >> some > >> > hours if > >> > > you > >> > > >>> upload > >> > > >>> some changes. Thanks > >> > > >>> > >> > > >>> > >> > > >>> > The issue with js-dynamic-access isn't > about MX > >> > RemoteObject > >> > > vs > >> > > >>> Basic > >> > > >>> > RemoteObject, it is whether, if we fixed > places > >> in any > >> > of > >> > > the code > >> > > >>> where > >> > > >>> > minification breaks things, what the > >> size/performance > >> > > trade-off > >> > > >>> would be. > >> > > >>> > Some variable names would be longer, but > some > >> other > >> > code > >> > > might be > >> > > >>> more > >> > > >>> > verbose as public vars are converted int= o > >> > getter/setters and > >> > > have > >> > > >>> function > >> > > >>> > call overhead. I guess we'll find out > when we > >> get > >> > someone's > >> > > app > >> > > >>> to the > >> > > >>> > point where they are ready to get the > production > >> > version to > >> > > run. > >> > > >>> > > >> > > >>> > >> > > >>> Well, I'll need to have my app in > production by > >> the > >> > end/start > >> > > of the > >> > > >>> year, > >> > > >>> so we'll can check this with mine. For now > it > >> seems I > >> > need to > >> > > left > >> > > >>> this > >> > > >>> configuration or release version can pass > the > >> login (the > >> > mx RO > >> > > call > >> > > >>> to the > >> > > >>> server) > >> > > >>> > >> > > >>> > >> > > >>> > >> > > >>> > > >> > > >>> > -Alex > >> > > >>> > > >> > > >>> > On 10/14/18, 2:23 PM, "Carlos Rovira" < > >> > > carlosrovira@apache.org> > >> > > >>> wrote: > >> > > >>> > > >> > > >>> > Hi Alex, > >> > > >>> > > >> > > >>> > El dom., 14 oct. 2018 a las 18:32, > Alex > >> Harui > >> > > >>> > () > >> > > >>> > escribi=C3=B3: > >> > > >>> > > >> > > >>> > > Hi Carlos, > >> > > >>> > > > >> > > >>> > > JS proxy doesn't support > callProperty > >> yet. Feel > >> > free > >> > > to add > >> > > >>> it, or > >> > > >>> > I will > >> > > >>> > > after I finish up ResourceManager. > >> > > >>> > > > >> > > >>> > > >> > > >>> > JS proxy is mx.utlis.ObjectProxy or > you > >> mean maybe > >> > > >>> AbstractService > >> > > >>> > callProperty? > >> > > >>> > I could take a look, but no promises > since > >> I don't > >> > know > >> > > >>> exactly how > >> > > >>> > that > >> > > >>> > works. A little of guidance here > could me > >> make get > >> > this > >> > > done. > >> > > >>> > > >> > > >>> > > >> > > >>> > > > >> > > >>> > > I don't doubt that minification > breaks > >> lots of > >> > things > >> > > that > >> > > >>> > > js-dynamic-access fixes. Hard to > say how > >> much > >> > smaller > >> > > your > >> > > >>> app > >> > > >>> > would be if > >> > > >>> > > we fixed anough stuff without that > option. > >> > > >>> > > > >> > > >>> > > > >> > > >>> > well, including mx:RemoteObject seem= s > to > >> increase > >> > > >>> significantly my > >> > > >>> > current > >> > > >>> > app in release mode "mx" is 1'8mb > while > >> > > "org.apache.royale" is > >> > > >>> > 1'8mb...but > >> > > >>> > is ok for me since I think is a norm= al > >> payload for > >> > the > >> > > base of > >> > > >>> a normal > >> > > >>> > App, and MX RO here does an importan= t > role > >> in my > >> > case. So > >> > > >>> happy to pay > >> > > >>> > the > >> > > >>> > price ;) > >> > > >>> > > >> > > >>> > > >> > > >>> > > >> > > >>> > > -Alex > >> > > >>> > > > >> > > >>> > > -- > >> > > >>> > > Carlos Rovira > >> > > >>> > > > >> > > >>> > > >> > > >>> > >> > > > >> > > >> > https://na01.safelinks.protection.outlook.com/?url=3Dhttp%3A%2F%2Fabout.m= e%2Fcarlosrovira&data=3D02%7C01%7Caharui%40adobe.com%7C98cbaf3e10514e91= 621f08d63356393e%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6367528427521= 74626&sdata=3DYC5itSpv5MgLQSKdHEbJjvyzI2dvAhBu0xEVa2BXMq8%3D&reserv= ed=3D0 > >> > > >>> > > > >> > > >>> > > > >> > > >>> > > > >> > > >>> > > > >> > > >>> > > >> > > >>> > > >> > > >>> > > >> > > >>> > >> > > >>> -- > >> > > >>> Carlos Rovira > >> > > >>> > >> > > >>> > >> > > > >> > > >> > https://na01.safelinks.protection.outlook.com/?url=3Dhttp%3A%2F%2Fabout.m= e%2Fcarlosrovira&data=3D02%7C01%7Caharui%40adobe.com%7C98cbaf3e10514e91= 621f08d63356393e%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6367528427521= 74626&sdata=3DYC5itSpv5MgLQSKdHEbJjvyzI2dvAhBu0xEVa2BXMq8%3D&reserv= ed=3D0 > >> > > >>> > >> > > >>> > >> > > >>> > >> > > >> > >> > > >> -- > >> > > >> Carlos Rovira > >> > > >> > >> > > > >> > > >> > https://na01.safelinks.protection.outlook.com/?url=3Dhttp%3A%2F%2Fabout.m= e%2Fcarlosrovira&data=3D02%7C01%7Caharui%40adobe.com%7C98cbaf3e10514e91= 621f08d63356393e%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6367528427521= 74626&sdata=3DYC5itSpv5MgLQSKdHEbJjvyzI2dvAhBu0xEVa2BXMq8%3D&reserv= ed=3D0 > >> > > >> > >> > > >> > >> > > > > >> > > > -- > >> > > > Carlos Rovira > >> > > > > >> > > > >> > > >> > https://na01.safelinks.protection.outlook.com/?url=3Dhttp%3A%2F%2Fabout.m= e%2Fcarlosrovira&data=3D02%7C01%7Caharui%40adobe.com%7C98cbaf3e10514e91= 621f08d63356393e%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6367528427521= 74626&sdata=3DYC5itSpv5MgLQSKdHEbJjvyzI2dvAhBu0xEVa2BXMq8%3D&reserv= ed=3D0 > >> > > > > >> > > > > >> > > > >> > > -- > >> > > Carlos Rovira > >> > > > >> > > > >> > > >> > https://na01.safelinks.protection.outlook.com/?url=3Dhttp%3A%2F%2Fabout.m= e%2Fcarlosrovira&data=3D02%7C01%7Caharui%40adobe.com%7C98cbaf3e10514e91= 621f08d63356393e%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6367528427521= 84635&sdata=3DrPZugyhtpLAxFUTL28MGL6xowshROe3UiNP345Rw5f0%3D&reserv= ed=3D0 > >> > > > >> > > > >> > > > >> > > >> > -- > >> > Carlos Rovira > >> > > >> > > >> > https://na01.safelinks.protection.outlook.com/?url=3Dhttp%3A%2F%2Fabout.m= e%2Fcarlosrovira&data=3D02%7C01%7Caharui%40adobe.com%7C98cbaf3e10514e91= 621f08d63356393e%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6367528427521= 84635&sdata=3DrPZugyhtpLAxFUTL28MGL6xowshROe3UiNP345Rw5f0%3D&reserv= ed=3D0 > >> > > >> > > >> > > >> > >> -- > >> Carlos Rovira > >> > >> > https://na01.safelinks.protection.outlook.com/?url=3Dhttp%3A%2F%2Fabout.m= e%2Fcarlosrovira&data=3D02%7C01%7Caharui%40adobe.com%7C98cbaf3e10514e91= 621f08d63356393e%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6367528427521= 84635&sdata=3DrPZugyhtpLAxFUTL28MGL6xowshROe3UiNP345Rw5f0%3D&reserv= ed=3D0 > >> > >> > >> > > > > -- > > Carlos Rovira > > > https://na01.safelinks.protection.outlook.com/?url=3Dhttp%3A%2F%2Fabout.m= e%2Fcarlosrovira&data=3D02%7C01%7Caharui%40adobe.com%7C98cbaf3e10514e91= 621f08d63356393e%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6367528427521= 84635&sdata=3DrPZugyhtpLAxFUTL28MGL6xowshROe3UiNP345Rw5f0%3D&reserv= ed=3D0 > > > > > > -- > Carlos Rovira > > https://na01.safelinks.protection.outlook.com/?url=3Dhttp%3A%2F%2Fabout.m= e%2Fcarlosrovira&data=3D02%7C01%7Caharui%40adobe.com%7C98cbaf3e10514e91= 621f08d63356393e%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6367528427521= 84635&sdata=3DrPZugyhtpLAxFUTL28MGL6xowshROe3UiNP345Rw5f0%3D&reserv= ed=3D0 > > > --=20 Carlos Rovira http://about.me/carlosrovira --0000000000002fdb2405785f5936--