<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>106640</bug_id>
          
          <creation_ts>2013-01-11 00:59:24 -0800</creation_ts>
          <short_desc>Web Inspector: [Canvas] introduce CallArgument type into the protocol</short_desc>
          <delta_ts>2013-01-15 01:48:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrey Adaikin">aandrey</reporter>
          <assigned_to name="Andrey Adaikin">aandrey</assigned_to>
          <cc>apavlov</cc>
    
    <cc>buildbot</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rniwa</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>805048</commentid>
    <comment_count>0</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2013-01-11 00:59:24 -0800</bug_when>
    <thetext>CallArgument type abstraction to describe arguments of a canvas context call.
Drive-by: Introduce a CanvasContext to fix the wrong contextId value in the protocol. The contextId should point to the Resource that represents a context (2D or 3D canvas)

Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805049</commentid>
    <comment_count>1</comment_count>
      <attachid>182287</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2013-01-11 01:03:54 -0800</bug_when>
    <thetext>Created attachment 182287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805104</commentid>
    <comment_count>2</comment_count>
      <attachid>182287</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-11 02:38:47 -0800</bug_when>
    <thetext>Comment on attachment 182287
Patch

Attachment 182287 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15809246

New failing tests:
inspector/profiler/webgl/webgl-profiler-get-error.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805121</commentid>
    <comment_count>3</comment_count>
      <attachid>182311</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2013-01-11 03:07:39 -0800</bug_when>
    <thetext>Created attachment 182311
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807090</commentid>
    <comment_count>4</comment_count>
      <attachid>182311</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2013-01-15 01:17:08 -0800</bug_when>
    <thetext>Comment on attachment 182311
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=182311&amp;action=review

The patch mixes several unrelated changes which can be done in a separate CLs and would simplify the review process.

&gt; Source/WebCore/inspector/Inspector.json:3210
&gt; +                    { &quot;name&quot;: &quot;arguments&quot;, &quot;type&quot;: &quot;array&quot;, &quot;items&quot;: { &quot;$ref&quot;: &quot;CallArgument&quot; }, &quot;optional&quot;: true },

Would be nice to have descriptions for the properties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807102</commentid>
    <comment_count>5</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2013-01-15 01:25:34 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 182311 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=182311&amp;action=review
&gt; 
&gt; The patch mixes several unrelated changes which can be done in a separate CLs and would simplify the review process.
&gt; 
&gt; &gt; Source/WebCore/inspector/Inspector.json:3210
&gt; &gt; +                    { &quot;name&quot;: &quot;arguments&quot;, &quot;type&quot;: &quot;array&quot;, &quot;items&quot;: { &quot;$ref&quot;: &quot;CallArgument&quot; }, &quot;optional&quot;: true },
&gt; 
&gt; Would be nice to have descriptions for the properties.

Yeah, I intentionally kept this whole protocol hidden and undocumented while it&apos;s in a development state. I&apos;d rather leave this as is and focus on other stuff for now, but if you insist, I&apos;ll add documentation in separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807120</commentid>
    <comment_count>6</comment_count>
      <attachid>182311</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-15 01:47:56 -0800</bug_when>
    <thetext>Comment on attachment 182311
Patch

Clearing flags on attachment: 182311

Committed r139729: &lt;http://trac.webkit.org/changeset/139729&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807121</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-15 01:48:00 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182287</attachid>
            <date>2013-01-11 01:03:54 -0800</date>
            <delta_ts>2013-01-11 03:07:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106640-20130111130056.patch</filename>
            <type>text/plain</type>
            <size>25300</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWRiNGQ1MmYzZGZlMDg3
