<?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>141409</bug_id>
          
          <creation_ts>2015-02-09 15:42:17 -0800</creation_ts>
          <short_desc>a few more WEBCORE_EXPORT macros</short_desc>
          <delta_ts>2015-02-09 17:21:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>136172</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1067945</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-02-09 15:42:17 -0800</bug_when>
    <thetext>WEBCORE_EXPORT macros need updating to reflect the changes of the last 5 months.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067948</commentid>
    <comment_count>1</comment_count>
      <attachid>246300</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-02-09 15:46:22 -0800</bug_when>
    <thetext>Created attachment 246300
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067950</commentid>
    <comment_count>2</comment_count>
      <attachid>246300</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-02-09 15:51:07 -0800</bug_when>
    <thetext>Comment on attachment 246300
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMGlobalObject.h:71
&gt; -        static WEBKIT_EXPORTDATA const JSC::ClassInfo s_info;
&gt; +        WEBCORE_EXPORT static const JSC::ClassInfo s_info;

Are these changes right?

&gt; Source/WebCore/bindings/objc/DOMInternal.h:53
&gt; +WEBCORE_EXPORT @interface DOMNodeFilter : DOMObject &lt;DOMNodeFilter&gt;

‽ ‽ how

&gt; Source/WebCore/page/DatabaseProvider.h:36
&gt; +class WEBCORE_EXPORT DatabaseProvider : public RefCounted&lt;DatabaseProvider&gt; {

What does it mean to export a class? Also, is this the right placement for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067954</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-02-09 16:01:38 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 246300 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=246300&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMGlobalObject.h:71
&gt; &gt; -        static WEBKIT_EXPORTDATA const JSC::ClassInfo s_info;
&gt; &gt; +        WEBCORE_EXPORT static const JSC::ClassInfo s_info;
&gt; 
&gt; Are these changes right?
Yes.  When I make the switch, I&apos;m going to get rid of WEBKIT_EXPORTDATA in favor of WEBCORE_EXPORT, which does the same thing.
&gt; 
&gt; &gt; Source/WebCore/bindings/objc/DOMInternal.h:53
&gt; &gt; +WEBCORE_EXPORT @interface DOMNodeFilter : DOMObject &lt;DOMNodeFilter&gt;
&gt; 
&gt; ‽ ‽ how
I&apos;m not sure, but this fixes linker errors of missing symbols like _OBJC_CLASS_$_DOMNodeFilter and _OBJC_METACLASS_$_DOMNodeFilter.
&gt; 
&gt; &gt; Source/WebCore/page/DatabaseProvider.h:36
&gt; &gt; +class WEBCORE_EXPORT DatabaseProvider : public RefCounted&lt;DatabaseProvider&gt; {
&gt; 
&gt; What does it mean to export a class? Also, is this the right placement for
&gt; this?
This is the right placement.  It exports the vtable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067959</commentid>
    <comment_count>4</comment_count>
      <attachid>246303</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-02-09 16:35:54 -0800</bug_when>
    <thetext>Created attachment 246303
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067960</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-02-09 16:36:23 -0800</bug_when>
    <thetext>I added changes to the bindings tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067969</commentid>
    <comment_count>6</comment_count>
      <attachid>246303</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-09 17:21:43 -0800</bug_when>
    <thetext>Comment on attachment 246303
Patch

Clearing flags on attachment: 246303

Committed r179861: &lt;http://trac.webkit.org/changeset/179861&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067970</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-09 17:21:46 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246300</attachid>
            <date>2015-02-09 15:46:22 -0800</date>
            <delta_ts>2015-02-09 16:35:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141409-20150209154623.patch</filename>
            <type>text/plain</type>
            <size>41769</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3OTg1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE1LTAyLTA5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXBkYXRlIFdF
QkNPUkVfRVhQT1JUIHRvIHByZXBhcmUgdG8gc3RhcnQgdXNpbmcgaXQuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE0MDkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xv
YmFsT2JqZWN0Lmg6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5oOgorICAg
ICAgICAqIGJpbmRpbmdzL29iamMvRXhjZXB0aW9uSGFuZGxlcnMubW06CisgICAgICAgICogYmlu
ZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6Cisg
ICAgICAgICogY3NzL1N0eWxlUHJvcGVydGllcy5oOgorICAgICAgICAqIGRvbS9EZXZpY2VNb3Rp
b25EYXRhLmg6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBkb20vUG9zaXRpb24u
aDoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAqIGVk
aXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5oOgorICAgICAg
ICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvVGltZVJhbmdlcy5o
OgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZVZhbGlkYXRpb24uaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUu
aDoKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaDoKKyAgICAgICAgKiBwYWdl
L0RhdGFiYXNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBwYWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5
cy5oOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgICogcGFnZS9GcmFt
ZVNuYXBzaG90dGluZy5oOgorICAgICAgICAqIHBhZ2UvTWFpbkZyYW1lLmg6CisgICAgICAgICog
cGFnZS9QYWdlQ29uc29sZUNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvUGFnZU92ZXJsYXkuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL0ZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyLmg6CisgICAgICAgICogcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYWNoZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHbHlwaHMuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UmFuZ2VzLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR2VvbWV0cnlVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HbHlwaFBhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3JlYXRlLWh0dHAtaGVhZGVyLW5hbWUtdGFibGU6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLmg6CisgICAgICAgICogcGxhdGZvcm0vc3Fs
L1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVT
dGF0ZW1lbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdExvY2F0aW9uLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKyAgICAgICAgKiBzdG9yYWdlL1N0b3Jh
Z2VFdmVudERpc3BhdGNoZXIuaDoKKwogMjAxNS0wMi0wOSAgVGltb3RoeSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQXZvaWQgdXNpbmcgYSBIYXNoTWFwIGZv
ciBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLCB3aGljaCByYXJlbHkgaGFzIG1vcmUgdGhh
biBvbmUgaXRlbQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5oCShyZXZpc2lvbiAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCB3b3JsZElzTm9ybWFsKCkgY29uc3Qg
eyByZXR1cm4gbV93b3JsZElzTm9ybWFsOyB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHN0
YXRpYyBXRUJLSVRfRVhQT1JUREFUQSBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CisgICAg
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CiAK
ICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyogaW5mbygp
IHsgcmV0dXJuICZzX2luZm87IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTUludGVybmFsLmgJKHJldmlzaW9uIDE3OTgzNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIH0KIAotQGludGVyZmFjZSBET01Ob2RlRmlsdGVy
IDogRE9NT2JqZWN0IDxET01Ob2RlRmlsdGVyPgorV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBE
T01Ob2RlRmlsdGVyIDogRE9NT2JqZWN0IDxET01Ob2RlRmlsdGVyPgogQGVuZAogCiBAaW50ZXJm
YWNlIERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciA6IERPTU9iamVjdCA8RE9NWFBhdGhOU1Jlc29s
dmVyPgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9FeGNlcHRpb25IYW5kbGVy
cy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0V4Y2VwdGlv
bkhhbmRsZXJzLm1tCShyZXZpc2lvbiAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9vYmpjL0V4Y2VwdGlvbkhhbmRsZXJzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjks
MTAgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZURlc2NyaXB0aW9uLmgiCiAKLU5TU3RyaW5nICpET01FeGNlcHRpb24gPSBAIkRPTUV4Y2VwdGlv
biI7Ci1OU1N0cmluZyAqRE9NUmFuZ2VFeGNlcHRpb24gPSBAIkRPTVJhbmdlRXhjZXB0aW9uIjsK
LU5TU3RyaW5nICpET01FdmVudEV4Y2VwdGlvbiA9IEAiRE9NRXZlbnRFeGNlcHRpb24iOwotTlNT
dHJpbmcgKkRPTVhQYXRoRXhjZXB0aW9uID0gQCJET01YUGF0aEV4Y2VwdGlvbiI7CitXRUJDT1JF
X0VYUE9SVCBOU1N0cmluZyAqRE9NRXhjZXB0aW9uID0gQCJET01FeGNlcHRpb24iOworV0VCQ09S
RV9FWFBPUlQgTlNTdHJpbmcgKkRPTVJhbmdlRXhjZXB0aW9uID0gQCJET01SYW5nZUV4Y2VwdGlv
biI7CitXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqRE9NRXZlbnRFeGNlcHRpb24gPSBAIkRPTUV2
ZW50RXhjZXB0aW9uIjsKK1dFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICpET01YUGF0aEV4Y2VwdGlv
biA9IEAiRE9NWFBhdGhFeGNlcHRpb24iOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oCShyZXZpc2lvbiAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAs
NyBAQCBAaW50ZXJmYWNlIFdlYlNjcmlwdE9iamVjdCAoU3RhZ2VkRm9yUHViCiAtIChCT09MKWhh
c1dlYlNjcmlwdEtleTooTlNTdHJpbmcgKiluYW1lOwogQGVuZAogCi1AaW50ZXJmYWNlIFdlYlNj
cmlwdE9iamVjdFByaXZhdGUgOiBOU09iamVjdAorV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBX
ZWJTY3JpcHRPYmplY3RQcml2YXRlIDogTlNPYmplY3QKIHsKIEBwdWJsaWMKICAgICBKU0M6OkpT
T2JqZWN0ICppbXA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMTc5ODM3KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAg
LTg1OCw3ICs4NTgsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgfSBlbHNpZiAoJGlu
dGVyZmFjZU5hbWUgZXEgIkRPTVN0cmluZ0xpc3QiKSB7CiAgICAgICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHRvV3JhcHBl
ZChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSk7XG4iKTsKICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljICRpbXBsVHlwZSog
dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljICRpbXBsVHlwZSogdG9XcmFwcGVkKEpT
Qzo6SlNWYWx1ZSk7XG4iKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtOTE1LDcgKzkxNSw3IEBA
IHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiTm9kZSIpIHsK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuIik7CiAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICJwcm90ZWN0ZWQ6XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICBzdGF0aWMgV0VCS0lUX0VYUE9SVERBVEEgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZv
O1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbztcbiIpOwogICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAicHVibGljOlxuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5m
bzsgfVxuXG4iKTsKICAgICB9IGVsc2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UHJvcGVydGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3Bl
cnRpZXMuaAkocmV2aXNpb24gMTc5ODM3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJv
cGVydGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICBQ
cm9wZXJ0eVJlZmVyZW5jZSBwcm9wZXJ0eUF0KHVuc2lnbmVkKSBjb25zdDsKIAogICAgIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlJRCkgY29uc3Q7
Ci0gICAgU3RyaW5nIGdldFByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIGdldFByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCkgY29u
c3Q7CiAgICAgYm9vbCBwcm9wZXJ0eUlzSW1wb3J0YW50KENTU1Byb3BlcnR5SUQpIGNvbnN0Owog
ICAgIFN0cmluZyBnZXRQcm9wZXJ0eVNob3J0aGFuZChDU1NQcm9wZXJ0eUlEKSBjb25zdDsKICAg
ICBib29sIGlzUHJvcGVydHlJbXBsaWNpdChDU1NQcm9wZXJ0eUlEKSBjb25zdDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25EYXRhLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkRhdGEuaAkocmV2aXNpb24gMTc5ODM3KQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtODMs
NyArODMsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8RGV2aWNlTW90aW9uRGF0YT4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIFJlZjxEZXZpY2VNb3Rp
b25EYXRhPiBjcmVhdGUoUGFzc1JlZlB0cjxBY2NlbGVyYXRpb24+IGFjY2VsZXJhdGlvbiwgUGFz
c1JlZlB0cjxBY2NlbGVyYXRpb24+IGFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksCisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEZXZpY2VNb3Rpb25EYXRhPiBjcmVhdGUoUGFzc1Jl
ZlB0cjxBY2NlbGVyYXRpb24+LCBQYXNzUmVmUHRyPEFjY2VsZXJhdGlvbj4gYWNjZWxlcmF0aW9u
SW5jbHVkaW5nR3Jhdml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQYXNzUmVmUHRyPFJvdGF0aW9uUmF0ZT4gcm90YXRpb25SYXRlLCBib29sIGNhblByb3ZpZGVJ
bnRlcnZhbCwgZG91YmxlIGludGVydmFsKTsKIAogICAgIGNvbnN0IEFjY2VsZXJhdGlvbiogYWNj
ZWxlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hY2NlbGVyYXRpb24uZ2V0KCk7IH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaAkocmV2aXNpb24gMTc5ODM3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMjc4LDcgKzI3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEhhc1N5bnRoZXRpY0F0dHJDaGlsZE5vZGVzKGJvb2wgZmxhZykgeyBzZXRGbGFnKGZsYWcsIEhh
c1N5bnRoZXRpY0F0dHJDaGlsZE5vZGVzRmxhZyk7IH0KIAogICAgIC8vIElmIHRoaXMgbm9kZSBp
cyBpbiBhIHNoYWRvdyB0cmVlLCByZXR1cm5zIGl0cyBzaGFkb3cgaG9zdC4gT3RoZXJ3aXNlLCBy
ZXR1cm5zIG51bGwuCi0gICAgRWxlbWVudCogc2hhZG93SG9zdCgpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIEVsZW1lbnQqIHNoYWRvd0hvc3QoKSBjb25zdDsKICAgICAvLyBJZiB0aGlzIG5v
ZGUgaXMgaW4gYSBzaGFkb3cgdHJlZSwgcmV0dXJucyBpdHMgc2hhZG93IGhvc3QuIE90aGVyd2lz
ZSwgcmV0dXJucyB0aGlzLgogICAgIC8vIERlcHJlY2F0ZWQuIFNob3VsZCB1c2Ugc2hhZG93SG9z
dCgpIGFuZCBjaGVjayB0aGUgcmV0dXJuIHZhbHVlLgogICAgIFdFQkNPUkVfRVhQT1JUIE5vZGUq
IGRlcHJlY2F0ZWRTaGFkb3dBbmNlc3Rvck5vZGUoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9Qb3NpdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3Np
dGlvbi5oCShyZXZpc2lvbiAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw3IEBAIHB1YmxpYzoKICAgICAvLyBPZmZz
ZXRzIGFyZSBjb21wdXRlZCB1c2luZyByZW5kZXIgdGV4dCBmb3Igbm9kZXMgdGhhdCBoYXZlIHJl
bmRlcmVycyAtIGJ1dCBub3RlIHRoYXQgZXZlbiB3aGVuCiAgICAgLy8gdXNpbmcgY29tcG9zZWQg
Y2hhcmFjdGVycywgdGhlIHJlc3VsdCBtYXkgYmUgaW5zaWRlIGEgc2luZ2xlIHVzZXItdmlzaWJs
ZSBjaGFyYWN0ZXIgaWYgYSBsaWdhdHVyZSBpcyBmb3JtZWQuCiAgICAgV0VCQ09SRV9FWFBPUlQg
UG9zaXRpb24gcHJldmlvdXMoUG9zaXRpb25Nb3ZlVHlwZSA9IENvZGVQb2ludCkgY29uc3Q7Ci0g
ICAgUG9zaXRpb24gbmV4dChQb3NpdGlvbk1vdmVUeXBlID0gQ29kZVBvaW50KSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBQb3NpdGlvbiBuZXh0KFBvc2l0aW9uTW92ZVR5cGUgPSBDb2RlUG9p
bnQpIGNvbnN0OwogICAgIHN0YXRpYyBpbnQgdW5jaGVja2VkUHJldmlvdXNPZmZzZXQoY29uc3Qg
Tm9kZSosIGludCBjdXJyZW50KTsKICAgICBzdGF0aWMgaW50IHVuY2hlY2tlZFByZXZpb3VzT2Zm
c2V0Rm9yQmFja3dhcmREZWxldGlvbihjb25zdCBOb2RlKiwgaW50IGN1cnJlbnQpOwogICAgIHN0
YXRpYyBpbnQgdW5jaGVja2VkTmV4dE9mZnNldChjb25zdCBOb2RlKiwgaW50IGN1cnJlbnQpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCShyZXZp
c2lvbiAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBQdWJsaWNV
UkxNYW5hZ2VyJiBwdWJsaWNVUkxNYW5hZ2VyKCk7CiAKICAgICAvLyBBY3RpdmUgb2JqZWN0cyBh
cmUgbm90IGdhcmJhZ2UgY29sbGVjdGVkIGV2ZW4gaWYgaW5hY2Nlc3NpYmxlLCBlLmcuIGJlY2F1
c2UgdGhlaXIgYWN0aXZpdHkgbWF5IHJlc3VsdCBpbiBjYWxsYmFja3MgYmVpbmcgaW52b2tlZC4K
LSAgICBib29sIGNhblN1c3BlbmRBY3RpdmVET01PYmplY3RzKFZlY3RvcjxBY3RpdmVET01PYmpl
Y3QqPiogdW5zdXNwZW5kYWJsZU9iamVjdHMgPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGNhblN1c3BlbmRBY3RpdmVET01PYmplY3RzKFZlY3RvcjxBY3RpdmVET01PYmplY3Qq
PiogdW5zdXNwZW5kYWJsZU9iamVjdHMgPSBudWxscHRyKTsKIAogICAgIC8vIEFjdGl2ZSBvYmpl
Y3RzIGNhbiBiZSBhc2tlZCB0byBzdXNwZW5kIGV2ZW4gaWYgY2FuU3VzcGVuZEFjdGl2ZURPTU9i
amVjdHMoKSByZXR1cm5zICdmYWxzZScgLQogICAgIC8vIHN0ZXAtYnktc3RlcCBKUyBkZWJ1Z2dp
bmcgaXMgb25lIGV4YW1wbGUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHJldmlzaW9u
IDE3OTgzNykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
b3B5KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYXN0ZSgpOwogICAgIHZvaWQgcGFzdGUo
UGFzdGVib2FyZCYpOwotICAgIHZvaWQgcGFzdGVBc1BsYWluVGV4dCgpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcGFzdGVBc1BsYWluVGV4dCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cGVyZm9ybURlbGV0ZSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VVJMKGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9odG1sZWRpdGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRt
bGVkaXRpbmcuaAkocmV2aXNpb24gMTc5ODM3KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9o
dG1sZWRpdGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNyArMTIwLDcgQEAgYm9vbCBpc1Jl
bmRlcmVkQXNOb25JbmxpbmVUYWJsZUltYWdlT3JIUgogYm9vbCBhcmVJZGVudGljYWxFbGVtZW50
cyhjb25zdCBOb2RlKiwgY29uc3QgTm9kZSopOwogYm9vbCBpc05vblRhYmxlQ2VsbEhUTUxCbG9j
a0VsZW1lbnQoY29uc3QgTm9kZSopOwogCi1UZXh0RGlyZWN0aW9uIGRpcmVjdGlvbk9mRW5jbG9z
aW5nQmxvY2soY29uc3QgUG9zaXRpb24mKTsKK1dFQkNPUkVfRVhQT1JUIFRleHREaXJlY3Rpb24g
ZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jayhjb25zdCBQb3NpdGlvbiYpOwogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAvLyBQb3NpdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmgJKHJldmlzaW9uIDE3OTgzNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksNyArMTY5LDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZXRUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCi0gICAgdmlydHVhbCBT
dHJpbmcgdmFsdWUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIFN0cmluZyB2YWx1ZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogICAgIHZvaWQgc2V0
VmFsdWUoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYsIFRleHRGaWVsZEV2ZW50QmVoYXZp
b3IgPSBEaXNwYXRjaE5vRXZlbnQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmFsdWUo
Y29uc3QgU3RyaW5nJiwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciA9IERpc3BhdGNoTm9FdmVudCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWYWx1ZUZvclVzZXIoY29uc3QgU3RyaW5nJik7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaAkocmV2aXNpb24gMTc5ODM3KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0
LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFRp
bWVSYW5nZXMoKTsKLSAgICBUaW1lUmFuZ2VzKGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgVGltZVJhbmdlcyhkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpOwog
ICAgIFRpbWVSYW5nZXMoY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJik7CiAKIApJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDE3OTgzNykKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNyArMTMz
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJlcG9ydExvY2FsTG9hZEZhaWxlZChGcmFt
ZSosIGNvbnN0IFN0cmluZyYgdXJsKTsKIAogICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgYWxsIGZ1
bmN0aW9ucyB3aGljaCBzdG9wIGxvYWRzLiBXZSBoYXZlIHRvbyBtYW55LgotICAgIHZvaWQgc3Rv
cEFsbExvYWRlcnMoQ2xlYXJQcm92aXNpb25hbEl0ZW1Qb2xpY3kgPSBTaG91bGRDbGVhclByb3Zp
c2lvbmFsSXRlbSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wQWxsTG9hZGVycyhDbGVh
clByb3Zpc2lvbmFsSXRlbVBvbGljeSA9IFNob3VsZENsZWFyUHJvdmlzaW9uYWxJdGVtKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BGb3JVc2VyQ2FuY2VsKGJvb2wgZGVmZXJDaGVja0xv
YWRDb21wbGV0ZSA9IGZhbHNlKTsKICAgICB2b2lkIHN0b3AoKTsKICAgICB2b2lkIHN0b3BMb2Fk
aW5nKFVubG9hZEV2ZW50UG9saWN5KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZVZhbGlkYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVWYWxpZGF0aW9uLmgJKHJldmlzaW9uIDE3OTgzNykKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZVZhbGlkYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDQs
MTMgKzQ0LDEzIEBAIHN0cnVjdCBSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMgewogICAgIGRvdWJs
ZSBlbmRPZlZhbGlkaXR5OwogfTsKIAotZG91YmxlIGNvbXB1dGVDdXJyZW50QWdlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBkb3VibGUgcmVzcG9uc2VUaW1lc3RhbXApOwotZG91YmxlIGNvbXB1
dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBGYW1pbHkoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IGRvdWJsZSByZXNwb25zZVRpbWVzdGFtcCk7Ci12b2lkIHVwZGF0ZVJlc3BvbnNlSGVhZGVyc0Fm
dGVyUmV2YWxpZGF0aW9uKFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiB2YWxpZGF0aW5nUmVzcG9uc2UpOwotdm9pZCB1cGRhdGVSZWRpcmVjdENoYWluU3RhdHVzKFJl
ZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKK1dFQkNP
UkVfRVhQT1JUIGRvdWJsZSBjb21wdXRlQ3VycmVudEFnZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgZG91YmxlIHJlc3BvbnNlVGltZXN0YW1wKTsKK1dFQkNPUkVfRVhQT1JUIGRvdWJsZSBjb21w
dXRlRnJlc2huZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5KGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBkb3VibGUgcmVzcG9uc2VUaW1lc3RhbXApOworV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVS
ZXNwb25zZUhlYWRlcnNBZnRlclJldmFsaWRhdGlvbihSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgdmFsaWRhdGluZ1Jlc3BvbnNlKTsKK1dFQkNPUkVfRVhQT1JUIHZv
aWQgdXBkYXRlUmVkaXJlY3RDaGFpblN0YXR1cyhSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKIGVudW0gUmV1c2VFeHBpcmVkUmVkaXJlY3Rpb25P
ck5vdCB7IERvTm90UmV1c2VFeHBpcmVkUmVkaXJlY3Rpb24sIFJldXNlRXhwaXJlZFJlZGlyZWN0
aW9uIH07Ci1ib29sIHJlZGlyZWN0Q2hhaW5BbGxvd3NSZXVzZShSZWRpcmVjdENoYWluQ2FjaGVT
dGF0dXMsIFJldXNlRXhwaXJlZFJlZGlyZWN0aW9uT3JOb3QpOworV0VCQ09SRV9FWFBPUlQgYm9v
bCByZWRpcmVjdENoYWluQWxsb3dzUmV1c2UoUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzLCBSZXVz
ZUV4cGlyZWRSZWRpcmVjdGlvbk9yTm90KTsKIAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAkocmV2aXNpb24gMTc5ODM3KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw4
ICsxNzIsOCBAQCBwcml2YXRlOgogICAgICAgICBDYWNoZWRSZXNvdXJjZSogbV90YWlsIHtudWxs
cHRyfTsKICAgICB9OwogCi0gICAgdm9pZCBwcnVuZURlYWRSZXNvdXJjZXNUb1NpemUodW5zaWdu
ZWQgdGFyZ2V0U2l6ZSk7Ci0gICAgdm9pZCBwcnVuZUxpdmVSZXNvdXJjZXNUb1NpemUodW5zaWdu
ZWQgdGFyZ2V0U2l6ZSwgYm9vbCBzaG91bGREZXN0cm95RGVjb2RlZERhdGFGb3JBbGxMaXZlUmVz
b3VyY2VzID0gZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJ1bmVEZWFkUmVzb3Vy
Y2VzVG9TaXplKHVuc2lnbmVkIHRhcmdldFNpemUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cHJ1bmVMaXZlUmVzb3VyY2VzVG9TaXplKHVuc2lnbmVkIHRhcmdldFNpemUsIGJvb2wgc2hvdWxk
RGVzdHJveURlY29kZWREYXRhRm9yQWxsTGl2ZVJlc291cmNlcyA9IGZhbHNlKTsKIAogICAgIE1l
bW9yeUNhY2hlKCk7CiAgICAgfk1lbW9yeUNhY2hlKCk7IC8vIE5vdCBpbXBsZW1lbnRlZCB0byBt
YWtlIHN1cmUgbm9ib2R5IGFjY2lkZW50YWxseSBjYWxscyBkZWxldGUgLS0gV2ViQ29yZSBkb2Vz
IG5vdCBkZWxldGUgc2luZ2xldG9ucy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29u
L0ljb25EYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29u
L0ljb25EYXRhYmFzZS5oCShyZXZpc2lvbiAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaWNvbi9JY29uRGF0YWJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTMsNyArOTMsNyBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBJY29uTG9hZERlY2lzaW9uIHN5bmNo
cm9ub3VzTG9hZERlY2lzaW9uRm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBEb2N1bWVudExvYWRl
ciopIG92ZXJyaWRlOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldEVuYWJs
ZWQoYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzRW5hYmxlZCgpIGNvbnN0IG92
ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBpc0VuYWJsZWQoKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRQcml2YXRl
QnJvd3NpbmdFbmFibGVkKGJvb2wgZmxhZykgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1ByaXZhdGVC
cm93c2luZ0VuYWJsZWQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRGF0YWJh
c2VQcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRGF0YWJhc2VQ
cm92aWRlci5oCShyZXZpc2lvbiAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RhdGFi
YXNlUHJvdmlkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlOwogCi1jbGFzcyBE
YXRhYmFzZVByb3ZpZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8RGF0YWJhc2VQcm92aWRlcj4gewor
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgRGF0YWJhc2VQcm92aWRlciA6IHB1YmxpYyBSZWZDb3VudGVk
PERhdGFiYXNlUHJvdmlkZXI+IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5EYXRhYmFzZVByb3Zp
ZGVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+RGF0YWJhc2VQcm92aWRlcigpOwog
CiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgSURCRmFjdG9yeUJhY2tlbmRJbnRl
cmZhY2UqIGlkYkZhY3RvcnlCYWNrZW5kKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Rp
YWdub3N0aWNMb2dnaW5nS2V5cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmgJKHJldmlzaW9uIDE3OTgzNykKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNSwx
MCArMTA1LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHVudXNlZFJlYXNvblJlbG9h
ZEtleSgpOwogICAgIHN0YXRpYyBTdHJpbmcgdW51c2VkUmVhc29uVHlwZU1pc21hdGNoS2V5KCk7
CiAgICAgc3RhdGljIFN0cmluZyB1c2VkS2V5KCk7Ci0gICAgc3RhdGljIFN0cmluZyB1c2VyS2V5
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyB1c2VyS2V5KCk7CiAgICAgc3Rh
dGljIFN0cmluZyB2aWRlb0tleSgpOwotICAgIHN0YXRpYyBTdHJpbmcgd2ViVmlld0tleSgpOwot
ICAgIHN0YXRpYyBTdHJpbmcgem9vbWVkS2V5KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFN0cmluZyB3ZWJWaWV3S2V5KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyB6
b29tZWRLZXkoKTsKIAogICAgIC8vIFN1Y2Nlc3MgLyBGYWlsdXJlIGtleXMuCiAgICAgc3RhdGlj
IFN0cmluZyBzdWNjZXNzS2V5KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgJ
KHJldmlzaW9uIDE3OTgzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE4NCwxNCArMTg0LDE0IEBAIHB1YmxpYzoKICAgICBib29sIHRh
YnNUb0xpbmtzKEtleWJvYXJkRXZlbnQqKSBjb25zdDsKICAgICBib29sIHRhYnNUb0FsbEZvcm1D
b250cm9scyhLZXlib2FyZEV2ZW50KikgY29uc3Q7CiAKLSAgICBib29sIG1vdXNlTW92ZWQoY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtb3VzZU1v
dmVkKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
cGFzc01vdXNlTW92ZWRFdmVudFRvU2Nyb2xsYmFycyhjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
KTsKIAogICAgIHZvaWQgbG9zdE1vdXNlQ2FwdHVyZSgpOwogCi0gICAgYm9vbCBoYW5kbGVNb3Vz
ZVByZXNzRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBoYW5kbGVNb3VzZVByZXNzRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7
CiAgICAgYm9vbCBoYW5kbGVNb3VzZU1vdmVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
LCBIaXRUZXN0UmVzdWx0KiBob3ZlcmVkTm9kZSA9IDAsIGJvb2wgb25seVVwZGF0ZVNjcm9sbGJh
cnMgPSBmYWxzZSk7Ci0gICAgYm9vbCBoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhbmRsZU1vdXNlUmVs
ZWFzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKICAgICB2
b2lkIGRlZmF1bHRXaGVlbEV2ZW50SGFuZGxlcihOb2RlKiwgV2hlZWxFdmVudCopOwogICAgIGJv
b2wgaGFuZGxlUGFzdGVHbG9iYWxTZWxlY3Rpb24oY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oCShyZXZpc2lvbiAx
Nzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgZW51bSB7CiB9OwogdHlwZWRlZiB1bnNpZ25lZCBT
bmFwc2hvdE9wdGlvbnM7CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RG
cmFtZVJlY3QoRnJhbWUmLCBjb25zdCBJbnRSZWN0JiwgU25hcHNob3RPcHRpb25zID0gU25hcHNo
b3RPcHRpb25zTm9uZSk7CitXRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+IHNuYXBzaG90RnJhbWVSZWN0KEZyYW1lJiwgY29uc3QgSW50UmVjdCYsIFNuYXBzaG90T3B0
aW9ucyA9IFNuYXBzaG90T3B0aW9uc05vbmUpOwogc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiBzbmFwc2hvdE5vZGUoRnJhbWUmLCBOb2RlJik7CiBXRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90U2VsZWN0aW9uKEZyYW1lJiwgU25hcHNob3RPcHRp
b25zID0gU25hcHNob3RPcHRpb25zTm9uZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
TWFpbkZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9NYWluRnJhbWUu
aAkocmV2aXNpb24gMTc5ODM3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9NYWluRnJhbWUuaAko
d29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldExh
dGNoaW5nU3RhdGUoKTsKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLSAgICBEaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudCYgZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudCYgZGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBNYWluRnJhbWUoUGFnZSYsIFBhZ2VDb25maWd1
cmF0aW9uJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5oCShy
ZXZpc2lvbiAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgUGFnZTsKIAogdHlwZWRl
ZiBWZWN0b3I8UmVmUHRyPEpTQzo6UHJvZmlsZT4+IFByb2ZpbGVzQXJyYXk7CiAKLWNsYXNzIFBh
Z2VDb25zb2xlQ2xpZW50IGZpbmFsIDogcHVibGljIEpTQzo6Q29uc29sZUNsaWVudCB7CitjbGFz
cyBXRUJDT1JFX0VYUE9SVCBQYWdlQ29uc29sZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBKU0M6OkNv
bnNvbGVDbGllbnQgewogcHVibGljOgogICAgIGV4cGxpY2l0IFBhZ2VDb25zb2xlQ2xpZW50KFBh
Z2UmKTsKICAgICB2aXJ0dWFsIH5QYWdlQ29uc29sZUNsaWVudCgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlT3ZlcmxheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZU92ZXJsYXkuaAkocmV2aXNpb24gMTc5ODM3KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlT3ZlcmxheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsOCArMTAyLDggQEAgcHVibGlj
OgogICAgIE92ZXJsYXlUeXBlIG92ZXJsYXlUeXBlKCkgeyByZXR1cm4gbV9vdmVybGF5VHlwZTsg
fQogCiAgICAgV0VCQ09SRV9FWFBPUlQgSW50UmVjdCBib3VuZHMoKSBjb25zdDsKLSAgICBJbnRS
ZWN0IGZyYW1lKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRGcmFtZShJbnRSZWN0KTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBJbnRSZWN0IGZyYW1lKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRGcmFtZShJbnRSZWN0KTsKIAogICAgIFJHQkEzMiBiYWNrZ3JvdW5kQ29sb3IoKSBjb25z
dCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQogICAgIHZvaWQgc2V0QmFja2dyb3VuZENv
bG9yKFJHQkEzMik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENv
cGllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFk
Q29waWVyLmgJKHJldmlzaW9uIDE3OTgzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Ny
b3NzVGhyZWFkQ29waWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1OCwxMyArMTU4LDEzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgZW51bSBjbGFzcyBDdXJzb3JUeXBlOwogICAgIH0K
ICAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNl
LCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZT4gewotICAgICAgICBzdGF0aWMgSW5kZXhlZERC
OjpUcmFuc2FjdGlvbk1vZGUgY29weShjb25zdCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSYp
OworICAgICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1v
ZGUgY29weShjb25zdCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSYpOwogICAgIH07CiAgICAg
dGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgSW5k
ZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24+IHsKLSAgICAgICAgc3RhdGljIEluZGV4ZWREQjo6Q3Vy
c29yRGlyZWN0aW9uIGNvcHkoY29uc3QgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24mKTsKKyAg
ICAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGNv
cHkoY29uc3QgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24mKTsKICAgICB9OwogICAgIHRlbXBs
YXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIEluZGV4ZWRE
Qjo6Q3Vyc29yVHlwZT4gewotICAgICAgICBzdGF0aWMgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGNv
cHkoY29uc3QgSW5kZXhlZERCOjpDdXJzb3JUeXBlJik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBJbmRleGVkREI6OkN1cnNvclR5cGUgY29weShjb25zdCBJbmRleGVkREI6OkN1cnNv
clR5cGUmKTsKICAgICB9OwogCiAgICAgc3RydWN0IElEQkRhdGFiYXNlTWV0YWRhdGE7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCShyZXZpc2lvbiAxNzk4MzcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEz
Nyw3ICsxMzcsNyBAQCBzdHJ1Y3QgRmlsZU1ldGFkYXRhOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBm
aWxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBkZWxldGVGaWxl
KGNvbnN0IFN0cmluZyYpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBkZWxldGVFbXB0eURpcmVjdG9y
eShjb25zdCBTdHJpbmcmKTsKLWJvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiwgbG9uZyBs
b25nJiByZXN1bHQpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJp
bmcmLCBsb25nIGxvbmcmIHJlc3VsdCk7CiBXRUJDT1JFX0VYUE9SVCBib29sIGdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYsIHRpbWVfdCYgcmVzdWx0KTsKIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmLCB0aW1lX3QmIHJlc3Vs
dCk7IC8vIE5vdCBhbGwgcGxhdGZvcm1zIHN0b3JlIGZpbGUgY3JlYXRpb24gdGltZS4KIGJvb2wg
Z2V0RmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYsIEZpbGVNZXRhZGF0YSYpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIu
aAkocmV2aXNpb24gMTc5ODM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplci5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KCkgeyB9
CiB9OwogCi1jbGFzcyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyIHsKK2NsYXNzIFdFQkNPUkVf
RVhQT1JUIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIgewogcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplckNsaWVudCopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1v
dGVDb21tYW5kTGlzdGVuZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuaAkocmV2aXNpb24gMTc5ODM3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDcgKzM4LDcgQEAgcHVibGljOgogCiBjbGFzcyBSZW1vdGVDb21tYW5kTGlzdGVuZXIgewog
cHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ29tbWFuZExpc3RlbmVy
PiBjcmVhdGUoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50Jik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDb21tYW5kTGlzdGVuZXI+IGNyZWF0ZShS
ZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmKTsKICAgICBSZW1vdGVDb21tYW5kTGlzdGVuZXIo
UmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JiBjbGllbnQpIDogbV9jbGllbnQoY2xpZW50KSB7
IH0KICAgICB2aXJ0dWFsIH5SZW1vdGVDb21tYW5kTGlzdGVuZXIoKSB7IH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgJ
KHJldmlzaW9uIDE3OTgzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIFdFQkNPUkVf
RVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc0Fkb2JlSW4KIFdFQkNPUkVfRVhQT1JUIGJvb2wgYXBw
bGljYXRpb25Jc0FwZXJ0dXJlKCk7CiBXRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNB
cHBsZU1haWwoKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc0lCb29rcygpOwot
Ym9vbCBhcHBsaWNhdGlvbklzSVR1bmVzKCk7CitXRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0
aW9uSXNJVHVuZXMoKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc01pY3Jvc29m
dE1lc3NlbmdlcigpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBhcHBsaWNhdGlvbklzTWljcm9zb2Z0
TXlEYXkoKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc01pY3Jvc29mdE91dGxv
b2soKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgJKHJldmlz
aW9uIDE3OTgzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEZvbnQoV1RGOjptb3ZlKHN2Z0RhdGEpLCBmb250U2l6ZSwgc3ludGhldGlj
Qm9sZCwgc3ludGhldGljSXRhbGljKSk7CiAgICAgfQogCi0gICAgfkZvbnQoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB+Rm9udCgpOwogCiAgICAgc3RhdGljIGNvbnN0IEZvbnQqIHN5c3RlbUZhbGxi
YWNrKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBGb250Kj4oLTEpOyB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCShyZXZp
c2lvbiAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fj
aGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDcgKzE2NCw3IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHB1cmdlVGltZXJGaXJlZCgpOwogCi0gICAgdm9pZCBwdXJnZUluYWN0aXZlRm9udERhdGFJ
Zk5lZWRlZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHVyZ2VJbmFjdGl2ZUZvbnREYXRh
SWZOZWVkZWQoKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIG1ldGhvZCBzaG91bGQgZXZlbnR1YWxs
eSBiZSByZW1vdmVkLgogICAgIEZvbnRQbGF0Zm9ybURhdGEqIGdldENhY2hlZEZvbnRQbGF0Zm9y
bURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHks
IGJvb2wgY2hlY2tpbmdBbHRlcm5hdGVOYW1lID0gZmFsc2UpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdseXBocy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHbHlwaHMuaAkocmV2aXNpb24gMTc5ODM3KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdseXBocy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEZvbnRHbHlw
aHM+IGNyZWF0ZShQYXNzUmVmUHRyPEZvbnRTZWxlY3Rvcj4gZm9udFNlbGVjdG9yKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IEZvbnRHbHlwaHMoZm9udFNlbGVjdG9yKSk7IH0KICAgICBzdGF0aWMg
UmVmPEZvbnRHbHlwaHM+IGNyZWF0ZUZvclBsYXRmb3JtRm9udChjb25zdCBGb250UGxhdGZvcm1E
YXRhJiBwbGF0Zm9ybURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udEdseXBocyhwbGF0
Zm9ybURhdGEpKTsgfQogCi0gICAgfkZvbnRHbHlwaHMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+
Rm9udEdseXBocygpOwogCiAgICAgYm9vbCBpc0ZvclBsYXRmb3JtRm9udCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNGb3JQbGF0Zm9ybUZvbnQ7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udFJhbmdlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRSYW5nZXMuaAkocmV2aXNpb24gMTc5ODM3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFJhbmdlcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC02Miw4ICs2Miw4IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9yYW5nZXMuc2l6ZSgpOyB9CiAgICAgY29uc3QgUmFuZ2UmIHJhbmdlQXQodW5zaWduZWQg
aSkgY29uc3QgeyByZXR1cm4gbV9yYW5nZXNbaV07IH0KIAotICAgIGNvbnN0IEZvbnQqIGZvbnRG
b3JDaGFyYWN0ZXIoVUNoYXIzMikgY29uc3Q7Ci0gICAgY29uc3QgRm9udCYgZm9udEZvckZpcnN0
UmFuZ2UoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBGb250KiBmb250Rm9yQ2hh
cmFjdGVyKFVDaGFyMzIpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEZvbnQmIGZv
bnRGb3JGaXJzdFJhbmdlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdDsKIAog
cHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlb21ldHJ5
VXRpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR2VvbWV0cnlVdGlsaXRpZXMuaAkocmV2aXNpb24gMTc5ODM3KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VvbWV0cnlVdGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtNDMsNyArNDMsNyBAQCBXRUJDT1JFX0VYUE9SVCBGbG9hdFJlY3QgdW5pb25SZWN0KGNvbnN0
CiAvLyBNYXAgcmVjdCByIGZyb20gc3JjUmVjdCB0byBhbiBlcXVpdmFsZW50IHJlY3QgaW4gZGVz
dFJlY3QuCiBGbG9hdFJlY3QgbWFwUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpOwogCi1GbG9hdFJlY3QgbGFy
Z2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KGZsb2F0IGFzcGVjdFJhdGlvLCBjb25z
dCBGbG9hdFJlY3QmKTsKK1dFQkNPUkVfRVhQT1JUIEZsb2F0UmVjdCBsYXJnZXN0UmVjdFdpdGhB
c3BlY3RSYXRpb0luc2lkZVJlY3QoZmxvYXQgYXNwZWN0UmF0aW8sIGNvbnN0IEZsb2F0UmVjdCYp
OwogCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoUGFn
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBo
UGFnZS5oCShyZXZpc2lvbiAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HbHlwaFBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDcgKzE4Miw3IEBAIHByaXZh
dGU6CiAgICAgLy8gTk9URTogVGhpcyBhcnJheSBoYXMgKEdseXBoUGFnZTo6c2l6ZSkgZWxlbWVu
dHMgaWYgbV9mb250Rm9yQWxsR2x5cGhzIGlzIG51bGwuCiAgICAgY29uc3QgRm9udCogbV9wZXJH
bHlwaEZvbnREYXRhWzBdOwogCi0gICAgc3RhdGljIHVuc2lnbmVkIHNfY291bnQ7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHVuc2lnbmVkIHNfY291bnQ7CiB9OwogCiAjaWYgQ09NUElMRVIo
TVNWQykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCShy
ZXZpc2lvbiAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBpbnRlcnNlY3QoY29uc3QgUmVnaW9uJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzdWJ0cmFjdChjb25zdCBSZWdpb24mKTsKIAotICAgIHZvaWQgdHJhbnNsYXRlKGNv
bnN0IEludFNpemUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyYW5zbGF0ZShjb25zdCBJ
bnRTaXplJik7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHF1ZXJ5IHJlZ2lvbiBpcyBh
IHN1YnNldCBvZiB0aGlzIHJlZ2lvbi4KICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5z
KGNvbnN0IFJlZ2lvbiYpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgJKHJldmlzaW9uIDE3OTgzNykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5o
CSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIFBsYXRmb3JtQ0FBbmltYXRp
b247CiAKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+PiBQbGF0Zm9ybUNB
TGF5ZXJMaXN0OwogCi1jbGFzcyBQbGF0Zm9ybUNBTGF5ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxQ
bGF0Zm9ybUNBTGF5ZXI+IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtQ0FMYXllciA6
IHB1YmxpYyBSZWZDb3VudGVkPFBsYXRmb3JtQ0FMYXllcj4gewogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIGZyaWVuZCBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXJNYWM7CiAjZWxpZiBQTEFURk9STShX
SU4pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJv
bGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1RpbGVDb250cm9sbGVyLmgJKHJldmlzaW9uIDE3OTgzNykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1
LDcgKzU1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFRpbGVDb250
cm9sbGVyKFBsYXRmb3JtQ0FMYXllciopOwogICAgIH5UaWxlQ29udHJvbGxlcigpOwogICAgIAot
ICAgIHN0YXRpYyBTdHJpbmcgdGlsZUdyaWRDb250YWluZXJMYXllck5hbWUoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHRpbGVHcmlkQ29udGFpbmVyTGF5ZXJOYW1lKCk7CiAg
ICAgc3RhdGljIFN0cmluZyB6b29tZWRPdXRUaWxlR3JpZENvbnRhaW5lckxheWVyTmFtZSgpOwog
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0aWxlQ2FjaGVMYXllckJvdW5kc0NoYW5nZWQoKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNm
b3JtYXRpb25NYXRyaXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgJKHJldmlzaW9uIDE3OTgz
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNm
b3JtYXRpb25NYXRyaXguaAkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIFJvdW5kcyB0aGUgcmVzdWx0aW5nIG1hcHBlZCByZWN0YW5nbGUgb3V0LiBU
aGlzIGlzIGhlbHBmdWwgZm9yIGJvdW5kaW5nCiAgICAgLy8gYm94IGNvbXB1dGF0aW9ucyBidXQg
bWF5IG5vdCBiZSB3aGF0IGlzIHdhbnRlZCBpbiBvdGhlciBjb250ZXh0cy4KLSAgICBJbnRSZWN0
IG1hcFJlY3QoY29uc3QgSW50UmVjdCYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEludFJl
Y3QgbWFwUmVjdChjb25zdCBJbnRSZWN0JikgY29uc3Q7CiAgICAgTGF5b3V0UmVjdCBtYXBSZWN0
KGNvbnN0IExheW91dFJlY3QmKSBjb25zdDsKIAogICAgIC8vIElmIHRoZSBtYXRyaXggaGFzIDNE
IGNvbXBvbmVudHMsIHRoZSB6IGNvbXBvbmVudCBvZiB0aGUgcmVzdWx0IGlzCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVl
bldhcm5pbmdWaWV3LmgJKHJldmlzaW9uIDE3OTgzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDcgKzMyLDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotQGludGVyZmFj
ZSAgV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldyA6IE5TQm94IHsKK1dFQkNPUkVfRVhQT1JU
IEBpbnRlcmZhY2UgIFdlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcgOiBOU0JveCB7CiAgICAg
UmV0YWluUHRyPE5TVGV4dEZpZWxkPiBfdGV4dEZpZWxkOwogfQogLSAoaWQpaW5pdFdpdGhUaXRs
ZTooTlNTdHJpbmcqKXRpdGxlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oCShyZXZpc2lvbiAxNzk4Mzcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5j
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlIDogcHVibGljIFJlZkNvdW50ZWQ8Qmxv
YkRhdGFGaWxlUmVmZXJlbmNlPiB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBCbG9iRGF0YUZpbGVS
ZWZlcmVuY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgcGF0aCkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAkocmV2aXNpb24gMTc5ODM3KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgICAgIHZvaWQgcmVtb3ZlQ3JlZGVudGlhbHMoKTsKIAotICAgICAgICBSZXNvdXJjZVJlcXVl
c3RDYWNoZVBvbGljeSBjYWNoZVBvbGljeSgpIGNvbnN0OworICAgICAgICBXRUJDT1JFX0VYUE9S
VCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBjYWNoZVBvbGljeSgpIGNvbnN0OwogICAgICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENhY2hlUG9saWN5KFJlc291cmNlUmVxdWVzdENhY2hl
UG9saWN5IGNhY2hlUG9saWN5KTsKICAgICAgICAgCiAgICAgICAgIGRvdWJsZSB0aW1lb3V0SW50
ZXJ2YWwoKSBjb25zdDsgLy8gTWF5IHJldHVybiAwIHdoZW4gdXNpbmcgcGxhdGZvcm0gZGVmYXVs
dC4KQEAgLTgyLDEwICs4MiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0
IEhUVFBIZWFkZXJNYXAmIGh0dHBIZWFkZXJGaWVsZHMoKSBjb25zdDsKICAgICAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRIVFRQSGVhZGVyRmllbGRzKEhUVFBIZWFkZXJNYXApOwogCi0gICAg
ICAgIFN0cmluZyBodHRwSGVhZGVyRmllbGQoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdDsKLSAg
ICAgICAgU3RyaW5nIGh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZSkgY29uc3Q7Ci0gICAg
ICAgIHZvaWQgc2V0SFRUUEhlYWRlckZpZWxkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSk7Ci0gICAgICAgIHZvaWQgc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJO
YW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IGh0dHBIZWFkZXJGaWVsZChjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0OworICAgICAgICBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lKSBjb25zdDsK
KyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRIVFRQSGVhZGVyRmllbGQoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWUsIGNvbnN0IFN0cmluZyYgdmFs
dWUpOwogICAgICAgICB2b2lkIGFkZEhUVFBIZWFkZXJGaWVsZChjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiAgICAgICAgIC8vIEluc3RlYWQgb2YgcGFzc2luZyBh
IHN0cmluZyBsaXRlcmFsIHRvIGFueSBvZiB0aGVzZSBmdW5jdGlvbnMsIGp1c3QgdXNlIGEgSFRU
UEhlYWRlck5hbWUgaW5zdGVhZC4KQEAgLTEyNyw3ICsxMjcsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5
KCkgY29uc3Q7CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJpb3JpdHkoUmVzb3Vy
Y2VMb2FkUHJpb3JpdHkpOwogCi0gICAgICAgIGJvb2wgaXNDb25kaXRpb25hbCgpIGNvbnN0Owor
ICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQ29uZGl0aW9uYWwoKSBjb25zdDsKICAgICAg
ICAgdm9pZCBtYWtlVW5jb25kaXRpb25hbCgpOwogCiAgICAgICAgIC8vIFdoZXRoZXIgdGhlIGFz
c29jaWF0ZWQgUmVzb3VyY2VIYW5kbGVDbGllbnQgbmVlZHMgdG8gYmUgbm90aWZpZWQgb2YKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVzcG9uc2VCYXNlLmgJKHJldmlzaW9uIDE3OTgzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTks
MTAgKzk5LDEwIEBAIHB1YmxpYzoKICAgICAKICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgcmV0dXJu
IHBhcnNlZCB2YWx1ZXMgb2YgdGhlIGNvcnJlc3BvbmRpbmcgcmVzcG9uc2UgaGVhZGVycy4KICAg
ICAvLyBOYU4gbWVhbnMgdGhhdCB0aGUgaGVhZGVyIHdhcyBub3QgcHJlc2VudCBvciBoYWQgaW52
YWxpZCB2YWx1ZS4KLSAgICBib29sIGNhY2hlQ29udHJvbENvbnRhaW5zTm9DYWNoZSgpIGNvbnN0
OwotICAgIGJvb2wgY2FjaGVDb250cm9sQ29udGFpbnNOb1N0b3JlKCkgY29uc3Q7Ci0gICAgYm9v
bCBjYWNoZUNvbnRyb2xDb250YWluc011c3RSZXZhbGlkYXRlKCkgY29uc3Q7Ci0gICAgYm9vbCBo
YXNDYWNoZVZhbGlkYXRvckZpZWxkcygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
Y2FjaGVDb250cm9sQ29udGFpbnNOb0NhY2hlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBjYWNoZUNvbnRyb2xDb250YWluc05vU3RvcmUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGNhY2hlQ29udHJvbENvbnRhaW5zTXVzdFJldmFsaWRhdGUoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0NhY2hlVmFsaWRhdG9yRmllbGRzKCkgY29uc3Q7CiAg
ICAgZG91YmxlIGNhY2hlQ29udHJvbE1heEFnZSgpIGNvbnN0OwogICAgIGRvdWJsZSBkYXRlKCkg
Y29uc3Q7CiAgICAgZG91YmxlIGFnZSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jcmVhdGUtaHR0cC1oZWFkZXItbmFtZS10YWJsZQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NyZWF0ZS1odHRwLWhlYWRlci1uYW1l
LXRhYmxlCShyZXZpc2lvbiAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NyZWF0ZS1odHRwLWhlYWRlci1uYW1lLXRhYmxlCSh3b3JraW5nIGNvcHkpCkBAIC0yMzAs
NyArMjMwLDcgQEAgaGVhZGVyX2ZpbGUud3JpdGUoJ2NvbnN0IHNpemVfdCBtaW5IVFRQSAogaGVh
ZGVyX2ZpbGUud3JpdGUoJ2NvbnN0IHNpemVfdCBtYXhIVFRQSGVhZGVyTmFtZUxlbmd0aCA9ICV1
O1xuJyAlIGxlbihtYXgoaHR0cF9oZWFkZXJfbmFtZXMsIGtleT1sZW4pKSk7CiBoZWFkZXJfZmls
ZS53cml0ZSgnJycKIGJvb2wgZmluZEhUVFBIZWFkZXJOYW1lKFN0cmluZ1ZpZXcsIEhUVFBIZWFk
ZXJOYW1lJik7Ci1TdHJpbmdWaWV3IGh0dHBIZWFkZXJOYW1lU3RyaW5nKEhUVFBIZWFkZXJOYW1l
KTsKK1dFQkNPUkVfRVhQT1JUIFN0cmluZ1ZpZXcgaHR0cEhlYWRlck5hbWVTdHJpbmcoSFRUUEhl
YWRlck5hbWUpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25z
ZS5oCShyZXZpc2lvbiAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9XZWJDb3JlVVJMUmVzcG9uc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBA
QCBAaW50ZXJmYWNlIE5TVVJMUmVzcG9uc2UgKERldGFpbHMpCiBAY2xhc3MgTlNVUkxSZXNwb25z
ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotTlNVUkxSZXNwb25zZSAqc3ludGhlc2l6ZVJlZGly
ZWN0UmVzcG9uc2VJZk5lY2Vzc2FyeShOU1VSTENvbm5lY3Rpb24gKiwgTlNVUkxSZXF1ZXN0ICpu
ZXdSZXF1ZXN0LCBOU1VSTFJlc3BvbnNlICpyZWRpcmVjdFJlc3BvbnNlKTsKK1dFQkNPUkVfRVhQ
T1JUIE5TVVJMUmVzcG9uc2UgKnN5bnRoZXNpemVSZWRpcmVjdFJlc3BvbnNlSWZOZWNlc3Nhcnko
TlNVUkxDb25uZWN0aW9uICosIE5TVVJMUmVxdWVzdCAqbmV3UmVxdWVzdCwgTlNVUkxSZXNwb25z
ZSAqcmVkaXJlY3RSZXNwb25zZSk7CiB9CiAjZW5kaWYgLy8gX19PQkpDX18KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNrZXIu
aAkocmV2aXNpb24gMTc5ODM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0
ZURhdGFiYXNlVHJhY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIFNRTGl0ZURhdGFiYXNlVHJhY2tlciB7CiAKLXZv
aWQgZGVjcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKLXZvaWQgaW5jcmVtZW50
VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZGVjcmVt
ZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgaW5j
cmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKIAogV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRDbGllbnQoU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50Kik7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmgJKHJldmlzaW9uIDE3
OTgzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgdW5zaWduZWQgYmluZFBhcmFtZXRlckNvdW50KCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBpbnQgc3RlcCgpOwotICAgIGludCBmaW5hbGl6ZSgpOworICAgIFdFQkNPUkVfRVhQT1JU
IGludCBmaW5hbGl6ZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludCByZXNldCgpOwogICAgIAog
ICAgIGludCBwcmVwYXJlQW5kU3RlcCgpIHsgaWYgKGludCBlcnJvciA9IHByZXBhcmUoKSkgcmV0
dXJuIGVycm9yOyByZXR1cm4gc3RlcCgpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSGl0VGVzdExvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0hpdFRlc3RMb2NhdGlvbi5oCShyZXZpc2lvbiAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSGl0VGVzdExvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDEzICs0
OSwxMyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBIaXRUZXN0TG9jYXRpb24oKTsK
ICAgICBIaXRUZXN0TG9jYXRpb24oY29uc3QgTGF5b3V0UG9pbnQmKTsKLSAgICBIaXRUZXN0TG9j
YXRpb24oY29uc3QgRmxvYXRQb2ludCYpOworICAgIFdFQkNPUkVfRVhQT1JUIEhpdFRlc3RMb2Nh
dGlvbihjb25zdCBGbG9hdFBvaW50Jik7CiAgICAgSGl0VGVzdExvY2F0aW9uKGNvbnN0IEZsb2F0
UG9pbnQmLCBjb25zdCBGbG9hdFF1YWQmKTsKICAgICAvLyBQYXNzIG5vbi16ZXJvIHBhZGRpbmcg
dmFsdWVzIHRvIHBlcmZvcm0gYSByZWN0LWJhc2VkIGhpdCB0ZXN0LgogICAgIEhpdFRlc3RMb2Nh
dGlvbihjb25zdCBMYXlvdXRQb2ludCYgY2VudGVyUG9pbnQsIHVuc2lnbmVkIHRvcFBhZGRpbmcs
IHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQg
bGVmdFBhZGRpbmcpOwogICAgIC8vIE1ha2UgYSBjb3B5IHRoZSBIaXRUZXN0TG9jYXRpb24gaW4g
YSBuZXcgcmVnaW9uIGJ5IGFwcGx5aW5nIGdpdmVuIG9mZnNldCB0byBpbnRlcm5hbCBwb2ludCBh
bmQgYXJlYS4KICAgICBIaXRUZXN0TG9jYXRpb24oY29uc3QgSGl0VGVzdExvY2F0aW9uJiwgY29u
c3QgTGF5b3V0U2l6ZSYgb2Zmc2V0KTsKLSAgICBIaXRUZXN0TG9jYXRpb24oY29uc3QgSGl0VGVz
dExvY2F0aW9uJik7CisgICAgV0VCQ09SRV9FWFBPUlQgSGl0VGVzdExvY2F0aW9uKGNvbnN0IEhp
dFRlc3RMb2NhdGlvbiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5IaXRUZXN0TG9jYXRpb24oKTsK
ICAgICBIaXRUZXN0TG9jYXRpb24mIG9wZXJhdG9yPShjb25zdCBIaXRUZXN0TG9jYXRpb24mKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCShyZXZpc2lv
biAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBIaXRUZXN0UmVzdWx0KGNvbnN0IExheW91dFBvaW50Jik7CiAgICAgLy8gUGFz
cyBub24tbmVnYXRpdmUgcGFkZGluZyB2YWx1ZXMgdG8gcGVyZm9ybSBhIHJlY3QtYmFzZWQgaGl0
IHRlc3QuCiAgICAgV0VCQ09SRV9FWFBPUlQgSGl0VGVzdFJlc3VsdChjb25zdCBMYXlvdXRQb2lu
dCYgY2VudGVyUG9pbnQsIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGlu
ZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcpOwotICAgIGV4
cGxpY2l0IEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdExvY2F0aW9uJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgZXhwbGljaXQgSGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0TG9jYXRpb24mKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB+SGl0VGVzdFJlc3VsdCgpOwogICAgIFdFQkNPUkVfRVhQT1JU
IEhpdFRlc3RSZXN1bHQmIG9wZXJhdG9yPShjb25zdCBIaXRUZXN0UmVzdWx0Jik7CkBAIC04Miw3
ICs4Miw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBMYXlvdXRQb2ludCYgbG9jYWxQb2ludCgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9jYWxQb2ludDsgfQogICAgIHZvaWQgc2V0TG9jYWxQb2ludChjb25z
dCBMYXlvdXRQb2ludCYgcCkgeyBtX2xvY2FsUG9pbnQgPSBwOyB9CiAKLSAgICB2b2lkIHNldFRv
Tm9uU2hhZG93QW5jZXN0b3IoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRvTm9uU2hh
ZG93QW5jZXN0b3IoKTsKIAogICAgIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgaGl0VGVzdExvY2F0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9oaXRUZXN0TG9jYXRpb247IH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnREaXNwYXRjaGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnREaXNwYXRjaGVyLmgJKHJldmlzaW9u
IDE3OTgzNykKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMCArNDIsMTAgQEAgY2xhc3MgU2VjdXJpdHlPcmln
aW47CiAKIGNsYXNzIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHN0YXRp
YyB2b2lkIGRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudHMoY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFNlY3VyaXR5T3Jp
Z2luKiwgRnJhbWUqIHNvdXJjZUZyYW1lKTsKLSAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaExvY2Fs
U3RvcmFnZUV2ZW50cyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwg
Y29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgU2VjdXJpdHlPcmlnaW4qLCBGcmFtZSogc291cmNlRnJh
bWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGRpc3BhdGNoU2Vzc2lvblN0b3Jh
Z2VFdmVudHMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0
IFN0cmluZyYgbmV3VmFsdWUsIFNlY3VyaXR5T3JpZ2luKiwgRnJhbWUqIHNvdXJjZUZyYW1lKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50
cyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5n
JiBuZXdWYWx1ZSwgU2VjdXJpdHlPcmlnaW4qLCBGcmFtZSogc291cmNlRnJhbWUpOwogCi0gICAg
c3RhdGljIHZvaWQgZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50c1RvRnJhbWVzKFBhZ2UmLCBj
b25zdCBWZWN0b3I8UmVmUHRyPEZyYW1lPj4mIGZyYW1lcywgY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBTZWN1cml0eU9yaWdpbiopOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lk
IGRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudHNUb0ZyYW1lcyhQYWdlJiwgY29uc3QgVmVjdG9y
PFJlZlB0cjxGcmFtZT4+JiBmcmFtZXMsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcm
IG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybCwgU2Vj
dXJpdHlPcmlnaW4qKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBkaXNwYXRjaExv
Y2FsU3RvcmFnZUV2ZW50c1RvRnJhbWVzKFBhZ2VHcm91cCYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8
RnJhbWU+PiYgZnJhbWVzLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1
ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmwsIFNlY3VyaXR5T3Jp
Z2luKik7CiBwcml2YXRlOgogICAgIC8vIERvIG5vdCBpbnN0YW50aWF0ZS4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246303</attachid>
            <date>2015-02-09 16:35:54 -0800</date>
            <delta_ts>2015-02-09 17:21:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141409-20150209163556.patch</filename>
            <type>text/plain</type>
            <size>54769</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3OTg1NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBACisyMDE1LTAyLTA5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXBkYXRlIFdF
QkNPUkVfRVhQT1JUIHRvIHByZXBhcmUgdG8gc3RhcnQgdXNpbmcgaXQuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE0MDkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xv
YmFsT2JqZWN0Lmg6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5oOgorICAg
ICAgICAqIGJpbmRpbmdzL29iamMvRXhjZXB0aW9uSGFuZGxlcnMubW06CisgICAgICAgICogYmlu
ZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5o
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdl
dHRlci5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENv
bnN0cnVjdG9yLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50VGFyZ2V0Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4
Y2VwdGlvbi5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEludGVyZmFjZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5oOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5oOgorICAgICAgICAqIGNz
cy9TdHlsZVByb3BlcnRpZXMuaDoKKyAgICAgICAgKiBkb20vRGV2aWNlTW90aW9uRGF0YS5oOgor
ICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmg6CisgICAgICAg
ICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5oOgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuaDoKKyAgICAgICAgKiBodG1sL0hU
TUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL1RpbWVSYW5nZXMuaDoKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVWYWxp
ZGF0aW9uLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmg6CisgICAgICAg
ICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmg6CisgICAgICAgICogcGFnZS9EYXRhYmFzZVBy
b3ZpZGVyLmg6CisgICAgICAgICogcGFnZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaDoKKyAgICAg
ICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hvdHRp
bmcuaDoKKyAgICAgICAgKiBwYWdlL01haW5GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvUGFnZUNv
bnNvbGVDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2VPdmVybGF5Lmg6CisgICAgICAgICog
cGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lz
dGVtLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5oOgorICAgICAgICAqIHBs
YXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250R2x5cGhzLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udFJhbmdlcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dlb21ldHJ5VXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQ
YWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NyZWF0
ZS1odHRwLWhlYWRlci1uYW1lLXRhYmxlOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFj
L1dlYkNvcmVVUkxSZXNwb25zZS5oOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZVRyYWNrZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RMb2NhdGlvbi5oOgorICAgICAgICAqIHJlbmRl
cmluZy9IaXRUZXN0UmVzdWx0Lmg6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlRXZlbnREaXNw
YXRjaGVyLmg6CisgICAgICAgIEFkZGVkIFdFQkNPUkVfRVhQT1JUIG1hY3Jvcy4KKwogMjAxNS0w
Mi0wOSAgVGltb3RoeSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQXZvaWQgdXNpbmcgYSBIYXNoTWFwIGZvciBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2Vy
LCB3aGljaCByYXJlbHkgaGFzIG1vcmUgdGhhbiBvbmUgaXRlbQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxNzk4Mzcp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Ym9vbCB3b3JsZElzTm9ybWFsKCkgY29uc3QgeyByZXR1cm4gbV93b3JsZElzTm9ybWFsOyB9CiAK
ICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHN0YXRpYyBXRUJLSVRfRVhQT1JUREFUQSBjb25zdCBK
U0M6OkNsYXNzSW5mbyBzX2luZm87CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25z
dCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBj
b25zdCBKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87IH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUludGVybmFsLmgJKHJldmlzaW9uIDE3OTgz
NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIH0K
IAotQGludGVyZmFjZSBET01Ob2RlRmlsdGVyIDogRE9NT2JqZWN0IDxET01Ob2RlRmlsdGVyPgor
V0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBET01Ob2RlRmlsdGVyIDogRE9NT2JqZWN0IDxET01O
b2RlRmlsdGVyPgogQGVuZAogCiBAaW50ZXJmYWNlIERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciA6
IERPTU9iamVjdCA8RE9NWFBhdGhOU1Jlc29sdmVyPgpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9FeGNlcHRpb25IYW5kbGVycy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0V4Y2VwdGlvbkhhbmRsZXJzLm1tCShyZXZpc2lvbiAxNzk4Mzcp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0V4Y2VwdGlvbkhhbmRsZXJzLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjksMTAgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmgiCiAKLU5TU3RyaW5nICpE
T01FeGNlcHRpb24gPSBAIkRPTUV4Y2VwdGlvbiI7Ci1OU1N0cmluZyAqRE9NUmFuZ2VFeGNlcHRp
b24gPSBAIkRPTVJhbmdlRXhjZXB0aW9uIjsKLU5TU3RyaW5nICpET01FdmVudEV4Y2VwdGlvbiA9
IEAiRE9NRXZlbnRFeGNlcHRpb24iOwotTlNTdHJpbmcgKkRPTVhQYXRoRXhjZXB0aW9uID0gQCJE
T01YUGF0aEV4Y2VwdGlvbiI7CitXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqRE9NRXhjZXB0aW9u
ID0gQCJET01FeGNlcHRpb24iOworV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKkRPTVJhbmdlRXhj
ZXB0aW9uID0gQCJET01SYW5nZUV4Y2VwdGlvbiI7CitXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAq
RE9NRXZlbnRFeGNlcHRpb24gPSBAIkRPTUV2ZW50RXhjZXB0aW9uIjsKK1dFQkNPUkVfRVhQT1JU
IE5TU3RyaW5nICpET01YUGF0aEV4Y2VwdGlvbiA9IEAiRE9NWFBhdGhFeGNlcHRpb24iOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMv
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oCShyZXZpc2lvbiAxNzk4MzcpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBAaW50ZXJmYWNlIFdlYlNjcmlwdE9iamVj
dCAoU3RhZ2VkRm9yUHViCiAtIChCT09MKWhhc1dlYlNjcmlwdEtleTooTlNTdHJpbmcgKiluYW1l
OwogQGVuZAogCi1AaW50ZXJmYWNlIFdlYlNjcmlwdE9iamVjdFByaXZhdGUgOiBOU09iamVjdAor
V0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJTY3JpcHRPYmplY3RQcml2YXRlIDogTlNPYmpl
Y3QKIHsKIEBwdWJsaWMKICAgICBKU0M6OkpTT2JqZWN0ICppbXA7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNp
b24gMTc5ODM3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTg1OCw3ICs4NTgsNyBAQCBzdWIgR2VuZXJhdGVI
ZWFkZXIKICAgICAgICAgfSBlbHNpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVN0cmluZ0xpc3Qi
KSB7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBQYXNzUmVm
UHRyPERPTVN0cmluZ0xpc3Q+IHRvV3JhcHBlZChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSk7XG4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgc3RhdGljICRpbXBsVHlwZSogdG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSk7XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljICRpbXBsVHlwZSogdG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSk7XG4iKTsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtOTE1LDcgKzkxNSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIGlmICgk
aW50ZXJmYWNlTmFtZSBlcSAiTm9kZSIpIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IlxuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJwcm90ZWN0ZWQ6XG4iKTsKLSAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgV0VCS0lUX0VYUE9SVERBVEEg
Y29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNf
aW5mbztcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHVibGljOlxuIik7CiAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJ
bmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfVxuXG4iKTsKICAgICB9IGVsc2UgewpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURP
TU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuaAkocmV2aXNpb24gMTc5ODM3KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxP
YmplY3QqKTsKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0UHJvdG90eXBlKEpTQzo6Vk0m
LCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIFRlc3RBY3RpdmVET01PYmplY3Qq
IHRvV3JhcHBlZChKU0M6OkpTVmFsdWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBUZXN0
QWN0aXZlRE9NT2JqZWN0KiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZGVz
dHJveShKU0M6OkpTQ2VsbCopOwogICAgIH5KU1Rlc3RBY3RpdmVET01PYmplY3QoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1l
ZEdldHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5oCShyZXZpc2lvbiAxNzk4MzcpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAKICAgICBz
dGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGdldFByb3RvdHlwZShKU0M6
OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXIqIHRvV3JhcHBlZChKU0M6OkpTVmFsdWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIHRvV3JhcHBlZChKU0M6OkpTVmFsdWUpOwogICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVu
dENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDE3OTgzNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3Qq
IGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0
YXRpYyBKU0M6OkpTT2JqZWN0KiBnZXRQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxP
YmplY3QqKTsKLSAgICBzdGF0aWMgVGVzdEV2ZW50Q29uc3RydWN0b3IqIHRvV3JhcHBlZChKU0M6
OkpTVmFsdWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBUZXN0RXZlbnRDb25zdHJ1Y3Rv
ciogdG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6
OkpTQ2VsbCopOwogICAgIH5KU1Rlc3RFdmVudENvbnN0cnVjdG9yKCk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFdmVudFRhcmdldC5oCShyZXZpc2lvbiAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3Jl
YXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGlj
IEpTQzo6SlNPYmplY3QqIGdldFByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVj
dCopOwotICAgIHN0YXRpYyBUZXN0RXZlbnRUYXJnZXQqIHRvV3JhcHBlZChKU0M6OkpTVmFsdWUp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBUZXN0RXZlbnRUYXJnZXQqIHRvV3JhcHBlZChK
U0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpT
T2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6
SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQ
cm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV4Y2VwdGlvbi5oCShyZXZpc2lvbiAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3Qq
IGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0
YXRpYyBKU0M6OkpTT2JqZWN0KiBnZXRQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxP
YmplY3QqKTsKLSAgICBzdGF0aWMgVGVzdEV4Y2VwdGlvbiogdG9XcmFwcGVkKEpTQzo6SlNWYWx1
ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFRlc3RFeGNlcHRpb24qIHRvV3JhcHBlZChK
U0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpT
T2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAgICAgfkpT
VGVzdEV4Y2VwdGlvbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZS5oCShyZXZpc2lvbiAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCw3ICszOCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQ
cm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgSlND
OjpKU09iamVjdCogZ2V0UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7
Ci0gICAgc3RhdGljIFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKiB0b1dyYXBwZWQoSlNDOjpKU1Zh
bHVlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUq
IHRvV3JhcHBlZChKU0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpK
U0NlbGwqKTsKICAgICB+SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSgpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEludGVyZmFjZS5oCShyZXZpc2lvbiAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDcgKzQwLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVBy
b3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBKU0M6
OkpTT2JqZWN0KiBnZXRQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsK
LSAgICBzdGF0aWMgVGVzdEludGVyZmFjZSogdG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSk7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFRlc3RJbnRlcmZhY2UqIHRvV3JhcHBlZChKU0M6OkpTVmFs
dWUpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsK
ICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CiAgICAg
c3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCShyZXZpc2lvbiAx
Nzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlND
OjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCog
Z2V0UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGlj
IFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIHRvV3Jh
cHBlZChKU0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwq
KTsKICAgICB+SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcigpOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDE3OTgzNykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTQzo6
SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCop
OwogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBnZXRQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMgVGVzdE5hbWVkQ29uc3RydWN0b3IqIHRvV3Jh
cHBlZChKU0M6OkpTVmFsdWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBUZXN0TmFtZWRD
b25zdHJ1Y3RvciogdG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgZGVz
dHJveShKU0M6OkpTQ2VsbCopOwogICAgIH5KU1Rlc3ROYW1lZENvbnN0cnVjdG9yKCk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRl
cm1pbmlzdGljLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuaAkocmV2aXNpb24gMTc5ODM3KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWlu
aXN0aWMuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAKICAgICBz
dGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGdldFByb3RvdHlwZShKU0M6
OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBUZXN0Tm9uZGV0ZXJtaW5p
c3RpYyogdG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFRlc3ROb25kZXRlcm1pbmlzdGljKiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAgICAgfkpTVGVzdE5vbmRldGVybWluaXN0
aWMoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouaAkocmV2aXNpb24gMTc5ODM3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCw3ICszOCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQ
cm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgSlND
OjpKU09iamVjdCogZ2V0UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7
Ci0gICAgc3RhdGljIFRlc3RPYmoqIHRvV3JhcHBlZChKU0M6OkpTVmFsdWUpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBUZXN0T2JqKiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTsKICAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogICAgIH5KU1Rlc3RPYmooKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaAkocmV2aXNpb24gMTc5ODM3
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0m
LCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGdldFBy
b3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiB0b1dyYXBwZWQo
SlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAg
ICAgfkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoKTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAkocmV2aXNpb24g
MTc5ODM3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3
ICs0MCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90
b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgSlNDOjpK
U09iamVjdCogZ2V0UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0g
ICAgc3RhdGljIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIHRvV3JhcHBlZChK
U0M6OkpTVmFsdWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlKiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0aWMg
dm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAgICAgfkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuaAkocmV2aXNpb24gMTc5ODM3
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVk
ZWZzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2Jh
bE9iamVjdCopOwogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBnZXRQcm90b3R5cGUoSlNDOjpW
TSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMgVGVzdFR5cGVkZWZzKiB0b1dy
YXBwZWQoSlNDOjpKU1ZhbHVlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVGVzdFR5cGVk
ZWZzKiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5h
bWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpT
Q2VsbCopOwogICAgIH5KU1Rlc3RUeXBlZGVmcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmgJKHJldmlzaW9u
IDE3OTgzNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0
dHJpYnV0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNH
bG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0UHJvdG90eXBlKEpT
Qzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIGF0dHJpYnV0ZSogdG9X
cmFwcGVkKEpTQzo6SlNWYWx1ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGF0dHJpYnV0
ZSogdG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6
OkpTQ2VsbCopOwogICAgIH5KU2F0dHJpYnV0ZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmgJKHJldmlzaW9u
IDE3OTgzNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3Jl
YWRvbmx5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0ds
b2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBnZXRQcm90b3R5cGUoSlND
OjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMgcmVhZG9ubHkqIHRvV3Jh
cHBlZChKU0M6OkpTVmFsdWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyByZWFkb25seSog
dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpT
Q2VsbCopOwogICAgIH5KU3JlYWRvbmx5KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVByb3BlcnRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQ
cm9wZXJ0aWVzLmgJKHJldmlzaW9uIDE3OTgzNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVByb3BlcnRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAg
ICAgUHJvcGVydHlSZWZlcmVuY2UgcHJvcGVydHlBdCh1bnNpZ25lZCkgY29uc3Q7CiAKICAgICBQ
YXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5SUQpIGNv
bnN0OwotICAgIFN0cmluZyBnZXRQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBnZXRQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQp
IGNvbnN0OwogICAgIGJvb2wgcHJvcGVydHlJc0ltcG9ydGFudChDU1NQcm9wZXJ0eUlEKSBjb25z
dDsKICAgICBTdHJpbmcgZ2V0UHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCkgY29uc3Q7
CiAgICAgYm9vbCBpc1Byb3BlcnR5SW1wbGljaXQoQ1NTUHJvcGVydHlJRCkgY29uc3Q7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRGF0YS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25EYXRhLmgJKHJldmlzaW9uIDE3OTgzNykKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25EYXRhLmgJKHdvcmtpbmcgY29weSkKQEAg
LTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPERldmljZU1vdGlvbkRhdGE+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBSZWY8RGV2aWNl
TW90aW9uRGF0YT4gY3JlYXRlKFBhc3NSZWZQdHI8QWNjZWxlcmF0aW9uPiBhY2NlbGVyYXRpb24s
IFBhc3NSZWZQdHI8QWNjZWxlcmF0aW9uPiBhY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LAor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGV2aWNlTW90aW9uRGF0YT4gY3JlYXRlKFBh
c3NSZWZQdHI8QWNjZWxlcmF0aW9uPiwgUGFzc1JlZlB0cjxBY2NlbGVyYXRpb24+IGFjY2VsZXJh
dGlvbkluY2x1ZGluZ0dyYXZpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUGFzc1JlZlB0cjxSb3RhdGlvblJhdGU+IHJvdGF0aW9uUmF0ZSwgYm9vbCBjYW5Qcm92
aWRlSW50ZXJ2YWwsIGRvdWJsZSBpbnRlcnZhbCk7CiAKICAgICBjb25zdCBBY2NlbGVyYXRpb24q
IGFjY2VsZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZWxlcmF0aW9uLmdldCgpOyB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9uIDE3OTgzNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3OCw3ICsyNzgsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRIYXNTeW50aGV0aWNBdHRyQ2hpbGROb2Rlcyhib29sIGZsYWcpIHsgc2V0RmxhZyhmbGFn
LCBIYXNTeW50aGV0aWNBdHRyQ2hpbGROb2Rlc0ZsYWcpOyB9CiAKICAgICAvLyBJZiB0aGlzIG5v
ZGUgaXMgaW4gYSBzaGFkb3cgdHJlZSwgcmV0dXJucyBpdHMgc2hhZG93IGhvc3QuIE90aGVyd2lz
ZSwgcmV0dXJucyBudWxsLgotICAgIEVsZW1lbnQqIHNoYWRvd0hvc3QoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBFbGVtZW50KiBzaGFkb3dIb3N0KCkgY29uc3Q7CiAgICAgLy8gSWYgdGhp
cyBub2RlIGlzIGluIGEgc2hhZG93IHRyZWUsIHJldHVybnMgaXRzIHNoYWRvdyBob3N0LiBPdGhl
cndpc2UsIHJldHVybnMgdGhpcy4KICAgICAvLyBEZXByZWNhdGVkLiBTaG91bGQgdXNlIHNoYWRv
d0hvc3QoKSBhbmQgY2hlY2sgdGhlIHJldHVybiB2YWx1ZS4KICAgICBXRUJDT1JFX0VYUE9SVCBO
b2RlKiBkZXByZWNhdGVkU2hhZG93QW5jZXN0b3JOb2RlKCkgY29uc3Q7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vUG9zaXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
UG9zaXRpb24uaAkocmV2aXNpb24gMTc5ODM3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAgLy8g
T2Zmc2V0cyBhcmUgY29tcHV0ZWQgdXNpbmcgcmVuZGVyIHRleHQgZm9yIG5vZGVzIHRoYXQgaGF2
ZSByZW5kZXJlcnMgLSBidXQgbm90ZSB0aGF0IGV2ZW4gd2hlbgogICAgIC8vIHVzaW5nIGNvbXBv
c2VkIGNoYXJhY3RlcnMsIHRoZSByZXN1bHQgbWF5IGJlIGluc2lkZSBhIHNpbmdsZSB1c2VyLXZp
c2libGUgY2hhcmFjdGVyIGlmIGEgbGlnYXR1cmUgaXMgZm9ybWVkLgogICAgIFdFQkNPUkVfRVhQ
T1JUIFBvc2l0aW9uIHByZXZpb3VzKFBvc2l0aW9uTW92ZVR5cGUgPSBDb2RlUG9pbnQpIGNvbnN0
OwotICAgIFBvc2l0aW9uIG5leHQoUG9zaXRpb25Nb3ZlVHlwZSA9IENvZGVQb2ludCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgUG9zaXRpb24gbmV4dChQb3NpdGlvbk1vdmVUeXBlID0gQ29k
ZVBvaW50KSBjb25zdDsKICAgICBzdGF0aWMgaW50IHVuY2hlY2tlZFByZXZpb3VzT2Zmc2V0KGNv
bnN0IE5vZGUqLCBpbnQgY3VycmVudCk7CiAgICAgc3RhdGljIGludCB1bmNoZWNrZWRQcmV2aW91
c09mZnNldEZvckJhY2t3YXJkRGVsZXRpb24oY29uc3QgTm9kZSosIGludCBjdXJyZW50KTsKICAg
ICBzdGF0aWMgaW50IHVuY2hlY2tlZE5leHRPZmZzZXQoY29uc3QgTm9kZSosIGludCBjdXJyZW50
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAko
cmV2aXNpb24gMTc5ODM3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgUHVi
bGljVVJMTWFuYWdlciYgcHVibGljVVJMTWFuYWdlcigpOwogCiAgICAgLy8gQWN0aXZlIG9iamVj
dHMgYXJlIG5vdCBnYXJiYWdlIGNvbGxlY3RlZCBldmVuIGlmIGluYWNjZXNzaWJsZSwgZS5nLiBi
ZWNhdXNlIHRoZWlyIGFjdGl2aXR5IG1heSByZXN1bHQgaW4gY2FsbGJhY2tzIGJlaW5nIGludm9r
ZWQuCi0gICAgYm9vbCBjYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhWZWN0b3I8QWN0aXZlRE9N
T2JqZWN0Kj4qIHVuc3VzcGVuZGFibGVPYmplY3RzID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBjYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhWZWN0b3I8QWN0aXZlRE9NT2Jq
ZWN0Kj4qIHVuc3VzcGVuZGFibGVPYmplY3RzID0gbnVsbHB0cik7CiAKICAgICAvLyBBY3RpdmUg
b2JqZWN0cyBjYW4gYmUgYXNrZWQgdG8gc3VzcGVuZCBldmVuIGlmIGNhblN1c3BlbmRBY3RpdmVE
T01PYmplY3RzKCkgcmV0dXJucyAnZmFsc2UnIC0KICAgICAvLyBzdGVwLWJ5LXN0ZXAgSlMgZGVi
dWdnaW5nIGlzIG9uZSBleGFtcGxlLgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCShyZXZp
c2lvbiAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjksNyArMTI5LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY29weSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGFzdGUoKTsKICAgICB2b2lkIHBh
c3RlKFBhc3RlYm9hcmQmKTsKLSAgICB2b2lkIHBhc3RlQXNQbGFpblRleHQoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHBhc3RlQXNQbGFpblRleHQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHBlcmZvcm1EZWxldGUoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVVSTChj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvaHRtbGVkaXRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2h0bWxlZGl0aW5nLmgJKHJldmlzaW9uIDE3OTgzNykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvaHRtbGVkaXRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDcgKzEyMCw3IEBAIGJvb2wg
aXNSZW5kZXJlZEFzTm9uSW5saW5lVGFibGVJbWFnZU9ySFIKIGJvb2wgYXJlSWRlbnRpY2FsRWxl
bWVudHMoY29uc3QgTm9kZSosIGNvbnN0IE5vZGUqKTsKIGJvb2wgaXNOb25UYWJsZUNlbGxIVE1M
QmxvY2tFbGVtZW50KGNvbnN0IE5vZGUqKTsKIAotVGV4dERpcmVjdGlvbiBkaXJlY3Rpb25PZkVu
Y2xvc2luZ0Jsb2NrKGNvbnN0IFBvc2l0aW9uJik7CitXRUJDT1JFX0VYUE9SVCBUZXh0RGlyZWN0
aW9uIGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soY29uc3QgUG9zaXRpb24mKTsKIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogLy8gUG9zaXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5oCShyZXZpc2lvbiAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDcgKzE2OSw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgc2V0VHlwZShjb25zdCBBdG9taWNTdHJpbmcmKTsKIAotICAgIHZpcnR1
YWwgU3RyaW5nIHZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKICAgICB2b2lk
IHNldFZhbHVlKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmLCBUZXh0RmllbGRFdmVudEJl
aGF2aW9yID0gRGlzcGF0Y2hOb0V2ZW50KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZh
bHVlKGNvbnN0IFN0cmluZyYsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgPSBEaXNwYXRjaE5vRXZl
bnQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmFsdWVGb3JVc2VyKGNvbnN0IFN0cmlu
ZyYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmgJKHJldmlzaW9uIDE3OTgzNykKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3
ICs2NCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBUaW1lUmFuZ2VzKCk7Ci0gICAgVGltZVJhbmdlcyhkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQp
OworICAgIFdFQkNPUkVfRVhQT1JUIFRpbWVSYW5nZXMoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5k
KTsKICAgICBUaW1lUmFuZ2VzKGNvbnN0IFBsYXRmb3JtVGltZVJhbmdlcyYpOwogCiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiAxNzk4MzcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDcg
KzEzMyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCByZXBvcnRMb2NhbExvYWRGYWlsZWQo
RnJhbWUqLCBjb25zdCBTdHJpbmcmIHVybCk7CiAKICAgICAvLyBGSVhNRTogVGhlc2UgYXJlIGFs
bCBmdW5jdGlvbnMgd2hpY2ggc3RvcCBsb2Fkcy4gV2UgaGF2ZSB0b28gbWFueS4KLSAgICB2b2lk
IHN0b3BBbGxMb2FkZXJzKENsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5ID0gU2hvdWxkQ2xlYXJQ
cm92aXNpb25hbEl0ZW0pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcEFsbExvYWRlcnMo
Q2xlYXJQcm92aXNpb25hbEl0ZW1Qb2xpY3kgPSBTaG91bGRDbGVhclByb3Zpc2lvbmFsSXRlbSk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wRm9yVXNlckNhbmNlbChib29sIGRlZmVyQ2hl
Y2tMb2FkQ29tcGxldGUgPSBmYWxzZSk7CiAgICAgdm9pZCBzdG9wKCk7CiAgICAgdm9pZCBzdG9w
TG9hZGluZyhVbmxvYWRFdmVudFBvbGljeSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVWYWxpZGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlVmFsaWRhdGlvbi5oCShyZXZpc2lvbiAxNzk4MzcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVWYWxpZGF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDEzICs0NCwxMyBAQCBzdHJ1Y3QgUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzIHsKICAgICBk
b3VibGUgZW5kT2ZWYWxpZGl0eTsKIH07CiAKLWRvdWJsZSBjb21wdXRlQ3VycmVudEFnZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgZG91YmxlIHJlc3BvbnNlVGltZXN0YW1wKTsKLWRvdWJsZSBj
b21wdXRlRnJlc2huZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5KGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBkb3VibGUgcmVzcG9uc2VUaW1lc3RhbXApOwotdm9pZCB1cGRhdGVSZXNwb25zZUhlYWRl
cnNBZnRlclJldmFsaWRhdGlvbihSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgdmFsaWRhdGluZ1Jlc3BvbnNlKTsKLXZvaWQgdXBkYXRlUmVkaXJlY3RDaGFpblN0YXR1
cyhSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CitX
RUJDT1JFX0VYUE9SVCBkb3VibGUgY29tcHV0ZUN1cnJlbnRBZ2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIGRvdWJsZSByZXNwb25zZVRpbWVzdGFtcCk7CitXRUJDT1JFX0VYUE9SVCBkb3VibGUg
Y29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgZG91YmxlIHJlc3BvbnNlVGltZXN0YW1wKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgdXBk
YXRlUmVzcG9uc2VIZWFkZXJzQWZ0ZXJSZXZhbGlkYXRpb24oUmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHZhbGlkYXRpbmdSZXNwb25zZSk7CitXRUJDT1JFX0VYUE9S
VCB2b2lkIHVwZGF0ZVJlZGlyZWN0Q2hhaW5TdGF0dXMoUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVz
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogCiBlbnVtIFJldXNlRXhwaXJlZFJlZGlyZWN0
aW9uT3JOb3QgeyBEb05vdFJldXNlRXhwaXJlZFJlZGlyZWN0aW9uLCBSZXVzZUV4cGlyZWRSZWRp
cmVjdGlvbiB9OwotYm9vbCByZWRpcmVjdENoYWluQWxsb3dzUmV1c2UoUmVkaXJlY3RDaGFpbkNh
Y2hlU3RhdHVzLCBSZXVzZUV4cGlyZWRSZWRpcmVjdGlvbk9yTm90KTsKK1dFQkNPUkVfRVhQT1JU
IGJvb2wgcmVkaXJlY3RDaGFpbkFsbG93c1JldXNlKFJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cywg
UmV1c2VFeHBpcmVkUmVkaXJlY3Rpb25Pck5vdCk7CiAKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgJKHJldmlzaW9uIDE3OTgzNykKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzIsOCArMTcyLDggQEAgcHJpdmF0ZToKICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIG1fdGFpbCB7
bnVsbHB0cn07CiAgICAgfTsKIAotICAgIHZvaWQgcHJ1bmVEZWFkUmVzb3VyY2VzVG9TaXplKHVu
c2lnbmVkIHRhcmdldFNpemUpOwotICAgIHZvaWQgcHJ1bmVMaXZlUmVzb3VyY2VzVG9TaXplKHVu
c2lnbmVkIHRhcmdldFNpemUsIGJvb2wgc2hvdWxkRGVzdHJveURlY29kZWREYXRhRm9yQWxsTGl2
ZVJlc291cmNlcyA9IGZhbHNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBydW5lRGVhZFJl
c291cmNlc1RvU2l6ZSh1bnNpZ25lZCB0YXJnZXRTaXplKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHBydW5lTGl2ZVJlc291cmNlc1RvU2l6ZSh1bnNpZ25lZCB0YXJnZXRTaXplLCBib29sIHNo
b3VsZERlc3Ryb3lEZWNvZGVkRGF0YUZvckFsbExpdmVSZXNvdXJjZXMgPSBmYWxzZSk7CiAKICAg
ICBNZW1vcnlDYWNoZSgpOwogICAgIH5NZW1vcnlDYWNoZSgpOyAvLyBOb3QgaW1wbGVtZW50ZWQg
dG8gbWFrZSBzdXJlIG5vYm9keSBhY2NpZGVudGFsbHkgY2FsbHMgZGVsZXRlIC0tIFdlYkNvcmUg
ZG9lcyBub3QgZGVsZXRlIHNpbmdsZXRvbnMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uRGF0YWJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uRGF0YWJhc2UuaAkocmV2aXNpb24gMTc5ODM3KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgSWNvbkxvYWREZWNpc2lvbiBz
eW5jaHJvbm91c0xvYWREZWNpc2lvbkZvckljb25VUkwoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnRM
b2FkZXIqKSBvdmVycmlkZTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRF
bmFibGVkKGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc0VuYWJsZWQoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0UHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZChib29sIGZsYWcpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNQcml2
YXRlQnJvd3NpbmdFbmFibGVkKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Rh
dGFiYXNlUHJvdmlkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RhdGFi
YXNlUHJvdmlkZXIuaAkocmV2aXNpb24gMTc5ODM3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9E
YXRhYmFzZVByb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDkgKzMzLDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZTsKIAotY2xh
c3MgRGF0YWJhc2VQcm92aWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPERhdGFiYXNlUHJvdmlkZXI+
IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIERhdGFiYXNlUHJvdmlkZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxEYXRhYmFzZVByb3ZpZGVyPiB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+RGF0YWJhc2VQ
cm92aWRlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkRhdGFiYXNlUHJvdmlkZXIo
KTsKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIElEQkZhY3RvcnlCYWNrZW5k
SW50ZXJmYWNlKiBpZGJGYWN0b3J5QmFja2VuZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oCShyZXZpc2lvbiAxNzk4MzcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDUsMTAgKzEwNSwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyB1bnVzZWRSZWFzb25S
ZWxvYWRLZXkoKTsKICAgICBzdGF0aWMgU3RyaW5nIHVudXNlZFJlYXNvblR5cGVNaXNtYXRjaEtl
eSgpOwogICAgIHN0YXRpYyBTdHJpbmcgdXNlZEtleSgpOwotICAgIHN0YXRpYyBTdHJpbmcgdXNl
cktleSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgdXNlcktleSgpOwogICAg
IHN0YXRpYyBTdHJpbmcgdmlkZW9LZXkoKTsKLSAgICBzdGF0aWMgU3RyaW5nIHdlYlZpZXdLZXko
KTsKLSAgICBzdGF0aWMgU3RyaW5nIHpvb21lZEtleSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBTdHJpbmcgd2ViVmlld0tleSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJp
bmcgem9vbWVkS2V5KCk7CiAKICAgICAvLyBTdWNjZXNzIC8gRmFpbHVyZSBrZXlzLgogICAgIHN0
YXRpYyBTdHJpbmcgc3VjY2Vzc0tleSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5oCShyZXZpc2lvbiAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsMTQgKzE4NCwxNCBAQCBwdWJsaWM6CiAgICAgYm9v
bCB0YWJzVG9MaW5rcyhLZXlib2FyZEV2ZW50KikgY29uc3Q7CiAgICAgYm9vbCB0YWJzVG9BbGxG
b3JtQ29udHJvbHMoS2V5Ym9hcmRFdmVudCopIGNvbnN0OwogCi0gICAgYm9vbCBtb3VzZU1vdmVk
KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbW91
c2VNb3ZlZChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIHBhc3NNb3VzZU1vdmVkRXZlbnRUb1Njcm9sbGJhcnMoY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50Jik7CiAKICAgICB2b2lkIGxvc3RNb3VzZUNhcHR1cmUoKTsKIAotICAgIGJvb2wgaGFuZGxl
TW91c2VQcmVzc0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgaGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYpOwogICAgIGJvb2wgaGFuZGxlTW91c2VNb3ZlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiwgSGl0VGVzdFJlc3VsdCogaG92ZXJlZE5vZGUgPSAwLCBib29sIG9ubHlVcGRhdGVTY3Jv
bGxiYXJzID0gZmFsc2UpOwotICAgIGJvb2wgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYW5kbGVNb3Vz
ZVJlbGVhc2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAg
ICAgdm9pZCBkZWZhdWx0V2hlZWxFdmVudEhhbmRsZXIoTm9kZSosIFdoZWVsRXZlbnQqKTsKICAg
ICBib29sIGhhbmRsZVBhc3RlR2xvYmFsU2VsZWN0aW9uKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuaAkocmV2aXNp
b24gMTc5ODM3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIGVudW0gewogfTsKIHR5cGVkZWYgdW5zaWdu
ZWQgU25hcHNob3RPcHRpb25zOwogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBz
aG90RnJhbWVSZWN0KEZyYW1lJiwgY29uc3QgSW50UmVjdCYsIFNuYXBzaG90T3B0aW9ucyA9IFNu
YXBzaG90T3B0aW9uc05vbmUpOworV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdChGcmFtZSYsIGNvbnN0IEludFJlY3QmLCBTbmFwc2hv
dE9wdGlvbnMgPSBTbmFwc2hvdE9wdGlvbnNOb25lKTsKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gc25hcHNob3ROb2RlKEZyYW1lJiwgTm9kZSYpOwogV0VCQ09SRV9FWFBPUlQgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdFNlbGVjdGlvbihGcmFtZSYsIFNuYXBzaG90
T3B0aW9ucyA9IFNuYXBzaG90T3B0aW9uc05vbmUpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL01haW5GcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTWFpbkZy
YW1lLmgJKHJldmlzaW9uIDE3OTgzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTWFpbkZyYW1l
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVz
ZXRMYXRjaGluZ1N0YXRlKCk7CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi0gICAgRGlhZ25v
c3RpY0xvZ2dpbmdDbGllbnQmIGRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQmIGRpYWdub3N0aWNMb2dnaW5n
Q2xpZW50KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgTWFpbkZyYW1lKFBhZ2UmLCBQYWdlQ29u
ZmlndXJhdGlvbiYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQu
aAkocmV2aXNpb24gMTc5ODM3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFBhZ2U7CiAKIHR5
cGVkZWYgVmVjdG9yPFJlZlB0cjxKU0M6OlByb2ZpbGU+PiBQcm9maWxlc0FycmF5OwogCi1jbGFz
cyBQYWdlQ29uc29sZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBKU0M6OkNvbnNvbGVDbGllbnQgewor
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgUGFnZUNvbnNvbGVDbGllbnQgZmluYWwgOiBwdWJsaWMgSlND
OjpDb25zb2xlQ2xpZW50IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBQYWdlQ29uc29sZUNsaWVu
dChQYWdlJik7CiAgICAgdmlydHVhbCB+UGFnZUNvbnNvbGVDbGllbnQoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZU92ZXJsYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VPdmVybGF5LmgJKHJldmlzaW9uIDE3OTgzNykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZU92ZXJsYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDggKzEwMiw4IEBAIHB1
YmxpYzoKICAgICBPdmVybGF5VHlwZSBvdmVybGF5VHlwZSgpIHsgcmV0dXJuIG1fb3ZlcmxheVR5
cGU7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIEludFJlY3QgYm91bmRzKCkgY29uc3Q7Ci0gICAg
SW50UmVjdCBmcmFtZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0RnJhbWUoSW50UmVjdCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgSW50UmVjdCBmcmFtZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0RnJhbWUoSW50UmVjdCk7CiAKICAgICBSR0JBMzIgYmFja2dyb3VuZENvbG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7IH0KICAgICB2b2lkIHNldEJhY2tncm91
bmRDb2xvcihSR0JBMzIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJl
YWRDb3BpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1Ro
cmVhZENvcGllci5oCShyZXZpc2lvbiAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Dcm9zc1RocmVhZENvcGllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTgsMTMgKzE1OCwxMyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGVudW0gY2xhc3MgQ3Vyc29yVHlwZTsKICAg
ICB9CiAgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBm
YWxzZSwgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGU+IHsKLSAgICAgICAgc3RhdGljIEluZGV4
ZWREQjo6VHJhbnNhY3Rpb25Nb2RlIGNvcHkoY29uc3QgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1v
ZGUmKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEluZGV4ZWREQjo6VHJhbnNhY3Rp
b25Nb2RlIGNvcHkoY29uc3QgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUmKTsKICAgICB9Owog
ICAgIHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2Us
IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uPiB7Ci0gICAgICAgIHN0YXRpYyBJbmRleGVkREI6
OkN1cnNvckRpcmVjdGlvbiBjb3B5KGNvbnN0IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uJik7
CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlv
biBjb3B5KGNvbnN0IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uJik7CiAgICAgfTsKICAgICB0
ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBJbmRl
eGVkREI6OkN1cnNvclR5cGU+IHsKLSAgICAgICAgc3RhdGljIEluZGV4ZWREQjo6Q3Vyc29yVHlw
ZSBjb3B5KGNvbnN0IEluZGV4ZWREQjo6Q3Vyc29yVHlwZSYpOworICAgICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGNvcHkoY29uc3QgSW5kZXhlZERCOjpD
dXJzb3JUeXBlJik7CiAgICAgfTsKIAogICAgIHN0cnVjdCBJREJEYXRhYmFzZU1ldGFkYXRhOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAkocmV2aXNpb24gMTc5ODM3KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzcsNyArMTM3LDcgQEAgc3RydWN0IEZpbGVNZXRhZGF0YTsKIFdFQkNPUkVfRVhQT1JUIGJv
b2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgZGVsZXRl
RmlsZShjb25zdCBTdHJpbmcmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgZGVsZXRlRW1wdHlEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJik7Ci1ib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYsIGxv
bmcgbG9uZyYgcmVzdWx0KTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0RmlsZVNpemUoY29uc3Qg
U3RyaW5nJiwgbG9uZyBsb25nJiByZXN1bHQpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRGaWxl
TW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmLCB0aW1lX3QmIHJlc3VsdCk7CiBXRUJDT1JF
X0VYUE9SVCBib29sIGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiwgdGltZV90JiBy
ZXN1bHQpOyAvLyBOb3QgYWxsIHBsYXRmb3JtcyBzdG9yZSBmaWxlIGNyZWF0aW9uIHRpbWUuCiBi
b29sIGdldEZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmLCBGaWxlTWV0YWRhdGEmKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyLmgJKHJldmlzaW9uIDE3OTgzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCgp
IHsgfQogfTsKIAotY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplciB7CitjbGFzcyBXRUJD
T1JFX0VYUE9SVCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyIHsKIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXJDbGllbnQqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UmVtb3RlQ29tbWFuZExpc3RlbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgJKHJldmlzaW9uIDE3OTgzNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKIAogY2xhc3MgUmVtb3RlQ29tbWFuZExpc3RlbmVy
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNvbW1hbmRMaXN0
ZW5lcj4gY3JlYXRlKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ29tbWFuZExpc3RlbmVyPiBjcmVh
dGUoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50Jik7CiAgICAgUmVtb3RlQ29tbWFuZExpc3Rl
bmVyKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYgY2xpZW50KSA6IG1fY2xpZW50KGNsaWVu
dCkgeyB9CiAgICAgdmlydHVhbCB+UmVtb3RlQ29tbWFuZExpc3RlbmVyKCkgeyB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
cy5oCShyZXZpc2lvbiAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1l
QXBwbGljYXRpb25DaGVja3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBXRUJD
T1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNBZG9iZUluCiBXRUJDT1JFX0VYUE9SVCBib29s
IGFwcGxpY2F0aW9uSXNBcGVydHVyZSgpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBhcHBsaWNhdGlv
bklzQXBwbGVNYWlsKCk7CiBXRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNJQm9va3Mo
KTsKLWJvb2wgYXBwbGljYXRpb25Jc0lUdW5lcygpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBhcHBs
aWNhdGlvbklzSVR1bmVzKCk7CiBXRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNNaWNy
b3NvZnRNZXNzZW5nZXIoKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgYXBwbGljYXRpb25Jc01pY3Jv
c29mdE15RGF5KCk7CiBXRUJDT1JFX0VYUE9SVCBib29sIGFwcGxpY2F0aW9uSXNNaWNyb3NvZnRP
dXRsb29rKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCShy
ZXZpc2lvbiAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmgJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBGb250KFdURjo6bW92ZShzdmdEYXRhKSwgZm9udFNpemUsIHN5bnRo
ZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYykpOwogICAgIH0KIAotICAgIH5Gb250KCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgfkZvbnQoKTsKIAogICAgIHN0YXRpYyBjb25zdCBGb250KiBzeXN0ZW1G
YWxsYmFjaygpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRm9udCo+KC0xKTsgfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAko
cmV2aXNpb24gMTc5ODM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw3ICsxNjQsNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBwdXJnZVRpbWVyRmlyZWQoKTsKIAotICAgIHZvaWQgcHVyZ2VJbmFjdGl2ZUZvbnRE
YXRhSWZOZWVkZWQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHB1cmdlSW5hY3RpdmVGb250
RGF0YUlmTmVlZGVkKCk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBtZXRob2Qgc2hvdWxkIGV2ZW50
dWFsbHkgYmUgcmVtb3ZlZC4KICAgICBGb250UGxhdGZvcm1EYXRhKiBnZXRDYWNoZWRGb250UGxh
dGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYgZmFt
aWx5LCBib29sIGNoZWNraW5nQWx0ZXJuYXRlTmFtZSA9IGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHbHlwaHMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2x5cGhzLmgJKHJldmlzaW9uIDE3OTgz
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHbHlwaHMuaAkod29y
a2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxGb250
R2x5cGhzPiBjcmVhdGUoUGFzc1JlZlB0cjxGb250U2VsZWN0b3I+IGZvbnRTZWxlY3RvcikgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250R2x5cGhzKGZvbnRTZWxlY3RvcikpOyB9CiAgICAgc3Rh
dGljIFJlZjxGb250R2x5cGhzPiBjcmVhdGVGb3JQbGF0Zm9ybUZvbnQoY29uc3QgRm9udFBsYXRm
b3JtRGF0YSYgcGxhdGZvcm1EYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnRHbHlwaHMo
cGxhdGZvcm1EYXRhKSk7IH0KIAotICAgIH5Gb250R2x5cGhzKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgfkZvbnRHbHlwaHMoKTsKIAogICAgIGJvb2wgaXNGb3JQbGF0Zm9ybUZvbnQoKSBjb25zdCB7
IHJldHVybiBtX2lzRm9yUGxhdGZvcm1Gb250OyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRSYW5nZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UmFuZ2VzLmgJKHJldmlzaW9uIDE3OTgzNykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRSYW5nZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtNjIsOCArNjIsOCBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmFuZ2VzLnNpemUoKTsgfQogICAgIGNvbnN0IFJhbmdlJiByYW5nZUF0KHVuc2ln
bmVkIGkpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2VzW2ldOyB9CiAKLSAgICBjb25zdCBGb250KiBm
b250Rm9yQ2hhcmFjdGVyKFVDaGFyMzIpIGNvbnN0OwotICAgIGNvbnN0IEZvbnQmIGZvbnRGb3JG
aXJzdFJhbmdlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgRm9udCogZm9udEZv
ckNoYXJhY3RlcihVQ2hhcjMyKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBGb250
JiBmb250Rm9yRmlyc3RSYW5nZSgpIGNvbnN0OwogICAgIGJvb2wgaXNMb2FkaW5nKCkgY29uc3Q7
CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW9t
ZXRyeVV0aWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dlb21ldHJ5VXRpbGl0aWVzLmgJKHJldmlzaW9uIDE3OTgzNykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlb21ldHJ5VXRpbGl0aWVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDcgKzQzLDcgQEAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0IHVuaW9uUmVjdChj
b25zdAogLy8gTWFwIHJlY3QgciBmcm9tIHNyY1JlY3QgdG8gYW4gZXF1aXZhbGVudCByZWN0IGlu
IGRlc3RSZWN0LgogRmxvYXRSZWN0IG1hcFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KTsKIAotRmxvYXRSZWN0
IGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRlUmVjdChmbG9hdCBhc3BlY3RSYXRpbywg
Y29uc3QgRmxvYXRSZWN0Jik7CitXRUJDT1JFX0VYUE9SVCBGbG9hdFJlY3QgbGFyZ2VzdFJlY3RX
aXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KGZsb2F0IGFzcGVjdFJhdGlvLCBjb25zdCBGbG9hdFJl
Y3QmKTsKIAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlw
aFBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
bHlwaFBhZ2UuaAkocmV2aXNpb24gMTc5ODM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR2x5cGhQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4Miw3ICsxODIsNyBAQCBw
cml2YXRlOgogICAgIC8vIE5PVEU6IFRoaXMgYXJyYXkgaGFzIChHbHlwaFBhZ2U6OnNpemUpIGVs
ZW1lbnRzIGlmIG1fZm9udEZvckFsbEdseXBocyBpcyBudWxsLgogICAgIGNvbnN0IEZvbnQqIG1f
cGVyR2x5cGhGb250RGF0YVswXTsKIAotICAgIHN0YXRpYyB1bnNpZ25lZCBzX2NvdW50OworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB1bnNpZ25lZCBzX2NvdW50OwogfTsKIAogI2lmIENPTVBJ
TEVSKE1TVkMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24u
aAkocmV2aXNpb24gMTc5ODM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVnaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgaW50ZXJzZWN0KGNvbnN0IFJlZ2lvbiYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc3VidHJhY3QoY29uc3QgUmVnaW9uJik7CiAKLSAgICB2b2lkIHRyYW5zbGF0
ZShjb25zdCBJbnRTaXplJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cmFuc2xhdGUoY29u
c3QgSW50U2l6ZSYpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBxdWVyeSByZWdpb24g
aXMgYSBzdWJzZXQgb2YgdGhpcyByZWdpb24uCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250
YWlucyhjb25zdCBSZWdpb24mKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCShyZXZpc2lvbiAxNzk4
MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBQbGF0Zm9ybUNBQW5p
bWF0aW9uOwogCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1DQUxheWVyPj4gUGxhdGZv
cm1DQUxheWVyTGlzdDsKIAotY2xhc3MgUGxhdGZvcm1DQUxheWVyIDogcHVibGljIFJlZkNvdW50
ZWQ8UGxhdGZvcm1DQUxheWVyPiB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUNBTGF5
ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybUNBTGF5ZXI+IHsKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBmcmllbmQgY2xhc3MgUGxhdGZvcm1DQUxheWVyTWFjOwogI2VsaWYgUExBVEZP
Uk0oV0lOKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNv
bnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9UaWxlQ29udHJvbGxlci5oCShyZXZpc2lvbiAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBUaWxl
Q29udHJvbGxlcihQbGF0Zm9ybUNBTGF5ZXIqKTsKICAgICB+VGlsZUNvbnRyb2xsZXIoKTsKICAg
ICAKLSAgICBzdGF0aWMgU3RyaW5nIHRpbGVHcmlkQ29udGFpbmVyTGF5ZXJOYW1lKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyB0aWxlR3JpZENvbnRhaW5lckxheWVyTmFtZSgp
OwogICAgIHN0YXRpYyBTdHJpbmcgem9vbWVkT3V0VGlsZUdyaWRDb250YWluZXJMYXllck5hbWUo
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdGlsZUNhY2hlTGF5ZXJCb3VuZHNDaGFuZ2Vk
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zZm9ybWF0aW9uTWF0cml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCShyZXZpc2lvbiAx
Nzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zZm9ybWF0aW9uTWF0cml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw3ICsxNDgsNyBAQCBw
dWJsaWM6CiAKICAgICAvLyBSb3VuZHMgdGhlIHJlc3VsdGluZyBtYXBwZWQgcmVjdGFuZ2xlIG91
dC4gVGhpcyBpcyBoZWxwZnVsIGZvciBib3VuZGluZwogICAgIC8vIGJveCBjb21wdXRhdGlvbnMg
YnV0IG1heSBub3QgYmUgd2hhdCBpcyB3YW50ZWQgaW4gb3RoZXIgY29udGV4dHMuCi0gICAgSW50
UmVjdCBtYXBSZWN0KGNvbnN0IEludFJlY3QmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBJ
bnRSZWN0IG1hcFJlY3QoY29uc3QgSW50UmVjdCYpIGNvbnN0OwogICAgIExheW91dFJlY3QgbWFw
UmVjdChjb25zdCBMYXlvdXRSZWN0JikgY29uc3Q7CiAKICAgICAvLyBJZiB0aGUgbWF0cml4IGhh
cyAzRCBjb21wb25lbnRzLCB0aGUgeiBjb21wb25lbnQgb2YgdGhlIHJlc3VsdCBpcwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxT
Y3JlZW5XYXJuaW5nVmlldy5oCShyZXZpc2lvbiAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKLUBpbnRl
cmZhY2UgIFdlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcgOiBOU0JveCB7CitXRUJDT1JFX0VY
UE9SVCBAaW50ZXJmYWNlICBXZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3IDogTlNCb3ggewog
ICAgIFJldGFpblB0cjxOU1RleHRGaWVsZD4gX3RleHRGaWVsZDsKIH0KIC0gKGlkKWluaXRXaXRo
VGl0bGU6KE5TU3RyaW5nKil0aXRsZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaAkocmV2aXNpb24gMTc5
ODM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZl
cmVuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZSA6IHB1YmxpYyBSZWZDb3VudGVk
PEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4geworY2xhc3MgV0VCQ09SRV9FWFBPUlQgQmxvYkRhdGFG
aWxlUmVmZXJlbmNlIDogcHVibGljIFJlZkNvdW50ZWQ8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+IGNyZWF0ZShj
b25zdCBTdHJpbmcmIHBhdGgpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgJKHJldmlzaW9uIDE3OTgz
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICB2b2lkIHJlbW92ZUNyZWRlbnRpYWxzKCk7CiAKLSAgICAgICAgUmVzb3VyY2VS
ZXF1ZXN0Q2FjaGVQb2xpY3kgY2FjaGVQb2xpY3koKSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9F
WFBPUlQgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgY2FjaGVQb2xpY3koKSBjb25zdDsKICAg
ICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDYWNoZVBvbGljeShSZXNvdXJjZVJlcXVlc3RD
YWNoZVBvbGljeSBjYWNoZVBvbGljeSk7CiAgICAgICAgIAogICAgICAgICBkb3VibGUgdGltZW91
dEludGVydmFsKCkgY29uc3Q7IC8vIE1heSByZXR1cm4gMCB3aGVuIHVzaW5nIHBsYXRmb3JtIGRl
ZmF1bHQuCkBAIC04MiwxMCArODIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBj
b25zdCBIVFRQSGVhZGVyTWFwJiBodHRwSGVhZGVyRmllbGRzKCkgY29uc3Q7CiAgICAgICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0SFRUUEhlYWRlckZpZWxkcyhIVFRQSGVhZGVyTWFwKTsKIAot
ICAgICAgICBTdHJpbmcgaHR0cEhlYWRlckZpZWxkKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7
Ci0gICAgICAgIFN0cmluZyBodHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWUpIGNvbnN0Owot
ICAgICAgICB2b2lkIHNldEhUVFBIZWFkZXJGaWVsZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgdmFsdWUpOwotICAgICAgICB2b2lkIHNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVh
ZGVyTmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBodHRwSGVhZGVyRmllbGQoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdDsKKyAgICAgICAg
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIGh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZSkgY29u
c3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SFRUUEhlYWRlckZpZWxkKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisgICAgICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlKTsKICAgICAgICAgdm9pZCBhZGRIVFRQSGVhZGVyRmllbGQoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogICAgICAgICAvLyBJbnN0ZWFkIG9mIHBhc3Np
bmcgYSBzdHJpbmcgbGl0ZXJhbCB0byBhbnkgb2YgdGhlc2UgZnVuY3Rpb25zLCBqdXN0IHVzZSBh
IEhUVFBIZWFkZXJOYW1lIGluc3RlYWQuCkBAIC0xMjcsNyArMTI3LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlv
cml0eSgpIGNvbnN0OwogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByaW9yaXR5KFJl
c291cmNlTG9hZFByaW9yaXR5KTsKIAotICAgICAgICBib29sIGlzQ29uZGl0aW9uYWwoKSBjb25z
dDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbmRpdGlvbmFsKCkgY29uc3Q7CiAg
ICAgICAgIHZvaWQgbWFrZVVuY29uZGl0aW9uYWwoKTsKIAogICAgICAgICAvLyBXaGV0aGVyIHRo
ZSBhc3NvY2lhdGVkIFJlc291cmNlSGFuZGxlQ2xpZW50IG5lZWRzIHRvIGJlIG5vdGlmaWVkIG9m
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlc3BvbnNlQmFzZS5oCShyZXZpc2lvbiAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTk5LDEwICs5OSwxMCBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIHJl
dHVybiBwYXJzZWQgdmFsdWVzIG9mIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlIGhlYWRlcnMu
CiAgICAgLy8gTmFOIG1lYW5zIHRoYXQgdGhlIGhlYWRlciB3YXMgbm90IHByZXNlbnQgb3IgaGFk
IGludmFsaWQgdmFsdWUuCi0gICAgYm9vbCBjYWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKSBj
b25zdDsKLSAgICBib29sIGNhY2hlQ29udHJvbENvbnRhaW5zTm9TdG9yZSgpIGNvbnN0OwotICAg
IGJvb2wgY2FjaGVDb250cm9sQ29udGFpbnNNdXN0UmV2YWxpZGF0ZSgpIGNvbnN0OwotICAgIGJv
b2wgaGFzQ2FjaGVWYWxpZGF0b3JGaWVsZHMoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGNhY2hlQ29udHJvbENvbnRhaW5zTm9DYWNoZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgY2FjaGVDb250cm9sQ29udGFpbnNOb1N0b3JlKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBjYWNoZUNvbnRyb2xDb250YWluc011c3RSZXZhbGlkYXRlKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNDYWNoZVZhbGlkYXRvckZpZWxkcygpIGNvbnN0
OwogICAgIGRvdWJsZSBjYWNoZUNvbnRyb2xNYXhBZ2UoKSBjb25zdDsKICAgICBkb3VibGUgZGF0
ZSgpIGNvbnN0OwogICAgIGRvdWJsZSBhZ2UoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3JlYXRlLWh0dHAtaGVhZGVyLW5hbWUtdGFibGUKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jcmVhdGUtaHR0cC1oZWFkZXIt
bmFtZS10YWJsZQkocmV2aXNpb24gMTc5ODM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jcmVhdGUtaHR0cC1oZWFkZXItbmFtZS10YWJsZQkod29ya2luZyBjb3B5KQpAQCAt
MjMwLDcgKzIzMCw3IEBAIGhlYWRlcl9maWxlLndyaXRlKCdjb25zdCBzaXplX3QgbWluSFRUUEgK
IGhlYWRlcl9maWxlLndyaXRlKCdjb25zdCBzaXplX3QgbWF4SFRUUEhlYWRlck5hbWVMZW5ndGgg
PSAldTtcbicgJSBsZW4obWF4KGh0dHBfaGVhZGVyX25hbWVzLCBrZXk9bGVuKSkpOwogaGVhZGVy
X2ZpbGUud3JpdGUoJycnCiBib29sIGZpbmRIVFRQSGVhZGVyTmFtZShTdHJpbmdWaWV3LCBIVFRQ
SGVhZGVyTmFtZSYpOwotU3RyaW5nVmlldyBodHRwSGVhZGVyTmFtZVN0cmluZyhIVFRQSGVhZGVy
TmFtZSk7CitXRUJDT1JFX0VYUE9SVCBTdHJpbmdWaWV3IGh0dHBIZWFkZXJOYW1lU3RyaW5nKEhU
VFBIZWFkZXJOYW1lKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVz
cG9uc2UuaAkocmV2aXNpb24gMTc5ODM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5
LDcgQEAgQGludGVyZmFjZSBOU1VSTFJlc3BvbnNlIChEZXRhaWxzKQogQGNsYXNzIE5TVVJMUmVz
cG9uc2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLU5TVVJMUmVzcG9uc2UgKnN5bnRoZXNpemVS
ZWRpcmVjdFJlc3BvbnNlSWZOZWNlc3NhcnkoTlNVUkxDb25uZWN0aW9uICosIE5TVVJMUmVxdWVz
dCAqbmV3UmVxdWVzdCwgTlNVUkxSZXNwb25zZSAqcmVkaXJlY3RSZXNwb25zZSk7CitXRUJDT1JF
X0VYUE9SVCBOU1VSTFJlc3BvbnNlICpzeW50aGVzaXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNz
YXJ5KE5TVVJMQ29ubmVjdGlvbiAqLCBOU1VSTFJlcXVlc3QgKm5ld1JlcXVlc3QsIE5TVVJMUmVz
cG9uc2UgKnJlZGlyZWN0UmVzcG9uc2UpOwogfQogI2VuZGlmIC8vIF9fT0JKQ19fCiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFj
a2VyLmgJKHJldmlzaW9uIDE3OTgzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVEYXRhYmFzZVRyYWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBTUUxpdGVEYXRhYmFzZVRyYWNrZXIgewog
Ci12b2lkIGRlY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KCk7Ci12b2lkIGluY3Jl
bWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KCk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGRl
Y3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KCk7CitXRUJDT1JFX0VYUE9SVCB2b2lk
IGluY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KCk7CiAKIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0Q2xpZW50KFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudCopOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oCShyZXZpc2lv
biAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHVuc2lnbmVkIGJpbmRQYXJhbWV0ZXJDb3VudCgpIGNvbnN0OwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgaW50IHN0ZXAoKTsKLSAgICBpbnQgZmluYWxpemUoKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBpbnQgZmluYWxpemUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgcmVzZXQoKTsKICAg
ICAKICAgICBpbnQgcHJlcGFyZUFuZFN0ZXAoKSB7IGlmIChpbnQgZXJyb3IgPSBwcmVwYXJlKCkp
IHJldHVybiBlcnJvcjsgcmV0dXJuIHN0ZXAoKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0hpdFRlc3RMb2NhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0TG9jYXRpb24uaAkocmV2aXNpb24gMTc5ODM3KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RMb2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSwx
MyArNDksMTMgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgSGl0VGVzdExvY2F0aW9u
KCk7CiAgICAgSGl0VGVzdExvY2F0aW9uKGNvbnN0IExheW91dFBvaW50Jik7Ci0gICAgSGl0VGVz
dExvY2F0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBIaXRUZXN0
TG9jYXRpb24oY29uc3QgRmxvYXRQb2ludCYpOwogICAgIEhpdFRlc3RMb2NhdGlvbihjb25zdCBG
bG9hdFBvaW50JiwgY29uc3QgRmxvYXRRdWFkJik7CiAgICAgLy8gUGFzcyBub24temVybyBwYWRk
aW5nIHZhbHVlcyB0byBwZXJmb3JtIGEgcmVjdC1iYXNlZCBoaXQgdGVzdC4KICAgICBIaXRUZXN0
TG9jYXRpb24oY29uc3QgTGF5b3V0UG9pbnQmIGNlbnRlclBvaW50LCB1bnNpZ25lZCB0b3BQYWRk
aW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2ln
bmVkIGxlZnRQYWRkaW5nKTsKICAgICAvLyBNYWtlIGEgY29weSB0aGUgSGl0VGVzdExvY2F0aW9u
IGluIGEgbmV3IHJlZ2lvbiBieSBhcHBseWluZyBnaXZlbiBvZmZzZXQgdG8gaW50ZXJuYWwgcG9p
bnQgYW5kIGFyZWEuCiAgICAgSGl0VGVzdExvY2F0aW9uKGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYs
IGNvbnN0IExheW91dFNpemUmIG9mZnNldCk7Ci0gICAgSGl0VGVzdExvY2F0aW9uKGNvbnN0IEhp
dFRlc3RMb2NhdGlvbiYpOworICAgIFdFQkNPUkVfRVhQT1JUIEhpdFRlc3RMb2NhdGlvbihjb25z
dCBIaXRUZXN0TG9jYXRpb24mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+SGl0VGVzdExvY2F0aW9u
KCk7CiAgICAgSGl0VGVzdExvY2F0aW9uJiBvcGVyYXRvcj0oY29uc3QgSGl0VGVzdExvY2F0aW9u
Jik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAkocmV2
aXNpb24gMTc5ODM3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
aAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgSGl0VGVzdFJlc3VsdChjb25zdCBMYXlvdXRQb2ludCYpOwogICAgIC8v
IFBhc3Mgbm9uLW5lZ2F0aXZlIHBhZGRpbmcgdmFsdWVzIHRvIHBlcmZvcm0gYSByZWN0LWJhc2Vk
IGhpdCB0ZXN0LgogICAgIFdFQkNPUkVfRVhQT1JUIEhpdFRlc3RSZXN1bHQoY29uc3QgTGF5b3V0
UG9pbnQmIGNlbnRlclBvaW50LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBh
ZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nKTsKLSAg
ICBleHBsaWNpdCBIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdExvY2F0aW9u
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgSGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgfkhpdFRlc3RSZXN1bHQoKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBIaXRUZXN0UmVzdWx0JiBvcGVyYXRvcj0oY29uc3QgSGl0VGVzdFJlc3VsdCYpOwpAQCAt
ODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgTGF5b3V0UG9pbnQmIGxvY2FsUG9pbnQo
KSBjb25zdCB7IHJldHVybiBtX2xvY2FsUG9pbnQ7IH0KICAgICB2b2lkIHNldExvY2FsUG9pbnQo
Y29uc3QgTGF5b3V0UG9pbnQmIHApIHsgbV9sb2NhbFBvaW50ID0gcDsgfQogCi0gICAgdm9pZCBz
ZXRUb05vblNoYWRvd0FuY2VzdG9yKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUb05v
blNoYWRvd0FuY2VzdG9yKCk7CiAKICAgICBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGhpdFRlc3RM
b2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faGl0VGVzdExvY2F0aW9uOyB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oCShyZXZp
c2lvbiAxNzk4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudERpc3Bh
dGNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTAgKzQyLDEwIEBAIGNsYXNzIFNlY3VyaXR5
T3JpZ2luOwogCiBjbGFzcyBTdG9yYWdlRXZlbnREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgdm9pZCBkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnRzKGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTZWN1cml0
eU9yaWdpbiosIEZyYW1lKiBzb3VyY2VGcmFtZSk7Ci0gICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hM
b2NhbFN0b3JhZ2VFdmVudHMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFs
dWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFNlY3VyaXR5T3JpZ2luKiwgRnJhbWUqIHNvdXJj
ZUZyYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBkaXNwYXRjaFNlc3Npb25T
dG9yYWdlRXZlbnRzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBj
b25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTZWN1cml0eU9yaWdpbiosIEZyYW1lKiBzb3VyY2VGcmFt
ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VF
dmVudHMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0
cmluZyYgbmV3VmFsdWUsIFNlY3VyaXR5T3JpZ2luKiwgRnJhbWUqIHNvdXJjZUZyYW1lKTsKIAot
ICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudHNUb0ZyYW1lcyhQYWdl
JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxGcmFtZT4+JiBmcmFtZXMsIGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBT
dHJpbmcmIHVybCwgU2VjdXJpdHlPcmlnaW4qKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
dm9pZCBkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnRzVG9GcmFtZXMoUGFnZSYsIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8RnJhbWU+PiYgZnJhbWVzLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmws
IFNlY3VyaXR5T3JpZ2luKik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzcGF0
Y2hMb2NhbFN0b3JhZ2VFdmVudHNUb0ZyYW1lcyhQYWdlR3JvdXAmLCBjb25zdCBWZWN0b3I8UmVm
UHRyPEZyYW1lPj4mIGZyYW1lcywgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xk
VmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsLCBTZWN1cml0
eU9yaWdpbiopOwogcHJpdmF0ZToKICAgICAvLyBEbyBub3QgaW5zdGFudGlhdGUuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>