ok

On 1/3/18, 3:33 PM, "Alex Harui" <aha...@adobe.com.INVALID> wrote:

>Peter, 
>
>I'm not convinced you need itemAdding events.  And item can be added and
>removed without impacting selection.  Selection management should be
>independent of changes to the data provider, and it is up to selection
>management to interpret itemAdded/itemRemoved to some selection change.
>It is that selection management code that needs to dispatch a "changing"
>before "change" or "selectionChanging" before "selectionChange".
>
>My 2 cents,
>-Alex
>
>On 1/3/18, 11:39 AM, "Peter Ent" <p...@adobe.com.INVALID> wrote:
>
>>Well, that bead only dispatches "dataProvidedChanged" regardless of the
>>reason. And it does so after the data as changed. We want to know before
>>the data changes so we can save the selection and then after the data
>>changes so it can be restored, if possible. We need something to send out
>>an event prior to the changes.
>>
>>ArrayList only sends post-change events. If we listen for when the
>>selectedIndex changes, then we can keep a reference to the item selected.
>>When ArrayList is updated and sends, say a "itemAdded" event, the model
>>must not change the selectedIndex (thus dispatching a event and wiping
>>out
>>our save). 
>>
>>I think the right way to do this is:
>>
>>ArrayList - sends itemAdded, itemRemoved, itemUpdated events. This is
>>what
>>it does now.
>>
>>DynamicArrayList - extends ArrayList, and sends itemAdding, itemRemoving,
>>and itemUpdating events prior to making the changes and then calls the
>>super function to dispatch the normal post-change event.
>>
>>DynamicArrayListSelectionModel listens for the "-ing" events and saves
>>the
>>current selection. When it receives the "-ed" event, it restores the
>>selection.
>>
>>I think this will work and should not be disruptive.
>>
>>On 1/3/18, 12:26 PM, "Piotr Zarzycki" <piotrzarzyck...@gmail.com> wrote:
>>
>>>Hi Peter,
>>>
>>>What about DataProviderItemsChangeNotifier - It exactly doing what you
>>>are
>>>saying and what that restoration bead needs. What do you think ?
>>>
>>>Thanks, Piotr
>>>
>>>
>>>2018-01-03 18:05 GMT+01:00 Peter Ent <p...@adobe.com.invalid>:
>>>
>>>> I've spent this morning wrestling with this.
>>>>
>>>> Right now when a model (eg, ArraySelectionModel,
>>>>ArrayListSelectionModel)
>>>> has its dataProvider replaced, it will set the selectedIndex to -1
>>>>(and
>>>> selectedItem to null) if the dataProvider is being set to null;
>>>>otherwise
>>>> it leaves the values unchanged unless the current value exceeds the
>>>>size
>>>> of the new dataProvider.
>>>>
>>>> A typical way to change things is to update the dataProvider and then
>>>>set
>>>> the list.dataProvider to null (selectedIndex becomes -1, dispatches
>>>> "selectedIndexChanged") followed setting list.dataProvider back to the
>>>> original dataProvider. This is done because we did not have a dynamic
>>>> system. Reseting the selection in this cause falls on the application
>>>> writer.
>>>>
>>>> For dynamic data, I think we also need a dynamic model (eg,
>>>> DynamicCollectionViewSelectionModel) which is tuned into the needs of
>>>>a
>>>> dynamic system.
>>>>
>>>> Before changing a dataProvider, the
>>>>DyanmicCollectionViewSelectionModel
>>>> will dispatch a "dataProviderChanging" event. This would give a
>>>>selection
>>>> restoration bead the opportunity to store the current selection. Then
>>>>upon
>>>> receiving the "dataProviderChanged" event, restore the selection.
>>>>
>>>> Unfortunately, the selection restoration bead still does not know when
>>>>an
>>>> item will be added or removed. While the model can listen for a
>>>>complete
>>>> replacement of the dataProvider and warning with a
>>>>"dataProviderChanging"
>>>> event, then is no "itemAdding" or "itemRemoving" event prior to an
>>>>item
>>>> being added or removed. To do this, we will need to having a new
>>>> collection view that extends ArrayList and dispatches those extra
>>>>events.
>>>> Then the selection restoration bead can operate correctly.
>>>>
>>>> This is my current thinking.
>>>>
>>>> —peter
>>>>
>>>>
>>>> On 1/2/18, 4:43 PM, "Alex Harui" <aha...@adobe.com.INVALID> wrote:
>>>>
>>>> >And this one reason we have beads as a pattern.  There is no one
>>>>right
>>>>way
>>>> >to preserve selection and selection should not always be preserved
>>>>for
>>>> >certain kinds of data provider changes.  So, create a bead that
>>>>performs
>>>> >the selection preservation you need and give it a name that makes it
>>>>clear
>>>> >what it does.  Then others can create similar beads for other
>>>>strategies.
>>>> >
>>>> >My 2 cents,
>>>> >-Alex
>>>> >
>>>> >On 1/2/18, 1:26 PM, "Piotr Zarzycki" <piotrzarzyck...@gmail.com>
>>>>wrote:
>>>> >
>>>> >>Peter,
>>>> >>
>>>> >>You didn't misread, but my thoughts probably didn't far away into
>>>>problem
>>>> >>resolution. That's why I was surprise why I haven't thought about
>>>> >>preserving selection. :)
>>>> >>
>>>> >>Thanks, Piotr
>>>> >>
>>>> >>
>>>> >>2018-01-02 22:10 GMT+01:00 Peter Ent <p...@adobe.com.invalid>:
>>>> >>
>>>> >>> I thought because you mentioned that rollover and selection were
>>>>messed
>>>> >>> up, that was the thing needing attention. I must have misread your
>>>> >>>email;
>>>> >>> I'll go back.
>>>> >>>
>>>> >>> In the meantime, I have a Button that inserts an item into the
>>>> >>> dataProvider. Before doing this I am:
>>>> >>>
>>>> >>> var oldSelection:Object = list.selectedItem; // or selectedIndex??
>>>> >>>
>>>> >>>
>>>> >>> then update the dataProvider by inserting an item into it. For a
>>>>List
>>>> >>>with
>>>> >>> the standard bead set, I have to:
>>>> >>>
>>>> >>> list.dataProvider = null;
>>>> >>> list.dataProvider = applicationModel.dataProvider;
>>>> >>>
>>>> >>> After that, I just restore the selection: list.dataProvider =
>>>> >>>oldSelection
>>>> >>>
>>>> >>> Need to figure out if the dataProvider will change, save the
>>>>selection,
>>>> >>> allow the change, then restore it.
>>>> >>>
>>>> >>> —peter
>>>> >>>
>>>> >>> On 1/2/18, 3:58 PM, "Piotr Zarzycki" <piotrzarzyck...@gmail.com>
>>>> wrote:
>>>> >>>
>>>> >>> >How are you doing that preservation, by simply saving item
>>>>somewhere
>>>> >>> >before
>>>> >>> >remove/add operation ?
>>>> >>> >
>>>> >>> >I'm not following the part where we you wanted some opinion.
>>>>Actually
>>>> >>>in
>>>> >>> >case of refreshing I didn't even thing about saving selection,
>>>>but
>>>> >>>it's
>>>> >>> >true that it should happen! It's surprises me that in my app I
>>>>forgot
>>>> >>> >about
>>>> >>> >that. :)
>>>> >>> >
>>>> >>> >Thanks, Piotr
>>>> >>> >
>>>> >>> >
>>>> >>> >2018-01-02 21:44 GMT+01:00 Peter Ent <p...@adobe.com.invalid>:
>>>> >>> >
>>>> >>> >> The first task is to determine if a list's selectedIndex or
>>>> >>>selectedItem
>>>> >>> >> should be preserved.
>>>> >>> >>
>>>> >>> >> For selectedIndex, adding or removing an item will get the same
>>>>row
>>>> >>> >> selected until that row no longer exists.
>>>> >>> >>
>>>> >>> >> For selectedItem, adding or removing an item will keep the same
>>>>item
>>>> >>> >> selected until that item no longer exists. For example, if the
>>>>4th
>>>> >>>item
>>>> >>> >>is
>>>> >>> >> "red" and you insert an item at position 2, "red" remains
>>>>selected
>>>> >>>by
>>>> >>> >> shifts down a row.
>>>> >>> >>
>>>> >>> >> I can see this working both ways.
>>>> >>> >>
>>>> >>> >> In either case, first preserving the selection (index or item)
>>>> >>>before
>>>> >>> >>the
>>>> >>> >> add or remove and then restoring it works fine - I did this in
>>>> >>> >>application
>>>> >>> >> code, not in framework code. Works very nicely, as a matter of
>>>>fact.
>>>> >>> >>Works
>>>> >>> >> for both traditional lists and dynamic lists with the new beads
>>>> >>>(yours,
>>>> >>> >> Piotr, or my new collection ones). Its *very simple* code.
>>>> >>> >>
>>>> >>> >> So once we decide which selection is preserved, we need to
>>>>decide
>>>> >>>where
>>>> >>> >> that goes. Even though this code is just a couple of lines, in
>>>>the
>>>> >>>PAYG
>>>> >>> >> world, not every app needs this so it must go into additional
>>>>beads
>>>> >>> >>since
>>>> >>> >> it is added functionality.
>>>> >>> >>
>>>> >>> >> —peter
>>>> >>> >>
>>>> >>> >>
>>>> >>> >>
>>>> >>> >>
>>>> >>> >>
>>>> >>> >> On 1/2/18, 1:31 PM, "Piotr Zarzycki"
>>>><piotrzarzyck...@gmail.com>
>>>> >>>wrote:
>>>> >>> >>
>>>> >>> >> >Hi Peter,
>>>> >>> >> >
>>>> >>> >> >Welcome after vacation! I sense all ideas when I'm working
>>>>with
>>>> >>>that
>>>> >>> >> >stuff.
>>>> >>> >> >I think you will see the issue with indexes, even if it's not
>>>>the
>>>> >>>case
>>>> >>> >> >with
>>>> >>> >> >removing from the list. I will wait for your review with that
>>>>index
>>>> >>> >> >refresh.
>>>> >>> >> >
>>>> >>> >> >Thank you so much! :)
>>>> >>> >> >
>>>> >>> >> >
>>>> >>> >> >2018-01-02 19:10 GMT+01:00 Peter Ent <p...@adobe.com.invalid>:
>>>> >>> >> >
>>>> >>> >> >> Hi,
>>>> >>> >> >>
>>>> >>> >> >> Catching up and building stuff. I'm going to repeat some
>>>>things
>>>> >>>for
>>>> >>> >>the
>>>> >>> >> >> befit of anyone joining Royale for 2018 (and to refresh my
>>>>own
>>>> >>> >>thoughts
>>>> >>> >> >> coming off of holiday!).
>>>> >>> >> >>
>>>> >>> >> >> The initial idea of List and related classes was their beads
>>>>were
>>>> >>>to
>>>> >>> >>be
>>>> >>> >> >> almost static. You'd have data that you would use to create
>>>>the
>>>> >>> >> >> dataProvider to the list and when set, would cause the
>>>> >>>itemRenderers
>>>> >>> >>to
>>>> >>> >> >>be
>>>> >>> >> >> deleted and replaced. Even something as simple as adding new
>>>>data
>>>> >>>to
>>>> >>> >>the
>>>> >>> >> >> end of the dataProvider would require this reset: you'd have
>>>>to
>>>> >>>clear
>>>> >>> >> >>the
>>>> >>> >> >> dataProvider (list.dataProver = null) and set it again or
>>>>create
>>>> >>>a
>>>> >>> >> >> completely new dataProvider and set that to the list.
>>>> >>> >> >>
>>>> >>> >> >> The selected item and index should, in this case, be
>>>>cleared.
>>>>I'd
>>>> >>> >>have
>>>> >>> >> >>to
>>>> >>> >> >> run a test to see if that really happens as I don't
>>>>remember.
>>>>If
>>>> >>>you
>>>> >>> >> >>want
>>>> >>> >> >> to reset them back (assuming that index still existed) you
>>>>would
>>>> >>> >>write a
>>>> >>> >> >> bead to do it.
>>>> >>> >> >>
>>>> >>> >> >> Now we are at the dynamic stage where we want to handle
>>>>runtime
>>>> >>> >>updates
>>>> >>> >> >>to
>>>> >>> >> >> the dataProvider and create just new itemRenderers and
>>>>insert
>>>> >>>them or
>>>> >>> >> >> remove itemRenderers when data is deleted from the
>>>>dataProvider.
>>>> >>> >> >>
>>>> >>> >> >> Alex believes that the initial creation and insertions are
>>>>the
>>>> >>>most
>>>> >>> >> >>common
>>>> >>> >> >> of the dynamic actions; removals being less common. As such
>>>>in
>>>> >>>the
>>>> >>> >>PAYG
>>>> >>> >> >> world you would have a bead that handled a replacement of
>>>>the
>>>> >>> >> >>dataProvider
>>>> >>> >> >> (which covers the initialization step) and a bead which
>>>>handled
>>>> >>> >> >>additions
>>>> >>> >> >> and a bead to handle removals. There's a lot of duplication
>>>>of
>>>> >>>code
>>>> >>> >>in
>>>> >>> >> >> these and under a non-PAYG system you'd just combine these
>>>>into a
>>>> >>> >>single
>>>> >>> >> >> bead to do initialize, add, and removal.
>>>> >>> >> >>
>>>> >>> >> >> In the dynamic beads, the selection should be preserved.
>>>>That
>>>> >>> >> >>information
>>>> >>> >> >> is stored in the model. The model doesn't do much else
>>>>accept
>>>> >>>keep
>>>> >>> >>the
>>>> >>> >> >> data. The standard view bead would not know about these
>>>>extra
>>>> >>>events
>>>> >>> >>so
>>>> >>> >> >> yes, we'd need another view bead to intercept those events
>>>>and
>>>> >>> >>re-apply
>>>> >>> >> >>or
>>>> >>> >> >> adjust the selection.
>>>> >>> >> >>
>>>> >>> >> >> ‹peter
>>>> >>> >> >>
>>>> >>> >> >> On 12/30/17, 4:29 PM, "Piotr Zarzycki"
>>>> >>><piotrzarzyck...@gmail.com>
>>>> >>> >> >>wrote:
>>>> >>> >> >>
>>>> >>> >> >> >Peter,
>>>> >>> >> >> >
>>>> >>> >> >> >I have figure out what is wrong in case of List. I reported
>>>>in
>>>> >>>the
>>>> >>> >> >> >previous
>>>> >>> >> >> >email that in the ListExample once you remove one item,
>>>> >>>something is
>>>> >>> >> >>wrong
>>>> >>> >> >> >with selection. Issue happened when you removing item in
>>>>the
>>>> >>>middle
>>>> >>> >>of
>>>> >>> >> >> >collection.
>>>> >>> >> >> >
>>>> >>> >> >> >Let's say that you have 5 items and you are removing item
>>>>with
>>>> >>> >>index =
>>>> >>> >> >>2.
>>>> >>> >> >> >Removing will work properly, but StringItemRenderer ->
>>>> >>> >> >> >DataItemRenderer -> UIItemRendererBase
>>>> >>> >> >> ><- has property "index" which is basically not being
>>>>refreshed
>>>> >>>after
>>>> >>> >> >> >remove. In the result renderers has following indexes:
>>>> >>> >> >> >
>>>> >>> >> >> >0,
>>>> >>> >> >> >1,
>>>> >>> >> >> >3,
>>>> >>> >> >> >4
>>>> >>> >> >> >
>>>> >>> >> >> >Which is messes up selection and roll over color changes.
>>>>How
>>>> >>> >>actually
>>>> >>> >> >>fix
>>>> >>> >> >> >that ? My first thought was that ListView should listen for
>>>> >>> >> >>"layoutNeeded"
>>>> >>> >> >> >(we are dispatching that event after remove, add etc.) and
>>>> >>>refresh
>>>> >>> >> >>indexes
>>>> >>> >> >> >of all renderers.
>>>> >>> >> >> >
>>>> >>> >> >> >The second thought is that ListView should listen for
>>>>remove
>>>> >>>event,
>>>> >>> >> >>where
>>>> >>> >> >> >we will have index of removed row, so we will be able loop
>>>> >>>through
>>>> >>> >> >>part of
>>>> >>> >> >> >the collection and refresh rest of the indexes. It is more
>>>> >>> >>efficient,
>>>> >>> >> >>but
>>>> >>> >> >> >maybe this is job for new type of View (bead) -
>>>>ListRemoveView
>>>> >>>bead
>>>> >>> >>?
>>>> >>> >> >> >
>>>> >>> >> >> >Looking forward to your thought once you get back from
>>>>Vacation.
>>>> >>>:)
>>>> >>> >> >> >
>>>> >>> >> >> >Thanks, Piotr
>>>> >>> >> >> >
>>>> >>> >> >> >
>>>> >>> >> >> >
>>>> >>> >> >> >2017-12-22 15:05 GMT+01:00 Piotr Zarzycki
>>>> >>> >><piotrzarzyck...@gmail.com>:
>>>> >>> >> >> >
>>>> >>> >> >> >> Hi Peter,
>>>> >>> >> >> >>
>>>> >>> >> >> >> I haven't checked your branch yet, but I just pushed
>>>>couple of
>>>> >>> >> >>things to
>>>> >>> >> >> >> the develop which I needed for my examples. Here is the
>>>>list
>>>> >>>of
>>>> >>> >>beads
>>>> >>> >> >> >>which
>>>> >>> >> >> >> we currently have and can be used for List. I think names
>>>>are
>>>> >>>self
>>>> >>> >> >> >> explanatory.
>>>> >>> >> >> >>
>>>> >>> >> >> >> DynamicAddItemRendererForArrayListData
>>>> >>> >> >> >>
>>>> >>> >> >> >> DynamicUpdateItemRendererForArrayListData
>>>> >>> >> >> >>
>>>> >>> >> >> >> DynamicRemoveItemRendererForArrayListData
>>>> >>> >> >> >>
>>>> >>> >> >> >> DynamicRemoveAllItemRendererForArrayListData
>>>> >>> >> >> >>
>>>> >>> >> >> >> DynamicRemoveAllByNullItemRendererForArrayListData
>>>> >>> >> >> >>
>>>> >>> >> >> >> All beads above should be used once you set for your
>>>>list:
>>>> >>> >> >> >>IDataProviderItemRendererMapper:
>>>> >>> >> >> >>ClassReference("org.apache.royale.html.beads.
>>>> >>> >> >> DataItemRendererFactoryForAr
>>>> >>> >> >> >>rayList")
>>>> >>> >> >> >>
>>>> >>> >> >> >> We have also DynamicItemsRendererFactoryForArrayListData
>>>>-
>>>> >>>which
>>>> >>> >>is
>>>> >>> >> >> >>doing actually two things. Create all items once someone
>>>>set
>>>> >>> >> >> >>dataProvider (the same logic as in
>>>> >>> >> >>DataItemRendererFactoryForArrayList)
>>>> >>> >> >> >>AND handle adding to
>>>> >>> >> >> >>
>>>> >>> >> >> >> ArrayList (the same logic as in
>>>> >>> >> >>DynamicAddItemRendererForArrayListData)
>>>> >>> >> >> >>- It duplicates logic from those both beads.
>>>> >>> >> >> >>
>>>> >>> >> >> >>
>>>> >>> >> >> >> Two Scenarios with
>>>> >>>DynamicItemsRendererFactoryForArrayListData:
>>>> >>> >> >> >>
>>>> >>> >> >> >> 1) If we use DynamicItemsRendererFactoryForArrayListData
>>>> >>>simply
>>>> >>> in
>>>> >>> >> >>the
>>>> >>> >> >> >>List as it is in our ListExample [1] we don't have to
>>>>remember
>>>> >>>to
>>>> >>> >> >>setup:
>>>> >>> >> >> >>
>>>> >>> >> >> >> IDataProviderItemRendererMapper:
>>>> >>> >> >> >>ClassReference("org.apache.royale.html.beads.
>>>> >>> >> >> DataItemRendererFactoryForAr
>>>> >>> >> >> >>rayList").
>>>> >>> >> >> >>
>>>> >>> >> >> >> However in that scenario we will have in List totally
>>>>useless
>>>> >>>bead
>>>> >>> >> >> >>DataItemRendererFactoryForArray which is being added
>>>>default
>>>> to
>>>> >>> the
>>>> >>> >> >> List.
>>>> >>> >> >> >>
>>>> >>> >> >> >> 2) If we use DynamicItemsRendererFactoryForArrayListData
>>>>and
>>>> >>>we
>>>> >>> >>add
>>>> >>> >> >>in
>>>> >>> >> >> >>CSS  IDataProviderItemRendererMapper:
>>>> >>> >> >> >>ClassReference("org.apache.royale.html.beads.
>>>> >>> >> >> DataItemRendererFactoryForAr
>>>> >>> >> >> >>rayList")
>>>> >>> >> >> >>
>>>> >>> >> >> >> I'm not sure what can happen actually, cause both beads
>>>>are
>>>> >>>using
>>>> >>> >>the
>>>> >>> >> >> >>same logic to create item renderers. Can be situation when
>>>>one
>>>> >>> >>bead is
>>>> >>> >> >> >>create renderers and second one re do this work again ? :)
>>>> >>> >> >> >>
>>>> >>> >> >> >>
>>>> >>> >> >> >> Thanks, Piotr
>>>> >>> >> >> >>
>>>> >>> >> >> >>
>>>> >>> >> >> >>
>>>> >>> >> >> >> [1]
>>>> >>> >> >> >>https://na01.safelinks.protection.outlook.com/?url=
>>>> >>> >> >> https%3A%2F%2Fgithub.c
>>>> >>> >> >> >>om%2Fapache%2Froyale-asjs%2Fblob%
>>>> 2F24b09c787fc1da2d0a19895a2b2d
>>>> >>> >> >> 4a440e26c5
>>>> >>> >> >> >>97%2Fexamples%2Froyale%2FListExample%2Fsrc%2Fmain%
>>>> >>> >> >> 2Froyale%2FMyInitialVie
>>>> >>> >> >> >>w.mxml%23L69&data=02%7C01%7Cpent%40adobe.com%
>>>> >>> >> >> 7C94d879f8f6054e10c75508d54f
>>>> >>> >> >> >>cc6fe8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%
>>>> >>> >> >> 7C636502661827506659&sd
>>>> >>> >> >> >>ata=W4Ih5Q0IGhGNvOX9jrmn580Qw4ljo%2BavjqABV4%2BJr%2Bc%3D&
>>>> >>> reserved=0
>>>> >>> >> >> >>
>>>> >>> >> >> >>
>>>> >>> >> >> >>
>>>> >>> >> >> >> 2017-12-19 20:35 GMT+01:00 Olaf Krueger
>>>> >>><m...@olafkrueger.net>:
>>>> >>> >> >> >>
>>>> >>> >> >> >>> Peter, great to read something about these "Collections"
>>>>and
>>>> >>> >> >> >>>"Hierarchical
>>>> >>> >> >> >>> data" stuff here!
>>>> >>> >> >> >>> Thanks for working on this, have a nice time and enjoy
>>>>your
>>>> >>> >>break!
>>>> >>> >> >> >>>
>>>> >>> >> >> >>> Olaf
>>>> >>> >> >> >>>
>>>> >>> >> >> >>>
>>>> >>> >> >> >>>
>>>> >>> >> >> >>> --
>>>> >>> >> >> >>> Sent from:
>>>> >>> >> >> >>>https://na01.safelinks.protection.outlook.com/?url=
>>>> >>> >> >> http%3A%2F%2Fapache-r
>>>> >>> >> >> 
>>>>>>>oyale-development.20373.n8.nabble.com%2F&data=02%7C01%7Cpent%
>>>> >>> >> >> 40adobe.com
>>>> >>> >> >> >>>%7C94d879f8f6054e10c75508d54fcc6fe8%
>>>> >>> 7Cfa7b1b5a7b34438794aed2c178de
>>>> >>> >> >> cee1%7
>>>> >>> >> >>
>>>> >>>>>>C0%7C0%7C636502661827506659&sdata=Zb1nVaD5dUx1Y89Q1jj4LxqBhtlxoZ
>>>> >>> >> >> FlwDFJAq
>>>> >>> >> >> >>>ruTsY%3D&reserved=0
>>>> >>> >> >> >>>
>>>> >>> >> >> >>
>>>> >>> >> >> >>
>>>> >>> >> >> >>
>>>> >>> >> >> >> --
>>>> >>> >> >> >>
>>>> >>> >> >> >> Piotr Zarzycki
>>>> >>> >> >> >>
>>>> >>> >> >> >> Patreon:
>>>> >>> >> >> >>*https://na01.safelinks.protection.outlook.com/?url=
>>>> >>> >> >> https%3A%2F%2Fwww.pat
>>>> >>> >> >> >>reon.com%2Fpiotrzarzycki&data=02%7C01%7Cpent%40adobe.com
>>>> >>> >> >> %7C94d879f8f6054e
>>>> >>> >> >> >>10c75508d54fcc6fe8%7Cfa7b1b5a7b34438794aed2c178de
>>>> >>> >> >> cee1%7C0%7C0%7C636502661
>>>> >>> >> >> 
>>>>>>827506659&sdata=sjS%2Fmydo1M%2FGkkREJsc5CRyA1uFXRUK76zEHFeg
>>>> >>> >> >> FXtA%3D&reserv
>>>> >>> >> >> >>ed=0
>>>> >>> >> >> >>
>>>> >>> >> >> >><https://na01.safelinks.protection.outlook.com/?url=
>>>> >>> >> >> https%3A%2F%2Fwww.pat
>>>> >>> >> >> >>reon.com%2Fpiotrzarzycki&data=02%7C01%7Cpent%40adobe.com
>>>> >>> >> >> %7C94d879f8f6054e
>>>> >>> >> >> >>10c75508d54fcc6fe8%7Cfa7b1b5a7b34438794aed2c178de
>>>> >>> >> >> cee1%7C0%7C0%7C636502661
>>>> >>> >> >> 
>>>>>>827506659&sdata=sjS%2Fmydo1M%2FGkkREJsc5CRyA1uFXRUK76zEHFeg
>>>> >>> >> >> FXtA%3D&reserv
>>>> >>> >> >> >>ed=0>*
>>>> >>> >> >> >>
>>>> >>> >> >> >
>>>> >>> >> >> >
>>>> >>> >> >> >
>>>> >>> >> >> >--
>>>> >>> >> >> >
>>>> >>> >> >> >Piotr Zarzycki
>>>> >>> >> >> >
>>>> >>> >> >> >Patreon:
>>>> >>> >> >> >*https://na01.safelinks.protection.outlook.com/?url=
>>>> >>> >> >> https%3A%2F%2Fwww.patr
>>>> >>> >> >> >eon.com%2Fpiotrzarzycki&data=02%7C01%7Cpent%40adobe.com%
>>>> >>> >> >> 7C94d879f8f6054e10
>>>> >>> >> >> >c75508d54fcc6fe8%7Cfa7b1b5a7b34438794aed2c178de
>>>> >>> >> >> cee1%7C0%7C0%7C636502661827
>>>> >>> >> >> >506659&sdata=sjS%2Fmydo1M%2FGkkREJsc5CRyA1uFXRUK76zEHFeg
>>>> >>> >> >> FXtA%3D&reserved=0
>>>> >>> >> >> ><https://na01.safelinks.protection.outlook.com/?url=
>>>> >>> >> >> https%3A%2F%2Fwww.patr
>>>> >>> >> >> >eon.com%2Fpiotrzarzycki&data=02%7C01%7Cpent%40adobe.com%
>>>> >>> >> >> 7C94d879f8f6054e10
>>>> >>> >> >> >c75508d54fcc6fe8%7Cfa7b1b5a7b34438794aed2c178de
>>>> >>> >> >> cee1%7C0%7C0%7C636502661827
>>>> >>> >> >> >506659&sdata=sjS%2Fmydo1M%2FGkkREJsc5CRyA1uFXRUK76zEHFeg
>>>> >>> >> >> FXtA%3D&reserved=0
>>>> >>> >> >> >>*
>>>> >>> >> >>
>>>> >>> >> >>
>>>> >>> >> >
>>>> >>> >> >
>>>> >>> >> >--
>>>> >>> >> >
>>>> >>> >> >Piotr Zarzycki
>>>> >>> >> >
>>>> >>> >> >Patreon:
>>>> >>> >> >*https://na01.safelinks.protection.outlook.com/?url=
>>>> >>> >> https%3A%2F%2Fwww.patr
>>>> >>> >> >eon.com%2Fpiotrzarzycki&data=02%7C01%7Cpent%40adobe.com%
>>>> >>> >> 7C96bb80bb6fef4b94
>>>> >>> >> >089008d5520f1a9f%7Cfa7b1b5a7b34438794aed2c178de
>>>> >>> >> cee1%7C0%7C0%7C636505147194
>>>> >>> >>
>>>> >>> >>>474371&sdata=D3%2FGi2wtNJLEO716RK18TbD1VMFdB3V
>>>> >>> Kv3Br5KkZfFI%3D&reserved=0
>>>> >>> >> ><https://na01.safelinks.protection.outlook.com/?url=
>>>> >>> >> https%3A%2F%2Fwww.patr
>>>> >>> >> >eon.com%2Fpiotrzarzycki&data=02%7C01%7Cpent%40adobe.com%
>>>> >>> >> 7C96bb80bb6fef4b94
>>>> >>> >> >089008d5520f1a9f%7Cfa7b1b5a7b34438794aed2c178de
>>>> >>> >> cee1%7C0%7C0%7C636505147194
>>>> >>> >> >474371&sdata=D3%2FGi2wtNJLEO716RK18TbD1VMFdB3V
>>>> >>> >> Kv3Br5KkZfFI%3D&reserved=0>*
>>>> >>> >>
>>>> >>> >>
>>>> >>> >
>>>> >>> >
>>>> >>> >--
>>>> >>> >
>>>> >>> >Piotr Zarzycki
>>>> >>> >
>>>> >>> >Patreon:
>>>> >>> >*https://na01.safelinks.protection.outlook.com/?url=
>>>> >>> https%3A%2F%2Fwww.patr
>>>> >>> >eon.com%2Fpiotrzarzycki&data=02%7C01%7Cpent%40adobe.com%
>>>> >>> 7C61ec983f6a9747bd
>>>> >>> >cd7d08d552239493%7Cfa7b1b5a7b34438794aed2c178de
>>>> >>> cee1%7C0%7C0%7C636505235128
>>>> >>> >887083&sdata=Y%2BHjYn%2BGj%2Bhb0VVVy7fSW%2BGEvQo2%
>>>> >>> 2FUjH2EhucTbxR8Q%3D&rese
>>>> >>> >rved=0
>>>> >>> ><https://na01.safelinks.protection.outlook.com/?url=
>>>> >>> https%3A%2F%2Fwww.patr
>>>> >>> >eon.com%2Fpiotrzarzycki&data=02%7C01%7Cpent%40adobe.com%
>>>> >>> 7C61ec983f6a9747bd
>>>> >>> >cd7d08d552239493%7Cfa7b1b5a7b34438794aed2c178de
>>>> >>> cee1%7C0%7C0%7C636505235128
>>>> >>> >887083&sdata=Y%2BHjYn%2BGj%2Bhb0VVVy7fSW%2BGEvQo2%
>>>> >>> 2FUjH2EhucTbxR8Q%3D&rese
>>>> >>> >rved=0>*
>>>> >>>
>>>> >>>
>>>> >>
>>>> >>
>>>> >>--
>>>> >>
>>>> >>Piotr Zarzycki
>>>> >>
>>>> >>Patreon:
>>>> >>*https://na01.safelinks.protection.outlook.com/?url=
>>>> https%3A%2F%2Fwww.pat
>>>> >>r
>>>> >>eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com
>>>> %7C4ed02057c74e4
>>>> >>5
>>>> >>0da30908d552277e71%7Cfa7b1b5a7b34438794aed2c178de
>>>> cee1%7C0%7C0%7C636505251
>>>> >>9
>>>> 
>>>>>>40120787&sdata=aJzPBX5fyLQVXr21gO9aLOIIQhVMgf3QaT4qEcsnWE4%3D&reserve
>>>>>>d
>>>>>>=
>>>>>>0
>>>> >><https://na01.safelinks.protection.outlook.com/?url=
>>>> https%3A%2F%2Fwww.pat
>>>> >>r
>>>> >>eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com
>>>> %7C4ed02057c74e4
>>>> >>5
>>>> >>0da30908d552277e71%7Cfa7b1b5a7b34438794aed2c178de
>>>> cee1%7C0%7C0%7C636505251
>>>> >>9
>>>> >>40120787&sdata=aJzPBX5fyLQVXr21gO9aLOIIQhVMgf
>>>> 3QaT4qEcsnWE4%3D&reserved=0>
>>>> >>*
>>>> >
>>>>
>>>>
>>>
>>>
>>>-- 
>>>
>>>Piotr Zarzycki
>>>
>>>Patreon: 
>>>*https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.pa
>>>t
>>>r
>>>eon.com%2Fpiotrzarzycki&data=02%7C01%7Cpent%40adobe.com%7Cbc91b6fdde6b49
>>>0
>>>b
>>>314408d552cf1a3d%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6365059718
>>>6
>>>0
>>>386569&sdata=6jY4KSQS6PyNDnWtW3XBVP69nGU%2FHJYfyxHdhurBwh0%3D&reserved=0
>>><https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.pa
>>>t
>>>r
>>>eon.com%2Fpiotrzarzycki&data=02%7C01%7Cpent%40adobe.com%7Cbc91b6fdde6b49
>>>0
>>>b
>>>314408d552cf1a3d%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6365059718
>>>6
>>>0
>>>386569&sdata=6jY4KSQS6PyNDnWtW3XBVP69nGU%2FHJYfyxHdhurBwh0%3D&reserved=0
>>>>
>>>*
>>
>

Reply via email to