<?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>75247</bug_id>
          
          <creation_ts>2011-12-27 05:44:53 -0800</creation_ts>
          <short_desc>Web Inspector: add more annotations on SDK classes.</short_desc>
          <delta_ts>2011-12-27 08:26:51 -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>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>527335</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-27 05:44:53 -0800</bug_when>
    <thetext>I&apos;m working on improving the % of the typed methods in the SDK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527336</commentid>
    <comment_count>1</comment_count>
      <attachid>120578</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-27 05:51:28 -0800</bug_when>
    <thetext>Created attachment 120578
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527356</commentid>
    <comment_count>2</comment_count>
      <attachid>120578</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-12-27 07:13:12 -0800</bug_when>
    <thetext>Comment on attachment 120578
Patch

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

&gt; Source/WebCore/inspector/front-end/BreakpointManager.js:217
&gt; +        return this._breakpoints(uiSourceCodeId)[String(lineNumber)];

Doesn&apos;t JS compiler allow to us numbers as keys in map?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527375</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-27 08:26:51 -0800</bug_when>
    <thetext>Committed r103711: &lt;http://trac.webkit.org/changeset/103711&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120578</attachid>
            <date>2011-12-27 05:51:28 -0800</date>
            <delta_ts>2011-12-27 07:13:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75247-20111227175126.patch</filename>
            <type>text/plain</type>
            <size>82770</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzNmMTY0N2NlODhkMTE2
