Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Archived » B3 » b3 build files DSL in XText - annotaded sample b3 file
b3 build files DSL in XText - annotaded sample b3 file [message #581591] Wed, 14 October 2009 01:15
Henrik Lindberg is currently offline Henrik LindbergFriend
Messages: 2509
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------050506050007010709020406
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Hi,
I have been working with a XText based DSL for the proposed b3 build
language for a week or so. I got fed up trying to describe the syntax on
the wiki - it felt like I should use a proper tool.

The experience using XText was very positive. I managed to get a default
editor up and running quikcly. I now have the majority of the wanted
features covered by the DSL.

Here follows the sample file that I use to test it. I added a bunch of
comments regarding what the statements are supposed to do.
Since I am trying to test every possible variation on syntax - the
sample is perhaps not the easiest read as it does not describe a build
of something - so all the names are just gibberish...

I think it is at a point where it meaningful to share though...

(I could do with some help on Xtext if there is someone out there that
would like to help with a few questions...)

regards
- henrik


--------------050506050007010709020406
Content-Type: text/plain; x-mac-type="0"; x-mac-creator="0";
name="test1.b3"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="test1.b3"

LyoKKiogQSAuYjMgZmlsZQoqKiBjb25zaXN0cyBvZiBpbXBvcnQgc3RhdGVt ZW50cyBmb2xs
b3dlZCBieSBhIHNpbmdsZSAidW5pdCIuIFRoaXMgaXMgYW5hbG9nb3VzIHdp dGggYSAuamF2
YSBmaWxlIGhhdmluZyBpbXBvcnRzCioqIGFuZCBhIHNpbmdsZSBsYW5ndWFn ZSBlbGVtZW50
IChjbGFzcywgaW50ZXJmYWNlKS4KKioKKiogVGhpcyBmaWxlIGlzIGEgc2Ft cGxlciB1c2Vk
IHRvIHRlc3Qgc3ludGF4LiBUaGUgZXhhbXBsZXMgYXJlIG5vdCByZWFsaXN0 aWMgKHlvdSB3
aWxsIGZpbmQgcGxlbnR5IG9mIGEsIGIsIGMsIGZlZSBhbmQgZm9vLi4uKQoq LwoKLyoKKiog
Q09NTUVOVFMKKiogQm90aCBzaW5nbGUgbGluZSBhbmQgbXVsdGkgbGluZSBj b21tZW50cyBh
cmUgc3VwcG9ydGVkLgoqLwoJLy8gU2luZ2xlIGxpbmUgY29tbWVudAoJLyog TXVsdGkgbGlu
ZSBjb21tZW50CgkgKi8KCQovKiAKKiogSU1QT1JUCioqIElzIHVzZWQgdG8g aW1wb3J0IGNs
YXNzZXMgKGp1c3QgbGlrZSBpbiBqYXZhKS4gVGhpcyBpcyBkb25lIHNvIG5v biBxdWFsaWZp
ZWQgbmFtZXMgY2FuIGJlIHVzZWQgZm9yIGNsYXNzZXMKKiogRElTQ1VTUzog SW1wb3J0cyBh
cmUgcHJvYmFibHkgdHJhbnNsYXRlZCB0byBtZXRhIHJlcXVpcmVtZW50cyB3 aGVuIHJlc29s
dmluZy4gQXMgdGhleSBhcmUgcmVxdWlyZW1lbnRzIG9uIHRoZSBlbnZpcm9u bWVudC4KKi8K
aW1wb3J0IG9yZy5lY2xpcHNlLmIzLmRlZmF1bHQuUmVzb2x2ZXJzLio7Cgov KgoqKiBVTklU
CioqIEEgVW5pdCBpcyBhIEJ1aWxkIFVuaXQuIEl0IGlzIHVzZWQgZm9yIHNl dmVyYWwgcHVy
cG9zZXM6CioqIC0gYXMgYSBmaWxlIHRoYXQgZGVzY3JpYmVzICJ0b3AgbGV2 ZWwiIHJlcXVp
cmVtZW50cyAod2hhdCB0byBpbXBvcnQgaW50byBhIHdvcmtzcGFjZSwgcmVz b2x2ZXJzIHRv
IHVzZSBldGMuKQoqKiAtIGFzIGFkdmljZSB0aGF0IGV4dGVuZHMgbWV0YSBk YXRhIHRyYW5z
bGF0aW9uCioqIC0gYXMgdGhlIG1ldGEgZGF0YSB0aGF0IGRlc2NyaWJlcyBh IHVuaXQsIHdo
ZW4gdGhlcmUgaXMgbm8gb3RoZXIgbWV0YSBkYXRhCioqCioqIEEgVW5pdCBo YXM6CioqIC0g
UHJvcGVydGllcwoqKiAtIFByb3ZpZGVkIENhcGFiaWxpdGllcwoqKiAtIFJl cXVpcmVkIENh
cGFiaWxpdGllcyAoYW5kIE1ldGEgUmVxdWlyZWQgQ2FwYWJpbGl0aWVzKQoq KiAtIFBhcnRz
IChhbmFsb2dvdXMgd2l0aCBtZW1iZXJzIGluIGEgY2xhc3MpLiBUaGVyZSBh cmUgZm91ciBr
aW5kcyBvZiBwYXJ0czogCioqCQktIEFydGlmYWN0cyAoZXhpc3RpbmcgZmls ZXMpCioqCQkt
IEdyb3VwIChBZ2dyZWdhdGlvbiBvZiBvdGhlciBwYXJ0cykKKioJCS0gQWN0 aW9uIChQcm9k
dWN0aW9uIG9mIG5ldyBmaWxlcyAob3Igc2lkZSBlZmZlY3QpCioqCQktIFJl c3VsdCAoQSBz
ZXQgb2YgZmlsZXMgcHJvZHVjZWQgYnkgYW4gQWN0aW9uIH49IGdlbmVyYXRl ZCBBcnRpZmFj
dHMpCioqIC0gQWR2aWNlIChQYXRoL1ByZWRpY2F0ZSBiYXNlZCBhY2Nlc3Mg dG8gZWxlbWVu
dHMgdGhhdCBkbyBub3QgeWV0IGV4aXN0IGluIHRoZSBtb2RlbCkuIFVzZWQg dG8gc2V0IG9w
dGlvbnMsIG1ha2UKKioJIG92ZXJyaWRlcywgZXRjLgoqKiAtIFJlcG9zaXRv cmllcyAtIGEg
Y29uZmlndXJhdGlvbiB0aGF0IGlzIHVzZWQgdG8gcmVzb2x2ZSAobG9vayB1 cCkgdW5pdHMu
CioqIC0gU3luY2hyb25pemF0aW9uIC0gZGVmaW5lcyBtb25pdG9ycyBhY3Jv c3MgdW5pdHMg
dGhhdCBoZWxwIHNvbHZlIGlzc3VlcyBpbiBwYXJhbGxlbCBidWlsZHMKKioK KiogQSB1bml0
IGNhbiBiZSBtYXJrZWQgYXMgc3luY2hyb25pemVkIC0gdGhpcyBtZWFucyB0 aGF0IHJlcXVl
c3RzIHRvIGl0cyBwYXJ0cyBhcmUgc2VyaWFsaXplZC4KKiogQSB1bml0IGNh biBpbXBsZW1l
bnQgaW50ZXJmYWNlcy4gVGhlc2UgaW50ZXJmYWNlcyBhcmUgImJ1aWxkIHRp bWUgaW50ZXJm
YWNlcyIgYW5kIHRlbGxzIGIzIGFib3V0IAoqKiB3aGljaCBwYXJ0cyBpdCBj YW4gZXhwZWN0
LiBUaGlzIGFsc28gaGVscHMgYW4gYXV0aG9yIG9mIGV4dGVuZGVkIGNvbXBv bmVudHMsIGFu
ZCBmcmVzaGx5IGNyZWF0ZWQgY29tcG9uZW50cwoqKiBjb21wbHkgd2l0aCBr bm93biBidWls
ZCBpbnRlcmZhY2VzIC0gaS5lLiB0aGlzIHRoaW5nIGJ1aWxkcyBsaWtlIGFu IG9zZ2kuYnVu
ZGxlLgoqLwpzeW5jaHJvbml6ZWQgdW5pdCAibXkudW5pdCIgdmVyc2lvbiAy LjMgIGltcGxl
bWVudHMgb3NnaS5idW5kbGUsIGVjbGlwZS5lY29yZS5tb2RlbCB7CgoJLyog UFJPUEVSVElF
UyAKCSoqIFByb3BlcnRpZXMgc3VwcG9ydHMgc3RyaW5ncywgaW50ZWdlcnMs IGJvb2xlYW5z
LCBleHByZXNzaW9ucyBhbmQgcmVmZXJlbmNlcyB0byBwcm9wZXJ0aWVzCgkq LwkKCXByb3Bl
cnR5IGZvbz0gImhlbGxvIjsKCS8vIGEgcHJvcGVydHkgY2FuIGJlIHNldCB0 byBudWxsIChi
dXQgbm90IGltbXV0YWJsZSBwcm9wZXJ0aWVzKQoJcHJvcGVydHkgZm9vOwoJ aW1tdXRhYmxl
IHByb3BlcnR5IGJhciA9IDMyOwoJaW1tdXRhYmxlIHByb3BlcnR5IGJhciA9 IDMyKzEwOwoJ
CgkvLyBjaGVja3MgaWYgYSBjYWxjdWxhdGlvbiBoYXMgdGhlIHNhbWUgdmFs dWUgYXMgYSBw
cm9wZXJ0eQoJaW1tdXRhYmxlIHByb3BlcnR5IG1lYW5pbmdmdWwgPSAzMisx MCA9PSB0aGUu
bWVhbmluZy5vZi5saWZlOwoJCgkvLyBhIHByb3BlcnR5IGNhbiBiZSAidW5z ZXQiLCB0aGF0
IG1lYW5zIHRoYXQgaWYgaXQgd2FzIHNldCBpbiB0aGlzIGNvbnRleHQsIGl0 IHdpbGwgcmV2
ZXJ0IHRvCgkvLyBpdCdzIHZhbHVlIChpZiBhbnkpIGluIGFuIGVuY2xvc2lu ZyBjb250ZXh0
LgoJLy8KCXVuc2V0IHByb3BlcnR5IHllbGxvdy5iYW5hbmE7CgkKCS8vIFNl dmVyYWwgcHJv
cGVydGllcyBjYW4gYmUgc2V0IGluIGEgY29tcG91bmQgInByb3BlcnRpZXMi IGNsYXVzZS4g
SXQgYWxzbyB3b3JrcyBmb3IgdW5zZXQuCgkvLyBOb3RlIHRoYXQgdGhlICJw cm9wZXJ0eSIg
a2V5d29yZCBpcyBubyBsb25nZXIgcmVxdWlyZWQgcGVyIHNldHRpbmcuCglw cm9wZXJ0aWVz
IHsKCQliYXIgPSAiYmFyIjsKCQlpbW11dGFibGUgcG9saXRpY2lhbiA9ICJv eHltb3JvbiI7
CgkJdW5zZXQgeWVsbG93LmJhbmFuYTsKCQl9CgkKCS8qIFBST1ZJREVTCgkq KiBQcm92aWRl
cyBjbGF1c2UgaXMgdXNlZCB0byBkZWNsYXJlIHRoYXQgdGhlIEJ1aWxkVW5p dCBwcm92aWRl
cyBjYXBhYmlsaXRpZXMuCgkqKiBBIGNhcGFiaWxpdHkgY29uc2lzdHMgb2Yg aW50ZXJmYWNl
L3VuaXRuYW1lIGFuZCBhbiBvcHRpb25hbCAvdmVyc2lvbiBhdCB0aGUgZW5k LgoJKiogSWYg
YW4gaW50ZXJmYWNlLCB1bml0bmFtZSBvciB2ZXJzaW9uIHJlcXVpcmVzIHVz ZSBvZiByZXNl
cnZlZCB3b3JkcyBvciBjaGFyYWN0ZXJzLCB0aGUgY29ycmVzcG9uZGluZwoJ KiogcGFydCBp
cyBlbnRlcmVkIGFzIGEgc3RyaW5nIChpLmUuIHdpdGhpbiAiICIpLgoJKiog QXMgd2l0aCBw
cm9wZXJ0aWVzLCB0aGVyZSBpcyBhIGNvbXBvdW5kIHByb3ZpZGVzIGNsYXVz ZS4KCSoqIAoJ
KiogUHJvdmlkZSBDYXBhYmlsaXRpZXMgY2FuIGJlIGZpbHRlcmVkIC0gc29t ZSBjYXBhYmls
aXRpZXMgbWF5IG9ubHkgYmUgcHJvdmlkZWQgdW5kZXIgY2VydGFpbiBjaXJj dW1zdGFuY2Vz
LgoJKiogVGhpcyBpcyBkZWNsYXJlZCB3aXRoIGEgbGVhZGluZyB3aGVuKEJv b2xlYW5FeHBy
ZXNzaW9uKS4KCSovCglwcm92aWRlcyBvc2dpLmJ1bmRsZS9idW5kbGViYXI7 Cglwcm92aWRl
cyBvc2dpLmJ1bmRsZS9idW5kbGViYXIvMS4wOwoJcHJvdmlkZXMgewoJCW9z Z2kuYnVuZGxl
L2JhcmJhcmEuYnVuZGxlLzIuMDsKCQllY2xpcHNlLmZlYXR1cmUvaW5mbGF0 ZWFibGUucGxl
YXN1cmUvNi42LjY7CgkJCXdoZW4odGFyZ2V0LnBsYXRmb3JtID09IHBsYXRm b3Jtcy53aW4z
MikgbmF0aXZlLnRoaW5nL3dpbmRvd3NJbnN0YWxsZXIvMTIuMjMucjEyMzQ7 CgkJfQoJcHJv
dmlkZXMgd2hlbih0YXJnZXQucGxhdGZvcm0gPT0gcGxhdGZvcm1zLndpbjMy KSAgbmF0aXZl
LnRoaW5nL3dpbmRvd3NJbnN0YWxsZXIvMTIuMjMucjEyMzQ7CgkKCS8qIFJF UVVJUkVTIAoJ
KiogUmVxdWlyZXMgY2xhdXNlIGlzIHVzZWQgdG8gZGVjbGFyZSB0aGF0IHRo ZSBCdWlsZFVu
aXQgcmVxdWlyZXMgY2VydGFpbiBjYXBhYmlsaXRpZXMuIAoJKiogVGhlIGRp ZmZlcmVuY2Vz
IGJldHdlZW4gcmVxdWlyZWQgYW5kIHByb3ZpZGVkIGNhcGFiaWxpdGllcyBh cmUgdGhhdDoK
CSoqIC0gdGhlIHZlcnNpb24gaXMgYWx3YXlzIGEgcmFuZ2UgKGFsdGhvdWcg YSBzaW5nbGUg
dmVyc2lvbiBtZWFucyA+PSB2ZXJzaW9uCgkqLwoJcmVxdWlyZXMgb3NnaS5i dW5kbGUvYWly
LzEuMDsKCXJlcXVpcmVzIHdoZW4gKCF0YXJnZXQucGxhdGZvcm0gIT0gInNw YXJjIiAmJiB0
YXJnZXQucGxhdGZvcm0gPCAiaHBVeCIpIG9zZ2kuYnVuZGxlL3BpbGxvdy8z LjAgOwoJcmVx
dWlyZXMgewoJCW9zZ2kuYnVuZGxlL3BpbGxvdy8xLjA7CgkJd2hlbiAoYSA9 PSBiKSBvc2dp
LmJ1bmRsZS9ibGFua2V0LzEuMDsKCQl9CgkKCS8qIE1FVEEgUkVRVUlSRVMg CgkqKiBXaXRo
IGEgbGVhZGluZyBtZXRhIGtleXdvcmQsIHRoZSByZXF1aXJlbWVucyBhcmUg cmVxdWlyZW1l
bnRzIG9uIHRoZSBlbnZpcm9ubWVudCAoaS5lLiBvbiBiMyBpdHNlbGYpCgkq KiBBcyBhbiBl
eGFtcGxlLCBhIG1ldGEgcmVxdWlyZW1lbnQgbWF5IGJlIHRoYXQgYSBjZXJ0 YWluIG1ldGEg
ZGF0YSBwcm92aWRlciBpcyBpbnN0YWxsZWQgb3IgaXQgd2lsbCBiZSBpbXBv c3NpYmxlIHRv
CgkqKiB1c2UgdGhpcyBkZWZpbml0aW9uLiAKCSovCgltZXRhIHJlcXVpcmVz IG9zZ2kuYnVu
ZGxlL2Fpci8xLjA7CgltZXRhIHJlcXVpcmVzIHdoZW4gKDQyID49IDMyKSBv c2dpLmJ1bmRs
ZS9waWxsb3cvIjMuMCI7CgltZXRhIHJlcXVpcmVzIHsKCQlvc2dpLmJ1bmRs ZS9waWxsb3cv
MS4wOwoJCXdoZW4gKG15b3JnLmZvbyB+PSAiW2Etel0uKiIpIG9zZ2kuYnVu ZGxlL2JsYW5r
ZXQvMS4wOwoJCX0KCQoJLyogQVJUSUZBQ1RTCgkqKiBBcnRpZmFjdCBpcyBh IHZlY3RvciBv
ZiBwYXRoIGdyb3Vwcy4KCSoqIEEgZ3JvdXAgb2YgcGF0aHMgbWF5IGhhdmUg YSBiYXNlIHBh
dGggLSB0aGUgcmVzdCBvZiB0aGUgcGF0aHMgaW4gdGhlIGdyb3VwIGFyZSBy ZWxhdGl2ZSB0
byB0aGUKCSoqIGJhc2UgcGF0aC4KCSoqIEZpbGUgbmFtZXMgdGhhdCBpbmNs dWRlIHJlc2Vy
dmVkIHdvcmRzIG9yIHJlc2VydmVkIGNoYXJhY3RlcnMgYXJlIGVudGVyZWQg d2l0aGluICIg
IgoJKiogRmlsZSBuYW1lcyBjb250YWluaW5nIHNwYWNlcyBtdXN0IGFsd2F5 cyBiZSBxdW90
ZWQsIGFzIHRoZSBjb21waWxlciByZW1vdmVzIHdoaXRlc3BhY2UgZnJvbSBu b24gc3RyaW5n
cy4KCSoqIFN0YW5kYXJkICBYVGV4dCBpbXBsZW1lbnRhdGlvbiBhbGxvd3Mg YSB1bmFyeSBe
IGJlZm9yZSBhIGtleXdvcmQgYXMgYW4gZXNjYXBlIChSZW1vdmU/KQoJKiog SW5jbHVzaW9u
IG9mIGEgdmVjdG9yIGNhbiBiZSBjb250cm9sbGVkIHdpdGggYSBsZWFkaW5n IHdoZW4oQm9v
bGVhbkV4cHJlc3Npb24pLgoJKioKCSoqIFZJU0lCSUxJVFkKCSoqIFZpc2li aWxpdHkgaXMg
ZWl0aGVyIHByaXZhdGUgb3IgcHVibGljICh0aGUgZGVmYXVsdCkuIFByaXZh dGUgbWVhbnMg
dGhhdCB0aGUgcGFydCBpcyBvbmx5IGFjY2VzYWJsZQoJKiogZnJvbSB3aXRo aW4gdGhlIGIz
IHVuaXQgd2hlbmUgdGhlIHBhcnQgaXMgZGVjbGFyZWQuCgkqKgoJKiogUFJP UEVSVElFUwoJ
KiogSXQgaXMgcG9zc2libGUgdG8gc2V0IChhbmQgdW5zZXQpIHByb3BlcnRp ZXMgaW4gdGhl
IGxpc3QgdXNpbmcgYmFzaWMgb3IgY29tcG91bmQgcHJvcGVydHkgc3RhdGVt ZW50cy4KCSoq
IFRoZXNlIHByb3BlcnRpZXMgYXJlIHNldCBvbiB0aGUgcmVzdWx0aW5nIHBh dGggZ3JvdXAg
dmVjdG9yIGFuZCBhcmUgYXZhaWxhYmxlIHRvIHRoZSB1c2VyIG9mIHRoZQoJ Kiogc2V0IG9m
IGZpbGVzLiAKCSoqIFNpbmNlIGZpbGUgZ3JvdXAgdmVjdG9ycyBhcmUgbWVy Z2VkLCBzbyB3
aWxsIHRoZSBwcm9wZXJ0aWVzLiBVc2Ugb2YgaW1tdXRhYmxlIHByb3BlcnRp ZXMgd2lsbCBn
dWFyYW50ZWUKCSoqIHRoYXQgdGhlIHByb3BlcnR5IHZhbHVlcyBzZXQgd2ls bCBzdXJmYWNl
IChvciBhbiBlcnJvciB3aWxsIGJlIGdlbmVyYXRlZCBpZiBtZXJnaW5nIGNh dXNlcyB0aGUg
dmFsdWUKCSoqIHRvIGNoYW5nZSksIGJ1dCBpcyBvayBpZiBtdWx0aXBsZSB2 ZWN0b3JzIGFy
ZSB0YWdnZWQgdGhlIHNhbWUgd2F5LgoJKiogCgkqKiBOb3RlIHRoYXQgaW5k aXZpZHVhbCBw
cm9wZXJ0eSBzZXR0aW5ncyBwZXIgZmlsZSBpcyBub3Qgc3VwcG9ydGVkLiBU byBmbGFnIGFu
IGluZGl2aWR1YWwgZmlsZSBpdCBpcwoJKiogcmVjb21tZW5kZWQgdG8gdXNl IGRvdHRpZWZp
ZWQgcHJvcGVydGllcyAtIGV4YW1wbGUgLSBtYXJrIHRoZSBwYXRoIC9hL2Ig YXMgYmVpbmcg
bGl0dGxlIGVuZGlhbgoJKiogcHJvcGVydHkgb3JnLm15b3JnLmZpbGVpbmZv LmVuZGlhbi5h
LmI9bGl0dGxlLgoJKioKCSoqIERJU0NVU1MgLSBpcyBpdCBvZiB2YWx1ZSB0 byBoYXZlIHBy
b3BlcnRpZXMvYW5ub3RhdGlvbnMgcGVyIGZpbGU/CgkqKiAKCSovCglwcml2 YXRlIGFydGlm
YWN0cyB0ZXN0LmExIHByb3ZpZGVzIG15b3JnLmZvb2QvZnJ1aXQuc2FsbGFk LzIuMCwgbXlv
cmcucHJvamVjdGlsZXMvZnJ1aXQuc2FsYWQKCQl7CgkJYTsgLy8gYSB2ZWN0 b3Igd2l0aCBv
bmUgZW50cnkKCQlhLCBiOyAvLyBhIHZlY3RvciB3aXRoIHR3byBlbnRyaWVz CgkJYSBbIGIs
IGNdOyAvLyBhIGJhc2UgcGF0aCAoYSksIHdpdGggdHdvIHJlbGF0aXZlIHBh dGhzIGluIGEg
dmVjdG9yCgkJL2EvYjsKCQkvIGEgLyBiIDsgLy8gaXMgZXF1aXZhbGVudCB0 byAvYS9iIC0g
bm90IC8iIGEiLyIgYiIKCQkgCgkJCgkJLy8gbmFtZXMgdGhhdCBtdXN0IGJl IHF1b3RlZAoJ
CSJ1bml0IjsgLy8gYSBrZXl3b3JkCgkJIjFhIjsgLy8gZG9lcyBub3QgbG9v ayBsaWtlIGEg
cXVhbGlmaWVkIG5hbWUKCQkiYSBiIjsgLy8gaGFzIHNwYWNlIGluIG5hbWUK CQkiYYyKmiI7
IC8vIGhhcyBOTFMgY2hhcmFjdGVycwoJCSIvL2YiOyAvLyBsb29rcyBsaWtl IGEgY29tbWVu
dAoJCSIxMjMiOyAvLyBpcyBhbiBpbnRlZ2VyCgkJCgkJIm15LnVuaXQiLCAi bXkudW5pdCI7
IC8vIHVuaXQgaXMgYSBrZXl3b3JkCgkJbXkuXnVuaXQ7IC8vIHVuaXQgaXMg a2V5d29yZCAt
IHN0YW5kYXJkIFhUZXh0IGdyYW1tYXIgZXNjYXBlIG9mIGtleXdvcmRzIGlu IElECgkJd2hl
bih0YXJnZXQucGxhdGZvcm0gPT0gIm9zeCIpICBNYWNBcHAuYXBwIDsKCQl3 aGVuKHRydWUp
IGJhbmFuYS50eHQsIHBpbmVhcHBsZS50eHQsIG1hbmdvLnR4dDsKCQl3aGVu ICh0cnVlKSBl
eG90aWMgWyByYW1idXN0YW4udHh0LCB0YW1hcmluZC50eHQgXTsKCQlhMSBb YXBwbGUudHh0
LCAiYmFuIGFuYS50eHQiXTsKCQlmZWUvYXBhLmJvbyBbIGEvYi9jLmQsIGEu Yi5jLmQsIG8v
Yi9kIF07CgkJcHJvcGVydHkgYXBhPSJiYW5hbiI7CgkJcHJvcGVydHkgZGVm YXVsdHNUb051
bGw7CgkJcHJvcGVydGllcyB7IGE7IGI7IH0KCQl9CgkKCS8vIEFuIGVtcHR5 IGFydGlmYWN0
cyB2ZWNvcgkKCWFydGlmYWN0cyBlbXB0eSB7Cgl9CgkKCS8qIEFSVElGQUNU UyBQUk9WSURJ
TkcgQ0FQQUJJTElUSUVTCgkqKiBJdCBpcyBwb3NzaWJsZSB0byBkZWNsYXJl IHRoYXQgdGhl
IHJlc3VsdGluZyBwYXRoIGdyb3VwIHZlY3RvciBpcyBhIGNhcGFiaWxpdHkg bGF5ZWQgb3V0
IG9uIGRpc2suCgkqKiBUaGV5IGxheW91dCBjYW4gcmVwcmVzZW50IG1hbnkg Y2FwYWJpbGl0
aWVzIGF0IHRoZSBzYW1lIHRpbWUuCgkqLwoJYXJ0aWZhY3RzIHByb3ZpZGVz TWFueSBwcm92
aWRlcyAgYS9iLzEuMCwgYy9kLzIuMCwgeC95LzMuMCB7YTt9CgkKCS8qIEdS T1VQCgkqKiBB
IGdyb3VwIGlzIHNpbWlsYXIgdG8gYXJ0aWZhY3RzIGluIHRoYXQgaXQgY3Jl YXRlcyBhIHBh
dGggZ3JvdXAgdmVjdG9yLCBidXQgaXQgY3JlYXRlcyB0aGlzCgkqKiBieSBh Z2dyZWdhdGlu
ZyBwYXRoIGdyb3VwIHZlY3RvcnMgZnJvbSBvdGhlciBwYXJ0cy4gCgkqKiBK dXN0IGFzIHdp
dGggYXJ0aWZhY3RzOyB0aGUgcmVzdWx0aW5nIHBhdGggZ3JvdXAgdmVjdG9y IGNhbiByZXBy
ZXNlbnQgY2FwYWJpbGl0aWVzLgoJKioKCSoqIFRoZSBncm91cCBjb25zaXN0 cyBvZiBhIGxp
c3Qgb2YgcmVxdWlyZWQgY2FwYWJpbGl0aWVzLiBUaGUgc3ludGF4IGlzIHRo ZSBzYW1lIGFz
IGZvcgoJKiogdGhlIHVuaXRzIHJlcXVpcmVzIHsgfSBjbGF1c2UsIHdpdGgg dGhlIGZvbGxv
d2luZyBhZGRpdGlvbnM6CgkqKiAtIEEgdHJhaWxpbmcgJyNwYXJ0bmFtZScg IGlzIHVzZWQg
YWZ0ZXIgdGhlIHJlcXVpcmVtZW50IHRvIHBpY2sgYSBwYXJ0aWN1bGFyIHBh cnQuCgkqKiAt
IEEgcmVmZXJlbmNlIGNhbiBiZSBtYWRlIHRvIHBhcnRzIGluIHRoZSBzYW1l IGJ1aWxkIHVu
aXQgYnkgdXNpbmcgYSBzaW5nbGUgaWRlbnRpZmllcgoJKiogLSBBIHJlZmVy ZW5jZSB0byBh
IHJlcXVpcmVkIGNhcGFiaWxpdHkgd2l0aG91dCBhIHRyYWlsaW5nICcjcGFy dG5hbWUnIGlz
IHRha2VuIGFzIGEgcmVmZXJlbmNlIHRvICcjc2VsZicsIG1lYW5pbmcgdGhl CgkqKiAgIGFn
Z3JlZ2F0aW9uIG9mIGFsbCBpdHMgcHVibGljIHBhcnRzLgoJKiogLSBJdCBp cyBwb3NzaWJs
ZSB0byBkZWZpbmUgYSBjbG9zdXJlIHdoZXJlIHByb3BlcnRpZXMgYW5kIGFk dmlzZSBhcmUg
ZGVjbGFyZWQuIFRoZXkgaGF2ZSBkb3duc3RyZWFtIGVmZmVjdAoJKiogICAo aS5lLiB3aGVu
IGV2YWx1YXRpbmcgdGhlIHBhcnQpLiBUaGUgY2xvc3VyZSBpcyBkZWZpbmVk IHVzaW5nIGEg
dHJhaWxpbmcgd2l0aCB7IH0gc3RhdGVtZW50LgoJKiogLSBBIGNsb3N1cmUg Y2FuIGJlIGRl
ZmluZWQgZm9yIHNldmVyYWwgcmVxdWlyZW1lbnRzIGF0IHRoZSBzYW1lIHRp bWUgYnkgZW5j
bG9zaW5nIHRoZSByZXF1aXJlbWVudHMgaW4gY3VybHkKCSoqICAgYnJhY2tl dHMge3IgciBy
fSB3aXRoIHsgfQoJKiogLSBBIGxlYWRpbmcgdm9pZCBrZXl3b3JkIGluZGlj YXRlcyB0aGF0
IHRoZSByZXN1bHRpbmcgcGF0aCBncm91cCB2ZWN0b3IgZnJvbSB0aGUgZXZh bHVhdGlvbiBv
ZiB0aGUgcGFydCBzaG91bGQKCSoqICAgbm90IGJlIGluY2x1ZGVkIGluIHRo ZSByZXN1bHRp
bmcgcGF0aCBncm91cCB2ZWN0b3IuCgkqKiAtIFRoZSByZXN1bHQgb2YgaW5k aXZpZHVhbCBw
YXJ0IGV2YWx1YXRpb24sIG9yIGV2YWx1YXRpb24gb2YgYSBncm91cCBvZiBy ZXF1aXJlbWVu
dHMgY2FuIGJlIGFzc2lnbmVkIHRvIGFuIGFsaWFzLgoJKiogICBUaGUgYWxp YXMgaXMgYSBw
cm9wZXJ0eSB0aGF0IGlzIGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgcGF0 aCBncm91cCB2
ZWN0b3IuIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgZm9yIGEgdXNlcgoJKiog ICBvZiB0aGUg
dmVjdG9yIHRvIHJlZmVyZW5jZSBhIHBhcnRpY3VsYXIgcGFydCBvZiB0aGUg c2V0LgoJKiog
LSB2b2lkIGFuZCBhbGlhcyBjYW4gYmUgdXNlZCBhdCB0aGUgc2FtZSB0aW1l LCBidXQgZm9y
IGEgZ3JvdXAgdGhhdCByZXByZXNlbnRzIGEgcGFydCAoYXMgaW4gdGhpcyBj YXNlKSwgbmVp
dGhlciB0aGUKCSoqICAgcHJvcGVydHkgbm9yIGl0cyB2YWx1ZSBzdXJ2aXZl IHRoZSBncm91
cCdzIGNvbnRleHQuIEZvciBvdGhlciB0eXBlcyBvZiBncm91cGluZyAoaW4g YWN0aW9ucyks
IHRoaXMgaXMgdmVyeQoJKiogICB2YWx1YWJsZSwgYnV0IGluIGEgZ3JvdXAg cGFydCwgdGhp
cyBjb25zdHJ1Y3Qgc2ltcGx5IGhhcyBubyBlZmZlY3QuIAoJKioKCSoqIFdJ VEggQ0xPU1VS
RQoJKiogSW4gdGhlIHdpdGggY2xvc3VyZSwgcHJvcGVydGllcyBjYW4gYmUg c2V0IHVzaW5n
IHRoZSBzaW5nbGUgb3IgY29tcG91bmQgcHJvcGVydGllcyBzdGF0ZW1lbnRz LgoJKiogQWR2
aWNlIGNhbiBiZSBzZXQgdXNpbmcgYWR2aWNlIHN5bnRheC4KCSoqIAoJKi8K CXByaXZhdGUg
c3luY2hyb25pemVkIGdyb3VwICJmb28vYmFyIiBwcm92aWRlcyAgbXlvcmcu Zm9vZC9mcnVp
dC5jb2N0YWlsLzIuMCwgYSAvIGIgLyAiMi4zIgoJewoJIAlhOyAvLyByZWZl cmVuc2UgdG8g
cGFydCBpbiBzZWxmCgkJZm9vL2JhcjsgLy8gcmVmZXJlbmNlIHRvICNzZWxm IGluIGludGVy
ZmFjZSBmb28sIG5hbWUgYmFyCgkJYS9hI2I7IC8vIHJlZmVyZW5jZSB0byAj YiBpbiBpbnRl
cmZhY2UgYSwgbmFtZSBhCgkJZnViYmxhPSBvc2dpLmJ1bmRsZS9mb28uYmFy LzEuMDsgLy8g
c2V0cyB0aGUgcHJvcGVydHkgZnViYmxhIHRvIHRvIHRoZSBwYXRoR3JvdXAg cmVmZXJlbmNl
IGluIHJ1bnRpbWUgLSB0eXBpY2FsbHkgbm90IHVzZWQgaW4gZ3JvdXBzCgkJ b3NnaS5idW5k
bGUvZmVlLmZ1bS8xLjAjamFyczsKCQlvc2dpLmJ1bmRsZS96ZUJ1bmRsZS8x LjAjamFyczsK
CQl2b2lkIGEvYSNiOyAvLyBvbmx5IHBlcmZvcm1lZCBmb3Igc2lkZSBlZmZl Y3QKCQl2b2lk
IGFsaWFzLm5icjEgPSBiOyAvLyBvbmx5IHBlcmZvcm1lZCBmb3Igc2lkZSBl ZmZlY3QsIGJ1
dCBzZXRzIGEgcHJvcGVydHkgdG8gdGhlIHJlc3VsdCAodGhhdCBpcyB0aGVu IGlnbm9yZWQp
CgkJYS9hI2Igd2l0aCB7IHByb3BlcnR5IG5pY2UgPSAieWVzIjsgfTsgLy8g c2V0cyBhbmQg
cGFzc2VzIHRoZSBwcm9wZXJ0eSBuaWNlIGRvd25zdGVhbQoJCWEvYSNiIHdp dGggeyAvLyBw
YXNzZXMgc2V2ZXJhbCBwcm9wZXJ0aWVzIGRvd25zdHJlYW0uCgkJCXByb3Bl cnRpZXMgewoJ
CQkJYT0iMiI7IGI9IjIiOyBjPSIzIjsKCQkJCX0KCQkJfTsKCQkvLyBpbmNs dWRlcyByZXN1
bHQgb2YgdGhyZWUgcmVmZXJlbmNlcywgYWxsIHdpdGggdGhlIHNhbWUgc2V0 IG9mIGRvd25z
dHJlYW0gcHJvcGVydGllcwkKCQl7IGEvYSNiOyBhL2IjYzsgYS9jI2Q7IH0g d2l0aCB7IHBy
b3BlcnR5IHRhcmdldC5wbGF0Zm9ybT0ic3BhcmMiOyB9OyAKCQkvLyBzZXRz IGFuIGFsaWFz
IG9uIGEgbm9uIGluY2x1ZGVkIHJlc3VsdCwgcmVzdWx0IGlzIGEgZ3JvdXAg b2YgaXRlbXMg
d2l0aCBkb3duc3RyZWFtIHByb3BlcnRpZXMKCQl2b2lkIGFsaWFzZWRCdXRO b3RJbmNsdWRl
ZCA9IHsgYS9hI2I7IGEvYiNjOyBhL2MjZDsgfSB3aXRoIHsgcHJvcGVydHkg Zm9vPSJocHV4
IjsgfTsKCQkvLyBzZXRzIGFuIGFsaWFzIG9uIGFuIGluY2x1ZGVkIGl0ZW0s IHJlc3VsdCBp
cyBhIGdyb3VwIG9mIGl0ZW1zIHdpdGggZG93bnN0cmVhbSBwcm9wZXJ0aWVz LCBhIG5lc3Rl
ZCBhbGlhcyBpcyBzZXQKCQlhbGlhc2VkQW5kSW5jbHVkZWQgPSB7IGFsaWFz Lm5icjM9YS9h
I2I7IGEvYiNjOyBhL2MjZDsgfSB3aXRoIHsgcHJvcGVydHkgZm9vPSJocHV4 IjsgfTsKCQkK
CQkvLyBpbmNsdXNpb24gY2FuIGJlIGZpbHRlcmVkIHdpdGggYSBib29sZWFu IGV4cHJlc3Np
b24gLSBoZXJlICJ0cnVlIiBtYWtlcyBpdCBhbHdheXMgaW5jbHVkZWQKCQl3 aGVuICh0cnVl
KSB7IGEvYSNiOyBhL2IjYzsgYS9jI2Q7IH0gd2l0aCB7IHByb3BlcnR5IGZv bz0iejgwIjsg
fTsKCQkvLyBmaWx0ZXJpbmcgLSBoZXJlLCBuZXZlciBldmVyIGluY2x1ZGVk IGJlY2F1c2Ug
Ym9vbGVhbiB2YWx1ZSBpcyBmYWxzZQoJCXdoZW4gKGZhbHNlKSBhL2EjYjsK CQkvLyBhIG5v
biBpbmNsdWRlZCBhbmQgZmlsdGVyZWQgcmVmZXJlbmNlIHRvIGEvYSNiCgkJ dm9pZCB3aGVu
ICh0cnVlKSBhL2EjYjsKCX0gCgoJLy8gVGhlIGtleXdvcmQgJ3N5bmNyb25p emVkJyBkZWNs
YXJlcyB0aGF0IHBhcmFsbGVsbCBleGVjdXRpb24gb2YgYW55IHBhcnQgaXMg ZGlzc2FsbG93
ZWQKCXByaXZhdGUgc3luY2hyb25pemVkIGdyb3VwIGZvbyB7fQoJcHVibGlj IHN5bmNocm9u
aXplZCBncm91cCBmb28ge30KCXByaXZhdGUgZ3JvdXAgZm9vIHt9Cglncm91 cCBmb28ge30K
CXN5bmNocm9uaXplZCAgZ3JvdXAgZm9vIHt9CgkKCQkKCS8qCgkqKiBBQ1RJ T04KCSoqIEFu
IGFjdGlvbiBoYXMgYW4gZW1iZWRkZWQgZ3JvdXAgZGVjbGFyYXRpb24gdGhh dCBkZWZpbmVz
IHRoZSBpbnB1dCB0byBhbiBhY3Rvci4gVGhlIGFjdG9yIGlzIHRvbGQgdG8K CSoqIHByb2R1
Y2UgdGhlIHJlc3VsdChzKSBkZWNhbHJlZCBmb3IgdGhlIGlucHV0IGdyb3Vw LiBJbnB1dCBn
cm91cHMgYW5kIHJlc3VsdHMgY2FuIGJlIG5lc3RlZC4KCSoqIFRoaXMgaXMg dXNlZCB0byBk
ZWNhbHJlIGNvbW1vbiBpbnB1dCwgaW5wdXQgZm9yIGEgZ3JvdXAgb2YgcmVz dWx0cyAoc3Vj
aCBhcyBpbnB1dCB0byBhY3Rpb25zIGZvciBsaW51eCksCgkqKiBhbmQgdGhl biBzcGVjaWZp
YyBpbnB1dCBmb3IgYnVpbGRpbmcgYSBsaW54IGZsYXZvciwgZm9yIGRpZmZl cmVudCB3aW5k
b3dpbmcgc3lzdGVtcyBldGMuCgkqKgoJKiogVGhlIHJlc3VsdCBjYW4gY29u c2lzdCBiZSBk
ZWNsYXJlZCB3aXRoIHB1YmxpYyBvciBwcml2YXRlIHZpc2liaWxpdHksIG9y IGZvbGxvdyB0
aGUgdmlzaWJpbGl0eSBvZiB0aGUgYWN0aW9uLgoJKiogUHVibGljIHJlc3Vs dCBhcmUgYXZh
aWxhYmxlIGFzIGZpcnN0IGNsYXNzIG1lbWJlcnMgb2YgdGhlIHVuaXQgKGV2 ZW4gaWYgdGhl
IGVuY2xvc2luZyBhY3Rpb24gaXMgcHJpdmF0ZSkuCgkqKiBQdWJsaWMgcmVz dWx0IG11c3Qg
YmUgbmFtZWQuIFByaXZhdGUgcmVzdWx0IG11c3QgYmUgbmFtZWQgaWYgaXQg c2hvdWxkIGJl
IHJlZmVyZW5jZWQgaW5kaXZpZHVhbGx5IChhbmQgbm90IGFzCgkqKiBwYXJ0 IG9mIHRoZSBh
Y3Rpb24ncyByZXN1bHQpLgoJKioKCSoqIFRoZSBhY3RvciBpcyBkZWNsYXJl ZCBpbiB0aGUg
cHJlYW1ibGUgb2YgdGhlIGFjdGlvbiBwYXJ0IGFuZCBpcyBpbnN0YW50aWF0 ZWQgb25jZS4K
CSoqIFBhcmFtZXRlcnMgdG8gdGhlIGFjdG9yIGluc3RhbnRpYXRpb24gY2Fu IGJlIHBhc3Nl
ZCB3aXRoIHBhcmVudGhlc2VzIHVzaW5nIG5hbWVkIHBhcmFtZXRlcnMKCSoq IChvcmRlciBp
cyBub3QgaW1wb3J0YW50KS4KCSoqIC0gQW4gYWN0aW9uIGNhbiBwcm92aWRl IHRoZSByZXN1
bHRpbmcgcGF0aCBncm91cCB2ZWN0b3IgYXMgcHJvdmlkZWQgY2FwYWJpbGl0 aWVzCgkqKgoJ
KiogQWxpYXNlcwoJKiogQWxpYXNlcyBmb3IgaW5wdXQgcGFydHMgaGF2ZSBh biBhZGRpdGlv
bmFsIG1lYW5pbmcgaW4gYWN0aW9ucyAtIHRoZXNlIHByb3BlcnRpZXMgYXJl IGF2YWlsYWJs
ZSB0byB0aGUgYWN0b3IuCgkqKiBUaGlzIG1lYW5zIHRoYXQgdGhlIGNvbWJp bmF0aW9uIG9m
IHZvaWQgYWxpYXM9eyB9IGlzIG1lYW5pbmdmdWwgKGFzIG9wcG9zZWQgdG8g d2hlbiB1c2Vk
IGluIGEgZ3JvdXAgcGFydCkuCgkqKgoJKiogUkVTVUxUCgkqKiBSZXN1bHQg Y2xhdXNlcyBi
ZWhhdmUgbGlrZSBhcnRpZmFjdCBwYXJ0cywgYnV0IHRoZXkgdHlwaWNhbGx5 IHJlZmVyIHRv
IGZpbGVzIHRoYXQgd2VyZSBwcm9kdWNlIGJ5IHRoZSBhY3Rvci4KCSoqIFBy b3BlcnRpZXMg
aW4gdGhlc2Ugc2V0cyBtYXkgYmUgc2V0IGJ5IHRoZSBhY3Rvci4gVGhpcyBt ZWFucyB0aGF0
IGFuIGFjdG9yIGNhbiBwYXNzIGluZm9ybWF0aW9uIGJhY2sgLSBzdWNoIGFz CgkqKiBhIHZl
cnNpb24gcXVhbGlmaWVyLCBsb2NhdGlvbiBvZiBjZXJ0YWluIGZpbGVzIG9u IGRpc2sgZXRj
LgoJKiogCgkqLwoJcHJpdmF0ZSBzeW5jaHJvbml6ZWQgYWN0aW9uIGZvbyAK CQlhY3RvciBa
aXBBY3RvcihzZXJ2aWNlS2V5PSJXb29Ib28gLSB3b290IikKCQlwcm92aWRl cyAgbXlvcmcu
Zm9vZC9mcnVpdC5jb2N0YWlsLzIuMAoJewoJCWdyb3VwIHsKCQkJYTsgLy8g ZGVmYXVsdHMg
dG8gI3NlbGYKCQkJd2hlbiAoYXBhID4gMTEpIGEvYSNiOwoJCQlvc2dpLmJ1 bmRsZS9mb28u
YmFyLyIxLjIuMy5xdWFsaWZpZXIjLC4vIiNqYXJzOyAvLyBkZWZhdWx0cyB0 byAjc2VsZgoJ
CQkKCQkJCgkJCW9zZ2kuYnVuZGxlL2ZlZS5mdW0vMS4wI2phcnM7CgkJCW9z Z2kuYnVuZGxl
L3plQnVuZGxlI2phcnM7CgkJCXZvaWQgYS9hI2I7IC8vIG9ubHkgcGVyZm9y bWVkIGZvciBz
aWRlIGVmZmVjdAoJCQl2b2lkIGFsaWFzLm5icjEgPSBhL2EjYjsgLy8gb25s eSBwZXJmb3Jt
ZWQgZm9yIHNpZGUgZWZmZWN0CgkJCWEvYSNiIHdpdGggeyBwcm9wZXJ0eSBu aWNlID0gInll
cyI7IH07CgkJCWEvYSNiIHdpdGggewoJCQkJcHJvcGVydGllcyB7CgkJCQkJ YT0iMiI7IGI9
IjIiOyBjPSIzIjsKCQkJCQl9CgkJCQl9OwoJCQl7IGEvYSNiOyBhL2IjYzsg YS9jI2Q7IH0g
d2l0aCB7IHByb3BlcnR5IHRhcmdldC5wbGF0Zm9ybT0ic3BhcmMiOyB9OwoJ CQl2b2lkIHsg
YS9hI2I7IGEvYiNjOyBhL2MjZDsgfSB3aXRoIHsgcHJvcGVydHkgZm9vPSJo cHV4IjsgfTsK
CQkJdm9pZCBhbGlhcy5uYnIyID0geyBhbGlhcy5uYnIzPWEvYSNiOyBhL2Ij YzsgYS9jI2Q7
IH0gd2l0aCB7IHByb3BlcnR5IGZvbz0iaHB1eCI7IH07CgkJCXdoZW4gKHRy dWUpIHsgYS9h
I2I7IGEvYiNjOyBhL2MjZDsgfSB3aXRoIHsgcHJvcGVydHkgZm9vPSJ6ODAi OyB9OwoJCQl3
aGVuIChmYWxzZSkgYS9hI2I7CgkJCXZvaWQgd2hlbiAodHJ1ZSkgYS9hI2I7 CgkJCX17IAoJ
CQkJcmVzdWx0IGEgeyBhOyB9CgkJCX0KCX0KCWFjdGlvbiB0ZXN0MSBhY3Rv ciBUZXN0KHRl
c3Q9InRlc3QiKSBwcm92aWRlcyBhL2IvIjEiCgl7CS8vIG5vIGRlcGVuZGVu Y2llcywgbm8g
c3BlY2lhbCBpbnB1dCwganVzdCAiZG8gaXQgYW5kIHByb2R1Y2UgcmVzdWx0 IgoJCQlyZXN1
bHQgYiB7IGIudHh0OyB9Cgl9CglhY3Rpb24gdGVzdDIgYWN0b3IgVGVzdCh0 ZXN0PSJ0ZXN0
IikgcHJvdmlkZXMgYS9iLyIxIgoJewkvLyBubyBkZXBlbmRlbmNpZXMsIG5v IHNwZWNpYWwg
aW5wdXQsIGp1c3QgImRvIGl0IGFuZCBwcm9kdWNlIHJlc3VsdCIKCQkvLyBi dXQgc2V0IGEg
cHJvcGVydGllcwoJCS8vCgkJCXJlc3VsdCBiIHsgYi50eHQ7IH0gd2l0aCB7 IHByb3BlcnR5
IHRhcmdldC5wbGF0Zm9ybSA9ICJ3aW4zMiI7IH0KCX0KCi8qIE5PTiBXT1JL SU5HIFNZTlRB
WCwgZHVlIHRvIHByb2JsZW1zIGluIGxhbmd1YWdlIHNwZWNpZmljYXRpb24u IEhlbHAgV2Fu
dGVkLgoKCWFjdGlvbiB0ZXN0MyBhY3RvciBUZXN0KHRlc3Q9InRlc3QiKSBw cm92aWRlcyBh
L2IvIjEiCgl7CgkvLyBOT04gd29ya2luZyBleGFtcGxlIC0gbmVlZCBoZWxw IHdpdGggcGFy
c2VyCgoJCS8vIGdyb3VwIGlucHV0IHRvIG9uZSByZXN1bHRzCgkJZ3JvdXAg eyAKCQkJYTsK
CQkJfSAKCQlyZXN1bHQgYiB7IGIudHh0OyB9Cgl9CiovCgkKCWFjdGlvbiB0 ZXN0MyBhY3Rv
ciBUZXN0KHRlc3Q9InRlc3QiKSBwcm92aWRlcyBhL2IvIjEiCgl7CgkJLy8g Z3JvdXAgaW5w
dXQgdG8gb25lIG9yIHNldmVyYWwgcmVzdWx0cwoJCWdyb3VwIHsgYTsgfQoJ CQl7CgkJCXJl
c3VsdCBiIHsgYi50eHQ7IH0KCQkJfQoJfQoJYWN0aW9uIFRlc3QgYWN0b3Ig VGVzdCh0ZXN0
PSJ0ZXN0IikgcHJvdmlkZXMgYS9iLyIxIgoJewoJCWdyb3VwIHsgYTsKCQl9 IHsKCQkJcmVz
dWx0IGIgeyBiOyB9CgkJCXJlc3VsdCBiIHsgYjsgfQoJCQlyZXN1bHQgYiB7 IGI7IH0KCQl9
Cgl9CglhY3Rpb24gVGVzdCBhY3RvciBUZXN0KHRlc3Q9InRlc3QiKSBwcm92 aWRlcyBhL2Iv
IjEiCgl7CgkJZ3JvdXAgeyBhOwoJCX0gewoJCQlncm91cCAgeyB4OyB9IHsg cmVzdWx0IGIg
eyBiOyB9IH0KCQkJcmVzdWx0IGIge2I7fQkJCQoJCQlncm91cCAgeyB4OyB9 IHsgcmVzdWx0
IGIgeyBiOyB9IH0gCgkJfQoJfQoJCglhY3Rpb24gbWFrZVdpbjMyWmlwIAoJ YWN0b3IgWmlw
QWN0b3Ioc2VydmljZUtleT0idGpvaG8iKQoJcHJvdmlkZXMgZm9vZHN0dWZm LnNhbGxhZC9m
cnVpdHNhbGxhZC8xLjAsIHgvYi8iMjMiCgl7CgkJZ3JvdXAgewoJCQl7IHNp dGUgPSBjcmVh
dGVTaXRlOyB9IHdpdGggeyBwcm9wZXJ0eSB0YXJnZXQucGxhdGZvcm09Indp bjMyIjt9OwoJ
CX17CgkJCWdyb3VwIHsgCgkJCQlleHRyYUlucHV0ID0gYS9hLzIuMCNqYXJG aWxlczsgCgkJ
CX17CgkJCQlwdWJsaWMgcmVzdWx0IG1ha2VTb21lb25lSGFwcHkgIHsKCQkg ICAgCQlhcGEv
YmFuYW4uemlwIDsKCQkJCQl3aGVuKHRydWUpIGNoaW1wL2JhbmFuLnppcCA7 IAoJCQkJfSB3
aXRoIHsgcHJvcGVydGllcyB7IHRhcmdldC5wbGF0Zm9ybSA9ICJ3aW4zMiI7 IHByZXJlcXVp
c2l0ZS5mbGFnID0gImEjYiI7IH19CgkJCQkKCQkJCWdyb3VwIHsKCQkJCQlz cGVjaWFsOwoJ
CQkJfXsKCQkJCQl3aGVuICh0cnVlKSBwcml2YXRlIHJlc3VsdCBhIHsgYTt9 IHdpdGggeyAv
KiBmb3IgYSBvbmx5ICovIH0KCQkJCQl3aGVuICh0cnVlKSByZXN1bHQgYiB7 fSB3aXRoIHsg
LyogZm9yIGIgb25seSAqLyB9CgkJCQl9IHdpdGggeyAvKiBmb3IgYSBhbmQg YiAqLyB9CgkJ
CX0KCQl9Cgl9CgkKCS8qKiBTeW5jaHJvbml6ZSBjbGF1c2VzIGFsbG93cyBz eW5jcm9uaXph
dGlvbiB0byBiZSBzcGVjaWZpZWQgYWNyb3NzIHVuaXRzL2FjdGlvbnMuCgkq KiBXaGVuIGV4
ZWN1dGluZyBhIGJ1aWxkIGluIHBhcmFsbGVsbCwgYW4gZW5naW5lIHNob3Vs ZCBzZXJpYWxp
emUgdGhlIGV2YWx1YXRpb24gKGJ1aWxkKSBvZiB0aGUKCSoqIHNwZWNpZmll ZCBlbGVtZW50
cy4gU2VyaWFsaXphdGlvbiBvZiBleGVjdXRpb24gbWF5IHNlcmlhbGl6ZSBt b3JlIHRoYW4g
d2hhdCBpcyBzcGVjaWZpZWQgYnV0IG5ldmVyIGxlc3MuCgkqKiBFYWNoIHN5 bmNocm9uaXpl
ZCBsaXN0IHNwZWNpZmllcyBhIGdyb3VwIHRoYXQgd2lsbCBiZSBzZXJpYWxp emVkLiBSZWZl
cmVuY2VzIGFyZSB0byBwYXJ0IG5hbWVzIGluIHRoaXMgdW5pdCwgb3IKCSoq IHRvIHBhcnQg
bmFtZXMgaW4gb3RoZXIgdW5pdHMuIAoJKioKCSoqIERJU0NVU1M6IGFsdGhv dWdoIHZlcnkg
dXNlZnVsLCBzdGF0ZW1lbnRzIHRoYXQgc3luY2hyb25pemVkIG9uIGludGVy ZmFjZS8qLCBh
bmQgb24gYWN0b3JzIGFyZSBhbHNvIHVzZWZ1bC4KCSoqIFN5bnRheCBzaG91 bGQgcHJvYmFi
bHkgYmUgeHBhdGgvcXVlcnkgbGlrZS4KCSovCQoJc3luY2hyb25pemUgYSxi LGM7CglzeW5j
aHJvbml6ZSBhL2EjeCxiL2IjeCxjL2M7CgkKCXN5bmNocm9uaXplIHsgYSxi LGM7IGQsZSxm
OyB9IAoJCgkvKiogUkVQT1NJVE9SSUVTCgkqKiBUaGUgcmVwb3NpdG9yeSBj bGF1c2UgZGVm
aW5lcyB0aGUgb3JkZXIgaW4gd2hpY2ggcmVwb3NpdG9yaWVzIGFyZSBzZWFy Y2hlZC4KCSoq
IFRoZXJlIGFyZSB0d28gZm9ybXMgb2YgZW50cmllcyAtIHRoZSBtb3N0IGNv bW1vbiBpcyBl
eHBlY3RlZCB0byBiZSB0aGUgc2hvcnQgZm9ybSwgd2hlcmUKCSoqIGJvdGgg dGhlIGxvY2F0
aW9uLCBhbmQgcmVwb3NpdG9yeSB0eXBlIGlzIHNwZWNpZmllZCB3aXRoIGEg VVJJLiBUaGUg
VVJJIHNjaGVtZSBpcyB1c2VkIHRvIHNlbGVjdAoJKiogYSByZXNvbHZlci4g Rm9yIGNhc2Vz
IHdoZXJlIHRoaXMgaXMgbm90IHBvc3NpYmxlLCB0aGUgbG9uZ2VyIGZvcm0g aXMgdG8gZGVj
bGFyZSB0aGF0IGEgcmVzb2x2ZXIgc2hvdWxkIGJlCgkqKiB1c2VkLCBhbmQg dGhlIGxvY2F0
aW9uIChhIGdlbmVyYWwgVVJMKSBpcyB0aGVuIHNldCB1c2luZyBhZHZpY2Ug KGlmIGluZGVl
ZCB0aGUgc2VsZWN0ZWQgcmVzb2x2ZXIgbmVlZHMgYSBsb2NhdGlvbikuCgkq KiAKCSoqIAoJ
Ki8KCXJlcG9zaXRvcmllcyB7CgkJICJodHRwOi8vYmFyL2ZlZSIgeyB9OwoJ CSAiaHR0cDov
L2Jhci9mb28iOwoJCSAiaHR0cDovL2Jhci9mdW0iOwoJCSByZXNvbHZlciBm b28uYmFyIHsK
CQkgCS8vIFN0YXRlbWVudHMgaGVyZSBhcmUgYWR2aWNlIHJlbGF0aXZlIHRv IGEgcmVzb2x2
ZXIuIChpLmUuICcuJyBpcyBhIHJlc29sdmVyKQoJCSAJLy8gCgkJIAlsb2Nh dGlvbj0iaHR0
cDo6Ly93d3cuc29tZXdoZXJlLmNvbSI7CgkJIAlhcGEgPSAxMDsKCQkgCWJv b2xlYW5GbGFn
ID0gMTA7CgkJIAlvcHRpb25zL2FkdmFuY2VkW2ZlYXR1cmVBIH49IlthLXpd KiJdLz9bYT4y
M10vYi8/PyB7CgkJIAkJb3B0aW9uMSA9IDEwOwoJCSAJCW9wdGlvbjIgPSAy MDsKCQkgCQlv
cHRpb24zID0gImhlbGxvIjsKCQkgCQl9OwoJCSAJfTsKCQkgfQoJYWR2aWNl IGltcG9ydF9B
ZHZpY2UgewoJICAgIC9yZXF1ZXN0c1tuYW1lfj0ib3JnLm15b3JnLioiXS9v cHRpb25zIHsK
CSAgICAgICAgc291cmNlPXRydWU7CgkgICAgICAgIG11dGFibGU9dHJ1ZTsK CSAgICAgICAg
fTsKCSAgICAvcmVzb2x1dGlvbnNbbmFtZX49Im9yZy5lY2xpcHNlLioiXS9v cHRpb25zIHsK
CSAgICAgICAgbG9jYXRpb24gPSAicGxhdGZvcm06L3BsdWdpbi8iOwoJICAg ICAgICB9OwoJ
fQkgCn0=
--------------050506050007010709020406--
Previous Topic:bugzilla components
Next Topic:action and results - how many invocations of actor?
Goto Forum:
  


Current Time: Fri Apr 26 01:35:00 GMT 2024

Powered by FUDForum. Page generated in 0.03400 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top