<?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>84652</bug_id>
          
          <creation_ts>2012-04-23 16:56:20 -0700</creation_ts>
          <short_desc>IndexedDB: support openCursor(IDBKey)</short_desc>
          <delta_ts>2012-06-08 14:58:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alec Flett">alecflett</reporter>
          <assigned_to name="Alec Flett">alecflett</assigned_to>
          <cc>abarth</cc>
    
    <cc>jsbell</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>608198</commentid>
    <comment_count>0</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-23 16:56:20 -0700</bug_when>
    <thetext>pretty trivial - per the spec, this is equivalent to openCursor(IDBKeyRange.only(key))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609871</commentid>
    <comment_count>1</comment_count>
      <attachid>138834</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-25 10:16:34 -0700</bug_when>
    <thetext>Created attachment 138834
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609879</commentid>
    <comment_count>2</comment_count>
      <attachid>138837</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-25 10:26:10 -0700</bug_when>
    <thetext>Created attachment 138837
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609904</commentid>
    <comment_count>3</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-25 10:57:05 -0700</bug_when>
    <thetext>jsbell@ - mind taking a look?

Note that this patch removes support for dictionary-style parameters to openCursor() but as best as I can tell, they&apos;re currently broken for all overloaded key/keyrange APIs, (i.e. count(), get(), etc) and I can&apos;t figure out a way to get the IDL compiler generating the right code to recognize them. 

Basically the generated code from the IDL only allows/detects dictionary iteration , so I while I know that openCursor({range: keyRange}) is now broken with this, I *believe*  that get({key:...}) might work. 

Further, I see no reference to this kind of support in the spec, nor can I find any documentation that we *should* support this. 

But in either case we&apos;re inconsistent enough for me to believe that it&apos;s ok to break this right now and file a new bug if necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609943</commentid>
    <comment_count>4</comment_count>
      <attachid>138837</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-04-25 11:48:54 -0700</bug_when>
    <thetext>Comment on attachment 138837
Patch

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

Overall lgtm, with nits.

&gt; Source/WebCore/ChangeLog:10
&gt; +        Add signatures for openCursor/openKeyCursor(IDBKey).

This should be above the Test: line

&gt; LayoutTests/storage/indexeddb/resources/opencursor-key.js:64
&gt; +    request.onsuccess = testAll;

Change this to transaction.oncomplete = testAll, (and add earlier transaction = request.result, before request is overridden). It will soon be an error to create a transaction within the setVersion&apos;s callback.

&gt; LayoutTests/storage/indexeddb/resources/opencursor-key.js:98
&gt; +      testIndex();

Another option is to register this with trans.oncomplete = testIndex; e.g. at the very end of the testObjectStore() function so the chaining logic is clearer, and replace this line with e.g. // Allow transaction to complete. I find that clearer, YMMV.

&gt; LayoutTests/storage/indexeddb/resources/opencursor-key.js:105
&gt; +

Delete empty line.

&gt; LayoutTests/storage/indexeddb/resources/opencursor-key.js:146
&gt; +

Delete empty line.

&gt; LayoutTests/storage/indexeddb/resources/opencursor-key.js:181
&gt; +

Delete empty line,

&gt; LayoutTests/storage/indexeddb/resources/opencursor-key.js:183
&gt; +

Delete empty line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609964</commentid>
    <comment_count>5</comment_count>
      <attachid>138855</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-25 12:30:25 -0700</bug_when>
    <thetext>Created attachment 138855
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609966</commentid>
    <comment_count>6</comment_count>
      <attachid>138837</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-25 12:31:08 -0700</bug_when>
    <thetext>Comment on attachment 138837
Patch

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

&gt;&gt; LayoutTests/storage/indexeddb/resources/opencursor-key.js:64
&gt;&gt; +    request.onsuccess = testAll;
&gt; 
&gt; Change this to transaction.oncomplete = testAll, (and add earlier transaction = request.result, before request is overridden). It will soon be an error to create a transaction within the setVersion&apos;s callback.

agreed, and cleaned up the other tests below to use the oncomplete stuff. Much cleaner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609968</commentid>
    <comment_count>7</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-25 12:31:46 -0700</bug_when>
    <thetext>ojan@ - r? cq?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610124</commentid>
    <comment_count>8</comment_count>
      <attachid>138855</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-25 16:04:47 -0700</bug_when>
    <thetext>Comment on attachment 138855
Patch

Clearing flags on attachment: 138855

Committed r115255: &lt;http://trac.webkit.org/changeset/115255&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610125</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-25 16:04:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138834</attachid>
            <date>2012-04-25 10:16:34 -0700</date>
            <delta_ts>2012-04-25 10:26:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84652-20120425101633.patch</filename>
            <type>text/plain</type>
            <size>30280</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDE4ZTEzNmZkMDMxZWRh
