<?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>76264</bug_id>
          
          <creation_ts>2012-01-13 03:44:05 -0800</creation_ts>
          <short_desc>Web Inspector: [InspectorIndexedDB] Add InspectorIndexedDBAgent and IndexedDBModel, pass database names to inspector.</short_desc>
          <delta_ts>2012-01-23 12:49:08 -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>
          <dependson>76277</dependson>
          <blocked>75386</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Raymond Toy">rtoy</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rakuco</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>535572</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-01-13 03:44:05 -0800</bug_when>
    <thetext>Add InspectorIndexedDBAgent and IndexedDBModel, pass database names to inspector.

This patch contains
 - new InspectorIndexedDBAgent backend boilerplate
 - new IndexedDBModel front-end boilerplate
 - proposed implementation of getDatabaseNames for all frames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535580</commentid>
    <comment_count>1</comment_count>
      <attachid>122407</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-01-13 04:08:36 -0800</bug_when>
    <thetext>Created attachment 122407
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535581</commentid>
    <comment_count>2</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-01-13 04:08:55 -0800</bug_when>
    <thetext>This implementation is ready to review.
Known issues:
 - xcode project is not yet updated.
 - There are no tests, I am going to add tests separately, once I implement ResourcePanel - IndexedDBModel interaction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535599</commentid>
    <comment_count>3</comment_count>
      <attachid>122407</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-01-13 05:25:00 -0800</bug_when>
    <thetext>Comment on attachment 122407
Patch

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

&gt; Source/WebCore/inspector/Inspector.json:111
&gt; +                    { &quot;name&quot;: &quot;securityOrigin&quot;, &quot;type&quot;: &quot;string&quot;, &quot;description&quot;: &quot;Frame document&apos;s security origin.&quot; },

Should we make this field optional?

&gt; Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:2
&gt; + * Copyright (C) 2011 Google Inc. All rights reserved.

2012

&gt; Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:110
&gt; +        RefPtr&lt;InspectorObject&gt; result = InspectorObject::create();

You should use new generated API for front-end messages.

&gt; Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:166
&gt; +    m_enabled = true;

I don&apos;t introduce these unless performance matters.

&gt; Source/WebCore/inspector/InspectorIndexedDBAgent.h:2
&gt; + * Copyright (C) 2011 Google Inc. All rights reserved.

2012

&gt; Source/WebCore/inspector/front-end/IndexedDBModel.js:2
&gt; + * Copyright (C) 2011 Google Inc. All rights reserved.

2012

&gt; Source/WebCore/inspector/front-end/IndexedDBModel.js:203
&gt; +    

Extra blank line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535659</commentid>
    <comment_count>4</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-01-13 07:08:48 -0800</bug_when>
    <thetext>Committed r104935: &lt;http://trac.webkit.org/changeset/104935&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535692</commentid>
    <comment_count>5</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-01-13 08:28:30 -0800</bug_when>
    <thetext>Committed r104940: &lt;http://trac.webkit.org/changeset/104940&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122407</attachid>
            <date>2012-01-13 04:08:36 -0800</date>
            <delta_ts>2012-01-17 14:46:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76264-20120113160830.patch</filename>
            <type>text/plain</type>
            <size>37870</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0OTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM3NzY2ZmI5OWIxZTNk
