From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dieter Van Eessen Subject: Difficulties using adopt-elements and interpret-data Date: Mon, 19 Jan 2015 11:39:36 +0100 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001a113abd0249c991050cfef0c2 Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:35323) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YD9kB-0000Hb-1r for emacs-orgmode@gnu.org; Mon, 19 Jan 2015 05:39:41 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YD9k8-0002um-SP for emacs-orgmode@gnu.org; Mon, 19 Jan 2015 05:39:38 -0500 Received: from mail-yk0-x236.google.com ([2607:f8b0:4002:c07::236]:46520) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YD9k8-0002uf-KJ for emacs-orgmode@gnu.org; Mon, 19 Jan 2015 05:39:36 -0500 Received: by mail-yk0-f182.google.com with SMTP id q200so4102393ykb.13 for ; Mon, 19 Jan 2015 02:39:36 -0800 (PST) List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org --001a113abd0249c991050cfef0c2 Content-Type: multipart/alternative; boundary=001a113abd0249c98a050cfef0c0 --001a113abd0249c98a050cfef0c0 Content-Type: text/plain; charset=UTF-8 Hello, I've been working on what I've explained earlier (cf. below). For the expansion of a (single) item to a subheadline I currently got the headline with appropriate properties. But I'm facing problems on adding it to the ast of the headline containing the item. Would it be possible to take a look and point me in the right direction? The file is in attachment, it contains quite some junk, but only 2 functions are involved atm: the interactive org-concept-expand which calls org-concept--expand-item. Stuck in the latter, part 3 integration. Basically what I need as result (first implementation) is INPUT * elementA + itemA + itemB When point is on itemB, calling org-concept-expand will result in OUTPUT * elementA + itemA + itemB ** :itemB: Thanks, Dieter On Sat, Jan 17, 2015 at 6:02 PM, Dieter Van Eessen < dieter.van.eessen@gmail.com> wrote: > Hello, > > Nicolas pointed me in the right direction! It was so obvious that I looked > right passed it: > Should just create a temp buffer with the text (headline+plainlist+text) i > wish to parse, then parse that temp-buffer... so obvious, sorry for the > waste of time. > > Just to give an idea of what I'm trying to accomplish: > The first implementation remains simple: I'll create 2 interactive > functions, > > 1: Having point on headline, (concept-expand) will call > (concept-expand-headline) in which a level 1 headline containing a link is > expanded based on the content of that link. Subheadline becomes + > plainlist, +plainlist becomes -plainlist. For example: > * readme > Some text... > ** goal > Anything... > ** [[*something][something]] step > + woot > * [[*readme][readme]] This is a readme > > Expanding headline 'this is a readme' would result in > * [[*readme][readme]] This is a readme > + goal > + [[*something][something]] step > > 2: Having point on item, (concept-expand) will call (concept-expand-item) > in which items get expanded > For example: expanding item 'step results in > * [[*readme][readme]] This is a readme > + goal > + [[*something][something]] step > ** [[link of choice or no link at all]] Do this first :step: > > Now this does seem quite stupid. In a second and third implementation I'll > try to increase the locations where concepts may be found (project, > personal, system-wide), in files (based on filename and directory) or > subheadlines (instead of headlines), expanding subheadlines and files > (based on filename and directory),... > > I'm kind of looking for a way to create some abstractions/concepts, > without ever being tied to a static model/template. People must never be > forced to use the system. It remains a free choice whether you use > concepts, create your own or just choose to write anything. Any document > always remains human readable plain text. Some concepts will always be > very divers, others will survive the test of time and stabilize. > > What do you think? Waste of time? :) > > kind regards, > Dieter > > > On Sat, Jan 17, 2015 at 1:33 AM, Rasmus wrote: > >> Hi Dieter, >> >> Dieter Van Eessen writes: >> >> > Hello Rasmus, >> > >> > Thank you for the fast reply, the link you've given on interpreting is >> very >> > useful ! Also didn't know there existed such thing as the org-dp >> library to >> > manipulate org-elements, I'll sure check it out. >> >> I don't know org-dp myself, but Thorsten posts here regularly. >> >> > More about question number 3: >> >>> 3) How can the output of (org-element-parse-secondary-string ...) be >> >>> used. >> >>> When I give a heading and bit of text as input (output of >> >>> buffer-substring), it looks like it returns the 'content' of the >> region. >> >>> Though I can't seem to use it anyway as 'CONTENT' for the functions >> >>> requiring this. >> > >> > The reason I've tried this (and the internal >> org-element--parse-elements) >> > is because I'd prefer not having to parse the whole buffer and still get >> > the contents. The local parsing functions (org-element-at-point) and >> > (org-element-context) don't contain content (stated in the org-element >> api, >> > also tried it). >> >> But all elements contain :begin and :end and most :contens-begin >> and :contents-end (maybe sans an 's'). >> >> > Now I'm not sure IF I really NEED it? I could actually get the contents >> > using the :content-begin and :content-end and other properties from >> > (org-elemen-at-point) BUT I don't know the exact syntax the content >> should >> > have and how to merge it with the element-list I get from >> > (org-element-at-point) before feeding it to the >> org-element-interpret-data. >> >> Maybe it would be easier if you state plainly what your desired goal is? >> It's all a bit abstract. You can write pretty sophisticated things using >> just (org-element-at-point) (e.g. I have a function that escapes >> *math-su{b,per}script* on double space at appropriate places). >> >> > [...] >> > At first I thought that the things behind # were 'content' (for >> example in >> > the output below. These don't show up in (org-element-at-point), thus >> > explaining why they returned nil when asked for content. The >> > org-element-parse-secondary-string also returns all things behind #. If >> > this is NOT content, then how to manipulate this data (behind the #) >> whilst >> > assuring that syntax and position remains valid for >> > org-element-interpret-data to understand? >> >> If you want to manipulate the buffer text use the great functions. You >> can condition on the element under point or whatever you desire and then >> use the regular functions you'd otherwise use. I'm probably wrong, but it >> seems as if you trying to shoot flies with canons, or however the saying >> goes in English. Also, recall there is no such thing as wrong Org-syntax >> (but there is unexpected outcomes). >> >> Check Org.el if you want. >> >> Cheers, >> Rasmus >> >> -- >> Not everything that goes around comes back around, you know >> >> >> > > > -- > gtz, > Dieter VE > -- gtz, Dieter VE --001a113abd0249c98a050cfef0c0 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hello,