MDdkOGVjM2Q2ZGFmNjU0ZTRkMmE0ZTQ1Ni4uMzNiNjI0ZGZmYjkxMzJmOWFlYzI3OTRkODQwNWFl
ZjEzZDE5MTMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA0LTI1ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IHN1
cHBvcnQgb3BlbkN1cnNvcihJREJLZXkpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NDY1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRlc3Q6IHN0b3JhZ2UvaW5kZXhlZGRiL29wZW5jdXJzb3Ita2V5Lmh0
bWwKKworICAgICAgICBBZGQgc2lnbmF0dXJlcyBmb3Igb3BlbkN1cnNvci9vcGVuS2V5Q3Vyc29y
KElEQktleSkuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5k
ZXg6Om9wZW5DdXJzb3IpOgorICAgICAgICAoSURCSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SURCSW5kZXg6Om9wZW5LZXlDdXJzb3IpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkluZGV4LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcik6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IpOgorICAg
ICAgICAoSURCT2JqZWN0U3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlLmlkbDoKKwogMjAxMi0wNC0yNSAgJ1BhdmVsIEZlbGRtYW4nICA8cGZlbGRtYW5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIE5vdCByZXZpZXdlZDogaW5zcGVjdG9yIGZyb250ZW5k
IHRlc3RzIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkluZGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4
LmNwcAppbmRleCA3OGMwMDQxNTE0YTM3ZjU3MWZjZDU3ZGI2MTlhNDNmZjc1NzcxZTEzLi5hODhj
YWRlMjBlZmUwZGM2OWE4ZmQ0NDliNDIyN2JlYjBhZjQ5YTU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCkBAIC03NSw2ICs3NSwxNSBAQCBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhcwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCitQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlv
biwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6
b3BlbkN1cnNvciIpOworICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlS
YW5nZTo6b25seShrZXksIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworICAg
IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtleVJhbmdlLnJlbGVhc2UoKSwgZWMpOworfQor
CiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4Ojpjb3VudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJJbmRleDo6Y291bnQiKTsKQEAgLTEx
NSw2ICsxMjQsMTUgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbktleUN1
cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgIHJldHVybiByZXF1ZXN0
OwogfQogCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIHVu
c2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgSURCX1RS
QUNFKCJJREJPYmplY3RTdG9yZTo6b3BlbktleUN1cnNvciIpOworICAgIFJlZlB0cjxJREJLZXlS
YW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShrZXksIGVjKTsKKyAgICBpZiAoZWMp
CisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBvcGVuS2V5Q3Vyc29yKGNvbnRleHQsIGtl
eVJhbmdlLnJlbGVhc2UoKSwgZWMpOworfQorCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQklu
ZGV4OjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJL
ZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJJbmRleDo6
Z2V0Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAppbmRl
eCBkZWZiMjZjMGIyOTM1MWUwYzI3ZmIzZmU1YmU2ZDZmMzg3MzgxYmRmLi5lYmJiZjk2YWFhNTA1
NjdiYzQ2MGRkNmRkZTgzOWM2MmI3YThjY2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4LmgKQEAgLTU1LDE2ICs1NSwyMCBAQCBwdWJsaWM6CiAgICAgYm9v
bCBtdWx0aUVudHJ5KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT5tdWx0aUVudHJ5KCk7IH0K
IAogICAgIC8vIEZJWE1FOiBUcnkgdG8gbW9kaWZ5IHRoZSBjb2RlIGdlbmVyYXRvciBzbyB0aGlz
IGlzIHVubmVlZGVkLgotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4g
b3BlbkN1cnNvcihjb250ZXh0LCAwLCBlYyk7IH0KKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29k
ZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwgc3RhdGljX2Nhc3Q8SURCS2V5UmFu
Z2UqPigwKSwgZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtl
eVJhbmdlLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBr
ZXlSYW5nZSwgSURCQ3Vyc29yOjpORVhULCBlYyk7IH0KKyAgICBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0
cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29u
dGV4dCwga2V5LCBJREJDdXJzb3I6Ok5FWFQsIGVjKTsgfQogICAgIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYpOworICAg
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxJREJLZXk+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBjb3VudChjb250
ZXh0LCBzdGF0aWNfY2FzdDxJREJLZXlSYW5nZSo+KDApLCBlYyk7IH0KICAgICBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElE
QktleVJhbmdlPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5PiwgRXhjZXB0
aW9uQ29kZSYpOwogCi0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVy
biBvcGVuS2V5Q3Vyc29yKGNvbnRleHQsIDAsIGVjKTsgfSAKKyAgICBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhj
ZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5LZXlDdXJzb3IoY29udGV4dCwgc3RhdGljX2Nh
c3Q8SURCS2V5UmFuZ2UqPigwKSwgZWMpOyB9IAogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRy
PElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5L
ZXlDdXJzb3IoY29udGV4dCwga2V5UmFuZ2UsIElEQkN1cnNvcjo6TkVYVCwgZWMpOyB9CisgICAg
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKSB7
IHJldHVybiBvcGVuS2V5Q3Vyc29yKGNvbnRleHQsIGtleSwgSURCQ3Vyc29yOjpORVhULCBlYyk7
IH0KICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJl
Y3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5L
ZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5PiwgdW5z
aWduZWQgc2hvcnQgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGdl
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXk+LCBFeGNlcHRpb25D
b2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5pZGwK
aW5kZXggMmM1N2M2MThkZGRmOWYzNGFkNWFjMzdlY2VkNmI5MjE2YTU2NTQ0ZC4uYjIzZTU1YWNk
NjMyY2YyNmUzYTdhNjU4NTI0ZGYzYmIzMWUyZDdiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmlkbApAQCAtMzYsOCArMzYsMTIgQEAgbW9kdWxlIHN0
b3JhZ2UgewogCiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJS
ZXF1ZXN0IG9wZW5DdXJzb3IoaW4gW09wdGlvbmFsXSBJREJLZXlSYW5nZSByYW5nZSwgaW4gW09w
dGlvbmFsXSB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24pCiAgICAgICAgICAgICByYWlzZXMgKElE
QkRhdGFiYXNlRXhjZXB0aW9uKTsKKyAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRdIElEQlJlcXVlc3Qgb3BlbkN1cnNvcihpbiBJREJLZXkga2V5LCBpbiBbT3B0aW9uYWxd
IHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbikKKyAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJh
c2VFeGNlcHRpb24pOwogICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0g
SURCUmVxdWVzdCBvcGVuS2V5Q3Vyc29yKGluIFtPcHRpb25hbF0gSURCS2V5UmFuZ2UgcmFuZ2Us
IGluIFtPcHRpb25hbF0gdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uKQogICAgICAgICAgICAgcmFp
c2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CisgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IG9wZW5LZXlDdXJzb3IoaW4gSURCS2V5IGtleSwgaW4g
W09wdGlvbmFsXSB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24pCisgICAgICAgICAgICByYWlzZXMg
KElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKICAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRdIElEQlJlcXVlc3QgZ2V0KGluIElEQktleVJhbmdlIGtleSkKICAgICAgICAgICAg
IHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwogICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0
RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBnZXQoaW4gSURCS2V5IGtleSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAppbmRl
eCA1OTRmNjZlOWU4ZDY2NWZkMzMxNDVkMGZlNjNjMjFkYzNiMmIzNjVmLi40MzE5ZDdmMGE5Mzhk
YTVmN2Q3NzA2ZjBjYmJkODZiNTYyOTA3ZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC0yNzQsNiArMjc0LDE1IEBA
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4CiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwog
fQogCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIHVu
c2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgSURCX1RS
QUNFKCJJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvciIpOworICAgIFJlZlB0cjxJREJLZXlSYW5n
ZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShrZXksIGVjKTsKKyAgICBpZiAoZWMpCisg
ICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtleVJhbmdl
LnJlbGVhc2UoKSwgZWMpOworfQorCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0
b3JlOjpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElE
QktleVJhbmdlPiByYW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJ
REJPYmplY3RTdG9yZTo6Y291bnQiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCmluZGV4IGVhN2I3N2VhODM2NzNmODQ4MjVlY2JhY2Nj
NWM1NjcwNGFiYjhlZDAuLjVkNGQxOGRjMDY1OWM0YjM5MjA4ZGQ2ODI5MWI1MTEyOTQzY2NmOTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmUuaApAQCAtNjQsOCArNjQsOSBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBhZGQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gYWRkKGNv
bnRleHQsIHZhbHVlLCAwLCBlYyk7ICB9CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBwdXQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gcHV0KGNvbnRleHQs
IHZhbHVlLCAwLCBlYyk7ICB9CiAgICAgUGFzc1JlZlB0cjxJREJJbmRleD4gY3JlYXRlSW5kZXgo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIEV4Y2VwdGlvbkNvZGUm
IGVjKSB7IHJldHVybiBjcmVhdGVJbmRleChuYW1lLCBrZXlQYXRoLCBEaWN0aW9uYXJ5KCksIGVj
KTsgfQotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbkN1cnNv
cihjb250ZXh0LCAwLCBlYyk7IH0gCisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vy
c29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7
IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIHN0YXRpY19jYXN0PElEQktleVJhbmdlKj4oMCks
IGVjKTsgfSAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2Us
IEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtleVJhbmdl
LCBJREJDdXJzb3I6Ok5FWFQsIGVjKTsgfSAKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9w
ZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJL
ZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwg
a2V5LCBJREJDdXJzb3I6Ok5FWFQsIGVjKTsgfSAKIAogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleT4sIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIEV4Y2VwdGlvbkNvZGUmKTsKQEAg
LTgwLDYgKzgxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5n
JiBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9w
ZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsgCisgICAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNz
UmVmUHRyPElEQktleT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYp
OyAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBjb3VudChjb250ZXh0LCBz
dGF0aWNfY2FzdDxJREJLZXlSYW5nZSo+KDApLCBlYyk7IH0KICAgICBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY291bnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5PiwgRXhjZXB0aW9uQ29k
ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuaWRsCmluZGV4IDVlOWUyMDljOWYyODk5ZGJlZDBjNjY4NjdjMmZlYWYwNjYxN2RmODMu
LjhjZWQzOGNkMWVmYTMyY2NiMzRmMDYyOGQzYzZhOTI4ZWI4ODdmZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5pZGwKQEAgLTQ5
LDYgKzQ5LDggQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRh
YmFzZUV4Y2VwdGlvbik7CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
XSBJREJSZXF1ZXN0IG9wZW5DdXJzb3IoaW4gW09wdGlvbmFsXSBJREJLZXlSYW5nZSByYW5nZSwg
aW4gW09wdGlvbmFsXSB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24pCiAgICAgICAgICAgICByYWlz
ZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKKyAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRdIElEQlJlcXVlc3Qgb3BlbkN1cnNvcihpbiBJREJLZXkga2V5LCBpbiBbT3B0
aW9uYWxdIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbikKKyAgICAgICAgICAgIHJhaXNlcyAoSURC
RGF0YWJhc2VFeGNlcHRpb24pOwogICAgICAgICBJREJJbmRleCBjcmVhdGVJbmRleChpbiBET01T
dHJpbmcgbmFtZSwgaW4gRE9NU3RyaW5nIGtleVBhdGgsIGluIFtPcHRpb25hbF0gRGljdGlvbmFy
eSBvcHRpb25zKQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CiAg
ICAgICAgIElEQkluZGV4IGluZGV4KGluIERPTVN0cmluZyBuYW1lKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGJjMjNmYWU1
MDc0YjEwNmExM2EwYzhiMjM3MTUzMzRlZTE1YjVmMmYuLjZlZjhlYmJiN2VjOTEwMzA5MjRjOTEw
YjNkYmZiZDBjOTcxM2E0OWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMi0wNC0yNSAgQWxl
YyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBz
dXBwb3J0IG9wZW5DdXJzb3IoSURCS2V5KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODQ2NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBdWdtZW50IGV4aXN0aW5nIHRlc3RzLCBhbmQgYWRkIG5ldyB0ZXN0
cyB0byBzdXBwb3J0CisgICAgICAgIElEQktleSBwYXJhbWV0ZXIgdG8gb3BlbkN1cnNvci9vcGVu
S2V5Q3Vyc29yLiBOb3RlIHRoYXQgdGhpcyByZW1vdmVzCisgICAgICAgIGEgdGVzdCB0aGF0IHdh
cyBwcmV2aW91c2x5IHVzaW5nIGRpY3Rpb25hcnktc3R5bGUgcGFyYW1ldGVycywKKyAgICAgICAg
d2hpY2ggaGF2ZSBiZWVuIHRlbXBvcmFyaWx5IGJyb2tlbiBkdWUgdG8gSURMIGxpbWl0YXRpb25z
LgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWRlbGV0ZS1leHBlY3RlZC50
eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJzb3ItZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29wZW5jdXJzb3Ita2V5LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb3BlbmN1cnNvci1rZXkuaHRt
bDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1k
ZWxldGUuanM6CisgICAgICAgIChvcGVuQ3Vyc29yKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvb3Blbi1jdXJzb3IuanM6CisgICAgICAgIChlbXB0eUN1cnNvcldpdGhL
ZXlTdWNjZXNzKToKKyAgICAgICAgKG9wZW5FbXB0eUN1cnNvcldpdGhLZXkpOgorICAgICAgICAo
Y3Vyc29yV2l0aEtleVN1Y2Nlc3MpOgorICAgICAgICAob3BlbkN1cnNvcldpdGhLZXkpOgorICAg
ICAgICAoZW1wdHlDdXJzb3JTdWNjZXNzKToKKyAgICAgICAgKG9wZW5FbXB0eUN1cnNvcik6Cisg
ICAgICAgIChjdXJzb3JTdWNjZXNzKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvb3BlbmN1cnNvci1rZXkuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisgICAgICAg
IChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKToK
KyAgICAgICAgKGNyZWF0ZUluZGV4ZXMpOgorICAgICAgICAodGVzdEFsbCk6CisgICAgICAgICh0
ZXN0T2JqZWN0U3RvcmUucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdE9iamVjdFN0
b3JlKToKKyAgICAgICAgKHRlc3RJbmRleC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0
ZXN0SW5kZXgpOgorICAgICAgICAodGVzdEluZGV4V2l0aEtleS5yZXF1ZXN0Lm9uc3VjY2Vzcyk6
CisgICAgICAgICh0ZXN0SW5kZXhXaXRoS2V5KToKKwogMjAxMi0wNC0yNSAgUGllcnJlIFJvc3Np
ICA8cGllcnJlLnJvc3NpQGdtYWlsLmNvbT4KIAogICAgICAgICBbU1ZHXSBOb3RoaW5nIHNob3Vs
ZCBiZSBzdHJva2VkIHdoZW4gdGhlIHN0cm9rZS13aWR0aCBpcyAwCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItZGVsZXRlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1kZWxldGUtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGFkNzhjYmJhOTVlZWVmNjhmYTc2NjJkZTM2Y2QyYWI0MjdhOGUwZjEuLjg3ZjFhYzUyZWMy
MTU0ODM5OTk5Nzk1ZDU4YzU0YTFjZGM5NWVhZGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1kZWxldGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1kZWxldGUtZXhwZWN0ZWQudHh0CkBAIC0xOSw3
ICsxOSw3IEBAIG9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTMnLCAnbXlLZXkzJykKIG9iamVjdFN0
b3JlLmFkZCgnbXlWYWx1ZTQnLCAnbXlLZXk0JykKIG9wZW5DdXJzb3IxCiB0cmFucyA9IGRiLnRy
YW5zYWN0aW9uKFsndGVzdCddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKQotdHJhbnMub2Jq
ZWN0U3RvcmUoJ3Rlc3QnKS5vcGVuQ3Vyc29yKHtyYW5nZToga2V5UmFuZ2V9KQordHJhbnMub2Jq
ZWN0U3RvcmUoJ3Rlc3QnKS5vcGVuQ3Vyc29yKGtleVJhbmdlKQogZXZlbnQudGFyZ2V0LnJlc3Vs
dC5kZWxldGUoKQogUEFTUyBldmVudC50YXJnZXQucmVzdWx0LnZhbHVlIGlzICJteVZhbHVlMSIK
IGV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJzb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJzb3ItZXhwZWN0ZWQudHh0CmluZGV4IDRiOTUzOTMw
MWU0N2JlY2M1NDFkNTNjYTQxNGJiODA0ZjQ5MjM0ZjMuLjZmNGVjNDQwYjQ0ODVhZTQ1MmI5NTRl
MjIxMjQ0OWU2NjNkYjI2NDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL29wZW4tY3Vyc29yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9vcGVuLWN1cnNvci1leHBlY3RlZC50eHQKQEAgLTE3LDE2ICsxNywzNCBAQCBvYmpl
Y3RTdG9yZS5hZGQoJ215VmFsdWUnLCAnbXlLZXknKQogT3BlbmluZyBjdXJzb3IKIGV2ZW50LnRh
cmdldC5zb3VyY2Uub3BlbkN1cnNvcihrZXlSYW5nZSkKIEN1cnNvciBvcGVuZWQgc3VjY2Vzc2Z1
bGx5LgotUEFTUyBldmVudC50YXJnZXQucmVzdWx0LmRpcmVjdGlvbiBpcyAwCi1QQVNTIGV2ZW50
LnRhcmdldC5yZXN1bHQua2V5IGlzICdteUtleScKLVBBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdC52
YWx1ZSBpcyAnbXlWYWx1ZScKK1BBU1MgY3Vyc29yLmRpcmVjdGlvbiBpcyAwCitQQVNTIGN1cnNv
ci5rZXkgaXMgJ215S2V5JworUEFTUyBjdXJzb3IudmFsdWUgaXMgJ215VmFsdWUnCiAKIFBhc3Np
bmcgYW4gaW52YWxpZCBrZXkgaW50byAuY29udGludWUoe30pLgotUEFTUyBDYXVnaHQgZXhjZXB0
aW9uOiBFcnJvcjogREFUQV9FUlI6IERPTSBJREJEYXRhYmFzZSBFeGNlcHRpb24gNQorRXhwZWN0
aW5nIGV4Y2VwdGlvbiBmcm9tIGV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoe30pCitQQVNT
IEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9u
LkRBVEFfRVJSCiAKIE9wZW5pbmcgYW4gZW1wdHkgY3Vyc29yLgogb2JqZWN0U3RvcmUub3BlbkN1
cnNvcihrZXlSYW5nZSkKIEVtcHR5IGN1cnNvciBvcGVuZWQgc3VjY2Vzc2Z1bGx5LgorUEFTUyBj
dXJzb3IgaXMgbnVsbAorT3BlbmluZyBjdXJzb3IKK2V2ZW50LnRhcmdldC5zb3VyY2Uub3BlbkN1
cnNvcigibXlLZXkiKQorQ3Vyc29yIG9wZW5lZCBzdWNjZXNzZnVsbHkuCitQQVNTIGN1cnNvci5k
aXJlY3Rpb24gaXMgMAorUEFTUyBjdXJzb3Iua2V5IGlzICdteUtleScKK1BBU1MgY3Vyc29yLnZh
bHVlIGlzICdteVZhbHVlJworCitQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gLmNvbnRpbnVl
KHt9KS4KK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBjdXJzb3IuY29udGludWUoe30pCitQQVNT
IEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9u
LkRBVEFfRVJSCisKK09wZW5pbmcgYW4gZW1wdHkgY3Vyc29yLgorb2JqZWN0U3RvcmUub3BlbkN1
cnNvcigiSW5leGlzdGVudEtleSIpCitFbXB0eSBjdXJzb3Igb3BlbmVkIHN1Y2Nlc3NmdWxseS4K
IFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3BlbmN1cnNvci1rZXktZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3BlbmN1cnNvci1rZXktZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmMDRlYjRkZWY2YWNiOTc5N2VkNmM1OTllNmRmNzVhN2Yx
ODZiYjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9v
cGVuY3Vyc29yLWtleS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3NSBAQAorVGVzdCBvcGVuQ3Vy
c29yL29wZW5LZXlDdXJzb3Igd2l0aCByYXcgSURCS2V5cy4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK2luZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYud2Via2l0SW5k
ZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYubXNJbmRleGVkREIgfHwgc2VsZi5P
SW5kZXhlZERCOworCitpbmRleGVkREIub3BlbihuYW1lKQorb3BlblN1Y2Nlc3MoKToKK2RiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdAorcmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKQorRGVsZXRl
ZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK29iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
b2JqZWN0U3RvcmVOYW1lKTsKK0ZpcnN0LCBhZGQgYWxsIG91ciBkYXRhIHRvIHRoZSBvYmplY3Qg
c3RvcmUuCityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1
ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9i
amVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0
ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVE
YXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtp
XS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
YWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7City
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0
U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3Jl
RGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtl
eSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwg
b2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVj
dFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0g
b2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRh
W2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52
YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRk
KG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CitOb3cg
Y3JlYXRlIHRoZSBpbmRleGVzLgorb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhEYXRhW2ld
Lm5hbWUsIGluZGV4RGF0YVtpXS5rZXlQYXRoLCBpbmRleERhdGFbaV0ub3B0aW9ucyk7CitvYmpl
Y3RTdG9yZS5jcmVhdGVJbmRleChpbmRleERhdGFbaV0ubmFtZSwgaW5kZXhEYXRhW2ldLmtleVBh
dGgsIGluZGV4RGF0YVtpXS5vcHRpb25zKTsKK29iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4
RGF0YVtpXS5uYW1lLCBpbmRleERhdGFbaV0ua2V5UGF0aCwgaW5kZXhEYXRhW2ldLm9wdGlvbnMp
OwordGVzdE9iamVjdFN0b3JlKCkKK3RyYW5zID0gZGIudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVO
YW1lLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKQorb2JqZWN0U3RvcmUgPSB0cmFucy5vYmpl
Y3RTdG9yZShvYmplY3RTdG9yZU5hbWUpCityZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNv
cignMjM3LTIzLTc3MzknKQorUEFTUyBjdXJzb3Iua2V5IGlzICcyMzctMjMtNzczOScKK1BBU1Mg
SlNPTi5zdHJpbmdpZnkoY3Vyc29yLnZhbHVlKSBpcyBKU09OLnN0cmluZ2lmeShvYmplY3RTdG9y
ZURhdGFbN10udmFsdWUpCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzIGN1cnNvci5rZXkKK2N1
cnNvci5jb250aW51ZSgpCitQQVNTIGN1cnNvciBpcyBudWxsCit0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKG9iamVjdFN0b3JlTmFtZSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkKK29iamVjdFN0
b3JlID0gdHJhbnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKQoraW5kZXggPSBvYmplY3RT
dG9yZS5pbmRleCgnd2VpZ2h0JykKK3JlcXVlc3QgPSBpbmRleC5vcGVuQ3Vyc29yKDE4MCkKK1BB
U1MgY3Vyc29yLmtleSBpcyAxODAKK1BBU1MgSlNPTi5zdHJpbmdpZnkoY3Vyc29yLnZhbHVlKSBp
cyBKU09OLnN0cmluZ2lmeShvYmplY3RTdG9yZURhdGFbMl0udmFsdWUpCitQQVNTIGN1cnNvci5w
cmltYXJ5S2V5IGlzICcyMzctMjMtNzczNCcKK2N1cnNvci5jb250aW51ZSgpCitQQVNTIGN1cnNv
ci5rZXkgaXMgMTgwCitQQVNTIEpTT04uc3RyaW5naWZ5KGN1cnNvci52YWx1ZSkgaXMgSlNPTi5z
dHJpbmdpZnkob2JqZWN0U3RvcmVEYXRhWzZdLnZhbHVlKQorUEFTUyBjdXJzb3IucHJpbWFyeUtl
eSBpcyAnMjM3LTIzLTc3MzgnCitjdXJzb3IuY29udGludWUoKQorUEFTUyBjdXJzb3Iua2V5IGlz
IDE4MAorUEFTUyBKU09OLnN0cmluZ2lmeShjdXJzb3IudmFsdWUpIGlzIEpTT04uc3RyaW5naWZ5
KG9iamVjdFN0b3JlRGF0YVsxMF0udmFsdWUpCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzICcy
MzctMjMtNzc0MicKK2N1cnNvci5jb250aW51ZSgpCitQQVNTIGN1cnNvciBpcyBudWxsCit0cmFu
cyA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSwgSURCVHJhbnNhY3Rpb24uUkVBRF9X
UklURSkKK29iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKQor
aW5kZXggPSBvYmplY3RTdG9yZS5pbmRleCgnd2VpZ2h0JykKK3JlcXVlc3QgPSBpbmRleC5vcGVu
S2V5Q3Vyc29yKDE4MCkKK1BBU1MgY3Vyc29yLmtleSBpcyAxODAKK1BBU1MgY3Vyc29yLnByaW1h
cnlLZXkgaXMgJzIzNy0yMy03NzM0JworY3Vyc29yLmNvbnRpbnVlKCkKK1BBU1MgY3Vyc29yLmtl
eSBpcyAxODAKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgJzIzNy0yMy03NzM4JworY3Vyc29y
LmNvbnRpbnVlKCkKK1BBU1MgY3Vyc29yLmtleSBpcyAxODAKK1BBU1MgY3Vyc29yLnByaW1hcnlL
ZXkgaXMgJzIzNy0yMy03NzQyJworY3Vyc29yLmNvbnRpbnVlKCkKK1BBU1MgY3Vyc29yIGlzIG51
bGwKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuY3Vyc29yLWtleS5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3BlbmN1cnNvci1rZXkuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xOGIxNTBjZjUzMDRmYjdhMGZhYTlmZDM2OWEyODNhOWMxY2YwZTc2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3BlbmN1cnNvci1r
ZXkuaHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9vcGVuY3Vyc29yLWtleS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9jdXJzb3ItZGVsZXRlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2N1cnNvci1kZWxldGUuanMKaW5kZXggZGI2ZTJiOTM1NDhhM2E0OWRi
NTRiMGQ3MjAwMTU4ODRjMTJlYjMzNi4uYmJjOGQ4ZjE2YWU4ZWZiZjQ1MDlmOGU5MjQ3OTQxNGI1
MWFhNTE2YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL2N1cnNvci1kZWxldGUuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2N1cnNvci1kZWxldGUuanMKQEAgLTQ2LDcgKzQ2LDcgQEAgZnVuY3Rpb24gb3Bl
bkN1cnNvcigpCiAgICAgZGVidWcoIm9wZW5DdXJzb3IxIik7CiAgICAgZXZhbEFuZExvZygidHJh
bnMgPSBkYi50cmFuc2FjdGlvbihbJ3Rlc3QnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSki
KTsKICAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoIm15S2V5MSIpOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgndGVzdCcpLm9wZW5DdXJz
b3Ioe3JhbmdlOiBrZXlSYW5nZX0pIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5z
Lm9iamVjdFN0b3JlKCd0ZXN0Jykub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKICAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGN1cnNvclN1Y2Nlc3M7CiAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CiAgICAgY291bnRlciA9IDE7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi1jdXJzb3IuanMgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi1jdXJzb3IuanMKaW5kZXggOWY5
ZGMzYjZiNzk1YmYwZWQ5ZTkzNjRmN2FiZjg4Y2QwZTZjYjg3Yy4uYzgzMWNlZjMxZmNhOWM1NTJl
MTk1NmE5Njk0MDAwMzQwOWNmOTU2MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL29wZW4tY3Vyc29yLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLWN1cnNvci5qcwpAQCAtNSwxNyArNSw1NyBAQCBp
ZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CiAKIGRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidz
IG9wZW5DdXJzb3IuIik7CiAKLWZ1bmN0aW9uIGVtcHR5Q3Vyc29yU3VjY2VzcygpCisKK2Z1bmN0
aW9uIGVtcHR5Q3Vyc29yV2l0aEtleVN1Y2Nlc3MoKQogewotICAgIGRlYnVnKCJFbXB0eSBjdXJz
b3Igb3BlbmVkIHN1Y2Nlc3NmdWxseS4iKQotICAgIC8vIEZJWE1FOiBjaGVjayB0aGF0IHdlIGNh
biBpdGVyYXRlIHRoZSBjdXJzb3IuCisgICAgZGVidWcoIkVtcHR5IGN1cnNvciBvcGVuZWQgc3Vj
Y2Vzc2Z1bGx5LiIpOworCiAgICAgZmluaXNoSlNUZXN0KCk7CiB9CiAKK2Z1bmN0aW9uIG9wZW5F
bXB0eUN1cnNvcldpdGhLZXkoKQoreworICAgIGRlYnVnKCJPcGVuaW5nIGFuIGVtcHR5IGN1cnNv
ci4iKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUub3BlbkN1cnNvcihc
IkluZXhpc3RlbnRLZXlcIikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGVtcHR5Q3Vyc29y
V2l0aEtleVN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIGN1cnNvcldpdGhLZXlTdWNjZXNzKCkKK3sKKyAgICBkZWJ1
ZygiQ3Vyc29yIG9wZW5lZCBzdWNjZXNzZnVsbHkuIik7CisgICAgLy8gRklYTUU6IGNoZWNrIHRo
YXQgd2UgY2FuIGl0ZXJhdGUgdGhlIGN1cnNvci4KKyAgICBjdXJzb3IgPSBldmVudC50YXJnZXQu
cmVzdWx0OworICAgIHNob3VsZEJlKCJjdXJzb3IuZGlyZWN0aW9uIiwgIjAiKTsKKyAgICBzaG91
bGRCZSgiY3Vyc29yLmtleSIsICInbXlLZXknIik7CisgICAgc2hvdWxkQmUoImN1cnNvci52YWx1
ZSIsICInbXlWYWx1ZSciKTsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlBhc3NpbmcgYW4g
aW52YWxpZCBrZXkgaW50byAuY29udGludWUoe30pLiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oImN1cnNvci5jb250aW51ZSh7fSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9F
UlIiKTsKKyAgICBkZWJ1ZygiIik7CisgICAgb3BlbkVtcHR5Q3Vyc29yV2l0aEtleSgpOworfQor
CitmdW5jdGlvbiBvcGVuQ3Vyc29yV2l0aEtleSgpCit7CisgICAgZGVidWcoIk9wZW5pbmcgY3Vy
c29yIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3VyY2Uub3Bl
bkN1cnNvcihcIm15S2V5XCIpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JXaXRo
S2V5U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gZW1wdHlDdXJzb3JTdWNjZXNzKCkKK3sKKyAgICBkZWJ1ZygiRW1w
dHkgY3Vyc29yIG9wZW5lZCBzdWNjZXNzZnVsbHkuIik7CisgICAgY3Vyc29yID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsKKyAgICBzaG91bGRCZU51bGwoImN1cnNvciIpOworICAgIG9wZW5DdXJzb3JX
aXRoS2V5KCk7Cit9CisKIGZ1bmN0aW9uIG9wZW5FbXB0eUN1cnNvcigpCiB7CiAgICAgZGVidWco
Ik9wZW5pbmcgYW4gZW1wdHkgY3Vyc29yLiIpOwotICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2Uu
bG93ZXJCb3VuZCgiSW5leGlzdGVudEtleSIpOworICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2Uu
dXBwZXJCb3VuZCgiSW5leGlzdGVudEtleSIpOwogICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOwogICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZW1wdHlDdXJzb3JTdWNjZXNzOwogICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwpAQCAtMjMsMTkgKzYzLDE1IEBAIGZ1bmN0aW9uIG9wZW5FbXB0eUN1cnNv
cigpCiAKIGZ1bmN0aW9uIGN1cnNvclN1Y2Nlc3MoKQogewotICAgIGRlYnVnKCJDdXJzb3Igb3Bl
bmVkIHN1Y2Nlc3NmdWxseS4iKQorICAgIGRlYnVnKCJDdXJzb3Igb3BlbmVkIHN1Y2Nlc3NmdWxs
eS4iKTsKICAgICAvLyBGSVhNRTogY2hlY2sgdGhhdCB3ZSBjYW4gaXRlcmF0ZSB0aGUgY3Vyc29y
LgotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LmRpcmVjdGlvbiIsICIwIik7Ci0g
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgIidteUtleSciKTsKLSAgICBz
aG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZSIsICInbXlWYWx1ZSciKTsKKyAgICBj
dXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIHNob3VsZEJlKCJjdXJzb3IuZGlyZWN0
aW9uIiwgIjAiKTsKKyAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICInbXlLZXknIik7CisgICAg
c2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICInbXlWYWx1ZSciKTsKICAgICBkZWJ1ZygiIik7Ci0g
ICAgdHJ5IHsKLSAgICAgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byAuY29u
dGludWUoe30pLiIpOwotICAgICAgICBldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKHt9KTsK
LSAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXhjZXB0aW9uIHRocm93biIpOwotICAgIH0gY2F0Y2gg
KGUpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgiQ2F1Z2h0IGV4Y2VwdGlvbjogIiArIGUudG9TdHJp
bmcoKSk7Ci0gICAgfQorICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gLmNv
bnRpbnVlKHt9KS4iKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJldmVudC50YXJnZXQu
cmVzdWx0LmNvbnRpbnVlKHt9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwog
ICAgIGRlYnVnKCIiKTsKICAgICBvcGVuRW1wdHlDdXJzb3IoKTsKIH0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuY3Vyc29yLWtleS5qcyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuY3Vyc29yLWtleS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lZGQ4NmM5NzVlMjNhMDljY2ZiMWI0ZjhjMzhkNzJiMDNkNTQ2M2M5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L29wZW5jdXJzb3Ita2V5LmpzCkBAIC0wLDAgKzEsMTg1IEBACitpZiAodGhpcy5pbXBvcnRTY3Jp
cHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVz
Y3JpcHRpb24oIlRlc3Qgb3BlbkN1cnNvci9vcGVuS2V5Q3Vyc29yIHdpdGggcmF3IElEQktleXMu
Iik7CisKK3ZhciBvYmplY3RTdG9yZURhdGEgPSBbCisgICAgeyBrZXk6ICIyMzctMjMtNzczMiIs
IHZhbHVlOiB7IG5hbWU6ICJCb2IiLCBoZWlnaHQ6IDYwLCB3ZWlnaHQ6IDEyMCB9IH0sCisgICAg
eyBrZXk6ICIyMzctMjMtNzczMyIsIHZhbHVlOiB7IG5hbWU6ICJBbm4iLCBoZWlnaHQ6IDUyLCB3
ZWlnaHQ6IDExMCB9IH0sCisgICAgeyBrZXk6ICIyMzctMjMtNzczNCIsIHZhbHVlOiB7IG5hbWU6
ICJSb24iLCBoZWlnaHQ6IDczLCB3ZWlnaHQ6IDE4MCB9IH0sCisgICAgeyBrZXk6ICIyMzctMjMt
NzczNSIsIHZhbHVlOiB7IG5hbWU6ICJTdWUiLCBoZWlnaHQ6IDU4LCB3ZWlnaHQ6IDEzMCB9IH0s
CisgICAgeyBrZXk6ICIyMzctMjMtNzczNiIsIHZhbHVlOiB7IG5hbWU6ICJKb2UiLCBoZWlnaHQ6
IDY1LCB3ZWlnaHQ6IDE1MCB9IH0sCisgICAgeyBrZXk6ICIyMzctMjMtNzczNyIsIHZhbHVlOiB7
IG5hbWU6ICJQYXQiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDEwMCB9IH0sCisgICAgeyBrZXk6ICIy
MzctMjMtNzczOCIsIHZhbHVlOiB7IG5hbWU6ICJMZW8iLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDE4
MCB9IH0sCisgICAgeyBrZXk6ICIyMzctMjMtNzczOSIsIHZhbHVlOiB7IG5hbWU6ICJKZWYiLCBo
ZWlnaHQ6IDY1LCB3ZWlnaHQ6IDEyMCB9IH0sCisgICAgeyBrZXk6ICIyMzctMjMtNzc0MCIsIHZh
bHVlOiB7IG5hbWU6ICJTYW0iLCBoZWlnaHQ6IDcxLCB3ZWlnaHQ6IDExMCB9IH0sCisgICAgeyBr
ZXk6ICIyMzctMjMtNzc0MSIsIHZhbHVlOiB7IG5hbWU6ICJCdWciLCBoZWlnaHQ6IDYzLCB3ZWln
aHQ6IDEwMCB9IH0sCisgICAgeyBrZXk6ICIyMzctMjMtNzc0MiIsIHZhbHVlOiB7IG5hbWU6ICJU
dWIiLCBoZWlnaHQ6IDY5LCB3ZWlnaHQ6IDE4MCB9IH0sCisgICAgeyBrZXk6ICIyMzctMjMtNzc0
MyIsIHZhbHVlOiB7IG5hbWU6ICJSdWciLCBoZWlnaHQ6IDc3LCB3ZWlnaHQ6IDEyMCB9IH0sCisg
ICAgeyBrZXk6ICIyMzctMjMtNzc0NCIsIHZhbHVlOiB7IG5hbWU6ICJQdWciLCBoZWlnaHQ6IDY2
LCB3ZWlnaHQ6IDExMCB9IH0sCitdOworCit2YXIgaW5kZXhEYXRhID0gWworICAgIHsgbmFtZTog
Im5hbWUiLCBrZXlQYXRoOiAibmFtZSIsIG9wdGlvbnM6IHsgdW5pcXVlOiB0cnVlIH0gfSwKKyAg
ICB7IG5hbWU6ICJoZWlnaHQiLCBrZXlQYXRoOiAiaGVpZ2h0Iiwgb3B0aW9uczogeyB9IH0sCisg
ICAgeyBuYW1lOiAid2VpZ2h0Iiwga2V5UGF0aDogIndlaWdodCIsIG9wdGlvbnM6IHsgdW5pcXVl
OiBmYWxzZSB9IH0KK107CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7CisgICAgbmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGVidWco
Im9wZW5TdWNjZXNzKCk6Iik7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKKworICAgIG9iamVjdFN0b3JlTmFtZSA9ICJQZW9wbGUiOworCisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNy
ZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsiKTsKKworICAgIGRlYnVnKCJGaXJz
dCwgYWRkIGFsbCBvdXIgZGF0YSB0byB0aGUgb2JqZWN0IHN0b3JlLiIpOworICAgIGFkZGVkRGF0
YSA9IDA7CisgICAgZm9yIChpIGluIG9iamVjdFN0b3JlRGF0YSkgeworICAgICAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFb
aV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOyIpOworICAgICAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB9CisgICAgY3JlYXRlSW5kZXhl
cygpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEFsbDsKK30KKworZnVuY3Rpb24gY3Jl
YXRlSW5kZXhlcygpCit7CisgICAgZGVidWcoIk5vdyBjcmVhdGUgdGhlIGluZGV4ZXMuIik7Cisg
ICAgZm9yIChpIGluIGluZGV4RGF0YSkgeworICAgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUu
Y3JlYXRlSW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUsIGluZGV4RGF0YVtpXS5rZXlQYXRoLCBpbmRl
eERhdGFbaV0ub3B0aW9ucyk7Iik7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0QWxsKCkKK3sK
KyAgdGVzdE9iamVjdFN0b3JlKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RPYmplY3RTdG9yZSgpCit7
CisgIGRlYnVnKCJ0ZXN0T2JqZWN0U3RvcmUoKSIpOworICBldmFsQW5kTG9nKCJ0cmFucyA9IGRi
LnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSki
KTsKKyAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVj
dFN0b3JlKG9iamVjdFN0b3JlTmFtZSkiKTsKKworICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2Jq
ZWN0U3RvcmUub3BlbkN1cnNvcignMjM3LTIzLTc3MzknKSIpOworICB2YXIgY291bnQgPSAwOwor
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgIGN1cnNvciA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7CisKKyAgICBpZiAoY291bnQgPT0gMCkgeworICAgICAgc2hvdWxkQmUoImN1
cnNvci5rZXkiLCAiJzIzNy0yMy03NzM5JyIpOworICAgICAgc2hvdWxkQmUoIkpTT04uc3RyaW5n
aWZ5KGN1cnNvci52YWx1ZSkiLCAiSlNPTi5zdHJpbmdpZnkob2JqZWN0U3RvcmVEYXRhWzddLnZh
bHVlKSIpOworICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgImN1cnNvci5rZXki
KTsKKyAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpIik7CisgICAgfSBlbHNlIGlm
IChjb3VudCA9PSAxKSB7CisgICAgICBzaG91bGRCZU51bGwoImN1cnNvciIpOworICAgICAgdGVz
dEluZGV4KCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHRlc3RGYWlsZWQoIlRvbyBtdWNoIGl0ZXJh
dGlvbiIpOworICAgIH0KKyAgICBjb3VudCsrOworICB9OworICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKworfQorCitmdW5jdGlvbiB0ZXN0SW5kZXgoKQorewor
ICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSwgSURC
VHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSkiKTsKKyAgaW5k
ZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmluZGV4KCd3ZWlnaHQnKSIpOwor
CisgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleC5vcGVuQ3Vyc29yKDE4MCkiKTsKKyAgdmFy
IGNvdW50ID0gMDsKKyAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICBjdXJz
b3IgPSBldmVudC50YXJnZXQucmVzdWx0OworCisgICAgaWYgKGNvdW50ID09IDApIHsKKyAgICAg
IHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgJzE4MCcpOworICAgICAgc2hvdWxkQmUoIkpTT04uc3Ry
aW5naWZ5KGN1cnNvci52YWx1ZSkiLAorICAgICAgICAgICAgICAgIkpTT04uc3RyaW5naWZ5KG9i
amVjdFN0b3JlRGF0YVsyXS52YWx1ZSkiKTsKKyAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFy
eUtleSIsICInMjM3LTIzLTc3MzQnIik7CisgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGlu
dWUoKSIpOworICAgIH0gZWxzZSBpZiAoY291bnQgPT0gMSkgeworICAgICAgc2hvdWxkQmUoImN1
cnNvci5rZXkiLCAnMTgwJyk7CisgICAgICBzaG91bGRCZSgiSlNPTi5zdHJpbmdpZnkoY3Vyc29y
LnZhbHVlKSIsCisgICAgICAgICAgICAgICAiSlNPTi5zdHJpbmdpZnkob2JqZWN0U3RvcmVEYXRh
WzZdLnZhbHVlKSIpOworICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIicyMzct
MjMtNzczOCciKTsKKyAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpIik7CisgICAg
fSBlbHNlIGlmIChjb3VudCA9PSAyKSB7CisgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICcx
ODAnKTsKKyAgICAgIHNob3VsZEJlKCJKU09OLnN0cmluZ2lmeShjdXJzb3IudmFsdWUpIiwKKyAg
ICAgICAgICAgICAgICJKU09OLnN0cmluZ2lmeShvYmplY3RTdG9yZURhdGFbMTBdLnZhbHVlKSIp
OworICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIicyMzctMjMtNzc0MiciKTsK
KyAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpIik7CisgICAgfSBlbHNlIGlmIChj
b3VudCA9PSAzKSB7CisgICAgICBzaG91bGRCZU51bGwoImN1cnNvciIpOworICAgICAgdGVzdElu
ZGV4V2l0aEtleSgpOworICAgIH0gZWxzZSB7CisgICAgICB0ZXN0RmFpbGVkKCJUb28gbXVjaCBp
dGVyYXRpb24iKTsKKyAgICB9CisgICAgY291bnQrKzsKKyAgfTsKKyAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisKK30KKworZnVuY3Rpb24gdGVzdEluZGV4V2l0
aEtleSgpCit7CisgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24ob2JqZWN0U3Rv
cmVOYW1lLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICBvYmplY3RTdG9yZSA9IGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1l
KSIpOworICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ3dl
aWdodCcpIik7CisKKyAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4Lm9wZW5LZXlDdXJzb3Io
MTgwKSIpOworICB2YXIgY291bnQgPSAwOworICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KCkgeworICAgIGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisKKyAgICBpZiAoY291bnQg
PT0gMCkgeworICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAnMTgwJyk7CisgICAgICBzaG91
bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAiJzIzNy0yMy03NzM0JyIpOworICAgICAgZXZhbEFu
ZExvZygiY3Vyc29yLmNvbnRpbnVlKCkiKTsKKyAgICB9IGVsc2UgaWYgKGNvdW50ID09IDEpIHsK
KyAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgJzE4MCcpOworICAgICAgc2hvdWxkQmUoImN1
cnNvci5wcmltYXJ5S2V5IiwgIicyMzctMjMtNzczOCciKTsKKyAgICAgIGV2YWxBbmRMb2coImN1
cnNvci5jb250aW51ZSgpIik7CisgICAgfSBlbHNlIGlmIChjb3VudCA9PSAyKSB7CisgICAgICBz
aG91bGRCZSgiY3Vyc29yLmtleSIsICcxODAnKTsKKyAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJp
bWFyeUtleSIsICInMjM3LTIzLTc3NDInIik7CisgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29u
dGludWUoKSIpOworICAgIH0gZWxzZSBpZiAoY291bnQgPT0gMykgeworICAgICAgc2hvdWxkQmVO
dWxsKCJjdXJzb3IiKTsKKyAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0gZWxzZSB7CisgICAg
ICB0ZXN0RmFpbGVkKCJUb28gbXVjaCBpdGVyYXRpb24iKTsKKyAgICB9CisgICAgY291bnQrKzsK
KyAgfTsKKyAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisKK30K
KworCit0ZXN0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138837</attachid>
            <date>2012-04-25 10:26:10 -0700</date>
            <delta_ts>2012-04-25 12:31:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84652-20120425102609.patch</filename>
            <type>text/plain</type>
            <size>30363</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDE4ZTEzNmZkMDMxZWRh