ZjAzZGUzMGFjOTVkZWVhOTBjMzIxNTFjYi4uNWE4YWMxMzY5MmIwN2YyMDY5NjNmOTFiNzk1NzNh
NWJiMWIzN2ExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTAxLTEzICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtJbnNwZWN0b3JJbmRleGVkREJdIEFkZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudCBhbmQg
SW5kZXhlZERCTW9kZWwsIHBhc3MgZGF0YWJhc2UgbmFtZXMgdG8gaW5zcGVjdG9yLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyNjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5w
eToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbmRleGVkREJBZ2VudDo6RnJvbnRlbmRQcm92aWRlcjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkFnZW50OjpGcm9udGVuZFByb3ZpZGVyOjp+RnJv
bnRlbmRQcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dDo6RnJvbnRlbmRQcm92aWRlcjo6ZnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXI6OmNsZWFyRnJvbnRlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXI6
OkZyb250ZW5kUHJvdmlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySURCQ2FsbGJh
Y2s6On5JbnNwZWN0b3JJREJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
REJDYWxsYmFjazo6b25FcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJREJDYWxs
YmFjazo6b25TdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcklEQkNhbGxiYWNr
OjpvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
cklEQkNhbGxiYWNrOjpvblN1Y2Nlc3NXaXRoUHJlZmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySURCQ2FsbGJhY2s6Om9uQmxvY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbmRleGVkREJBZ2VudDo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6On5JbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6c2V0RnJvbnRl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmNsZWFyRnJv
bnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlc3Rv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmVuYWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6ZGlzYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGFiYXNl
TmFtZXNGb3JGcmFtZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFn
ZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6
OmNyZWF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWUp
OgorICAgICAgICAqIGluc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5zaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQk1vZGVsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJlZU1vZGVsLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlJlc291cmNlVHJlZUZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVRyZWVGcmFtZS5wcm90b3R5cGUuZ2V0IHNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5SZXNvdXJjZVRyZWVGcmFtZS5wcm90b3R5cGUuX25hdmlnYXRlKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuaHRtbDoKKwogMjAxMi0wMS0xMyAgQWxleGFuZGVyIFBhdmxvdiAg
PGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtDaHJvbWl1
bV0gSmF2YVNjcmlwdE91dGxpbmVEaWFsb2cgZmFpbHMgdG8gb3BlbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCA1OWZjZWUyNDY4MDQ3OTk1MTU2NTViMDdlYTUxYzM3ZWQxNjQ1MmQ5Li41MDAwZmFk
ZjFiNTgzYmIxNGYwZmUwMGM1N2QyZTY0NWI2ZDY3M2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtODk0LDYgKzg5NCw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBpbnNwZWN0b3IvSW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3Bw
CisgICAgaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAogICAgIGluc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvck1l
bW9yeUFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IGZmMjczYjNmYzUwMzZjYzczOGNmNjc3ODQ4NDViNDM3YTY2MWQy
N2UuLmIyYzFlZDk5ZWJjYjZhMWZiNGVhYTYzYjY2ZTA1MjUxN2NmN2ExYzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTI3NzcsNiArMjc3Nyw4IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kSG9zdC5oJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQuY3BwJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCcsCkBA
IC02NDYzLDYgKzY0NjUsNyBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSGVh
cFNuYXBzaG90V29ya2VyRGlzcGF0Y2hlci5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9IZWxwU2NyZWVuLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5k
L0ltYWdlVmlldy5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVk
REJNb2RlbC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JC
YWNrZW5kLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZy
b250ZW5kQVBJLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3Rv
ckZyb250ZW5kSG9zdFN0dWIuanMnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagppbmRleCBhZTc4NzA5MjVhYWFhNWE1OTUyYTdlZDJjZGRkYjM5ZWFmMDI2
MWYxLi45ZTU2Y2FmY2NmMDRmYzEyZmEzZjZhNGJkNDgwMmY3YzI5ZjBlOTQyIDEwMDc1NQotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzEzOTgsNiArNzEz
OTgsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5caW5zcGVjdG9yXEluc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCIKKwkJCQk+CisJCQk8L0Zp
bGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3BlY3Rvcklu
ZGV4ZWREQkFnZW50LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIgogCQkJCT4K
IAkJCTwvRmlsZT4KQEAgLTcxODk3LDYgKzcxOTA1LDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+
CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXElu
ZGV4ZWREQk1vZGVsLmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJl
bGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxJbmplY3RlZEZha2VXb3JrZXIuanMi
CiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9D
b2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5CmluZGV4IDFiMmRjZmMxZjMzNDg2MTk4NTI4Y2ExN2U0
NDYyNzdkODQwMmNlNDAuLjVkMTU3YWRkYWIyZmIxMWRjMWMzMjllOWMzMDEzN2ZkN2M2ODc1ZGUg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVj
dG9yLnB5CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVj
dG9yLnB5CkBAIC00Myw2ICs0Myw3IEBAIERPTUFJTl9ERUZJTkVfTkFNRV9NQVAgPSB7CiAgICAg
IkRlYnVnZ2VyIjogIkpBVkFTQ1JJUFRfREVCVUdHRVIiLAogICAgICJET01EZWJ1Z2dlciI6ICJK
QVZBU0NSSVBUX0RFQlVHR0VSIiwKICAgICAiRmlsZVN5c3RlbSI6ICJGSUxFX1NZU1RFTSIsCisg
ICAgIkluZGV4ZWREQiI6ICJJTkRFWEVEX0RBVEFCQVNFIiwKICAgICAiUHJvZmlsZXIiOiAiSkFW
QVNDUklQVF9ERUJVR0dFUiIsCiAgICAgIldvcmtlciI6ICJXT1JLRVJTIiwKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCA4MTQ5N2M5ODE5NjAwYWQ1ZDNjM2Ew
YzgwNGFhMjRmMjAxZWE2MjIxLi42YzRiMTExMjI1ZDEwYjY2YjFhNGI0NjdjMjc4NjBhYjAyZjJm
OTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24K
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0xMDgsNiAr
MTA4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJsb2FkZXJJZCIsICIkcmVm
IjogIk5ldHdvcmsuTG9hZGVySWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBvZiB0aGUg
bG9hZGVyIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGZyYW1lLiIgfSwKICAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJuYW1lIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwg
ImRlc2NyaXB0aW9uIjogIkZyYW1lJ3MgbmFtZSBhcyBzcGVjaWZpZWQgaW4gdGhlIHRhZy4iIH0s
CiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5nIiwg
ImRlc2NyaXB0aW9uIjogIkZyYW1lIGRvY3VtZW50J3MgVVJMLiIgfSwKKyAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJzZWN1cml0eU9yaWdpbiIsICJ0eXBlIjogInN0cmluZyIsICJkZXNj
cmlwdGlvbiI6ICJGcmFtZSBkb2N1bWVudCdzIHNlY3VyaXR5IG9yaWdpbi4iIH0sCiAgICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAibWltZVR5cGUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVz
Y3JpcHRpb24iOiAiRnJhbWUgZG9jdW1lbnQncyBtaW1lVHlwZSBhcyBkZXRlcm1pbmVkIGJ5IHRo
ZSBicm93c2VyLiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImhpZGRl
biI6IHRydWUKQEAgLTkwMSw2ICs5MDIsNDcgQEAKICAgICAgICAgXQogICAgIH0sCiAgICAgewor
ICAgICAgICAiZG9tYWluIjogIkluZGV4ZWREQiIsCisgICAgICAgICJoaWRkZW4iOiB0cnVlLAor
ICAgICAgICAidHlwZXMiOiBbCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgImlkIjog
IkZyYW1lV2l0aERhdGFiYXNlTmFtZXMiLAorICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVj
dCIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIk9yaWdpbiB3aXRoIGRhdGFiYXNl
IG5hbWVzIGFuZCBmcmFtZSBpZHMuIiwKKyAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsK
KyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmcmFtZUlkIiwgIiRyZWYiOiAiTmV0d29y
ay5GcmFtZUlkIiwgImRlc2NyaXB0aW9uIjogIkZyYW1lIGlkLiIgfSwKKyAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJzZWN1cml0eU9yaWdpbiIsICJ0eXBlIjogInN0cmluZyIsICJkZXNj
cmlwdGlvbiI6ICJTZWN1cml0eSBvcmlnaW4uIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImRhdGFiYXNlTmFtZXMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgInR5cGUi
OiAic3RyaW5nIiB9LCAiZGVzY3JpcHRpb24iOiAiRGF0YWJhc2UgbmFtZXMgZm9yIHRoaXMgb3Jp
Z2luLiIgfQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0KKyAgICAgICAgXSwKKyAg
ICAgICAgImNvbW1hbmRzIjogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1l
IjogImVuYWJsZSIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkVuYWJsZXMgZXZl
bnRzIGZyb20gYmFja2VuZC4iCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICJuYW1lIjogImRpc2FibGUiLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJEaXNhYmxlcyBldmVudHMgZnJvbSBiYWNrZW5kLiIKKyAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAicmVxdWVzdERhdGFiYXNlTmFtZXNG
b3JGcmFtZSIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiZnJhbWVJZCIsICIkcmVmIjogIk5ldHdvcmsuRnJhbWVJZCIgfQor
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcXVl
c3RzIGRhdGFiYXNlIG5hbWVzIGZvciBnaXZlbiBmcmFtZSdzIHNlY3VyaXR5IG9yaWdpbi4iCisg
ICAgICAgICAgICB9CisgICAgICAgIF0sCisgICAgICAgICJldmVudHMiOiBbCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZGF0YWJhc2VOYW1lc0xvYWRlZCIsCisgICAg
ICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiZnJhbWVXaXRoRGF0YWJhc2VOYW1lcyIsICIkcmVmIjogIkZyYW1lV2l0aERhdGFiYXNlTmFt
ZXMiLCAiZGVzY3JpcHRpb24iOiAiRnJhbWUgd2l0aCBkYXRhYmFzZSBuYW1lcy4iIH0KKyAgICAg
ICAgICAgICAgICBdCisgICAgICAgICAgICB9CisgICAgICAgIF0KKyAgICB9LAorICAgIHsKICAg
ICAgICAgImRvbWFpbiI6ICJET01TdG9yYWdlIiwKICAgICAgICAgImhpZGRlbiI6IHRydWUsCiAg
ICAgICAgICJ0eXBlcyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcAppbmRleCA3NWQ2YjQ5ZjEyZDk0MjZjYWQ5ODUyMmQ4MzkwOWIzZGE0
MWJjMjIwLi5kMDhlZTRjNDdmNjdhODM2MmNhMjFmYzBlMzY5NGFlZjBiMDk0ZDliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC01
Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENs
aWVudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckluZGV4ZWREQkFnZW50LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yTWVtb3J5QWdl
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKQEAgLTk4LDYgKzk5LDEwIEBA
IEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSogcGFnZSwgSW5z
cGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAgICAgbV9hZ2VudHMuYXBwZW5kKGRhdGFiYXNlQWdl
bnRQdHIucmVsZWFzZSgpKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CisgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpjcmVhdGUobV9p
bnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBwYWdlQWdlbnQpKTsKKyNl
bmRpZgorCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogICAgIG1fYWdlbnRzLmFwcGVuZChJbnNw
ZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCks
IG1fc3RhdGUuZ2V0KCkpKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc5MjZjMmIzNzIz
OWE0ZjEzODg2YjU5OTViNzc1MzAyNGE0NzVjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTAsMCArMSwy
MDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJJbnNwZWN0b3JJbmRleGVkREJB
Z2VudC5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCisKKyNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCisjaW5jbHVkZSAiRE9NV2luZG93Lmgi
CisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5j
bHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJHcm91cFNldHRpbmdzLmgiCisjaW5jbHVkZSAiSURC
Q2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaCIKKyNp
bmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2Vu
dC5oIgorI2luY2x1ZGUgIkluc3BlY3RvclN0YXRlLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVmFs
dWVzLmgiCisjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgorI2luY2x1ZGUgIlBhZ2Uu
aCIKKyNpbmNsdWRlICJQYWdlR3JvdXAuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgor
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVz
cGFjZSBJbmRleGVkREJBZ2VudFN0YXRlIHsKK3N0YXRpYyBjb25zdCBjaGFyIGluZGV4ZWREQkFn
ZW50RW5hYmxlZFtdID0gImluZGV4ZWREQkFnZW50RW5hYmxlZCI7Cit9OworCitjbGFzcyBJbnNw
ZWN0b3JJbmRleGVkREJBZ2VudDo6RnJvbnRlbmRQcm92aWRlciA6IHB1YmxpYyBSZWZDb3VudGVk
PEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpGcm9udGVuZFByb3ZpZGVyPiB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gY3JlYXRlKEluc3BlY3RvckZy
b250ZW5kKiBpbnNwZWN0b3JGcm9udGVuZCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgRnJvbnRlbmRQcm92aWRlcihpbnNwZWN0b3JGcm9udGVuZCkpOworICAgIH0KKworICAg
IHZpcnR1YWwgfkZyb250ZW5kUHJvdmlkZXIoKSB7IH0KKworICAgIEluc3BlY3RvckZyb250ZW5k
OjpJbmRleGVkREIqIGZyb250ZW5kKCkgeyByZXR1cm4gbV9pbnNwZWN0b3JGcm9udGVuZDsgfQor
ICAgIHZvaWQgY2xlYXJGcm9udGVuZCgpIHsgbV9pbnNwZWN0b3JGcm9udGVuZCA9IDA7IH0KK3By
aXZhdGU6CisgICAgRnJvbnRlbmRQcm92aWRlcihJbnNwZWN0b3JGcm9udGVuZCogaW5zcGVjdG9y
RnJvbnRlbmQpIDogbV9pbnNwZWN0b3JGcm9udGVuZChpbnNwZWN0b3JGcm9udGVuZC0+aW5kZXhl
ZGRiKCkpIHsgfQorICAgIEluc3BlY3RvckZyb250ZW5kOjpJbmRleGVkREIqIG1faW5zcGVjdG9y
RnJvbnRlbmQ7Cit9OworCituYW1lc3BhY2UgeworCitjbGFzcyBJbnNwZWN0b3JJREJDYWxsYmFj
ayA6IHB1YmxpYyBJREJDYWxsYmFja3MgeworcHVibGljOgorICAgIHZpcnR1YWwgfkluc3BlY3Rv
cklEQkNhbGxiYWNrKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgb25FcnJvcihQYXNzUmVmUHRy
PElEQkRhdGFiYXNlRXJyb3I+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NS
ZWZQdHI8RE9NU3RyaW5nTGlzdD4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPikgeyB9CisgICAgdmlydHVhbCB2b2lk
IG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+KSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlPikgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoQ29u
dGludWF0aW9uKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChj
b25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYga2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxJ
REJLZXk+ID4mIHByaW1hcnlLZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gPiYgdmFsdWVzKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCkgeyB9
Cit9OworCitjbGFzcyBHZXREYXRhYmFzZU5hbWVzQ2FsbGJhY2sgOiBwdWJsaWMgSW5zcGVjdG9y
SURCQ2FsbGJhY2sgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdldERhdGFiYXNl
TmFtZXNDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6
OkZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIsIGNvbnN0IFN0cmluZyYgZnJhbWVJ
ZCwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbikKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgR2V0RGF0YWJhc2VOYW1lc0NhbGxiYWNrKGZyb250ZW5kUHJvdmlkZXIsIGZy
YW1lSWQsIHNlY3VyaXR5T3JpZ2luKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+R2V0RGF0YWJh
c2VOYW1lc0NhbGxiYWNrKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NS
ZWZQdHI8RE9NU3RyaW5nTGlzdD4gZGF0YWJhc2VOYW1lc0xpc3QpCisgICAgeworICAgICAgICBp
ZiAoIW1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBJbnNwZWN0b3JPYmpl
Y3Q6OmNyZWF0ZSgpOworICAgICAgICByZXN1bHQtPnNldFN0cmluZygiZnJhbWVJZCIsIG1fZnJh
bWVJZCk7CisgICAgICAgIHJlc3VsdC0+c2V0U3RyaW5nKCJzZWN1cml0eU9yaWdpbiIsIG1fc2Vj
dXJpdHlPcmlnaW4pOworCisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gZGF0YWJhc2VO
YW1lcyA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBkYXRhYmFzZU5hbWVzTGlzdC0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgICAgIGRh
dGFiYXNlTmFtZXMtPnB1c2hTdHJpbmcoZGF0YWJhc2VOYW1lc0xpc3QtPml0ZW0oaSkpOworICAg
ICAgICByZXN1bHQtPnNldEFycmF5KCJkYXRhYmFzZU5hbWVzIiwgZGF0YWJhc2VOYW1lcyk7CisK
KyAgICAgICAgbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpLT5kYXRhYmFzZU5hbWVzTG9h
ZGVkKHJlc3VsdCk7CisgICAgfQorCitwcml2YXRlOgorICAgIEdldERhdGFiYXNlTmFtZXNDYWxs
YmFjayhQYXNzUmVmUHRyPEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpGcm9udGVuZFByb3ZpZGVy
PiBmcm9udGVuZFByb3ZpZGVyLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYg
c2VjdXJpdHlPcmlnaW4pCisgICAgICAgIDogbV9mcm9udGVuZFByb3ZpZGVyKGZyb250ZW5kUHJv
dmlkZXIpCisgICAgICAgICwgbV9mcmFtZUlkKGZyYW1lSWQpCisgICAgICAgICwgbV9zZWN1cml0
eU9yaWdpbihzZWN1cml0eU9yaWdpbikgeyB9CisgICAgUmVmUHRyPEluc3BlY3RvckluZGV4ZWRE
QkFnZW50OjpGcm9udGVuZFByb3ZpZGVyPiBtX2Zyb250ZW5kUHJvdmlkZXI7CisgICAgU3RyaW5n
IG1fZnJhbWVJZDsKKyAgICBTdHJpbmcgbV9zZWN1cml0eU9yaWdpbjsKK307CisKK30gLy8gbmFt
ZXNwYWNlCisKK0luc3BlY3RvckluZGV4ZWREQkFnZW50OjpJbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0
ZSogc3RhdGUsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQorICAgIDogSW5zcGVjdG9y
QmFzZUFnZW50PEluc3BlY3RvckluZGV4ZWREQkFnZW50PigiSW5kZXhlZERCIiwgaW5zdHJ1bWVu
dGluZ0FnZW50cywgc3RhdGUpCisgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCisgICAgLCBt
X2VuYWJsZWQoZmFsc2UpCit7Cit9CisKK0luc3BlY3RvckluZGV4ZWREQkFnZW50Ojp+SW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQoKQoreworfQorCit2b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50
OjpzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCit7CisgICAgbV9mcm9u
dGVuZFByb3ZpZGVyID0gRnJvbnRlbmRQcm92aWRlcjo6Y3JlYXRlKGZyb250ZW5kKTsKK30KKwor
dm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6Y2xlYXJGcm9udGVuZCgpCit7CisgICAgbV9m
cm9udGVuZFByb3ZpZGVyLT5jbGVhckZyb250ZW5kKCk7CisgICAgbV9mcm9udGVuZFByb3ZpZGVy
LmNsZWFyKCk7CisgICAgZGlzYWJsZSgwKTsKK30KKwordm9pZCBJbnNwZWN0b3JJbmRleGVkREJB
Z2VudDo6cmVzdG9yZSgpCit7CisgICAgbV9lbmFibGVkID0gbV9zdGF0ZS0+Z2V0Qm9vbGVhbihJ
bmRleGVkREJBZ2VudFN0YXRlOjppbmRleGVkREJBZ2VudEVuYWJsZWQpOworfQorCit2b2lkIElu
c3BlY3RvckluZGV4ZWREQkFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcqKQoreworICAgIGlmICht
X2VuYWJsZWQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2VuYWJsZWQgPSB0cnVlOworICAgIG1f
c3RhdGUtPnNldEJvb2xlYW4oSW5kZXhlZERCQWdlbnRTdGF0ZTo6aW5kZXhlZERCQWdlbnRFbmFi
bGVkLCBtX2VuYWJsZWQpOworfQorCit2b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpkaXNh
YmxlKEVycm9yU3RyaW5nKikKK3sKKyAgICBpZiAoIW1fZW5hYmxlZCkKKyAgICAgICAgcmV0dXJu
OworICAgIG1fZW5hYmxlZCA9IGZhbHNlOworICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oSW5kZXhl
ZERCQWdlbnRTdGF0ZTo6aW5kZXhlZERCQWdlbnRFbmFibGVkLCBtX2VuYWJsZWQpOworfQorCit2
b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YWJhc2VOYW1lc0ZvckZyYW1l
KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBmcmFtZUlkKQoreworICAgIGlmICgh
bV9lbmFibGVkKSB7CisgICAgICAgICplcnJvciA9ICJJbmRleGVkREIgYWdlbnQgaXMgbm90IGVu
YWJsZWQiOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgRnJhbWUqIGZyYW1lID0gbV9w
YWdlQWdlbnQtPmZyYW1lRm9ySWQoZnJhbWVJZCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
ZnJhbWUgPyBmcmFtZS0+ZG9jdW1lbnQoKSA6IDA7CisgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50
ID8gZG9jdW1lbnQtPnBhZ2UoKSA6IDA7CisgICAgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2Uq
IGlkYkJhY2tlbmQgPSBwYWdlID8gcGFnZS0+Z3JvdXAoKS5pZGJGYWN0b3J5KCkgOiAwOworCisg
ICAgaWYgKCFpZGJCYWNrZW5kKSB7CisgICAgICAgICplcnJvciA9ICJObyBJbmRleGVkREIgZmFj
dG9yeSBmb3IgZ2l2ZW4gZnJhbWUgZm91bmQiOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgUmVmUHRyPEdldERhdGFiYXNlTmFtZXNDYWxsYmFjaz4gY2FsbGJhY2sgPSBHZXREYXRhYmFz
ZU5hbWVzQ2FsbGJhY2s6OmNyZWF0ZShtX2Zyb250ZW5kUHJvdmlkZXIsIGZyYW1lSWQsIGRvY3Vt
ZW50LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKTsKKyAgICBHcm91cFNldHRpbmdzKiBn
cm91cFNldHRpbmdzID0gZG9jdW1lbnQtPnBhZ2UoKS0+Z3JvdXAoKS5ncm91cFNldHRpbmdzKCk7
CisgICAgaWRiQmFja2VuZC0+Z2V0RGF0YWJhc2VOYW1lcyhjYWxsYmFjay5nZXQoKSwgZG9jdW1l
bnQtPnNlY3VyaXR5T3JpZ2luKCksIGRvY3VtZW50LT5mcmFtZSgpLCBncm91cFNldHRpbmdzLT5p
bmRleGVkREJEYXRhYmFzZVBhdGgoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kM2NkNGNlZWMwYzEwMDkzZTU5NTczYzZmOTEyYTExMjhhZmJmZTM1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnRfaAorI2RlZmluZSBJbnNwZWN0b3JJbmRleGVkREJBZ2VudF9oCisKKyNpbmNsdWRlICJJbnNw
ZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW5zcGVj
dG9yUGFnZUFnZW50OworCit0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKKworY2xhc3MgSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3Rv
ckluZGV4ZWREQkFnZW50PiB7CitwdWJsaWM6CisgICAgY2xhc3MgRnJvbnRlbmRQcm92aWRlcjsK
KworICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckluZGV4ZWREQkFnZW50PiBjcmVhdGUo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUq
IHN0YXRlLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoaW5zdHJ1bWVudGluZ0Fn
ZW50cywgc3RhdGUsIHBhZ2VBZ2VudCkpOworICAgIH0KKyAgICB+SW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVu
ZCopOworICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyb250ZW5kKCk7CisgICAgdmlydHVhbCB2b2lk
IHJlc3RvcmUoKTsKKworICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCisgICAgdm9p
ZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKKyAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsK
KyAgICB2b2lkIHJlcXVlc3REYXRhYmFzZU5hbWVzRm9yRnJhbWUoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIGZyYW1lSWQpOworcHJpdmF0ZToKKyAgICBJbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqLCBJbnNwZWN0b3JQYWdlQWdl
bnQqKTsKKworICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CisgICAgUmVmUHRy
PEZyb250ZW5kUHJvdmlkZXI+IG1fZnJvbnRlbmRQcm92aWRlcjsKKyAgICBib29sIG1fZW5hYmxl
ZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vICFkZWZpbmVkKElu
c3BlY3RvckluZGV4ZWREQkFnZW50X2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGIxYzlhYzRiNWZlMzA2NmM3N2IxMTE4OGViYzk0
ZGZmN2RjZmVlOTAuLjcxMmZhNTFmYTgyN2U3MDY2ZmUwMjExZGZhNDI4YTAzYmIyODg1ZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBA
IC02OTEsNiArNjkxLDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3RvclBh
Z2VBZ2VudDo6YnVpbGRPYmplY3RGb3JGcmFtZShGcmFtZSogZnJhbWUKICAgICB9CiAgICAgZnJh
bWVPYmplY3QtPnNldFN0cmluZygidXJsIiwgZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmlu
ZygpKTsKICAgICBmcmFtZU9iamVjdC0+c2V0U3RyaW5nKCJsb2FkZXJJZCIsIGxvYWRlcklkKGZy
YW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSkpOworICAgIGZyYW1lT2JqZWN0LT5zZXRT
dHJpbmcoInNlY3VyaXR5T3JpZ2luIiwgZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2lu
KCktPnRvU3RyaW5nKCkpOwogICAgIGZyYW1lT2JqZWN0LT5zZXRTdHJpbmcoIm1pbWVUeXBlIiwg
ZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZU1JTUVUeXBlKCkpOwog
CiAgICAgcmV0dXJuIGZyYW1lT2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnNoIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Nv
bXBpbGUtZnJvbnQtZW5kLnNoCmluZGV4IDFhNzU3MjhkNWIyZmYwMzM4MWVlMGZjYjYzNjIwNDA4
M2EyMTUyN2IuLmJkMjRkYjNkZDhlNzcyNzMyMTVjZWRmNzY3NzAzNzdjZWQzYjQyNTMgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5zaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQuc2gKQEAgLTQ1LDcg
KzQ1LDcgQEAgamF2YSAtamFyIH4vY2xvc3VyZS9jb21waWxlci5qYXIgLS1zdW1tYXJ5X2RldGFp
bF9sZXZlbCAzIC0tY29tcGlsYXRpb25fbGV2ZWwgU0kKICAgICAgICAgLS1qcyBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VzZXJNZXRyaWNzLmpzIFwKICAgICAgICAgLS1qcyBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hhbmRsZXJSZWdpc3RyeS5qcyBcCiAg
ICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JG
cm9udGVuZEhvc3RTdHViLmpzIFwKLSAgICAtLW1vZHVsZSBqc21vZHVsZV9zZGs6Mjk6anNtb2R1
bGVfY29tbW9uIFwKKyAgICAtLW1vZHVsZSBqc21vZHVsZV9zZGs6MzA6anNtb2R1bGVfY29tbW9u
IFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3Bl
Y3RvckJhY2tlbmQuanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvQXBwbGljYXRpb25DYWNoZU1vZGVsLmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbG9yLmpzIFwKQEAgLTYzLDYgKzYzLDcgQEAg
amF2YSAtamFyIH4vY2xvc3VyZS9jb21waWxlci5qYXIgLS1zdW1tYXJ5X2RldGFpbF9sZXZlbCAz
IC0tY29tcGlsYXRpb25fbGV2ZWwgU0kKICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcyBc
CiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IQVJFbnRy
eS5qcyBcCisgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9J
bmRleGVkREJNb2RlbC5qcyBcCiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9OZXR3b3JrTG9nLmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1BsYWNhcmQuanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERCTW9kZWwuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQk1vZGVsLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2
YTg3YjJmNzZhNzc2ODQ1NGE4NDExNjQxNTMzYmUyNGJhZGJhYjgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQk1vZGVsLmpzCkBA
IC0wLDAgKzEsMjU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNw
ZWN0b3IuT2JqZWN0fQorICovCitXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwgPSBmdW5jdGlv
bigpCit7CisgICAgSW5kZXhlZERCQWdlbnQuZW5hYmxlKCk7CisgICAgSW5zcGVjdG9yQmFja2Vu
ZC5yZWdpc3RlckluZGV4ZWREQkRpc3BhdGNoZXIobmV3IFdlYkluc3BlY3Rvci5JbmRleGVkREJE
aXNwYXRjaGVyKHRoaXMpKTsKKyAgICAKKyAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9k
ZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRU
eXBlcy5GcmFtZU5hdmlnYXRlZCwgdGhpcy5fZnJhbWVOYXZpZ2F0ZWQsIHRoaXMpOworICAgIFdl
Ykluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5SZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLkZyYW1lRGV0YWNoZWQsIHRoaXMuX2ZyYW1l
RGV0YWNoZWQsIHRoaXMpOworICAgIAorICAgIHRoaXMuX3NlY3VyaXR5T3JpZ2luQnlGcmFtZUlk
ID0ge307CisgICAgdGhpcy5fZnJhbWVJZHNCeVNlY3VyaXR5T3JpZ2luID0ge307CisgICAgdGhp
cy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW4gPSB7fTsKKworICAgIHRoaXMucmVmcmVz
aERhdGFiYXNlTmFtZXMoKTsKK30KKworV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3Rv
dHlwZSA9IHsKKyAgICByZWZyZXNoRGF0YWJhc2VOYW1lczogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgdGhpcy5fcmVzZXQoKTsKKyAgICAgICAgdGhpcy5fZnJhbWVzTmF2aWdhdGVkUmVjdXJz
aXZlbHkoV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLm1haW5GcmFtZSk7CisgICAgfSwK
KyAgICAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVG
cmFtZX0gcmVzb3VyY2VUcmVlRnJhbWUKKyAgICAgKi8KKyAgICBfZnJhbWVzTmF2aWdhdGVkUmVj
dXJzaXZlbHk6IGZ1bmN0aW9uKHJlc291cmNlVHJlZUZyYW1lKQorICAgIHsKKyAgICAgICAgdGhp
cy5fcHJvY2Vzc0ZyYW1lTmF2aWdhdGVkKHJlc291cmNlVHJlZUZyYW1lKTsKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCByZXNvdXJjZVRyZWVGcmFtZS5jaGlsZEZyYW1lcy5sZW5ndGg7ICsr
aSkKKyAgICAgICAgICAgIHRoaXMuX2ZyYW1lc05hdmlnYXRlZFJlY3Vyc2l2ZWx5KHJlc291cmNl
VHJlZUZyYW1lLmNoaWxkRnJhbWVzW2ldKTsgICAgICAgICAgICAKKyAgICB9LAorICAgIAorICAg
IC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAorICAgICAqLwor
ICAgIF9mcmFtZU5hdmlnYXRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIg
cmVzb3VyY2VUcmVlRnJhbWUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVG
cmFtZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdGhpcy5fcHJvY2Vzc0ZyYW1lTmF2aWdhdGVk
KHJlc291cmNlVHJlZUZyYW1lKTsKKyAgICB9LAorICAgIAorICAgIC8qKgorICAgICAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAorICAgICAqLworICAgIF9mcmFtZURldGFjaGVk
OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZVRyZWVGcmFtZSA9
IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lfSAqLyBldmVudC5kYXRh
OworICAgICAgICB0aGlzLl9vcmlnaW5SZW1vdmVkRnJvbUZyYW1lKHJlc291cmNlVHJlZUZyYW1l
LmlkKTsKKyAgICB9LAorCisgICAgX3Jlc2V0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0
aGlzLl9zZWN1cml0eU9yaWdpbkJ5RnJhbWVJZCA9IHt9OworICAgICAgICB0aGlzLl9mcmFtZUlk
c0J5U2VjdXJpdHlPcmlnaW4gPSB7fTsKKyAgICAgICAgdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2Vj
dXJpdHlPcmlnaW4gPSB7fTsKKyAgICAgICAgLy8gRklYTUU6IGRpc3BhdGNoIGV2ZW50cz8KKyAg
ICB9LAorICAgIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNl
VHJlZUZyYW1lfSByZXNvdXJjZVRyZWVGcmFtZQorICAgICAqLworICAgIF9wcm9jZXNzRnJhbWVO
YXZpZ2F0ZWQ6IGZ1bmN0aW9uKHJlc291cmNlVHJlZUZyYW1lKQorICAgIHsKKyAgICAgICAgaWYg
KHJlc291cmNlVHJlZUZyYW1lLnNlY3VyaXR5T3JpZ2luID09PSAibnVsbCIpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGlmICh0aGlzLl9mcmFtZUlkc0J5U2VjdXJpdHlPcmlnaW5bcmVz
b3VyY2VUcmVlRnJhbWUuc2VjdXJpdHlPcmlnaW5dKQorICAgICAgICAgICAgdGhpcy5fb3JpZ2lu
QWRkZWRUb0ZyYW1lKHJlc291cmNlVHJlZUZyYW1lLmlkLCByZXNvdXJjZVRyZWVGcmFtZS5zZWN1
cml0eU9yaWdpbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX2xvYWREYXRhYmFz
ZU5hbWVzRm9yRnJhbWUocmVzb3VyY2VUcmVlRnJhbWUuaWQpOworICAgIH0sCisgICAgCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGZyYW1lSWQKKyAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gc2VjdXJpdHlPcmlnaW4KKyAgICAgKi8KKyAgICBfb3JpZ2luQWRkZWRUb0ZyYW1lOiBmdW5j
dGlvbihmcmFtZUlkLCBzZWN1cml0eU9yaWdpbikKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5f
ZnJhbWVJZHNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luXSkgeworICAgICAgICAgICAg
dGhpcy5fZnJhbWVJZHNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luXSA9IFtdOworICAg
ICAgICAgICAgdGhpcy5fZnJhbWVJZHNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luXS5w
dXNoKGZyYW1lSWQpOworICAgICAgICAgICAgdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlP
cmlnaW5bc2VjdXJpdHlPcmlnaW5dID0gW107CisgICAgICAgICAgICAvLyBGSVhNRTogZGlzcGF0
Y2ggb3JpZ2luIGFkZGVkIGV2ZW50LgorICAgICAgICB9CisgICAgICAgIHRoaXMuX3NlY3VyaXR5
T3JpZ2luQnlGcmFtZUlkW2ZyYW1lSWRdID0gc2VjdXJpdHlPcmlnaW47CisgICAgfSwKKyAgICAK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZnJhbWVJZAorICAgICAqLworICAgIF9v
cmlnaW5SZW1vdmVkRnJvbUZyYW1lOiBmdW5jdGlvbihmcmFtZUlkKQorICAgIHsKKyAgICAgICAg
dmFyIGN1cnJlbnRTZWN1cml0eU9yaWdpbiA9IHRoaXMuX3NlY3VyaXR5T3JpZ2luQnlGcmFtZUlk
W2ZyYW1lSWRdOworICAgICAgICBpZiAoIWN1cnJlbnRTZWN1cml0eU9yaWdpbikKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIGRlbGV0ZSB0aGlzLl9zZWN1cml0eU9yaWdp
bkJ5RnJhbWVJZFtmcmFtZUlkXTsKKworICAgICAgICB2YXIgZnJhbWVJZHNGb3JPcmlnaW4gPSB0
aGlzLl9mcmFtZUlkc0J5U2VjdXJpdHlPcmlnaW5bY3VycmVudFNlY3VyaXR5T3JpZ2luXTsKKyAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmcmFtZUlkc0Zvck9yaWdpbjsgKytpKSB7CisgICAg
ICAgICAgICBpZiAoZnJhbWVJZHNGb3JPcmlnaW5baV0gPT09IGZyYW1lSWQpIHsKKyAgICAgICAg
ICAgICAgICBmcmFtZUlkc0Zvck9yaWdpbi5zcGxpY2UoaSwgMSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmcmFtZUlkc0Zv
ck9yaWdpbi5sZW5ndGgpCisgICAgICAgICAgICB0aGlzLl9vcmlnaW5SZW1vdmVkKGN1cnJlbnRT
ZWN1cml0eU9yaWdpbik7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5n
fSBzZWN1cml0eU9yaWdpbgorICAgICAqLworICAgIF9vcmlnaW5SZW1vdmVkOiBmdW5jdGlvbihz
ZWN1cml0eU9yaWdpbikKKyAgICB7CisgICAgICAgIHZhciBmcmFtZUlkc0Zvck9yaWdpbiA9IHRo
aXMuX2ZyYW1lSWRzQnlTZWN1cml0eU9yaWdpbltzZWN1cml0eU9yaWdpbl07CisgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgZnJhbWVJZHNGb3JPcmlnaW47ICsraSkKKyAgICAgICAgICAgIGRl
bGV0ZSB0aGlzLl9zZWN1cml0eU9yaWdpbkJ5RnJhbWVJZFtmcmFtZUlkc0Zvck9yaWdpbltpXV0K
KyAgICAgICAgZGVsZXRlIHRoaXMuX2ZyYW1lSWRzQnlTZWN1cml0eU9yaWdpbltzZWN1cml0eU9y
aWdpbl07CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fZGF0YWJhc2VOYW1lc0J5
U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5dOyArK2kpCisgICAgICAgICAgICB0aGlzLl9k
YXRhYmFzZVJlbW92ZWQoc2VjdXJpdHlPcmlnaW4sIHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3Vy
aXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luXVtpXSk7ICAgICAgICAgICAgICAgIAorICAgICAgICBk
ZWxldGUgdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5d
OworICAgICAgICAvLyBGSVhNRTogZGlzcGF0Y2ggb3JpZ2luIHJlbW92ZWQgZXZlbnQuCisgICAg
fSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWN1cml0eU9yaWdpbgorICAg
ICAqIEBwYXJhbSB7QXJyYXkuPHN0cmluZz59IGRhdGFiYXNlTmFtZXMKKyAgICAgKi8KKyAgICBf
dXBkYXRlT3JpZ2luRGF0YWJhc2VOYW1lczogZnVuY3Rpb24oc2VjdXJpdHlPcmlnaW4sIGRhdGFi
YXNlTmFtZXMpCisgICAgeworICAgICAgICB2YXIgbmV3RGF0YWJhc2VOYW1lcyA9IHt9OworICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGFiYXNlTmFtZXMubGVuZ3RoOyArK2kpCisgICAg
ICAgICAgICBuZXdEYXRhYmFzZU5hbWVzW2RhdGFiYXNlTmFtZXNbaV1dID0gdHJ1ZTsKKyAgICAg
ICAgdmFyIG9sZERhdGFiYXNlTmFtZXMgPSB7fTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1cml0eU9yaWdpbltzZWN1cml0eU9yaWdpbl0ubGVu
Z3RoOyArK2kpCisgICAgICAgICAgICBvbGREYXRhYmFzZU5hbWVzW2RhdGFiYXNlTmFtZXNbaV1d
ID0gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5
T3JpZ2luW3NlY3VyaXR5T3JpZ2luXSA9IGRhdGFiYXNlTmFtZXM7CisgICAgICAgIAorICAgICAg
ICBmb3IgKHZhciBkYXRhYmFzZU5hbWUgaW4gb2xkRGF0YWJhc2VOYW1lcykgeworICAgICAgICAg
ICAgaWYgKCFuZXdEYXRhYmFzZU5hbWVzW2RhdGFiYXNlTmFtZV0pCisgICAgICAgICAgICAgICAg
dGhpcy5fZGF0YWJhc2VSZW1vdmVkKHNlY3VyaXR5T3JpZ2luLCBkYXRhYmFzZU5hbWUpOworICAg
ICAgICB9CisgICAgICAgIGZvciAodmFyIGRhdGFiYXNlTmFtZSBpbiBuZXdEYXRhYmFzZU5hbWVz
KSB7CisgICAgICAgICAgICBpZiAoIW9sZERhdGFiYXNlTmFtZXNbZGF0YWJhc2VOYW1lXSkKKyAg
ICAgICAgICAgICAgICB0aGlzLl9kYXRhYmFzZUFkZGVkKHNlY3VyaXR5T3JpZ2luLCBkYXRhYmFz
ZU5hbWUpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoIXRoaXMuX2RhdGFiYXNl
TmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luXS5sZW5ndGgpCisgICAgICAgICAg
ICB0aGlzLl9vcmlnaW5SZW1vdmVkKHNlY3VyaXR5T3JpZ2luKTsKKyAgICB9LAorICAgIAorICAg
IC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWN1cml0eU9yaWdpbgorICAgICAqIEBwYXJh
bSB7c3RyaW5nfSBkYXRhYmFzZU5hbWUKKyAgICAgKi8KKyAgICBfZGF0YWJhc2VBZGRlZDogZnVu
Y3Rpb24oc2VjdXJpdHlPcmlnaW4sIGRhdGFiYXNlTmFtZSkKKyAgICB7CisgICAgICAgIC8vIEZJ
WE1FOiBkaXNwYXRjaCBkYXRhYmFzZSBhZGRlZCBldmVudC4KKyAgICB9LAorICAgIAorICAgIC8q
KgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWN1cml0eU9yaWdpbgorICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBkYXRhYmFzZU5hbWUKKyAgICAgKi8KKyAgICBfZGF0YWJhc2VSZW1vdmVkOiBmdW5j
dGlvbihzZWN1cml0eU9yaWdpbiwgZGF0YWJhc2VOYW1lKQorICAgIHsKKyAgICAgICAgLy8gRklY
TUU6IGRpc3BhdGNoIGRhdGFiYXNlIHJlbW92ZWQgZXZlbnQuCisgICAgfSwKKyAgICAKKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7SW5kZXhlZERCQWdlbnQuRnJhbWVXaXRoRGF0YWJhc2VOYW1l
c30gZnJhbWVXaXRoRGF0YWJhc2VOYW1lcworICAgICAqLworICAgIF9kYXRhYmFzZU5hbWVzTG9h
ZGVkOiBmdW5jdGlvbihmcmFtZVdpdGhEYXRhYmFzZU5hbWVzKQorICAgIHsKKyAgICAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBpbXBsZW1lbnQgZXZlbnRzIG9yZGVyLCBzbyB0aGF0IHdlIGNvdWxk
IG5vdCB1cGRhdGUgZGF0YWJhc2VOYW1lcyBmb3IgYSBmcmFtZSB0aGF0IHdhcyBhbHJlYWR5IGRl
dGFjaGVkLgorICAgICAgICAKKyAgICAgICAgdmFyIGRhdGFiYXNlTmFtZXMgPSBmcmFtZVdpdGhE
YXRhYmFzZU5hbWVzLmRhdGFiYXNlTmFtZXM7CisgICAgICAgIHZhciBvbGRTZWN1cml0eU9yaWdp
biA9IHRoaXMuX3NlY3VyaXR5T3JpZ2luQnlGcmFtZUlkW2ZyYW1lV2l0aERhdGFiYXNlTmFtZXMu
ZnJhbWVJZF07CisgICAgICAgIGlmIChvbGRTZWN1cml0eU9yaWdpbiAmJiBvbGRTZWN1cml0eU9y
aWdpbiA9PT0gZnJhbWVXaXRoRGF0YWJhc2VOYW1lcy5zZWN1cml0eU9yaWdpbikKKyAgICAgICAg
ICAgIHRoaXMuX3VwZGF0ZU9yaWdpbkRhdGFiYXNlTmFtZXMoZnJhbWVXaXRoRGF0YWJhc2VOYW1l
cy5zZWN1cml0eU9yaWdpbiwgZnJhbWVXaXRoRGF0YWJhc2VOYW1lcy5kYXRhYmFzZU5hbWVzKTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aGlzLl9vcmlnaW5SZW1vdmVkRnJvbUZyYW1l
KGZyYW1lV2l0aERhdGFiYXNlTmFtZXMuZnJhbWVJZCk7CisgICAgICAgICAgICB0aGlzLl9vcmln
aW5BZGRlZFRvRnJhbWUoZnJhbWVXaXRoRGF0YWJhc2VOYW1lcy5mcmFtZUlkLCBmcmFtZVdpdGhE
YXRhYmFzZU5hbWVzLnNlY3VyaXR5T3JpZ2luKTsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU9y
aWdpbkRhdGFiYXNlTmFtZXMoZnJhbWVXaXRoRGF0YWJhc2VOYW1lcy5zZWN1cml0eU9yaWdpbiwg
ZnJhbWVXaXRoRGF0YWJhc2VOYW1lcy5kYXRhYmFzZU5hbWVzKTsKKyAgICAgICAgfQorICAgIH0s
CisKKyAgICBfbG9hZERhdGFiYXNlTmFtZXNGb3JGcmFtZTogZnVuY3Rpb24oZnJhbWVJZCkKKyAg
ICB7CisgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJJbmRleGVk
REJBZ2VudCBlcnJvcjogIiArIGVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEluZGV4ZWREQkFnZW50LnJl
cXVlc3REYXRhYmFzZU5hbWVzRm9yRnJhbWUoZnJhbWVJZCwgY2FsbGJhY2spOworICAgIH0KK30K
KworV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBp
bXBsZW1lbnRzIHtJbmRleGVkREJBZ2VudC5EaXNwYXRjaGVyfQorICovCitXZWJJbnNwZWN0b3Iu
SW5kZXhlZERCRGlzcGF0Y2hlciA9IGZ1bmN0aW9uKGluZGV4ZWREQk1vZGVsKQoreworICAgIHRo
aXMuX2luZGV4ZWREQk1vZGVsID0gaW5kZXhlZERCTW9kZWw7Cit9CisKK1dlYkluc3BlY3Rvci5J
bmRleGVkREJEaXNwYXRjaGVyLl9jYWxsYmFja3MgPSB7fTsKKworV2ViSW5zcGVjdG9yLkluZGV4
ZWREQkRpc3BhdGNoZXIucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEBwYXJhbSB7SW5k
ZXhlZERCQWdlbnQuRnJhbWVXaXRoRGF0YWJhc2VOYW1lc30gZnJhbWVXaXRoRGF0YWJhc2VOYW1l
cworICAgICAqLworICAgIGRhdGFiYXNlTmFtZXNMb2FkZWQ6IGZ1bmN0aW9uKGZyYW1lV2l0aERh
dGFiYXNlTmFtZXMpCisgICAgeworICAgICAgICB0aGlzLl9pbmRleGVkREJNb2RlbC5fZGF0YWJh
c2VOYW1lc0xvYWRlZChmcmFtZVdpdGhEYXRhYmFzZU5hbWVzKTsKKyAgICB9Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJlZU1vZGVs
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVRyZWVNb2Rl
bC5qcwppbmRleCBhNjU1NDg0M2M0MjY4ODAzOWNlYmJhNDEyNjBmM2QzMzA1NjM3MDFiLi44OWMx
Zjg1Nzc5YzcyZTg4N2Y4NjMxZDYyYmFhMDZlODI2NWYzMmM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJlZU1vZGVsLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUcmVlTW9kZWwuanMKQEAg
LTQxMSw2ICs0MTEsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWUgPSBmdW5jdGlv
bihtb2RlbCwgcGFyZW50RnJhbWUsIHBheWxvYWQpCiAgICAgdGhpcy5fbG9hZGVySWQgPSBwYXls
b2FkLmxvYWRlcklkOwogICAgIHRoaXMuX25hbWUgPSBwYXlsb2FkLm5hbWU7CiAgICAgdGhpcy5f
dXJsID0gcGF5bG9hZC51cmw7CisgICAgdGhpcy5fc2VjdXJpdHlPcmlnaW4gPSBwYXlsb2FkLnNl
Y3VyaXR5T3JpZ2luOwogICAgIHRoaXMuX21pbWVUeXBlID0gcGF5bG9hZC5taW1lVHlwZTsKIAog
ICAgIC8qKgpAQCAtNDI5LDcgKzQzMCw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVGcmFt
ZSA9IGZ1bmN0aW9uKG1vZGVsLCBwYXJlbnRGcmFtZSwgcGF5bG9hZCkKIAogV2ViSW5zcGVjdG9y
LlJlc291cmNlVHJlZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAvKioKLSAgICAgKiBAcmV0dXJu
IHtzdHJpbmd9CisgICAgICogQHR5cGUge3N0cmluZ30KICAgICAgKi8KICAgICBnZXQgaWQoKQog
ICAgIHsKQEAgLTQzNyw3ICs0MzgsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWUu
cHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtzdHJpbmd9
CisgICAgICogQHR5cGUge3N0cmluZ30KICAgICAgKi8KICAgICBnZXQgbmFtZSgpCiAgICAgewpA
QCAtNDQ1LDcgKzQ0Niw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVGcmFtZS5wcm90b3R5
cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAg
KiBAdHlwZSB7c3RyaW5nfQogICAgICAqLwogICAgIGdldCB1cmwoKQogICAgIHsKQEAgLTQ1Myw3
ICs0NTQsMTUgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lLnByb3RvdHlwZSA9IHsK
ICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqIEB0eXBl
IHtzdHJpbmd9CisgICAgICovCisgICAgZ2V0IHNlY3VyaXR5T3JpZ2luKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl9zZWN1cml0eU9yaWdpbjsKKyAgICB9LAorCisgICAgLyoqCisgICAg
ICogQHR5cGUge3N0cmluZ30KICAgICAgKi8KICAgICBnZXQgbG9hZGVySWQoKQogICAgIHsKQEAg
LTQ2MSw3ICs0NzAsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWUucHJvdG90eXBl
ID0gewogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuUmVz
b3VyY2VUcmVlRnJhbWV9CisgICAgICogQHR5cGUge1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVG
cmFtZX0KICAgICAgKi8KICAgICBnZXQgcGFyZW50RnJhbWUoKQogICAgIHsKQEAgLTQ2OSw3ICs0
NzgsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWUucHJvdG90eXBlID0gewogICAg
IH0sCiAKICAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtBcnJheS48V2ViSW5zcGVjdG9yLlJlc291
cmNlVHJlZUZyYW1lPn0KKyAgICAgKiBAdHlwZSB7QXJyYXkuPFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVRyZWVGcmFtZT59CiAgICAgICovCiAgICAgZ2V0IGNoaWxkRnJhbWVzKCkKICAgICB7CkBAIC00
OTIsNiArNTAxLDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy5fbG9hZGVySWQgPSBmcmFtZVBheWxvYWQubG9hZGVySWQ7CiAgICAg
ICAgIHRoaXMuX25hbWUgPSBmcmFtZVBheWxvYWQubmFtZTsKICAgICAgICAgdGhpcy5fdXJsID0g
ZnJhbWVQYXlsb2FkLnVybDsKKyAgICAgICAgdGhpcy5fc2VjdXJpdHlPcmlnaW4gPSBmcmFtZVBh
eWxvYWQuc2VjdXJpdHlPcmlnaW47CiAgICAgICAgIHRoaXMuX21pbWVUeXBlID0gZnJhbWVQYXls
b2FkLm1pbWVUeXBlOwogCiAgICAgICAgIHZhciBtYWluUmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJj
ZXNNYXBbdGhpcy5fdXJsXTsKQEAgLTUwMiw3ICs1MTIsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VUcmVlRnJhbWUucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcmV0
dXJuIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2V9CisgICAgICogQHR5cGUge1dlYkluc3BlY3Rvci5S
ZXNvdXJjZX0KICAgICAgKi8KICAgICBnZXQgbWFpblJlc291cmNlKCkKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwpp
bmRleCBmZGZiN2IzMWFiZGFlNDZhMjdiZWExYzc2ZDNlZDJjMTE0Y2QyNGIxLi42OGVkY2ViNzc3
NWQ2ZWFhNjYxYzA1YTM1OThjYjc4MjI3N2QxNGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKQEAgLTU2NSw2ICs1NjUs
NyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlID0gewogICAgIF9wb3B1
bGF0ZUFwcGxpY2F0aW9uQ2FjaGVUcmVlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlz
Ll9hcHBsaWNhdGlvbkNhY2hlTW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2Fj
aGVNb2RlbCgpOworICAgICAgICB0aGlzLl9pbmRleGVkREJNb2RlbCA9IG5ldyBXZWJJbnNwZWN0
b3IuSW5kZXhlZERCTW9kZWwoKTsKICAgICAgICAgCiAgICAgICAgIHRoaXMuX2FwcGxpY2F0aW9u
Q2FjaGVWaWV3cyA9IHt9OwogICAgICAgICB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlRnJhbWVFbGVt
ZW50cyA9IHt9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9XZWJLaXQucXJjIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQu
cXJjCmluZGV4IDY2NDI1Yzc3NzUyZjIyNGQxNzkwMzBlZDk4NzFmZjk4NzRmZWQwZDQuLjE2NzZl
ODEzMjY3NjRmYTQ5ZjA3MjRmYzQzZDRmY2I1OGU3MjJhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKQEAgLTY1LDYgKzY1LDcgQEAKICAgICA8
ZmlsZT5IZWFwU25hcHNob3RXb3JrZXJEaXNwYXRjaGVyLmpzPC9maWxlPgogICAgIDxmaWxlPkhl
bHBTY3JlZW4uanM8L2ZpbGU+CiAgICAgPGZpbGU+SW1hZ2VWaWV3LmpzPC9maWxlPgorICAgIDxm
aWxlPkluZGV4ZWREQk1vZGVsLmpzPC9maWxlPgogICAgIDxmaWxlPkluamVjdGVkRmFrZVdvcmtl
ci5qczwvZmlsZT4KICAgICA8ZmlsZT5pbnNwZWN0b3IuanM8L2ZpbGU+CiAgICAgPGZpbGU+SW5z
cGVjdG9yQmFja2VuZC5qczwvZmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCmluZGV4IDUwZTkxOWFkZGI5ZDBlYTY2ZGJhZTU0YzQz
YzRmZmQ0ZTA1MTZhZmMuLmFkMzg0NjUxZDFlNzlkZjg1YTU5NjkzYzY5ZjNmNDMxZTRkOTQzMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
Lmh0bWwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
aHRtbApAQCAtODEsNiArODEsNyBAQCBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IkNvb2tpZUl0ZW1zVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQXBwbGljYXRpb25DYWNoZU1vZGVsLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJBcHBsaWNh
dGlvbkNhY2hlSXRlbXNWaWV3LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJJbmRleGVkREJNb2RlbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU2NyaXB0LmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJTaWRlYmFyUGFuZS5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRWxlbWVudHNUcmVl
T3V0bGluZS5qcyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>