I've been working on wha= t I've explained earlier (cf. below). For the expansion of a (single) i= tem to a subheadline I currently got the headline with appropriate properti= es. But I'm facing problems on adding it to the ast of the headline con= taining the item.

Would it be possible to take a look and= point me in the right direction?
The file is in attachment, = it contains quite some junk, but only 2 functions are involved atm: the int= eractive org-concept-expand which calls org-concept--expand-item. Stuck in = the latter, part 3 integration.

Basically what I need as = result (first implementation) is
INPUT
* elemen= tA
=C2=A0=C2=A0 + itemA
=C2=A0=C2=A0 + itemB

When point is on itemB, calling org-concept-expa= nd will result in
OUTPUT
* elementA
=C2=A0=C2=A0 + itemA=C2=A0
=C2=A0=C2=A0 + itemB
=
** <name or default>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 :itemB:
Thanks,
Dieter

On Sat, Jan 17, 2015 = at 6:02 PM, Dieter Van Eessen <dieter.van.eessen@gmail.com&g= t; wrote:
Hello,

Nicolas pointed me in the right direction! It w= as so obvious that I looked right passed it:
Should just create a = temp buffer with the text (headline+plainlist+text) i wish to parse, then p= arse that temp-buffer... so obvious, sorry for the waste of time.

Just to give an idea of what I'm trying to accomplish:
The first implementation remains simple: I'll create 2 interacti= ve functions,

1: Having point on headline, (concept-expand) will cal= l (concept-expand-headline) in which a level 1 headline containing a link i= s expanded based on the content of that link. Subheadline becomes + plainli= st, +plainlist becomes -plainlist. For example:
* readme
<= /div>
=C2=A0=C2=A0 Some text...
** goal
=C2= =A0=C2=A0=C2=A0 Anything...
** [[*something][something]] step=
=C2=A0=C2=A0=C2=A0 + woot
* [[*readme][readme]= ] This is a readme

Expanding headline 'this is a read= me' would result in
* [[*readme][readme]] This is a readm= e
=C2=A0=C2=A0=C2=A0 + goal
=C2=A0=C2=A0=C2=A0 = + [[*something][something]] step

2: Having point on item,= (concept-expand) will call=C2=A0 (concept-expand-item) in which items get = expanded
For example: expanding item 'step results in
=
* [[*readme][readme]] This is a readme
=C2=A0=C2= =A0 + goal
=C2=A0=C2=A0 + [[*something][something]] step
<= /div>
** [[link of choice or no link at all]] Do this first =C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 :step:

Now t= his does seem quite stupid. In a second and third implementation I'll t= ry to increase the locations where concepts may be found (project, personal= , system-wide), in files (based on filename and directory) or subheadlines = (instead of headlines), expanding subheadlines and files (based on filename= and directory),...

I'm kind of looking f= or a way to create some abstractions/concepts, without ever being tied to a= static model/template. People must never be forced to use the system. It r= emains a free choice whether you use concepts, create your own or just choo= se to write anything. Any document always remains human readable plain text= .=C2=A0 Some concepts will always be very divers, others will survive the t= est of time and stabilize.

What do you think?= Waste of time? :)

kind regards,
Dieter
=
=C2=A0

On Sat, Jan 17, 2015 at 1:33 AM, Rasmus <rasm= us@gmx.us> wrote:
Hi Diete= r,

Dieter Van Eessen <dieter.van.eessen@gmail.com> writes:

> Hello Rasmus,
>
> Thank you for the fast reply, the link you've given on interpretin= g is very
> useful ! Also didn't know there existed such thing as the org-dp l= ibrary to
> manipulate org-elements, I'll sure check it out.

I don't know org-dp myself, but Thorsten posts here regularly.
> More about question number 3:
>>> 3) How can the output of (org-element-parse-secondary-string .= ..) be
>>> used.
>>> When I give a heading and bit of text as input (output of
>>> buffer-substring), it looks like it returns the 'content&#= 39; of the region.
>>> Though I can't seem to use it anyway as 'CONTENT' = for the functions
>>> requiring this.
>
> The reason I've tried this (and the internal org-element--parse-el= ements)
> is because I'd prefer not having to parse the whole buffer and sti= ll get
> the contents. The local parsing functions (org-element-at-point) and > (org-element-context) don't contain content (stated in the org-ele= ment api,
> also tried it).