NzhlYmMwMmVkODdjMmViYzBkNmNkZmNjOS4uZTZiOTI1ZDIzNzg2MjMyMjQwZGI3MDkzMzA1N2U2
YTg4MWZjYTI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTAxLTExICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtDYW52YXNdIGludHJvZHVjZSBDYWxsQXJndW1lbnQgdHlwZSBpbnRvIHRoZSBwcm90b2Nv
bAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NjQw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2FsbEFy
Z3VtZW50IHR5cGUgYWJzdHJhY3Rpb24gdG8gZGVzY3JpYmUgYXJndW1lbnRzIG9mIGEgY2FudmFz
IGNvbnRleHQgY2FsbC4KKyAgICAgICAgRHJpdmUtYnk6IEludHJvZHVjZSBhIENhbnZhc0NvbnRl
eHQgdG8gZml4IHRoZSB3cm9uZyBjb250ZXh0SWQgdmFsdWUgaW4gdGhlIHByb3RvY29sLgorICAg
ICAgICBUaGUgY29udGV4dElkIHNob3VsZCBwb2ludCB0byB0aGUgUmVzb3VyY2UgdGhhdCByZXBy
ZXNlbnRzIGEgY29udGV4dCAoMkQgb3IgM0QgY2FudmFzKS4KKworICAgICAgICAqIGluc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5qczoKKyAgICAgICAgKC4pOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL0NhbnZhc1Byb2ZpbGVWaWV3LmpzOgorCiAyMDEzLTAxLTEwICBHcnplZ29yeiBDemFq
a293c2tpICA8Zy5jemFqa293c2tpQHNhbXN1bmcuY29tPgogCiAgICAgICAgIE9uIExpbnV4LCBz
aG91bGQgYmUgYWJsZSB0byBnZXQgc3BlbGxpbmcgc3VnZ2VzdGlvbnMgd2l0aG91dCBzZWxlY3Rp
bmcgdGhlIG1pc3NwZWxsZWQgd29yZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLmpzCmluZGV4IGQ2MWVh
MTFjMTg5ZWFhMmM3MGQ1NjRmZWMzMjkwMzYyY2E1YTUyOWMuLmUwNTMyNmZlZTRmZGRhNDc0ZjFh
ZmQzNzhlMGNhMzMwM2UwMTQ1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVTb3VyY2UuanMKQEAgLTM5Niw3
ICszOTYsOCBAQCBDYWxsLnByb3RvdHlwZSA9IHsKICAgICBzZXRBdHRhY2htZW50OiBmdW5jdGlv
bihuYW1lLCBhdHRhY2htZW50KQogICAgIHsKICAgICAgICAgaWYgKGF0dGFjaG1lbnQpIHsKLSAg
ICAgICAgICAgIHRoaXMuX2F0dGFjaG1lbnRzID0gdGhpcy5fYXR0YWNobWVudHMgfHwge307Cisg
ICAgICAgICAgICAvKiogQHR5cGUge09iamVjdC48c3RyaW5nLCBPYmplY3Q+fSAqLworICAgICAg
ICAgICAgdGhpcy5fYXR0YWNobWVudHMgPSB0aGlzLl9hdHRhY2htZW50cyB8fCBPYmplY3QuY3Jl
YXRlKG51bGwpOwogICAgICAgICAgICAgdGhpcy5fYXR0YWNobWVudHNbbmFtZV0gPSBhdHRhY2ht
ZW50OwogICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2F0dGFjaG1lbnRzKQogICAgICAgICAgICAg
ZGVsZXRlIHRoaXMuX2F0dGFjaG1lbnRzW25hbWVdOwpAQCAtNDQ2LDcgKzQ0Nyw3IEBAIENhbGwu
cHJvdG90eXBlID0gewogICAgICAqLwogICAgIHJlcGxheTogZnVuY3Rpb24ocmVwbGF5YWJsZUNh
bGwsIGNhY2hlKQogICAgIHsKLSAgICAgICAgdmFyIHJlcGxheU9iamVjdCA9IFJlcGxheWFibGVS
ZXNvdXJjZS5yZXBsYXkocmVwbGF5YWJsZUNhbGwucmVzb3VyY2UoKSwgY2FjaGUpOworICAgICAg
ICB2YXIgcmVwbGF5T2JqZWN0ID0gUmVwbGF5YWJsZVJlc291cmNlLnJlcGxheShyZXBsYXlhYmxl
Q2FsbC5yZXBsYXlhYmxlUmVzb3VyY2UoKSwgY2FjaGUpOwogICAgICAgICB2YXIgcmVwbGF5QXJn
cyA9IHJlcGxheWFibGVDYWxsLmFyZ3MoKS5tYXAoZnVuY3Rpb24ob2JqKSB7CiAgICAgICAgICAg
ICByZXR1cm4gUmVwbGF5YWJsZVJlc291cmNlLnJlcGxheShvYmosIGNhY2hlKTsKICAgICAgICAg
fSk7CkBAIC01MDIsNyArNTAzLDcgQEAgUmVwbGF5YWJsZUNhbGwucHJvdG90eXBlID0gewogICAg
IC8qKgogICAgICAqIEByZXR1cm4ge1JlcGxheWFibGVSZXNvdXJjZX0KICAgICAgKi8KLSAgICBy
ZXNvdXJjZTogZnVuY3Rpb24oKQorICAgIHJlcGxheWFibGVSZXNvdXJjZTogZnVuY3Rpb24oKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RoaXNPYmplY3Q7CiAgICAgfSwKQEAgLTU3OCwx
MSArNTc5LDE2IEBAIFJlcGxheWFibGVDYWxsLnByb3RvdHlwZSA9IHsKIC8qKgogICogQGNvbnN0
cnVjdG9yCiAgKiBAcGFyYW0geyFPYmplY3R9IHdyYXBwZWRPYmplY3QKKyAqIEBwYXJhbSB7c3Ry
aW5nfSBuYW1lCiAgKi8KLWZ1bmN0aW9uIFJlc291cmNlKHdyYXBwZWRPYmplY3QpCitmdW5jdGlv
biBSZXNvdXJjZSh3cmFwcGVkT2JqZWN0LCBuYW1lKQogewogICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLwogICAgIHRoaXMuX2lkID0gKytSZXNvdXJjZS5fdW5pcXVlSWQ7CisgICAgLyoqIEB0eXBl
IHtzdHJpbmd9ICovCisgICAgdGhpcy5fbmFtZSA9IG5hbWUgfHwgIlJlc291cmNlIjsKKyAgICAv
KiogQHR5cGUge251bWJlcn0gKi8KKyAgICB0aGlzLl9raW5kSWQgPSBSZXNvdXJjZS5fdW5pcXVl
S2luZElkc1t0aGlzLl9uYW1lXSA9IChSZXNvdXJjZS5fdW5pcXVlS2luZElkc1t0aGlzLl9uYW1l
XSB8fCAwKSArIDE7CiAgICAgLyoqIEB0eXBlIHtSZXNvdXJjZVRyYWNraW5nTWFuYWdlcn0gKi8K
ICAgICB0aGlzLl9yZXNvdXJjZU1hbmFnZXIgPSBudWxsOwogICAgIC8qKiBAdHlwZSB7IUFycmF5
LjxDYWxsPn0gKi8KQEAgLTYwNSw2ICs2MTEsMTEgQEAgZnVuY3Rpb24gUmVzb3VyY2Uod3JhcHBl
ZE9iamVjdCkKIFJlc291cmNlLl91bmlxdWVJZCA9IDA7CiAKIC8qKgorICogQHR5cGUgeyFPYmpl
Y3QuPHN0cmluZywgbnVtYmVyPn0KKyAqLworUmVzb3VyY2UuX3VuaXF1ZUtpbmRJZHMgPSB7fTsK
KworLyoqCiAgKiBAcGFyYW0geyp9IG9iagogICogQHJldHVybiB7UmVzb3VyY2V9CiAgKi8KQEAg
LTcwMyw2ICs3MTQsMjkgQEAgUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAv
KioKKyAgICAgKiBAcmV0dXJuIHtDb250ZXh0UmVzb3VyY2V9CisgICAgICovCisgICAgY29udGV4
dFJlc291cmNlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcyBpbnN0YW5jZW9m
IENvbnRleHRSZXNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybiAvKiogQHR5cGUge0NvbnRleHRS
ZXNvdXJjZX0gKi8gKHRoaXMpOworCisgICAgICAgIGlmICh0aGlzLl9jYWxjdWxhdGluZ0NvbnRl
eHRSZXNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIHRoaXMuX2Nh
bGN1bGF0aW5nQ29udGV4dFJlc291cmNlID0gdHJ1ZTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IG51
bGw7CisgICAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gdGhpcy5fY2FsbHMubGVuZ3RoOyBpIDwg
bjsgKytpKSB7CisgICAgICAgICAgICByZXN1bHQgPSB0aGlzLl9jYWxsc1tpXS5yZXNvdXJjZSgp
LmNvbnRleHRSZXNvdXJjZSgpOworICAgICAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWxldGUgdGhpcy5fY2FsY3VsYXRpbmdD
b250ZXh0UmVzb3VyY2U7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc3VsdCwgIkZhaWxlZCB0
byBmaW5kIGNvbnRleHQgcmVzb3VyY2UgZm9yICIgKyB0aGlzLl9uYW1lICsgIkAiICsgdGhpcy5f
a2luZElkKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorCisgICAgLyoqCiAgICAg
ICogQHBhcmFtIHshQ2FjaGV9IGNhY2hlCiAgICAgICogQHJldHVybiB7IVJlcGxheWFibGVSZXNv
dXJjZX0KICAgICAgKi8KQEAgLTcxMiw3ICs3NDYsOSBAQCBSZXNvdXJjZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAg
ICB2YXIgZGF0YSA9IHsKLSAgICAgICAgICAgIGlkOiB0aGlzLl9pZAorICAgICAgICAgICAgaWQ6
IHRoaXMuX2lkLAorICAgICAgICAgICAgbmFtZTogdGhpcy5fbmFtZSwKKyAgICAgICAgICAgIGtp
bmRJZDogdGhpcy5fa2luZElkCiAgICAgICAgIH07CiAgICAgICAgIHJlc3VsdCA9IG5ldyBSZXBs
YXlhYmxlUmVzb3VyY2UodGhpcywgZGF0YSk7CiAgICAgICAgIGNhY2hlLnB1dCh0aGlzLl9pZCwg
cmVzdWx0KTsgLy8gUHV0IGludG8gdGhlIGNhY2hlIGVhcmx5IHRvIGF2b2lkIGxvb3BzLgpAQCAt
NzIwLDYgKzc1Niw3IEBAIFJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVy
biBjYWxsLnRvUmVwbGF5YWJsZShjYWNoZSk7CiAgICAgICAgIH0pOwogICAgICAgICB0aGlzLl9w
b3B1bGF0ZVJlcGxheWFibGVEYXRhKGRhdGEsIGNhY2hlKTsKKyAgICAgICAgZGF0YS5jb250ZXh0
UmVzb3VyY2UgPSBSZXNvdXJjZS50b1JlcGxheWFibGUodGhpcy5jb250ZXh0UmVzb3VyY2UoKSwg
Y2FjaGUpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0sCiAKQEAgLTc0Myw2ICs3ODAs
OCBAQCBSZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmIChyZXNvdXJjZSkKICAgICAg
ICAgICAgIHJldHVybiByZXNvdXJjZTsKICAgICAgICAgdGhpcy5faWQgPSBkYXRhLmlkOworICAg
ICAgICB0aGlzLl9uYW1lID0gZGF0YS5uYW1lOworICAgICAgICB0aGlzLl9raW5kSWQgPSBkYXRh
LmtpbmRJZDsKICAgICAgICAgdGhpcy5fcmVzb3VyY2VNYW5hZ2VyID0gbnVsbDsKICAgICAgICAg
dGhpcy5fY2FsbHMgPSBbXTsKICAgICAgICAgdGhpcy5fd3JhcHBlZE9iamVjdCA9IG51bGw7CkBA
IC05ODIsMTAgKzEwMjEsMTEgQEAgUmVzb3VyY2UuV3JhcEZ1bmN0aW9uLnByb3RvdHlwZSA9IHsK
IH0KIAogLyoqCi0gKiBAcGFyYW0ge2Z1bmN0aW9uKG5ldzpSZXNvdXJjZSwgIU9iamVjdCl9IHJl
c291cmNlQ29uc3RydWN0b3IKKyAqIEBwYXJhbSB7ZnVuY3Rpb24obmV3OlJlc291cmNlLCAhT2Jq
ZWN0LCBzdHJpbmcpfSByZXNvdXJjZUNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge3N0cmluZ30gcmVz
b3VyY2VOYW1lCiAgKiBAcmV0dXJuIHtmdW5jdGlvbih0aGlzOlJlc291cmNlLldyYXBGdW5jdGlv
bil9CiAgKi8KLVJlc291cmNlLldyYXBGdW5jdGlvbi5yZXNvdXJjZUZhY3RvcnlNZXRob2QgPSBm
dW5jdGlvbihyZXNvdXJjZUNvbnN0cnVjdG9yKQorUmVzb3VyY2UuV3JhcEZ1bmN0aW9uLnJlc291
cmNlRmFjdG9yeU1ldGhvZCA9IGZ1bmN0aW9uKHJlc291cmNlQ29uc3RydWN0b3IsIHJlc291cmNl
TmFtZSkKIHsKICAgICAvKiogQHRoaXMgUmVzb3VyY2UuV3JhcEZ1bmN0aW9uICovCiAgICAgcmV0
dXJuIGZ1bmN0aW9uKCkKQEAgLTk5Myw3ICsxMDMzLDcgQEAgUmVzb3VyY2UuV3JhcEZ1bmN0aW9u
LnJlc291cmNlRmFjdG9yeU1ldGhvZCA9IGZ1bmN0aW9uKHJlc291cmNlQ29uc3RydWN0b3IpCiAg
ICAgICAgIHZhciB3cmFwcGVkT2JqZWN0ID0gLyoqIEB0eXBlIHtPYmplY3R9ICovICh0aGlzLnJl
c3VsdCgpKTsKICAgICAgICAgaWYgKCF3cmFwcGVkT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB2YXIgcmVzb3VyY2UgPSBuZXcgcmVzb3VyY2VDb25zdHJ1Y3Rvcih3cmFwcGVk
T2JqZWN0KTsKKyAgICAgICAgdmFyIHJlc291cmNlID0gbmV3IHJlc291cmNlQ29uc3RydWN0b3Io
d3JhcHBlZE9iamVjdCwgcmVzb3VyY2VOYW1lKTsKICAgICAgICAgdmFyIG1hbmFnZXIgPSB0aGlz
Ll9yZXNvdXJjZS5tYW5hZ2VyKCk7CiAgICAgICAgIGlmIChtYW5hZ2VyKQogICAgICAgICAgICAg
bWFuYWdlci5yZWdpc3RlclJlc291cmNlKHJlc291cmNlKTsKQEAgLTEwMjMsNiArMTA2MywyMiBA
QCBSZXBsYXlhYmxlUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKKyAg
ICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgZGVzY3JpcHRpb246IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9kYXRhLm5hbWUgKyAiQCIgKyB0aGlzLl9k
YXRhLmtpbmRJZDsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7UmVwbGF5YWJs
ZVJlc291cmNlfQorICAgICAqLworICAgIHJlcGxheWFibGVDb250ZXh0UmVzb3VyY2U6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9kYXRhLmNvbnRleHRSZXNvdXJjZTsK
KyAgICB9LAorCisgICAgLyoqCiAgICAgICogQHBhcmFtIHshQ2FjaGV9IGNhY2hlCiAgICAgICog
QHJldHVybiB7IVJlc291cmNlfQogICAgICAqLwpAQCAtMTA0OCwxMCArMTEwNCwyNyBAQCBSZXBs
YXlhYmxlUmVzb3VyY2UucmVwbGF5ID0gZnVuY3Rpb24ob2JqLCBjYWNoZSkKIC8qKgogICogQGNv
bnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7UmVzb3VyY2V9CisgKiBAcGFyYW0geyFPYmplY3R9IHdy
YXBwZWRPYmplY3QKKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgKi8KK2Z1bmN0aW9uIENvbnRl
eHRSZXNvdXJjZSh3cmFwcGVkT2JqZWN0LCBuYW1lKQoreworICAgIFJlc291cmNlLmNhbGwodGhp
cywgd3JhcHBlZE9iamVjdCwgbmFtZSk7Cit9CisKK0NvbnRleHRSZXNvdXJjZS5wcm90b3R5cGUg
PSB7CisgICAgX19wcm90b19fOiBSZXNvdXJjZS5wcm90b3R5cGUKK30KKworLyoqCisgKiBAY29u
c3RydWN0b3IKKyAqIEBleHRlbmRzIHtSZXNvdXJjZX0KKyAqIEBwYXJhbSB7IU9iamVjdH0gd3Jh
cHBlZE9iamVjdAorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKICAqLwotZnVuY3Rpb24gTG9nRXZl
cnl0aGluZ1Jlc291cmNlKHdyYXBwZWRPYmplY3QpCitmdW5jdGlvbiBMb2dFdmVyeXRoaW5nUmVz
b3VyY2Uod3JhcHBlZE9iamVjdCwgbmFtZSkKIHsKLSAgICBSZXNvdXJjZS5jYWxsKHRoaXMsIHdy
YXBwZWRPYmplY3QpOworICAgIFJlc291cmNlLmNhbGwodGhpcywgd3JhcHBlZE9iamVjdCwgbmFt
ZSk7CiB9CiAKIExvZ0V2ZXJ5dGhpbmdSZXNvdXJjZS5wcm90b3R5cGUgPSB7CkBAIC0xMDg1LDEw
ICsxMTU4LDEyIEBAIExvZ0V2ZXJ5dGhpbmdSZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAvKioKICAq
IEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1Jlc291cmNlfQorICogQHBhcmFtIHshT2JqZWN0
fSB3cmFwcGVkT2JqZWN0CisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQogICovCi1mdW5jdGlvbiBX
ZWJHTEJvdW5kUmVzb3VyY2Uod3JhcHBlZE9iamVjdCkKK2Z1bmN0aW9uIFdlYkdMQm91bmRSZXNv
dXJjZSh3cmFwcGVkT2JqZWN0LCBuYW1lKQogewotICAgIFJlc291cmNlLmNhbGwodGhpcywgd3Jh
cHBlZE9iamVjdCk7CisgICAgUmVzb3VyY2UuY2FsbCh0aGlzLCB3cmFwcGVkT2JqZWN0LCBuYW1l
KTsKICAgICAvKiogQHR5cGUgeyFPYmplY3QuPHN0cmluZywgKj59ICovCiAgICAgdGhpcy5fc3Rh
dGUgPSB7fTsKIH0KQEAgLTExMTUsMTQgKzExOTAsOSBAQCBXZWJHTEJvdW5kUmVzb3VyY2UucHJv
dG90eXBlID0gewogICAgICAqLwogICAgIF9kb1JlcGxheUNhbGxzOiBmdW5jdGlvbihkYXRhLCBj
YWNoZSkKICAgICB7Ci0gICAgICAgIHZhciBzdGF0ZSA9IHt9OwotICAgICAgICBPYmplY3Qua2V5
cyhkYXRhLnN0YXRlKS5mb3JFYWNoKGZ1bmN0aW9uKHBhcmFtZXRlcikgewotICAgICAgICAgICAg
c3RhdGVbcGFyYW1ldGVyXSA9IFJlcGxheWFibGVSZXNvdXJjZS5yZXBsYXkoZGF0YS5zdGF0ZVtw
YXJhbWV0ZXJdLCBjYWNoZSk7Ci0gICAgICAgIH0pOwotICAgICAgICB0aGlzLl9zdGF0ZSA9IHN0
YXRlOwotCiAgICAgICAgIHZhciBnbCA9IHRoaXMuX3JlcGxheUNvbnRleHRSZXNvdXJjZShkYXRh
LCBjYWNoZSkud3JhcHBlZE9iamVjdCgpOwogCisgICAgICAgIC8qKiBAdHlwZSB7IU9iamVjdC48
c3RyaW5nLCBBcnJheS48c3RyaW5nPj59ICovCiAgICAgICAgIHZhciBiaW5kaW5nc0RhdGEgPSB7
CiAgICAgICAgICAgICBURVhUVVJFXzJEOiBbImJpbmRUZXh0dXJlIiwgIlRFWFRVUkVfQklORElO
R18yRCJdLAogICAgICAgICAgICAgVEVYVFVSRV9DVUJFX01BUDogWyJiaW5kVGV4dHVyZSIsICJU
RVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVAiXSwKQEAgLTExMzcsNiArMTIwNywxMSBAQCBXZWJHTEJv
dW5kUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICAgICAgb3JpZ2luYWxCaW5kaW5nc1ti
aW5kaW5nVGFyZ2V0XSA9IGdsLmdldFBhcmFtZXRlcihnbFtiaW5kaW5nUGFyYW1ldGVyXSk7CiAg
ICAgICAgIH0pOwogCisgICAgICAgIHZhciBzdGF0ZSA9IHt9OworICAgICAgICBPYmplY3Qua2V5
cyhkYXRhLnN0YXRlKS5mb3JFYWNoKGZ1bmN0aW9uKHBhcmFtZXRlcikgeworICAgICAgICAgICAg
c3RhdGVbcGFyYW1ldGVyXSA9IFJlcGxheWFibGVSZXNvdXJjZS5yZXBsYXkoZGF0YS5zdGF0ZVtw
YXJhbWV0ZXJdLCBjYWNoZSk7CisgICAgICAgIH0pOworICAgICAgICB0aGlzLl9zdGF0ZSA9IHN0
YXRlOwogICAgICAgICBSZXNvdXJjZS5wcm90b3R5cGUuX2RvUmVwbGF5Q2FsbHMuY2FsbCh0aGlz
LCBkYXRhLCBjYWNoZSk7CiAKICAgICAgICAgT2JqZWN0LmtleXMoYmluZGluZ3NEYXRhKS5mb3JF
YWNoKGZ1bmN0aW9uKGJpbmRpbmdUYXJnZXQpIHsKQEAgLTExNTIsOSArMTIyNyw5IEBAIFdlYkdM
Qm91bmRSZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX3JlcGxheUNvbnRleHRS
ZXNvdXJjZTogZnVuY3Rpb24oZGF0YSwgY2FjaGUpCiAgICAgewotICAgICAgICB2YXIgY2FsbHMg
PSBkYXRhLmNhbGxzOworICAgICAgICB2YXIgY2FsbHMgPSAvKiogQHR5cGUgeyFBcnJheS48UmVw
bGF5YWJsZUNhbGw+fSAqLyAoZGF0YS5jYWxscyk7CiAgICAgICAgIGZvciAodmFyIGkgPSAwLCBu
ID0gY2FsbHMubGVuZ3RoOyBpIDwgbjsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgcmVzb3VyY2Ug
PSBSZXBsYXlhYmxlUmVzb3VyY2UucmVwbGF5KGNhbGxzW2ldLnJlc291cmNlKCksIGNhY2hlKTsK
KyAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IFJlcGxheWFibGVSZXNvdXJjZS5yZXBsYXkoY2Fs
bHNbaV0ucmVwbGF5YWJsZVJlc291cmNlKCksIGNhY2hlKTsKICAgICAgICAgICAgIHZhciBjb250
ZXh0UmVzb3VyY2UgPSBXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZS5mb3JPYmplY3QocmVz
b3VyY2UpOwogICAgICAgICAgICAgaWYgKGNvbnRleHRSZXNvdXJjZSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gY29udGV4dFJlc291cmNlOwpAQCAtMTE4MCwxMCArMTI1NSwxMiBAQCBXZWJHTEJv
dW5kUmVzb3VyY2UucHJvdG90eXBlID0gewogLyoqCiAgKiBAY29uc3RydWN0b3IKICAqIEBleHRl
bmRzIHtXZWJHTEJvdW5kUmVzb3VyY2V9CisgKiBAcGFyYW0geyFPYmplY3R9IHdyYXBwZWRPYmpl
Y3QKKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCiAgKi8KLWZ1bmN0aW9uIFdlYkdMVGV4dHVyZVJl
c291cmNlKHdyYXBwZWRPYmplY3QpCitmdW5jdGlvbiBXZWJHTFRleHR1cmVSZXNvdXJjZSh3cmFw
cGVkT2JqZWN0LCBuYW1lKQogewotICAgIFdlYkdMQm91bmRSZXNvdXJjZS5jYWxsKHRoaXMsIHdy
YXBwZWRPYmplY3QpOworICAgIFdlYkdMQm91bmRSZXNvdXJjZS5jYWxsKHRoaXMsIHdyYXBwZWRP
YmplY3QsIG5hbWUpOwogfQogCiBXZWJHTFRleHR1cmVSZXNvdXJjZS5wcm90b3R5cGUgPSB7CkBA
IC0xMjUzLDcgKzEzMzAsNyBAQCBXZWJHTFRleHR1cmVSZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAg
ICAgewogICAgICAgICB2YXIgZ2xSZXNvdXJjZSA9IFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291
cmNlLmZvck9iamVjdChjYWxsLnJlc291cmNlKCkpOwogICAgICAgICB2YXIgZ2wgPSBnbFJlc291
cmNlLndyYXBwZWRPYmplY3QoKTsKLSAgICAgICAgdmFyIGZyYW1lYnVmZmVyUmVzb3VyY2UgPSAv
KiogQHR5cGUge1dlYkdMRnJhbWVidWZmZXJSZXNvdXJjZX0gKi8gZ2xSZXNvdXJjZS5jdXJyZW50
QmluZGluZyhnbC5GUkFNRUJVRkZFUik7CisgICAgICAgIHZhciBmcmFtZWJ1ZmZlclJlc291cmNl
ID0gLyoqIEB0eXBlIHtXZWJHTEZyYW1lYnVmZmVyUmVzb3VyY2V9ICovIChnbFJlc291cmNlLmN1
cnJlbnRCaW5kaW5nKGdsLkZSQU1FQlVGRkVSKSk7CiAgICAgICAgIGlmIChmcmFtZWJ1ZmZlclJl
c291cmNlKQogICAgICAgICAgICAgdGhpcy5wdXNoQ2FsbChuZXcgQ2FsbChnbFJlc291cmNlLCAi
YmluZEZyYW1lYnVmZmVyIiwgW2dsLkZSQU1FQlVGRkVSLCBmcmFtZWJ1ZmZlclJlc291cmNlXSkp
OwogICAgICAgICBlbHNlIHsKQEAgLTEyNjksMTAgKzEzNDYsMTIgQEAgV2ViR0xUZXh0dXJlUmVz
b3VyY2UucHJvdG90eXBlID0gewogLyoqCiAgKiBAY29uc3RydWN0b3IKICAqIEBleHRlbmRzIHtS
ZXNvdXJjZX0KKyAqIEBwYXJhbSB7IU9iamVjdH0gd3JhcHBlZE9iamVjdAorICogQHBhcmFtIHtz
dHJpbmd9IG5hbWUKICAqLwotZnVuY3Rpb24gV2ViR0xQcm9ncmFtUmVzb3VyY2Uod3JhcHBlZE9i
amVjdCkKK2Z1bmN0aW9uIFdlYkdMUHJvZ3JhbVJlc291cmNlKHdyYXBwZWRPYmplY3QsIG5hbWUp
CiB7Ci0gICAgUmVzb3VyY2UuY2FsbCh0aGlzLCB3cmFwcGVkT2JqZWN0KTsKKyAgICBSZXNvdXJj
ZS5jYWxsKHRoaXMsIHdyYXBwZWRPYmplY3QsIG5hbWUpOwogfQogCiBXZWJHTFByb2dyYW1SZXNv
dXJjZS5wcm90b3R5cGUgPSB7CkBAIC0xMjk5LDcgKzEzNzgsNyBAQCBXZWJHTFByb2dyYW1SZXNv
dXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBvcmlnaW5hbEVycm9ycyA9IGdsUmVzb3Vy
Y2UuZ2V0QWxsRXJyb3JzKCk7CiAKICAgICAgICAgdmFyIHVuaWZvcm1zID0gW107Ci0gICAgICAg
IHZhciB1bmlmb3Jtc0NvdW50ID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIGdsLmdldFByb2dyYW1Q
YXJhbWV0ZXIocHJvZ3JhbSwgZ2wuQUNUSVZFX1VOSUZPUk1TKTsKKyAgICAgICAgdmFyIHVuaWZv
cm1zQ291bnQgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKGdsLmdldFByb2dyYW1QYXJhbWV0ZXIo
cHJvZ3JhbSwgZ2wuQUNUSVZFX1VOSUZPUk1TKSk7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgdW5pZm9ybXNDb3VudDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgYWN0aXZlSW5mbyA9IGds
LmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaSk7CiAgICAgICAgICAgICBpZiAoIWFjdGl2ZUlu
Zm8pCkBAIC0xNDAyLDEwICsxNDgxLDEyIEBAIFdlYkdMUHJvZ3JhbVJlc291cmNlLnByb3RvdHlw
ZSA9IHsKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7UmVzb3VyY2V9CisgKiBA
cGFyYW0geyFPYmplY3R9IHdyYXBwZWRPYmplY3QKKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCiAg
Ki8KLWZ1bmN0aW9uIFdlYkdMU2hhZGVyUmVzb3VyY2Uod3JhcHBlZE9iamVjdCkKK2Z1bmN0aW9u
IFdlYkdMU2hhZGVyUmVzb3VyY2Uod3JhcHBlZE9iamVjdCwgbmFtZSkKIHsKLSAgICBSZXNvdXJj
ZS5jYWxsKHRoaXMsIHdyYXBwZWRPYmplY3QpOworICAgIFJlc291cmNlLmNhbGwodGhpcywgd3Jh
cHBlZE9iamVjdCwgbmFtZSk7CiB9CiAKIFdlYkdMU2hhZGVyUmVzb3VyY2UucHJvdG90eXBlID0g
ewpAQCAtMTQzOCwxMCArMTUxOSwxMiBAQCBXZWJHTFNoYWRlclJlc291cmNlLnByb3RvdHlwZSA9
IHsKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViR0xCb3VuZFJlc291cmNl
fQorICogQHBhcmFtIHshT2JqZWN0fSB3cmFwcGVkT2JqZWN0CisgKiBAcGFyYW0ge3N0cmluZ30g
bmFtZQogICovCi1mdW5jdGlvbiBXZWJHTEJ1ZmZlclJlc291cmNlKHdyYXBwZWRPYmplY3QpCitm
dW5jdGlvbiBXZWJHTEJ1ZmZlclJlc291cmNlKHdyYXBwZWRPYmplY3QsIG5hbWUpCiB7Ci0gICAg
V2ViR0xCb3VuZFJlc291cmNlLmNhbGwodGhpcywgd3JhcHBlZE9iamVjdCk7CisgICAgV2ViR0xC
b3VuZFJlc291cmNlLmNhbGwodGhpcywgd3JhcHBlZE9iamVjdCwgbmFtZSk7CiB9CiAKIFdlYkdM
QnVmZmVyUmVzb3VyY2UucHJvdG90eXBlID0gewpAQCAtMTQ2MiwxMCArMTU0NSwxMiBAQCBXZWJH
TEJ1ZmZlclJlc291cmNlLnByb3RvdHlwZSA9IHsKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBA
ZXh0ZW5kcyB7V2ViR0xCb3VuZFJlc291cmNlfQorICogQHBhcmFtIHshT2JqZWN0fSB3cmFwcGVk
T2JqZWN0CisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQogICovCi1mdW5jdGlvbiBXZWJHTEZyYW1l
YnVmZmVyUmVzb3VyY2Uod3JhcHBlZE9iamVjdCkKK2Z1bmN0aW9uIFdlYkdMRnJhbWVidWZmZXJS
ZXNvdXJjZSh3cmFwcGVkT2JqZWN0LCBuYW1lKQogewotICAgIFdlYkdMQm91bmRSZXNvdXJjZS5j
YWxsKHRoaXMsIHdyYXBwZWRPYmplY3QpOworICAgIFdlYkdMQm91bmRSZXNvdXJjZS5jYWxsKHRo
aXMsIHdyYXBwZWRPYmplY3QsIG5hbWUpOwogfQogCiBXZWJHTEZyYW1lYnVmZmVyUmVzb3VyY2Uu
cHJvdG90eXBlID0gewpAQCAtMTQ4NSwxMCArMTU3MCwxMiBAQCBXZWJHTEZyYW1lYnVmZmVyUmVz
b3VyY2UucHJvdG90eXBlID0gewogLyoqCiAgKiBAY29uc3RydWN0b3IKICAqIEBleHRlbmRzIHtX
ZWJHTEJvdW5kUmVzb3VyY2V9CisgKiBAcGFyYW0geyFPYmplY3R9IHdyYXBwZWRPYmplY3QKKyAq
IEBwYXJhbSB7c3RyaW5nfSBuYW1lCiAgKi8KLWZ1bmN0aW9uIFdlYkdMUmVuZGVyYnVmZmVyUmVz
b3VyY2Uod3JhcHBlZE9iamVjdCkKK2Z1bmN0aW9uIFdlYkdMUmVuZGVyYnVmZmVyUmVzb3VyY2Uo
d3JhcHBlZE9iamVjdCwgbmFtZSkKIHsKLSAgICBXZWJHTEJvdW5kUmVzb3VyY2UuY2FsbCh0aGlz
LCB3cmFwcGVkT2JqZWN0KTsKKyAgICBXZWJHTEJvdW5kUmVzb3VyY2UuY2FsbCh0aGlzLCB3cmFw
cGVkT2JqZWN0LCBuYW1lKTsKIH0KIAogV2ViR0xSZW5kZXJidWZmZXJSZXNvdXJjZS5wcm90b3R5
cGUgPSB7CkBAIC0xNTA3LDEzICsxNTk0LDEzIEBAIFdlYkdMUmVuZGVyYnVmZmVyUmVzb3VyY2Uu
cHJvdG90eXBlID0gewogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgotICogQGV4dGVuZHMge1Jlc291
cmNlfQorICogQGV4dGVuZHMge0NvbnRleHRSZXNvdXJjZX0KICAqIEBwYXJhbSB7IVdlYkdMUmVu
ZGVyaW5nQ29udGV4dH0gZ2xDb250ZXh0CiAgKiBAcGFyYW0ge2Z1bmN0aW9uKCk6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0fSByZXBsYXlDb250ZXh0Q2FsbGJhY2sKICAqLwogZnVuY3Rpb24gV2ViR0xS
ZW5kZXJpbmdDb250ZXh0UmVzb3VyY2UoZ2xDb250ZXh0LCByZXBsYXlDb250ZXh0Q2FsbGJhY2sp
CiB7Ci0gICAgUmVzb3VyY2UuY2FsbCh0aGlzLCBnbENvbnRleHQpOworICAgIENvbnRleHRSZXNv
dXJjZS5jYWxsKHRoaXMsIGdsQ29udGV4dCwgIldlYkdMUmVuZGVyaW5nQ29udGV4dCIpOwogICAg
IHRoaXMuX3JlcGxheUNvbnRleHRDYWxsYmFjayA9IHJlcGxheUNvbnRleHRDYWxsYmFjazsKICAg
ICAvKiogQHR5cGUge09iamVjdC48bnVtYmVyLCBib29sZWFuPn0gKi8KICAgICB0aGlzLl9jdXN0
b21FcnJvcnMgPSBudWxsOwpAQCAtMTYxMiwxMiArMTY5OSw5IEBAIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dFJlc291cmNlLlN0YXRlUGFyYW1ldGVycyA9IFsKIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJl
c291cmNlLmZvck9iamVjdCA9IGZ1bmN0aW9uKG9iaikKIHsKICAgICB2YXIgcmVzb3VyY2UgPSBS
ZXNvdXJjZS5mb3JPYmplY3Qob2JqKTsKLSAgICBpZiAoIXJlc291cmNlIHx8IHJlc291cmNlIGlu
c3RhbmNlb2YgV2ViR0xSZW5kZXJpbmdDb250ZXh0UmVzb3VyY2UpCi0gICAgICAgIHJldHVybiBy
ZXNvdXJjZTsKLSAgICB2YXIgY2FsbHMgPSByZXNvdXJjZS5jYWxscygpOwotICAgIGlmICghY2Fs
bHMgfHwgIWNhbGxzLmxlbmd0aCkKKyAgICBpZiAoIXJlc291cmNlKQogICAgICAgICByZXR1cm4g
bnVsbDsKLSAgICByZXNvdXJjZSA9IGNhbGxzWzBdLnJlc291cmNlKCk7CisgICAgcmVzb3VyY2Ug
PSByZXNvdXJjZS5jb250ZXh0UmVzb3VyY2UoKTsKICAgICByZXR1cm4gKHJlc291cmNlIGluc3Rh
bmNlb2YgV2ViR0xSZW5kZXJpbmdDb250ZXh0UmVzb3VyY2UpID8gcmVzb3VyY2UgOiBudWxsOwog
fQogCkBAIC0xODYyLDcgKzE5NDYsNyBAQCBXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICAgICAgZ2wuYWN0aXZlVGV4dHVyZShnbFN0YXRl
LkFDVElWRV9URVhUVVJFKTsKIAotICAgICAgICBSZXNvdXJjZS5wcm90b3R5cGUuX2RvUmVwbGF5
Q2FsbHMuY2FsbCh0aGlzLCBkYXRhLCBjYWNoZSk7CisgICAgICAgIENvbnRleHRSZXNvdXJjZS5w
cm90b3R5cGUuX2RvUmVwbGF5Q2FsbHMuY2FsbCh0aGlzLCBkYXRhLCBjYWNoZSk7CiAgICAgfSwK
IAogICAgIC8qKgpAQCAtMTkzMCwxMyArMjAxNCwxMyBAQCBXZWJHTFJlbmRlcmluZ0NvbnRleHRS
ZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghd3JhcEZ1bmN0aW9ucykgewogICAg
ICAgICAgICAgd3JhcEZ1bmN0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7CiAKLSAgICAgICAg
ICAgIHdyYXBGdW5jdGlvbnNbImNyZWF0ZUJ1ZmZlciJdID0gUmVzb3VyY2UuV3JhcEZ1bmN0aW9u
LnJlc291cmNlRmFjdG9yeU1ldGhvZChXZWJHTEJ1ZmZlclJlc291cmNlKTsKLSAgICAgICAgICAg
IHdyYXBGdW5jdGlvbnNbImNyZWF0ZVNoYWRlciJdID0gUmVzb3VyY2UuV3JhcEZ1bmN0aW9uLnJl
c291cmNlRmFjdG9yeU1ldGhvZChXZWJHTFNoYWRlclJlc291cmNlKTsKLSAgICAgICAgICAgIHdy
YXBGdW5jdGlvbnNbImNyZWF0ZVByb2dyYW0iXSA9IFJlc291cmNlLldyYXBGdW5jdGlvbi5yZXNv
dXJjZUZhY3RvcnlNZXRob2QoV2ViR0xQcm9ncmFtUmVzb3VyY2UpOwotICAgICAgICAgICAgd3Jh
cEZ1bmN0aW9uc1siY3JlYXRlVGV4dHVyZSJdID0gUmVzb3VyY2UuV3JhcEZ1bmN0aW9uLnJlc291
cmNlRmFjdG9yeU1ldGhvZChXZWJHTFRleHR1cmVSZXNvdXJjZSk7Ci0gICAgICAgICAgICB3cmFw
RnVuY3Rpb25zWyJjcmVhdGVGcmFtZWJ1ZmZlciJdID0gUmVzb3VyY2UuV3JhcEZ1bmN0aW9uLnJl
c291cmNlRmFjdG9yeU1ldGhvZChXZWJHTEZyYW1lYnVmZmVyUmVzb3VyY2UpOwotICAgICAgICAg
ICAgd3JhcEZ1bmN0aW9uc1siY3JlYXRlUmVuZGVyYnVmZmVyIl0gPSBSZXNvdXJjZS5XcmFwRnVu
Y3Rpb24ucmVzb3VyY2VGYWN0b3J5TWV0aG9kKFdlYkdMUmVuZGVyYnVmZmVyUmVzb3VyY2UpOwot
ICAgICAgICAgICAgd3JhcEZ1bmN0aW9uc1siZ2V0VW5pZm9ybUxvY2F0aW9uIl0gPSBSZXNvdXJj
ZS5XcmFwRnVuY3Rpb24ucmVzb3VyY2VGYWN0b3J5TWV0aG9kKFJlc291cmNlKTsKKyAgICAgICAg
ICAgIHdyYXBGdW5jdGlvbnNbImNyZWF0ZUJ1ZmZlciJdID0gUmVzb3VyY2UuV3JhcEZ1bmN0aW9u
LnJlc291cmNlRmFjdG9yeU1ldGhvZChXZWJHTEJ1ZmZlclJlc291cmNlLCAiV2ViR0xCdWZmZXIi
KTsKKyAgICAgICAgICAgIHdyYXBGdW5jdGlvbnNbImNyZWF0ZVNoYWRlciJdID0gUmVzb3VyY2Uu
V3JhcEZ1bmN0aW9uLnJlc291cmNlRmFjdG9yeU1ldGhvZChXZWJHTFNoYWRlclJlc291cmNlLCAi
V2ViR0xTaGFkZXIiKTsKKyAgICAgICAgICAgIHdyYXBGdW5jdGlvbnNbImNyZWF0ZVByb2dyYW0i
XSA9IFJlc291cmNlLldyYXBGdW5jdGlvbi5yZXNvdXJjZUZhY3RvcnlNZXRob2QoV2ViR0xQcm9n
cmFtUmVzb3VyY2UsICJXZWJHTFByb2dyYW0iKTsKKyAgICAgICAgICAgIHdyYXBGdW5jdGlvbnNb
ImNyZWF0ZVRleHR1cmUiXSA9IFJlc291cmNlLldyYXBGdW5jdGlvbi5yZXNvdXJjZUZhY3RvcnlN
ZXRob2QoV2ViR0xUZXh0dXJlUmVzb3VyY2UsICJXZWJHTFRleHR1cmUiKTsKKyAgICAgICAgICAg
IHdyYXBGdW5jdGlvbnNbImNyZWF0ZUZyYW1lYnVmZmVyIl0gPSBSZXNvdXJjZS5XcmFwRnVuY3Rp
b24ucmVzb3VyY2VGYWN0b3J5TWV0aG9kKFdlYkdMRnJhbWVidWZmZXJSZXNvdXJjZSwgIldlYkdM
RnJhbWVidWZmZXIiKTsKKyAgICAgICAgICAgIHdyYXBGdW5jdGlvbnNbImNyZWF0ZVJlbmRlcmJ1
ZmZlciJdID0gUmVzb3VyY2UuV3JhcEZ1bmN0aW9uLnJlc291cmNlRmFjdG9yeU1ldGhvZChXZWJH
TFJlbmRlcmJ1ZmZlclJlc291cmNlLCAiV2ViR0xSZW5kZXJidWZmZXIiKTsKKyAgICAgICAgICAg
IHdyYXBGdW5jdGlvbnNbImdldFVuaWZvcm1Mb2NhdGlvbiJdID0gUmVzb3VyY2UuV3JhcEZ1bmN0
aW9uLnJlc291cmNlRmFjdG9yeU1ldGhvZChSZXNvdXJjZSwgIldlYkdMVW5pZm9ybUxvY2F0aW9u
Iik7CiAKICAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG1l
dGhvZE5hbWUKQEAgLTIwODgsNyArMjE3Miw3IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291
cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHdyYXBGdW5jdGlvbnM7CiAgICAgfSwK
IAotICAgIF9fcHJvdG9fXzogUmVzb3VyY2UucHJvdG90eXBlCisgICAgX19wcm90b19fOiBDb250
ZXh0UmVzb3VyY2UucHJvdG90eXBlCiB9CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCkBAIC0y
MDk3LDEzICsyMTgxLDEzIEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLnByb3RvdHlw
ZSA9IHsKIAogLyoqCiAgKiBAY29uc3RydWN0b3IKLSAqIEBleHRlbmRzIHtSZXNvdXJjZX0KKyAq
IEBleHRlbmRzIHtDb250ZXh0UmVzb3VyY2V9CiAgKiBAcGFyYW0geyFDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkR9IGNvbnRleHQKICAqIEBwYXJhbSB7ZnVuY3Rpb24oKTpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkR9IHJlcGxheUNvbnRleHRDYWxsYmFjawogICovCiBmdW5jdGlvbiBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRSZXNvdXJjZShjb250ZXh0LCByZXBsYXlDb250ZXh0Q2FsbGJhY2spCiB7
Ci0gICAgUmVzb3VyY2UuY2FsbCh0aGlzLCBjb250ZXh0KTsKKyAgICBDb250ZXh0UmVzb3VyY2Uu
Y2FsbCh0aGlzLCBjb250ZXh0LCAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIik7CiAgICAgdGhp
cy5fcmVwbGF5Q29udGV4dENhbGxiYWNrID0gcmVwbGF5Q29udGV4dENhbGxiYWNrOwogfQogCkBA
IC0yNDMyLDkgKzI1MTYsOSBAQCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5wcm90
b3R5cGUgPSB7CiAgICAgICAgIGlmICghd3JhcEZ1bmN0aW9ucykgewogICAgICAgICAgICAgd3Jh
cEZ1bmN0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7CiAKLSAgICAgICAgICAgIHdyYXBGdW5j
dGlvbnNbImNyZWF0ZUxpbmVhckdyYWRpZW50Il0gPSBSZXNvdXJjZS5XcmFwRnVuY3Rpb24ucmVz
b3VyY2VGYWN0b3J5TWV0aG9kKExvZ0V2ZXJ5dGhpbmdSZXNvdXJjZSk7Ci0gICAgICAgICAgICB3
cmFwRnVuY3Rpb25zWyJjcmVhdGVSYWRpYWxHcmFkaWVudCJdID0gUmVzb3VyY2UuV3JhcEZ1bmN0
aW9uLnJlc291cmNlRmFjdG9yeU1ldGhvZChMb2dFdmVyeXRoaW5nUmVzb3VyY2UpOwotICAgICAg
ICAgICAgd3JhcEZ1bmN0aW9uc1siY3JlYXRlUGF0dGVybiJdID0gUmVzb3VyY2UuV3JhcEZ1bmN0
aW9uLnJlc291cmNlRmFjdG9yeU1ldGhvZChMb2dFdmVyeXRoaW5nUmVzb3VyY2UpOworICAgICAg
ICAgICAgd3JhcEZ1bmN0aW9uc1siY3JlYXRlTGluZWFyR3JhZGllbnQiXSA9IFJlc291cmNlLldy
YXBGdW5jdGlvbi5yZXNvdXJjZUZhY3RvcnlNZXRob2QoTG9nRXZlcnl0aGluZ1Jlc291cmNlLCAi
Q2FudmFzR3JhZGllbnQiKTsKKyAgICAgICAgICAgIHdyYXBGdW5jdGlvbnNbImNyZWF0ZVJhZGlh
bEdyYWRpZW50Il0gPSBSZXNvdXJjZS5XcmFwRnVuY3Rpb24ucmVzb3VyY2VGYWN0b3J5TWV0aG9k
KExvZ0V2ZXJ5dGhpbmdSZXNvdXJjZSwgIkNhbnZhc0dyYWRpZW50Iik7CisgICAgICAgICAgICB3
cmFwRnVuY3Rpb25zWyJjcmVhdGVQYXR0ZXJuIl0gPSBSZXNvdXJjZS5XcmFwRnVuY3Rpb24ucmVz
b3VyY2VGYWN0b3J5TWV0aG9kKExvZ0V2ZXJ5dGhpbmdSZXNvdXJjZSwgIkNhbnZhc1BhdHRlcm4i
KTsKIAogICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0
aG9kTmFtZQpAQCAtMjQ3MSw3ICsyNTU1LDcgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVz
b3VyY2UucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gd3JhcEZ1bmN0aW9uczsKICAgICB9
LAogCi0gICAgX19wcm90b19fOiBSZXNvdXJjZS5wcm90b3R5cGUKKyAgICBfX3Byb3RvX186IENv
bnRleHRSZXNvdXJjZS5wcm90b3R5cGUKIH0KIAogLyoqCkBAIC0yNTE1LDEyICsyNTk5LDcgQEAg
VHJhY2VMb2cucHJvdG90eXBlID0gewogICAgICAqLwogICAgIGFkZENhbGw6IGZ1bmN0aW9uKGNh
bGwpCiAgICAgewotICAgICAgICB2YXIgcmVzID0gUmVzb3VyY2UuZm9yT2JqZWN0KGNhbGwucmVz
dWx0KCkpOwotICAgICAgICBpZiAocmVzKQotICAgICAgICAgICAgdGhpcy5jYXB0dXJlUmVzb3Vy
Y2UocmVzKTsKLSAgICAgICAgdmFyIHNpemUgPSB0aGlzLl9yZXBsYXlhYmxlc0NhY2hlLnNpemUo
KTsKICAgICAgICAgdGhpcy5fcmVwbGF5YWJsZUNhbGxzLnB1c2goY2FsbC50b1JlcGxheWFibGUo
dGhpcy5fcmVwbGF5YWJsZXNDYWNoZSkpOwotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9y
ZXBsYXlhYmxlc0NhY2hlLnNpemUoKSA9PT0gc2l6ZSwgIkludGVybmFsIGVycm9yOiBXZSBzaG91
bGQgaGF2ZSBjYXB0dXJlZCBhbGwgdGhlIHJlc291cmNlcyBhbHJlYWR5IGJ5IHRoaXMgdGltZS4i
KTsKICAgICB9CiB9CiAKQEAgLTI3MDksNyArMjc4OCw3IEBAIFJlc291cmNlVHJhY2tpbmdNYW5h
Z2VyLnByb3RvdHlwZSA9IHsKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKi8KLXZhciBJbmplY3Rl
ZFNjcmlwdCA9IGZ1bmN0aW9uKCkKK3ZhciBJbmplY3RlZENhbnZhc01vZHVsZSA9IGZ1bmN0aW9u
KCkKIHsKICAgICAvKiogQHR5cGUgeyFSZXNvdXJjZVRyYWNraW5nTWFuYWdlcn0gKi8KICAgICB0
aGlzLl9tYW5hZ2VyID0gbmV3IFJlc291cmNlVHJhY2tpbmdNYW5hZ2VyKCk7CkBAIC0yNzIzLDcg
KzI4MDIsNyBAQCB2YXIgSW5qZWN0ZWRTY3JpcHQgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5fcmVw
bGF5Q29udGV4dHMgPSBbXTsKIH0KIAotSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0geworSW5q
ZWN0ZWRDYW52YXNNb2R1bGUucHJvdG90eXBlID0gewogICAgIC8qKgogICAgICAqIEBwYXJhbSB7
IVdlYkdMUmVuZGVyaW5nQ29udGV4dH0gZ2xDb250ZXh0CiAgICAgICogQHJldHVybiB7T2JqZWN0
fQpAQCAtMjgyNiwzMyArMjkwNSw0MyBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHZhciBjYWxscyA9IHRyYWNlTG9nLnJlcGxheWFibGVDYWxscygpOwogICAgICAgICBm
b3IgKHZhciBpID0gc3RhcnRPZmZzZXQsIG4gPSBjYWxscy5sZW5ndGg7IGkgPCBuOyArK2kpIHsK
ICAgICAgICAgICAgIHZhciBjYWxsID0gY2FsbHNbaV07Ci0gICAgICAgICAgICB2YXIgYXJncyA9
IGNhbGwuYXJncygpLm1hcChmdW5jdGlvbihhcmd1bWVudCkgewotICAgICAgICAgICAgICAgIHJl
dHVybiBhcmd1bWVudCArICIiOwotICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB2YXIgY29u
dGV4dFJlc291cmNlID0gY2FsbC5yZXBsYXlhYmxlUmVzb3VyY2UoKS5yZXBsYXlhYmxlQ29udGV4
dFJlc291cmNlKCkgfHwgY2FsbC5yZXBsYXlhYmxlUmVzb3VyY2UoKTsKICAgICAgICAgICAgIHZh
ciBzdGFja1RyYWNlID0gY2FsbC5zdGFja1RyYWNlKCk7CiAgICAgICAgICAgICB2YXIgY2FsbEZy
YW1lID0gc3RhY2tUcmFjZSA/IHN0YWNrVHJhY2UuY2FsbEZyYW1lKDApIHx8IHt9IDoge307CiAg
ICAgICAgICAgICB2YXIgdHJhY2VMb2dJdGVtID0gewotICAgICAgICAgICAgICAgIGNvbnRleHRJ
ZDogdGhpcy5fbWFrZUNvbnRleHRJZChjYWxsLnJlc291cmNlKCkuaWQoKSksCisgICAgICAgICAg
ICAgICAgY29udGV4dElkOiB0aGlzLl9tYWtlQ29udGV4dElkKGNvbnRleHRSZXNvdXJjZS5pZCgp
KSwKICAgICAgICAgICAgICAgICBzb3VyY2VVUkw6IGNhbGxGcmFtZS5zb3VyY2VVUkwsCiAgICAg
ICAgICAgICAgICAgbGluZU51bWJlcjogY2FsbEZyYW1lLmxpbmVOdW1iZXIsCiAgICAgICAgICAg
ICAgICAgY29sdW1uTnVtYmVyOiBjYWxsRnJhbWUuY29sdW1uTnVtYmVyCiAgICAgICAgICAgICB9
OwogICAgICAgICAgICAgaWYgKGNhbGwuZnVuY3Rpb25OYW1lKCkpIHsKICAgICAgICAgICAgICAg
ICB0cmFjZUxvZ0l0ZW0uZnVuY3Rpb25OYW1lID0gY2FsbC5mdW5jdGlvbk5hbWUoKTsKLSAgICAg
ICAgICAgICAgICB0cmFjZUxvZ0l0ZW0uYXJndW1lbnRzID0gYXJnczsKKyAgICAgICAgICAgICAg
ICB0cmFjZUxvZ0l0ZW0uYXJndW1lbnRzID0gY2FsbC5hcmdzKCkubWFwKHRoaXMuX2NyZWF0ZVJl
bW90ZU9iamVjdC5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgICAgICBpZiAoY2FsbC5yZXN1bHQo
KSAhPT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgICAgICAgICB0cmFjZUxvZ0l0ZW0ucmVzdWx0
ID0gdGhpcy5fY3JlYXRlUmVtb3RlT2JqZWN0KGNhbGwucmVzdWx0KCkpOwogICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICB0cmFjZUxvZ0l0ZW0ucHJvcGVydHkgPSBhcmdzWzBd
OwotICAgICAgICAgICAgICAgIHRyYWNlTG9nSXRlbS52YWx1ZSA9IGFyZ3NbMV07CisgICAgICAg
ICAgICAgICAgdHJhY2VMb2dJdGVtLnByb3BlcnR5ID0gY2FsbC5hcmdzKClbMF07CisgICAgICAg
ICAgICAgICAgdHJhY2VMb2dJdGVtLnZhbHVlID0gdGhpcy5fY3JlYXRlUmVtb3RlT2JqZWN0KGNh
bGwuYXJncygpWzFdKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZhciBjYWxsUmVzdWx0
ID0gY2FsbC5yZXN1bHQoKTsKLSAgICAgICAgICAgIGlmIChjYWxsUmVzdWx0ICE9PSB1bmRlZmlu
ZWQgJiYgY2FsbFJlc3VsdCAhPT0gbnVsbCkKLSAgICAgICAgICAgICAgICB0cmFjZUxvZ0l0ZW0u
cmVzdWx0ID0gY2FsbFJlc3VsdCArICIiOwogICAgICAgICAgICAgcmVzdWx0LmNhbGxzLnB1c2go
dHJhY2VMb2dJdGVtKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0s
CiAKICAgICAvKioKKyAgICAgKiBAcGFyYW0geyp9IG9iagorICAgICAqIEByZXR1cm4ge09iamVj
dH0KKyAgICAgKi8KKyAgICBfY3JlYXRlUmVtb3RlT2JqZWN0OiBmdW5jdGlvbihvYmopCisgICAg
eworICAgICAgICBpZiAob2JqIGluc3RhbmNlb2YgUmVwbGF5YWJsZVJlc291cmNlKQorICAgICAg
ICAgICAgdmFyIGRlc2NyaXB0aW9uID0gb2JqLmRlc2NyaXB0aW9uKCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHZhciBkZXNjcmlwdGlvbiA9ICIiICsgb2JqOworICAgICAgICByZXR1cm4g
eyBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24gfTsKKyAgICB9LAorCisgICAgLyoqCiAgICAgICog
QHBhcmFtIHtzdHJpbmd9IGlkCiAgICAgICogQHBhcmFtIHtudW1iZXJ9IHN0ZXBObwogICAgICAq
IEByZXR1cm4ge3N0cmluZ30KQEAgLTI5NDQsNyArMzAzMyw3IEBAIEluamVjdGVkU2NyaXB0LnBy
b3RvdHlwZSA9IHsKICAgICB9CiB9CiAKLXZhciBpbmplY3RlZFNjcmlwdCA9IG5ldyBJbmplY3Rl
ZFNjcmlwdCgpOwotcmV0dXJuIGluamVjdGVkU2NyaXB0OwordmFyIGluamVjdGVkQ2FudmFzTW9k
dWxlID0gbmV3IEluamVjdGVkQ2FudmFzTW9kdWxlKCk7CityZXR1cm4gaW5qZWN0ZWRDYW52YXNN
b2R1bGU7CiAKIH0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXgg
NTdmNmY3YWNkYmZkZWQ5MWZhNzk1OTJlNTkwY2I4ODkyNTdjZmFmOC4uMmQ2ZGM1N2M0MjllY2E1
MmYzYWFkNzNhMDg4MzZmNjA3MTY2ZDJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3IuanNvbgpAQCAtMzE5NSwxNSArMzE5NSwyMiBAQAogICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJVbmlxdWUgY29udGV4dCBpZGVudGlmaWVyLiIKICAgICAgICAgICAgIH0sCiAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgImlkIjogIkNhbGxBcmd1bWVudCIsCisgICAg
ICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICAgICAicHJvcGVydGll
cyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkZXNjcmlwdGlvbiIsICJ0eXBl
IjogInN0cmluZyIgfQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgImlkIjogIkNhbGwiLAogICAgICAgICAgICAgICAgICJ0
eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCiAgICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiY29udGV4dElkIiwgIiRyZWYiOiAiQ29udGV4dElkIiB9
LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImZ1bmN0aW9uTmFtZSIsICJ0eXBlIjog
InN0cmluZyIsICJvcHRpb25hbCI6IHRydWUgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJhcmd1bWVudHMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgInR5cGUiOiAic3Ry
aW5nIiB9LCAib3B0aW9uYWwiOiB0cnVlIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiYXJndW1lbnRzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIkNhbGxB
cmd1bWVudCIgfSwgIm9wdGlvbmFsIjogdHJ1ZSB9LAorICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInJlc3VsdCIsICIkcmVmIjogIkNhbGxBcmd1bWVudCIsICJvcHRpb25hbCI6IHRydWUg
fSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwcm9wZXJ0eSIsICJ0eXBlIjogInN0
cmluZyIsICJvcHRpb25hbCI6IHRydWUgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJ2YWx1ZSIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUgfSwKLSAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJyZXN1bHQiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9u
YWwiOiB0cnVlIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidmFsdWUiLCAiJHJl
ZiI6ICJDYWxsQXJndW1lbnQiLCAib3B0aW9uYWwiOiB0cnVlIH0sCiAgICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAic291cmNlVVJMIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjog
dHJ1ZSB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImxpbmVOdW1iZXIiLCAidHlw
ZSI6ICJpbnRlZ2VyIiwgIm9wdGlvbmFsIjogdHJ1ZSB9LAogICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogImNvbHVtbk51bWJlciIsICJ0eXBlIjogImludGVnZXIiLCAib3B0aW9uYWwiOiB0
cnVlIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ2Fu
dmFzUHJvZmlsZVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nh
bnZhc1Byb2ZpbGVWaWV3LmpzCmluZGV4IGI3ZGE5MmRmNjlkMzI4MWQ1OTdkN2JkM2FhMjg2OTE1
MDAzMzZiZjguLmJhMzJjODE3YzFjYTRhY2VmNWNlM2NhNjFhYWI4ZWQzODJmMDFkM2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ2FudmFzUHJvZmlsZVZp
ZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DYW52YXNQcm9m
aWxlVmlldy5qcwpAQCAtMTYxLDcgKzE2MSw2IEBAIFdlYkluc3BlY3Rvci5DYW52YXNQcm9maWxl
Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICBfY3JlYXRlQ2FsbE5vZGU6IGZ1bmN0aW9uKGluZGV4
LCBjYWxsKQogICAgIHsKLSAgICAgICAgdmFyIHRyYWNlTG9nSXRlbSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB2YXIgZGF0YSA9IHt9OwogICAgICAgICBkYXRhWzBd
ID0gaW5kZXggKyAxOwogICAgICAgICBkYXRhWzFdID0gY2FsbC5mdW5jdGlvbk5hbWUgfHwgImNv
bnRleHQuIiArIGNhbGwucHJvcGVydHk7CkBAIC0xNzMsMTYgKzE3MiwxOCBAQCBXZWJJbnNwZWN0
b3IuQ2FudmFzUHJvZmlsZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgZGF0YVsyXSA9
IHRoaXMuX2xpbmtpZmllci5saW5raWZ5TG9jYXRpb24oY2FsbC5zb3VyY2VVUkwsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoY2FsbC5hcmd1bWVu
dHMpCi0gICAgICAgICAgICBkYXRhWzFdICs9ICIoIiArIGNhbGwuYXJndW1lbnRzLmpvaW4oIiwg
IikgKyAiKSI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRhdGFbMV0gKz0gIiA9ICIgKyBj
YWxsLnZhbHVlOworICAgICAgICBpZiAoY2FsbC5hcmd1bWVudHMpIHsKKyAgICAgICAgICAgIHZh
ciBhcmdzID0gY2FsbC5hcmd1bWVudHMubWFwKGZ1bmN0aW9uKGFyZ3VtZW50KSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGFyZ3VtZW50LmRlc2NyaXB0aW9uOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICBkYXRhWzFdICs9ICIoIiArIGFyZ3Muam9pbigiLCAiKSArICIpIjsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBkYXRhWzFdICs9ICIgPSAiICsgY2FsbC52YWx1ZS5kZXNj
cmlwdGlvbjsKIAogICAgICAgICBpZiAodHlwZW9mIGNhbGwucmVzdWx0ICE9PSAidW5kZWZpbmVk
IikKLSAgICAgICAgICAgIGRhdGFbMV0gKz0gIiA9PiAiICsgY2FsbC5yZXN1bHQ7CisgICAgICAg
ICAgICBkYXRhWzFdICs9ICIgPT4gIiArIGNhbGwucmVzdWx0LmRlc2NyaXB0aW9uOwogCiAgICAg
ICAgIHZhciBub2RlID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUoZGF0YSk7Ci0gICAg
ICAgIG5vZGUuY2FsbCA9IGNhbGw7CiAgICAgICAgIG5vZGUuaW5kZXggPSBpbmRleDsKICAgICAg
ICAgbm9kZS5zZWxlY3RhYmxlID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIG5vZGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182311</attachid>
            <date>2013-01-11 03:07:39 -0800</date>
            <delta_ts>2013-01-15 01:47:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106640-20130111150440.patch</filename>
            <type>text/plain</type>
            <size>28550</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWRiNGQ1MmYzZGZlMDg3