MGQ2NGIzNjY2YzczYWFjMjM1ZDBhZWU4ZC4uNzBmNDc3NjA2MTljYjIxNTVjNjM5OWJmMDhmMDJm
NWJjNzQ1MjhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDExLTEyLTI3ICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBhZGQgbW9yZSBhbm5vdGF0aW9ucyBvbiBTREsgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1MjQ3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246
CisgICAgICAgICogaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnNoOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvQXBwbGljYXRpb25DYWNoZU1vZGVsLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVEaXNwYXRjaGVyLnByb3RvdHlwZS5uZXR3b3JrU3Rh
dGVVcGRhdGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5h
Z2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlw
ZS5fYnJlYWtwb2ludCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db2xvci5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2xvci5wcm90b3R5cGUuZ2V0IHNob3J0aGV4KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db2xvci5wcm90b3R5cGUuZ2V0IGhleCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQ29sb3IucHJvdG90eXBlLmdldCByZ2IpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvbG9yLnByb3RvdHlwZS5nZXQgaHNsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2xv
ci5wcm90b3R5cGUuZ2V0IG5pY2tuYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2xvci5w
cm90b3R5cGUuaGFzU2hvcnRIZXgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbG9yLnByb3Rv
dHlwZS5faW5kaXZpZHVhbFJHQlZhbHVlVG9GbG9hdFZhbHVlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Db2xvci5wcm90b3R5cGUuX3JnYlN0cmluZ3NUb0hleCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29sb3IucHJvdG90eXBlLl9wYXJzZS50aGlzLm5pY2tuYW1lLnNldCAyKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Db2xvci5wcm90b3R5cGUuX3BhcnNlLnRoaXMuaHNsYS5zZXQgMSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29sb3IucHJvdG90eXBlLl9wYXJzZS50aGlzLnJnYmEu
c2V0IDApOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbG9yLnByb3RvdHlwZS5fcGFyc2Uuc2V0
IFdlYkluc3BlY3Rvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29sb3IucHJvdG90eXBlLl9w
YXJzZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db21waWxlclNvdXJjZU1hcHBp
bmcuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlTW9kZWwuanM6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZW50UHJvdmlkZXJzLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRQcm92aWRlcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29uY2F0ZW5hdGVkU2NyaXB0c0NvbnRlbnRQcm92aWRlcik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5nQ29udGVudFByb3ZpZGVyKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5TdGF0aWNDb250ZW50UHJvdmlkZXIpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvQ29va2llUGFyc2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvb2tp
ZVBhcnNlci5LZXlWYWx1ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29va2llUGFyc2VyLnBy
b3RvdHlwZS5wYXJzZUNvb2tpZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29va2llUGFyc2Vy
LnByb3RvdHlwZS5wYXJzZVNldENvb2tpZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29va2ll
UGFyc2VyLnByb3RvdHlwZS5fZXh0cmFjdEtleVZhbHVlKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9E
YXRhYmFzZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZURpc3BhdGNoZXIucHJv
dG90eXBlLnNxbFRyYW5zYWN0aW9uU3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5E
YXRhYmFzZURpc3BhdGNoZXIucHJvdG90eXBlLnNxbFRyYW5zYWN0aW9uRmFpbGVkKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RGVidWdnZXJNb2RlbC5wcm90b3R5cGUuX2ZhaWxlZFRvUGFyc2VTY3JpcHRTb3VyY2UpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsUmVzb3VyY2VC
aW5kaW5nLnByb3RvdHlwZS5fc2V0Q29udGVudFdpdGhJbml0aWFsQ29udGVudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvSEFSRW50cnkuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9OZXR3b3JrTG9nLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2cu
cHJvdG90eXBlLl9tYWluRnJhbWVOYXZpZ2F0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvUGxhY2FyZC5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jhd1NvdXJj
ZUNvZGUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5Gb3JtYXR0ZWRT
b3VyY2VNYXBwaW5nLnByb3RvdHlwZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5Db21waWxlclNvdXJjZU1hcHBpbmcucHJvdG90
eXBlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1JlbW90ZU9iamVjdC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3Qu
ZnJvbVByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3Qu
cHJvdG90eXBlLnNldFByb3BlcnR5VmFsdWUucHJvcGVydHlTZXRDYWxsYmFjayk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnByb3RvdHlwZS5zZXRQcm9wZXJ0eVZhbHVlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Mb2NhbEpTT05PYmplY3QucHJvdG90eXBlLmdldCBoYXND
aGlsZHJlbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTG9jYWxKU09OT2JqZWN0LnByb3RvdHlw
ZS5fY2hpbGRyZW4pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucmVzdG9yZVJldmlzaW9ucyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLmdldCBxdWVyeVBhcmFtZXRlcnMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5nZXQgZm9ybVBhcmFt
ZXRlcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5pc0h0dHBG
YW1pbHkpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VDYXRlZ29yeS5q
czoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVXRpbHMuanM6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY29wZUNoYWluU2lkZWJhclBhbmUuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU2NvcGVDaGFpblNpZGViYXJQYW5lLnByb3RvdHlwZS51cGRhdGUp
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNjcmlwdC5wcm90b3R5cGUuaXNJbmxpbmVTY3JpcHQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0Rm9ybWF0dGVyLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlNjcmlwdEZvcm1hdHRlci5wb3NpdGlvblRvTG9jYXRpb24pOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvV2VsY29tZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuV2Vs
Y29tZVZpZXcucHJvdG90eXBlLmFkZE1lc3NhZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvZXh0ZXJucy5qczoKKyAgICAgICAgKEFycmF5LnByb3RvdHlwZS51cHBlckJvdW5kKToK
KwogMjAxMS0xMi0yMiAgVmFuZ2VsaXMgS29ra2V2aXMgIDx2YW5nZWxpc0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW2Nocm9taXVtXSBCeXBhc3MgdGhlIHNoYWRvdyB0ZXh0dXJlIGNvcHkgZm9y
IGFjY2VsZXJhdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXgg
MWRlZjI2N2ZlNzM5YWFiMTJhMzY5NDBkNDgwZGUyNTc3YmYyOGJiZi4uYjVmNzZlZThjMDNhZGUz
YWQwYTg4MDg1MjU1ZTYxNGFiZWM1M2RkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3IuanNvbgpAQCAtOTUwLDcgKzk1MCw3IEBACiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgIm5hbWUiOiAiYWRkRE9NU3RvcmFnZSIsCiAgICAgICAgICAgICAgICAgInBhcmFtZXRl
cnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RvcmFnZSIsICJ0eXBlIjog
Im9iamVjdCIgfQorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0b3JhZ2UiLCAiJHJl
ZiI6ICJFbnRyeSIgfQogICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgIH0sCiAgICAgICAg
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9u
dC1lbmQuc2ggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQuc2gK
aW5kZXggODczMjg2MGVlMmRmM2Y5OTVlNzEyNGE3YTVkM2VkNzdkMmI5ZWNlNC4uNzYzMDQ2ZWNm
MjcxMDUzOWU1NDdhMzkyZDUyMGQ1OTkyYjgxNDFmNSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnNoCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5zaApAQCAtOTEsNyArOTEsNiBAQCBqYXZhIC1qYXIg
fi9jbG9zdXJlL2NvbXBpbGVyLmphciAtLXN1bW1hcnlfZGV0YWlsX2xldmVsIDMgLS1jb21waWxh
dGlvbl9sZXZlbCBTSQogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUGFuZWxFbmFibGVyVmlldy5qcyBcCiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Qb3BvdmVyLmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb3BlcnRpZXNTZWN0aW9uLmpzIFwKLSAgICAgICAg
LS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb3BlcnRpZXNTaWRlYmFy
UGFuZS5qcyBcCiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TZWFyY2hDb250cm9sbGVyLmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1NlY3Rpb24uanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU2lkZWJhclBhbmUuanMgXApAQCAtOTksNiArOTgsNyBAQCBq
YXZhIC1qYXIgfi9jbG9zdXJlL2NvbXBpbGVyLmphciAtLXN1bW1hcnlfZGV0YWlsX2xldmVsIDMg
LS1jb21waWxhdGlvbl9sZXZlbCBTSQogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2hvcnRjdXRzU2NyZWVuLmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Nob3dNb3JlRGF0YUdyaWROb2RlLmpzIFwKICAg
ICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvZnRDb250ZXh0
TWVudS5qcyBcCisgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Tb3VyY2VUb2tlbml6ZXIuanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU3BsaXRWaWV3LmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0YXR1c0JhckJ1dHRvbi5qcyBcCiAgICAgICAgIC0tanMg
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UYWJiZWRQYW5lLmpzIFwKQEAgLTEy
Miw4ICsxMjIsOCBAQCBqYXZhIC1qYXIgfi9jbG9zdXJlL2NvbXBpbGVyLmphciAtLXN1bW1hcnlf
ZGV0YWlsX2xldmVsIDMgLS1jb21waWxhdGlvbl9sZXZlbCBTSQogICAgICAgICAtLWpzIFNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlwdE91dGxpbmVEaWFsb2cuanMg
XAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0
UG9wb3ZlckhlbHBlci5qcyBcCiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9PYmplY3RQcm9wZXJ0aWVzU2VjdGlvbi5qcyBcCisgICAgICAgIC0tanMgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9wZXJ0aWVzU2lkZWJhclBhbmUuanMg
XAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNl
RnJhbWUuanMgXAotICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU291cmNlVG9rZW5pemVyLmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lQWdlbnQuanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVHcmlkLmpzIFwKICAgICAgICAgLS1q
cyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lTWFuYWdlci5qcyBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0FwcGxpY2F0
aW9uQ2FjaGVNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXBw
bGljYXRpb25DYWNoZU1vZGVsLmpzCmluZGV4IDRkNzhjY2ZhZTMzMzA4ZTdmNGQ4MzEwM2ExZjQ3
Mzc4MTM3ZGRkOTIuLjliOGYyYjAwYmYzN2Y3OGU4ZjljNjIyYzZjNjlkYmYzMTJhMjE3NTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXBwbGljYXRpb25D
YWNoZU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXBw
bGljYXRpb25DYWNoZU1vZGVsLmpzCkBAIC02NSw2ICs2NSw5IEBAIFdlYkluc3BlY3Rvci5BcHBs
aWNhdGlvbkNhY2hlTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICBBcHBsaWNhdGlvbkNhY2hl
QWdlbnQuZ2V0TWFuaWZlc3RGb3JGcmFtZShmcmFtZS5pZCwgdGhpcy5fbWFuaWZlc3RGb3JGcmFt
ZUxvYWRlZC5iaW5kKHRoaXMsIGZyYW1lLmlkKSk7CiAgICAgfSwKICAgICAKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKKyAgICAgKi8KICAgICBfZnJh
bWVEZXRhY2hlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZnJhbWUgPSAv
KiogQHR5cGUge1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVGcmFtZX0gKi8gZXZlbnQuZGF0YTsK
QEAgLTI0Niw1ICsyNDksNSBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZURpc3BhdGNo
ZXIucHJvdG90eXBlID0gewogICAgIG5ldHdvcmtTdGF0ZVVwZGF0ZWQ6IGZ1bmN0aW9uKGlzTm93
T25saW5lKQogICAgIHsKICAgICAgICAgdGhpcy5fYXBwbGljYXRpb25DYWNoZU1vZGVsLl9uZXR3
b3JrU3RhdGVVcGRhdGVkKGlzTm93T25saW5lKTsKLSAgICB9LAorICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFnZXIu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2Vy
LmpzCmluZGV4IDg0OGMyOTgyNjdiMTU4MGI5ZmQ1ZDk3NDYzNzg1ZjgyNWZmMWMyM2UuLmVlMTM5
N2M3NTE0OThlZWJjZDQxY2UwYmQ1OGQ3NTZlYWZjYTk4YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcwpAQCAt
MTI0LDggKzEyNCw2IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMuX3JlbW92ZUJyZWFrcG9pbnRGcm9tRGVidWdnZXIoYnJlYWtwb2lu
dCk7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqLwogICAgIHJlbW92ZUFsbEJyZWFrcG9pbnRz
OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLl9mb3JFYWNoQnJlYWtwb2ludCh0aGlz
Ll9yZW1vdmVCcmVha3BvaW50LmJpbmQodGhpcykpOwpAQCAtMTg2LDYgKzE4NCw3IEBAIFdlYklu
c3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgLyoqCiAgICAgICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuQnJlYWtwb2ludH0gYnJlYWtwb2ludAogICAgICAqIEBwYXJh
bSB7bnVtYmVyfSBsaW5lTnVtYmVyCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAgKi8K
ICAgICBfbW92ZUJyZWFrcG9pbnRJblVJOiBmdW5jdGlvbihicmVha3BvaW50LCBsaW5lTnVtYmVy
KQogICAgIHsKQEAgLTE5OSw2ICsxOTgsNyBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFn
ZXIucHJvdG90eXBlID0gewogCiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVpU291
cmNlQ29kZUlkCisgICAgICogQHJldHVybiB7P09iamVjdC48c3RyaW5nLFdlYkluc3BlY3Rvci5C
cmVha3BvaW50Pn0KICAgICAgKi8KICAgICBfYnJlYWtwb2ludHM6IGZ1bmN0aW9uKHVpU291cmNl
Q29kZUlkKQogICAgIHsKQEAgLTIxMCwxMCArMjEwLDExIEBAIFdlYkluc3BlY3Rvci5CcmVha3Bv
aW50TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtzdHJpbmd9
IHVpU291cmNlQ29kZUlkCiAgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKKyAgICAg
KiBAcmV0dXJuIHs/V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnR9CiAgICAgICovCiAgICAgX2JyZWFr
cG9pbnQ6IGZ1bmN0aW9uKHVpU291cmNlQ29kZUlkLCBsaW5lTnVtYmVyKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX2JyZWFrcG9pbnRzKHVpU291cmNlQ29kZUlkKVtsaW5lTnVtYmVyXTsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX2JyZWFrcG9pbnRzKHVpU291cmNlQ29kZUlkKVtTdHJpbmco
bGluZU51bWJlcildOwogICAgIH0sCiAKICAgICAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29sb3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0NvbG9yLmpzCmluZGV4IDYyNTg4ZGY1YjlhNzUzZTYwZTZhYzBhMWI0OTUy
OWE5YzFlYzUzNmYuLjJjMjc3ODMyNDA4ZWZmOGQwNDAzMDQ4OTczNTJlMjVkYmE3NjI2NmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29sb3IuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db2xvci5qcwpAQCAtNDUsMTMg
KzQ1LDE2IEBAIFdlYkluc3BlY3Rvci5Db2xvci5mcm9tUkdCQSA9IGZ1bmN0aW9uKHIsIGcsIGIs
IGEpCiB9CiAKIFdlYkluc3BlY3Rvci5Db2xvci5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAg
ICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLwogICAgIGdldCBzaG9ydGhleCgpCiAgICAgewog
ICAgICAgICBpZiAoIl9zaG9ydCIgaW4gdGhpcykKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9z
aG9ydDsKIAogICAgICAgICBpZiAoIXRoaXMuc2ltcGxlKQotICAgICAgICAgICAgcmV0dXJuIG51
bGw7CisgICAgICAgICAgICByZXR1cm4gIiI7CiAKICAgICAgICAgdmFyIGhleCA9IHRoaXMuaGV4
OwogICAgICAgICBpZiAoaGV4LmNoYXJBdCgwKSA9PT0gaGV4LmNoYXJBdCgxKSAmJiBoZXguY2hh
ckF0KDIpID09PSBoZXguY2hhckF0KDMpICYmIGhleC5jaGFyQXQoNCkgPT09IGhleC5jaGFyQXQo
NSkpCkBAIC02MiwxMCArNjUsMTMgQEAgV2ViSW5zcGVjdG9yLkNvbG9yLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3Nob3J0OwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBA
cmV0dXJuIHtzdHJpbmd9CisgICAgICovCiAgICAgZ2V0IGhleCgpCiAgICAgewogICAgICAgICBp
ZiAoIXRoaXMuc2ltcGxlKQotICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICBy
ZXR1cm4gIiI7CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX2hleDsKICAgICB9LApAQCAtNzUsOSAr
ODEsMTIgQEAgV2ViSW5zcGVjdG9yLkNvbG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5f
aGV4ID0geDsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHJldHVybiB7QXJyYXkuPG51bWJl
cj59CisgICAgICovCiAgICAgZ2V0IHJnYigpCiAgICAgewotICAgICAgICBpZiAoIl9yZ2IiIGlu
IHRoaXMpCisgICAgICAgIGlmICh0aGlzLl9yZ2IpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5f
cmdiOwogCiAgICAgICAgIGlmICh0aGlzLnNpbXBsZSkKQEAgLTk1LDkgKzEwNCwxMiBAQCBXZWJJ
bnNwZWN0b3IuQ29sb3IucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9yZ2IgPSB4OwogICAg
IH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtBcnJheS48bnVtYmVyPn0KKyAgICAgKi8K
ICAgICBnZXQgaHNsKCkKICAgICB7Ci0gICAgICAgIGlmICgiX2hzbCIgaW4gdGhpcykKKyAgICAg
ICAgaWYgKHRoaXMuX2hzbCkKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9oc2w7CiAKICAgICAg
ICAgdGhpcy5faHNsID0gdGhpcy5fcmdiVG9IU0wodGhpcy5yZ2IpOwpAQCAtMTA5LDEyICsxMjEs
MTUgQEAgV2ViSW5zcGVjdG9yLkNvbG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5faHNs
ID0geDsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAq
LwogICAgIGdldCBuaWNrbmFtZSgpCiAgICAgewogICAgICAgICBpZiAodHlwZW9mIHRoaXMuX25p
Y2tuYW1lICE9PSAidW5kZWZpbmVkIikgLy8gd291bGQgYmUgc2V0IG9uIHBhcnNlIGlmIHRoZXJl
IHdhcyBhIG5pY2tuYW1lCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbmlja25hbWU7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgcmV0dXJuICIi
OwogICAgIH0sCiAKICAgICBzZXQgbmlja25hbWUoeCkKQEAgLTEyMiw2ICsxMzcsOSBAQCBXZWJJ
bnNwZWN0b3IuQ29sb3IucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9uaWNrbmFtZSA9IHg7
CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEByZXR1cm4ge0FycmF5LjxudW1iZXI+fQorICAg
ICAqLwogICAgIGdldCByZ2JhKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZ2JhOwpA
QCAtMTMyLDYgKzE1MCw5IEBAIFdlYkluc3BlY3Rvci5Db2xvci5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMuX3JnYmEgPSB4OwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtB
cnJheS48bnVtYmVyPn0KKyAgICAgKi8KICAgICBnZXQgaHNsYSgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5faHNsYTsKQEAgLTE0MiwxMiArMTYzLDE4IEBAIFdlYkluc3BlY3Rvci5Db2xv
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2hzbGEgPSB4OwogICAgIH0sCiAKKyAgICAv
KioKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLwogICAgIGhhc1Nob3J0SGV4OiBm
dW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIgc2hvcnRoZXggPSB0aGlzLnNob3J0aGV4Owot
ICAgICAgICByZXR1cm4gKHNob3J0aGV4ICYmIHNob3J0aGV4Lmxlbmd0aCA9PT0gMyk7CisgICAg
ICAgIHJldHVybiAoISFzaG9ydGhleCAmJiBzaG9ydGhleC5sZW5ndGggPT09IDMpOwogICAgIH0s
CiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCiAgICAgdG9TdHJp
bmc6IGZ1bmN0aW9uKGZvcm1hdCkKICAgICB7CiAgICAgICAgIGlmICghZm9ybWF0KQpAQCAtMTc3
LDYgKzIwNCw5IEBAIFdlYkluc3BlY3Rvci5Db2xvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
cm93ICJpbnZhbGlkIGNvbG9yIGZvcm1hdCI7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBy
ZXR1cm4ge09iamVjdH0KKyAgICAgKi8KICAgICB0b1Byb3RvY29sUkdCQTogZnVuY3Rpb24oKQog
ICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3Byb3RvY29sUkdCQSkKQEAgLTE5Miw2ICsyMjIsMTIg
QEAgV2ViSW5zcGVjdG9yLkNvbG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X3Byb3RvY29sUkdCQTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IHZhbHVlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IG1pbgorICAgICAqIEBwYXJhbSB7bnVtYmVy
fSBtYXgKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCiAgICAgX2NsYW1wOiBmdW5j
dGlvbih2YWx1ZSwgbWluLCBtYXgpCiAgICAgewogICAgICAgICBpZiAodmFsdWUgPCBtaW4pCkBA
IC0yMDEsNiArMjM3LDEwIEBAIFdlYkluc3BlY3Rvci5Db2xvci5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHJldHVybiB2YWx1ZTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1i
ZXJ8c3RyaW5nfSByZ2JWYWx1ZQorICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KICAg
ICBfaW5kaXZpZHVhbFJHQlZhbHVlVG9GbG9hdFZhbHVlOiBmdW5jdGlvbihyZ2JWYWx1ZSkKICAg
ICB7CiAgICAgICAgIGlmICh0eXBlb2YgcmdiVmFsdWUgPT09ICJudW1iZXIiKQpAQCAtMjA4LDEz
ICsyNDgsMTcgQEAgV2ViSW5zcGVjdG9yLkNvbG9yLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBp
ZiAocmdiVmFsdWUuaW5kZXhPZigiJSIpID09PSAtMSkgewogICAgICAgICAgICAgdmFyIGludFZh
bHVlID0gcGFyc2VJbnQocmdiVmFsdWUsIDEwKTsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9j
bGFtcChyZ2JWYWx1ZSwgMCwgMjU1KTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9jbGFtcChp
bnRWYWx1ZSwgMCwgMjU1KTsKICAgICAgICAgfQogCiAgICAgICAgIHZhciBwZXJjZW50VmFsdWUg
PSBwYXJzZUZsb2F0KHJnYlZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NsYW1wKHBlcmNl
bnRWYWx1ZSwgMCwgMTAwKSAqIDIuNTU7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJh
bSB7bnVtYmVyfHN0cmluZ30gcmdiVmFsdWUKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAg
ICovCiAgICAgX2luZGl2aWR1YWxSR0JWYWx1ZVRvSGV4VmFsdWU6IGZ1bmN0aW9uKHJnYlZhbHVl
KQogICAgIHsKICAgICAgICAgdmFyIGZsb2F0VmFsdWUgPSB0aGlzLl9pbmRpdmlkdWFsUkdCVmFs
dWVUb0Zsb2F0VmFsdWUocmdiVmFsdWUpOwpAQCAtMjI0LDYgKzI2OCwyMiBAQCBXZWJJbnNwZWN0
b3IuQ29sb3IucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gaGV4OwogICAgIH0sCiAKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxzdHJpbmc+fSByZ2IKKyAgICAgKiBAcmV0dXJu
IHtzdHJpbmd9CisgICAgICovCisgICAgX3JnYlN0cmluZ3NUb0hleDogZnVuY3Rpb24ocmdiKQor
ICAgIHsKKyAgICAgICAgdmFyIHIgPSB0aGlzLl9pbmRpdmlkdWFsUkdCVmFsdWVUb0hleFZhbHVl
KHJnYlswXSk7CisgICAgICAgIHZhciBnID0gdGhpcy5faW5kaXZpZHVhbFJHQlZhbHVlVG9IZXhW
YWx1ZShyZ2JbMV0pOworICAgICAgICB2YXIgYiA9IHRoaXMuX2luZGl2aWR1YWxSR0JWYWx1ZVRv
SGV4VmFsdWUocmdiWzJdKTsKKyAgICAgICAgcmV0dXJuIChyICsgZyArIGIpLnRvVXBwZXJDYXNl
KCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXkuPG51bWJlcj59IHJn
YgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KICAgICBfcmdiVG9IZXg6IGZ1bmN0
aW9uKHJnYikKICAgICB7CiAgICAgICAgIHZhciByID0gdGhpcy5faW5kaXZpZHVhbFJHQlZhbHVl
VG9IZXhWYWx1ZShyZ2JbMF0pOwpAQCAtMjMyLDYgKzI5MiwxMCBAQCBXZWJJbnNwZWN0b3IuQ29s
b3IucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gKHIgKyBnICsgYikudG9VcHBlckNhc2Uo
KTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGhleAorICAgICAq
IEByZXR1cm4ge0FycmF5LjxudW1iZXI+fQorICAgICAqLwogICAgIF9oZXhUb1JHQjogZnVuY3Rp
b24oaGV4KQogICAgIHsKICAgICAgICAgdmFyIHIgPSBwYXJzZUludChoZXguc3Vic3RyaW5nKDAs
MiksIDE2KTsKQEAgLTI0MSw2ICszMDUsMTAgQEAgV2ViSW5zcGVjdG9yLkNvbG9yLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgcmV0dXJuIFtyLCBnLCBiXTsKICAgICB9LAogCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtBcnJheS48c3RyaW5nfG51bWJlcj59IHJnYgorICAgICAqIEByZXR1cm4ge0Fy
cmF5LjxudW1iZXI+fQorICAgICAqLwogICAgIF9yZ2JUb0hTTDogZnVuY3Rpb24ocmdiKQogICAg
IHsKICAgICAgICAgdmFyIHIgPSB0aGlzLl9pbmRpdmlkdWFsUkdCVmFsdWVUb0Zsb2F0VmFsdWUo
cmdiWzBdKSAvIDI1NTsKQEAgLTI3OCw2ICszNDYsMTAgQEAgV2ViSW5zcGVjdG9yLkNvbG9yLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIFtoLCBzLCBsXTsKICAgICB9LAogCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtBcnJheS48bnVtYmVyPn0gaHNsCisgICAgICogQHJldHVybiB7QXJy
YXkuPG51bWJlcj59CisgICAgICovCiAgICAgX2hzbFRvUkdCOiBmdW5jdGlvbihoc2wpCiAgICAg
ewogICAgICAgICB2YXIgaCA9IHBhcnNlRmxvYXQoaHNsWzBdKSAvIDM2MDsKQEAgLTMyMCw2ICsz
OTIsMTAgQEAgV2ViSW5zcGVjdG9yLkNvbG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAg
IH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxudW1iZXI+fSByZ2JhCisgICAg
ICogQHJldHVybiB7QXJyYXkuPG51bWJlcj59CisgICAgICovCiAgICAgX3JnYmFUb0hTTEE6IGZ1
bmN0aW9uKHJnYmEsIGFscGhhKQogICAgIHsKICAgICAgICAgdmFyIGhzbCA9IHRoaXMuX3JnYlRv
SFNMKHJnYmEpCkBAIC0zMjcsNiArNDAzLDExIEBAIFdlYkluc3BlY3Rvci5Db2xvci5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHJldHVybiBoc2w7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBw
YXJhbSB7QXJyYXkuPG51bWJlcj59IGhzbGEKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gYWxwaGEK
KyAgICAgKiBAcmV0dXJuIHtBcnJheS48bnVtYmVyPn0KKyAgICAgKi8KICAgICBfaHNsYVRvUkdC
QTogZnVuY3Rpb24oaHNsYSwgYWxwaGEpCiAgICAgewogICAgICAgICB2YXIgcmdiID0gdGhpcy5f
aHNsVG9SR0IoaHNsYSk7CkBAIC0zNjgsNyArNDQ5LDcgQEAgV2ViSW5zcGVjdG9yLkNvbG9yLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdCA9ICJyZ2IiOwogICAgICAg
ICAgICAgICAgIHZhciByZ2IgPSBtYXRjaFsyXS5zcGxpdCgvXHMqLFxzKi8pOwogICAgICAgICAg
ICAgICAgIHRoaXMucmdiID0gcmdiOwotICAgICAgICAgICAgICAgIHRoaXMuaGV4ID0gdGhpcy5f
cmdiVG9IZXgocmdiKTsKKyAgICAgICAgICAgICAgICB0aGlzLmhleCA9IHRoaXMuX3JnYlN0cmlu
Z3NUb0hleChyZ2IpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChtYXRjaFszXSkgeyAvLyBuaWNr
bmFtZQogICAgICAgICAgICAgICAgIHZhciBuaWNrbmFtZSA9IG1hdGNoWzNdLnRvTG93ZXJDYXNl
KCk7CiAgICAgICAgICAgICAgICAgaWYgKG5pY2tuYW1lIGluIFdlYkluc3BlY3Rvci5Db2xvci5O
aWNrbmFtZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQ29tcGlsZXJTb3VyY2VNYXBwaW5nLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Db21waWxlclNvdXJjZU1hcHBpbmcuanMKaW5kZXggZTE2OTc2NzcxZDAzNzc0Yjdl
OGE1ZTliMWY4ZTYxYWRlZWVjZTE3OC4uZDc4NjdkYmEyZTgzMzE3NzhkNjg0ZWE0Mjk2ZjEzYjU3
YjNiODAyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9D
b21waWxlclNvdXJjZU1hcHBpbmcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Db21waWxlclNvdXJjZU1hcHBpbmcuanMKQEAgLTQ2LDcgKzQ2LDcgQEAgV2ViSW5z
cGVjdG9yLkNvbXBpbGVyU291cmNlTWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgLyoqCiAgICAg
ICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZVVSTAogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5l
TnVtYmVyCi0gICAgICogQHJldHVybiB7T2JqZWN0fQorICAgICAqIEByZXR1cm4ge0RlYnVnZ2Vy
QWdlbnQuTG9jYXRpb259CiAgICAgICovCiAgICAgc291cmNlTG9jYXRpb25Ub0NvbXBpbGVkTG9j
YXRpb246IGZ1bmN0aW9uKHNvdXJjZVVSTCwgbGluZU51bWJlcikgeyB9LAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVNb2RlbC5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZU1vZGVsLmpzCmluZGV4IDUy
OGNkZTIxOGUwOTc0MDM0OGVmNzFmZjhiMjUyM2UwYTRiYzg1ZTIuLjcwYjA4N2YzOTY4MTUwNzVj
Y2E2NTgyN2Q5NTczZDc1NTNmNzU5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ29uc29sZU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ29uc29sZU1vZGVsLmpzCkBAIC0xMDQsNiArMTA0LDkgQEAgV2ViSW5z
cGVjdG9yLkNvbnNvbGVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2ludGVycnVw
dFJlcGVhdENvdW50ID0gdHJ1ZTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtu
dW1iZXJ9IGNvdW50CisgICAgICovCiAgICAgX21lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQ6IGZ1
bmN0aW9uKGNvdW50KQogICAgIHsKICAgICAgICAgdmFyIG1zZyA9IHRoaXMuX3ByZXZpb3VzTWVz
c2FnZTsKQEAgLTE1NCw2ICsxNTcsOSBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UgPSBm
dW5jdGlvbihzb3VyY2UsIGxldmVsLCB1cmwsIGxpbmUsIHJlcGVhdENvdW50KQogfQogCiBXZWJJ
bnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEBy
ZXR1cm4ge2Jvb2xlYW59CisgICAgICovCiAgICAgaXNFcnJvck9yV2FybmluZzogZnVuY3Rpb24o
KQogICAgIHsKICAgICAgICAgcmV0dXJuICh0aGlzLmxldmVsID09PSBXZWJJbnNwZWN0b3IuQ29u
c29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLldhcm5pbmcgfHwgdGhpcy5sZXZlbCA9PT0gV2ViSW5z
cGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5FcnJvcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnRlbnRQcm92aWRlcnMuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnRlbnRQcm92aWRlcnMuanMKaW5k
ZXggOGVmNjIyZGFhZTQ2Y2I2ZTY0MTFmM2RiZjQ5OGEyOWJjYjZmMWE4MC4uOWYzNzM2YTNjZmM1
OTIzYzk3ZDAzNTYzYzZkNGEwZTk0YTQ0N2ZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZW50UHJvdmlkZXJzLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29udGVudFByb3ZpZGVycy5qcwpAQCAtMzYsNyArMzYs
NyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0Q29udGVudFByb3ZpZGVyID0gZnVuY3Rpb24oc2NyaXB0
KQogewogICAgIHRoaXMuX21pbWVUeXBlID0gInRleHQvamF2YXNjcmlwdCI7CiAgICAgdGhpcy5f
c2NyaXB0ID0gc2NyaXB0OwotfTsKK30KIAogV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRQcm92
aWRlci5wcm90b3R5cGUgPSB7CiAgICAgLyoqCkBAIC03Myw3ICs3Myw3IEBAIFdlYkluc3BlY3Rv
ci5Db25jYXRlbmF0ZWRTY3JpcHRzQ29udGVudFByb3ZpZGVyID0gZnVuY3Rpb24oc2NyaXB0cykK
IHsKICAgICB0aGlzLl9taW1lVHlwZSA9ICJ0ZXh0L2h0bWwiOwogICAgIHRoaXMuX3NjcmlwdHMg
PSBzY3JpcHRzOwotfTsKK30KIAogV2ViSW5zcGVjdG9yLkNvbmNhdGVuYXRlZFNjcmlwdHNDb250
ZW50UHJvdmlkZXIuc2NyaXB0T3BlblRhZyA9ICI8c2NyaXB0PiI7CiBXZWJJbnNwZWN0b3IuQ29u
Y2F0ZW5hdGVkU2NyaXB0c0NvbnRlbnRQcm92aWRlci5zY3JpcHRDbG9zZVRhZyA9ICI8L3Njcmlw
dD4iOwpAQCAtMjQ4LDcgKzI0OCw3IEBAIFdlYkluc3BlY3Rvci5Db21waWxlclNvdXJjZU1hcHBp
bmdDb250ZW50UHJvdmlkZXIgPSBmdW5jdGlvbihzb3VyY2VVUkwsIGNvbXBpbGVyCiAgICAgdGhp
cy5fbWltZVR5cGUgPSAidGV4dC9qYXZhc2NyaXB0IjsKICAgICB0aGlzLl9zb3VyY2VVUkwgPSBz
b3VyY2VVUkw7CiAgICAgdGhpcy5fY29tcGlsZXJTb3VyY2VNYXBwaW5nID0gY29tcGlsZXJTb3Vy
Y2VNYXBwaW5nOwotfTsKK30KIAogV2ViSW5zcGVjdG9yLkNvbXBpbGVyU291cmNlTWFwcGluZ0Nv
bnRlbnRQcm92aWRlci5wcm90b3R5cGUgPSB7CiAgICAgLyoqCkBAIC0yODIsNyArMjgyLDcgQEAg
V2ViSW5zcGVjdG9yLlN0YXRpY0NvbnRlbnRQcm92aWRlciA9IGZ1bmN0aW9uKG1pbWVUeXBlLCBj
b250ZW50KQogewogICAgIHRoaXMuX21pbWVUeXBlID0gbWltZVR5cGU7CiAgICAgdGhpcy5fY29u
dGVudCA9IGNvbnRlbnQ7Ci19OworfQogCiBXZWJJbnNwZWN0b3IuU3RhdGljQ29udGVudFByb3Zp
ZGVyLnByb3RvdHlwZSA9IHsKICAgICAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQ29va2llUGFyc2VyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Db29raWVQYXJzZXIuanMKaW5kZXggZjIwMDc0ODk3MTEyZjU4ZTlkOTVh
Nzc5MTVkMzgwNjE5ZjQ4NmJkZi4uM2MzZjM3OWExMWM5MjZhOGZhODMwZWQ4NDliYzgxNzdkNmI4
MWE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db29r
aWVQYXJzZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db29r
aWVQYXJzZXIuanMKQEAgLTQyLDE2ICs0MiwzNiBAQCBXZWJJbnNwZWN0b3IuQ29va2llUGFyc2Vy
ID0gZnVuY3Rpb24oKQogewogfQogCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtz
dHJpbmd9IGtleQorICogQHBhcmFtIHtzdHJpbmd8dW5kZWZpbmVkfSB2YWx1ZQorICogQHBhcmFt
IHtudW1iZXJ9IHBvc2l0aW9uCisgKi8KK1dlYkluc3BlY3Rvci5Db29raWVQYXJzZXIuS2V5VmFs
dWUgPSBmdW5jdGlvbihrZXksIHZhbHVlLCBwb3NpdGlvbikKK3sKKyAgICB0aGlzLmtleSA9IGtl
eTsKKyAgICB0aGlzLnZhbHVlID0gdmFsdWU7CisgICAgdGhpcy5wb3NpdGlvbiA9IHBvc2l0aW9u
OworfQorCiBXZWJJbnNwZWN0b3IuQ29va2llUGFyc2VyLnByb3RvdHlwZSA9IHsKKyAgICAvKioK
KyAgICAgKiBAcmV0dXJuIHtBcnJheS48V2ViSW5zcGVjdG9yLkNvb2tpZT59CisgICAgICovCiAg
ICAgZ2V0IGNvb2tpZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Nvb2tpZXM7CiAg
ICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfHVuZGVmaW5lZH0gY29va2ll
SGVhZGVyCisgICAgICogQHJldHVybiB7P0FycmF5LjxXZWJJbnNwZWN0b3IuQ29va2llPn0KKyAg
ICAgKi8KICAgICBwYXJzZUNvb2tpZTogZnVuY3Rpb24oY29va2llSGVhZGVyKQogICAgIHsKICAg
ICAgICAgaWYgKCF0aGlzLl9pbml0aWFsaXplKGNvb2tpZUhlYWRlcikpCi0gICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAogICAgICAgICBmb3IgKHZhciBrdiA9
IHRoaXMuX2V4dHJhY3RLZXlWYWx1ZSgpOyBrdjsga3YgPSB0aGlzLl9leHRyYWN0S2V5VmFsdWUo
KSkgewogICAgICAgICAgICAgaWYgKGt2LmtleS5jaGFyQXQoMCkgPT09ICIkIiAmJiB0aGlzLl9s
YXN0Q29va2llKQpAQCAtNjQsMTAgKzg0LDE0IEBAIFdlYkluc3BlY3Rvci5Db29raWVQYXJzZXIu
cHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fY29va2llczsKICAgICB9LAogCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd8dW5kZWZpbmVkfSBzZXRDb29raWVIZWFkZXIK
KyAgICAgKiBAcmV0dXJuIHs/QXJyYXkuPFdlYkluc3BlY3Rvci5Db29raWU+fQorICAgICAqLwog
ICAgIHBhcnNlU2V0Q29va2llOiBmdW5jdGlvbihzZXRDb29raWVIZWFkZXIpCiAgICAgewogICAg
ICAgICBpZiAoIXRoaXMuX2luaXRpYWxpemUoc2V0Q29va2llSGVhZGVyKSkKLSAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICBmb3IgKHZhciBrdiA9
IHRoaXMuX2V4dHJhY3RLZXlWYWx1ZSgpOyBrdjsga3YgPSB0aGlzLl9leHRyYWN0S2V5VmFsdWUo
KSkgewogICAgICAgICAgICAgaWYgKHRoaXMuX2xhc3RDb29raWUpCiAgICAgICAgICAgICAgICAg
dGhpcy5fbGFzdENvb2tpZS5hZGRBdHRyaWJ1dGUoa3Yua2V5LCBrdi52YWx1ZSk7CkBAIC04MCw2
ICsxMDQsMTAgQEAgV2ViSW5zcGVjdG9yLkNvb2tpZVBhcnNlci5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9jb29raWVzOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge3N0cmluZ3x1bmRlZmluZWR9IGhlYWRlclZhbHVlCisgICAgICogQHJldHVybiB7Ym9vbGVh
bn0KKyAgICAgKi8KICAgICBfaW5pdGlhbGl6ZTogZnVuY3Rpb24oaGVhZGVyVmFsdWUpCiAgICAg
ewogICAgICAgICB0aGlzLl9pbnB1dCA9IGhlYWRlclZhbHVlOwpAQCAtOTgsNiArMTI2LDkgQEAg
V2ViSW5zcGVjdG9yLkNvb2tpZVBhcnNlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2xh
c3RDb29raWUgPSBudWxsOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtXZWJJ
bnNwZWN0b3IuQ29va2llUGFyc2VyLktleVZhbHVlfQorICAgICAqLwogICAgIF9leHRyYWN0S2V5
VmFsdWU6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5faW5wdXQgfHwgIXRo
aXMuX2lucHV0Lmxlbmd0aCkKQEAgLTExMywxNSArMTQ0LDE0IEBAIFdlYkluc3BlY3Rvci5Db29r
aWVQYXJzZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAg
IH0KIAotICAgICAgICB2YXIgcmVzdWx0ID0gewotICAgICAgICAgICAga2V5OiBrZXlWYWx1ZU1h
dGNoWzFdLAotICAgICAgICAgICAgdmFsdWU6IGtleVZhbHVlTWF0Y2hbMl0gJiYga2V5VmFsdWVN
YXRjaFsyXS50cmltKCksCi0gICAgICAgICAgICBwb3NpdGlvbjogdGhpcy5fb3JpZ2luYWxJbnB1
dExlbmd0aCAtIHRoaXMuX2lucHV0Lmxlbmd0aAotICAgICAgICB9OworICAgICAgICB2YXIgcmVz
dWx0ID0gbmV3IFdlYkluc3BlY3Rvci5Db29raWVQYXJzZXIuS2V5VmFsdWUoa2V5VmFsdWVNYXRj
aFsxXSwga2V5VmFsdWVNYXRjaFsyXSAmJiBrZXlWYWx1ZU1hdGNoWzJdLnRyaW0oKSwgdGhpcy5f
b3JpZ2luYWxJbnB1dExlbmd0aCAtIHRoaXMuX2lucHV0Lmxlbmd0aCk7CiAgICAgICAgIHRoaXMu
X2lucHV0ID0gdGhpcy5faW5wdXQuc2xpY2Uoa2V5VmFsdWVNYXRjaFswXS5sZW5ndGgpOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHti
b29sZWFufQorICAgICAqLwogICAgIF9hZHZhbmNlQW5kQ2hlY2tDb29raWVEZWxpbWl0ZXI6IGZ1
bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZhciBtYXRjaCA9IC9eXHMqW1xuO11ccyovLmV4ZWMo
dGhpcy5faW5wdXQpOwpAQCAtMTMxLDYgKzE2MSwxMCBAQCBXZWJJbnNwZWN0b3IuQ29va2llUGFy
c2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIG1hdGNoWzBdLm1hdGNoKCJcbiIpICE9
PSBudWxsOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5D
b29raWVQYXJzZXIuS2V5VmFsdWV9IGtleVZhbHVlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHR5
cGUKKyAgICAgKi8KICAgICBfYWRkQ29va2llOiBmdW5jdGlvbihrZXlWYWx1ZSwgdHlwZSkKICAg
ICB7CiAgICAgICAgIGlmICh0aGlzLl9sYXN0Q29va2llKQpAQCAtMTQ0LDExICsxNzgsMTkgQEAg
V2ViSW5zcGVjdG9yLkNvb2tpZVBhcnNlci5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAorLyoq
CisgKiBAcGFyYW0ge3N0cmluZ3x1bmRlZmluZWR9IGhlYWRlcgorICogQHJldHVybiB7P0FycmF5
LjxXZWJJbnNwZWN0b3IuQ29va2llPn0KKyAqLwogV2ViSW5zcGVjdG9yLkNvb2tpZVBhcnNlci5w
YXJzZUNvb2tpZSA9IGZ1bmN0aW9uKGhlYWRlcikKIHsKICAgICByZXR1cm4gKG5ldyBXZWJJbnNw
ZWN0b3IuQ29va2llUGFyc2VyKCkpLnBhcnNlQ29va2llKGhlYWRlcik7CiB9CiAKKy8qKgorICog
QHBhcmFtIHtzdHJpbmd8dW5kZWZpbmVkfSBoZWFkZXIKKyAqIEByZXR1cm4gez9BcnJheS48V2Vi
SW5zcGVjdG9yLkNvb2tpZT59CisgKi8KIFdlYkluc3BlY3Rvci5Db29raWVQYXJzZXIucGFyc2VT
ZXRDb29raWUgPSBmdW5jdGlvbihoZWFkZXIpCiB7CiAgICAgcmV0dXJuIChuZXcgV2ViSW5zcGVj
dG9yLkNvb2tpZVBhcnNlcigpKS5wYXJzZVNldENvb2tpZShoZWFkZXIpOwpAQCAtMTY2LDE2ICsy
MDgsMjUgQEAgV2ViSW5zcGVjdG9yLkNvb2tpZSA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlLCB0eXBl
KQogfQogCiBXZWJJbnNwZWN0b3IuQ29va2llLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAg
KiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLyAKICAgICBnZXQgaHR0cE9ubHkoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuICJodHRwb25seSIgaW4gdGhpcy5fYXR0cmlidXRlczsKICAgICB9LAog
CisgICAgLyoqCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8gCiAgICAgZ2V0IHNl
Y3VyZSgpCiAgICAgewogICAgICAgICByZXR1cm4gInNlY3VyZSIgaW4gdGhpcy5fYXR0cmlidXRl
czsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8g
CiAgICAgZ2V0IHNlc3Npb24oKQogICAgIHsKICAgICAgICAgLy8gUkZDIDI5NjUgc3VnZ2VzdHMg
dXNpbmcgRGlzY2FyZCBhdHRyaWJ1dGUgdG8gbWFyayBzZXNzaW9uIGNvb2tpZXMsIGJ1dCB0aGlz
IGRvZXMgbm90IHNlZW0gdG8gYmUgd2lkZWx5IHVzZWQuCkBAIC0xODMsMjcgKzIzNCw0MyBAQCBX
ZWJJbnNwZWN0b3IuQ29va2llLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuICAhKCJleHBy
aWVzIiBpbiB0aGlzLl9hdHRyaWJ1dGVzIHx8ICJtYXgtYWdlIiBpbiB0aGlzLl9hdHRyaWJ1dGVz
KTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLyAK
ICAgICBnZXQgcGF0aCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fYXR0cmlidXRlc1si
cGF0aCJdOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAg
ICovIAogICAgIGdldCBkb21haW4oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2F0dHJp
YnV0ZXNbImRvbWFpbiJdOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtEYXRl
fQorICAgICAqLyAKICAgICBleHBpcmVzOiBmdW5jdGlvbihyZXF1ZXN0RGF0ZSkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9hdHRyaWJ1dGVzWyJleHBpcmVzIl0gPyBuZXcgRGF0ZSh0aGlz
Ll9hdHRyaWJ1dGVzWyJleHBpcmVzIl0pIDoKICAgICAgICAgICAgICh0aGlzLl9hdHRyaWJ1dGVz
WyJtYXgtYWdlIl0gPyBuZXcgRGF0ZShyZXF1ZXN0RGF0ZS5nZXRUaW1lKCkgKyAxMDAwICogdGhp
cy5fYXR0cmlidXRlc1sibWF4LWFnZSJdKSA6IG51bGwpOwogICAgIH0sCiAKKyAgICAvKioKKyAg
ICAgKiBAcmV0dXJuIHtPYmplY3R9CisgICAgICovIAogICAgIGdldCBhdHRyaWJ1dGVzKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9hdHRyaWJ1dGVzOwogICAgIH0sCiAKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1
ZSAKKyAgICAgKi8gCiAgICAgYWRkQXR0cmlidXRlOiBmdW5jdGlvbihrZXksIHZhbHVlKQogICAg
IHsKICAgICAgICAgdGhpcy5fYXR0cmlidXRlc1trZXkudG9Mb3dlckNhc2UoKV0gPSB2YWx1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFn
ZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZS5qcwpp
bmRleCBlZmE3ZjE2Yjg4OTQxZDMxZWI3NDM4MGU2MGUwNWNkNGViNjc0NDkzLi5hNWFlMTUxNGYw
Nzk0N2Y1NjQ5NDE2ZDhlMWUzNDBlNmI5MmE3YjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlLmpzCkBAIC0zNywzMSArMzcsNDYgQEAgV2Vi
SW5zcGVjdG9yLkRPTVN0b3JhZ2UgPSBmdW5jdGlvbihpZCwgZG9tYWluLCBpc0xvY2FsU3RvcmFn
ZSkKIH0KIAogV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2UucHJvdG90eXBlID0geworICAgIC8qKiBA
cmV0dXJuIHtzdHJpbmd9ICovCiAgICAgZ2V0IGlkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9pZDsKICAgICB9LAogCisgICAgLyoqIEByZXR1cm4ge3N0cmluZ30gKi8KICAgICBnZXQg
ZG9tYWluKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kb21haW47CiAgICAgfSwKIAor
ICAgIC8qKiBAcmV0dXJuIHtib29sZWFufSAqLwogICAgIGdldCBpc0xvY2FsU3RvcmFnZSgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5faXNMb2NhbFN0b3JhZ2U7CiAgICAgfSwKIAorICAg
IC8qKgorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP1Byb3RvY29sLkVycm9yLCBBcnJheS48RE9N
U3RvcmFnZUFnZW50LkVudHJ5Pik6dm9pZD19IGNhbGxiYWNrCisgICAgICovCiAgICAgZ2V0RW50
cmllczogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewogICAgICAgICBET01TdG9yYWdlQWdlbnQu
Z2V0RE9NU3RvcmFnZUVudHJpZXModGhpcy5faWQsIGNhbGxiYWNrKTsKICAgICB9LAogCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGtleQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB2
YWx1ZQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP1Byb3RvY29sLkVycm9yLCBib29sZWFuKTp2
b2lkPX0gY2FsbGJhY2sKKyAgICAgKi8KICAgICBzZXRJdGVtOiBmdW5jdGlvbihrZXksIHZhbHVl
LCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIERPTVN0b3JhZ2VBZ2VudC5zZXRET01TdG9yYWdl
SXRlbSh0aGlzLl9pZCwga2V5LCB2YWx1ZSwgY2FsbGJhY2spOwogICAgIH0sCiAKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5CisgICAgICogQHBhcmFtIHtmdW5jdGlvbig/UHJv
dG9jb2wuRXJyb3IsIGJvb2xlYW4pOnZvaWQ9fSBjYWxsYmFjaworICAgICAqLwogICAgIHJlbW92
ZUl0ZW06IGZ1bmN0aW9uKGtleSwgY2FsbGJhY2spCiAgICAgewogICAgICAgICBET01TdG9yYWdl
QWdlbnQucmVtb3ZlRE9NU3RvcmFnZUl0ZW0odGhpcy5faWQsIGtleSwgY2FsbGJhY2spOwpAQCAt
NzcsNiArOTIsMTAgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VEaXNwYXRjaGVyID0gZnVuY3Rp
b24oKQogfQogCiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZURpc3BhdGNoZXIucHJvdG90eXBlID0g
eworCisgICAgLyoqCisgICAgICogQHBhcmFtIHtET01TdG9yYWdlQWdlbnQuRW50cnl9IHBheWxv
YWQKKyAgICAgKi8KICAgICBhZGRET01TdG9yYWdlOiBmdW5jdGlvbihwYXlsb2FkKQogICAgIHsK
ICAgICAgICAgdmFyIGRvbVN0b3JhZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2UoCkBA
IC04Niw2ICsxMDUsOSBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZURpc3BhdGNoZXIucHJvdG90
eXBlID0gewogICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5hZGRET01TdG9y
YWdlKGRvbVN0b3JhZ2UpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gc3RvcmFnZUlkCisgICAgICovCiAgICAgdXBkYXRlRE9NU3RvcmFnZTogZnVuY3Rpb24oc3Rv
cmFnZUlkKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMudXBk
YXRlRE9NU3RvcmFnZShzdG9yYWdlSWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRGF0YWJhc2UuanMKaW5kZXggODdkMmMyYjA4YzVhNmVmN2U4YTJjZGQyMTkyN2Fh
OTc1MjdkMTljNi4uNTMyMmJhYWY5Njk5YjRhZTdjOTgxNzA5OGE3YjE1OGNlYTE0M2Y4ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZS5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlLmpzCkBAIC0z
OCwxMSArMzgsMTMgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlID0gZnVuY3Rpb24oaWQsIGRvbWFp
biwgbmFtZSwgdmVyc2lvbikKIH0KIAogV2ViSW5zcGVjdG9yLkRhdGFiYXNlLnByb3RvdHlwZSA9
IHsKKyAgICAvKiogQHJldHVybiB7c3RyaW5nfSAqLwogICAgIGdldCBpZCgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5faWQ7CiAgICAgfSwKIAorICAgIC8qKiBAcmV0dXJuIHtzdHJpbmd9
ICovCiAgICAgZ2V0IG5hbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX25hbWU7CkBA
IC01Myw2ICs1NSw3IEBAIFdlYkluc3BlY3Rvci5EYXRhYmFzZS5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMuX25hbWUgPSB4OwogICAgIH0sCiAKKyAgICAvKiogQHJldHVybiB7c3RyaW5nfSAq
LwogICAgIGdldCB2ZXJzaW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl92ZXJzaW9u
OwpAQCAtNjMsNiArNjYsNyBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2UucHJvdG90eXBlID0gewog
ICAgICAgICB0aGlzLl92ZXJzaW9uID0geDsKICAgICB9LAogCisgICAgLyoqIEByZXR1cm4ge3N0
cmluZ30gKi8KICAgICBnZXQgZG9tYWluKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9k
b21haW47CkBAIC03MywxMSArNzcsMTUgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5fZG9tYWluID0geDsKICAgICB9LAogCisgICAgLyoqIEByZXR1
cm4ge3N0cmluZ30gKi8KICAgICBnZXQgZGlzcGxheURvbWFpbigpCiAgICAgewogICAgICAgICBy
ZXR1cm4gV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5fX2xvb2t1cEdldHRlcl9fKCJk
aXNwbGF5RG9tYWluIikuY2FsbCh0aGlzKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtmdW5jdGlvbihBcnJheS48c3RyaW5nPil9IGNhbGxiYWNrCisgICAgICovCiAgICAgZ2V0
VGFibGVOYW1lczogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewogICAgICAgICBmdW5jdGlvbiBz
b3J0aW5nQ2FsbGJhY2soZXJyb3IsIG5hbWVzKQpAQCAtODgsNiArOTYsMTEgQEAgV2ViSW5zcGVj
dG9yLkRhdGFiYXNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgRGF0YWJhc2VBZ2VudC5nZXREYXRh
YmFzZVRhYmxlTmFtZXModGhpcy5faWQsIHNvcnRpbmdDYWxsYmFjayk7CiAgICAgfSwKIAorICAg
IC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBxdWVyeQorICAgICAqIEBwYXJhbSB7ZnVuY3Rp
b24oQXJyYXkuPHN0cmluZz4sIEFycmF5LjwqPil9IG9uU3VjY2VzcworICAgICAqIEBwYXJhbSB7
ZnVuY3Rpb24oRGF0YWJhc2VBZ2VudC5FcnJvcil9IG9uRXJyb3IKKyAgICAgKi8KICAgICBleGVj
dXRlU3FsOiBmdW5jdGlvbihxdWVyeSwgb25TdWNjZXNzLCBvbkVycm9yKQogICAgIHsKICAgICAg
ICAgZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIHN1Y2Nlc3MsIHRyYW5zYWN0aW9uSWQpCkBAIC0x
MTcsNiArMTMwLDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlRGlzcGF0Y2hlciA9IGZ1bmN0aW9u
KCkKIFdlYkluc3BlY3Rvci5EYXRhYmFzZURpc3BhdGNoZXIuX2NhbGxiYWNrcyA9IHt9OwogCiBX
ZWJJbnNwZWN0b3IuRGF0YWJhc2VEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge0RhdGFiYXNlQWdlbnQuRGF0YWJhc2V9IHBheWxvYWQKKyAgICAgKi8KICAg
ICBhZGREYXRhYmFzZTogZnVuY3Rpb24ocGF5bG9hZCkKICAgICB7CiAgICAgICAgIHZhciBkYXRh
YmFzZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YWJhc2UoCkBAIC0xMjcsMjMgKzE0MywzMiBAQCBX
ZWJJbnNwZWN0b3IuRGF0YWJhc2VEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgV2Vi
SW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMuYWRkRGF0YWJhc2UoZGF0YWJhc2UpOwogICAgIH0s
CiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gdHJhbnNhY3Rpb25JZAorICAgICAq
IEBwYXJhbSB7QXJyYXkuPHN0cmluZz59IGNvbHVtbk5hbWVzCisgICAgICogQHBhcmFtIHtBcnJh
eS48Kj59IHZhbHVlcworICAgICAqLwogICAgIHNxbFRyYW5zYWN0aW9uU3VjY2VlZGVkOiBmdW5j
dGlvbih0cmFuc2FjdGlvbklkLCBjb2x1bW5OYW1lcywgdmFsdWVzKQogICAgIHsKICAgICAgICAg
aWYgKCFXZWJJbnNwZWN0b3IuRGF0YWJhc2VEaXNwYXRjaGVyLl9jYWxsYmFja3NbdHJhbnNhY3Rp
b25JZF0pCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdmFyIGNhbGxiYWNrID0gV2Vi
SW5zcGVjdG9yLkRhdGFiYXNlRGlzcGF0Y2hlci5fY2FsbGJhY2tzW3RyYW5zYWN0aW9uSWRdLm9u
U3VjY2VzczsKKyAgICAgICAgdmFyIGNhbGxiYWNrID0gV2ViSW5zcGVjdG9yLkRhdGFiYXNlRGlz
cGF0Y2hlci5fY2FsbGJhY2tzW3RyYW5zYWN0aW9uSWRdWyJvblN1Y2Nlc3MiXTsKICAgICAgICAg
ZGVsZXRlIFdlYkluc3BlY3Rvci5EYXRhYmFzZURpc3BhdGNoZXIuX2NhbGxiYWNrc1t0cmFuc2Fj
dGlvbklkXTsKICAgICAgICAgaWYgKGNhbGxiYWNrKQogICAgICAgICAgICAgY2FsbGJhY2soY29s
dW1uTmFtZXMsIHZhbHVlcyk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVt
YmVyfSB0cmFuc2FjdGlvbklkCisgICAgICogQHBhcmFtIHs/RGF0YWJhc2VBZ2VudC5FcnJvcn0g
ZXJyb3JPYmoKKyAgICAgKi8KICAgICBzcWxUcmFuc2FjdGlvbkZhaWxlZDogZnVuY3Rpb24odHJh
bnNhY3Rpb25JZCwgZXJyb3JPYmopCiAgICAgewogICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5E
YXRhYmFzZURpc3BhdGNoZXIuX2NhbGxiYWNrc1t0cmFuc2FjdGlvbklkXSkKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICB2YXIgY2FsbGJhY2sgPSBXZWJJbnNwZWN0b3IuRGF0YWJhc2VE
aXNwYXRjaGVyLl9jYWxsYmFja3NbdHJhbnNhY3Rpb25JZF0ub25FcnJvcjsKKyAgICAgICAgdmFy
IGNhbGxiYWNrID0gV2ViSW5zcGVjdG9yLkRhdGFiYXNlRGlzcGF0Y2hlci5fY2FsbGJhY2tzW3Ry
YW5zYWN0aW9uSWRdWyJvbkVycm9yIl07CiAgICAgICAgIGRlbGV0ZSBXZWJJbnNwZWN0b3IuRGF0
YWJhc2VEaXNwYXRjaGVyLl9jYWxsYmFja3NbdHJhbnNhY3Rpb25JZF07CiAgICAgICAgIGlmIChj
YWxsYmFjaykKICAgICAgICAgICAgICBjYWxsYmFjayhlcnJvck9iaik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMKaW5kZXggOTA4
ODk2MTAwMzJlYjU0MjdjMzlhN2E2ZWEzMWE5M2RiYmYwOTkyZi4uOWJhZTJjMDcwNDVkZmEyMDAy
YWIxMDdjNTQ0N2EzMzZiNzhkNDMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRGVidWdnZXJNb2RlbC5qcwpAQCAtNjAsMTAgKzYwLDE0IEBAIFdlYklu
c3BlY3Rvci5EZWJ1Z2dlclBhdXNlZERldGFpbHMgPSBmdW5jdGlvbihjYWxsRnJhbWVzLCByZWFz
b24sIGF1eERhdGEpCiAKIC8qKgogICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7RGVidWdn
ZXJBZ2VudC5Mb2NhdGlvbn0KKyAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCisgKiBAcGFy
YW0ge251bWJlcn0gY29sdW1uTnVtYmVyCiAgKi8KLVdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVs
LkxvY2F0aW9uID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRp
b24gPSBmdW5jdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiB7Ci0gICAgdGhpcy5zY3Jp
cHRJZCA9IG51bGw7CisgICAgdGhpcy5saW5lTnVtYmVyID0gbGluZU51bWJlcjsKKyAgICB0aGlz
LmNvbHVtbk51bWJlciA9IGNvbHVtbk51bWJlcjsKIH0KIAogV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
TW9kZWwuRXZlbnRzID0gewpAQCAtMzQxLDcgKzM0NSw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dl
ck1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfZmFpbGVkVG9QYXJzZVNjcmlwdFNv
dXJjZTogZnVuY3Rpb24oc291cmNlVVJMLCBzb3VyY2UsIHN0YXJ0aW5nTGluZSwgZXJyb3JMaW5l
LCBlcnJvck1lc3NhZ2UpCiAgICAgewotICAgICAgICB2YXIgc2NyaXB0ID0gbmV3IFdlYkluc3Bl
Y3Rvci5TY3JpcHQobnVsbCwgc291cmNlVVJMLCBzdGFydGluZ0xpbmUsIDAsIDAsIDAsIGZhbHNl
KTsKKyAgICAgICAgdmFyIHNjcmlwdCA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0KCIiLCBzb3Vy
Y2VVUkwsIHN0YXJ0aW5nTGluZSwgMCwgMCwgMCwgZmFsc2UpOwogICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuRmFp
bGVkVG9QYXJzZVNjcmlwdFNvdXJjZSwgc2NyaXB0KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9k
ZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2Vu
dGF0aW9uTW9kZWwuanMKaW5kZXggYjMzYTcwN2E5MDIwNGU2NWY0Zjc1NzA5MTY2M2Y4NDcwMDUy
ZjFkNC4uMmM5YWI5MGE3NjkzNzkxMGM5NDRkNjA5YTU5MTcyZjRhNjgxYTk1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdn
ZXJQcmVzZW50YXRpb25Nb2RlbC5qcwpAQCAtODUyLDcgKzg1Miw3IEBAIFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsUmVzb3VyY2VCaW5kaW5nLnByb3RvdHlwZSA9IHsKICAg
ICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZXNvdXJjZX0gcmVzb3VyY2UKICAgICAgKiBAcGFy
YW0ge3N0cmluZ30gY29udGVudAogICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gbWFqb3JDaGFuZ2UK
LSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9Qcm90b2NvbC5FcnJvcil9IHVzZXJDYWxsYmFjawor
ICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP3N0cmluZyl9IHVzZXJDYWxsYmFjawogICAgICAqLwog
ICAgIHNldENvbnRlbnQ6IGZ1bmN0aW9uKHJlc291cmNlLCBjb250ZW50LCBtYWpvckNoYW5nZSwg
dXNlckNhbGxiYWNrKQogICAgIHsKQEAgLTg3MSwyMSArODcxLDIyIEBAIFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsUmVzb3VyY2VCaW5kaW5nLnByb3RvdHlwZSA9IHsKICAg
ICAvKioKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNl
Q29kZQogICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50Ci0gICAgICogQHBhcmFtIHtmdW5j
dGlvbig/UHJvdG9jb2wuRXJyb3IpfSB1c2VyQ2FsbGJhY2sKLSAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gb2xkQ29udGVudAorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP3N0cmluZyl9IHVzZXJDYWxs
YmFjaworICAgICAqIEBwYXJhbSB7P3N0cmluZ30gb2xkQ29udGVudAorICAgICAqIEBwYXJhbSB7
P3N0cmluZ30gb2xkQ29udGVudEVuY29kZWQKICAgICAgKi8KLSAgICBfc2V0Q29udGVudFdpdGhJ
bml0aWFsQ29udGVudDogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBjb250ZW50LCB1c2VyQ2FsbGJh
Y2ssIG9sZENvbnRlbnQpCisgICAgX3NldENvbnRlbnRXaXRoSW5pdGlhbENvbnRlbnQ6IGZ1bmN0
aW9uKHVpU291cmNlQ29kZSwgY29udGVudCwgdXNlckNhbGxiYWNrLCBvbGRDb250ZW50LCBvbGRD
b250ZW50RW5jb2RlZCkKICAgICB7CiAgICAgICAgIC8qKgogICAgICAgICAgKiBAdGhpcyB7V2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWxSZXNvdXJjZUJpbmRpbmd9Ci0gICAg
ICAgICAqIEBwYXJhbSB7P1Byb3RvY29sLkVycm9yfSBlcnJvcgorICAgICAgICAgKiBAcGFyYW0g
ez9zdHJpbmd9IGVycm9yCiAgICAgICAgICAqLwogICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhl
cnJvcikKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHVzZXJDYWxsYmFjaykKICAgICAgICAg
ICAgICAgICB1c2VyQ2FsbGJhY2soZXJyb3IpOwogICAgICAgICAgICAgaWYgKCFlcnJvcikKLSAg
ICAgICAgICAgICAgICB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5fdXBkYXRlQnJlYWtwb2ludHNB
ZnRlckxpdmVFZGl0KHVpU291cmNlQ29kZSwgb2xkQ29udGVudCwgY29udGVudCk7CisgICAgICAg
ICAgICAgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuX3VwZGF0ZUJyZWFrcG9pbnRzQWZ0ZXJM
aXZlRWRpdCh1aVNvdXJjZUNvZGUsIG9sZENvbnRlbnQgfHwgIiIsIGNvbnRlbnQpOwogICAgICAg
ICB9CiAgICAgICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLnNldFNjcmlwdFNvdXJjZSh1aVNv
dXJjZUNvZGUsIGNvbnRlbnQsIGNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGlu
ZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0
bGluZS5qcwppbmRleCA5ZmM3NjBiN2QxNjIzYWJkNWVjNjhkMTk3YzA1NjkzYjQxNWQ4OWRmLi41
MDE3ODk2ZDk3MzkzMjk5ZjczMWViNjczOGUxYjM1ZTkwNzZhYjNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5l
LmpzCkBAIC02NTAsNyArNjUwLDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQu
cHJvdG90eXBlID0gewogCiAgICAgX2NyZWF0ZVRvb2x0aXBGb3JOb2RlOiBmdW5jdGlvbigpCiAg
ICAgewotICAgICAgICB2YXIgbm9kZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7CisgICAgICAg
IHZhciBub2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRE9NTm9kZX0gKi8gdGhpcy5yZXBy
ZXNlbnRlZE9iamVjdDsKICAgICAgICAgaWYgKCFub2RlLm5vZGVOYW1lKCkgfHwgbm9kZS5ub2Rl
TmFtZSgpLnRvTG93ZXJDYXNlKCkgIT09ICJpbWciKQogICAgICAgICAgICAgcmV0dXJuOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hBUkVudHJ5Lmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IQVJFbnRyeS5qcwppbmRleCA3
OTQxMWQyMjdiYjM4ZjM3NGI2Njc0YmU1MTc0NGU2ODM4N2ExZGNlLi45MzljNDU4Yjk4ZDYxMDE3
YTFlYTczYWZhNzdmNWRkNzE0NjNlZDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0hBUkVudHJ5LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvSEFSRW50cnkuanMKQEAgLTM2LDYgKzM2LDcgQEAKIAogLyoqCiAgKiBAY29u
c3RydWN0b3IKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlfSByZXNvdXJjZQogICov
CiBXZWJJbnNwZWN0b3IuSEFSRW50cnkgPSBmdW5jdGlvbihyZXNvdXJjZSkKIHsKQEAgLTQzLDYg
KzQ0LDkgQEAgV2ViSW5zcGVjdG9yLkhBUkVudHJ5ID0gZnVuY3Rpb24ocmVzb3VyY2UpCiB9CiAK
IFdlYkluc3BlY3Rvci5IQVJFbnRyeS5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHJl
dHVybiB7T2JqZWN0fQorICAgICAqLwogICAgIGJ1aWxkOiBmdW5jdGlvbigpCiAgICAgewogICAg
ICAgICByZXR1cm4gewpAQCAtNTYsNiArNjAsOSBAQCBXZWJJbnNwZWN0b3IuSEFSRW50cnkucHJv
dG90eXBlID0gewogICAgICAgICB9OwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJu
IHtPYmplY3R9CisgICAgICovCiAgICAgX2J1aWxkUmVxdWVzdDogZnVuY3Rpb24oKQogICAgIHsK
ICAgICAgICAgdmFyIHJlcyA9IHsKQEAgLTc0LDYgKzgxLDkgQEAgV2ViSW5zcGVjdG9yLkhBUkVu
dHJ5LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHJlczsKICAgICB9LAogCisgICAgLyoq
CisgICAgICogQHJldHVybiB7T2JqZWN0fQorICAgICAqLwogICAgIF9idWlsZFJlc3BvbnNlOiBm
dW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gewpAQCAtODksNiArOTksOSBAQCBXZWJJ
bnNwZWN0b3IuSEFSRW50cnkucHJvdG90eXBlID0gewogICAgICAgICB9OwogICAgIH0sCiAKKyAg
ICAvKioKKyAgICAgKiBAcmV0dXJuIHtPYmplY3R9CisgICAgICovCiAgICAgX2J1aWxkQ29udGVu
dDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHsKQEAgLTk5LDYgKzExMiw5IEBA
IFdlYkluc3BlY3Rvci5IQVJFbnRyeS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH07CiAgICAgfSwK
IAorICAgIC8qKgorICAgICAqIEByZXR1cm4ge09iamVjdH0KKyAgICAgKi8KICAgICBfYnVpbGRU
aW1pbmdzOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIgd2FpdEZvckNvbm5lY3Rpb24g
PSB0aGlzLl9pbnRlcnZhbCgiY29ubmVjdFN0YXJ0IiwgImNvbm5lY3RFbmQiKTsKQEAgLTEzMiw2
ICsxNDgsOSBAQCBXZWJJbnNwZWN0b3IuSEFSRW50cnkucHJvdG90eXBlID0gewogICAgICAgICB9
OwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtPYmplY3R9CisgICAgICovCiAg
ICAgX2J1aWxkSGVhZGVyczogZnVuY3Rpb24oaGVhZGVycykKICAgICB7CiAgICAgICAgIHZhciBy
ZXN1bHQgPSBbXTsKQEAgLTE0MCw2ICsxNTksOSBAQCBXZWJJbnNwZWN0b3IuSEFSRW50cnkucHJv
dG90eXBlID0gewogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0sCiAKKyAgICAvKioKKyAg
ICAgKiBAcmV0dXJuIHtPYmplY3R9CisgICAgICovCiAgICAgX2J1aWxkUG9zdERhdGE6IGZ1bmN0
aW9uKCkKICAgICB7CiAgICAgICAgIHZhciByZXMgPSB7CkBAIC0xNTEsMjEgKzE3MywzNyBAQCBX
ZWJJbnNwZWN0b3IuSEFSRW50cnkucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gcmVzOwog
ICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxPYmplY3Q+fSBwYXJhbWV0
ZXJzCisgICAgICogQHJldHVybiB7QXJyYXkuPE9iamVjdD59CisgICAgICovCiAgICAgX2J1aWxk
UGFyYW1ldGVyczogZnVuY3Rpb24ocGFyYW1ldGVycykKICAgICB7CiAgICAgICAgIHJldHVybiBw
YXJhbWV0ZXJzLnNsaWNlKCk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSB1cmwKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCiAgICAgX2J1aWxkUmVx
dWVzdFVSTDogZnVuY3Rpb24odXJsKQogICAgIHsKICAgICAgICAgcmV0dXJuIHVybC5zcGxpdCgi
IyIsIDIpWzBdOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxXZWJJ
bnNwZWN0b3IuQ29va2llPn0gY29va2llcworICAgICAqIEByZXR1cm4ge0FycmF5LjxPYmplY3Q+
fQorICAgICAqLwogICAgIF9idWlsZENvb2tpZXM6IGZ1bmN0aW9uKGNvb2tpZXMpCiAgICAgewog
ICAgICAgICByZXR1cm4gY29va2llcy5tYXAodGhpcy5fYnVpbGRDb29raWUuYmluZCh0aGlzKSk7
CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkNvb2tpZX0g
Y29va2llCisgICAgICogQHJldHVybiB7T2JqZWN0fQorICAgICAqLwogICAgIF9idWlsZENvb2tp
ZTogZnVuY3Rpb24oY29va2llKQogICAgIHsKICAgICAgICAgcmV0dXJuIHsKQEAgLTE3OSw2ICsy
MTcsMTEgQEAgV2ViSW5zcGVjdG9yLkhBUkVudHJ5LnByb3RvdHlwZSA9IHsKICAgICAgICAgfTsK
ICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHN0YXJ0CisgICAgICog
QHBhcmFtIHtzdHJpbmd9IGVuZAorICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KICAg
ICBfaW50ZXJ2YWw6IGZ1bmN0aW9uKHN0YXJ0LCBlbmQpCiAgICAgewogICAgICAgICB2YXIgdGlt
aW5nID0gdGhpcy5fcmVzb3VyY2UudGltaW5nOwpAQCAtMTg4LDIyICsyMzEsMzUgQEAgV2ViSW5z
cGVjdG9yLkhBUkVudHJ5LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHR5cGVvZiBzdGFy
dFRpbWUgIT09ICJudW1iZXIiIHx8IHN0YXJ0VGltZSA9PT0gLTEgPyAtMSA6IE1hdGgucm91bmQo
dGltaW5nW2VuZF0gLSBzdGFydFRpbWUpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0
dXJuIHtudW1iZXJ9CisgICAgICovCiAgICAgZ2V0IHJlcXVlc3RCb2R5U2l6ZSgpCiAgICAgewog
ICAgICAgICByZXR1cm4gIXRoaXMuX3Jlc291cmNlLnJlcXVlc3RGb3JtRGF0YSA/IDAgOiB0aGlz
Ll9yZXNvdXJjZS5yZXF1ZXN0Rm9ybURhdGEubGVuZ3RoOwogICAgIH0sCiAKKyAgICAvKioKKyAg
ICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCiAgICAgZ2V0IHJlc3BvbnNlQm9keVNpemUo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlLnRyYW5zZmVyU2l6ZSAtIHRo
aXMuX3Jlc291cmNlLnJlc3BvbnNlSGVhZGVyc1NpemUKICAgICB9LAogCisgICAgLyoqCisgICAg
ICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLwogICAgIGdldCByZXNwb25zZUNvbXByZXNzaW9u
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZS5yZXNvdXJjZVNpemUgLSAo
dGhpcy5fcmVzb3VyY2UudHJhbnNmZXJTaXplIC0gdGhpcy5fcmVzb3VyY2UucmVzcG9uc2VIZWFk
ZXJzU2l6ZSk7CiAgICAgfQogfQogCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lCisgKiBA
cmV0dXJuIHtudW1iZXJ9CisgKi8KIFdlYkluc3BlY3Rvci5IQVJFbnRyeS5fdG9NaWxsaXNlY29u
ZHMgPSBmdW5jdGlvbih0aW1lKQogewogICAgIHJldHVybiB0aW1lID09PSAtMSA/IC0xIDogTWF0
aC5yb3VuZCh0aW1lICogMTAwMCk7CkBAIC0yMTEsNiArMjY3LDcgQEAgV2ViSW5zcGVjdG9yLkhB
UkVudHJ5Ll90b01pbGxpc2Vjb25kcyA9IGZ1bmN0aW9uKHRpbWUpCiAKIC8qKgogICogQGNvbnN0
cnVjdG9yCisgKiBAcGFyYW0ge0FycmF5LjxXZWJJbnNwZWN0b3IuUmVzb3VyY2U+fSByZXNvdXJj
ZXMKICAqLwogV2ViSW5zcGVjdG9yLkhBUkxvZyA9IGZ1bmN0aW9uKHJlc291cmNlcykKIHsKQEAg
LTIxOCw2ICsyNzUsOSBAQCBXZWJJbnNwZWN0b3IuSEFSTG9nID0gZnVuY3Rpb24ocmVzb3VyY2Vz
KQogfQogCiBXZWJJbnNwZWN0b3IuSEFSTG9nLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAg
KiBAcmV0dXJuIHtPYmplY3R9CisgICAgICovCiAgICAgYnVpbGQ6IGZ1bmN0aW9uKCkKICAgICB7
CiAgICAgICAgIHZhciB3ZWJLaXRWZXJzaW9uID0gL0FwcGxlV2ViS2l0XC8oW14gXSspLy5leGVj
KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KTsKQEAgLTIzMyw2ICsyOTMsOSBAQCBXZWJJbnNw
ZWN0b3IuSEFSTG9nLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAKKyAgICAvKioK
KyAgICAgKiBAcmV0dXJuIHtBcnJheX0KKyAgICAgKi8KICAgICBfYnVpbGRQYWdlczogZnVuY3Rp
b24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIFsKQEAgLTI0NSw2ICszMDgsOSBAQCBXZWJJbnNw
ZWN0b3IuSEFSTG9nLnByb3RvdHlwZSA9IHsKICAgICAgICAgXTsKICAgICB9LAogCisgICAgLyoq
CisgICAgICogQHJldHVybiB7T2JqZWN0fQorICAgICAqLwogICAgIGJ1aWxkTWFpblJlc291cmNl
VGltaW5nczogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHsKQEAgLTI1MywxMSAr
MzE5LDE5IEBAIFdlYkluc3BlY3Rvci5IQVJMb2cucHJvdG90eXBlID0gewogICAgICAgICB9CiAg
ICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlfSBy
ZXNvdXJjZQorICAgICAqIEByZXR1cm4ge09iamVjdH0KKyAgICAgKi8KICAgICBfY29udmVydFJl
c291cmNlOiBmdW5jdGlvbihyZXNvdXJjZSkKICAgICB7CiAgICAgICAgIHJldHVybiAobmV3IFdl
Ykluc3BlY3Rvci5IQVJFbnRyeShyZXNvdXJjZSkpLmJ1aWxkKCk7CiAgICAgfSwKIAorICAgIC8q
KgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lCisgICAgICogQHJldHVybiB7bnVtYmVyfQor
ICAgICAqLwogICAgIF9wYWdlRXZlbnRUaW1lOiBmdW5jdGlvbih0aW1lKQogICAgIHsKICAgICAg
ICAgdmFyIHN0YXJ0VGltZSA9IFdlYkluc3BlY3Rvci5tYWluUmVzb3VyY2VTdGFydFRpbWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtMb2cu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtMb2cuanMKaW5k
ZXggOTVhNTZmYTM4MWY0NDE0ZjQ0NTg4OGM2MWEzMzJiMmVmZTBjYjc0Zi4uOTlhYjIwMzU0NTVl
ZDZjMTgxZGNiNjU3MmE4YTg0Y2FmNjIyZTc2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTG9nLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya0xvZy5qcwpAQCAtNTYsOSArNTYsMTIgQEAgV2ViSW5z
cGVjdG9yLk5ldHdvcmtMb2cucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fbWFp
blJlc291cmNlU3RhcnRUaW1lOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5FdmVudH0gZXZlbnQKKyAgICAgKi8KICAgICBfbWFpbkZyYW1lTmF2aWdhdGVk
OiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBtYWluRnJhbWUgPSBldmVudC5k
YXRhOworICAgICAgICB2YXIgbWFpbkZyYW1lID0gLyoqIHR5cGUge1dlYkluc3BlY3Rvci5SZXNv
dXJjZVRyZWVGcmFtZX0gKi8gZXZlbnQuZGF0YTsKICAgICAgICAgdGhpcy5fbWFpblJlc291cmNl
U3RhcnRUaW1lID0gbnVsbDsKICAgICAgICAgLy8gUHJlc2VydmUgcmVzb3VyY2VzIGZyb20gdGhl
IG5ldyBzZXNzaW9uLgogICAgICAgICB2YXIgb2xkUmVzb3VyY2VzID0gdGhpcy5fcmVzb3VyY2Vz
LnNwbGljZSgwLCB0aGlzLl9yZXNvdXJjZXMubGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUGxhY2FyZC5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvUGxhY2FyZC5qcwppbmRleCBlZGMwMTFiZGM2ZTM0MzNmOGRiZTNj
Zjg1YzMyZWEzZGYxMWNjZWIyLi40ZTkxYTY2OTA3YzFhNTU4MGY5MzVjZDRhZDczMTEzODg0NDkz
NTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BsYWNh
cmQuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9QbGFjYXJkLmpz
CkBAIC0yNSw2ICsyNSw4IEBACiAKIC8qKgogICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge3N0
cmluZ30gdGl0bGUKKyAqIEBwYXJhbSB7c3RyaW5nfSBzdWJ0aXRsZQogICovCiBXZWJJbnNwZWN0
b3IuUGxhY2FyZCA9IGZ1bmN0aW9uKHRpdGxlLCBzdWJ0aXRsZSkKIHsKQEAgLTQ3LDYgKzQ5LDcg
QEAgV2ViSW5zcGVjdG9yLlBsYWNhcmQgPSBmdW5jdGlvbih0aXRsZSwgc3VidGl0bGUpCiB9CiAK
IFdlYkluc3BlY3Rvci5QbGFjYXJkLnByb3RvdHlwZSA9IHsKKyAgICAvKiogQHJldHVybiB7c3Ry
aW5nfSAqLwogICAgIGdldCB0aXRsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdGl0
bGU7CkBAIC02MCw2ICs2Myw3IEBAIFdlYkluc3BlY3Rvci5QbGFjYXJkLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdGhpcy50aXRsZUVsZW1lbnQudGV4dENvbnRlbnQgPSB4OwogICAgIH0sCiAKKyAg
ICAvKiogQHJldHVybiB7c3RyaW5nfSAqLwogICAgIGdldCBzdWJ0aXRsZSgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fc3VidGl0bGU7CkBAIC03Myw2ICs3Nyw3IEBAIFdlYkluc3BlY3Rv
ci5QbGFjYXJkLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5zdWJ0aXRsZUVsZW1lbnQudGV4
dENvbnRlbnQgPSB4OwogICAgIH0sCiAKKyAgICAvKiogQHJldHVybiB7Ym9vbGVhbn0gKi8KICAg
ICBnZXQgc2VsZWN0ZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SYXdTb3VyY2VD
b2RlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SYXdTb3VyY2VDb2Rl
LmpzCmluZGV4IDIyYmRlZDVmNzg2MGJjNWYxMjM3NGQxMzdhNTU3Nzk3MzBkNzlkMTUuLjliNzI5
NzQyMDYxOGMzYmQ1MTU5ZmJiOWZhNmEyMDY1YWM3Zjg4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmF3U291cmNlQ29kZS5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jhd1NvdXJjZUNvZGUuanMKQEAgLTExNCw3ICsx
MTQsNyBAQCBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5wcm90b3R5cGUgPSB7CiAKICAgICAv
KioKICAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZU51bWJlcgotICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBjb2x1bW5OdW1iZXIKKyAgICAgKiBAcGFyYW0ge251bWJlcj19IGNvbHVtbk51bWJlcgog
ICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5TY3JpcHR9CiAgICAgICovCiAgICAgX3Njcmlw
dEZvclJhd0xvY2F0aW9uOiBmdW5jdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCkBAIC0z
NjQsNyArMzY0LDcgQEAgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuRm9ybWF0dGVkU291cmNl
TWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgdWlMb2NhdGlvblRvUmF3TG9jYXRpb246IGZ1bmN0
aW9uKHVpU291cmNlQ29kZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgIHsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQodWlTb3VyY2VDb2RlID09PSB0aGlzLl91aVNvdXJjZUNvZGVMaXN0
WzBdKTsKLSAgICAgICAgdmFyIHJhd0xvY2F0aW9uID0gdGhpcy5fbWFwcGluZy5mb3JtYXR0ZWRU
b09yaWdpbmFsKHsgbGluZU51bWJlcjogbGluZU51bWJlciwgY29sdW1uTnVtYmVyOiBjb2x1bW5O
dW1iZXIgfSk7CisgICAgICAgIHZhciByYXdMb2NhdGlvbiA9IHRoaXMuX21hcHBpbmcuZm9ybWF0
dGVkVG9PcmlnaW5hbChuZXcgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb24obGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyKSk7CiAgICAgICAgIHJhd0xvY2F0aW9uLnNjcmlwdElkID0g
dGhpcy5fcmF3U291cmNlQ29kZS5fc2NyaXB0Rm9yUmF3TG9jYXRpb24ocmF3TG9jYXRpb24ubGlu
ZU51bWJlciwgcmF3TG9jYXRpb24uY29sdW1uTnVtYmVyKS5zY3JpcHRJZDsKICAgICAgICAgcmV0
dXJuIHJhd0xvY2F0aW9uOwogICAgIH0sCkBAIC00MTYsNyArNDE2LDcgQEAgV2ViSW5zcGVjdG9y
LlJhd1NvdXJjZUNvZGUuQ29tcGlsZXJTb3VyY2VNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAgICB7
CiAgICAgICAgIHZhciByYXdMb2NhdGlvbiA9IHRoaXMuX21hcHBpbmcuc291cmNlTG9jYXRpb25U
b0NvbXBpbGVkTG9jYXRpb24odWlTb3VyY2VDb2RlLnVybCwgbGluZU51bWJlcik7CiAgICAgICAg
IHJhd0xvY2F0aW9uLnNjcmlwdElkID0gdGhpcy5fcmF3U291cmNlQ29kZS5fc2NyaXB0Rm9yUmF3
TG9jYXRpb24ocmF3TG9jYXRpb24ubGluZU51bWJlciwgcmF3TG9jYXRpb24uY29sdW1uTnVtYmVy
KS5zY3JpcHRJZDsKLSAgICAgICAgcmV0dXJuIC8qKiBAdHlwZSB7RGVidWdnZXJBZ2VudC5Mb2Nh
dGlvbn0gKi8gcmF3TG9jYXRpb247CisgICAgICAgIHJldHVybiByYXdMb2NhdGlvbjsKICAgICB9
LAogCiAgICAgLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1JlbW90ZU9iamVjdC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
UmVtb3RlT2JqZWN0LmpzCmluZGV4IGE1M2MyOTU2ODAyYTVjOTQ1ZGUwOWI2YTM5Mzg3YTVhZjg2
Mzk5YTUuLjU1MTkxZGQ0NGNjNDE3MTc3OGE3Y2I4YmZhMThiN2I4NGVhOGE3NWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVtb3RlT2JqZWN0LmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVtb3RlT2JqZWN0LmpzCkBA
IC0zMCw5ICszMCw5IEBACiAKIC8qKgogICogQGNvbnN0cnVjdG9yCi0gKiBAcGFyYW0gez9zdHJp
bmd9IG9iamVjdElkCisgKiBAcGFyYW0ge3N0cmluZ3x1bmRlZmluZWR9IG9iamVjdElkCiAgKiBA
cGFyYW0ge3N0cmluZ30gdHlwZQotICogQHBhcmFtIHs/c3RyaW5nfSBzdWJ0eXBlCisgKiBAcGFy
YW0ge3N0cmluZ3x1bmRlZmluZWR9IHN1YnR5cGUKICAqIEBwYXJhbSB7Kn0gdmFsdWUKICAqIEBw
YXJhbSB7c3RyaW5nPX0gZGVzY3JpcHRpb24KICAqLwpAQCAtNTQsMTggKzU0LDM1IEBAIFdlYklu
c3BlY3Rvci5SZW1vdGVPYmplY3QgPSBmdW5jdGlvbihvYmplY3RJZCwgdHlwZSwgc3VidHlwZSwg
dmFsdWUsIGRlc2NyaXB0aW9uCiAgICAgfQogfQogCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfHN0
cmluZ3xib29sZWFufSB2YWx1ZQorICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVj
dH0KKyAqLwogV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUHJpbWl0aXZlVmFsdWUgPSBm
dW5jdGlvbih2YWx1ZSkKIHsKLSAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5SZW1vdGVPYmpl
Y3QobnVsbCwgdHlwZW9mIHZhbHVlLCBudWxsLCB2YWx1ZSk7CisgICAgcmV0dXJuIG5ldyBXZWJJ
bnNwZWN0b3IuUmVtb3RlT2JqZWN0KHVuZGVmaW5lZCwgdHlwZW9mIHZhbHVlLCB1bmRlZmluZWQs
IHZhbHVlKTsKIH0KIAorLyoqCisgKiBAcGFyYW0ge09iamVjdH0gdmFsdWUKKyAqIEByZXR1cm4g
e1dlYkluc3BlY3Rvci5SZW1vdGVPYmplY3R9CisgKi8KIFdlYkluc3BlY3Rvci5SZW1vdGVPYmpl
Y3QuZnJvbUxvY2FsT2JqZWN0ID0gZnVuY3Rpb24odmFsdWUpCiB7CiAgICAgcmV0dXJuIG5ldyBX
ZWJJbnNwZWN0b3IuTG9jYWxKU09OT2JqZWN0KHZhbHVlKTsKIH0KIAorLyoqCisgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5ET01Ob2RlfSBub2RlCisgKiBAcGFyYW0ge3N0cmluZ30gb2JqZWN0R3Jv
dXAKKyAqIEBwYXJhbSB7ZnVuY3Rpb24oP1dlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QpfSBjYWxs
YmFjaworICovCiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnJlc29sdmVOb2RlID0gZnVuY3Rp
b24obm9kZSwgb2JqZWN0R3JvdXAsIGNhbGxiYWNrKQogeworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7P1Byb3RvY29sLkVycm9yfSBlcnJvcgorICAgICAqIEBwYXJhbSB7UnVudGltZUFnZW50LlJl
bW90ZU9iamVjdH0gb2JqZWN0CisgICAgICovCiAgICAgZnVuY3Rpb24gbXljYWxsYmFjayhlcnJv
ciwgb2JqZWN0KQogICAgIHsKICAgICAgICAgaWYgKCFjYWxsYmFjaykKQEAgLTc5LDYgKzk2LDEw
IEBAIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QucmVzb2x2ZU5vZGUgPSBmdW5jdGlvbihub2Rl
LCBvYmplY3RHcm91cCwgY2FsbGJhY2spCiAgICAgRE9NQWdlbnQucmVzb2x2ZU5vZGUobm9kZS5p
ZCwgb2JqZWN0R3JvdXAsIG15Y2FsbGJhY2spOwogfQogCisvKioKKyAqIEBwYXJhbSB7UnVudGlt
ZUFnZW50LlJlbW90ZU9iamVjdH0gcGF5bG9hZAorICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlJl
bW90ZU9iamVjdH0KKyAqLwogV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZCA9
IGZ1bmN0aW9uKHBheWxvYWQpCiB7CiAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIHBheWxvYWQg
PT09ICJvYmplY3QiLCAiUmVtb3RlIG9iamVjdCBwYXlsb2FkIHNob3VsZCBvbmx5IGJlIGFuIG9i
amVjdCIpOwpAQCAtODYsNiArMTA3LDEwIEBAIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJv
bVBheWxvYWQgPSBmdW5jdGlvbihwYXlsb2FkKQogICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9y
LlJlbW90ZU9iamVjdChwYXlsb2FkLm9iamVjdElkLCBwYXlsb2FkLnR5cGUsIHBheWxvYWQuc3Vi
dHlwZSwgcGF5bG9hZC52YWx1ZSwgcGF5bG9hZC5kZXNjcmlwdGlvbik7CiB9CiAKKy8qKgorICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0fSByZW1vdGVPYmplY3QKKyAqIEByZXR1
cm4ge3N0cmluZ30KKyAqLwogV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC50eXBlID0gZnVuY3Rp
b24ocmVtb3RlT2JqZWN0KQogewogICAgIGlmIChyZW1vdGVPYmplY3QgPT09IG51bGwpCkBAIC05
OSw0NyArMTI0LDY3IEBAIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QudHlwZSA9IGZ1bmN0aW9u
KHJlbW90ZU9iamVjdCkKIH0KIAogV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5wcm90b3R5cGUg
PSB7CisgICAgLyoqIEByZXR1cm4ge1J1bnRpbWVBZ2VudC5SZW1vdGVPYmplY3RJZH0gKi8KICAg
ICBnZXQgb2JqZWN0SWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX29iamVjdElkOwog
ICAgIH0sCiAKKyAgICAvKiogQHJldHVybiB7c3RyaW5nfSAqLwogICAgIGdldCB0eXBlKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90eXBlOwogICAgIH0sCiAKKyAgICAvKiogQHJldHVy
biB7c3RyaW5nfHVuZGVmaW5lZH0gKi8KICAgICBnZXQgc3VidHlwZSgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fc3VidHlwZTsKICAgICB9LAogCisgICAgLyoqIEByZXR1cm4ge3N0cmlu
Z3x1bmRlZmluZWR9ICovCiAgICAgZ2V0IGRlc2NyaXB0aW9uKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9kZXNjcmlwdGlvbjsKICAgICB9LAogCisgICAgLyoqIEByZXR1cm4ge2Jvb2xl
YW59ICovCiAgICAgZ2V0IGhhc0NoaWxkcmVuKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9oYXNDaGlsZHJlbjsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtmdW5jdGlv
bihBcnJheS48V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdFByb3BlcnR5Pil9IGNhbGxiYWNrCisg
ICAgICovCiAgICAgZ2V0T3duUHJvcGVydGllczogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewog
ICAgICAgICB0aGlzLl9nZXRQcm9wZXJ0aWVzKHRydWUsIGNhbGxiYWNrKTsKICAgICB9LAogCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihBcnJheS48V2ViSW5zcGVjdG9yLlJlbW90
ZU9iamVjdFByb3BlcnR5Pil9IGNhbGxiYWNrCisgICAgICovCiAgICAgZ2V0QWxsUHJvcGVydGll
czogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewogICAgICAgICB0aGlzLl9nZXRQcm9wZXJ0aWVz
KGZhbHNlLCBjYWxsYmFjayk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7Ym9v
bGVhbn0gb3duUHJvcGVydGllcworICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJyYXkuPFJ1bnRp
bWVBZ2VudC5SZW1vdGVPYmplY3Q+KX0gY2FsbGJhY2sKKyAgICAgKi8KICAgICBfZ2V0UHJvcGVy
dGllczogZnVuY3Rpb24ob3duUHJvcGVydGllcywgY2FsbGJhY2spCiAgICAgewogICAgICAgICBp
ZiAoIXRoaXMuX29iamVjdElkKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhbXSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogQHBhcmFt
IHs/UHJvdG9jb2wuRXJyb3J9IGVycm9yCisgICAgICAgICAqIEBwYXJhbSB7QXJyYXkuPFdlYklu
c3BlY3Rvci5SZW1vdGVPYmplY3RQcm9wZXJ0eT59IHByb3BlcnRpZXMKKyAgICAgICAgICovCiAg
ICAgICAgIGZ1bmN0aW9uIHJlbW90ZU9iamVjdEJpbmRlcihlcnJvciwgcHJvcGVydGllcykKICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKGVycm9yKSB7CkBAIC0xNjIsNiArMjA3LDExIEBAIFdl
Ykluc3BlY3Rvci5SZW1vdGVPYmplY3QucHJvdG90eXBlID0gewogICAgICAgICBSdW50aW1lQWdl
bnQuZ2V0UHJvcGVydGllcyh0aGlzLl9vYmplY3RJZCwgb3duUHJvcGVydGllcywgcmVtb3RlT2Jq
ZWN0QmluZGVyKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5h
bWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9u
KHN0cmluZz0pfSBjYWxsYmFjaworICAgICAqLwogICAgIHNldFByb3BlcnR5VmFsdWU6IGZ1bmN0
aW9uKG5hbWUsIHZhbHVlLCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fb2Jq
ZWN0SWQpIHsKQEAgLTE3MSwxMCArMjIxLDE1IEBAIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3Qu
cHJvdG90eXBlID0gewogCiAgICAgICAgIFJ1bnRpbWVBZ2VudC5ldmFsdWF0ZS5pbnZva2Uoe2V4
cHJlc3Npb246dmFsdWUsIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnM6dHJ1ZX0sIGV2YWx1YXRlZENh
bGxiYWNrLmJpbmQodGhpcykpOwogCisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0gez9Q
cm90b2NvbC5FcnJvcn0gZXJyb3IKKyAgICAgICAgICogQHBhcmFtIHtSdW50aW1lQWdlbnQuUmVt
b3RlT2JqZWN0fSByZXN1bHQKKyAgICAgICAgICogQHBhcmFtIHtib29sZWFuPX0gd2FzVGhyb3du
CisgICAgICAgICAqLwogICAgICAgICBmdW5jdGlvbiBldmFsdWF0ZWRDYWxsYmFjayhlcnJvciwg
cmVzdWx0LCB3YXNUaHJvd24pCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChlcnJvciB8fCB3
YXNUaHJvd24pIHsKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnJvciB8fCByZXN1bHQpOwor
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yIHx8IHJlc3VsdC5kZXNjcmlwdGlvbik7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC0xODksMTUgKzI0NCwy
NCBAQCBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
ICAgICBSdW50aW1lQWdlbnQucmVsZWFzZU9iamVjdChyZXN1bHQuX29iamVjdElkKTsKICAgICAg
ICAgfQogCi0gICAgICAgIGZ1bmN0aW9uIHByb3BlcnR5U2V0Q2FsbGJhY2soZXJyb3IsIHJlc3Vs
dCwgd2FzVGhyb3duKSB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0gez9Qcm90b2Nv
bC5FcnJvcn0gZXJyb3IKKyAgICAgICAgICogQHBhcmFtIHtSdW50aW1lQWdlbnQuUmVtb3RlT2Jq
ZWN0fSByZXN1bHQKKyAgICAgICAgICogQHBhcmFtIHtib29sZWFuPX0gd2FzVGhyb3duCisgICAg
ICAgICAqLworICAgICAgICBmdW5jdGlvbiBwcm9wZXJ0eVNldENhbGxiYWNrKGVycm9yLCByZXN1
bHQsIHdhc1Rocm93bikKKyAgICAgICAgewogICAgICAgICAgICAgaWYgKGVycm9yIHx8IHdhc1Ro
cm93bikgewotICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yIHx8IHJlc3VsdCk7CisgICAg
ICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IgfHwgcmVzdWx0LmRlc2NyaXB0aW9uKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYWxsYmFjaygp
OwogICAgICAgICB9CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24o
RE9NQWdlbnQuTm9kZUlkKX0gY2FsbGJhY2sKKyAgICAgKi8KICAgICBwdXNoTm9kZVRvRnJvbnRl
bmQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX29iamVjdElk
KQpAQCAtMjA2LDYgKzI3MCwxMCBAQCBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIGNhbGxiYWNrKDApOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge3N0cmluZ30gZnVuY3Rpb25EZWNsYXJhdGlvbgorICAgICAqIEBwYXJhbSB7ZnVu
Y3Rpb24oP1dlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QpfSBjYWxsYmFjaworICAgICAqLwogICAg
IGNhbGxGdW5jdGlvbjogZnVuY3Rpb24oZnVuY3Rpb25EZWNsYXJhdGlvbiwgY2FsbGJhY2spCiAg
ICAgewogICAgICAgICBmdW5jdGlvbiBteWNhbGxiYWNrKGVycm9yLCByZXN1bHQsIHdhc1Rocm93
bikKQEAgLTIxNiw2ICsyODQsMTAgQEAgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIFJ1bnRpbWVBZ2VudC5jYWxsRnVuY3Rpb25Pbih0aGlzLl9vYmplY3RJ
ZCwgZnVuY3Rpb25EZWNsYXJhdGlvbi50b1N0cmluZygpLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwg
bXljYWxsYmFjayk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBm
dW5jdGlvbkRlY2xhcmF0aW9uCisgICAgICogQHBhcmFtIHtmdW5jdGlvbigqKX0gY2FsbGJhY2sK
KyAgICAgKi8KICAgICBjYWxsRnVuY3Rpb25KU09OOiBmdW5jdGlvbihmdW5jdGlvbkRlY2xhcmF0
aW9uLCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIG15Y2FsbGJhY2soZXJyb3Is
IHJlc3VsdCwgd2FzVGhyb3duKQpAQCAtMjM0LDYgKzMwNiw4IEBAIFdlYkluc3BlY3Rvci5SZW1v
dGVPYmplY3QucHJvdG90eXBlID0gewogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFt
IHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdH0gdmFs
dWUgCiAgKiBAcGFyYW0ge09iamVjdD19IGRlc2NyaXB0b3IKICAqLwogV2ViSW5zcGVjdG9yLlJl
bW90ZU9iamVjdFByb3BlcnR5ID0gZnVuY3Rpb24obmFtZSwgdmFsdWUsIGRlc2NyaXB0b3IpCkBA
IC0yNDYsNiArMzIwLDExIEBAIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3RQcm9wZXJ0eSA9IGZ1
bmN0aW9uKG5hbWUsIHZhbHVlLCBkZXNjcmlwdG9yKQogICAgICAgICB0aGlzLndhc1Rocm93biA9
IHRydWU7CiB9CiAKKy8qKgorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3Ry
aW5nfSB2YWx1ZQorICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdFByb3BlcnR5
fQorICovCiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0UHJvcGVydHkuZnJvbVByaW1pdGl2ZVZh
bHVlID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpCiB7CiAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0
b3IuUmVtb3RlT2JqZWN0UHJvcGVydHkobmFtZSwgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5m
cm9tUHJpbWl0aXZlVmFsdWUodmFsdWUpKTsKQEAgLTI1OSw2ICszMzgsOCBAQCBXZWJJbnNwZWN0
b3IuUmVtb3RlT2JqZWN0UHJvcGVydHkuZnJvbVByaW1pdGl2ZVZhbHVlID0gZnVuY3Rpb24obmFt
ZSwgdmFsdWUpCiAKIC8qKgogICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVj
dG9yLlJlbW90ZU9iamVjdH0KKyAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZQogICovCiBXZWJJbnNw
ZWN0b3IuTG9jYWxKU09OT2JqZWN0ID0gZnVuY3Rpb24odmFsdWUpCiB7CkBAIC0yNjYsNiArMzQ3
LDkgQEAgV2ViSW5zcGVjdG9yLkxvY2FsSlNPTk9iamVjdCA9IGZ1bmN0aW9uKHZhbHVlKQogfQog
CiBXZWJJbnNwZWN0b3IuTG9jYWxKU09OT2JqZWN0LnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAg
ICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCiAgICAgZ2V0IGRlc2NyaXB0aW9uKCkKICAg
ICB7CiAgICAgICAgIGlmICh0aGlzLl9jYWNoZWREZXNjcmlwdGlvbikKQEAgLTI5Niw2ICszODAs
MTEgQEAgV2ViSW5zcGVjdG9yLkxvY2FsSlNPTk9iamVjdC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9jYWNoZWREZXNjcmlwdGlvbjsKICAgICB9LAogCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtzdHJpbmd9IHByZWZpeAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdWZmaXgK
KyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCiAgICAgX2NvbmNhdGVuYXRlOiBmdW5j
dGlvbihwcmVmaXgsIHN1ZmZpeCwgZm9ybWF0UHJvcGVydHkpCiAgICAgewogICAgICAgICBjb25z
dCBwcmV2aWV3Q2hhcnMgPSAxMDA7CkBAIC0zMTYsMTEgKzQwNSwxNyBAQCBXZWJJbnNwZWN0b3Iu
TG9jYWxKU09OT2JqZWN0LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKICAg
ICB9LAogCisgICAgLyoqCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLwogICAgIGdl
dCB0eXBlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5fdmFsdWU7CiAgICAg
fSwKIAorICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ3x1bmRlZmluZWR9CisgICAgICov
CiAgICAgZ2V0IHN1YnR5cGUoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3ZhbHVlID09PSBu
dWxsKQpAQCAtMzMyLDIxICs0MjcsMzMgQEAgV2ViSW5zcGVjdG9yLkxvY2FsSlNPTk9iamVjdC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgfSwKIAorICAgIC8q
KgorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCiAgICAgZ2V0IGhhc0NoaWxkcmVu
KCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5fdmFsdWUgPT09ICJvYmplY3Qi
ICYmIHRoaXMuX3ZhbHVlICE9PSBudWxsICYmIE9iamVjdC5rZXlzKHRoaXMuX3ZhbHVlKS5sZW5n
dGg7CisgICAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5fdmFsdWUgPT09ICJvYmplY3QiICYmIHRo
aXMuX3ZhbHVlICE9PSBudWxsICYmICEhT2JqZWN0LmtleXModGhpcy5fdmFsdWUpLmxlbmd0aDsK
ICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihBcnJheS48V2ViSW5z
cGVjdG9yLlJlbW90ZU9iamVjdFByb3BlcnR5Pil9IGNhbGxiYWNrCisgICAgICovCiAgICAgZ2V0
T3duUHJvcGVydGllczogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewogICAgICAgICBjYWxsYmFj
ayh0aGlzLl9jaGlsZHJlbigpKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtm
dW5jdGlvbihBcnJheS48V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdFByb3BlcnR5Pil9IGNhbGxi
YWNrCisgICAgICovCiAgICAgZ2V0QWxsUHJvcGVydGllczogZnVuY3Rpb24oY2FsbGJhY2spCiAg
ICAgewogICAgICAgICBjYWxsYmFjayh0aGlzLl9jaGlsZHJlbigpKTsKICAgICB9LAogCisgICAg
LyoqCisgICAgICogQHJldHVybiB7QXJyYXkuPFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3RQcm9w
ZXJ0eT59CisgICAgICovCiAgICAgX2NoaWxkcmVuOiBmdW5jdGlvbigpCiAgICAgewogICAgICAg
ICBpZiAoIXRoaXMuaGFzQ2hpbGRyZW4pCkBAIC0zNTcsMTAgKzQ2NCwxMyBAQCBXZWJJbnNwZWN0
b3IuTG9jYWxKU09OT2JqZWN0LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBuZXcg
V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdFByb3BlcnR5KHByb3BOYW1lLCBuZXcgV2ViSW5zcGVj
dG9yLkxvY2FsSlNPTk9iamVjdCh0aGlzLl92YWx1ZVtwcm9wTmFtZV0pKTsKICAgICAgICAgfQog
ICAgICAgICBpZiAoIXRoaXMuX2NhY2hlZENoaWxkcmVuKQotICAgICAgICAgICAgdGhpcy5fY2Fj
aGVkQ2hpbGRyZW4gPSBPYmplY3Qua2V5cyh0aGlzLl92YWx1ZSkubWFwKGJ1aWxkUHJvcGVydHku
YmluZCh0aGlzKSk7CisgICAgICAgICAgICB0aGlzLl9jYWNoZWRDaGlsZHJlbiA9IE9iamVjdC5r
ZXlzKHRoaXMuX3ZhbHVlIHx8IHt9KS5tYXAoYnVpbGRQcm9wZXJ0eS5iaW5kKHRoaXMpKTsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2NhY2hlZENoaWxkcmVuOwogICAgIH0sCiAKKyAgICAvKioKKyAg
ICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLwogICAgIGlzRXJyb3I6IGZ1bmN0aW9uKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCmluZGV4IDk1NTM0YWE5NTBkYTI4ZmM1ZTU4Mjg5MTgx
MGRmMjI4YTU5MjYzNDIuLjYxZDgxNmEwZTUwODVjNmQzNTMzYWNmZDkyN2M3NTdlMzc5YzgwZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2Uu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcwpA
QCAtOTQsNiArOTQsMTAgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlID0gZnVuY3Rpb24ocmVxdWVz
dElkLCB1cmwsIGZyYW1lSWQsIGxvYWRlcklkKQogICAgIHRoaXMucmVjZWl2ZUhlYWRlcnNFbmQg
PSAwOwogfQogCisvKioKKyAqIEBwYXJhbSB7c3RyaW5nfSB1cmwKKyAqIEByZXR1cm4ge3N0cmlu
Z30KKyAqLwogV2ViSW5zcGVjdG9yLlJlc291cmNlLmRpc3BsYXlOYW1lID0gZnVuY3Rpb24odXJs
KQogewogICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlKCJmYWtlLXRyYW5zaWVu
dC1yZXNvdXJjZSIsIHVybCwgbnVsbCwgbnVsbCkuZGlzcGxheU5hbWU7CkBAIC0xMTAsMTEgKzEx
NCwxOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZSA9IHsKICAgICBXZWJTb2NrZXQ6ICA3
LAogICAgIE90aGVyOiAgICAgIDgsCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0g
dHlwZQorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCiAgICAgaXNUZXh0VHlwZTog
ZnVuY3Rpb24odHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiAodHlwZSA9PT0gV2ViSW5zcGVj
dG9yLlJlc291cmNlLlR5cGUuRG9jdW1lbnQpIHx8ICh0eXBlID09PSBXZWJJbnNwZWN0b3IuUmVz
b3VyY2UuVHlwZS5TdHlsZXNoZWV0KSB8fCAodHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNl
LlR5cGUuU2NyaXB0KSB8fCAodHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuWEhS
KTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHR5cGUKKyAgICAg
KiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCiAgICAgdG9VSVN0cmluZzogZnVuY3Rpb24odHlw
ZSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMTM4LDggKzE1MCwxMiBAQCBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAKLSAgICAv
LyBSZXR1cm5zIGxvY2FsZS1pbmRlcGVuZGVudCBzdHJpbmcgaWRlbnRpZmllciBvZiByZXNvdXJj
ZSB0eXBlIChwcmltYXJpbHkgZm9yIHVzZSBpbiBleHRlbnNpb24gQVBJKS4KLSAgICAvLyBUaGUg
SURzIG5lZWQgdG8gYmUga2VwdCBpbiBzeW5jIHdpdGggd2ViSW5zcGVjdG9yLnJlc291cmVjZXMu
VHlwZXMgb2JqZWN0IGluIEV4dGVuc2lvbkFQSS5qcy4KKyAgICAvKioKKyAgICAgKiBSZXR1cm5z
IGxvY2FsZS1pbmRlcGVuZGVudCBzdHJpbmcgaWRlbnRpZmllciBvZiByZXNvdXJjZSB0eXBlIChw
cmltYXJpbHkgZm9yIHVzZSBpbiBleHRlbnNpb24gQVBJKS4KKyAgICAgKiBUaGUgSURzIG5lZWQg
dG8gYmUga2VwdCBpbiBzeW5jIHdpdGggd2ViSW5zcGVjdG9yLnJlc291cmVjZXMuVHlwZXMgb2Jq
ZWN0IGluIEV4dGVuc2lvbkFQSS5qcy4KKyAgICAgKiBAcGFyYW0ge251bWJlcn0gdHlwZQorICAg
ICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KICAgICB0b1N0cmluZzogZnVuY3Rpb24odHlw
ZSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMTY2LDYgKzE4MiwxMCBAQCBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZSA9IHsKIAogV2ViSW5zcGVjdG9yLlJlc291cmNlLl9k
b21haW5Nb2RlbEJpbmRpbmdzID0gW107CiAKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IHR5cGUK
KyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlRG9tYWluTW9kZWxCaW5kaW5nfSBiaW5k
aW5nCisgKi8KIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5yZWdpc3RlckRvbWFpbk1vZGVsQmluZGlu
ZyA9IGZ1bmN0aW9uKHR5cGUsIGJpbmRpbmcpCiB7CiAgICAgV2ViSW5zcGVjdG9yLlJlc291cmNl
Ll9kb21haW5Nb2RlbEJpbmRpbmdzW3R5cGVdID0gYmluZGluZzsKQEAgLTIxNCw4ICsyMzQsMTIg
QEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnJlc3RvcmVSZXZpc2lvbnMgPSBmdW5jdGlvbigpCiAg
ICAgfQogCiAgICAgLy8gU2NoZWR1bGUgYXN5bmMgc3RvcmFnZS4KLSAgICBzZXRUaW1lb3V0KHBl
cnNpc3QsIDApO30KKyAgICBzZXRUaW1lb3V0KHBlcnNpc3QsIDApOworfQogCisvKioKKyAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlfSByZXNvdXJjZQorICovCiBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UucGVyc2lzdFJldmlzaW9uID0gZnVuY3Rpb24ocmVzb3VyY2UpCiB7CiAgICAgaWYg
KCF3aW5kb3cubG9jYWxTdG9yYWdlKQpAQCAtMjUzLDYgKzI3Nyw5IEBAIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5FdmVudHMgPSB7CiB9CiAKIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUg
PSB7CisgICAgLyoqCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLwogICAgIGdldCB1
cmwoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3VybDsKQEAgLTI3NCw2ICszMDEsOSBA
QCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmxhc3RQ
YXRoQ29tcG9uZW50TG93ZXJDYXNlID0gdGhpcy5sYXN0UGF0aENvbXBvbmVudC50b0xvd2VyQ2Fz
ZSgpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICov
CiAgICAgZ2V0IGRvY3VtZW50VVJMKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kb2N1
bWVudFVSTDsKQEAgLTI4NCw2ICszMTQsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLl9kb2N1bWVudFVSTCA9IHg7CiAgICAgfSwKIAorICAgIC8q
KgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KICAgICBnZXQgZGlzcGxheU5hbWUo
KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2Rpc3BsYXlOYW1lKQpAQCAtMjk4LDYgKzMzMSw5
IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9kaXNwbGF5TmFtZTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHJldHVybiB7c3Ry
aW5nfQorICAgICAqLwogICAgIGdldCBmb2xkZXIoKQogICAgIHsKICAgICAgICAgdmFyIHBhdGgg
PSB0aGlzLnBhdGg7CkBAIC0zMDgsNiArMzQ0LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIGxhc3RTbGFzaEluZGV4ICE9PSAtMSA/IHBhdGgu
c3Vic3RyaW5nKDAsIGxhc3RTbGFzaEluZGV4KSA6ICIiOwogICAgIH0sCiAKKyAgICAvKioKKyAg
ICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCiAgICAgZ2V0IGRpc3BsYXlEb21haW4oKQog
ICAgIHsKICAgICAgICAgLy8gV2ViSW5zcGVjdG9yLkRhdGFiYXNlIGNhbGxzIHRoaXMsIHNvIGRv
bid0IGFjY2VzcyBtb3JlIHRoYW4gdGhpcy5kb21haW4uCkBAIC0zMTYsNiArMzU1LDkgQEAgV2Vi
SW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuICIiOwogICAg
IH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCiAgICAgZ2V0
IHN0YXJ0VGltZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRUaW1lIHx8IC0x
OwpAQCAtMzI2LDYgKzM2OCw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHRoaXMuX3N0YXJ0VGltZSA9IHg7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAq
IEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KICAgICBnZXQgcmVzcG9uc2VSZWNlaXZlZFRpbWUo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3BvbnNlUmVjZWl2ZWRUaW1lIHx8IC0x
OwpAQCAtMzM2LDYgKzM4MSw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHRoaXMuX3Jlc3BvbnNlUmVjZWl2ZWRUaW1lID0geDsKICAgICB9LAogCisgICAg
LyoqCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLwogICAgIGdldCBlbmRUaW1lKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbmRUaW1lIHx8IC0xOwpAQCAtMzU0LDYgKzQw
Miw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAg
ICB9LAogCisgICAgLyoqCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLwogICAgIGdl
dCBkdXJhdGlvbigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZW5kVGltZSA9PT0gLTEgfHwg
dGhpcy5fc3RhcnRUaW1lID09PSAtMSkKQEAgLTM2MSw2ICs0MTIsOSBAQCBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fZW5kVGltZSAtIHRo
aXMuX3N0YXJ0VGltZTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHJldHVybiB7bnVtYmVy
fQorICAgICAqLwogICAgIGdldCBsYXRlbmN5KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9y
ZXNwb25zZVJlY2VpdmVkVGltZSA9PT0gLTEgfHwgdGhpcy5fc3RhcnRUaW1lID09PSAtMSkKQEAg
LTM2OCw2ICs0MjIsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAg
ICAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2VSZWNlaXZlZFRpbWUgLSB0aGlzLl9zdGFydFRpbWU7
CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KICAg
ICBnZXQgcmVjZWl2ZUR1cmF0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9lbmRUaW1l
ID09PSAtMSB8fCB0aGlzLl9yZXNwb25zZVJlY2VpdmVkVGltZSA9PT0gLTEpCkBAIC0zNzUsNiAr
NDMyLDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2VuZFRpbWUgLSB0aGlzLl9yZXNwb25zZVJlY2VpdmVkVGltZTsKICAgICB9LAog
CisgICAgLyoqCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLwogICAgIGdldCByZXNv
dXJjZVNpemUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlU2l6ZSB8fCAw
OwpAQCAtMzg1LDYgKzQ0NSw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHRoaXMuX3Jlc291cmNlU2l6ZSA9IHg7CiAgICAgfSwKIAorICAgIC8qKgorICAg
ICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KICAgICBnZXQgdHJhbnNmZXJTaXplKCkKICAg
ICB7CiAgICAgICAgIGlmICh0aGlzLmNhY2hlZCkKQEAgLTQwNywxMSArNDcwLDE3IEBAIFdlYklu
c3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLnJlc3Bv
bnNlSGVhZGVyc1NpemUgKyBib2R5U2l6ZTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtudW1iZXJ9IHgKKyAgICAgKi8KICAgICBpbmNyZWFzZVRyYW5zZmVyU2l6ZTogZnVuY3Rp
b24oeCkKICAgICB7CiAgICAgICAgIHRoaXMuX3RyYW5zZmVyU2l6ZSA9ICh0aGlzLl90cmFuc2Zl
clNpemUgfHwgMCkgKyB4OwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtib29s
ZWFufQorICAgICAqLwogICAgIGdldCBmaW5pc2hlZCgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fZmluaXNoZWQ7CkBAIC00MzEsNiArNTAwLDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNl
LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0
dXJuIHtib29sZWFufQorICAgICAqLwogICAgIGdldCBmYWlsZWQoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2ZhaWxlZDsKQEAgLTQ0MSw2ICs1MTMsOSBAQCBXZWJJbnNwZWN0b3IuUmVz
b3VyY2UucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9mYWlsZWQgPSB4OwogICAgIH0sCiAK
KyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLwogICAgIGdldCBjYW5j
ZWxlZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY2FuY2VsZWQ7CkBAIC00NTEsNiAr
NTI2LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5fY2FuY2VsZWQgPSB4OwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VDYXRlZ29yeX0KKyAgICAgKi8KICAgICBnZXQgY2F0ZWdvcnkoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NhdGVnb3J5OwpAQCAtNDYxLDYgKzUzOSw5IEBA
IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2NhdGVn
b3J5ID0geDsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAg
ICAgKi8KICAgICBnZXQgY2FjaGVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jYWNo
ZWQ7CkBAIC00NzMsNiArNTU0LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl90aW1pbmc7CiAgICAgfSwKIAorICAgIC8qKgor
ICAgICAqIEByZXR1cm4ge05ldHdvcmtBZ2VudC5SZXNvdXJjZVRpbWluZ30KKyAgICAgKi8KICAg
ICBnZXQgdGltaW5nKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90aW1pbmc7CkBAIC00
OTEsNiArNTc1LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgfQogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICov
CiAgICAgZ2V0IG1pbWVUeXBlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9taW1lVHlw
ZTsKQEAgLTUwMSw2ICs1ODgsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLl9taW1lVHlwZSA9IHg7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAq
IEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KICAgICBnZXQgdHlwZSgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fdHlwZTsKQEAgLTU0Miw2ICs2MzIsOSBAQCBXZWJJbnNwZWN0b3IuUmVz
b3VyY2UucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwKIAorICAgIC8qKgorICAgICAq
IEByZXR1cm4ge1dlYkluc3BlY3Rvci5SZXNvdXJjZXx1bmRlZmluZWR9CisgICAgICovCiAgICAg
Z2V0IHJlZGlyZWN0U291cmNlKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLnJlZGlyZWN0cyAm
JiB0aGlzLnJlZGlyZWN0cy5sZW5ndGggPiAwKQpAQCAtNTU0LDYgKzY0Nyw5IEBAIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3JlZGlyZWN0U291cmNl
ID0geDsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHJldHVybiB7T2JqZWN0fQorICAgICAq
LwogICAgIGdldCByZXF1ZXN0SGVhZGVycygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
cmVxdWVzdEhlYWRlcnMgfHwge307CkBAIC01NjgsNiArNjY0LDkgQEAgV2ViSW5zcGVjdG9yLlJl
c291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoInJlcXVlc3RIZWFkZXJzIGNoYW5nZWQiKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICog
QHJldHVybiB7c3RyaW5nfQorICAgICAqLwogICAgIGdldCByZXF1ZXN0SGVhZGVyc1RleHQoKQog
ICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3RIZWFkZXJzVGV4dCA9PT0gdW5kZWZpbmVk
KSB7CkBAIC01ODUsMTEgKzY4NCwxNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBl
ID0gewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygicmVxdWVzdEhlYWRl
cnMgY2hhbmdlZCIpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9
CisgICAgICovCiAgICAgZ2V0IHJlcXVlc3RIZWFkZXJzU2l6ZSgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5yZXF1ZXN0SGVhZGVyc1RleHQubGVuZ3RoOwogICAgIH0sCiAKKyAgICAvKioK
KyAgICAgKiBAcmV0dXJuIHtBcnJheS48T2JqZWN0Pn0KKyAgICAgKi8KICAgICBnZXQgc29ydGVk
UmVxdWVzdEhlYWRlcnMoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NvcnRlZFJlcXVlc3RI
ZWFkZXJzICE9PSB1bmRlZmluZWQpCkBAIC02MDMsMTEgKzcwOCwxOCBAQCBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fc29ydGVkUmVxdWVz
dEhlYWRlcnM7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBoZWFk
ZXJOYW1lCisgICAgICogQHJldHVybiB7c3RyaW5nfHVuZGVmaW5lZH0KKyAgICAgKi8KICAgICBy
ZXF1ZXN0SGVhZGVyVmFsdWU6IGZ1bmN0aW9uKGhlYWRlck5hbWUpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5faGVhZGVyVmFsdWUodGhpcy5yZXF1ZXN0SGVhZGVycywgaGVhZGVyTmFtZSk7
CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEByZXR1cm4ge0FycmF5LjxXZWJJbnNwZWN0b3Iu
Q29va2llPn0KKyAgICAgKi8KICAgICBnZXQgcmVxdWVzdENvb2tpZXMoKQogICAgIHsKICAgICAg
ICAgaWYgKCF0aGlzLl9yZXF1ZXN0Q29va2llcykKQEAgLTYxNSw2ICs3MjcsOSBAQCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWVz
dENvb2tpZXM7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAg
ICAgKi8KICAgICBnZXQgcmVxdWVzdEZvcm1EYXRhKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9yZXF1ZXN0Rm9ybURhdGE7CkBAIC02MjYsNiArNzQxLDkgQEAgV2ViSW5zcGVjdG9yLlJl
c291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgZGVsZXRlIHRoaXMuX3BhcnNlZEZvcm1QYXJh
bWV0ZXJzOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd8dW5kZWZp
bmVkfQorICAgICAqLwogICAgIGdldCByZXF1ZXN0SHR0cFZlcnNpb24oKQogICAgIHsKICAgICAg
ICAgdmFyIGZpcnN0TGluZSA9IHRoaXMucmVxdWVzdEhlYWRlcnNUZXh0LnNwbGl0KC9cclxuLylb
MF07CkBAIC02MzMsNiArNzUxLDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9
IHsKICAgICAgICAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMV0gOiB1bmRlZmluZWQ7CiAgICAgfSwK
IAorICAgIC8qKgorICAgICAqIEByZXR1cm4ge09iamVjdH0KKyAgICAgKi8KICAgICBnZXQgcmVz
cG9uc2VIZWFkZXJzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXNwb25zZUhlYWRl
cnMgfHwge307CkBAIC02NDcsNiArNzY4LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoInJlc3BvbnNl
SGVhZGVycyBjaGFuZ2VkIik7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0
cmluZ30KKyAgICAgKi8KICAgICBnZXQgcmVzcG9uc2VIZWFkZXJzVGV4dCgpCiAgICAgewogICAg
ICAgICBpZiAodGhpcy5fcmVzcG9uc2VIZWFkZXJzVGV4dCA9PT0gdW5kZWZpbmVkKSB7CkBAIC02
NjQsMTEgKzc4OCwxNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygicmVzcG9uc2VIZWFkZXJzIGNoYW5n
ZWQiKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAq
LwogICAgIGdldCByZXNwb25zZUhlYWRlcnNTaXplKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLnJlc3BvbnNlSGVhZGVyc1RleHQubGVuZ3RoOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAg
KiBAcmV0dXJuIHtBcnJheS48T2JqZWN0Pn0KKyAgICAgKi8KICAgICBnZXQgc29ydGVkUmVzcG9u
c2VIZWFkZXJzKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zb3J0ZWRSZXNwb25zZUhlYWRl
cnMgIT09IHVuZGVmaW5lZCkKQEAgLTY4MiwxMSArODEyLDE4IEBAIFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zb3J0ZWRSZXNwb25zZUhl
YWRlcnM7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBoZWFkZXJO
YW1lCisgICAgICogQHJldHVybiB7c3RyaW5nfHVuZGVmaW5lZH0KKyAgICAgKi8KICAgICByZXNw
b25zZUhlYWRlclZhbHVlOiBmdW5jdGlvbihoZWFkZXJOYW1lKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2hlYWRlclZhbHVlKHRoaXMucmVzcG9uc2VIZWFkZXJzLCBoZWFkZXJOYW1lKTsK
ICAgICB9LAogCisgICAgLyoqCisgICAgICogQHJldHVybiB7QXJyYXkuPFdlYkluc3BlY3Rvci5D
b29raWU+fQorICAgICAqLwogICAgIGdldCByZXNwb25zZUNvb2tpZXMoKQogICAgIHsKICAgICAg
ICAgaWYgKCF0aGlzLl9yZXNwb25zZUNvb2tpZXMpCkBAIC02OTQsMzcgKzgzMSw1MCBAQCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fcmVz
cG9uc2VDb29raWVzOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHs/QXJyYXku
PE9iamVjdD59CisgICAgICovCiAgICAgZ2V0IHF1ZXJ5UGFyYW1ldGVycygpCiAgICAgewogICAg
ICAgICBpZiAodGhpcy5fcGFyc2VkUXVlcnlQYXJhbWV0ZXJzKQogICAgICAgICAgICAgcmV0dXJu
IHRoaXMuX3BhcnNlZFF1ZXJ5UGFyYW1ldGVyczsKICAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nID0g
dGhpcy51cmwuc3BsaXQoIj8iLCAyKVsxXTsKICAgICAgICAgaWYgKCFxdWVyeVN0cmluZykKLSAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICBxdWVy
eVN0cmluZyA9IHF1ZXJ5U3RyaW5nLnNwbGl0KCIjIiwgMilbMF07CiAgICAgICAgIHRoaXMuX3Bh
cnNlZFF1ZXJ5UGFyYW1ldGVycyA9IHRoaXMuX3BhcnNlUGFyYW1ldGVycyhxdWVyeVN0cmluZyk7
CiAgICAgICAgIHJldHVybiB0aGlzLl9wYXJzZWRRdWVyeVBhcmFtZXRlcnM7CiAgICAgfSwKIAor
ICAgIC8qKgorICAgICAqIEByZXR1cm4gez9BcnJheS48T2JqZWN0Pn0KKyAgICAgKi8KICAgICBn
ZXQgZm9ybVBhcmFtZXRlcnMoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3BhcnNlZEZvcm1Q
YXJhbWV0ZXJzKQogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3BhcnNlZEZvcm1QYXJhbWV0ZXJz
OwogICAgICAgICBpZiAoIXRoaXMucmVxdWVzdEZvcm1EYXRhKQotICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIHZhciByZXF1ZXN0Q29udGVudFR5
cGUgPSB0aGlzLnJlcXVlc3RDb250ZW50VHlwZSgpOwogICAgICAgICBpZiAoIXJlcXVlc3RDb250
ZW50VHlwZSB8fCAhcmVxdWVzdENvbnRlbnRUeXBlLm1hdGNoKC9eYXBwbGljYXRpb25cL3gtd3d3
LWZvcm0tdXJsZW5jb2RlZFxzKig7LiopPyQvaSkpCi0gICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgdGhpcy5fcGFyc2VkRm9ybVBhcmFtZXRlcnMg
PSB0aGlzLl9wYXJzZVBhcmFtZXRlcnModGhpcy5yZXF1ZXN0Rm9ybURhdGEpOwogICAgICAgICBy
ZXR1cm4gdGhpcy5fcGFyc2VkRm9ybVBhcmFtZXRlcnM7CiAgICAgfSwKIAorICAgIC8qKgorICAg
ICAqIEByZXR1cm4ge3N0cmluZ3x1bmRlZmluZWR9CisgICAgICovCiAgICAgZ2V0IHJlc3BvbnNl
SHR0cFZlcnNpb24oKQogICAgIHsKICAgICAgICAgdmFyIG1hdGNoID0gdGhpcy5yZXNwb25zZUhl
YWRlcnNUZXh0Lm1hdGNoKC9eKEhUVFBcL1xkK1wuXGQrKS8pOwogICAgICAgICByZXR1cm4gbWF0
Y2ggPyBtYXRjaFsxXSA6IHVuZGVmaW5lZDsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtzdHJpbmd9IHF1ZXJ5U3RyaW5nCisgICAgICogQHJldHVybiB7QXJyYXkuPE9iamVjdD59
CisgICAgICovCiAgICAgX3BhcnNlUGFyYW1ldGVyczogZnVuY3Rpb24ocXVlcnlTdHJpbmcpCiAg
ICAgewogICAgICAgICBmdW5jdGlvbiBwYXJzZU5hbWVWYWx1ZShwYWlyKQpAQCAtNzQyLDYgKzg5
MiwxMSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICByZXR1
cm4gcXVlcnlTdHJpbmcuc3BsaXQoIiYiKS5tYXAocGFyc2VOYW1lVmFsdWUpOwogICAgIH0sCiAK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge09iamVjdH0gaGVhZGVycworICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBoZWFkZXJOYW1lCisgICAgICogQHJldHVybiB7c3RyaW5nfHVuZGVmaW5lZH0KKyAg
ICAgKi8KICAgICBfaGVhZGVyVmFsdWU6IGZ1bmN0aW9uKGhlYWRlcnMsIGhlYWRlck5hbWUpCiAg
ICAgewogICAgICAgICBoZWFkZXJOYW1lID0gaGVhZGVyTmFtZS50b0xvd2VyQ2FzZSgpOwpAQCAt
NzUxLDExICs5MDYsMTcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgfQogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtBcnJheS48V2ViSW5z
cGVjdG9yLkNvbnNvbGVNZXNzYWdlPn0KKyAgICAgKi8KICAgICBnZXQgbWVzc2FnZXMoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX21lc3NhZ2VzIHx8IFtdOwogICAgIH0sCiAKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZX0gbXNnCisgICAg
ICovCiAgICAgYWRkTWVzc2FnZTogZnVuY3Rpb24obXNnKQogICAgIHsKICAgICAgICAgaWYgKCFt
c2cuaXNFcnJvck9yV2FybmluZygpIHx8ICFtc2cubWVzc2FnZSkKQEAgLTc2Nyw2ICs5MjgsOSBA
QCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZlbnRzLk1lc3NhZ2VB
ZGRlZCwgbXNnKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHJldHVybiB7bnVtYmVyfQor
ICAgICAqLwogICAgIGdldCBlcnJvcnMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Vy
cm9ycyB8fCAwOwpAQCAtNzc3LDYgKzk0MSw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2Vycm9ycyA9IHg7CiAgICAgfSwKIAorICAgIC8qKgor
ICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KICAgICBnZXQgd2FybmluZ3MoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3dhcm5pbmdzIHx8IDA7CkBAIC03OTUsMjEgKzk2Miwz
MyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZlbnRzLk1lc3Nh
Z2VzQ2xlYXJlZCk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30K
KyAgICAgKi8KICAgICBnZXQgY29udGVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
Y29udGVudDsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAg
ICAqLwogICAgIGdldCBjb250ZW50RW5jb2RlZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fY29udGVudEVuY29kZWQ7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEByZXR1cm4ge251
bWJlcn0KKyAgICAgKi8KICAgICBnZXQgY29udGVudFRpbWVzdGFtcCgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fY29udGVudFRpbWVzdGFtcDsKICAgICB9LAogCisgICAgLyoqCisgICAg
ICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KICAgICBpc0VkaXRhYmxlOiBmdW5jdGlvbigp
CiAgICAgewogICAgICAgICBpZiAodGhpcy5fYWN0dWFsUmVzb3VyY2UpCkBAIC04MTgsNiArOTk3
LDExIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVy
biBiaW5kaW5nICYmIGJpbmRpbmcuY2FuU2V0Q29udGVudCh0aGlzKTsKICAgICB9LAogCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5ld0NvbnRlbnQKKyAgICAgKiBAcGFyYW0ge2Jv
b2xlYW59IG1ham9yQ2hhbmdlCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihzdHJpbmc9KX0gY2Fs
bGJhY2sKKyAgICAgKi8KICAgICBzZXRDb250ZW50OiBmdW5jdGlvbihuZXdDb250ZW50LCBtYWpv
ckNoYW5nZSwgY2FsbGJhY2spCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuaXNFZGl0YWJsZSgp
KSB7CkBAIC04NTMsNiArMTAzNyw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wZXJzaXN0UmV2aXNpb24odGhpcyk7
CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP3N0cmluZywgP3N0
cmluZyl9IGNhbGxiYWNrCisgICAgICovCiAgICAgcmVxdWVzdENvbnRlbnQ6IGZ1bmN0aW9uKGNh
bGxiYWNrKQogICAgIHsKICAgICAgICAgLy8gV2UgZG8gbm90IHN1cHBvcnQgY29udGVudCByZXRy
aWV2YWwgZm9yIFdlYlNvY2tldHMgYXQgdGhlIG1vbWVudC4KQEAgLTg3MSw4ICsxMDU4LDE4IEBA
IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9p
bm5lclJlcXVlc3RDb250ZW50KCk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBxdWVyeQorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2FzZVNlbnNpdGl2ZQorICAg
ICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNSZWdleAorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJy
YXkuPFBhZ2VBZ2VudC5TZWFyY2hNYXRjaD4pfSBjYWxsYmFjaworICAgICAqLwogICAgIHNlYXJj
aEluQ29udGVudDogZnVuY3Rpb24ocXVlcnksIGNhc2VTZW5zaXRpdmUsIGlzUmVnZXgsIGNhbGxi
YWNrKQogICAgIHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSB7P1Byb3RvY29sLkVy
cm9yfSBlcnJvcgorICAgICAgICAgKiBAcGFyYW0ge0FycmF5LjxQYWdlQWdlbnQuU2VhcmNoTWF0
Y2g+fSBzZWFyY2hNYXRjaGVzCisgICAgICAgICAqLwogICAgICAgICBmdW5jdGlvbiBjYWxsYmFj
a1dyYXBwZXIoZXJyb3IsIHNlYXJjaE1hdGNoZXMpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNh
bGxiYWNrKHNlYXJjaE1hdGNoZXMgfHwgW10pOwpAQCAtODg0LDYgKzEwODEsOSBAQCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICAgICAgY2FsbGJhY2soW10pOwog
ICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IGltYWdlCisgICAgICov
CiAgICAgcG9wdWxhdGVJbWFnZVNvdXJjZTogZnVuY3Rpb24oaW1hZ2UpCiAgICAgewogICAgICAg
ICBmdW5jdGlvbiBvblJlc291cmNlQ29udGVudCgpCkBAIC04OTQsMjYgKzEwOTQsNDEgQEAgV2Vi
SW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5yZXF1ZXN0Q29u
dGVudChvblJlc291cmNlQ29udGVudC5iaW5kKHRoaXMpKTsKICAgICB9LAogCisgICAgLyoqCisg
ICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KICAgICBpc0h0dHBGYW1pbHk6IGZ1bmN0
aW9uKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLnVybC5tYXRjaCgvXmh0dHBzPzovaSk7
CisgICAgICAgIHJldHVybiAhIXRoaXMudXJsLm1hdGNoKC9eaHR0cHM/Oi9pKTsKICAgICB9LAog
CisgICAgLyoqCisgICAgICogQHJldHVybiB7c3RyaW5nfHVuZGVmaW5lZH0KKyAgICAgKi8KICAg
ICByZXF1ZXN0Q29udGVudFR5cGU6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLnJlcXVlc3RIZWFkZXJWYWx1ZSgiQ29udGVudC1UeXBlIik7CiAgICAgfSwKIAorICAgIC8q
KgorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCiAgICAgaXNQaW5nUmVxdWVzdDog
ZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuICJ0ZXh0L3BpbmciID09PSB0aGlzLnJl
cXVlc3RDb250ZW50VHlwZSgpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHti
b29sZWFufQorICAgICAqLwogICAgIGhhc0Vycm9yU3RhdHVzQ29kZTogZnVuY3Rpb24oKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuc3RhdHVzQ29kZSA+PSA0MDA7CiAgICAgfSwKIAorICAg
IC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KICAgICBfY29udGVudFVSTDog
ZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgY29uc3QgbWF4RGF0YVVybFNpemUgPSAxMDI0ICog
MTAyNDsKQEAgLTk0OSw2ICsxMTY0LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlw
ZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKIAogLyoqCiAgKiBA
Y29uc3RydWN0b3IKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlfSByZXNvdXJjZQor
ICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnQKKyAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lc3RhbXAK
ICAqLwogV2ViSW5zcGVjdG9yLlJlc291cmNlUmV2aXNpb24gPSBmdW5jdGlvbihyZXNvdXJjZSwg
Y29udGVudCwgdGltZXN0YW1wKQogewpAQCAtOTU4LDE2ICsxMTc2LDI1IEBAIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZVJldmlzaW9uID0gZnVuY3Rpb24ocmVzb3VyY2UsIGNvbnRlbnQsIHRpbWVzdGFt
cCkKIH0KIAogV2ViSW5zcGVjdG9yLlJlc291cmNlUmV2aXNpb24ucHJvdG90eXBlID0geworICAg
IC8qKgorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5SZXNvdXJjZX0KKyAgICAgKi8KICAg
ICBnZXQgcmVzb3VyY2UoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlOwog
ICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCiAgICAg
Z2V0IHRpbWVzdGFtcCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdGltZXN0YW1wOwog
ICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCiAgICAg
Z2V0IGNvbnRlbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnQ7CkBAIC05
ODIsNiArMTIwOSw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVJldmlzaW9uLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy5yZXF1ZXN0Q29udGVudChyZXZlcnQuYmluZCh0aGlzKSk7CiAgICAg
fSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oc3RyaW5nKX0gY2FsbGJhY2sK
KyAgICAgKi8KICAgICByZXF1ZXN0Q29udGVudDogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewog
ICAgICAgICBpZiAodHlwZW9mIHRoaXMuX2NvbnRlbnQgPT09ICJzdHJpbmciKSB7CkBAIC0xMDEw
LDcgKzEyNDAsMTggQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlUmV2aXNpb24ucHJvdG90eXBlID0g
ewogICogQGludGVyZmFjZQogICovCiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VEb21haW5Nb2RlbEJp
bmRpbmcgPSBmdW5jdGlvbigpIHsgfQorCiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VEb21haW5Nb2Rl
bEJpbmRpbmcucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59
CisgICAgICovCiAgICAgY2FuU2V0Q29udGVudDogZnVuY3Rpb24oKSB7IHJldHVybiB0cnVlOyB9
LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2V9IHJlc291
cmNlCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnQKKyAgICAgKiBAcGFyYW0ge2Jvb2xl
YW59IG1ham9yQ2hhbmdlCisgICAgICogQHBhcmFtIHtmdW5jdGlvbig/c3RyaW5nKX0gY2FsbGJh
Y2sKKyAgICAgKi8KICAgICBzZXRDb250ZW50OiBmdW5jdGlvbihyZXNvdXJjZSwgY29udGVudCwg
bWFqb3JDaGFuZ2UsIGNhbGxiYWNrKSB7IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VDYXRlZ29yeS5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VDYXRlZ29yeS5qcwppbmRleCBjNDc3Njg3YjQ0
MmU2ZWFiMjg3OGZhZWYxMWU3NDBlMGE3MTkwNDBiLi4xMTE4MDczYTQ3ZjBiZGZmNTFjZmQ0ZDg0
OWNkY2M2YjMwZGQ2MDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlQ2F0ZWdvcnkuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9SZXNvdXJjZUNhdGVnb3J5LmpzCkBAIC0zNywxMSArMzcsMTcgQEAgV2ViSW5z
cGVjdG9yLlJlc291cmNlQ2F0ZWdvcnkgPSBmdW5jdGlvbihuYW1lLCB0aXRsZSwgY29sb3IpCiB9
CiAKIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNhdGVnb3J5LnByb3RvdHlwZSA9IHsKKyAgICAvKioK
KyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCiAgICAgdG9TdHJpbmc6IGZ1bmN0aW9u
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLnRpdGxlOwogICAgIH0sCiAKKyAgICAvKioK
KyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCiAgICAgZ2V0IHRpdGxlKCkKICAgICB7
CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcodGhpcy5fdGl0bGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVV0aWxz
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVV0aWxzLmpz
CmluZGV4IDVlNmEyYjYwNjc2MDg2MjAxOWY2YzU4YjM1MjFhZDAwZDc5YzQwY2YuLmMwYTMxYmY1
MjVmZDNmZGVlM2Y4YjZiMThkMDhhYmJiNDM0MGFkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VVdGlscy5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVXRpbHMuanMKQEAgLTIwNyw2ICsyMDcs
NyBAQCBXZWJJbnNwZWN0b3IubGlua2lmeVJlc291cmNlQXNOb2RlID0gZnVuY3Rpb24odXJsLCBs
aW5lTnVtYmVyLCBjbGFzc2VzLCB0b29sdGlwVAogLyoqCiAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5SZXNvdXJjZX0gcmVxdWVzdAogICogQHBhcmFtIHtzdHJpbmc9fSBjbGFzc2VzCisgKiBAcmV0
dXJuIHtFbGVtZW50fQogICovCiBXZWJJbnNwZWN0b3IubGlua2lmeVJlcXVlc3RBc05vZGUgPSBm
dW5jdGlvbihyZXF1ZXN0LCBjbGFzc2VzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TY29wZUNoYWluU2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Njb3BlQ2hhaW5TaWRlYmFyUGFuZS5qcwppbmRleCA4
YzQwNWI5ZTkwMGE4MDQ2YTU1ZTc0YzYxY2M5OWVjOTk5YjBlZTc2Li5hMzU5ZjM0ZWFlZDZjOTg1
ODU1ZTIzZDk5OTUzZGI5ODljZjhmZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1Njb3BlQ2hhaW5TaWRlYmFyUGFuZS5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Njb3BlQ2hhaW5TaWRlYmFyUGFuZS5qcwpAQCAtODMs
NyArODMsOCBAQCBXZWJJbnNwZWN0b3IuU2NvcGVDaGFpblNpZGViYXJQYW5lLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBleGNlcHRpb24gPSBkZXRhaWxzLnJlYXNv
biA9PT0gV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuQnJlYWtSZWFzb24uRXhjZXB0aW9uID8g
ZGV0YWlscy5hdXhEYXRhIDogMDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleGNlcHRp
b24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYVByb3BlcnRpZXMgPSBleHRy
YVByb3BlcnRpZXMgfHwgW107Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFQcm9w
ZXJ0aWVzLnB1c2gobmV3IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3RQcm9wZXJ0eSgiPGV4Y2Vw
dGlvbj4iLCBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKGV4Y2VwdGlvbikp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZXhjZXB0aW9uT2JqZWN0ID0gLyoq
IEB0eXBlIHtSdW50aW1lQWdlbnQuUmVtb3RlT2JqZWN0fSAqLyBleGNlcHRpb247CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXh0cmFQcm9wZXJ0aWVzLnB1c2gobmV3IFdlYkluc3BlY3Rv
ci5SZW1vdGVPYmplY3RQcm9wZXJ0eSgiPGV4Y2VwdGlvbj4iLCBXZWJJbnNwZWN0b3IuUmVtb3Rl
T2JqZWN0LmZyb21QYXlsb2FkKGV4Y2VwdGlvbk9iamVjdCkpKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHQuanMKaW5kZXgg
NzEyYTEzZmY0NDAxMzFmOWJmOTE3MzBjZjM0YjAzZWU4MTYzYTFmNi4uNzkwYzliMDljZjE4OTMw
ZDU0ZDY1ZGY2Yzk0NDA5YWRjZjM1NGY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TY3JpcHQuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TY3JpcHQuanMKQEAgLTI1LDcgKzI1LDcgQEAKIAogLyoqCiAgKiBAY29uc3Ry
dWN0b3IKLSAqIEBwYXJhbSB7P3N0cmluZ30gc2NyaXB0SWQKKyAqIEBwYXJhbSB7c3RyaW5nfSBz
Y3JpcHRJZAogICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZVVSTAogICogQHBhcmFtIHtudW1iZXJ9
IHN0YXJ0TGluZQogICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0Q29sdW1uCkBAIC0xMzAsOCArMTMw
LDExIEBAIFdlYkluc3BlY3Rvci5TY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICAgICAgY2Fs
bGJhY2soIlNjcmlwdCBmYWlsZWQgdG8gcGFyc2UiKTsKICAgICB9LAogCisgICAgLyoqCisgICAg
ICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KICAgICBpc0lubGluZVNjcmlwdDogZnVuY3Rp
b24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc291cmNlVVJMICYmIHRoaXMubGluZU9m
ZnNldCAhPT0gMCAmJiB0aGlzLmNvbHVtbk9mZnNldCAhPT0gMDsKKyAgICAgICAgcmV0dXJuICEh
dGhpcy5zb3VyY2VVUkwgJiYgdGhpcy5saW5lT2Zmc2V0ICE9PSAwICYmIHRoaXMuY29sdW1uT2Zm
c2V0ICE9PSAwOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU2NyaXB0Rm9ybWF0dGVyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TY3JpcHRGb3JtYXR0ZXIuanMKaW5kZXggYjA5OTcwY2FlNGZlZGZhY2Q0ZmQw
NmNlZjdkOTQ1YTQ5ZTcxNDBjNC4uMjllNjdiN2FmZTkyOWFkZmQzMTg1MjU1NDRlMTQ0ZWJmNzY2
OGVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3Jp
cHRGb3JtYXR0ZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9T
Y3JpcHRGb3JtYXR0ZXIuanMKQEAgLTM2LDI0ICszNiwzOCBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0
Rm9ybWF0dGVyID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX3Rhc2tzID0gW107CiB9CiAKKy8qKgor
ICogQHBhcmFtIHtBcnJheS48bnVtYmVyPn0gbGluZUVuZGluZ3MKKyAqIEBwYXJhbSB7RGVidWdn
ZXJBZ2VudC5Mb2NhdGlvbn0gbG9jYXRpb24KKyAqIEByZXR1cm4ge251bWJlcn0KKyAqLwogV2Vi
SW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRlci5sb2NhdGlvblRvUG9zaXRpb24gPSBmdW5jdGlvbihs
aW5lRW5kaW5ncywgbG9jYXRpb24pCiB7CiAgICAgdmFyIHBvc2l0aW9uID0gbG9jYXRpb24ubGlu
ZU51bWJlciA/IGxpbmVFbmRpbmdzW2xvY2F0aW9uLmxpbmVOdW1iZXIgLSAxXSArIDEgOiAwOwog
ICAgIHJldHVybiBwb3NpdGlvbiArIGxvY2F0aW9uLmNvbHVtbk51bWJlcjsKIH0KIAorLyoqCisg
KiBAcGFyYW0ge0FycmF5LjxudW1iZXI+fSBsaW5lRW5kaW5ncworICogQHBhcmFtIHtudW1iZXJ9
IHBvc2l0aW9uCisgKiBAcmV0dXJuIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufQorICovCiBXZWJJ
bnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyLnBvc2l0aW9uVG9Mb2NhdGlvbiA9IGZ1bmN0aW9uKGxp
bmVFbmRpbmdzLCBwb3NpdGlvbikKIHsKLSAgICB2YXIgbG9jYXRpb24gPSB7fTsKLSAgICBsb2Nh
dGlvbi5saW5lTnVtYmVyID0gbGluZUVuZGluZ3MudXBwZXJCb3VuZChwb3NpdGlvbiAtIDEpOwot
ICAgIGlmICghbG9jYXRpb24ubGluZU51bWJlcikKLSAgICAgICAgbG9jYXRpb24uY29sdW1uTnVt
YmVyID0gcG9zaXRpb247CisgICAgdmFyIGxpbmVOdW1iZXIgPSBsaW5lRW5kaW5ncy51cHBlckJv
dW5kKHBvc2l0aW9uIC0gMSk7CisgICAgaWYgKCFsaW5lTnVtYmVyKQorICAgICAgICB2YXIgY29s
dW1uTnVtYmVyID0gcG9zaXRpb247CiAgICAgZWxzZQotICAgICAgICBsb2NhdGlvbi5jb2x1bW5O
dW1iZXIgPSBwb3NpdGlvbiAtIGxpbmVFbmRpbmdzW2xvY2F0aW9uLmxpbmVOdW1iZXIgLSAxXSAt
IDE7Ci0gICAgcmV0dXJuIGxvY2F0aW9uOworICAgICAgICB2YXIgY29sdW1uTnVtYmVyID0gcG9z
aXRpb24gLSBsaW5lRW5kaW5nc1tsaW5lTnVtYmVyIC0gMV0gLSAxOworICAgIHJldHVybiBuZXcg
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb24obGluZU51bWJlciwgY29sdW1uTnVt
YmVyKTsKIH0KIAogV2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRlci5wcm90b3R5cGUgPSB7Cisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG1pbWVUeXBlCisgICAgICogQHBhcmFtIHtz
dHJpbmd9IGNvbnRlbnQKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKHN0cmluZywgV2ViSW5zcGVj
dG9yLkZvcm1hdHRlZFNvdXJjZU1hcHBpbmcpfSBjYWxsYmFjaworICAgICAqLwogICAgIGZvcm1h
dENvbnRlbnQ6IGZ1bmN0aW9uKG1pbWVUeXBlLCBjb250ZW50LCBjYWxsYmFjaykKICAgICB7CiAg
ICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UoL1xyXG4/fFtcblx1MjAyOFx1MjAyOV0v
ZywgIlxuIikucmVwbGFjZSgvXlx1RkVGRi8sICcnKTsKQEAgLTYzLDYgKzc3LDkgQEAgV2ViSW5z
cGVjdG9yLlNjcmlwdEZvcm1hdHRlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3dvcmtl
ci5wb3N0TWVzc2FnZSh7IG1ldGhvZDogbWV0aG9kLCBwYXJhbXM6IHBhcmFtZXRlcnMgfSk7CiAg
ICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVu
dAorICAgICAqLwogICAgIF9kaWRGb3JtYXRDb250ZW50OiBmdW5jdGlvbihldmVudCkKICAgICB7
CiAgICAgICAgIHZhciB0YXNrID0gdGhpcy5fdGFza3Muc2hpZnQoKTsKQEAgLTczLDYgKzkwLDkg
QEAgV2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRh
c2suY2FsbGJhY2soZm9ybWF0dGVkQ29udGVudCwgc291cmNlTWFwcGluZyk7CiAgICAgfSwKIAor
ICAgIC8qKgorICAgICAqIEByZXR1cm4ge1dvcmtlcn0KKyAgICAgKi8KICAgICBnZXQgX3dvcmtl
cigpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2NhY2hlZFdvcmtlcikgewpAQCAtOTQsNiAr
MTE0LDggQEAgV2ViSW5zcGVjdG9yLkZvcm1hdHRlck1hcHBpbmdQYXlsb2FkID0gZnVuY3Rpb24o
KQogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtBcnJheS48bnVtYmVyPn0gb3Jp
Z2luYWxMaW5lRW5kaW5ncworICogQHBhcmFtIHtBcnJheS48bnVtYmVyPn0gZm9ybWF0dGVkTGlu
ZUVuZGluZ3MKICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZvcm1hdHRlck1hcHBpbmdQYXlsb2Fk
fSBtYXBwaW5nCiAgKi8KIFdlYkluc3BlY3Rvci5Gb3JtYXR0ZWRTb3VyY2VNYXBwaW5nID0gZnVu
Y3Rpb24ob3JpZ2luYWxMaW5lRW5kaW5ncywgZm9ybWF0dGVkTGluZUVuZGluZ3MsIG1hcHBpbmcp
CkBAIC0xMDQsNiArMTI2LDEwIEBAIFdlYkluc3BlY3Rvci5Gb3JtYXR0ZWRTb3VyY2VNYXBwaW5n
ID0gZnVuY3Rpb24ob3JpZ2luYWxMaW5lRW5kaW5ncywgZm9ybWF0dGVkTGluCiB9CiAKIFdlYklu
c3BlY3Rvci5Gb3JtYXR0ZWRTb3VyY2VNYXBwaW5nLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259IGxvY2F0aW9uCisgICAgICogQHJl
dHVybiB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0KKyAgICAgKi8KICAgICBvcmlnaW5hbFRvRm9y
bWF0dGVkOiBmdW5jdGlvbihsb2NhdGlvbikKICAgICB7CiAgICAgICAgIHZhciBvcmlnaW5hbFBv
c2l0aW9uID0gV2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRlci5sb2NhdGlvblRvUG9zaXRpb24o
dGhpcy5fb3JpZ2luYWxMaW5lRW5kaW5ncywgbG9jYXRpb24pOwpAQCAtMTExLDYgKzEzNywxMCBA
QCBXZWJJbnNwZWN0b3IuRm9ybWF0dGVkU291cmNlTWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHJldHVybiBXZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyLnBvc2l0aW9uVG9Mb2NhdGlv
bih0aGlzLl9mb3JtYXR0ZWRMaW5lRW5kaW5ncywgZm9ybWF0dGVkUG9zaXRpb24pOwogICAgIH0s
CiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259IGxvY2F0
aW9uCisgICAgICogQHJldHVybiB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0KKyAgICAgKi8KICAg
ICBmb3JtYXR0ZWRUb09yaWdpbmFsOiBmdW5jdGlvbihsb2NhdGlvbikKICAgICB7CiAgICAgICAg
IHZhciBmb3JtYXR0ZWRQb3NpdGlvbiA9IFdlYkluc3BlY3Rvci5TY3JpcHRGb3JtYXR0ZXIubG9j
YXRpb25Ub1Bvc2l0aW9uKHRoaXMuX2Zvcm1hdHRlZExpbmVFbmRpbmdzLCBsb2NhdGlvbik7CkBA
IC0xMTgsNiArMTQ4LDEyIEBAIFdlYkluc3BlY3Rvci5Gb3JtYXR0ZWRTb3VyY2VNYXBwaW5nLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5TY3JpcHRGb3JtYXR0ZXIu
cG9zaXRpb25Ub0xvY2F0aW9uKHRoaXMuX29yaWdpbmFsTGluZUVuZGluZ3MsIG9yaWdpbmFsUG9z
aXRpb24pOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxudW1iZXI+
fSBwb3NpdGlvbnMxCisgICAgICogQHBhcmFtIHtBcnJheS48bnVtYmVyPn0gcG9zaXRpb25zMgor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBwb3NpdGlvbgorICAgICAqIEByZXR1cm4ge251bWJlcn0K
KyAgICAgKi8KICAgICBfY29udmVydFBvc2l0aW9uOiBmdW5jdGlvbihwb3NpdGlvbnMxLCBwb3Np
dGlvbnMyLCBwb3NpdGlvbikKICAgICB7CiAgICAgICAgIHZhciBpbmRleCA9IHBvc2l0aW9uczEu
dXBwZXJCb3VuZChwb3NpdGlvbikgLSAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9XZWxjb21lVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvV2VsY29tZVZpZXcuanMKaW5kZXggMzgwMDc5ZTY3MzkwYmUyMTg0NDRhNTNj
ZTAzMzJhYjlkODJlZjAwMS4uNGE5Nzg5MjEzNjJkOGU4NjIyYmFjZmIzNzlhYWY4ZjIxYmI2NzVk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWxjb21l
Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlbGNvbWVW
aWV3LmpzCkBAIC02MSwxMSArNjEsMTQgQEAgV2ViSW5zcGVjdG9yLldlbGNvbWVWaWV3ID0gZnVu
Y3Rpb24oaWRlbnRpZmllciwgaGVhZGluZ1RleHQsIGluc3RydWN0aW9uc1RleHQpCiB9CiAKIFdl
Ykluc3BlY3Rvci5XZWxjb21lVmlldy5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBh
cmFtIHtzdHJpbmd8RWxlbWVudH0gbWVzc2FnZQorICAgICAqLwogICAgIGFkZE1lc3NhZ2U6IGZ1
bmN0aW9uKG1lc3NhZ2UpCiAgICAgewogICAgICAgICB2YXIgbWVzc2FnZUVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgbWVzc2FnZUVsZW1lbnQuY2xhc3NO
YW1lID0gIm1lc3NhZ2UiOwotICAgICAgICBpZiAodHlwZW9mIG1lc3NhZ2UgPT0gInN0cmluZyIp
CisgICAgICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gInN0cmluZyIpCiAgICAgICAgICAgICBt
ZXNzYWdlRWxlbWVudC50ZXh0Q29udGVudCA9IG1lc3NhZ2U7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIG1lc3NhZ2VFbGVtZW50LmFwcGVuZENoaWxkKG1lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9leHRlcm5zLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9leHRlcm5zLmpzCmluZGV4IDRkNGViYmQxOTYxMmQ0
MmIxMjMzN2JlYTdkOGU5MzRmNzA0YzdmY2UuLjA1YjZmNTBhODU3M2VkNTYyYjA4OTAyOGVhMzE5
MDczNWRkNmMxN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvZXh0ZXJucy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2V4
dGVybnMuanMKQEAgLTU3LDYgKzU3LDkgQEAgd2luZG93LmdldENvbXB1dGVkU3R5bGUgPSBmdW5j
dGlvbihlbGVtZW50KSB7fQogLyoqIEBwYXJhbSB7Ym9vbGVhbj19IG9ubHlGaXJzdCAqLwogQXJy
YXkucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uKG9iaiwgb25seUZpcnN0KSB7fQogQXJyYXku
cHJvdG90eXBlLmtleVNldCA9IGZ1bmN0aW9uKCkge30KKy8qKiBAcmV0dXJuIHtudW1iZXJ9ICov
CitBcnJheS5wcm90b3R5cGUudXBwZXJCb3VuZCA9IGZ1bmN0aW9uKGFuY2hvcikge30KKwogCiBE
T01BcHBsaWNhdGlvbkNhY2hlLnByb3RvdHlwZS5VTkNBQ0hFRCA9IDA7CiBET01BcHBsaWNhdGlv
bkNhY2hlLnByb3RvdHlwZS5JRExFID0gMTsKQEAgLTkxLDExICs5NCw2IEBAIFdlYkluc3BlY3Rv
ci5wYW5lbHMgPSB7fTsKIFdlYkluc3BlY3Rvci5pbnNwZWN0b3JWaWV3OwogCiAvKioKLSAqIEB0
eXBlIHtXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsfQotICovCi1XZWJJbnNwZWN0b3IucGFuZWxz
LnNjcmlwdHMgPSBudWxsOwotCi0vKioKICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlZpZXd9IHZp
ZXcKICAqLwogV2ViSW5zcGVjdG9yLnNob3dWaWV3SW5EcmF3ZXIgPSBmdW5jdGlvbih2aWV3KSB7
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDBjZjU5MDlkNWE4YmJmMGNkYjJhMTRiNGQ2ZmFlNTcwMDUwYTQxOGYuLjUwNjc4
YmQ4ZmYxZTZkNGQwNWYxZDU5OWExYjBkZTc3Nzk2NGQyNmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxMS0xMi0yNyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogYWRkIG1vcmUgYW5ub3RhdGlvbnMgb24gU0RLIGNsYXNzZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTI0Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVj
dG9yL3J1bnRpbWUvcnVudGltZS1zZXRQcm9wZXJ0eVZhbHVlLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvcnVudGltZS9ydW50aW1lLXNldFByb3BlcnR5VmFsdWUuaHRtbDoKKwog
MjAxMS0xMi0yNyAgU2FtIFdoaXRlICA8c2FtdWVsLndoaXRlQHJvY2hlc3Rlci5lZHU+CiAKICAg
ICAgICAgV0syOiBBWDogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc2VhcmNoLXByZWRpY2F0
ZS5odG1sIGlzIGZhaWxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9ydW50
aW1lL3J1bnRpbWUtc2V0UHJvcGVydHlWYWx1ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvcnVudGltZS9ydW50aW1lLXNldFByb3BlcnR5VmFsdWUtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDFhZGNhMzQxZjJkOTZkNTU5NjI3YmExMDM4MTk4ZDk3MWEyMjQyYmIuLjYyNmY2MzUwYzIz
MjEyNTQ4ZGU0YzdkNzRlYWRkYWFkZjlmZmY3MDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9ydW50aW1lL3J1bnRpbWUtc2V0UHJvcGVydHlWYWx1ZS1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3J1bnRpbWUvcnVudGltZS1zZXRQcm9wZXJ0eVZhbHVl
LWV4cGVjdGVkLnR4dApAQCAtNDAsOSArNDAsNSBAQCBSdW5uaW5nOiB0ZXN0U2V0TnVsbAogUnVu
bmluZzogdGVzdFNldEVtcHR5U3RyaW5nCiAKIFJ1bm5pbmc6IHRlc3RTZXRFeGNlcHRpb24KLXsK
LSAgICB0eXBlIDogInN0cmluZyIKLSAgICB2YWx1ZSA6ICJleGNlcHRpb24iCi0gICAgZGVzY3Jp
cHRpb24gOiAiZXhjZXB0aW9uIgotfQorZXhjZXB0aW9uCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9ydW50aW1lL3J1bnRpbWUtc2V0UHJvcGVydHlWYWx1ZS5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3J1bnRpbWUvcnVudGltZS1zZXRQcm9wZXJ0eVZhbHVlLmh0bWwK
aW5kZXggZTRkYTVjOWM4YzJhN2U0YzNlMzY2NTQ1NDdkYzIxOTNmZDgzZmE2MC4uNjQ2NDhlZTI2
MjZlYjhiOWE1NzUzNzQ1MmMzMTI5NjRlY2VmODc2NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3J1bnRpbWUvcnVudGltZS1zZXRQcm9wZXJ0eVZhbHVlLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3J1bnRpbWUvcnVudGltZS1zZXRQcm9wZXJ0eVZhbHVlLmh0bWwK
QEAgLTEwNiw3ICsxMDYsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICAgICAgZnVuY3Rp
b24gc3RlcDEoZXJyb3IpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5kdW1wKGVycm9yKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dChlcnJvcik7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgi
ZHVtcE9iamVjdCgnU2V0IGV4Y2VwdGlvbicpIiwgbmV4dCk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0K
</data>
<flag name="review"
          id="120881"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>