MDdkOGVjM2Q2ZGFmNjU0ZTRkMmE0ZTQ1Ni4uMzNiNjI0ZGZmYjkxMzJmOWFlYzI3OTRkODQwNWFl
ZjEzZDE5MTMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA0LTI1ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IHN1
cHBvcnQgb3BlbkN1cnNvcihJREJLZXkpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NDY1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRlc3Q6IHN0b3JhZ2UvaW5kZXhlZGRiL29wZW5jdXJzb3Ita2V5Lmh0
bWwKKworICAgICAgICBBZGQgc2lnbmF0dXJlcyBmb3Igb3BlbkN1cnNvci9vcGVuS2V5Q3Vyc29y
KElEQktleSkuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5k
ZXg6Om9wZW5DdXJzb3IpOgorICAgICAgICAoSURCSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SURCSW5kZXg6Om9wZW5LZXlDdXJzb3IpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkluZGV4LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcik6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IpOgorICAg
ICAgICAoSURCT2JqZWN0U3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlLmlkbDoKKwogMjAxMi0wNC0yNSAgJ1BhdmVsIEZlbGRtYW4nICA8cGZlbGRtYW5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIE5vdCByZXZpZXdlZDogaW5zcGVjdG9yIGZyb250ZW5k
IHRlc3RzIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkluZGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4
LmNwcAppbmRleCA3OGMwMDQxNTE0YTM3ZjU3MWZjZDU3ZGI2MTlhNDNmZjc1NzcxZTEzLi5hODhj
YWRlMjBlZmUwZGM2OWE4ZmQ0NDliNDIyN2JlYjBhZjQ5YTU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCkBAIC03NSw2ICs3NSwxNSBAQCBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhcwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCitQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlv
biwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6
b3BlbkN1cnNvciIpOworICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlS
YW5nZTo6b25seShrZXksIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworICAg
IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtleVJhbmdlLnJlbGVhc2UoKSwgZWMpOworfQor
CiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4Ojpjb3VudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJJbmRleDo6Y291bnQiKTsKQEAgLTEx
NSw2ICsxMjQsMTUgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbktleUN1
cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgIHJldHVybiByZXF1ZXN0
OwogfQogCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIHVu
c2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgSURCX1RS
QUNFKCJJREJPYmplY3RTdG9yZTo6b3BlbktleUN1cnNvciIpOworICAgIFJlZlB0cjxJREJLZXlS
YW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShrZXksIGVjKTsKKyAgICBpZiAoZWMp
CisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBvcGVuS2V5Q3Vyc29yKGNvbnRleHQsIGtl
eVJhbmdlLnJlbGVhc2UoKSwgZWMpOworfQorCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQklu
ZGV4OjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJL
ZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJJbmRleDo6
Z2V0Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAppbmRl
eCBkZWZiMjZjMGIyOTM1MWUwYzI3ZmIzZmU1YmU2ZDZmMzg3MzgxYmRmLi5lYmJiZjk2YWFhNTA1
NjdiYzQ2MGRkNmRkZTgzOWM2MmI3YThjY2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4LmgKQEAgLTU1LDE2ICs1NSwyMCBAQCBwdWJsaWM6CiAgICAgYm9v
bCBtdWx0aUVudHJ5KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT5tdWx0aUVudHJ5KCk7IH0K
IAogICAgIC8vIEZJWE1FOiBUcnkgdG8gbW9kaWZ5IHRoZSBjb2RlIGdlbmVyYXRvciBzbyB0aGlz
IGlzIHVubmVlZGVkLgotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4g
b3BlbkN1cnNvcihjb250ZXh0LCAwLCBlYyk7IH0KKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29k
ZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwgc3RhdGljX2Nhc3Q8SURCS2V5UmFu
Z2UqPigwKSwgZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtl
eVJhbmdlLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBr
ZXlSYW5nZSwgSURCQ3Vyc29yOjpORVhULCBlYyk7IH0KKyAgICBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0
cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29u
dGV4dCwga2V5LCBJREJDdXJzb3I6Ok5FWFQsIGVjKTsgfQogICAgIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYpOworICAg
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxJREJLZXk+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBjb3VudChjb250
ZXh0LCBzdGF0aWNfY2FzdDxJREJLZXlSYW5nZSo+KDApLCBlYyk7IH0KICAgICBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElE
QktleVJhbmdlPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5PiwgRXhjZXB0
aW9uQ29kZSYpOwogCi0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVy
biBvcGVuS2V5Q3Vyc29yKGNvbnRleHQsIDAsIGVjKTsgfSAKKyAgICBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhj
ZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5LZXlDdXJzb3IoY29udGV4dCwgc3RhdGljX2Nh
c3Q8SURCS2V5UmFuZ2UqPigwKSwgZWMpOyB9IAogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRy
PElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5L
ZXlDdXJzb3IoY29udGV4dCwga2V5UmFuZ2UsIElEQkN1cnNvcjo6TkVYVCwgZWMpOyB9CisgICAg
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKSB7
IHJldHVybiBvcGVuS2V5Q3Vyc29yKGNvbnRleHQsIGtleSwgSURCQ3Vyc29yOjpORVhULCBlYyk7
IH0KICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJl
Y3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5L
ZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5PiwgdW5z
aWduZWQgc2hvcnQgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGdl
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXk+LCBFeGNlcHRpb25D
b2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5pZGwK
aW5kZXggMmM1N2M2MThkZGRmOWYzNGFkNWFjMzdlY2VkNmI5MjE2YTU2NTQ0ZC4uYjIzZTU1YWNk
NjMyY2YyNmUzYTdhNjU4NTI0ZGYzYmIzMWUyZDdiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmlkbApAQCAtMzYsOCArMzYsMTIgQEAgbW9kdWxlIHN0
b3JhZ2UgewogCiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJS
ZXF1ZXN0IG9wZW5DdXJzb3IoaW4gW09wdGlvbmFsXSBJREJLZXlSYW5nZSByYW5nZSwgaW4gW09w
dGlvbmFsXSB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24pCiAgICAgICAgICAgICByYWlzZXMgKElE
QkRhdGFiYXNlRXhjZXB0aW9uKTsKKyAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRdIElEQlJlcXVlc3Qgb3BlbkN1cnNvcihpbiBJREJLZXkga2V5LCBpbiBbT3B0aW9uYWxd
IHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbikKKyAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJh
c2VFeGNlcHRpb24pOwogICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0g
SURCUmVxdWVzdCBvcGVuS2V5Q3Vyc29yKGluIFtPcHRpb25hbF0gSURCS2V5UmFuZ2UgcmFuZ2Us
IGluIFtPcHRpb25hbF0gdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uKQogICAgICAgICAgICAgcmFp
c2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CisgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IG9wZW5LZXlDdXJzb3IoaW4gSURCS2V5IGtleSwgaW4g
W09wdGlvbmFsXSB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24pCisgICAgICAgICAgICByYWlzZXMg
KElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKICAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRdIElEQlJlcXVlc3QgZ2V0KGluIElEQktleVJhbmdlIGtleSkKICAgICAgICAgICAg
IHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwogICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0
RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBnZXQoaW4gSURCS2V5IGtleSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAppbmRl
eCA1OTRmNjZlOWU4ZDY2NWZkMzMxNDVkMGZlNjNjMjFkYzNiMmIzNjVmLi40MzE5ZDdmMGE5Mzhk
YTVmN2Q3NzA2ZjBjYmJkODZiNTYyOTA3ZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC0yNzQsNiArMjc0LDE1IEBA
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4CiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwog
fQogCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIHVu
c2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgSURCX1RS
QUNFKCJJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvciIpOworICAgIFJlZlB0cjxJREJLZXlSYW5n
ZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShrZXksIGVjKTsKKyAgICBpZiAoZWMpCisg
ICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtleVJhbmdl
LnJlbGVhc2UoKSwgZWMpOworfQorCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0
b3JlOjpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElE
QktleVJhbmdlPiByYW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJ
REJPYmplY3RTdG9yZTo6Y291bnQiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCmluZGV4IGVhN2I3N2VhODM2NzNmODQ4MjVlY2JhY2Nj
NWM1NjcwNGFiYjhlZDAuLjVkNGQxOGRjMDY1OWM0YjM5MjA4ZGQ2ODI5MWI1MTEyOTQzY2NmOTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmUuaApAQCAtNjQsOCArNjQsOSBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBhZGQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gYWRkKGNv
bnRleHQsIHZhbHVlLCAwLCBlYyk7ICB9CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBwdXQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gcHV0KGNvbnRleHQs
IHZhbHVlLCAwLCBlYyk7ICB9CiAgICAgUGFzc1JlZlB0cjxJREJJbmRleD4gY3JlYXRlSW5kZXgo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIEV4Y2VwdGlvbkNvZGUm
IGVjKSB7IHJldHVybiBjcmVhdGVJbmRleChuYW1lLCBrZXlQYXRoLCBEaWN0aW9uYXJ5KCksIGVj
KTsgfQotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbkN1cnNv
cihjb250ZXh0LCAwLCBlYyk7IH0gCisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vy
c29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7
IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIHN0YXRpY19jYXN0PElEQktleVJhbmdlKj4oMCks
IGVjKTsgfSAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2Us
IEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtleVJhbmdl
LCBJREJDdXJzb3I6Ok5FWFQsIGVjKTsgfSAKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9w
ZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJL
ZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwg
a2V5LCBJREJDdXJzb3I6Ok5FWFQsIGVjKTsgfSAKIAogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleT4sIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIEV4Y2VwdGlvbkNvZGUmKTsKQEAg
LTgwLDYgKzgxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5n
JiBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9w
ZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsgCisgICAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNz
UmVmUHRyPElEQktleT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYp
OyAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBjb3VudChjb250ZXh0LCBz
dGF0aWNfY2FzdDxJREJLZXlSYW5nZSo+KDApLCBlYyk7IH0KICAgICBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY291bnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5PiwgRXhjZXB0aW9uQ29k
ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuaWRsCmluZGV4IDVlOWUyMDljOWYyODk5ZGJlZDBjNjY4NjdjMmZlYWYwNjYxN2RmODMu
LjhjZWQzOGNkMWVmYTMyY2NiMzRmMDYyOGQzYzZhOTI4ZWI4ODdmZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5pZGwKQEAgLTQ5
LDYgKzQ5LDggQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRh
YmFzZUV4Y2VwdGlvbik7CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
XSBJREJSZXF1ZXN0IG9wZW5DdXJzb3IoaW4gW09wdGlvbmFsXSBJREJLZXlSYW5nZSByYW5nZSwg
aW4gW09wdGlvbmFsXSB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24pCiAgICAgICAgICAgICByYWlz
ZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKKyAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRdIElEQlJlcXVlc3Qgb3BlbkN1cnNvcihpbiBJREJLZXkga2V5LCBpbiBbT3B0
aW9uYWxdIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbikKKyAgICAgICAgICAgIHJhaXNlcyAoSURC
RGF0YWJhc2VFeGNlcHRpb24pOwogICAgICAgICBJREJJbmRleCBjcmVhdGVJbmRleChpbiBET01T
dHJpbmcgbmFtZSwgaW4gRE9NU3RyaW5nIGtleVBhdGgsIGluIFtPcHRpb25hbF0gRGljdGlvbmFy
eSBvcHRpb25zKQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CiAg
ICAgICAgIElEQkluZGV4IGluZGV4KGluIERPTVN0cmluZyBuYW1lKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGJjMjNmYWU1
MDc0YjEwNmExM2EwYzhiMjM3MTUzMzRlZTE1YjVmMmYuLjZlZjhlYmJiN2VjOTEwMzA5MjRjOTEw
YjNkYmZiZDBjOTcxM2E0OWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMi0wNC0yNSAgQWxl
YyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBz
dXBwb3J0IG9wZW5DdXJzb3IoSURCS2V5KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODQ2NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBdWdtZW50IGV4aXN0aW5nIHRlc3RzLCBhbmQgYWRkIG5ldyB0ZXN0
cyB0byBzdXBwb3J0CisgICAgICAgIElEQktleSBwYXJhbWV0ZXIgdG8gb3BlbkN1cnNvci9vcGVu
S2V5Q3Vyc29yLiBOb3RlIHRoYXQgdGhpcyByZW1vdmVzCisgICAgICAgIGEgdGVzdCB0aGF0IHdh
cyBwcmV2aW91c2x5IHVzaW5nIGRpY3Rpb25hcnktc3R5bGUgcGFyYW1ldGVycywKKyAgICAgICAg
d2hpY2ggaGF2ZSBiZWVuIHRlbXBvcmFyaWx5IGJyb2tlbiBkdWUgdG8gSURMIGxpbWl0YXRpb25z
LgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWRlbGV0ZS1leHBlY3RlZC50
eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJzb3ItZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29wZW5jdXJzb3Ita2V5LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb3BlbmN1cnNvci1rZXkuaHRt
bDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1k
ZWxldGUuanM6CisgICAgICAgIChvcGVuQ3Vyc29yKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvb3Blbi1jdXJzb3IuanM6CisgICAgICAgIChlbXB0eUN1cnNvcldpdGhL
ZXlTdWNjZXNzKToKKyAgICAgICAgKG9wZW5FbXB0eUN1cnNvcldpdGhLZXkpOgorICAgICAgICAo
Y3Vyc29yV2l0aEtleVN1Y2Nlc3MpOgorICAgICAgICAob3BlbkN1cnNvcldpdGhLZXkpOgorICAg
ICAgICAoZW1wdHlDdXJzb3JTdWNjZXNzKToKKyAgICAgICAgKG9wZW5FbXB0eUN1cnNvcik6Cisg
ICAgICAgIChjdXJzb3JTdWNjZXNzKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvb3BlbmN1cnNvci1rZXkuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisgICAgICAg
IChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKToK
KyAgICAgICAgKGNyZWF0ZUluZGV4ZXMpOgorICAgICAgICAodGVzdEFsbCk6CisgICAgICAgICh0
ZXN0T2JqZWN0U3RvcmUucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdE9iamVjdFN0
b3JlKToKKyAgICAgICAgKHRlc3RJbmRleC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0
ZXN0SW5kZXgpOgorICAgICAgICAodGVzdEluZGV4V2l0aEtleS5yZXF1ZXN0Lm9uc3VjY2Vzcyk6
CisgICAgICAgICh0ZXN0SW5kZXhXaXRoS2V5KToKKwogMjAxMi0wNC0yNSAgUGllcnJlIFJvc3Np
ICA8cGllcnJlLnJvc3NpQGdtYWlsLmNvbT4KIAogICAgICAgICBbU1ZHXSBOb3RoaW5nIHNob3Vs
ZCBiZSBzdHJva2VkIHdoZW4gdGhlIHN0cm9rZS13aWR0aCBpcyAwCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItZGVsZXRlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1kZWxldGUtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGFkNzhjYmJhOTVlZWVmNjhmYTc2NjJkZTM2Y2QyYWI0MjdhOGUwZjEuLjg3ZjFhYzUyZWMy
MTU0ODM5OTk5Nzk1ZDU4YzU0YTFjZGM5NWVhZGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1kZWxldGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1kZWxldGUtZXhwZWN0ZWQudHh0CkBAIC0xOSw3
ICsxOSw3IEBAIG9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTMnLCAnbXlLZXkzJykKIG9iamVjdFN0
b3JlLmFkZCgnbXlWYWx1ZTQnLCAnbXlLZXk0JykKIG9wZW5DdXJzb3IxCiB0cmFucyA9IGRiLnRy
YW5zYWN0aW9uKFsndGVzdCddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKQotdHJhbnMub2Jq
ZWN0U3RvcmUoJ3Rlc3QnKS5vcGVuQ3Vyc29yKHtyYW5nZToga2V5UmFuZ2V9KQordHJhbnMub2Jq
ZWN0U3RvcmUoJ3Rlc3QnKS5vcGVuQ3Vyc29yKGtleVJhbmdlKQogZXZlbnQudGFyZ2V0LnJlc3Vs
dC5kZWxldGUoKQogUEFTUyBldmVudC50YXJnZXQucmVzdWx0LnZhbHVlIGlzICJteVZhbHVlMSIK
IGV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJzb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJzb3ItZXhwZWN0ZWQudHh0CmluZGV4IDRiOTUzOTMw
MWU0N2JlY2M1NDFkNTNjYTQxNGJiODA0ZjQ5MjM0ZjMuLjFlODA5Mjg0YjYxOWFmNzU0YjM4NGY2
Y2Q5NDdhNDZlMzcxZjY1MmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL29wZW4tY3Vyc29yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9vcGVuLWN1cnNvci1leHBlY3RlZC50eHQKQEAgLTE3LDE2ICsxNywzNSBAQCBvYmpl
Y3RTdG9yZS5hZGQoJ215VmFsdWUnLCAnbXlLZXknKQogT3BlbmluZyBjdXJzb3IKIGV2ZW50LnRh
cmdldC5zb3VyY2Uub3BlbkN1cnNvcihrZXlSYW5nZSkKIEN1cnNvciBvcGVuZWQgc3VjY2Vzc2Z1
bGx5LgotUEFTUyBldmVudC50YXJnZXQucmVzdWx0LmRpcmVjdGlvbiBpcyAwCi1QQVNTIGV2ZW50
LnRhcmdldC5yZXN1bHQua2V5IGlzICdteUtleScKLVBBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdC52
YWx1ZSBpcyAnbXlWYWx1ZScKK1BBU1MgY3Vyc29yLmRpcmVjdGlvbiBpcyAwCitQQVNTIGN1cnNv
ci5rZXkgaXMgJ215S2V5JworUEFTUyBjdXJzb3IudmFsdWUgaXMgJ215VmFsdWUnCiAKIFBhc3Np
bmcgYW4gaW52YWxpZCBrZXkgaW50byAuY29udGludWUoe30pLgotUEFTUyBDYXVnaHQgZXhjZXB0
aW9uOiBFcnJvcjogREFUQV9FUlI6IERPTSBJREJEYXRhYmFzZSBFeGNlcHRpb24gNQorRXhwZWN0
aW5nIGV4Y2VwdGlvbiBmcm9tIGV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoe30pCitQQVNT
IEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9u
LkRBVEFfRVJSCiAKIE9wZW5pbmcgYW4gZW1wdHkgY3Vyc29yLgogb2JqZWN0U3RvcmUub3BlbkN1
cnNvcihrZXlSYW5nZSkKIEVtcHR5IGN1cnNvciBvcGVuZWQgc3VjY2Vzc2Z1bGx5LgorUEFTUyBj
dXJzb3IgaXMgbnVsbAorT3BlbmluZyBjdXJzb3IKK2V2ZW50LnRhcmdldC5zb3VyY2Uub3BlbkN1
cnNvcigibXlLZXkiKQorQ3Vyc29yIG9wZW5lZCBzdWNjZXNzZnVsbHkuCitQQVNTIGN1cnNvci5k
aXJlY3Rpb24gaXMgMAorUEFTUyBjdXJzb3Iua2V5IGlzICdteUtleScKK1BBU1MgY3Vyc29yLnZh
bHVlIGlzICdteVZhbHVlJworCitQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gLmNvbnRpbnVl
KHt9KS4KK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBjdXJzb3IuY29udGludWUoe30pCitQQVNT
IEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9u
LkRBVEFfRVJSCisKK09wZW5pbmcgYW4gZW1wdHkgY3Vyc29yLgorb2JqZWN0U3RvcmUub3BlbkN1
cnNvcigiSW5leGlzdGVudEtleSIpCitFbXB0eSBjdXJzb3Igb3BlbmVkIHN1Y2Nlc3NmdWxseS4K
K1BBU1MgY3Vyc29yIGlzIG51bGwKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAog
VEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
b3BlbmN1cnNvci1rZXktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvb3BlbmN1cnNvci1rZXktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmMDRlYjRkZWY2YWNi
OTc5N2VkNmM1OTllNmRmNzVhN2YxODZiYjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuY3Vyc29yLWtleS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw3NSBAQAorVGVzdCBvcGVuQ3Vyc29yL29wZW5LZXlDdXJzb3Igd2l0aCByYXcgSURCS2V5cy4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHNlbGYuaW5kZXhl
ZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYu
bXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworCitpbmRleGVkREIub3BlbihuYW1lKQor
b3BlblN1Y2Nlc3MoKToKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorcmVxdWVzdCA9IGRiLnNl
dFZlcnNpb24oJzEnKQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK29iamVjdFN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsKK0ZpcnN0LCBhZGQgYWxsIG91
ciBkYXRhIHRvIHRoZSBvYmplY3Qgc3RvcmUuCityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9i
amVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0
ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVE
YXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtp
XS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
YWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7City
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0
U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3Jl
RGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtl
eSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwg
b2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVj
dFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0g
b2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRh
W2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52
YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRk
KG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1
ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3Rv
cmVEYXRhW2ldLmtleSk7CitOb3cgY3JlYXRlIHRoZSBpbmRleGVzLgorb2JqZWN0U3RvcmUuY3Jl
YXRlSW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUsIGluZGV4RGF0YVtpXS5rZXlQYXRoLCBpbmRleERh
dGFbaV0ub3B0aW9ucyk7CitvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRleERhdGFbaV0ubmFt
ZSwgaW5kZXhEYXRhW2ldLmtleVBhdGgsIGluZGV4RGF0YVtpXS5vcHRpb25zKTsKK29iamVjdFN0
b3JlLmNyZWF0ZUluZGV4KGluZGV4RGF0YVtpXS5uYW1lLCBpbmRleERhdGFbaV0ua2V5UGF0aCwg
aW5kZXhEYXRhW2ldLm9wdGlvbnMpOwordGVzdE9iamVjdFN0b3JlKCkKK3RyYW5zID0gZGIudHJh
bnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKQorb2Jq
ZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpCityZXF1ZXN0ID0g
b2JqZWN0U3RvcmUub3BlbkN1cnNvcignMjM3LTIzLTc3MzknKQorUEFTUyBjdXJzb3Iua2V5IGlz
ICcyMzctMjMtNzczOScKK1BBU1MgSlNPTi5zdHJpbmdpZnkoY3Vyc29yLnZhbHVlKSBpcyBKU09O
LnN0cmluZ2lmeShvYmplY3RTdG9yZURhdGFbN10udmFsdWUpCitQQVNTIGN1cnNvci5wcmltYXJ5
S2V5IGlzIGN1cnNvci5rZXkKK2N1cnNvci5jb250aW51ZSgpCitQQVNTIGN1cnNvciBpcyBudWxs
Cit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSwgSURCVHJhbnNhY3Rpb24u
UkVBRF9XUklURSkKK29iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVO
YW1lKQoraW5kZXggPSBvYmplY3RTdG9yZS5pbmRleCgnd2VpZ2h0JykKK3JlcXVlc3QgPSBpbmRl
eC5vcGVuQ3Vyc29yKDE4MCkKK1BBU1MgY3Vyc29yLmtleSBpcyAxODAKK1BBU1MgSlNPTi5zdHJp
bmdpZnkoY3Vyc29yLnZhbHVlKSBpcyBKU09OLnN0cmluZ2lmeShvYmplY3RTdG9yZURhdGFbMl0u
dmFsdWUpCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzICcyMzctMjMtNzczNCcKK2N1cnNvci5j
b250aW51ZSgpCitQQVNTIGN1cnNvci5rZXkgaXMgMTgwCitQQVNTIEpTT04uc3RyaW5naWZ5KGN1
cnNvci52YWx1ZSkgaXMgSlNPTi5zdHJpbmdpZnkob2JqZWN0U3RvcmVEYXRhWzZdLnZhbHVlKQor
UEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnMjM3LTIzLTc3MzgnCitjdXJzb3IuY29udGludWUo
KQorUEFTUyBjdXJzb3Iua2V5IGlzIDE4MAorUEFTUyBKU09OLnN0cmluZ2lmeShjdXJzb3IudmFs
dWUpIGlzIEpTT04uc3RyaW5naWZ5KG9iamVjdFN0b3JlRGF0YVsxMF0udmFsdWUpCitQQVNTIGN1
cnNvci5wcmltYXJ5S2V5IGlzICcyMzctMjMtNzc0MicKK2N1cnNvci5jb250aW51ZSgpCitQQVNT
IGN1cnNvciBpcyBudWxsCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSwg
SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkKK29iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3Rv
cmUob2JqZWN0U3RvcmVOYW1lKQoraW5kZXggPSBvYmplY3RTdG9yZS5pbmRleCgnd2VpZ2h0JykK
K3JlcXVlc3QgPSBpbmRleC5vcGVuS2V5Q3Vyc29yKDE4MCkKK1BBU1MgY3Vyc29yLmtleSBpcyAx
ODAKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgJzIzNy0yMy03NzM0JworY3Vyc29yLmNvbnRp
bnVlKCkKK1BBU1MgY3Vyc29yLmtleSBpcyAxODAKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMg
JzIzNy0yMy03NzM4JworY3Vyc29yLmNvbnRpbnVlKCkKK1BBU1MgY3Vyc29yLmtleSBpcyAxODAK
K1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgJzIzNy0yMy03NzQyJworY3Vyc29yLmNvbnRpbnVl
KCkKK1BBU1MgY3Vyc29yIGlzIG51bGwKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9vcGVuY3Vyc29yLWtleS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
b3BlbmN1cnNvci1rZXkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOGIxNTBjZjUzMDRmYjdhMGZhYTlmZDM2
OWEyODNhOWMxY2YwZTc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvb3BlbmN1cnNvci1rZXkuaHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcGVuY3Vyc29yLWtleS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItZGVsZXRlLmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1kZWxldGUuanMKaW5k
ZXggZGI2ZTJiOTM1NDhhM2E0OWRiNTRiMGQ3MjAwMTU4ODRjMTJlYjMzNi4uYmJjOGQ4ZjE2YWU4
ZWZiZjQ1MDlmOGU5MjQ3OTQxNGI1MWFhNTE2YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1kZWxldGUuanMKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1kZWxldGUuanMKQEAgLTQ2LDcg
KzQ2LDcgQEAgZnVuY3Rpb24gb3BlbkN1cnNvcigpCiAgICAgZGVidWcoIm9wZW5DdXJzb3IxIik7
CiAgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3Rlc3QnXSwgSURCVHJh
bnNhY3Rpb24uUkVBRF9XUklURSkiKTsKICAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2Vy
Qm91bmQoIm15S2V5MSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RT
dG9yZSgndGVzdCcpLm9wZW5DdXJzb3Ioe3JhbmdlOiBrZXlSYW5nZX0pIik7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0Jykub3BlbkN1cnNvcihrZXlS
YW5nZSkiKTsKICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvclN1Y2Nlc3M7CiAgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CiAgICAgY291bnRlciA9IDE7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Bl
bi1jdXJzb3IuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Bl
bi1jdXJzb3IuanMKaW5kZXggOWY5ZGMzYjZiNzk1YmYwZWQ5ZTkzNjRmN2FiZjg4Y2QwZTZjYjg3
Yy4uN2RhOGUzNjI1NzgyN2U5ODg3MTJkZmEwYTVhNmY4YTc1MmE1M2RkNiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4tY3Vyc29yLmpzCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLWN1cnNvci5q
cwpAQCAtNSwxNyArNSw1OCBAQCBpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CiAKIGRlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQidzIG9wZW5DdXJzb3IuIik7CiAKLWZ1bmN0aW9uIGVtcHR5Q3Vy
c29yU3VjY2VzcygpCisKK2Z1bmN0aW9uIGVtcHR5Q3Vyc29yV2l0aEtleVN1Y2Nlc3MoKQogewot
ICAgIGRlYnVnKCJFbXB0eSBjdXJzb3Igb3BlbmVkIHN1Y2Nlc3NmdWxseS4iKQotICAgIC8vIEZJ
WE1FOiBjaGVjayB0aGF0IHdlIGNhbiBpdGVyYXRlIHRoZSBjdXJzb3IuCisgICAgZGVidWcoIkVt
cHR5IGN1cnNvciBvcGVuZWQgc3VjY2Vzc2Z1bGx5LiIpOworICAgIGN1cnNvciA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7CisgICAgc2hvdWxkQmVOdWxsKCJjdXJzb3IiKTsKICAgICBmaW5pc2hKU1Rl
c3QoKTsKIH0KIAorZnVuY3Rpb24gb3BlbkVtcHR5Q3Vyc29yV2l0aEtleSgpCit7CisgICAgZGVi
dWcoIk9wZW5pbmcgYW4gZW1wdHkgY3Vyc29yLiIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKFwiSW5leGlzdGVudEtleVwiKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZW1wdHlDdXJzb3JXaXRoS2V5U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY3Vyc29yV2l0
aEtleVN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJDdXJzb3Igb3BlbmVkIHN1Y2Nlc3NmdWxseS4i
KTsKKyAgICAvLyBGSVhNRTogY2hlY2sgdGhhdCB3ZSBjYW4gaXRlcmF0ZSB0aGUgY3Vyc29yLgor
ICAgIGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgc2hvdWxkQmUoImN1cnNvci5k
aXJlY3Rpb24iLCAiMCIpOworICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIidteUtleSciKTsK
KyAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidteVZhbHVlJyIpOworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIC5jb250aW51ZSh7fSku
Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiY3Vyc29yLmNvbnRpbnVlKHt9KSIsICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgIGRlYnVnKCIiKTsKKyAgICBvcGVu
RW1wdHlDdXJzb3JXaXRoS2V5KCk7Cit9CisKK2Z1bmN0aW9uIG9wZW5DdXJzb3JXaXRoS2V5KCkK
K3sKKyAgICBkZWJ1ZygiT3BlbmluZyBjdXJzb3IiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5vcGVuQ3Vyc29yKFwibXlLZXlcIikiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcldpdGhLZXlTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBlbXB0eUN1cnNvclN1
Y2Nlc3MoKQoreworICAgIGRlYnVnKCJFbXB0eSBjdXJzb3Igb3BlbmVkIHN1Y2Nlc3NmdWxseS4i
KTsKKyAgICBjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIHNob3VsZEJlTnVsbCgi
Y3Vyc29yIik7CisgICAgb3BlbkN1cnNvcldpdGhLZXkoKTsKK30KKwogZnVuY3Rpb24gb3BlbkVt
cHR5Q3Vyc29yKCkKIHsKICAgICBkZWJ1ZygiT3BlbmluZyBhbiBlbXB0eSBjdXJzb3IuIik7Ci0g
ICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKCJJbmV4aXN0ZW50S2V5Iik7Cisg
ICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS51cHBlckJvdW5kKCJJbmV4aXN0ZW50S2V5Iik7CiAg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLm9wZW5DdXJzb3Ioa2V5UmFuZ2Up
Iik7CiAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBlbXB0eUN1cnNvclN1Y2Nlc3M7CiAgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CkBAIC0yMywxOSArNjQsMTUg
QEAgZnVuY3Rpb24gb3BlbkVtcHR5Q3Vyc29yKCkKIAogZnVuY3Rpb24gY3Vyc29yU3VjY2Vzcygp
CiB7Ci0gICAgZGVidWcoIkN1cnNvciBvcGVuZWQgc3VjY2Vzc2Z1bGx5LiIpCisgICAgZGVidWco
IkN1cnNvciBvcGVuZWQgc3VjY2Vzc2Z1bGx5LiIpOwogICAgIC8vIEZJWE1FOiBjaGVjayB0aGF0
IHdlIGNhbiBpdGVyYXRlIHRoZSBjdXJzb3IuCi0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5y
ZXN1bHQuZGlyZWN0aW9uIiwgIjAiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5rZXkiLCAiJ215S2V5JyIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnZh
bHVlIiwgIidteVZhbHVlJyIpOworICAgIGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Cisg
ICAgc2hvdWxkQmUoImN1cnNvci5kaXJlY3Rpb24iLCAiMCIpOworICAgIHNob3VsZEJlKCJjdXJz
b3Iua2V5IiwgIidteUtleSciKTsKKyAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidteVZh
bHVlJyIpOwogICAgIGRlYnVnKCIiKTsKLSAgICB0cnkgewotICAgICAgICBkZWJ1ZygiUGFzc2lu
ZyBhbiBpbnZhbGlkIGtleSBpbnRvIC5jb250aW51ZSh7fSkuIik7Ci0gICAgICAgIGV2ZW50LnRh
cmdldC5yZXN1bHQuY29udGludWUoe30pOwotICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRp
b24gdGhyb3duIik7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICB0ZXN0UGFzc2VkKCJDYXVn
aHQgZXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygpKTsKLSAgICB9CisgICAgZGVidWcoIlBhc3Np
bmcgYW4gaW52YWxpZCBrZXkgaW50byAuY29udGludWUoe30pLiIpOworICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoe30pIiwgIklEQkRhdGFi
YXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CiAgICAgZGVidWcoIiIpOwogICAgIG9wZW5FbXB0eUN1
cnNvcigpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL29wZW5jdXJzb3Ita2V5LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL29wZW5jdXJzb3Ita2V5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkZDg2Yzk3NWUyM2EwOWNj
ZmIxYjRmOGMzOGQ3MmIwM2Q1NDYzYzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3BlbmN1cnNvci1rZXkuanMKQEAgLTAsMCArMSwx
ODUgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlw
dHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBvcGVuQ3Vyc29yL29wZW5L
ZXlDdXJzb3Igd2l0aCByYXcgSURCS2V5cy4iKTsKKwordmFyIG9iamVjdFN0b3JlRGF0YSA9IFsK
KyAgICB7IGtleTogIjIzNy0yMy03NzMyIiwgdmFsdWU6IHsgbmFtZTogIkJvYiIsIGhlaWdodDog
NjAsIHdlaWdodDogMTIwIH0gfSwKKyAgICB7IGtleTogIjIzNy0yMy03NzMzIiwgdmFsdWU6IHsg
bmFtZTogIkFubiIsIGhlaWdodDogNTIsIHdlaWdodDogMTEwIH0gfSwKKyAgICB7IGtleTogIjIz
Ny0yMy03NzM0IiwgdmFsdWU6IHsgbmFtZTogIlJvbiIsIGhlaWdodDogNzMsIHdlaWdodDogMTgw
IH0gfSwKKyAgICB7IGtleTogIjIzNy0yMy03NzM1IiwgdmFsdWU6IHsgbmFtZTogIlN1ZSIsIGhl
aWdodDogNTgsIHdlaWdodDogMTMwIH0gfSwKKyAgICB7IGtleTogIjIzNy0yMy03NzM2IiwgdmFs
dWU6IHsgbmFtZTogIkpvZSIsIGhlaWdodDogNjUsIHdlaWdodDogMTUwIH0gfSwKKyAgICB7IGtl
eTogIjIzNy0yMy03NzM3IiwgdmFsdWU6IHsgbmFtZTogIlBhdCIsIGhlaWdodDogNjUsIHdlaWdo
dDogMTAwIH0gfSwKKyAgICB7IGtleTogIjIzNy0yMy03NzM4IiwgdmFsdWU6IHsgbmFtZTogIkxl
byIsIGhlaWdodDogNjUsIHdlaWdodDogMTgwIH0gfSwKKyAgICB7IGtleTogIjIzNy0yMy03NzM5
IiwgdmFsdWU6IHsgbmFtZTogIkplZiIsIGhlaWdodDogNjUsIHdlaWdodDogMTIwIH0gfSwKKyAg
ICB7IGtleTogIjIzNy0yMy03NzQwIiwgdmFsdWU6IHsgbmFtZTogIlNhbSIsIGhlaWdodDogNzEs
IHdlaWdodDogMTEwIH0gfSwKKyAgICB7IGtleTogIjIzNy0yMy03NzQxIiwgdmFsdWU6IHsgbmFt
ZTogIkJ1ZyIsIGhlaWdodDogNjMsIHdlaWdodDogMTAwIH0gfSwKKyAgICB7IGtleTogIjIzNy0y
My03NzQyIiwgdmFsdWU6IHsgbmFtZTogIlR1YiIsIGhlaWdodDogNjksIHdlaWdodDogMTgwIH0g
fSwKKyAgICB7IGtleTogIjIzNy0yMy03NzQzIiwgdmFsdWU6IHsgbmFtZTogIlJ1ZyIsIGhlaWdo
dDogNzcsIHdlaWdodDogMTIwIH0gfSwKKyAgICB7IGtleTogIjIzNy0yMy03NzQ0IiwgdmFsdWU6
IHsgbmFtZTogIlB1ZyIsIGhlaWdodDogNjYsIHdlaWdodDogMTEwIH0gfSwKK107CisKK3ZhciBp
bmRleERhdGEgPSBbCisgICAgeyBuYW1lOiAibmFtZSIsIGtleVBhdGg6ICJuYW1lIiwgb3B0aW9u
czogeyB1bmlxdWU6IHRydWUgfSB9LAorICAgIHsgbmFtZTogImhlaWdodCIsIGtleVBhdGg6ICJo
ZWlnaHQiLCBvcHRpb25zOiB7IH0gfSwKKyAgICB7IG5hbWU6ICJ3ZWlnaHQiLCBrZXlQYXRoOiAi
d2VpZ2h0Iiwgb3B0aW9uczogeyB1bmlxdWU6IGZhbHNlIH0gfQorXTsKKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBuYW1lID0gd2luZG93Lmxv
Y2F0aW9uLnBhdGhuYW1lOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Bl
bihuYW1lKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBkYiA9IGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgb2JqZWN0U3RvcmVO
YW1lID0gIlBlb3BsZSI7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRi
LnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9w
dWxhdGVPYmplY3RTdG9yZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCit7
CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZh
bEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5h
bWUpOyIpOworCisgICAgZGVidWcoIkZpcnN0LCBhZGQgYWxsIG91ciBkYXRhIHRvIHRoZSBvYmpl
Y3Qgc3RvcmUuIik7CisgICAgYWRkZWREYXRhID0gMDsKKyAgICBmb3IgKGkgaW4gb2JqZWN0U3Rv
cmVEYXRhKSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtl
eSk7Iik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgIH0KKyAgICBjcmVhdGVJbmRleGVzKCk7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0
ZXN0QWxsOworfQorCitmdW5jdGlvbiBjcmVhdGVJbmRleGVzKCkKK3sKKyAgICBkZWJ1ZygiTm93
IGNyZWF0ZSB0aGUgaW5kZXhlcy4iKTsKKyAgICBmb3IgKGkgaW4gaW5kZXhEYXRhKSB7CisgICAg
ICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRleERhdGFbaV0ubmFtZSwg
aW5kZXhEYXRhW2ldLmtleVBhdGgsIGluZGV4RGF0YVtpXS5vcHRpb25zKTsiKTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIHRlc3RBbGwoKQoreworICB0ZXN0T2JqZWN0U3RvcmUoKTsKK30KKworZnVu
Y3Rpb24gdGVzdE9iamVjdFN0b3JlKCkKK3sKKyAgZGVidWcoInRlc3RPYmplY3RTdG9yZSgpIik7
CisgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lLCBJ
REJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKSIpOworCisg
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCcyMzctMjMtNzcz
OScpIik7CisgIHZhciBjb3VudCA9IDA7CisgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24o
KSB7CisgICAgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKworICAgIGlmIChjb3VudCA9
PSAwKSB7CisgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICInMjM3LTIzLTc3MzknIik7Cisg
ICAgICBzaG91bGRCZSgiSlNPTi5zdHJpbmdpZnkoY3Vyc29yLnZhbHVlKSIsICJKU09OLnN0cmlu
Z2lmeShvYmplY3RTdG9yZURhdGFbN10udmFsdWUpIik7CisgICAgICBzaG91bGRCZSgiY3Vyc29y
LnByaW1hcnlLZXkiLCAiY3Vyc29yLmtleSIpOworICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNv
bnRpbnVlKCkiKTsKKyAgICB9IGVsc2UgaWYgKGNvdW50ID09IDEpIHsKKyAgICAgIHNob3VsZEJl
TnVsbCgiY3Vyc29yIik7CisgICAgICB0ZXN0SW5kZXgoKTsKKyAgICB9IGVsc2UgeworICAgICAg
dGVzdEZhaWxlZCgiVG9vIG11Y2ggaXRlcmF0aW9uIik7CisgICAgfQorICAgIGNvdW50Kys7Cisg
IH07CisgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworCit9CisK
K2Z1bmN0aW9uIHRlc3RJbmRleCgpCit7CisgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNh
Y3Rpb24ob2JqZWN0U3RvcmVOYW1lLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUo
b2JqZWN0U3RvcmVOYW1lKSIpOworICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0
U3RvcmUuaW5kZXgoJ3dlaWdodCcpIik7CisKKyAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4
Lm9wZW5DdXJzb3IoMTgwKSIpOworICB2YXIgY291bnQgPSAwOworICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKCkgeworICAgIGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisKKyAg
ICBpZiAoY291bnQgPT0gMCkgeworICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAnMTgwJyk7
CisgICAgICBzaG91bGRCZSgiSlNPTi5zdHJpbmdpZnkoY3Vyc29yLnZhbHVlKSIsCisgICAgICAg
ICAgICAgICAiSlNPTi5zdHJpbmdpZnkob2JqZWN0U3RvcmVEYXRhWzJdLnZhbHVlKSIpOworICAg
ICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIicyMzctMjMtNzczNCciKTsKKyAgICAg
IGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpIik7CisgICAgfSBlbHNlIGlmIChjb3VudCA9
PSAxKSB7CisgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICcxODAnKTsKKyAgICAgIHNob3Vs
ZEJlKCJKU09OLnN0cmluZ2lmeShjdXJzb3IudmFsdWUpIiwKKyAgICAgICAgICAgICAgICJKU09O
LnN0cmluZ2lmeShvYmplY3RTdG9yZURhdGFbNl0udmFsdWUpIik7CisgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnByaW1hcnlLZXkiLCAiJzIzNy0yMy03NzM4JyIpOworICAgICAgZXZhbEFuZExvZygi
Y3Vyc29yLmNvbnRpbnVlKCkiKTsKKyAgICB9IGVsc2UgaWYgKGNvdW50ID09IDIpIHsKKyAgICAg
IHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgJzE4MCcpOworICAgICAgc2hvdWxkQmUoIkpTT04uc3Ry
aW5naWZ5KGN1cnNvci52YWx1ZSkiLAorICAgICAgICAgICAgICAgIkpTT04uc3RyaW5naWZ5KG9i
amVjdFN0b3JlRGF0YVsxMF0udmFsdWUpIik7CisgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1h
cnlLZXkiLCAiJzIzNy0yMy03NzQyJyIpOworICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRp
bnVlKCkiKTsKKyAgICB9IGVsc2UgaWYgKGNvdW50ID09IDMpIHsKKyAgICAgIHNob3VsZEJlTnVs
bCgiY3Vyc29yIik7CisgICAgICB0ZXN0SW5kZXhXaXRoS2V5KCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgIHRlc3RGYWlsZWQoIlRvbyBtdWNoIGl0ZXJhdGlvbiIpOworICAgIH0KKyAgICBjb3VudCsr
OworICB9OworICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKwor
fQorCitmdW5jdGlvbiB0ZXN0SW5kZXhXaXRoS2V5KCkKK3sKKyAgZXZhbEFuZExvZygidHJhbnMg
PSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJ
VEUpIik7CisgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSB0cmFucy5v
YmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpIik7CisgIGluZGV4ID0gZXZhbEFuZExvZygiaW5k
ZXggPSBvYmplY3RTdG9yZS5pbmRleCgnd2VpZ2h0JykiKTsKKworICBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gaW5kZXgub3BlbktleUN1cnNvcigxODApIik7CisgIHZhciBjb3VudCA9IDA7CisgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgY3Vyc29yID0gZXZlbnQudGFyZ2V0
LnJlc3VsdDsKKworICAgIGlmIChjb3VudCA9PSAwKSB7CisgICAgICBzaG91bGRCZSgiY3Vyc29y
LmtleSIsICcxODAnKTsKKyAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICInMjM3
LTIzLTc3MzQnIik7CisgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKSIpOworICAg
IH0gZWxzZSBpZiAoY291bnQgPT0gMSkgeworICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAn
MTgwJyk7CisgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAiJzIzNy0yMy03NzM4
JyIpOworICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCkiKTsKKyAgICB9IGVsc2Ug
aWYgKGNvdW50ID09IDIpIHsKKyAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgJzE4MCcpOwor
ICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIicyMzctMjMtNzc0MiciKTsKKyAg
ICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpIik7CisgICAgfSBlbHNlIGlmIChjb3Vu
dCA9PSAzKSB7CisgICAgICBzaG91bGRCZU51bGwoImN1cnNvciIpOworICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHRlc3RGYWlsZWQoIlRvbyBtdWNoIGl0ZXJhdGlv
biIpOworICAgIH0KKyAgICBjb3VudCsrOworICB9OworICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKworfQorCisKK3Rlc3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138855</attachid>
            <date>2012-04-25 12:30:25 -0700</date>
            <delta_ts>2012-04-25 16:04:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84652-20120425123024.patch</filename>
            <type>text/plain</type>
            <size>31431</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDE4ZTEzNmZkMDMxZWRh