But all elements contain :begin and :end and most :contens-begin
and :contents-end (maybe sans an 's').

> Now I'm not sure IF I really NEED it? I could actually get the con= tents
> using the=C2=A0 :content-begin and :content-end and other properties f= rom
> (org-elemen-at-point)=C2=A0 BUT I don't know the exact syntax the = content should
> have and how to merge it with the element-list I get from
> (org-element-at-point) before feeding it to the org-element-interpret-= data.

Maybe it would be easier if you state plainly what your desired goal= is?
It's all a bit abstract.=C2=A0 You can write pretty sophisticated thing= s using
just (org-element-at-point) (e.g. I have a function that escapes
*math-su{b,per}script* on double space at appropriate places).

> [...]
> At first I thought that the things behind #=C2=A0 were 'cont= ent' (for example in
> the output below. These don't show up in (org-element-at-point), t= hus
> explaining why they returned nil when asked for content. The
> org-element-parse-secondary-string also returns all things behind #. I= f
> this is NOT content, then how to manipulate this data (behind the #) w= hilst
> assuring that syntax and position remains valid for
> org-element-interpret-data to understand?

If you want to manipulate the buffer text use the great functions.= =C2=A0 You
can condition on the element under point or whatever you desire and then use the regular functions you'd otherwise use.=C2=A0 I'm probably w= rong, but it
seems as if you trying to shoot flies with canons, or however the saying goes in English.=C2=A0 Also, recall there is no such thing as wrong Org-syn= tax
(but there is unexpected outcomes).

Check Org.el if you want.

Cheers,
Rasmus

--
Not everything that goes around comes back around, you know





--
gtz,
Dieter VE



--
gtz,
Dieter VE
--001a113abd0249c98a050cfef0c0-- --001a113abd0249c991050cfef0c2 Content-Type: application/octet-stream; name="org-concept.el" Content-Disposition: attachment; filename="org-concept.el" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i53pzke30 Ozs7IG9yZy1jb25jZXB0LmVsCjs7Cjs7IC0gU3RhcnQgd2l0aCBzaW1wbGUgaW1wbGVtZW50YXRp b24gb2Ygb3JnLWNvbmNlcHQtZXhwYW5kOgo7OyAgIC0gT25seSB2YWxpZCBsaW5rcyAodG8gZWxl bWVudHMpIHdpdGhpbiAxIGZpbGUKOzsgICAtIEFzc3VtbyBvbmx5IHZhbGlkIGNvbnRlbnQgKGRv bid0IGNoZWNrKQo7OyAgIC0gQXNzdW1lIG9ubHkgdXNpbmcgdG9wIGxldmVsIGhlYWRsaW5lcyBh bmQgcGxhaW5saXN0cwo7OyAgIC0gT24gaGVhZGxpbmVzOiBkZWZsYXRlOgo7OyAgICAgLSAqKiBi ZWNvbWVzICsKOzsgICAgIC0gKyBiZWNvbWVzIC0KOzsgICAtIE9uIHBsYWluIGxpc3Q6IGluZmxh dGU6Cjs7ICAgLSBpdGVtIGJlY29tZXMgKioKCihkZWZ1biBvcmctY29uY2VwdC1leHBhbmQgKGVs ZW1lbnQtYXQtcG9pbnQpCiAgICJFeHBhbmQgdGhlIGN1cnJlbnQgZWxlbWVudCBieSBzZWFyY2hp bmcgdGhlIHJlcXVlc3RlZCB0ZW1wbGF0ZSIKICAgOzsgaW50ZXJhY3RpdmUgZnVuY3Rpb246IG5l ZWQgCiAgIDs7ICAtIG9yZy1lbGVtZW50IG9uIHRoZSBjdXJyZW50IGxpbmUgKGdldCBsaW5rIHdp dGhpbiwKICAgOzsgICBuYW1lIGFuZCB0YWcsIHN0YXJ0IHdpdGgganVzdCBsaW5rIGFuZCBuYW1l KQogICA7OyAgLSAodXBwZXItbGV2ZWwgZWxlbWVudCksIG5vdCBzdXJlIGlmIHJlcXVpcmVkCiAg IDs7ICAtbG9jYXRpb24gb2Ygb3JnLWVsZW1lbnQKICAgOzsgIC10aGUgY3VycmVudCBidWZmZXIK CiAgIChpbnRlcmFjdGl2ZQogICAgKGxldCAoZWxlbWVudC1hdC1wb2ludCkKICAgICAgKGZvcndh cmQtY2hhcikgO3RvIG1ha2Ugc3VyZSB5b3UgaGF2ZSBpdGVtIChubyBwbGFpbi1saXN0KSAKICAg ICAgKHNldHEgZWxlbWVudC1hdC1wb2ludCAob3JnLWVsZW1lbnQtYXQtcG9pbnQpKQogICAgICAo bGlzdCBlbGVtZW50LWF0LXBvaW50KSkpCgogICA7OyBGT0NVUyBPTiBBUkVBOiBVc2UgbWFyay1z dWJ0cmVlIGFuZCBuYXJyb3ctcmVnaW9uCiAgIChvcmctdXAtaGVhZGluZy1zYWZlKQogICAobGV0 ICgoaGVhZGxpbmUtdXAgKG9yZy1lbGVtZW50LWF0LXBvaW50KSkpCiAgICAgKG5hcnJvdy10by1y ZWdpb24KICAgICAgKG9yZy1lbGVtZW50LXByb3BlcnR5ICc6YmVnaW4gaGVhZGxpbmUtdXApCiAg ICAgIChvcmctZWxlbWVudC1wcm9wZXJ0eSAnOmVuZCBoZWFkbGluZS11cCkpKQogICAoZ290by1j aGFyICgrIDEgKG9yZy1lbGVtZW50LXByb3BlcnR5ICc6YmVnaW4gZWxlbWVudC1hdC1wb2ludCkp KQogICAKICAgOzsgU1BMSVQgRlVOQ1RJT05BTElUWToKICAgOzsgSWYgZWxlbWVudCBpcyBhIHRv cCBsZXZlbCBoZWFkbGluZSwgc3RhcnQgb3JnLWNvbmNlcHQtZXhwYW5kLWhlYWRsaW5lLiBFbGlm IGVsZW1lbnQgaXMgcGxhaW4tbGlzdCBvciBpdGVtLCBzdGFydCBvcmctY29uY2VwdC1leHBhbmQt aXRlbQogICAoaWYgKGVxICdoZWFkbGluZSAob3JnLWVsZW1lbnQtdHlwZSBlbGVtZW50LWF0LXBv aW50KSkKICAgICAgIChvcmctY29uY2VwdC0tZXhwYW5kLWhlYWRsaW5lIChlbGVtZW50LWF0LXBv aW50KSkKICAgICAoaWYgKG9yZy1pbi1pdGVtLXApCiAgICAgOztIYXJkIG9uZSwgYXMgb25seSBm aXJzdCArIGlzIHBsYWluIGxpc3QsIHJlc3QgaXMgZWlnaHRlciBpdGVtLCBwYXJhZ3JhZ2ggb3Ig c29tZXRoaW5nIGVsc2UgZGVwZW5kaW5nIG9uIHBvc2l0aW9uLiBTaW5jZSBvbmx5ICBleHBhbnNp b24gb2YgdG9wIGxldmVsIHBsYWluIGxpc3QgaXRlbXMgaXMgYWxsb3dlZCwgd2UgY2FuIHNhZmVs eSBrZWVwIG9uIHVzaW5nIHRoZSBwYXJlbnQsIFVOVElMTCBpdCdzIHBhcmVudCBpcyB0aGUgcGxh aW4tbGlzdCB0eXBlLiAJCgkgKHByb2duCgkgICAoc2V0cSBwYXJlbnRFbGVtZW50VHlwZSAob3Jn LWVsZW1lbnQtdHlwZSAob3JnLWVsZW1lbnQtcHJvcGVydHkgJzpwYXJlbnQgZWxlbWVudC1hdC1w b2ludCkpKQoJICAgKHdoaWxlIChub3QgKGVxICdwbGFpbi1saXN0IHBhcmVudEVsZW1lbnRUeXBl KSkKCSAgICAgKHNldHEgZWxlbWVudC1hdC1wb2ludCAob3JnLWVsZW1lbnQtcHJvcGVydHkgJzpw YXJlbnQgZWxlbWVudC1hdC1wb2ludCkpCgkgICAgIChzZXRxIHBhcmVudEVsZW1lbnRUeXBlIChv cmctZWxlbWVudC10eXBlIChvcmctZWxlbWVudC1wcm9wZXJ0eSAnOnBhcmVudCBlbGVtZW50LWF0 LXBvaW50KSkpKQoJICAgKG9yZy1jb25jZXB0LS1leHBhbmQtaXRlbSBlbGVtZW50LWF0LXBvaW50 KSkKICAgICAgIChtZXNzYWdlICInb3JnLWNvbmNlcHQtZXhwYW5kJyByZXF1aXJlcyBwb3NpdGlv biBvbiBoZWFkaW5nIG9yIGxpc3QgaXRlbSAiKSkpCgogICAod2lkZW4pCiAgICkKCihnbG9iYWwt c2V0LWtleSAiXEMtY1xDLXhcQy1lIiAnb3JnLWNvbmNlcHQtZXhwYW5kKQoKKGRlZnVuIG9yZy1j b25jZXB0LS1leHBhbmQtaXRlbSAoaXRlbSkKICA7OyBGaXJzdCBpbXBsZW1lbnRhdGlvbgogIDs7 IC0gb25seSB2YWxpZCBmb3IgdG9wIGxldmVsIGl0ZW1zCiAgOzsgLSBvbmx5IHdpdGggbGlua3Mg cG9pbnRpbmcgdG8gZWxlbWVudHMgd2l0aGluIHRoZSBmaWxlCiAgOzsKICA7OyAhIElmIHlvdSBh cmUgd29ya2luZyBpbiB0aGUgdHJlZSBhbmQgbmVlZCB0byByZXR1cm4gdG8gaXRlbToKICA7OyAg KGdvdG8tY2hhciAoKyAob3JnLWVsZW1lbnQtcHJvcGVydHkgJzpiZWdpbiBpdGVtKSAxKSkKICA7 OyBPdGhlcndpc2UgeW91IGdldCB0aGUgcGxhaW4tbGlzdCBvciBhIHBhcmFncmFwaAogIDs7IFJl dHVybnMgdCBpZiBleHBhbnNpb24gd2FzIHN1Y2Nlc3MsIG5pbCBvdGhlcndpc2UKCiAgKHNldHEg YXN0IChvcmctZWxlbWVudC1wYXJzZS1idWZmZXIpKQogIChzZXRxIHBhcmVudCAob3JnLWVsZW1l bnQtY29udGVudHMgYXN0KSkKICA7OyAhIHRvIGdldCBwcm9wZXJ0eSB1c2UgKGNhciBwYXJlbnQp LAogIDs7IGRvdWJsZSBicmFjZXMgYXJvdW5kIGNvbnRlbnQKICAKICA7OyBQQVJUIDE6IGNyZWF0 aW5nIHN1YmhlYWRpbmcsIGJhc2VkIG9uIG93bmluZyBoZWFkbGluZQogIDs7IDEuMTogQ3JlYXRp bmcgZHVtbXkgaGVhZGxpbmUKICA7OyAgKGJlZW4gbG9va2luZyBhdCBvcmctZHAsIGJ1dCBkb24n dCBsaWtlIGl0Li4uKQogIChnb3RvLWNoYXIgKHBvaW50LW1heCkpCiAgKG5ld2xpbmUpCiAgKGdv dG8tY2hhciAoLShwb2ludC1tYXgpIDEpKQogIChpbnNlcnQgIiogIikKICAoc2V0cSBpdGVtLWFz LWhlYWRsaW5lIChvcmctZWxlbWVudC1oZWFkbGluZS1wYXJzZXIgKHBvaW50KSAxKSkKICAoZGVs ZXRlLXJlZ2lvbiAoLSAocG9pbnQtbWF4KSAzKSAocG9pbnQtbWF4KSkKCiAgOzsgMS4yOiBNb2Rp ZnkgcHJvcGVydGllcwogIChsZXQgKGxldmVsIHRhZ3MgdGl0bGUpCiAgICAoc2V0cSBsZXZlbCAo KyAxIChvcmctZWxlbWVudC1wcm9wZXJ0eSAnOmxldmVsIChjYXIgcGFyZW50KSkpKQogICAgOzsg KGJ1ZmZlci1zdWJzdHJpbmcpIGFsc28gdGFrZXMgaW50byBhY2NvdW50IHRleHQgcHJvcGVydGll cywgbGlrZSBmb250LiBJIG9ubHkgbmVlZCBwdXJlIGNoYXJhY3RlcnMuCiAgICAoc2V0cSB0YWdz IChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMKICAgIAkJKG9yZy1lbGVtZW50LXByb3Bl cnR5ICc6Y29udGVudHMtYmVnaW4gaXRlbSkKICAgIAkJKC0gKG9yZy1lbGVtZW50LXByb3BlcnR5 ICc6Y29udGVudHMtZW5kIGl0ZW0pIDEpKSkKICAgIChzZXRxIHRpdGxlICJUT0RPOiBhc2sgdGl0 bGUsIGRlZmF1bHQgdmFsdWU6IDx0YWc+LW51bWJlciIpCiAgICAKICAgIChvcmctZWxlbWVudC1w dXQtcHJvcGVydHkgaXRlbS1hcy1oZWFkbGluZSAnOmxldmVsIGxldmVsKQogICAgKG9yZy1lbGVt ZW50LXB1dC1wcm9wZXJ0eSBpdGVtLWFzLWhlYWRsaW5lICc6dGFncyB0YWdzKQogICAgCiAgICAo b3JnLWVsZW1lbnQtcHV0LXByb3BlcnR5IGl0ZW0tYXMtaGVhZGxpbmUgJzp0aXRsZSB0aXRsZSkK ICAgIChvcmctZWxlbWVudC1wdXQtcHJvcGVydHkgaXRlbS1hcy1oZWFkbGluZSAnOnJhdy12YWx1 ZSB0aXRsZSkpCgogIDs7IFBBUlQgMjogbW9kaWZ5aW5nIGl0ZW0gKGVnLiBjb3VudGVyKQogIDs7 IChOb3QgaW4gZmlyc3QgaW1wbGVtZW50YXRpb24pCgogIDs7IFBBUlQgMzogaW50ZWdyYXRpb24K ICA7OyhkZWJ1ZykKICA7OyBKdXN0IGNoZWNraW5nUEgKICA7OyhvcmctZWxlbWVudC1pbnRlcnBy ZXQtZGF0YSBhc3QpIDs7IGZvciBjb21wYXJpc29uCiAgOzsob3JnLWVsZW1lbnQtaGVhZGxpbmUt aW50ZXJwcmV0ZXIgaXRlbS1hcy1oZWFkbGluZSBuaWwpCiAgCiAgOzsoc2V0cSB0ZXN0IChvcmct ZWxlbWVudC1hZG9wdC1lbGVtZW50cyBwYXJlbnQgaXRlbS1hcy1oZWFkbGluZSkpCiAgOzsgIChv cmctZWxlbWVudC1pbnRlcnByZXQtZGF0YSB0ZXN0KQoKIDs7IChvcmctZWxlbWVudC1zZXQtY29u dGVudHMgYXN0IHRlc3QpCiA7OyAob3JnLWVsZW1lbnQtaW50ZXJwcmV0LWRhdGEgYXN0KSAKOyAg KG9yZy1lbGVtZW50LWFkb3B0LWVsZW1lbnRzIHBhcmVudCBuZXdobCkKKQogIAooZGVmdW4gb3Jn LWNvbmNlcHQtLWV4cGFuZC1oZWFkbGluZSAocG9pbnQpCiAgOzsgRmlyc3QgaW1wbGVtZW50YXRp b24KICA7OyAtIG9ubHkgdmFsaWQgZm9yIHRvcCBsZXZlbCBoZWFkbGluZXMKICA7OyAtIG9ubHkg d2l0aCBsaW5rcyBwb2ludGluZyB0byBlbGVtZW50cyB3aXRoaW4gdGhlIGZpbGUKICA7OyBSZXR1 cm5zIHQgaWYgZXhwYW5zaW9uIHdhcyBzdWNjZXNzLCBuaWwgb3RoZXJ3aXNlCgogIChjYXRjaCAn bm90WWV0SW1wbGVtZW50ZWQKICA7OyBQcm9qZWN0IGluIGluaXRpYWwgcGhhc2U6IFRPRE8ncyBh bGwgYXJvdW5kCiAgKGlmIChub3QgKGVxICcxIChvcmctZWxlbWVudC1wcm9wZXJ0eSAnOmxldmVs IGVsZW1lbnQpKSkKICAgICAodGhyb3cgJ25vdFlldEltcGxlbWVudGVkIChtZXNzYWdlICJub3RZ ZXRJbXBsZW1lbnRlZDogRXhwYW5kaW5nIHN1Yi1oZWFkbGluZXMiKSkpCiAgKGlmIChvcmctZWxl bWVudC1wcm9wZXJ0eSAnOnRhZyBlbGVtZW50KQogICAgICh0aHJvdyAnbm90WWV0SW1wbGVtZW50 ZWQgKG1lc3NhZ2UgIm5vdFlldEltcGxlbWVudGVkOiBSZXZlcnNlIGNoZWNrdXAgb2YgdGFncyIp KSkKCiAgOzsgKGRlYnVnKQogIDs7IChtZXNzYWdlIChwcmluMS10by1zdHJpbmcgZWxlbWVudCkp CiAgOzsgT3V0cHV0IG9mIG9yZy1lbGVtZW50LWF0LXBvaW50CiAgOyBPbiBhIGhlYWRsaW5lKGhl YWRsaW5lICg6cmF3LXZhbHVlICJCcmFpbnN0b3JtaW5nIiA6YmVnaW4gNjAxOCA6ZW5kIDg3NjIg OnByZS1ibGFuayAwIDpoaWRkZW5wIG91dGxpbmUgOmNvbnRlbnRzLWJlZ2luIDYwMzQgOmNvbnRl bnRzLWVuZCA4NzUyIDpsZXZlbCAxIDpwcmlvcml0eSBuaWwgOnRhZ3MgbmlsIDp0b2RvLWtleXdv cmQgbmlsIDp0b2RvLXR5cGUgbmlsIDpwb3N0LWJsYW5rIDMgOmZvb3Rub3RlLXNlY3Rpb24tcCBu aWwgOmFyY2hpdmVkcCBuaWwgOmNvbW1lbnRlZHAgbmlsIDpxdW90ZWRwIG5pbCA6Q0FURUdPUlkg IkNSRUFURSIgOnRpdGxlICJCcmFpbnN0b3JtaW5nIikpKQogIAogIDs7IFBBUlQgMTogR2V0IGNv bmNlcHRzIGRlZmluaW5nIGVsZW1lbnQKICA7OyBQYXJ0IDEuMTogQ3JlYXRpbmcgYSBwcm9wZXJ0 eSBsaXN0IHdpdGggZWxlbWVudHMgaW4gbGluay4KICAKOzsgIChzZXRxIG9yZy1jb25jZXB0LXBs aXN0IChvcmctY29uY2VwdC1zcGxpdC1saW5lKSkKICAKICA7OyBQYXJ0IDEuMjogR2V0IGEgbGlz dCBjb250YWluaW5nIHRoZSBvcmctZWxlbWVudHMgb2YgY29uY2VwdHMKICA7OyBQQVJUIDI6IAoK ICAKICApKQoKKGRlZnVuIG9yZy1jb25jZXB0LS1zcGxpdC1saW5lIChsaW5lKQogIDs7IENoZWNr cyB0aGUgY3VycmVudCBsaW5lIGlmOgogIDs7IC0gTGlua3MgYXJlIGF2YWlsYWJsZQogIDs7IC0g TGlua3MgYXJlIHZhbGlkCiAgOzsgLSAoVE9ETykgQ3JlYXRlIHJldmVyc2UgbGluayBmb3IgVEFH CiAgOzsgLSAoTUFZQkUpIFB1dCByZXN0cmljdGlvbiBvbiBuYW1lOiBOb3QgbW9yZSB0aGFuCiAg OzsgICAgMSBzZW50ZW5jZSBvciBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzLgogIDs7CiAg OzsgSWYgbm8gbGluayBmb3VuZDogY2FsbCBvcmctY29uY2VwdC1jaGVjayB3aGljaCBzZWFyY2hl cyBsaW5rIGJhc2VkIG9uIHBsYWluIHRleHQuCiAgOzsKICA7OyBSZXR1cm5zOgogIDs7IC0gcGxp c3QgKGl0ZW0sIHZhbHVlcykgZm9yIGV2ZXJ5IGVsZW1lbnQKICA7OyAtIE5pbGwgaWYgYW55IHBy b2JsZW0gaXMgZGV0ZWN0ZWQKICA7OyAtIEZpbmFsIGltcGxlbWVudGF0aW9uIHNob3VsZCBORVZF UiByZXR1cm4gbmlsbCwgYnV0IGNhbGwgdGhlIGFwcm9wcmlhdGUgZnVuY3Rpb25zIHRvIHNvbHZl IHRoZSBwcm9ibGVtLgogIChtZXNzYWdlICJUT0RPOiBMaW5lLXRlc3RlciIpCiAgJ25pbAogICkK CihkZWZ1biBvcmctY29uY2VwdC0tY2hlY2sgKCkKICA7OyBGdW5jdGlvbmFsaXRpZXM6CiAgOzsg SWYgdGhlcmUgaXMgbm8gbGluazogY2hlY2sgaWYgcGxhaW4gdGV4dCBjb25jZXB0IGV4aXN0cyBh bmQgYWRkIGxpbmsuIEFzayBpZiBvcmctY29uY2VwdC1leHBhbmQgaXMgcmVxdWlyZWQuIElmIHRo ZXJlIGlzIGxpbms6IGNoZWNrIGlmIHRoZSBleHBhbnNpb24gaXMgc3RpbGwgY29ycmVjdCBjb21w YXJlZCB0byBsaW5rICgrIHJlY3Vyc2l2ZSBmb3IgaGVhZGxpbmUgKyBhbGwgaXRlbXMpCiAgKG1l c3NhZ2UgIlRPRE86IGNoZWNrZXIiKQogICduaWwKICApCiAKOzsgT3V0cHV0IG9mIG9yZy1lbGVt ZW50LWF0LXBvaW50CjsgT24gYSBoZWFkbGluZShoZWFkbGluZSAoOnJhdy12YWx1ZSAiQnJhaW5z dG9ybWluZyIgOmJlZ2luIDYwMTggOmVuZCA4NzYyIDpwcmUtYmxhbmsgMCA6aGlkZGVucCBvdXRs aW5lIDpjb250ZW50cy1iZWdpbiA2MDM0IDpjb250ZW50cy1lbmQgODc1MiA6bGV2ZWwgMSA6cHJp b3JpdHkgbmlsIDp0YWdzIG5pbCA6dG9kby1rZXl3b3JkIG5pbCA6dG9kby10eXBlIG5pbCA6cG9z dC1ibGFuayAzIDpmb290bm90ZS1zZWN0aW9uLXAgbmlsIDphcmNoaXZlZHAgbmlsIDpjb21tZW50 ZWRwIG5pbCA6cXVvdGVkcCBuaWwgOkNBVEVHT1JZICJDUkVBVEUiIDp0aXRsZSAiQnJhaW5zdG9y bWluZyIpKSkKOzsgT3V0cHV0IG9mIG9yZy1lbGVtZW50LWF0LXBvaW50CjsgT24gYSBsaXN0IGl0 ZW0gKCJMaW5lIDk1IiAocGxhaW4tbGlzdCAoOnR5cGUgdW5vcmRlcmVkIDpiZWdpbiA2MDg0IDpl bmQgNjI3MiA6Y29udGVudHMtYmVnaW4gNjA4NCA6Y29udGVudHMtZW5kIDYyNzIgOnN0cnVjdHVy ZSAoKDYwODQgMCAiLSAiIG5pbCBuaWwgbmlsIDYxMjUpICg2MTI1IDAgIi0gIiBuaWwgbmlsIG5p bCA2MTYwKSAoNjE2MCAwICItICIgbmlsIG5pbCBuaWwgNjI3MikgKDYyMjUgMiAiLSAiIG5pbCBu aWwgbmlsIDYyNzIpKSA6cG9zdC1ibGFuayAwIDpwb3N0LWFmZmlsaWF0ZWQgNjA4NCA6cGFyZW50 IG5pbCkpKQoKKGRlZnVuIHRlc3QgKHN1YmplY3QpCiAgICAoaW50ZXJhY3RpdmUKICAgICAobGV0 IChzdWJqZWN0KQogICAgICAgKHNldHEgc3ViamVjdCAob3JnLWVsZW1lbnQtYXQtcG9pbnQpKQog ICAgICAgKGxpc3Qgc3ViamVjdCkpKQoKICAgIChkZWJ1ZykKICAgIChzZXRxIGVsZW1lbnQtYXQt cG9pbnQgc3ViamVjdCkKICAgICkKICAoZGVidWcpCiAgKHNldHEgY29udGVudCAob3JnLWVsZW1l bnQtY29udGVudHMgKG9yZy1lbGVtZW50LXBhcnNlLWJ1ZmZlcikpKQogIDs7IENhbnQgcmVhbGx5 IHVzZSAKOyAgKHNldHEgZWxlbWVudC1saW5lYWdlIChvcmctZWxlbWVudC1saW5lYWdlIHN1Ympl Y3QpKQogIDs7IE9LIHRvIHVzZQogIDs7IChzZXRxIGVsZW1lbnQtY3VycmVudCAob3JnLWVsZW1l bnQtLWN1cnJlbnQtZWxlbWVudCAob3JnLWVsZW1lbnQtcHJvcGVydHkgJzpiZWdpbiBzdWJqZWN0 KSkpCiAgOzsgKHNldHEgZWxlbWVudC1zdHJpbmcgKGJ1ZmZlci1zdWJzdHJpbmcgKG9yZy1lbGVt ZW50LXByb3BlcnR5ICc6YmVnaW4gc3ViamVjdCkgKG9yZy1lbGVtZW50LXByb3BlcnR5ICc6ZW5k IHN1YmplY3QpKSkKICA7OyAoc2V0cSBlbGVtZW50LXBhcnNlU2VjU3RyaW5nIChvcmctZWxlbWVu dC1wYXJzZS1zZWNvbmRhcnktc3RyaW5nICBlbGVtZW50LXN0cmluZyAnKGxpbmsgLi4uKSkpCiAg OzsgKHNldHEgZ3JlYXRlci1lbGVtZW50LXBhcnNlIChvcmctZWxlbWVudC1pdGVtLXBhcnNlciAo b3JnLWVsZW1lbnQtcHJvcGVydHkgJzpiZWdpbiBzdWJqZWN0KSAob3JnLWxpc3Qtc3RydWN0KSkp CiAgOzsgKGRlYnVnKQogIDs7IChzZXRxIGVsZW1lbnQtcGFyc2UgKG9yZy1lbGVtZW50LS1wYXJz ZS1lbGVtZW50cyAob3JnLWVsZW1lbnQtcHJvcGVydHkgJzpiZWdpbiAob3JnLWVsZW1lbnQtYXQt cG9pbnQpKSAob3JnLWVsZW1lbnQtcHJvcGVydHkgJzplbmQgKG9yZy1lbGVtZW50LWF0LXBvaW50 KSkgJ2ZpcnN0LXNlY3Rpb24gIG5pbCAnZWxlbWVudCBuaWwgbmlsKSkKICA7OyhtZXNzYWdlIChw cmluMS10by1zdHJpbmcgZWxlbWVudC1hdC1wb2ludCkpCiAgOzsobWVzc2FnZSAocHJpbjEtdG8t c3RyaW5nIGVsZW1lbnQtbGluZWFnZSkpCiAgOzsgIChtZXNzYWdlIChwcmluMS10by1zdHJpbmcg ZWxlbWVudC1jdXJyZW50KSkKICAobWVzc2FnZSAocHJpbjEtdG8tc3RyaW5nIGNvbnRlbnQpKQog IDs7KG1lc3NhZ2UgKHByaW4xLXRvLXN0cmluZyBncmVhdGVyLWVsZW1lbnQtcGFyc2UpKQogIDs7 IChtZXNzYWdlIChwcmluMS10by1zdHJpbmcgY29udGVudHMpKQogIAogICkKCjs7IGV4YW1wbGUK KGRlZnVuIHRyaWFuZ2xlLXJlY3Vyc2l2ZWx5LWJ1Z2dlZCAobnVtYmVyKQogICJSZXR1cm4gc3Vt IG9mIG51bWJlcnMgMSB0aHJvdWdoIE5VTUJFUiBpbmNsdXNpdmUuVXNlcyByZWN1cnNpb24uIgog IChpZiAoPSBudW1iZXIgMSkKICAgICAgMQogICAgKCsgbnVtYmVyCiAgICAgICAodHJpYW5nbGUt cmVjdXJzaXZlbHktYnVnZ2VkCgkoMT0gbnVtYmVyKSkpKSkJCQk7IEVycm9yIGhlcmUuCih0cmlh bmdsZS1yZWN1cnNpdmVseS1idWdnZWQgMykKCgo7OyBNZXNzaW5nIHdpdGggb3JnLWxpc3QsIHBs YWluIGxpc3RzCjs7IAkgKHByb2duICgKICAgOzsgCQkgKHNldHEgc3RydWN0dXJlIChvcmctbGlz dC1zdHJ1Y3QpKSkpKSkpCgoKICAgCiAgOzsgIChzZXRxIGl0ZW0gKG9yZy1pbi1pdGVtLXApKQog IDs7ICAoc2V0cSBzdHJ1Y3QgKG9yZy1saXN0LXN0cnVjdCkpCiAgOzsgIChzZXRxIHByZXZzIChv cmctbGlzdC1wcmV2cy1hbGlzdCBzdHJ1Y3QpKQogIDs7ICAoc2V0cSBwYXJlbnRzIChvcmctbGlz dC1wYXJlbnRzLWFsaXN0IHN0cnVjdCkpCgogIDs7ICAobWVzc2FnZSAocHJpbjEtdG8tc3RyaW5n IGl0ZW0pKQogIDs7ICAobWVzc2FnZSAocHJpbjEtdG8tc3RyaW5nIHN0cnVjdCkpCiAgOzsgICht ZXNzYWdlIChwcmluMS10by1zdHJpbmcgcHJldnMpKQogIDs7ICAobWVzc2FnZSAocHJpbjEtdG8t c3RyaW5nIHBhcmVudHMpKQoKICA7OyAgKG1lc3NhZ2UgKHByaW4xLXRvLXN0cmluZyAob3JnLWxp c3QtZ2V0LXRvcC1wb2ludCBzdHJ1Y3QpKSkKICA7OyAgICAgKG1lc3NhZ2UgKHByaW4xLXRvLXN0 cmluZyAob3JnLWxpc3QtZ2V0LXBhcmVudCBpdGVtIHN0cnVjdCBwYXJlbnRzKSkpCiAgOzsgICht ZXNzYWdlIChwcmluMS10by1zdHJpbmcgKG9yZy1saXN0LWdldC1saXN0LWJlZ2luIGl0ZW0gc3Ry dWN0IHByZXZzKSkpKQoKCiAgICAKCg== --001a113abd0249c991050cfef0c2--