NzhlYmMwMmVkODdjMmViYzBkNmNkZmNjOS4uZTZiOTI1ZDIzNzg2MjMyMjQwZGI3MDkzMzA1N2U2
YTg4MWZjYTI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTAxLTExICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtDYW52YXNdIGludHJvZHVjZSBDYWxsQXJndW1lbnQgdHlwZSBpbnRvIHRoZSBwcm90b2Nv
bAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NjQw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2FsbEFy
Z3VtZW50IHR5cGUgYWJzdHJhY3Rpb24gdG8gZGVzY3JpYmUgYXJndW1lbnRzIG9mIGEgY2FudmFz
IGNvbnRleHQgY2FsbC4KKyAgICAgICAgRHJpdmUtYnk6IEludHJvZHVjZSBhIENhbnZhc0NvbnRl
eHQgdG8gZml4IHRoZSB3cm9uZyBjb250ZXh0SWQgdmFsdWUgaW4gdGhlIHByb3RvY29sLgorICAg
ICAgICBUaGUgY29udGV4dElkIHNob3VsZCBwb2ludCB0byB0aGUgUmVzb3VyY2UgdGhhdCByZXBy
ZXNlbnRzIGEgY29udGV4dCAoMkQgb3IgM0QgY2FudmFzKS4KKworICAgICAgICAqIGluc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5qczoKKyAgICAgICAgKC4pOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL0NhbnZhc1Byb2ZpbGVWaWV3LmpzOgorCiAyMDEzLTAxLTEwICBHcnplZ29yeiBDemFq
a293c2tpICA8Zy5jemFqa293c2tpQHNhbXN1bmcuY29tPgogCiAgICAgICAgIE9uIExpbnV4LCBz
aG91bGQgYmUgYWJsZSB0byBnZXQgc3BlbGxpbmcgc3VnZ2VzdGlvbnMgd2l0aG91dCBzZWxlY3Rp
bmcgdGhlIG1pc3NwZWxsZWQgd29yZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLmpzCmluZGV4IGQ2MWVh
MTFjMTg5ZWFhMmM3MGQ1NjRmZWMzMjkwMzYyY2E1YTUyOWMuLjQ5OGY4ZjM3MjIxNWVmYzdhYjZi
ZDliMTFiYjdmOTFmNDUwNjRhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVTb3VyY2UuanMKQEAgLTM5Niw3
ICszOTYsOCBAQCBDYWxsLnByb3RvdHlwZSA9IHsKICAgICBzZXRBdHRhY2htZW50OiBmdW5jdGlv
bihuYW1lLCBhdHRhY2htZW50KQogICAgIHsKICAgICAgICAgaWYgKGF0dGFjaG1lbnQpIHsKLSAg
ICAgICAgICAgIHRoaXMuX2F0dGFjaG1lbnRzID0gdGhpcy5fYXR0YWNobWVudHMgfHwge307Cisg
ICAgICAgICAgICAvKiogQHR5cGUge09iamVjdC48c3RyaW5nLCBPYmplY3Q+fSAqLworICAgICAg
ICAgICAgdGhpcy5fYXR0YWNobWVudHMgPSB0aGlzLl9hdHRhY2htZW50cyB8fCBPYmplY3QuY3Jl
YXRlKG51bGwpOwogICAgICAgICAgICAgdGhpcy5fYXR0YWNobWVudHNbbmFtZV0gPSBhdHRhY2ht
ZW50OwogICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2F0dGFjaG1lbnRzKQogICAgICAgICAgICAg
ZGVsZXRlIHRoaXMuX2F0dGFjaG1lbnRzW25hbWVdOwpAQCAtNDQ2LDcgKzQ0Nyw3IEBAIENhbGwu
cHJvdG90eXBlID0gewogICAgICAqLwogICAgIHJlcGxheTogZnVuY3Rpb24ocmVwbGF5YWJsZUNh
bGwsIGNhY2hlKQogICAgIHsKLSAgICAgICAgdmFyIHJlcGxheU9iamVjdCA9IFJlcGxheWFibGVS
ZXNvdXJjZS5yZXBsYXkocmVwbGF5YWJsZUNhbGwucmVzb3VyY2UoKSwgY2FjaGUpOworICAgICAg
ICB2YXIgcmVwbGF5T2JqZWN0ID0gUmVwbGF5YWJsZVJlc291cmNlLnJlcGxheShyZXBsYXlhYmxl
Q2FsbC5yZXBsYXlhYmxlUmVzb3VyY2UoKSwgY2FjaGUpOwogICAgICAgICB2YXIgcmVwbGF5QXJn
cyA9IHJlcGxheWFibGVDYWxsLmFyZ3MoKS5tYXAoZnVuY3Rpb24ob2JqKSB7CiAgICAgICAgICAg
ICByZXR1cm4gUmVwbGF5YWJsZVJlc291cmNlLnJlcGxheShvYmosIGNhY2hlKTsKICAgICAgICAg
fSk7CkBAIC01MDIsNyArNTAzLDcgQEAgUmVwbGF5YWJsZUNhbGwucHJvdG90eXBlID0gewogICAg
IC8qKgogICAgICAqIEByZXR1cm4ge1JlcGxheWFibGVSZXNvdXJjZX0KICAgICAgKi8KLSAgICBy
ZXNvdXJjZTogZnVuY3Rpb24oKQorICAgIHJlcGxheWFibGVSZXNvdXJjZTogZnVuY3Rpb24oKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RoaXNPYmplY3Q7CiAgICAgfSwKQEAgLTU3OCwx
MSArNTc5LDE2IEBAIFJlcGxheWFibGVDYWxsLnByb3RvdHlwZSA9IHsKIC8qKgogICogQGNvbnN0
cnVjdG9yCiAgKiBAcGFyYW0geyFPYmplY3R9IHdyYXBwZWRPYmplY3QKKyAqIEBwYXJhbSB7c3Ry
aW5nfSBuYW1lCiAgKi8KLWZ1bmN0aW9uIFJlc291cmNlKHdyYXBwZWRPYmplY3QpCitmdW5jdGlv
biBSZXNvdXJjZSh3cmFwcGVkT2JqZWN0LCBuYW1lKQogewogICAgIC8qKiBAdHlwZSB7bnVtYmVy
fSAqLwogICAgIHRoaXMuX2lkID0gKytSZXNvdXJjZS5fdW5pcXVlSWQ7CisgICAgLyoqIEB0eXBl
IHtzdHJpbmd9ICovCisgICAgdGhpcy5fbmFtZSA9IG5hbWUgfHwgIlJlc291cmNlIjsKKyAgICAv
KiogQHR5cGUge251bWJlcn0gKi8KKyAgICB0aGlzLl9raW5kSWQgPSBSZXNvdXJjZS5fdW5pcXVl
S2luZElkc1t0aGlzLl9uYW1lXSA9IChSZXNvdXJjZS5fdW5pcXVlS2luZElkc1t0aGlzLl9uYW1l
XSB8fCAwKSArIDE7CiAgICAgLyoqIEB0eXBlIHtSZXNvdXJjZVRyYWNraW5nTWFuYWdlcn0gKi8K
ICAgICB0aGlzLl9yZXNvdXJjZU1hbmFnZXIgPSBudWxsOwogICAgIC8qKiBAdHlwZSB7IUFycmF5
LjxDYWxsPn0gKi8KQEAgLTYwNSw2ICs2MTEsMTEgQEAgZnVuY3Rpb24gUmVzb3VyY2Uod3JhcHBl
ZE9iamVjdCkKIFJlc291cmNlLl91bmlxdWVJZCA9IDA7CiAKIC8qKgorICogQHR5cGUgeyFPYmpl
Y3QuPHN0cmluZywgbnVtYmVyPn0KKyAqLworUmVzb3VyY2UuX3VuaXF1ZUtpbmRJZHMgPSB7fTsK
KworLyoqCiAgKiBAcGFyYW0geyp9IG9iagogICogQHJldHVybiB7UmVzb3VyY2V9CiAgKi8KQEAg
LTcwMyw2ICs3MTQsMjkgQEAgUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAv
KioKKyAgICAgKiBAcmV0dXJuIHtDb250ZXh0UmVzb3VyY2V9CisgICAgICovCisgICAgY29udGV4
dFJlc291cmNlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcyBpbnN0YW5jZW9m
IENvbnRleHRSZXNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybiAvKiogQHR5cGUge0NvbnRleHRS
ZXNvdXJjZX0gKi8gKHRoaXMpOworCisgICAgICAgIGlmICh0aGlzLl9jYWxjdWxhdGluZ0NvbnRl
eHRSZXNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIHRoaXMuX2Nh
bGN1bGF0aW5nQ29udGV4dFJlc291cmNlID0gdHJ1ZTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IG51
bGw7CisgICAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gdGhpcy5fY2FsbHMubGVuZ3RoOyBpIDwg
bjsgKytpKSB7CisgICAgICAgICAgICByZXN1bHQgPSB0aGlzLl9jYWxsc1tpXS5yZXNvdXJjZSgp
LmNvbnRleHRSZXNvdXJjZSgpOworICAgICAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWxldGUgdGhpcy5fY2FsY3VsYXRpbmdD
b250ZXh0UmVzb3VyY2U7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc3VsdCwgIkZhaWxlZCB0
byBmaW5kIGNvbnRleHQgcmVzb3VyY2UgZm9yICIgKyB0aGlzLl9uYW1lICsgIkAiICsgdGhpcy5f
a2luZElkKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorCisgICAgLyoqCiAgICAg
ICogQHBhcmFtIHshQ2FjaGV9IGNhY2hlCiAgICAgICogQHJldHVybiB7IVJlcGxheWFibGVSZXNv
dXJjZX0KICAgICAgKi8KQEAgLTcxMiw3ICs3NDYsOSBAQCBSZXNvdXJjZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAg
ICB2YXIgZGF0YSA9IHsKLSAgICAgICAgICAgIGlkOiB0aGlzLl9pZAorICAgICAgICAgICAgaWQ6
IHRoaXMuX2lkLAorICAgICAgICAgICAgbmFtZTogdGhpcy5fbmFtZSwKKyAgICAgICAgICAgIGtp
bmRJZDogdGhpcy5fa2luZElkCiAgICAgICAgIH07CiAgICAgICAgIHJlc3VsdCA9IG5ldyBSZXBs
YXlhYmxlUmVzb3VyY2UodGhpcywgZGF0YSk7CiAgICAgICAgIGNhY2hlLnB1dCh0aGlzLl9pZCwg
cmVzdWx0KTsgLy8gUHV0IGludG8gdGhlIGNhY2hlIGVhcmx5IHRvIGF2b2lkIGxvb3BzLgpAQCAt
NzIwLDYgKzc1Niw5IEBAIFJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVy
biBjYWxsLnRvUmVwbGF5YWJsZShjYWNoZSk7CiAgICAgICAgIH0pOwogICAgICAgICB0aGlzLl9w
b3B1bGF0ZVJlcGxheWFibGVEYXRhKGRhdGEsIGNhY2hlKTsKKyAgICAgICAgdmFyIGNvbnRleHRS
ZXNvdXJjZSA9IHRoaXMuY29udGV4dFJlc291cmNlKCk7CisgICAgICAgIGlmIChjb250ZXh0UmVz
b3VyY2UgIT09IHRoaXMpCisgICAgICAgICAgICBkYXRhLmNvbnRleHRSZXNvdXJjZSA9IFJlc291
cmNlLnRvUmVwbGF5YWJsZShjb250ZXh0UmVzb3VyY2UsIGNhY2hlKTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9LAogCkBAIC03NDMsNiArNzgyLDggQEAgUmVzb3VyY2UucHJvdG90eXBl
ID0gewogICAgICAgICBpZiAocmVzb3VyY2UpCiAgICAgICAgICAgICByZXR1cm4gcmVzb3VyY2U7
CiAgICAgICAgIHRoaXMuX2lkID0gZGF0YS5pZDsKKyAgICAgICAgdGhpcy5fbmFtZSA9IGRhdGEu
bmFtZTsKKyAgICAgICAgdGhpcy5fa2luZElkID0gZGF0YS5raW5kSWQ7CiAgICAgICAgIHRoaXMu
X3Jlc291cmNlTWFuYWdlciA9IG51bGw7CiAgICAgICAgIHRoaXMuX2NhbGxzID0gW107CiAgICAg
ICAgIHRoaXMuX3dyYXBwZWRPYmplY3QgPSBudWxsOwpAQCAtOTgyLDEwICsxMDIzLDExIEBAIFJl
c291cmNlLldyYXBGdW5jdGlvbi5wcm90b3R5cGUgPSB7CiB9CiAKIC8qKgotICogQHBhcmFtIHtm
dW5jdGlvbihuZXc6UmVzb3VyY2UsICFPYmplY3QpfSByZXNvdXJjZUNvbnN0cnVjdG9yCisgKiBA
cGFyYW0ge2Z1bmN0aW9uKG5ldzpSZXNvdXJjZSwgIU9iamVjdCwgc3RyaW5nKX0gcmVzb3VyY2VD
b25zdHJ1Y3RvcgorICogQHBhcmFtIHtzdHJpbmd9IHJlc291cmNlTmFtZQogICogQHJldHVybiB7
ZnVuY3Rpb24odGhpczpSZXNvdXJjZS5XcmFwRnVuY3Rpb24pfQogICovCi1SZXNvdXJjZS5XcmFw
RnVuY3Rpb24ucmVzb3VyY2VGYWN0b3J5TWV0aG9kID0gZnVuY3Rpb24ocmVzb3VyY2VDb25zdHJ1
Y3RvcikKK1Jlc291cmNlLldyYXBGdW5jdGlvbi5yZXNvdXJjZUZhY3RvcnlNZXRob2QgPSBmdW5j
dGlvbihyZXNvdXJjZUNvbnN0cnVjdG9yLCByZXNvdXJjZU5hbWUpCiB7CiAgICAgLyoqIEB0aGlz
IFJlc291cmNlLldyYXBGdW5jdGlvbiAqLwogICAgIHJldHVybiBmdW5jdGlvbigpCkBAIC05OTMs
NyArMTAzNSw3IEBAIFJlc291cmNlLldyYXBGdW5jdGlvbi5yZXNvdXJjZUZhY3RvcnlNZXRob2Qg
PSBmdW5jdGlvbihyZXNvdXJjZUNvbnN0cnVjdG9yKQogICAgICAgICB2YXIgd3JhcHBlZE9iamVj
dCA9IC8qKiBAdHlwZSB7T2JqZWN0fSAqLyAodGhpcy5yZXN1bHQoKSk7CiAgICAgICAgIGlmICgh
d3JhcHBlZE9iamVjdCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdmFyIHJlc291cmNl
ID0gbmV3IHJlc291cmNlQ29uc3RydWN0b3Iod3JhcHBlZE9iamVjdCk7CisgICAgICAgIHZhciBy
ZXNvdXJjZSA9IG5ldyByZXNvdXJjZUNvbnN0cnVjdG9yKHdyYXBwZWRPYmplY3QsIHJlc291cmNl
TmFtZSk7CiAgICAgICAgIHZhciBtYW5hZ2VyID0gdGhpcy5fcmVzb3VyY2UubWFuYWdlcigpOwog
ICAgICAgICBpZiAobWFuYWdlcikKICAgICAgICAgICAgIG1hbmFnZXIucmVnaXN0ZXJSZXNvdXJj
ZShyZXNvdXJjZSk7CkBAIC0xMDIzLDYgKzEwNjUsMjIgQEAgUmVwbGF5YWJsZVJlc291cmNlLnBy
b3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCisgICAgICogQHJldHVybiB7c3RyaW5nfQor
ICAgICAqLworICAgIGRlc2NyaXB0aW9uOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5fZGF0YS5uYW1lICsgIkAiICsgdGhpcy5fZGF0YS5raW5kSWQ7CisgICAgfSwKKwor
ICAgIC8qKgorICAgICAqIEByZXR1cm4geyFSZXBsYXlhYmxlUmVzb3VyY2V9CisgICAgICovCisg
ICAgcmVwbGF5YWJsZUNvbnRleHRSZXNvdXJjZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX2RhdGEuY29udGV4dFJlc291cmNlIHx8IHRoaXM7CisgICAgfSwKKworICAg
IC8qKgogICAgICAqIEBwYXJhbSB7IUNhY2hlfSBjYWNoZQogICAgICAqIEByZXR1cm4geyFSZXNv
dXJjZX0KICAgICAgKi8KQEAgLTEwNDgsMTAgKzExMDYsMjcgQEAgUmVwbGF5YWJsZVJlc291cmNl
LnJlcGxheSA9IGZ1bmN0aW9uKG9iaiwgY2FjaGUpCiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICog
QGV4dGVuZHMge1Jlc291cmNlfQorICogQHBhcmFtIHshT2JqZWN0fSB3cmFwcGVkT2JqZWN0Cisg
KiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICovCitmdW5jdGlvbiBDb250ZXh0UmVzb3VyY2Uod3Jh
cHBlZE9iamVjdCwgbmFtZSkKK3sKKyAgICBSZXNvdXJjZS5jYWxsKHRoaXMsIHdyYXBwZWRPYmpl
Y3QsIG5hbWUpOworfQorCitDb250ZXh0UmVzb3VyY2UucHJvdG90eXBlID0geworICAgIF9fcHJv
dG9fXzogUmVzb3VyY2UucHJvdG90eXBlCit9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBA
ZXh0ZW5kcyB7UmVzb3VyY2V9CisgKiBAcGFyYW0geyFPYmplY3R9IHdyYXBwZWRPYmplY3QKKyAq
IEBwYXJhbSB7c3RyaW5nfSBuYW1lCiAgKi8KLWZ1bmN0aW9uIExvZ0V2ZXJ5dGhpbmdSZXNvdXJj
ZSh3cmFwcGVkT2JqZWN0KQorZnVuY3Rpb24gTG9nRXZlcnl0aGluZ1Jlc291cmNlKHdyYXBwZWRP
YmplY3QsIG5hbWUpCiB7Ci0gICAgUmVzb3VyY2UuY2FsbCh0aGlzLCB3cmFwcGVkT2JqZWN0KTsK
KyAgICBSZXNvdXJjZS5jYWxsKHRoaXMsIHdyYXBwZWRPYmplY3QsIG5hbWUpOwogfQogCiBMb2dF
dmVyeXRoaW5nUmVzb3VyY2UucHJvdG90eXBlID0gewpAQCAtMTA4NSwxMCArMTE2MCwxMiBAQCBM
b2dFdmVyeXRoaW5nUmVzb3VyY2UucHJvdG90eXBlID0gewogLyoqCiAgKiBAY29uc3RydWN0b3IK
ICAqIEBleHRlbmRzIHtSZXNvdXJjZX0KKyAqIEBwYXJhbSB7IU9iamVjdH0gd3JhcHBlZE9iamVj
dAorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKICAqLwotZnVuY3Rpb24gV2ViR0xCb3VuZFJlc291
cmNlKHdyYXBwZWRPYmplY3QpCitmdW5jdGlvbiBXZWJHTEJvdW5kUmVzb3VyY2Uod3JhcHBlZE9i
amVjdCwgbmFtZSkKIHsKLSAgICBSZXNvdXJjZS5jYWxsKHRoaXMsIHdyYXBwZWRPYmplY3QpOwor
ICAgIFJlc291cmNlLmNhbGwodGhpcywgd3JhcHBlZE9iamVjdCwgbmFtZSk7CiAgICAgLyoqIEB0
eXBlIHshT2JqZWN0LjxzdHJpbmcsICo+fSAqLwogICAgIHRoaXMuX3N0YXRlID0ge307CiB9CkBA
IC0xMTE1LDE0ICsxMTkyLDkgQEAgV2ViR0xCb3VuZFJlc291cmNlLnByb3RvdHlwZSA9IHsKICAg
ICAgKi8KICAgICBfZG9SZXBsYXlDYWxsczogZnVuY3Rpb24oZGF0YSwgY2FjaGUpCiAgICAgewot
ICAgICAgICB2YXIgc3RhdGUgPSB7fTsKLSAgICAgICAgT2JqZWN0LmtleXMoZGF0YS5zdGF0ZSku
Zm9yRWFjaChmdW5jdGlvbihwYXJhbWV0ZXIpIHsKLSAgICAgICAgICAgIHN0YXRlW3BhcmFtZXRl
cl0gPSBSZXBsYXlhYmxlUmVzb3VyY2UucmVwbGF5KGRhdGEuc3RhdGVbcGFyYW1ldGVyXSwgY2Fj
aGUpOwotICAgICAgICB9KTsKLSAgICAgICAgdGhpcy5fc3RhdGUgPSBzdGF0ZTsKLQogICAgICAg
ICB2YXIgZ2wgPSB0aGlzLl9yZXBsYXlDb250ZXh0UmVzb3VyY2UoZGF0YSwgY2FjaGUpLndyYXBw
ZWRPYmplY3QoKTsKIAorICAgICAgICAvKiogQHR5cGUgeyFPYmplY3QuPHN0cmluZywgQXJyYXku
PHN0cmluZz4+fSAqLwogICAgICAgICB2YXIgYmluZGluZ3NEYXRhID0gewogICAgICAgICAgICAg
VEVYVFVSRV8yRDogWyJiaW5kVGV4dHVyZSIsICJURVhUVVJFX0JJTkRJTkdfMkQiXSwKICAgICAg
ICAgICAgIFRFWFRVUkVfQ1VCRV9NQVA6IFsiYmluZFRleHR1cmUiLCAiVEVYVFVSRV9CSU5ESU5H
X0NVQkVfTUFQIl0sCkBAIC0xMTM3LDYgKzEyMDksMTEgQEAgV2ViR0xCb3VuZFJlc291cmNlLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIG9yaWdpbmFsQmluZGluZ3NbYmluZGluZ1RhcmdldF0g
PSBnbC5nZXRQYXJhbWV0ZXIoZ2xbYmluZGluZ1BhcmFtZXRlcl0pOwogICAgICAgICB9KTsKIAor
ICAgICAgICB2YXIgc3RhdGUgPSB7fTsKKyAgICAgICAgT2JqZWN0LmtleXMoZGF0YS5zdGF0ZSku
Zm9yRWFjaChmdW5jdGlvbihwYXJhbWV0ZXIpIHsKKyAgICAgICAgICAgIHN0YXRlW3BhcmFtZXRl
cl0gPSBSZXBsYXlhYmxlUmVzb3VyY2UucmVwbGF5KGRhdGEuc3RhdGVbcGFyYW1ldGVyXSwgY2Fj
aGUpOworICAgICAgICB9KTsKKyAgICAgICAgdGhpcy5fc3RhdGUgPSBzdGF0ZTsKICAgICAgICAg
UmVzb3VyY2UucHJvdG90eXBlLl9kb1JlcGxheUNhbGxzLmNhbGwodGhpcywgZGF0YSwgY2FjaGUp
OwogCiAgICAgICAgIE9iamVjdC5rZXlzKGJpbmRpbmdzRGF0YSkuZm9yRWFjaChmdW5jdGlvbihi
aW5kaW5nVGFyZ2V0KSB7CkBAIC0xMTUyLDkgKzEyMjksOSBAQCBXZWJHTEJvdW5kUmVzb3VyY2Uu
cHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9yZXBsYXlDb250ZXh0UmVzb3VyY2U6IGZ1bmN0
aW9uKGRhdGEsIGNhY2hlKQogICAgIHsKLSAgICAgICAgdmFyIGNhbGxzID0gZGF0YS5jYWxsczsK
KyAgICAgICAgdmFyIGNhbGxzID0gLyoqIEB0eXBlIHshQXJyYXkuPFJlcGxheWFibGVDYWxsPn0g
Ki8gKGRhdGEuY2FsbHMpOwogICAgICAgICBmb3IgKHZhciBpID0gMCwgbiA9IGNhbGxzLmxlbmd0
aDsgaSA8IG47ICsraSkgewotICAgICAgICAgICAgdmFyIHJlc291cmNlID0gUmVwbGF5YWJsZVJl
c291cmNlLnJlcGxheShjYWxsc1tpXS5yZXNvdXJjZSgpLCBjYWNoZSk7CisgICAgICAgICAgICB2
YXIgcmVzb3VyY2UgPSBSZXBsYXlhYmxlUmVzb3VyY2UucmVwbGF5KGNhbGxzW2ldLnJlcGxheWFi
bGVSZXNvdXJjZSgpLCBjYWNoZSk7CiAgICAgICAgICAgICB2YXIgY29udGV4dFJlc291cmNlID0g
V2ViR0xSZW5kZXJpbmdDb250ZXh0UmVzb3VyY2UuZm9yT2JqZWN0KHJlc291cmNlKTsKICAgICAg
ICAgICAgIGlmIChjb250ZXh0UmVzb3VyY2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRl
eHRSZXNvdXJjZTsKQEAgLTExODAsMTAgKzEyNTcsMTIgQEAgV2ViR0xCb3VuZFJlc291cmNlLnBy
b3RvdHlwZSA9IHsKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViR0xCb3Vu
ZFJlc291cmNlfQorICogQHBhcmFtIHshT2JqZWN0fSB3cmFwcGVkT2JqZWN0CisgKiBAcGFyYW0g
e3N0cmluZ30gbmFtZQogICovCi1mdW5jdGlvbiBXZWJHTFRleHR1cmVSZXNvdXJjZSh3cmFwcGVk
T2JqZWN0KQorZnVuY3Rpb24gV2ViR0xUZXh0dXJlUmVzb3VyY2Uod3JhcHBlZE9iamVjdCwgbmFt
ZSkKIHsKLSAgICBXZWJHTEJvdW5kUmVzb3VyY2UuY2FsbCh0aGlzLCB3cmFwcGVkT2JqZWN0KTsK
KyAgICBXZWJHTEJvdW5kUmVzb3VyY2UuY2FsbCh0aGlzLCB3cmFwcGVkT2JqZWN0LCBuYW1lKTsK
IH0KIAogV2ViR0xUZXh0dXJlUmVzb3VyY2UucHJvdG90eXBlID0gewpAQCAtMTI1Myw3ICsxMzMy
LDcgQEAgV2ViR0xUZXh0dXJlUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAg
dmFyIGdsUmVzb3VyY2UgPSBXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZS5mb3JPYmplY3Qo
Y2FsbC5yZXNvdXJjZSgpKTsKICAgICAgICAgdmFyIGdsID0gZ2xSZXNvdXJjZS53cmFwcGVkT2Jq
ZWN0KCk7Ci0gICAgICAgIHZhciBmcmFtZWJ1ZmZlclJlc291cmNlID0gLyoqIEB0eXBlIHtXZWJH
TEZyYW1lYnVmZmVyUmVzb3VyY2V9ICovIGdsUmVzb3VyY2UuY3VycmVudEJpbmRpbmcoZ2wuRlJB
TUVCVUZGRVIpOworICAgICAgICB2YXIgZnJhbWVidWZmZXJSZXNvdXJjZSA9IC8qKiBAdHlwZSB7
V2ViR0xGcmFtZWJ1ZmZlclJlc291cmNlfSAqLyAoZ2xSZXNvdXJjZS5jdXJyZW50QmluZGluZyhn
bC5GUkFNRUJVRkZFUikpOwogICAgICAgICBpZiAoZnJhbWVidWZmZXJSZXNvdXJjZSkKICAgICAg
ICAgICAgIHRoaXMucHVzaENhbGwobmV3IENhbGwoZ2xSZXNvdXJjZSwgImJpbmRGcmFtZWJ1ZmZl
ciIsIFtnbC5GUkFNRUJVRkZFUiwgZnJhbWVidWZmZXJSZXNvdXJjZV0pKTsKICAgICAgICAgZWxz
ZSB7CkBAIC0xMjY5LDEwICsxMzQ4LDEyIEBAIFdlYkdMVGV4dHVyZVJlc291cmNlLnByb3RvdHlw
ZSA9IHsKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7UmVzb3VyY2V9CisgKiBA
cGFyYW0geyFPYmplY3R9IHdyYXBwZWRPYmplY3QKKyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCiAg
Ki8KLWZ1bmN0aW9uIFdlYkdMUHJvZ3JhbVJlc291cmNlKHdyYXBwZWRPYmplY3QpCitmdW5jdGlv
biBXZWJHTFByb2dyYW1SZXNvdXJjZSh3cmFwcGVkT2JqZWN0LCBuYW1lKQogewotICAgIFJlc291
cmNlLmNhbGwodGhpcywgd3JhcHBlZE9iamVjdCk7CisgICAgUmVzb3VyY2UuY2FsbCh0aGlzLCB3
cmFwcGVkT2JqZWN0LCBuYW1lKTsKIH0KIAogV2ViR0xQcm9ncmFtUmVzb3VyY2UucHJvdG90eXBl
ID0gewpAQCAtMTI5OSw3ICsxMzgwLDcgQEAgV2ViR0xQcm9ncmFtUmVzb3VyY2UucHJvdG90eXBl
ID0gewogICAgICAgICB2YXIgb3JpZ2luYWxFcnJvcnMgPSBnbFJlc291cmNlLmdldEFsbEVycm9y
cygpOwogCiAgICAgICAgIHZhciB1bmlmb3JtcyA9IFtdOwotICAgICAgICB2YXIgdW5pZm9ybXND
b3VudCA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dy
YW0sIGdsLkFDVElWRV9VTklGT1JNUyk7CisgICAgICAgIHZhciB1bmlmb3Jtc0NvdW50ID0gLyoq
IEB0eXBlIHtudW1iZXJ9ICovIChnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0sIGdsLkFD
VElWRV9VTklGT1JNUykpOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVuaWZvcm1zQ291
bnQ7ICsraSkgewogICAgICAgICAgICAgdmFyIGFjdGl2ZUluZm8gPSBnbC5nZXRBY3RpdmVVbmlm
b3JtKHByb2dyYW0sIGkpOwogICAgICAgICAgICAgaWYgKCFhY3RpdmVJbmZvKQpAQCAtMTQwMiwx
MCArMTQ4MywxMiBAQCBXZWJHTFByb2dyYW1SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAvKioKICAq
IEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1Jlc291cmNlfQorICogQHBhcmFtIHshT2JqZWN0
fSB3cmFwcGVkT2JqZWN0CisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQogICovCi1mdW5jdGlvbiBX
ZWJHTFNoYWRlclJlc291cmNlKHdyYXBwZWRPYmplY3QpCitmdW5jdGlvbiBXZWJHTFNoYWRlclJl
c291cmNlKHdyYXBwZWRPYmplY3QsIG5hbWUpCiB7Ci0gICAgUmVzb3VyY2UuY2FsbCh0aGlzLCB3
cmFwcGVkT2JqZWN0KTsKKyAgICBSZXNvdXJjZS5jYWxsKHRoaXMsIHdyYXBwZWRPYmplY3QsIG5h
bWUpOwogfQogCiBXZWJHTFNoYWRlclJlc291cmNlLnByb3RvdHlwZSA9IHsKQEAgLTE0MzgsMTAg
KzE1MjEsMTIgQEAgV2ViR0xTaGFkZXJSZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAvKioKICAqIEBj
b25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYkdMQm91bmRSZXNvdXJjZX0KKyAqIEBwYXJhbSB7
IU9iamVjdH0gd3JhcHBlZE9iamVjdAorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKICAqLwotZnVu
Y3Rpb24gV2ViR0xCdWZmZXJSZXNvdXJjZSh3cmFwcGVkT2JqZWN0KQorZnVuY3Rpb24gV2ViR0xC
dWZmZXJSZXNvdXJjZSh3cmFwcGVkT2JqZWN0LCBuYW1lKQogewotICAgIFdlYkdMQm91bmRSZXNv
dXJjZS5jYWxsKHRoaXMsIHdyYXBwZWRPYmplY3QpOworICAgIFdlYkdMQm91bmRSZXNvdXJjZS5j
YWxsKHRoaXMsIHdyYXBwZWRPYmplY3QsIG5hbWUpOwogfQogCiBXZWJHTEJ1ZmZlclJlc291cmNl
LnByb3RvdHlwZSA9IHsKQEAgLTE0NjIsMTAgKzE1NDcsMTIgQEAgV2ViR0xCdWZmZXJSZXNvdXJj
ZS5wcm90b3R5cGUgPSB7CiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYkdM
Qm91bmRSZXNvdXJjZX0KKyAqIEBwYXJhbSB7IU9iamVjdH0gd3JhcHBlZE9iamVjdAorICogQHBh
cmFtIHtzdHJpbmd9IG5hbWUKICAqLwotZnVuY3Rpb24gV2ViR0xGcmFtZWJ1ZmZlclJlc291cmNl
KHdyYXBwZWRPYmplY3QpCitmdW5jdGlvbiBXZWJHTEZyYW1lYnVmZmVyUmVzb3VyY2Uod3JhcHBl
ZE9iamVjdCwgbmFtZSkKIHsKLSAgICBXZWJHTEJvdW5kUmVzb3VyY2UuY2FsbCh0aGlzLCB3cmFw
cGVkT2JqZWN0KTsKKyAgICBXZWJHTEJvdW5kUmVzb3VyY2UuY2FsbCh0aGlzLCB3cmFwcGVkT2Jq
ZWN0LCBuYW1lKTsKIH0KIAogV2ViR0xGcmFtZWJ1ZmZlclJlc291cmNlLnByb3RvdHlwZSA9IHsK
QEAgLTE0ODUsMTAgKzE1NzIsMTIgQEAgV2ViR0xGcmFtZWJ1ZmZlclJlc291cmNlLnByb3RvdHlw
ZSA9IHsKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViR0xCb3VuZFJlc291
cmNlfQorICogQHBhcmFtIHshT2JqZWN0fSB3cmFwcGVkT2JqZWN0CisgKiBAcGFyYW0ge3N0cmlu
Z30gbmFtZQogICovCi1mdW5jdGlvbiBXZWJHTFJlbmRlcmJ1ZmZlclJlc291cmNlKHdyYXBwZWRP
YmplY3QpCitmdW5jdGlvbiBXZWJHTFJlbmRlcmJ1ZmZlclJlc291cmNlKHdyYXBwZWRPYmplY3Qs
IG5hbWUpCiB7Ci0gICAgV2ViR0xCb3VuZFJlc291cmNlLmNhbGwodGhpcywgd3JhcHBlZE9iamVj
dCk7CisgICAgV2ViR0xCb3VuZFJlc291cmNlLmNhbGwodGhpcywgd3JhcHBlZE9iamVjdCwgbmFt
ZSk7CiB9CiAKIFdlYkdMUmVuZGVyYnVmZmVyUmVzb3VyY2UucHJvdG90eXBlID0gewpAQCAtMTUw
NywxMyArMTU5NiwxMyBAQCBXZWJHTFJlbmRlcmJ1ZmZlclJlc291cmNlLnByb3RvdHlwZSA9IHsK
IAogLyoqCiAgKiBAY29uc3RydWN0b3IKLSAqIEBleHRlbmRzIHtSZXNvdXJjZX0KKyAqIEBleHRl
bmRzIHtDb250ZXh0UmVzb3VyY2V9CiAgKiBAcGFyYW0geyFXZWJHTFJlbmRlcmluZ0NvbnRleHR9
IGdsQ29udGV4dAogICogQHBhcmFtIHtmdW5jdGlvbigpOldlYkdMUmVuZGVyaW5nQ29udGV4dH0g
cmVwbGF5Q29udGV4dENhbGxiYWNrCiAgKi8KIGZ1bmN0aW9uIFdlYkdMUmVuZGVyaW5nQ29udGV4
dFJlc291cmNlKGdsQ29udGV4dCwgcmVwbGF5Q29udGV4dENhbGxiYWNrKQogewotICAgIFJlc291
cmNlLmNhbGwodGhpcywgZ2xDb250ZXh0KTsKKyAgICBDb250ZXh0UmVzb3VyY2UuY2FsbCh0aGlz
LCBnbENvbnRleHQsICJXZWJHTFJlbmRlcmluZ0NvbnRleHQiKTsKICAgICB0aGlzLl9yZXBsYXlD
b250ZXh0Q2FsbGJhY2sgPSByZXBsYXlDb250ZXh0Q2FsbGJhY2s7CiAgICAgLyoqIEB0eXBlIHtP
YmplY3QuPG51bWJlciwgYm9vbGVhbj59ICovCiAgICAgdGhpcy5fY3VzdG9tRXJyb3JzID0gbnVs
bDsKQEAgLTE2MTIsMTIgKzE3MDEsOSBAQCBXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZS5T
dGF0ZVBhcmFtZXRlcnMgPSBbCiBXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZS5mb3JPYmpl
Y3QgPSBmdW5jdGlvbihvYmopCiB7CiAgICAgdmFyIHJlc291cmNlID0gUmVzb3VyY2UuZm9yT2Jq
ZWN0KG9iaik7Ci0gICAgaWYgKCFyZXNvdXJjZSB8fCByZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkdM
UmVuZGVyaW5nQ29udGV4dFJlc291cmNlKQotICAgICAgICByZXR1cm4gcmVzb3VyY2U7Ci0gICAg
dmFyIGNhbGxzID0gcmVzb3VyY2UuY2FsbHMoKTsKLSAgICBpZiAoIWNhbGxzIHx8ICFjYWxscy5s
ZW5ndGgpCisgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgcmVz
b3VyY2UgPSBjYWxsc1swXS5yZXNvdXJjZSgpOworICAgIHJlc291cmNlID0gcmVzb3VyY2UuY29u
dGV4dFJlc291cmNlKCk7CiAgICAgcmV0dXJuIChyZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dFJlc291cmNlKSA/IHJlc291cmNlIDogbnVsbDsKIH0KIApAQCAtMTg2Miw3
ICsxOTQ4LDcgQEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0UmVzb3VyY2UucHJvdG90eXBlID0gewog
ICAgICAgICB9CiAgICAgICAgIGdsLmFjdGl2ZVRleHR1cmUoZ2xTdGF0ZS5BQ1RJVkVfVEVYVFVS
RSk7CiAKLSAgICAgICAgUmVzb3VyY2UucHJvdG90eXBlLl9kb1JlcGxheUNhbGxzLmNhbGwodGhp
cywgZGF0YSwgY2FjaGUpOworICAgICAgICBDb250ZXh0UmVzb3VyY2UucHJvdG90eXBlLl9kb1Jl
cGxheUNhbGxzLmNhbGwodGhpcywgZGF0YSwgY2FjaGUpOwogICAgIH0sCiAKICAgICAvKioKQEAg
LTE5MzAsMTMgKzIwMTYsMTMgQEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0UmVzb3VyY2UucHJvdG90
eXBlID0gewogICAgICAgICBpZiAoIXdyYXBGdW5jdGlvbnMpIHsKICAgICAgICAgICAgIHdyYXBG
dW5jdGlvbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpOwogCi0gICAgICAgICAgICB3cmFwRnVuY3Rp
b25zWyJjcmVhdGVCdWZmZXIiXSA9IFJlc291cmNlLldyYXBGdW5jdGlvbi5yZXNvdXJjZUZhY3Rv
cnlNZXRob2QoV2ViR0xCdWZmZXJSZXNvdXJjZSk7Ci0gICAgICAgICAgICB3cmFwRnVuY3Rpb25z
WyJjcmVhdGVTaGFkZXIiXSA9IFJlc291cmNlLldyYXBGdW5jdGlvbi5yZXNvdXJjZUZhY3RvcnlN
ZXRob2QoV2ViR0xTaGFkZXJSZXNvdXJjZSk7Ci0gICAgICAgICAgICB3cmFwRnVuY3Rpb25zWyJj
cmVhdGVQcm9ncmFtIl0gPSBSZXNvdXJjZS5XcmFwRnVuY3Rpb24ucmVzb3VyY2VGYWN0b3J5TWV0
aG9kKFdlYkdMUHJvZ3JhbVJlc291cmNlKTsKLSAgICAgICAgICAgIHdyYXBGdW5jdGlvbnNbImNy
ZWF0ZVRleHR1cmUiXSA9IFJlc291cmNlLldyYXBGdW5jdGlvbi5yZXNvdXJjZUZhY3RvcnlNZXRo
b2QoV2ViR0xUZXh0dXJlUmVzb3VyY2UpOwotICAgICAgICAgICAgd3JhcEZ1bmN0aW9uc1siY3Jl
YXRlRnJhbWVidWZmZXIiXSA9IFJlc291cmNlLldyYXBGdW5jdGlvbi5yZXNvdXJjZUZhY3RvcnlN
ZXRob2QoV2ViR0xGcmFtZWJ1ZmZlclJlc291cmNlKTsKLSAgICAgICAgICAgIHdyYXBGdW5jdGlv
bnNbImNyZWF0ZVJlbmRlcmJ1ZmZlciJdID0gUmVzb3VyY2UuV3JhcEZ1bmN0aW9uLnJlc291cmNl
RmFjdG9yeU1ldGhvZChXZWJHTFJlbmRlcmJ1ZmZlclJlc291cmNlKTsKLSAgICAgICAgICAgIHdy
YXBGdW5jdGlvbnNbImdldFVuaWZvcm1Mb2NhdGlvbiJdID0gUmVzb3VyY2UuV3JhcEZ1bmN0aW9u
LnJlc291cmNlRmFjdG9yeU1ldGhvZChSZXNvdXJjZSk7CisgICAgICAgICAgICB3cmFwRnVuY3Rp
b25zWyJjcmVhdGVCdWZmZXIiXSA9IFJlc291cmNlLldyYXBGdW5jdGlvbi5yZXNvdXJjZUZhY3Rv
cnlNZXRob2QoV2ViR0xCdWZmZXJSZXNvdXJjZSwgIldlYkdMQnVmZmVyIik7CisgICAgICAgICAg
ICB3cmFwRnVuY3Rpb25zWyJjcmVhdGVTaGFkZXIiXSA9IFJlc291cmNlLldyYXBGdW5jdGlvbi5y
ZXNvdXJjZUZhY3RvcnlNZXRob2QoV2ViR0xTaGFkZXJSZXNvdXJjZSwgIldlYkdMU2hhZGVyIik7
CisgICAgICAgICAgICB3cmFwRnVuY3Rpb25zWyJjcmVhdGVQcm9ncmFtIl0gPSBSZXNvdXJjZS5X
cmFwRnVuY3Rpb24ucmVzb3VyY2VGYWN0b3J5TWV0aG9kKFdlYkdMUHJvZ3JhbVJlc291cmNlLCAi
V2ViR0xQcm9ncmFtIik7CisgICAgICAgICAgICB3cmFwRnVuY3Rpb25zWyJjcmVhdGVUZXh0dXJl
Il0gPSBSZXNvdXJjZS5XcmFwRnVuY3Rpb24ucmVzb3VyY2VGYWN0b3J5TWV0aG9kKFdlYkdMVGV4
dHVyZVJlc291cmNlLCAiV2ViR0xUZXh0dXJlIik7CisgICAgICAgICAgICB3cmFwRnVuY3Rpb25z
WyJjcmVhdGVGcmFtZWJ1ZmZlciJdID0gUmVzb3VyY2UuV3JhcEZ1bmN0aW9uLnJlc291cmNlRmFj
dG9yeU1ldGhvZChXZWJHTEZyYW1lYnVmZmVyUmVzb3VyY2UsICJXZWJHTEZyYW1lYnVmZmVyIik7
CisgICAgICAgICAgICB3cmFwRnVuY3Rpb25zWyJjcmVhdGVSZW5kZXJidWZmZXIiXSA9IFJlc291
cmNlLldyYXBGdW5jdGlvbi5yZXNvdXJjZUZhY3RvcnlNZXRob2QoV2ViR0xSZW5kZXJidWZmZXJS
ZXNvdXJjZSwgIldlYkdMUmVuZGVyYnVmZmVyIik7CisgICAgICAgICAgICB3cmFwRnVuY3Rpb25z
WyJnZXRVbmlmb3JtTG9jYXRpb24iXSA9IFJlc291cmNlLldyYXBGdW5jdGlvbi5yZXNvdXJjZUZh
Y3RvcnlNZXRob2QoUmVzb3VyY2UsICJXZWJHTFVuaWZvcm1Mb2NhdGlvbiIpOwogCiAgICAgICAg
ICAgICAvKioKICAgICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2ROYW1lCkBAIC0y
MDg4LDcgKzIxNzQsNyBAQCBXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHJldHVybiB3cmFwRnVuY3Rpb25zOwogICAgIH0sCiAKLSAgICBfX3Byb3Rv
X186IFJlc291cmNlLnByb3RvdHlwZQorICAgIF9fcHJvdG9fXzogQ29udGV4dFJlc291cmNlLnBy
b3RvdHlwZQogfQogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtMjA5NywxMyArMjE4Mywx
MyBAQCBXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAKIC8qKgog
ICogQGNvbnN0cnVjdG9yCi0gKiBAZXh0ZW5kcyB7UmVzb3VyY2V9CisgKiBAZXh0ZW5kcyB7Q29u
dGV4dFJlc291cmNlfQogICogQHBhcmFtIHshQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSBjb250
ZXh0CiAgKiBAcGFyYW0ge2Z1bmN0aW9uKCk6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSByZXBs
YXlDb250ZXh0Q2FsbGJhY2sKICAqLwogZnVuY3Rpb24gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
UmVzb3VyY2UoY29udGV4dCwgcmVwbGF5Q29udGV4dENhbGxiYWNrKQogewotICAgIFJlc291cmNl
LmNhbGwodGhpcywgY29udGV4dCk7CisgICAgQ29udGV4dFJlc291cmNlLmNhbGwodGhpcywgY29u
dGV4dCwgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCIpOwogICAgIHRoaXMuX3JlcGxheUNvbnRl
eHRDYWxsYmFjayA9IHJlcGxheUNvbnRleHRDYWxsYmFjazsKIH0KIApAQCAtMjQzMiw5ICsyNTE4
LDkgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UucHJvdG90eXBlID0gewogICAg
ICAgICBpZiAoIXdyYXBGdW5jdGlvbnMpIHsKICAgICAgICAgICAgIHdyYXBGdW5jdGlvbnMgPSBP
YmplY3QuY3JlYXRlKG51bGwpOwogCi0gICAgICAgICAgICB3cmFwRnVuY3Rpb25zWyJjcmVhdGVM
aW5lYXJHcmFkaWVudCJdID0gUmVzb3VyY2UuV3JhcEZ1bmN0aW9uLnJlc291cmNlRmFjdG9yeU1l
dGhvZChMb2dFdmVyeXRoaW5nUmVzb3VyY2UpOwotICAgICAgICAgICAgd3JhcEZ1bmN0aW9uc1si
Y3JlYXRlUmFkaWFsR3JhZGllbnQiXSA9IFJlc291cmNlLldyYXBGdW5jdGlvbi5yZXNvdXJjZUZh
Y3RvcnlNZXRob2QoTG9nRXZlcnl0aGluZ1Jlc291cmNlKTsKLSAgICAgICAgICAgIHdyYXBGdW5j
dGlvbnNbImNyZWF0ZVBhdHRlcm4iXSA9IFJlc291cmNlLldyYXBGdW5jdGlvbi5yZXNvdXJjZUZh
Y3RvcnlNZXRob2QoTG9nRXZlcnl0aGluZ1Jlc291cmNlKTsKKyAgICAgICAgICAgIHdyYXBGdW5j
dGlvbnNbImNyZWF0ZUxpbmVhckdyYWRpZW50Il0gPSBSZXNvdXJjZS5XcmFwRnVuY3Rpb24ucmVz
b3VyY2VGYWN0b3J5TWV0aG9kKExvZ0V2ZXJ5dGhpbmdSZXNvdXJjZSwgIkNhbnZhc0dyYWRpZW50
Iik7CisgICAgICAgICAgICB3cmFwRnVuY3Rpb25zWyJjcmVhdGVSYWRpYWxHcmFkaWVudCJdID0g
UmVzb3VyY2UuV3JhcEZ1bmN0aW9uLnJlc291cmNlRmFjdG9yeU1ldGhvZChMb2dFdmVyeXRoaW5n
UmVzb3VyY2UsICJDYW52YXNHcmFkaWVudCIpOworICAgICAgICAgICAgd3JhcEZ1bmN0aW9uc1si
Y3JlYXRlUGF0dGVybiJdID0gUmVzb3VyY2UuV3JhcEZ1bmN0aW9uLnJlc291cmNlRmFjdG9yeU1l
dGhvZChMb2dFdmVyeXRoaW5nUmVzb3VyY2UsICJDYW52YXNQYXR0ZXJuIik7CiAKICAgICAgICAg
ICAgIC8qKgogICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZE5hbWUKQEAgLTI0
NzEsNyArMjU1Nyw3IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgcmV0dXJuIHdyYXBGdW5jdGlvbnM7CiAgICAgfSwKIAotICAgIF9fcHJv
dG9fXzogUmVzb3VyY2UucHJvdG90eXBlCisgICAgX19wcm90b19fOiBDb250ZXh0UmVzb3VyY2Uu
cHJvdG90eXBlCiB9CiAKIC8qKgpAQCAtMjUxNSwxMiArMjYwMSw3IEBAIFRyYWNlTG9nLnByb3Rv
dHlwZSA9IHsKICAgICAgKi8KICAgICBhZGRDYWxsOiBmdW5jdGlvbihjYWxsKQogICAgIHsKLSAg
ICAgICAgdmFyIHJlcyA9IFJlc291cmNlLmZvck9iamVjdChjYWxsLnJlc3VsdCgpKTsKLSAgICAg
ICAgaWYgKHJlcykKLSAgICAgICAgICAgIHRoaXMuY2FwdHVyZVJlc291cmNlKHJlcyk7Ci0gICAg
ICAgIHZhciBzaXplID0gdGhpcy5fcmVwbGF5YWJsZXNDYWNoZS5zaXplKCk7CiAgICAgICAgIHRo
aXMuX3JlcGxheWFibGVDYWxscy5wdXNoKGNhbGwudG9SZXBsYXlhYmxlKHRoaXMuX3JlcGxheWFi
bGVzQ2FjaGUpKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fcmVwbGF5YWJsZXNDYWNo
ZS5zaXplKCkgPT09IHNpemUsICJJbnRlcm5hbCBlcnJvcjogV2Ugc2hvdWxkIGhhdmUgY2FwdHVy
ZWQgYWxsIHRoZSByZXNvdXJjZXMgYWxyZWFkeSBieSB0aGlzIHRpbWUuIik7CiAgICAgfQogfQog
CkBAIC0yNzA5LDcgKzI3OTAsNyBAQCBSZXNvdXJjZVRyYWNraW5nTWFuYWdlci5wcm90b3R5cGUg
PSB7CiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICovCi12YXIgSW5qZWN0ZWRTY3JpcHQgPSBmdW5j
dGlvbigpCit2YXIgSW5qZWN0ZWRDYW52YXNNb2R1bGUgPSBmdW5jdGlvbigpCiB7CiAgICAgLyoq
IEB0eXBlIHshUmVzb3VyY2VUcmFja2luZ01hbmFnZXJ9ICovCiAgICAgdGhpcy5fbWFuYWdlciA9
IG5ldyBSZXNvdXJjZVRyYWNraW5nTWFuYWdlcigpOwpAQCAtMjcyMyw3ICsyODA0LDcgQEAgdmFy
IEluamVjdGVkU2NyaXB0ID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX3JlcGxheUNvbnRleHRzID0g
W107CiB9CiAKLUluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKK0luamVjdGVkQ2FudmFzTW9k
dWxlLnByb3RvdHlwZSA9IHsKICAgICAvKioKICAgICAgKiBAcGFyYW0geyFXZWJHTFJlbmRlcmlu
Z0NvbnRleHR9IGdsQ29udGV4dAogICAgICAqIEByZXR1cm4ge09iamVjdH0KQEAgLTI4MjYsMzMg
KzI5MDcsNDMgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICB2YXIgY2Fs
bHMgPSB0cmFjZUxvZy5yZXBsYXlhYmxlQ2FsbHMoKTsKICAgICAgICAgZm9yICh2YXIgaSA9IHN0
YXJ0T2Zmc2V0LCBuID0gY2FsbHMubGVuZ3RoOyBpIDwgbjsgKytpKSB7CiAgICAgICAgICAgICB2
YXIgY2FsbCA9IGNhbGxzW2ldOwotICAgICAgICAgICAgdmFyIGFyZ3MgPSBjYWxsLmFyZ3MoKS5t
YXAoZnVuY3Rpb24oYXJndW1lbnQpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYXJndW1lbnQg
KyAiIjsKLSAgICAgICAgICAgIH0pOworICAgICAgICAgICAgdmFyIGNvbnRleHRSZXNvdXJjZSA9
IGNhbGwucmVwbGF5YWJsZVJlc291cmNlKCkucmVwbGF5YWJsZUNvbnRleHRSZXNvdXJjZSgpOwog
ICAgICAgICAgICAgdmFyIHN0YWNrVHJhY2UgPSBjYWxsLnN0YWNrVHJhY2UoKTsKICAgICAgICAg
ICAgIHZhciBjYWxsRnJhbWUgPSBzdGFja1RyYWNlID8gc3RhY2tUcmFjZS5jYWxsRnJhbWUoMCkg
fHwge30gOiB7fTsKICAgICAgICAgICAgIHZhciB0cmFjZUxvZ0l0ZW0gPSB7Ci0gICAgICAgICAg
ICAgICAgY29udGV4dElkOiB0aGlzLl9tYWtlQ29udGV4dElkKGNhbGwucmVzb3VyY2UoKS5pZCgp
KSwKKyAgICAgICAgICAgICAgICBjb250ZXh0SWQ6IHRoaXMuX21ha2VDb250ZXh0SWQoY29udGV4
dFJlc291cmNlLmlkKCkpLAogICAgICAgICAgICAgICAgIHNvdXJjZVVSTDogY2FsbEZyYW1lLnNv
dXJjZVVSTCwKICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBjYWxsRnJhbWUubGluZU51bWJl
ciwKICAgICAgICAgICAgICAgICBjb2x1bW5OdW1iZXI6IGNhbGxGcmFtZS5jb2x1bW5OdW1iZXIK
ICAgICAgICAgICAgIH07CiAgICAgICAgICAgICBpZiAoY2FsbC5mdW5jdGlvbk5hbWUoKSkgewog
ICAgICAgICAgICAgICAgIHRyYWNlTG9nSXRlbS5mdW5jdGlvbk5hbWUgPSBjYWxsLmZ1bmN0aW9u
TmFtZSgpOwotICAgICAgICAgICAgICAgIHRyYWNlTG9nSXRlbS5hcmd1bWVudHMgPSBhcmdzOwor
ICAgICAgICAgICAgICAgIHRyYWNlTG9nSXRlbS5hcmd1bWVudHMgPSBjYWxsLmFyZ3MoKS5tYXAo
dGhpcy5fY3JlYXRlUmVtb3RlT2JqZWN0LmJpbmQodGhpcykpOworICAgICAgICAgICAgICAgIGlm
IChjYWxsLnJlc3VsdCgpICE9PSB1bmRlZmluZWQpCisgICAgICAgICAgICAgICAgICAgIHRyYWNl
TG9nSXRlbS5yZXN1bHQgPSB0aGlzLl9jcmVhdGVSZW1vdGVPYmplY3QoY2FsbC5yZXN1bHQoKSk7
CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHRyYWNlTG9nSXRlbS5wcm9w
ZXJ0eSA9IGFyZ3NbMF07Ci0gICAgICAgICAgICAgICAgdHJhY2VMb2dJdGVtLnZhbHVlID0gYXJn
c1sxXTsKKyAgICAgICAgICAgICAgICB0cmFjZUxvZ0l0ZW0ucHJvcGVydHkgPSBjYWxsLmFyZ3Mo
KVswXTsKKyAgICAgICAgICAgICAgICB0cmFjZUxvZ0l0ZW0udmFsdWUgPSB0aGlzLl9jcmVhdGVS
ZW1vdGVPYmplY3QoY2FsbC5hcmdzKClbMV0pOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
dmFyIGNhbGxSZXN1bHQgPSBjYWxsLnJlc3VsdCgpOwotICAgICAgICAgICAgaWYgKGNhbGxSZXN1
bHQgIT09IHVuZGVmaW5lZCAmJiBjYWxsUmVzdWx0ICE9PSBudWxsKQotICAgICAgICAgICAgICAg
IHRyYWNlTG9nSXRlbS5yZXN1bHQgPSBjYWxsUmVzdWx0ICsgIiI7CiAgICAgICAgICAgICByZXN1
bHQuY2FsbHMucHVzaCh0cmFjZUxvZ0l0ZW0pOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfSwKIAogICAgIC8qKgorICAgICAqIEBwYXJhbSB7Kn0gb2JqCisgICAgICog
QHJldHVybiB7T2JqZWN0fQorICAgICAqLworICAgIF9jcmVhdGVSZW1vdGVPYmplY3Q6IGZ1bmN0
aW9uKG9iaikKKyAgICB7CisgICAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBSZXBsYXlhYmxlUmVz
b3VyY2UpCisgICAgICAgICAgICB2YXIgZGVzY3JpcHRpb24gPSBvYmouZGVzY3JpcHRpb24oKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgdmFyIGRlc2NyaXB0aW9uID0gIiIgKyBvYmo7Cisg
ICAgICAgIHJldHVybiB7IGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiB9OworICAgIH0sCisKKyAg
ICAvKioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gaWQKICAgICAgKiBAcGFyYW0ge251bWJlcn0g
c3RlcE5vCiAgICAgICogQHJldHVybiB7c3RyaW5nfQpAQCAtMjk0NCw3ICszMDM1LDcgQEAgSW5q
ZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgIH0KIH0KIAotdmFyIGluamVjdGVkU2NyaXB0
ID0gbmV3IEluamVjdGVkU2NyaXB0KCk7Ci1yZXR1cm4gaW5qZWN0ZWRTY3JpcHQ7Cit2YXIgaW5q
ZWN0ZWRDYW52YXNNb2R1bGUgPSBuZXcgSW5qZWN0ZWRDYW52YXNNb2R1bGUoKTsKK3JldHVybiBp
bmplY3RlZENhbnZhc01vZHVsZTsKIAogfSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuanNvbgppbmRleCA1N2Y2ZjdhY2RiZmRlZDkxZmE3OTU5MmU1OTBjYjg4OTI1N2NmYWY4Li4y
ZDZkYzU3YzQyOWVjYTUyZjNhYWQ3M2EwODgzNmY2MDcxNjZkMmIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0zMTk1LDE1ICszMTk1LDIyIEBACiAgICAgICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogIlVuaXF1ZSBjb250ZXh0IGlkZW50aWZpZXIuIgogICAg
ICAgICAgICAgfSwKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAiaWQiOiAiQ2FsbEFy
Z3VtZW50IiwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAorICAgICAgICAgICAg
ICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRlc2Ny
aXB0aW9uIiwgInR5cGUiOiAic3RyaW5nIiB9CisgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAiaWQiOiAiQ2FsbCIsCiAgICAg
ICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAgICAicHJvcGVydGll
cyI6IFsKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjb250ZXh0SWQiLCAiJHJlZiI6
ICJDb250ZXh0SWQiIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZnVuY3Rpb25O
YW1lIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSB9LAotICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImFyZ3VtZW50cyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjog
eyAidHlwZSI6ICJzdHJpbmciIH0sICJvcHRpb25hbCI6IHRydWUgfSwKKyAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJhcmd1bWVudHMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsg
IiRyZWYiOiAiQ2FsbEFyZ3VtZW50IiB9LCAib3B0aW9uYWwiOiB0cnVlIH0sCisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAicmVzdWx0IiwgIiRyZWYiOiAiQ2FsbEFyZ3VtZW50IiwgIm9w
dGlvbmFsIjogdHJ1ZSB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInByb3BlcnR5
IiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSB9LAotICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogInZhbHVlIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1
ZSB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlc3VsdCIsICJ0eXBlIjogInN0
cmluZyIsICJvcHRpb25hbCI6IHRydWUgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJ2YWx1ZSIsICIkcmVmIjogIkNhbGxBcmd1bWVudCIsICJvcHRpb25hbCI6IHRydWUgfSwKICAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzb3VyY2VVUkwiLCAidHlwZSI6ICJzdHJpbmci
LCAib3B0aW9uYWwiOiB0cnVlIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibGlu
ZU51bWJlciIsICJ0eXBlIjogImludGVnZXIiLCAib3B0aW9uYWwiOiB0cnVlIH0sCiAgICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiY29sdW1uTnVtYmVyIiwgInR5cGUiOiAiaW50ZWdlciIs
ICJvcHRpb25hbCI6IHRydWUgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9DYW52YXNQcm9maWxlVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvQ2FudmFzUHJvZmlsZVZpZXcuanMKaW5kZXggYjdkYTkyZGY2OWQzMjgxZDU5
N2Q3YmQzYWEyODY5MTUwMDMzNmJmOC4uYmEzMmM4MTdjMWNhNGFjZWY1Y2UzY2E2MWFhYjhlZDM4
MmYwMWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9D
YW52YXNQcm9maWxlVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0NhbnZhc1Byb2ZpbGVWaWV3LmpzCkBAIC0xNjEsNyArMTYxLDYgQEAgV2ViSW5zcGVjdG9y
LkNhbnZhc1Byb2ZpbGVWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgIF9jcmVhdGVDYWxsTm9kZTog
ZnVuY3Rpb24oaW5kZXgsIGNhbGwpCiAgICAgewotICAgICAgICB2YXIgdHJhY2VMb2dJdGVtID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIHZhciBkYXRhID0ge307CiAg
ICAgICAgIGRhdGFbMF0gPSBpbmRleCArIDE7CiAgICAgICAgIGRhdGFbMV0gPSBjYWxsLmZ1bmN0
aW9uTmFtZSB8fCAiY29udGV4dC4iICsgY2FsbC5wcm9wZXJ0eTsKQEAgLTE3MywxNiArMTcyLDE4
IEBAIFdlYkluc3BlY3Rvci5DYW52YXNQcm9maWxlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICBkYXRhWzJdID0gdGhpcy5fbGlua2lmaWVyLmxpbmtpZnlMb2NhdGlvbihjYWxsLnNvdXJj
ZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgfQogCi0gICAgICAgIGlm
IChjYWxsLmFyZ3VtZW50cykKLSAgICAgICAgICAgIGRhdGFbMV0gKz0gIigiICsgY2FsbC5hcmd1
bWVudHMuam9pbigiLCAiKSArICIpIjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZGF0YVsx
XSArPSAiID0gIiArIGNhbGwudmFsdWU7CisgICAgICAgIGlmIChjYWxsLmFyZ3VtZW50cykgewor
ICAgICAgICAgICAgdmFyIGFyZ3MgPSBjYWxsLmFyZ3VtZW50cy5tYXAoZnVuY3Rpb24oYXJndW1l
bnQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYXJndW1lbnQuZGVzY3JpcHRpb247CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIGRhdGFbMV0gKz0gIigiICsgYXJncy5qb2luKCIsICIp
ICsgIikiOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGRhdGFbMV0gKz0gIiA9ICIgKyBj
YWxsLnZhbHVlLmRlc2NyaXB0aW9uOwogCiAgICAgICAgIGlmICh0eXBlb2YgY2FsbC5yZXN1bHQg
IT09ICJ1bmRlZmluZWQiKQotICAgICAgICAgICAgZGF0YVsxXSArPSAiID0+ICIgKyBjYWxsLnJl
c3VsdDsKKyAgICAgICAgICAgIGRhdGFbMV0gKz0gIiA9PiAiICsgY2FsbC5yZXN1bHQuZGVzY3Jp
cHRpb247CiAKICAgICAgICAgdmFyIG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9k
ZShkYXRhKTsKLSAgICAgICAgbm9kZS5jYWxsID0gY2FsbDsKICAgICAgICAgbm9kZS5pbmRleCA9
IGluZGV4OwogICAgICAgICBub2RlLnNlbGVjdGFibGUgPSB0cnVlOwogICAgICAgICByZXR1cm4g
bm9kZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCAwNjUxMmU2MjE1ZmU0NDgwMzhkOGY0YmQxZDAzMTYzZmEyODljNjdkLi44
NWYwZDgyNmE5OTVlOGFlYWRkZGE0NWM3OTIxZjMxZjgwYjM3YTZhIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMTMtMDEtMTEgIEFuZHJleSBBZGFpa2luICA8YWFuZHJleUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogW0NhbnZhc10gaW50cm9kdWNlIENhbGxBcmd1bWVu
dCB0eXBlIGludG8gdGhlIHByb3RvY29sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDY2NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZXBsYWNlZCBoYWNreSBzdHViIHdpdGggYWN0dWFsIENhY2hlIGlt
cGxlbWVudGF0aW9uLgorCisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL3dlYmdsL3dlYmds
LXByb2ZpbGVyLWdldC1lcnJvci5odG1sOgorCiAyMDEzLTAxLTEwICBHcnplZ29yeiBDemFqa293
c2tpICA8Zy5jemFqa293c2tpQHNhbXN1bmcuY29tPgogCiAgICAgICAgIE9uIExpbnV4LCBzaG91
bGQgYmUgYWJsZSB0byBnZXQgc3BlbGxpbmcgc3VnZ2VzdGlvbnMgd2l0aG91dCBzZWxlY3Rpbmcg
dGhlIG1pc3NwZWxsZWQgd29yZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3By
b2ZpbGVyL3dlYmdsL3dlYmdsLXByb2ZpbGVyLWdldC1lcnJvci5odG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3Byb2ZpbGVyL3dlYmdsL3dlYmdsLXByb2ZpbGVyLWdldC1lcnJvci5odG1sCmlu
ZGV4IDViY2MwNDE0OTVjNGQ0YTg4YWUxMDg0MmIxMjllM2I1MDkzMWMxYzYuLmVjMzA5M2QxM2Ew
MzQ4MTgwYTFiNjEzNWE1MWY2NDNhODMwM2M4ZjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9wcm9maWxlci93ZWJnbC93ZWJnbC1wcm9maWxlci1nZXQtZXJyb3IuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvd2ViZ2wvd2ViZ2wtcHJvZmlsZXItZ2V0
LWVycm9yLmh0bWwKQEAgLTQsNiArNCw2MSBAQAogICAgIDxzY3JpcHQgc3JjPSIuLi9jYW52YXMt
cHJvZmlsZXItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCisvKioKKyAqIEBjb25zdHJ1
Y3RvcgorICovCitmdW5jdGlvbiBDYWNoZSgpCit7CisgICAgdGhpcy5yZXNldCgpOworfQorCitD
YWNoZS5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAg
ICAqLworICAgIHNpemU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9z
aXplOworICAgIH0sCisKKyAgICByZXNldDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgLyoq
IEB0eXBlIHshT2JqZWN0LjxudW1iZXIsIE9iamVjdD59ICovCisgICAgICAgIHRoaXMuX2l0ZW1z
ID0gT2JqZWN0LmNyZWF0ZShudWxsKTsKKyAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovCisg
ICAgICAgIHRoaXMuX3NpemUgPSAwOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0ga2V5CisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBoYXM6
IGZ1bmN0aW9uKGtleSkKKyAgICB7CisgICAgICAgIHJldHVybiBrZXkgaW4gdGhpcy5faXRlbXM7
CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBrZXkKKyAgICAgKiBA
cmV0dXJuIHtPYmplY3R9CisgICAgICovCisgICAgZ2V0OiBmdW5jdGlvbihrZXkpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5faXRlbXNba2V5XTsKKyAgICB9LAorCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtudW1iZXJ9IGtleQorICAgICAqIEBwYXJhbSB7T2JqZWN0fSBpdGVtCisgICAg
ICovCisgICAgcHV0OiBmdW5jdGlvbihrZXksIGl0ZW0pCisgICAgeworICAgICAgICBpZiAoIXRo
aXMuaGFzKGtleSkpCisgICAgICAgICAgICArK3RoaXMuX3NpemU7CisgICAgICAgIHRoaXMuX2l0
ZW1zW2tleV0gPSBpdGVtOworICAgIH0KK30KKwogdmFyIGdsOwogdmFyIHJhd0dMOwogdmFyIGds
UmVzb3VyY2U7CkBAIC04MywxMSArMTM4LDcgQEAgZnVuY3Rpb24gY3JlYXRlQW5kUnVuV2ViR0xQ
cm9ncmFtKCkKICAgICAvLyA0KSBDaGVjayB0aGF0IHByb3h5IHN0aWxsIGhhcyB0aGUgb3JpZ2lu
YWwgZXJyb3JzIHNhdmVkCiAgICAgdmFyIGVycm9ycyA9IFtyYXdHTC5JTlZBTElEX0VOVU0sIHJh
d0dMLklOVkFMSURfVkFMVUUsIHJhd0dMLklOVkFMSURfT1BFUkFUSU9OXTsKICAgICBlcnJvcnMu
Zm9yRWFjaChnZW5lcmF0ZVdlYkdMRXJyb3IuYmluZCh0aGlzLCByYXdHTCkpOwotICAgIHZhciBj
YWNoZSA9IHsKLSAgICAgICAgcHV0OiBmdW5jdGlvbigpIHt9LAotICAgICAgICBnZXQ6IGZ1bmN0
aW9uKCkge30KLSAgICB9OwotICAgIGdsUmVzb3VyY2UudG9SZXBsYXlhYmxlKGNhY2hlKTsKKyAg
ICBnbFJlc291cmNlLnRvUmVwbGF5YWJsZShuZXcgQ2FjaGUoKSk7CiAgICAgYXNzZXJ0Tm9FcnJv
cnMocmF3R0wpOwogICAgIGFzc2VydEVxdWFsQXJyYXlzKGVycm9ycywgZ2V0QWxsRXJyb3JzKGds
KSk7CiAgICAgYXNzZXJ0Tm9FcnJvcnMoZ2wpOwpAQCAtOTYsMTEgKzE0Nyw3IEBAIGZ1bmN0aW9u
IGNyZWF0ZUFuZFJ1bldlYkdMUHJvZ3JhbSgpCiAgICAgLy8gMikgQ2hlY2sgcHJveHkgYW5kIFJB
VyBlcnJvcnMgaW50ZXJsZWF2ZWQKICAgICB2YXIgZXJyb3JzID0gW3Jhd0dMLklOVkFMSURfRU5V
TSwgcmF3R0wuSU5WQUxJRF9WQUxVRSwgcmF3R0wuSU5WQUxJRF9PUEVSQVRJT05dOwogICAgIGVy
cm9ycy5mb3JFYWNoKGdlbmVyYXRlV2ViR0xFcnJvci5iaW5kKHRoaXMsIHJhd0dMKSk7Ci0gICAg
dmFyIGNhY2hlID0gewotICAgICAgICBwdXQ6IGZ1bmN0aW9uKCkge30sCi0gICAgICAgIGdldDog
ZnVuY3Rpb24oKSB7fQotICAgIH07Ci0gICAgZ2xSZXNvdXJjZS50b1JlcGxheWFibGUoY2FjaGUp
OworICAgIGdsUmVzb3VyY2UudG9SZXBsYXlhYmxlKG5ldyBDYWNoZSgpKTsKICAgICBhc3NlcnRO
b0Vycm9ycyhyYXdHTCk7CiAKICAgICB2YXIgdmFsdWUgPSBnbC5nZXRFcnJvcigpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>