MDdkOGVjM2Q2ZGFmNjU0ZTRkMmE0ZTQ1Ni4uZDU0NjgzNTVlYTFmOGRkZjExZWRhNjk0NmJlMjM1
ZDFiZTM5OTFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA0LTI1ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IHN1
cHBvcnQgb3BlbkN1cnNvcihJREJLZXkpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NDY1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBzaWduYXR1cmVzIGZvciBvcGVuQ3Vyc29yL29wZW5LZXlDdXJz
b3IoSURCS2V5KS4KKworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRkYi9vcGVuY3Vyc29y
LWtleS5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5k
ZXg6Om9wZW5DdXJzb3IpOgorICAgICAgICAoSURCSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SURCSW5kZXg6Om9wZW5LZXlDdXJzb3IpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkluZGV4LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcik6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IpOgorICAg
ICAgICAoSURCT2JqZWN0U3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlLmlkbDoKKwogMjAxMi0wNC0yNSAgJ1BhdmVsIEZlbGRtYW4nICA8cGZlbGRtYW5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIE5vdCByZXZpZXdlZDogaW5zcGVjdG9yIGZyb250ZW5k
IHRlc3RzIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkluZGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4
LmNwcAppbmRleCA3OGMwMDQxNTE0YTM3ZjU3MWZjZDU3ZGI2MTlhNDNmZjc1NzcxZTEzLi5hODhj
YWRlMjBlZmUwZGM2OWE4ZmQ0NDliNDIyN2JlYjBhZjQ5YTU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCkBAIC03NSw2ICs3NSwxNSBAQCBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhcwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCitQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlv
biwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6
b3BlbkN1cnNvciIpOworICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlS
YW5nZTo6b25seShrZXksIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworICAg
IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtleVJhbmdlLnJlbGVhc2UoKSwgZWMpOworfQor
CiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4Ojpjb3VudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJJbmRleDo6Y291bnQiKTsKQEAgLTEx
NSw2ICsxMjQsMTUgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbktleUN1
cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgIHJldHVybiByZXF1ZXN0
OwogfQogCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIHVu
c2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgSURCX1RS
QUNFKCJJREJPYmplY3RTdG9yZTo6b3BlbktleUN1cnNvciIpOworICAgIFJlZlB0cjxJREJLZXlS
YW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShrZXksIGVjKTsKKyAgICBpZiAoZWMp
CisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBvcGVuS2V5Q3Vyc29yKGNvbnRleHQsIGtl
eVJhbmdlLnJlbGVhc2UoKSwgZWMpOworfQorCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQklu
ZGV4OjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJL
ZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJJbmRleDo6
Z2V0Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAppbmRl
eCBkZWZiMjZjMGIyOTM1MWUwYzI3ZmIzZmU1YmU2ZDZmMzg3MzgxYmRmLi5lYmJiZjk2YWFhNTA1
NjdiYzQ2MGRkNmRkZTgzOWM2MmI3YThjY2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4LmgKQEAgLTU1LDE2ICs1NSwyMCBAQCBwdWJsaWM6CiAgICAgYm9v
bCBtdWx0aUVudHJ5KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT5tdWx0aUVudHJ5KCk7IH0K
IAogICAgIC8vIEZJWE1FOiBUcnkgdG8gbW9kaWZ5IHRoZSBjb2RlIGdlbmVyYXRvciBzbyB0aGlz
IGlzIHVubmVlZGVkLgotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4g
b3BlbkN1cnNvcihjb250ZXh0LCAwLCBlYyk7IH0KKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29k
ZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwgc3RhdGljX2Nhc3Q8SURCS2V5UmFu
Z2UqPigwKSwgZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtl
eVJhbmdlLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBr
ZXlSYW5nZSwgSURCQ3Vyc29yOjpORVhULCBlYyk7IH0KKyAgICBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0
cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29u
dGV4dCwga2V5LCBJREJDdXJzb3I6Ok5FWFQsIGVjKTsgfQogICAgIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYpOworICAg
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxJREJLZXk+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBjb3VudChjb250
ZXh0LCBzdGF0aWNfY2FzdDxJREJLZXlSYW5nZSo+KDApLCBlYyk7IH0KICAgICBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElE
QktleVJhbmdlPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5PiwgRXhjZXB0
aW9uQ29kZSYpOwogCi0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVy
biBvcGVuS2V5Q3Vyc29yKGNvbnRleHQsIDAsIGVjKTsgfSAKKyAgICBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhj
ZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5LZXlDdXJzb3IoY29udGV4dCwgc3RhdGljX2Nh
c3Q8SURCS2V5UmFuZ2UqPigwKSwgZWMpOyB9IAogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRy
PElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5L
ZXlDdXJzb3IoY29udGV4dCwga2V5UmFuZ2UsIElEQkN1cnNvcjo6TkVYVCwgZWMpOyB9CisgICAg
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKSB7
IHJldHVybiBvcGVuS2V5Q3Vyc29yKGNvbnRleHQsIGtleSwgSURCQ3Vyc29yOjpORVhULCBlYyk7
IH0KICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJl
Y3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5L
ZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5PiwgdW5z
aWduZWQgc2hvcnQgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGdl
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXk+LCBFeGNlcHRpb25D
b2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5pZGwK
aW5kZXggMmM1N2M2MThkZGRmOWYzNGFkNWFjMzdlY2VkNmI5MjE2YTU2NTQ0ZC4uYjIzZTU1YWNk
NjMyY2YyNmUzYTdhNjU4NTI0ZGYzYmIzMWUyZDdiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmlkbApAQCAtMzYsOCArMzYsMTIgQEAgbW9kdWxlIHN0
b3JhZ2UgewogCiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJS
ZXF1ZXN0IG9wZW5DdXJzb3IoaW4gW09wdGlvbmFsXSBJREJLZXlSYW5nZSByYW5nZSwgaW4gW09w
dGlvbmFsXSB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24pCiAgICAgICAgICAgICByYWlzZXMgKElE
QkRhdGFiYXNlRXhjZXB0aW9uKTsKKyAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRdIElEQlJlcXVlc3Qgb3BlbkN1cnNvcihpbiBJREJLZXkga2V5LCBpbiBbT3B0aW9uYWxd
IHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbikKKyAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJh
c2VFeGNlcHRpb24pOwogICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0g
SURCUmVxdWVzdCBvcGVuS2V5Q3Vyc29yKGluIFtPcHRpb25hbF0gSURCS2V5UmFuZ2UgcmFuZ2Us
IGluIFtPcHRpb25hbF0gdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uKQogICAgICAgICAgICAgcmFp
c2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CisgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IG9wZW5LZXlDdXJzb3IoaW4gSURCS2V5IGtleSwgaW4g
W09wdGlvbmFsXSB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24pCisgICAgICAgICAgICByYWlzZXMg
KElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKICAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRdIElEQlJlcXVlc3QgZ2V0KGluIElEQktleVJhbmdlIGtleSkKICAgICAgICAgICAg
IHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwogICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0
RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBnZXQoaW4gSURCS2V5IGtleSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAppbmRl
eCA1OTRmNjZlOWU4ZDY2NWZkMzMxNDVkMGZlNjNjMjFkYzNiMmIzNjVmLi40MzE5ZDdmMGE5Mzhk
YTVmN2Q3NzA2ZjBjYmJkODZiNTYyOTA3ZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC0yNzQsNiArMjc0LDE1IEBA
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4CiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwog
fQogCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIHVu
c2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgSURCX1RS
QUNFKCJJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvciIpOworICAgIFJlZlB0cjxJREJLZXlSYW5n
ZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShrZXksIGVjKTsKKyAgICBpZiAoZWMpCisg
ICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtleVJhbmdl
LnJlbGVhc2UoKSwgZWMpOworfQorCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0
b3JlOjpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElE
QktleVJhbmdlPiByYW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJ
REJPYmplY3RTdG9yZTo6Y291bnQiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCmluZGV4IGVhN2I3N2VhODM2NzNmODQ4MjVlY2JhY2Nj
NWM1NjcwNGFiYjhlZDAuLjVkNGQxOGRjMDY1OWM0YjM5MjA4ZGQ2ODI5MWI1MTEyOTQzY2NmOTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmUuaApAQCAtNjQsOCArNjQsOSBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBhZGQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gYWRkKGNv
bnRleHQsIHZhbHVlLCAwLCBlYyk7ICB9CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBwdXQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gcHV0KGNvbnRleHQs
IHZhbHVlLCAwLCBlYyk7ICB9CiAgICAgUGFzc1JlZlB0cjxJREJJbmRleD4gY3JlYXRlSW5kZXgo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIEV4Y2VwdGlvbkNvZGUm
IGVjKSB7IHJldHVybiBjcmVhdGVJbmRleChuYW1lLCBrZXlQYXRoLCBEaWN0aW9uYXJ5KCksIGVj
KTsgfQotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbkN1cnNv
cihjb250ZXh0LCAwLCBlYyk7IH0gCisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vy
c29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7
IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIHN0YXRpY19jYXN0PElEQktleVJhbmdlKj4oMCks
IGVjKTsgfSAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2Us
IEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtleVJhbmdl
LCBJREJDdXJzb3I6Ok5FWFQsIGVjKTsgfSAKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9w
ZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJL
ZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwg
a2V5LCBJREJDdXJzb3I6Ok5FWFQsIGVjKTsgfSAKIAogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleT4sIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIEV4Y2VwdGlvbkNvZGUmKTsKQEAg
LTgwLDYgKzgxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5n
JiBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9w
ZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsgCisgICAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNz
UmVmUHRyPElEQktleT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYp
OyAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBjb3VudChjb250ZXh0LCBz
dGF0aWNfY2FzdDxJREJLZXlSYW5nZSo+KDApLCBlYyk7IH0KICAgICBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY291bnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5PiwgRXhjZXB0aW9uQ29k
ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuaWRsCmluZGV4IDVlOWUyMDljOWYyODk5ZGJlZDBjNjY4NjdjMmZlYWYwNjYxN2RmODMu
LjhjZWQzOGNkMWVmYTMyY2NiMzRmMDYyOGQzYzZhOTI4ZWI4ODdmZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5pZGwKQEAgLTQ5
LDYgKzQ5LDggQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRh
YmFzZUV4Y2VwdGlvbik7CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
XSBJREJSZXF1ZXN0IG9wZW5DdXJzb3IoaW4gW09wdGlvbmFsXSBJREJLZXlSYW5nZSByYW5nZSwg
aW4gW09wdGlvbmFsXSB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24pCiAgICAgICAgICAgICByYWlz
ZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKKyAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRdIElEQlJlcXVlc3Qgb3BlbkN1cnNvcihpbiBJREJLZXkga2V5LCBpbiBbT3B0
aW9uYWxdIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbikKKyAgICAgICAgICAgIHJhaXNlcyAoSURC
RGF0YWJhc2VFeGNlcHRpb24pOwogICAgICAgICBJREJJbmRleCBjcmVhdGVJbmRleChpbiBET01T
dHJpbmcgbmFtZSwgaW4gRE9NU3RyaW5nIGtleVBhdGgsIGluIFtPcHRpb25hbF0gRGljdGlvbmFy
eSBvcHRpb25zKQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CiAg
ICAgICAgIElEQkluZGV4IGluZGV4KGluIERPTVN0cmluZyBuYW1lKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGJjMjNmYWU1
MDc0YjEwNmExM2EwYzhiMjM3MTUzMzRlZTE1YjVmMmYuLjZlZjhlYmJiN2VjOTEwMzA5MjRjOTEw
YjNkYmZiZDBjOTcxM2E0OWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMi0wNC0yNSAgQWxl
YyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBz
dXBwb3J0IG9wZW5DdXJzb3IoSURCS2V5KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODQ2NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBdWdtZW50IGV4aXN0aW5nIHRlc3RzLCBhbmQgYWRkIG5ldyB0ZXN0
cyB0byBzdXBwb3J0CisgICAgICAgIElEQktleSBwYXJhbWV0ZXIgdG8gb3BlbkN1cnNvci9vcGVu
S2V5Q3Vyc29yLiBOb3RlIHRoYXQgdGhpcyByZW1vdmVzCisgICAgICAgIGEgdGVzdCB0aGF0IHdh
cyBwcmV2aW91c2x5IHVzaW5nIGRpY3Rpb25hcnktc3R5bGUgcGFyYW1ldGVycywKKyAgICAgICAg
d2hpY2ggaGF2ZSBiZWVuIHRlbXBvcmFyaWx5IGJyb2tlbiBkdWUgdG8gSURMIGxpbWl0YXRpb25z
LgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWRlbGV0ZS1leHBlY3RlZC50
eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJzb3ItZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29wZW5jdXJzb3Ita2V5LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb3BlbmN1cnNvci1rZXkuaHRt
bDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1k
ZWxldGUuanM6CisgICAgICAgIChvcGVuQ3Vyc29yKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvb3Blbi1jdXJzb3IuanM6CisgICAgICAgIChlbXB0eUN1cnNvcldpdGhL
ZXlTdWNjZXNzKToKKyAgICAgICAgKG9wZW5FbXB0eUN1cnNvcldpdGhLZXkpOgorICAgICAgICAo
Y3Vyc29yV2l0aEtleVN1Y2Nlc3MpOgorICAgICAgICAob3BlbkN1cnNvcldpdGhLZXkpOgorICAg
ICAgICAoZW1wdHlDdXJzb3JTdWNjZXNzKToKKyAgICAgICAgKG9wZW5FbXB0eUN1cnNvcik6Cisg
ICAgICAgIChjdXJzb3JTdWNjZXNzKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvb3BlbmN1cnNvci1rZXkuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisgICAgICAg
IChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKToK
KyAgICAgICAgKGNyZWF0ZUluZGV4ZXMpOgorICAgICAgICAodGVzdEFsbCk6CisgICAgICAgICh0
ZXN0T2JqZWN0U3RvcmUucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdE9iamVjdFN0
b3JlKToKKyAgICAgICAgKHRlc3RJbmRleC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0
ZXN0SW5kZXgpOgorICAgICAgICAodGVzdEluZGV4V2l0aEtleS5yZXF1ZXN0Lm9uc3VjY2Vzcyk6
CisgICAgICAgICh0ZXN0SW5kZXhXaXRoS2V5KToKKwogMjAxMi0wNC0yNSAgUGllcnJlIFJvc3Np
ICA8cGllcnJlLnJvc3NpQGdtYWlsLmNvbT4KIAogICAgICAgICBbU1ZHXSBOb3RoaW5nIHNob3Vs
ZCBiZSBzdHJva2VkIHdoZW4gdGhlIHN0cm9rZS13aWR0aCBpcyAwCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItZGVsZXRlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1kZWxldGUtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGFkNzhjYmJhOTVlZWVmNjhmYTc2NjJkZTM2Y2QyYWI0MjdhOGUwZjEuLjg3ZjFhYzUyZWMy
MTU0ODM5OTk5Nzk1ZDU4YzU0YTFjZGM5NWVhZGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1kZWxldGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1kZWxldGUtZXhwZWN0ZWQudHh0CkBAIC0xOSw3
ICsxOSw3IEBAIG9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTMnLCAnbXlLZXkzJykKIG9iamVjdFN0
b3JlLmFkZCgnbXlWYWx1ZTQnLCAnbXlLZXk0JykKIG9wZW5DdXJzb3IxCiB0cmFucyA9IGRiLnRy
YW5zYWN0aW9uKFsndGVzdCddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKQotdHJhbnMub2Jq
ZWN0U3RvcmUoJ3Rlc3QnKS5vcGVuQ3Vyc29yKHtyYW5nZToga2V5UmFuZ2V9KQordHJhbnMub2Jq
ZWN0U3RvcmUoJ3Rlc3QnKS5vcGVuQ3Vyc29yKGtleVJhbmdlKQogZXZlbnQudGFyZ2V0LnJlc3Vs
dC5kZWxldGUoKQogUEFTUyBldmVudC50YXJnZXQucmVzdWx0LnZhbHVlIGlzICJteVZhbHVlMSIK
IGV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJzb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJzb3ItZXhwZWN0ZWQudHh0CmluZGV4IDRiOTUzOTMw
MWU0N2JlY2M1NDFkNTNjYTQxNGJiODA0ZjQ5MjM0ZjMuLjFlODA5Mjg0YjYxOWFmNzU0YjM4NGY2
Y2Q5NDdhNDZlMzcxZjY1MmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL29wZW4tY3Vyc29yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9vcGVuLWN1cnNvci1leHBlY3RlZC50eHQKQEAgLTE3LDE2ICsxNywzNSBAQCBvYmpl
Y3RTdG9yZS5hZGQoJ215VmFsdWUnLCAnbXlLZXknKQogT3BlbmluZyBjdXJzb3IKIGV2ZW50LnRh
cmdldC5zb3VyY2Uub3BlbkN1cnNvcihrZXlSYW5nZSkKIEN1cnNvciBvcGVuZWQgc3VjY2Vzc2Z1
bGx5LgotUEFTUyBldmVudC50YXJnZXQucmVzdWx0LmRpcmVjdGlvbiBpcyAwCi1QQVNTIGV2ZW50
LnRhcmdldC5yZXN1bHQua2V5IGlzICdteUtleScKLVBBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdC52
YWx1ZSBpcyAnbXlWYWx1ZScKK1BBU1MgY3Vyc29yLmRpcmVjdGlvbiBpcyAwCitQQVNTIGN1cnNv
ci5rZXkgaXMgJ215S2V5JworUEFTUyBjdXJzb3IudmFsdWUgaXMgJ215VmFsdWUnCiAKIFBhc3Np
bmcgYW4gaW52YWxpZCBrZXkgaW50byAuY29udGludWUoe30pLgotUEFTUyBDYXVnaHQgZXhjZXB0
aW9uOiBFcnJvcjogREFUQV9FUlI6IERPTSBJREJEYXRhYmFzZSBFeGNlcHRpb24gNQorRXhwZWN0
aW5nIGV4Y2VwdGlvbiBmcm9tIGV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoe30pCitQQVNT
IEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9u
LkRBVEFfRVJSCiAKIE9wZW5pbmcgYW4gZW1wdHkgY3Vyc29yLgogb2JqZWN0U3RvcmUub3BlbkN1
cnNvcihrZXlSYW5nZSkKIEVtcHR5IGN1cnNvciBvcGVuZWQgc3VjY2Vzc2Z1bGx5LgorUEFTUyBj
dXJzb3IgaXMgbnVsbAorT3BlbmluZyBjdXJzb3IKK2V2ZW50LnRhcmdldC5zb3VyY2Uub3BlbkN1
cnNvcigibXlLZXkiKQorQ3Vyc29yIG9wZW5lZCBzdWNjZXNzZnVsbHkuCitQQVNTIGN1cnNvci5k
aXJlY3Rpb24gaXMgMAorUEFTUyBjdXJzb3Iua2V5IGlzICdteUtleScKK1BBU1MgY3Vyc29yLnZh
bHVlIGlzICdteVZhbHVlJworCitQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gLmNvbnRpbnVl
KHt9KS4KK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBjdXJzb3IuY29udGludWUoe30pCitQQVNT
IEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIElEQkRhdGFiYXNlRXhjZXB0aW9u
LkRBVEFfRVJSCisKK09wZW5pbmcgYW4gZW1wdHkgY3Vyc29yLgorb2JqZWN0U3RvcmUub3BlbkN1
cnNvcigiSW5leGlzdGVudEtleSIpCitFbXB0eSBjdXJzb3Igb3BlbmVkIHN1Y2Nlc3NmdWxseS4K
K1BBU1MgY3Vyc29yIGlzIG51bGwKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAog
VEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
b3BlbmN1cnNvci1rZXktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvb3BlbmN1cnNvci1rZXktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmMDRlYjRkZWY2YWNi
OTc5N2VkNmM1OTllNmRmNzVhN2YxODZiYjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuY3Vyc29yLWtleS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw3NSBAQAorVGVzdCBvcGVuQ3Vyc29yL29wZW5LZXlDdXJzb3Igd2l0aCByYXcgSURCS2V5cy4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHNlbGYuaW5kZXhl
ZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYu
bXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworCitpbmRleGVkREIub3BlbihuYW1lKQor
b3BlblN1Y2Nlc3MoKToKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorcmVxdWVzdCA9IGRiLnNl
dFZlcnNpb24oJzEnKQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK29iamVjdFN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsKK0ZpcnN0LCBhZGQgYWxsIG91
ciBkYXRhIHRvIHRoZSBvYmplY3Qgc3RvcmUuCityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9i
amVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0
ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVE
YXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtp
XS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
YWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7City
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0
U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3Jl
RGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtl
eSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwg
b2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVj
dFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0g
b2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRh
W2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52
YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRk
KG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CityZXF1
ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3Rv
cmVEYXRhW2ldLmtleSk7CitOb3cgY3JlYXRlIHRoZSBpbmRleGVzLgorb2JqZWN0U3RvcmUuY3Jl
YXRlSW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUsIGluZGV4RGF0YVtpXS5rZXlQYXRoLCBpbmRleERh
dGFbaV0ub3B0aW9ucyk7CitvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRleERhdGFbaV0ubmFt
ZSwgaW5kZXhEYXRhW2ldLmtleVBhdGgsIGluZGV4RGF0YVtpXS5vcHRpb25zKTsKK29iamVjdFN0
b3JlLmNyZWF0ZUluZGV4KGluZGV4RGF0YVtpXS5uYW1lLCBpbmRleERhdGFbaV0ua2V5UGF0aCwg
aW5kZXhEYXRhW2ldLm9wdGlvbnMpOwordGVzdE9iamVjdFN0b3JlKCkKK3RyYW5zID0gZGIudHJh
bnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKQorb2Jq
ZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpCityZXF1ZXN0ID0g
b2JqZWN0U3RvcmUub3BlbkN1cnNvcignMjM3LTIzLTc3MzknKQorUEFTUyBjdXJzb3Iua2V5IGlz
ICcyMzctMjMtNzczOScKK1BBU1MgSlNPTi5zdHJpbmdpZnkoY3Vyc29yLnZhbHVlKSBpcyBKU09O
LnN0cmluZ2lmeShvYmplY3RTdG9yZURhdGFbN10udmFsdWUpCitQQVNTIGN1cnNvci5wcmltYXJ5
S2V5IGlzIGN1cnNvci5rZXkKK2N1cnNvci5jb250aW51ZSgpCitQQVNTIGN1cnNvciBpcyBudWxs
Cit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSwgSURCVHJhbnNhY3Rpb24u
UkVBRF9XUklURSkKK29iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVO
YW1lKQoraW5kZXggPSBvYmplY3RTdG9yZS5pbmRleCgnd2VpZ2h0JykKK3JlcXVlc3QgPSBpbmRl
eC5vcGVuQ3Vyc29yKDE4MCkKK1BBU1MgY3Vyc29yLmtleSBpcyAxODAKK1BBU1MgSlNPTi5zdHJp
bmdpZnkoY3Vyc29yLnZhbHVlKSBpcyBKU09OLnN0cmluZ2lmeShvYmplY3RTdG9yZURhdGFbMl0u
dmFsdWUpCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzICcyMzctMjMtNzczNCcKK2N1cnNvci5j
b250aW51ZSgpCitQQVNTIGN1cnNvci5rZXkgaXMgMTgwCitQQVNTIEpTT04uc3RyaW5naWZ5KGN1
cnNvci52YWx1ZSkgaXMgSlNPTi5zdHJpbmdpZnkob2JqZWN0U3RvcmVEYXRhWzZdLnZhbHVlKQor
UEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnMjM3LTIzLTc3MzgnCitjdXJzb3IuY29udGludWUo
KQorUEFTUyBjdXJzb3Iua2V5IGlzIDE4MAorUEFTUyBKU09OLnN0cmluZ2lmeShjdXJzb3IudmFs
dWUpIGlzIEpTT04uc3RyaW5naWZ5KG9iamVjdFN0b3JlRGF0YVsxMF0udmFsdWUpCitQQVNTIGN1
cnNvci5wcmltYXJ5S2V5IGlzICcyMzctMjMtNzc0MicKK2N1cnNvci5jb250aW51ZSgpCitQQVNT
IGN1cnNvciBpcyBudWxsCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSwg
SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkKK29iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3Rv
cmUob2JqZWN0U3RvcmVOYW1lKQoraW5kZXggPSBvYmplY3RTdG9yZS5pbmRleCgnd2VpZ2h0JykK
K3JlcXVlc3QgPSBpbmRleC5vcGVuS2V5Q3Vyc29yKDE4MCkKK1BBU1MgY3Vyc29yLmtleSBpcyAx
ODAKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgJzIzNy0yMy03NzM0JworY3Vyc29yLmNvbnRp
bnVlKCkKK1BBU1MgY3Vyc29yLmtleSBpcyAxODAKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMg
JzIzNy0yMy03NzM4JworY3Vyc29yLmNvbnRpbnVlKCkKK1BBU1MgY3Vyc29yLmtleSBpcyAxODAK
K1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgJzIzNy0yMy03NzQyJworY3Vyc29yLmNvbnRpbnVl
KCkKK1BBU1MgY3Vyc29yIGlzIG51bGwKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9vcGVuY3Vyc29yLWtleS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
b3BlbmN1cnNvci1rZXkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOGIxNTBjZjUzMDRmYjdhMGZhYTlmZDM2
OWEyODNhOWMxY2YwZTc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvb3BlbmN1cnNvci1rZXkuaHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcGVuY3Vyc29yLWtleS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItZGVsZXRlLmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1kZWxldGUuanMKaW5k
ZXggZGI2ZTJiOTM1NDhhM2E0OWRiNTRiMGQ3MjAwMTU4ODRjMTJlYjMzNi4uYmJjOGQ4ZjE2YWU4
ZWZiZjQ1MDlmOGU5MjQ3OTQxNGI1MWFhNTE2YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1kZWxldGUuanMKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1kZWxldGUuanMKQEAgLTQ2LDcg
KzQ2LDcgQEAgZnVuY3Rpb24gb3BlbkN1cnNvcigpCiAgICAgZGVidWcoIm9wZW5DdXJzb3IxIik7
CiAgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3Rlc3QnXSwgSURCVHJh
bnNhY3Rpb24uUkVBRF9XUklURSkiKTsKICAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2Vy
Qm91bmQoIm15S2V5MSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RT
dG9yZSgndGVzdCcpLm9wZW5DdXJzb3Ioe3JhbmdlOiBrZXlSYW5nZX0pIik7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0Jykub3BlbkN1cnNvcihrZXlS
YW5nZSkiKTsKICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvclN1Y2Nlc3M7CiAgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CiAgICAgY291bnRlciA9IDE7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Bl
bi1jdXJzb3IuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Bl
bi1jdXJzb3IuanMKaW5kZXggOWY5ZGMzYjZiNzk1YmYwZWQ5ZTkzNjRmN2FiZjg4Y2QwZTZjYjg3
Yy4uN2RhOGUzNjI1NzgyN2U5ODg3MTJkZmEwYTVhNmY4YTc1MmE1M2RkNiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4tY3Vyc29yLmpzCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLWN1cnNvci5q
cwpAQCAtNSwxNyArNSw1OCBAQCBpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CiAKIGRlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQidzIG9wZW5DdXJzb3IuIik7CiAKLWZ1bmN0aW9uIGVtcHR5Q3Vy
c29yU3VjY2VzcygpCisKK2Z1bmN0aW9uIGVtcHR5Q3Vyc29yV2l0aEtleVN1Y2Nlc3MoKQogewot
ICAgIGRlYnVnKCJFbXB0eSBjdXJzb3Igb3BlbmVkIHN1Y2Nlc3NmdWxseS4iKQotICAgIC8vIEZJ
WE1FOiBjaGVjayB0aGF0IHdlIGNhbiBpdGVyYXRlIHRoZSBjdXJzb3IuCisgICAgZGVidWcoIkVt
cHR5IGN1cnNvciBvcGVuZWQgc3VjY2Vzc2Z1bGx5LiIpOworICAgIGN1cnNvciA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7CisgICAgc2hvdWxkQmVOdWxsKCJjdXJzb3IiKTsKICAgICBmaW5pc2hKU1Rl
c3QoKTsKIH0KIAorZnVuY3Rpb24gb3BlbkVtcHR5Q3Vyc29yV2l0aEtleSgpCit7CisgICAgZGVi
dWcoIk9wZW5pbmcgYW4gZW1wdHkgY3Vyc29yLiIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKFwiSW5leGlzdGVudEtleVwiKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZW1wdHlDdXJzb3JXaXRoS2V5U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY3Vyc29yV2l0
aEtleVN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJDdXJzb3Igb3BlbmVkIHN1Y2Nlc3NmdWxseS4i
KTsKKyAgICAvLyBGSVhNRTogY2hlY2sgdGhhdCB3ZSBjYW4gaXRlcmF0ZSB0aGUgY3Vyc29yLgor
ICAgIGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgc2hvdWxkQmUoImN1cnNvci5k
aXJlY3Rpb24iLCAiMCIpOworICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIidteUtleSciKTsK
KyAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidteVZhbHVlJyIpOworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIC5jb250aW51ZSh7fSku
Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiY3Vyc29yLmNvbnRpbnVlKHt9KSIsICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgIGRlYnVnKCIiKTsKKyAgICBvcGVu
RW1wdHlDdXJzb3JXaXRoS2V5KCk7Cit9CisKK2Z1bmN0aW9uIG9wZW5DdXJzb3JXaXRoS2V5KCkK
K3sKKyAgICBkZWJ1ZygiT3BlbmluZyBjdXJzb3IiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5vcGVuQ3Vyc29yKFwibXlLZXlcIikiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcldpdGhLZXlTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBlbXB0eUN1cnNvclN1
Y2Nlc3MoKQoreworICAgIGRlYnVnKCJFbXB0eSBjdXJzb3Igb3BlbmVkIHN1Y2Nlc3NmdWxseS4i
KTsKKyAgICBjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIHNob3VsZEJlTnVsbCgi
Y3Vyc29yIik7CisgICAgb3BlbkN1cnNvcldpdGhLZXkoKTsKK30KKwogZnVuY3Rpb24gb3BlbkVt
cHR5Q3Vyc29yKCkKIHsKICAgICBkZWJ1ZygiT3BlbmluZyBhbiBlbXB0eSBjdXJzb3IuIik7Ci0g
ICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKCJJbmV4aXN0ZW50S2V5Iik7Cisg
ICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS51cHBlckJvdW5kKCJJbmV4aXN0ZW50S2V5Iik7CiAg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLm9wZW5DdXJzb3Ioa2V5UmFuZ2Up
Iik7CiAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBlbXB0eUN1cnNvclN1Y2Nlc3M7CiAgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CkBAIC0yMywxOSArNjQsMTUg
QEAgZnVuY3Rpb24gb3BlbkVtcHR5Q3Vyc29yKCkKIAogZnVuY3Rpb24gY3Vyc29yU3VjY2Vzcygp
CiB7Ci0gICAgZGVidWcoIkN1cnNvciBvcGVuZWQgc3VjY2Vzc2Z1bGx5LiIpCisgICAgZGVidWco
IkN1cnNvciBvcGVuZWQgc3VjY2Vzc2Z1bGx5LiIpOwogICAgIC8vIEZJWE1FOiBjaGVjayB0aGF0
IHdlIGNhbiBpdGVyYXRlIHRoZSBjdXJzb3IuCi0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5y
ZXN1bHQuZGlyZWN0aW9uIiwgIjAiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5rZXkiLCAiJ215S2V5JyIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnZh
bHVlIiwgIidteVZhbHVlJyIpOworICAgIGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Cisg
ICAgc2hvdWxkQmUoImN1cnNvci5kaXJlY3Rpb24iLCAiMCIpOworICAgIHNob3VsZEJlKCJjdXJz
b3Iua2V5IiwgIidteUtleSciKTsKKyAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidteVZh
bHVlJyIpOwogICAgIGRlYnVnKCIiKTsKLSAgICB0cnkgewotICAgICAgICBkZWJ1ZygiUGFzc2lu
ZyBhbiBpbnZhbGlkIGtleSBpbnRvIC5jb250aW51ZSh7fSkuIik7Ci0gICAgICAgIGV2ZW50LnRh
cmdldC5yZXN1bHQuY29udGludWUoe30pOwotICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRp
b24gdGhyb3duIik7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICB0ZXN0UGFzc2VkKCJDYXVn
aHQgZXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygpKTsKLSAgICB9CisgICAgZGVidWcoIlBhc3Np
bmcgYW4gaW52YWxpZCBrZXkgaW50byAuY29udGludWUoe30pLiIpOworICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoe30pIiwgIklEQkRhdGFi
YXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CiAgICAgZGVidWcoIiIpOwogICAgIG9wZW5FbXB0eUN1
cnNvcigpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL29wZW5jdXJzb3Ita2V5LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL29wZW5jdXJzb3Ita2V5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2ZGI4Yzg2OTdiMGU1MGY1
MWE0NDI5YThlNzViZTc1YTc5NmVkZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3BlbmN1cnNvci1rZXkuanMKQEAgLTAsMCArMSwx
ODUgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlw
dHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBvcGVuQ3Vyc29yL29wZW5L
ZXlDdXJzb3Igd2l0aCByYXcgSURCS2V5cy4iKTsKKwordmFyIG9iamVjdFN0b3JlRGF0YSA9IFsK
KyAgICB7IGtleTogIjIzNy0yMy03NzMyIiwgdmFsdWU6IHsgbmFtZTogIkJvYiIsIGhlaWdodDog
NjAsIHdlaWdodDogMTIwIH0gfSwKKyAgICB7IGtleTogIjIzNy0yMy03NzMzIiwgdmFsdWU6IHsg
bmFtZTogIkFubiIsIGhlaWdodDogNTIsIHdlaWdodDogMTEwIH0gfSwKKyAgICB7IGtleTogIjIz
Ny0yMy03NzM0IiwgdmFsdWU6IHsgbmFtZTogIlJvbiIsIGhlaWdodDogNzMsIHdlaWdodDogMTgw
IH0gfSwKKyAgICB7IGtleTogIjIzNy0yMy03NzM1IiwgdmFsdWU6IHsgbmFtZTogIlN1ZSIsIGhl
aWdodDogNTgsIHdlaWdodDogMTMwIH0gfSwKKyAgICB7IGtleTogIjIzNy0yMy03NzM2IiwgdmFs
dWU6IHsgbmFtZTogIkpvZSIsIGhlaWdodDogNjUsIHdlaWdodDogMTUwIH0gfSwKKyAgICB7IGtl
eTogIjIzNy0yMy03NzM3IiwgdmFsdWU6IHsgbmFtZTogIlBhdCIsIGhlaWdodDogNjUsIHdlaWdo
dDogMTAwIH0gfSwKKyAgICB7IGtleTogIjIzNy0yMy03NzM4IiwgdmFsdWU6IHsgbmFtZTogIkxl
byIsIGhlaWdodDogNjUsIHdlaWdodDogMTgwIH0gfSwKKyAgICB7IGtleTogIjIzNy0yMy03NzM5
IiwgdmFsdWU6IHsgbmFtZTogIkplZiIsIGhlaWdodDogNjUsIHdlaWdodDogMTIwIH0gfSwKKyAg
ICB7IGtleTogIjIzNy0yMy03NzQwIiwgdmFsdWU6IHsgbmFtZTogIlNhbSIsIGhlaWdodDogNzEs
IHdlaWdodDogMTEwIH0gfSwKKyAgICB7IGtleTogIjIzNy0yMy03NzQxIiwgdmFsdWU6IHsgbmFt
ZTogIkJ1ZyIsIGhlaWdodDogNjMsIHdlaWdodDogMTAwIH0gfSwKKyAgICB7IGtleTogIjIzNy0y
My03NzQyIiwgdmFsdWU6IHsgbmFtZTogIlR1YiIsIGhlaWdodDogNjksIHdlaWdodDogMTgwIH0g
fSwKKyAgICB7IGtleTogIjIzNy0yMy03NzQzIiwgdmFsdWU6IHsgbmFtZTogIlJ1ZyIsIGhlaWdo
dDogNzcsIHdlaWdodDogMTIwIH0gfSwKKyAgICB7IGtleTogIjIzNy0yMy03NzQ0IiwgdmFsdWU6
IHsgbmFtZTogIlB1ZyIsIGhlaWdodDogNjYsIHdlaWdodDogMTEwIH0gfSwKK107CisKK3ZhciBp
bmRleERhdGEgPSBbCisgICAgeyBuYW1lOiAibmFtZSIsIGtleVBhdGg6ICJuYW1lIiwgb3B0aW9u
czogeyB1bmlxdWU6IHRydWUgfSB9LAorICAgIHsgbmFtZTogImhlaWdodCIsIGtleVBhdGg6ICJo
ZWlnaHQiLCBvcHRpb25zOiB7IH0gfSwKKyAgICB7IG5hbWU6ICJ3ZWlnaHQiLCBrZXlQYXRoOiAi
d2VpZ2h0Iiwgb3B0aW9uczogeyB1bmlxdWU6IGZhbHNlIH0gfQorXTsKKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBuYW1lID0gd2luZG93Lmxv
Y2F0aW9uLnBhdGhuYW1lOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Bl
bihuYW1lKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBkYiA9IGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgb2JqZWN0U3RvcmVO
YW1lID0gIlBlb3BsZSI7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRi
LnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9w
dWxhdGVPYmplY3RTdG9yZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCit7
CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZh
bEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5h
bWUpOyIpOworICAgIHRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICB0cmFucy5vbmFi
b3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisKKyAgICBkZWJ1ZygiRmlyc3QsIGFkZCBh
bGwgb3VyIGRhdGEgdG8gdGhlIG9iamVjdCBzdG9yZS4iKTsKKyAgICBhZGRlZERhdGEgPSAwOwor
ICAgIGZvciAoaSBpbiBvYmplY3RTdG9yZURhdGEpIHsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVl
LCBvYmplY3RTdG9yZURhdGFbaV0ua2V5KTsiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgfQorICAgIGNyZWF0ZUluZGV4ZXMoKTsKKyAg
ICB0cmFucy5vbmNvbXBsZXRlID0gdGVzdEFsbDsKK30KKworZnVuY3Rpb24gY3JlYXRlSW5kZXhl
cygpCit7CisgICAgZGVidWcoIk5vdyBjcmVhdGUgdGhlIGluZGV4ZXMuIik7CisgICAgZm9yIChp
IGluIGluZGV4RGF0YSkgeworICAgICAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJ
bmRleChpbmRleERhdGFbaV0ubmFtZSwgaW5kZXhEYXRhW2ldLmtleVBhdGgsIGluZGV4RGF0YVtp
XS5vcHRpb25zKTsiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RBbGwoKQoreworICAgIHRl
c3RPYmplY3RTdG9yZSgpOworfQorCitmdW5jdGlvbiB0ZXN0T2JqZWN0U3RvcmUoKQoreworICAg
IGRlYnVnKCJ0ZXN0T2JqZWN0U3RvcmUoKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIu
dHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIp
OworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICBvYmpl
Y3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUob2Jq
ZWN0U3RvcmVOYW1lKSIpOworCisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
Lm9wZW5DdXJzb3IoJzIzNy0yMy03NzM5JykiKTsKKyAgICB2YXIgY291bnQgPSAwOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGN1cnNvciA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7CisKKyAgICAgICAgaWYgKGNvdW50ID09IDApIHsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3Iua2V5IiwgIicyMzctMjMtNzczOSciKTsKKyAgICAgICAgICAgIHNob3Vs
ZEJlKCJKU09OLnN0cmluZ2lmeShjdXJzb3IudmFsdWUpIiwgIkpTT04uc3RyaW5naWZ5KG9iamVj
dFN0b3JlRGF0YVs3XS52YWx1ZSkiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJp
bWFyeUtleSIsICJjdXJzb3Iua2V5Iik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3Iu
Y29udGludWUoKSIpOworICAgICAgICB9IGVsc2UgaWYgKGNvdW50ID09IDEpIHsKKyAgICAgICAg
ICAgIHNob3VsZEJlTnVsbCgiY3Vyc29yIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJUb28gbXVjaCBpdGVyYXRpb24iKTsKKyAgICAgICAgfQorICAgICAgICBj
b3VudCsrOworICAgIH07CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RJbmRleDsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
dGVzdEluZGV4KCkKK3sKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9i
amVjdFN0b3JlTmFtZSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBvYmplY3RT
dG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUob2JqZWN0
U3RvcmVOYW1lKSIpOworICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBvYmplY3RTdG9y
ZS5pbmRleCgnd2VpZ2h0JykiKTsKKworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleC5v
cGVuQ3Vyc29yKDE4MCkiKTsKKyAgICB2YXIgY291bnQgPSAwOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
CisKKyAgICAgICAgaWYgKGNvdW50ID09IDApIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJz
b3Iua2V5IiwgJzE4MCcpOworICAgICAgICAgICAgc2hvdWxkQmUoIkpTT04uc3RyaW5naWZ5KGN1
cnNvci52YWx1ZSkiLAorICAgICAgICAgICAgICAgICAgICAgIkpTT04uc3RyaW5naWZ5KG9iamVj
dFN0b3JlRGF0YVsyXS52YWx1ZSkiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJp
bWFyeUtleSIsICInMjM3LTIzLTc3MzQnIik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJz
b3IuY29udGludWUoKSIpOworICAgICAgICB9IGVsc2UgaWYgKGNvdW50ID09IDEpIHsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgJzE4MCcpOworICAgICAgICAgICAgc2hvdWxk
QmUoIkpTT04uc3RyaW5naWZ5KGN1cnNvci52YWx1ZSkiLAorICAgICAgICAgICAgICAgICAgICAg
IkpTT04uc3RyaW5naWZ5KG9iamVjdFN0b3JlRGF0YVs2XS52YWx1ZSkiKTsKKyAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICInMjM3LTIzLTc3MzgnIik7CisgICAgICAg
ICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKSIpOworICAgICAgICB9IGVsc2UgaWYg
KGNvdW50ID09IDIpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgJzE4MCcp
OworICAgICAgICAgICAgc2hvdWxkQmUoIkpTT04uc3RyaW5naWZ5KGN1cnNvci52YWx1ZSkiLAor
ICAgICAgICAgICAgICAgICAgICAgIkpTT04uc3RyaW5naWZ5KG9iamVjdFN0b3JlRGF0YVsxMF0u
dmFsdWUpIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAiJzIz
Ny0yMy03NzQyJyIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCki
KTsKKyAgICAgICAgfSBlbHNlIGlmIChjb3VudCA9PSAzKSB7CisgICAgICAgICAgICBzaG91bGRC
ZU51bGwoImN1cnNvciIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiVG9vIG11Y2ggaXRlcmF0aW9uIik7CisgICAgICAgIH0KKyAgICAgICAgY291bnQrKzsKKyAg
ICB9OworICAgIHRyYW5zLm9uY29tcGxldGUgPSB0ZXN0SW5kZXhXaXRoS2V5OworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB0ZXN0
SW5kZXhXaXRoS2V5KCkKK3sKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9u
KG9iamVjdFN0b3JlTmFtZSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBvYmpl
Y3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUob2Jq
ZWN0U3RvcmVOYW1lKSIpOworICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBvYmplY3RT
dG9yZS5pbmRleCgnd2VpZ2h0JykiKTsKKworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRl
eC5vcGVuS2V5Q3Vyc29yKDE4MCkiKTsKKyAgICB2YXIgY291bnQgPSAwOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGN1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQ7CisKKyAgICAgICAgaWYgKGNvdW50ID09IDApIHsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3Iua2V5IiwgJzE4MCcpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmlt
YXJ5S2V5IiwgIicyMzctMjMtNzczNCciKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNv
ci5jb250aW51ZSgpIik7CisgICAgICAgIH0gZWxzZSBpZiAoY291bnQgPT0gMSkgeworICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAnMTgwJyk7CisgICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAiJzIzNy0yMy03NzM4JyIpOworICAgICAgICAgICAgZXZh
bEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCkiKTsKKyAgICAgICAgfSBlbHNlIGlmIChjb3VudCA9
PSAyKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICcxODAnKTsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICInMjM3LTIzLTc3NDInIik7Cisg
ICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKSIpOworICAgICAgICB9IGVs
c2UgaWYgKGNvdW50ID09IDMpIHsKKyAgICAgICAgICAgIHNob3VsZEJlTnVsbCgiY3Vyc29yIik7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJUb28gbXVjaCBpdGVy
YXRpb24iKTsKKyAgICAgICAgfQorICAgICAgICBjb3VudCsrOworICAgIH07CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0
ZSA9IGZpbmlzaEpTVGVzdDsKK30KKworCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qcwppbmRleCBlNGI4ZDNmMGM0Y2E4YTA5
YzIxZGVjNzQxMGI3YmU3YjVkZDFhZGVmLi5jZmQ3MTI3N2ZkY2JhMDQ5ZTZhZTFiZTQ5MjczMmM1
YTk4OWEwNDNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvc2hhcmVkLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9zaGFyZWQuanMKQEAgLTUzLDcgKzUzLDcgQEAgZnVuY3Rpb24gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2soZXZlbnQpCiAgICAgZmluaXNoSlNUZXN0KCk7CiB9CiAKLWZ1bmN0aW9uIHVuZXhw
ZWN0ZWRBYm9ydENhbGxiYWNrKCkKK2Z1bmN0aW9uIHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrKGUp
CiB7CiAgICAgdGVzdEZhaWxlZCgiQWJvcnQgZnVuY3Rpb24gY2FsbGVkIHVuZXhwZWN0ZWRseSEi
KTsKICAgICBmaW5pc2hKU1Rlc3QoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>