<?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>206564</bug_id>
          
          <creation_ts>2020-01-21 18:08:32 -0800</creation_ts>
          <short_desc>ContentFilter should access DocumentLoader through an interface</short_desc>
          <delta_ts>2020-01-23 10:52:13 -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>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>aestes</cc>
    
    <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1609419</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-21 18:08:32 -0800</bug_when>
    <thetext>ContentFilter should access DocumentLoader through an interface</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609421</commentid>
    <comment_count>1</comment_count>
      <attachid>388385</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-21 18:12:28 -0800</bug_when>
    <thetext>Created attachment 388385
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609446</commentid>
    <comment_count>2</comment_count>
      <attachid>388395</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-21 20:56:08 -0800</bug_when>
    <thetext>Created attachment 388395
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609466</commentid>
    <comment_count>3</comment_count>
      <attachid>388397</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-21 23:17:02 -0800</bug_when>
    <thetext>Created attachment 388397
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609946</commentid>
    <comment_count>4</comment_count>
      <attachid>388512</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-22 20:48:24 -0800</bug_when>
    <thetext>Created attachment 388512
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610200</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-23 10:51:15 -0800</bug_when>
    <thetext>http://trac.webkit.org/r254983</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610202</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-23 10:52:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/58840413&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388385</attachid>
            <date>2020-01-21 18:12:28 -0800</date>
            <delta_ts>2020-01-21 20:56:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206564-20200121181227.patch</filename>
            <type>text/plain</type>
            <size>24855</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDg5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDIwLTAxLTIxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29udGVudEZp
bHRlciBzaG91bGQgYWNjZXNzIERvY3VtZW50TG9hZGVyIHRocm91Z2ggYW4gaW50ZXJmYWNlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1NjQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHdpbGwg
bWFrZSBpdCBlYXNpZXIgdG8gbW92ZSwgbGlrZSB0byB0aGUgTmV0d29ya1Byb2Nlc3Mgd2hlcmUg
dGhlcmUgYXJlIG5vIERvY3VtZW50TG9hZGVycy4KKyAgICAgICAgQWxzbyB1c2UgV1RGOjpGdW5j
dGlvbiBpbnN0ZWFkIG9mIHN0ZDo6ZnVuY3Rpb24gYW5kIFVuaXF1ZVJlZiBpbnN0ZWFkIG9mIHN0
ZDo6dW5pcXVlX3B0ci4KKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9D
b250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OnR5cGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpDb250ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5
RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Zm9yRWFjaENvbnRl
bnRGaWx0ZXJVbnRpbEJsb2NrZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6
ZGlkRGVjaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNv
dXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6aGFuZGxlUHJvdmlz
aW9uYWxMb2FkRmFpbHVyZSk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRl
ci9Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyQ2xpZW50Ojp+Q29udGVu
dEZpbHRlckNsaWVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkaWRCbG9jayk6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6Y3JlYXRlKToKKwogMjAyMC0wMS0y
MSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBB
IHBhcnRpYWxseSBzZWxlY3RlZCBSVEwgdGV4dCBpcyBwbGFjZWQgYXQgYSB3cm9uZyB2ZXJ0aWNh
bCBwb3NpdGlvbiBpZiBpdCBoYXMgYSB2ZXJ0aWNhbCBpbml0aWFsIGFkdmFuY2UKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDI1NDQzMSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTA0Niw2ICs5MDQ2LDcgQEAKIAkJNUNCQzhE
QUIxQUFBMzAyMjAwRTFDODAzIC8qIE1lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQ0MyNzA2MjJENTNCNjgwMDk2NEZBMCAv
KiBBdXRvZmlsbEVsZW1lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1
dG9maWxsRWxlbWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNDQzI3MDcy
MkQ1M0I2OTAwOTY0RkEwIC8qIEF1dG9maWxsRWxlbWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQXV0b2ZpbGxFbGVtZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTVDRENEREJGMjNEN0I3QkUwMEJBMzRBMSAvKiBDb250ZW50RmlsdGVy
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRGaWx0ZXJD
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNERDgzMzkxRTQzMjRCQjAw
NjIxRTgzIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNl
Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDREQ4MzM5MUU0MzI0QkIw
MDYyMUU5MiAvKiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNERDgzM0ExRTQzMjRCQjAwNjIxRTgzIC8q
IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTY4Niw2ICsyNTY4Nyw3IEBACiAJCQkJRUZDQzZDOEQy
MEZFOTE0MDAwQTIzMjFCIC8qIENhbnZhc0FjdGl2aXR5UmVjb3JkLmggKi8sCiAJCQkJQTE0OTc4
NkMxQUJBRjMzODAwQ0VGN0U0IC8qIENvbnRlbnRGaWx0ZXIuY3BwICovLAogCQkJCUExNDk3ODZE
MUFCQUYzMzgwMENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmggKi8sCisJCQkJNUNEQ0REQkYyM0Q3
QjdCRTAwQkEzNEExIC8qIENvbnRlbnRGaWx0ZXJDbGllbnQuaCAqLywKIAkJCQlFMTQyNEM5MTE2
NEI1MkM4MDBGMzJENDAgLyogQ29va2llSmFyLmNwcCAqLywKIAkJCQlFMTQyNEM5MjE2NEI1MkM4
MDBGMzJENDAgLyogQ29va2llSmFyLmggKi8sCiAJCQkJRTFDNDE2MTYwRjY1NjMxODAwOTJEMkZC
IC8qIENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCShyZXZpc2lvbiAyNTQ0MzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5
LDcgQEAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAKICNpbmNsdWRlICJDYWNoZWRS
YXdSZXNvdXJjZS5oIgorI2luY2x1ZGUgIkNvbnRlbnRGaWx0ZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRl
ci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC01NCwzNiArNTUsMzUgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogVmVjdG9yPENvbnRlbnRGaWx0ZXI6OlR5cGU+JiBDb250ZW50RmlsdGVyOjp0eXBl
cygpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxDb250ZW50RmlsdGVyOjpU
eXBlPj4gdHlwZXMgewotICAgICAgICBWZWN0b3I8Q29udGVudEZpbHRlcjo6VHlwZT4geworICAg
ICAgICBWZWN0b3I8Q29udGVudEZpbHRlcjo6VHlwZT46OmZyb20oCiAjaWYgSEFWRShQQVJFTlRB
TF9DT05UUk9MUykKICAgICAgICAgICAgIHR5cGU8UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0
ZXI+KCksCiAjZW5kaWYKICNpZiBIQVZFKE5FVFdPUktfRVhURU5TSU9OKQogICAgICAgICAgICAg
dHlwZTxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcj4oKQogI2VuZGlmCi0gICAgICAgIH0K
KyAgICAgICAgKQogICAgIH07CiAgICAgcmV0dXJuIHR5cGVzOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8Q29udGVudEZpbHRlcj4gQ29udGVudEZpbHRlcjo6Y3JlYXRlKERvY3VtZW50TG9hZGVyJiBk
b2N1bWVudExvYWRlcikKK3N0ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBDb250ZW50Rmls
dGVyOjpjcmVhdGUoQ29udGVudEZpbHRlckNsaWVudCYgY2xpZW50KQogewogICAgIENvbnRhaW5l
ciBmaWx0ZXJzOwogICAgIGZvciAoYXV0byYgdHlwZSA6IHR5cGVzKCkpIHsKICAgICAgICAgYXV0
byBmaWx0ZXIgPSB0eXBlLmNyZWF0ZSgpOwotICAgICAgICBBU1NFUlQoZmlsdGVyKTsKICAgICAg
ICAgZmlsdGVycy5hcHBlbmQoV1RGTW92ZShmaWx0ZXIpKTsKICAgICB9CiAKICAgICBpZiAoZmls
dGVycy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q29udGVudEZpbHRlcj4oV1RGTW92ZShmaWx0ZXJzKSwgZG9jdW1lbnRMb2FkZXIp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPENvbnRlbnRGaWx0ZXI+KFdURk1vdmUoZmlsdGVycyks
IGNsaWVudCk7CiB9CiAKLUNvbnRlbnRGaWx0ZXI6OkNvbnRlbnRGaWx0ZXIoQ29udGFpbmVyJiYg
Y29udGVudEZpbHRlcnMsIERvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlcikKLSAgICA6IG1f
Y29udGVudEZpbHRlcnMgeyBXVEZNb3ZlKGNvbnRlbnRGaWx0ZXJzKSB9Ci0gICAgLCBtX2RvY3Vt
ZW50TG9hZGVyIHsgZG9jdW1lbnRMb2FkZXIgfQorQ29udGVudEZpbHRlcjo6Q29udGVudEZpbHRl
cihDb250YWluZXImJiBjb250ZW50RmlsdGVycywgQ29udGVudEZpbHRlckNsaWVudCYgY2xpZW50
KQorICAgIDogbV9jb250ZW50RmlsdGVycyhXVEZNb3ZlKGNvbnRlbnRGaWx0ZXJzKSkKKyAgICAs
IG1fY2xpZW50KGNsaWVudCkKIHsKICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNyZWF0aW5n
IENvbnRlbnRGaWx0ZXIgd2l0aCAlenUgcGxhdGZvcm0gY29udGVudCBmaWx0ZXIocykuXG4iLCBt
X2NvbnRlbnRGaWx0ZXJzLnNpemUoKSk7CiAgICAgQVNTRVJUKCFtX2NvbnRlbnRGaWx0ZXJzLmlz
RW1wdHkoKSk7CkBAIC05Niw3ICs5Niw3IEBAIENvbnRlbnRGaWx0ZXI6On5Db250ZW50RmlsdGVy
KCkKIAogYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RS
ZXNwb25zZSkKIHsKLSAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3RlZERvY3VtZW50TG9h
ZGVyIHsgbV9kb2N1bWVudExvYWRlciB9OworICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBw
cm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwogCiAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcs
ICJDb250ZW50RmlsdGVyIHJlY2VpdmVkIHJlcXVlc3QgZm9yIDwlcz4gd2l0aCByZWRpcmVjdCBy
ZXNwb25zZSBmcm9tIDwlcz4uXG4iLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0
YSgpLCByZWRpcmVjdFJlc3BvbnNlLnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICNp
ZiAhTE9HX0RJU0FCTEVECkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpz
dG9wRmlsdGVyaW5nTWFpblJlcwogCiBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJS
ZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAg
IFJlZjxEb2N1bWVudExvYWRlcj4gcHJvdGVjdGVkRG9jdW1lbnRMb2FkZXIgeyBtX2RvY3VtZW50
TG9hZGVyIH07CisgICAgUmVmPENvbnRlbnRGaWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7
IG1fY2xpZW50IH07CiAKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RmlsdGVyaW5nKSB7CiAg
ICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciByZWNlaXZlZCByZXNw
b25zZSBmcm9tIDwlcz4uXG4iLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEo
KSk7CkBAIC0xNDksNyArMTQ5LDcgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVy
UmVzcG9ucwogCiBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQo
Y29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICBSZWY8RG9jdW1lbnRMb2FkZXI+
IHByb3RlY3RlZERvY3VtZW50TG9hZGVyIHsgbV9kb2N1bWVudExvYWRlciB9OworICAgIFJlZjxD
b250ZW50RmlsdGVyQ2xpZW50PiBwcm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwogCiAgICAg
aWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRlcmluZykgewogICAgICAgICBMT0coQ29udGVudEZp
bHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgcmVjZWl2ZWQgJWQgYnl0ZXMgb2YgZGF0YSBmcm9tIDwl
cz4uXG4iLCBsZW5ndGgsIG1fbWFpblJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRh
dGEoKSk7CkBAIC0xNjgsNyArMTY4LDcgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFm
dGVyRGF0YVJlYwogYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3Vy
Y2UsICZyZXNvdXJjZSA9PSBtX21haW5SZXNvdXJjZSk7Ci0gICAgUmVmPERvY3VtZW50TG9hZGVy
PiBwcm90ZWN0ZWREb2N1bWVudExvYWRlciB7IG1fZG9jdW1lbnRMb2FkZXIgfTsKKyAgICBSZWY8
Q29udGVudEZpbHRlckNsaWVudD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQgfTsKIAogICAg
IGlmIChtX21haW5SZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTIwMSwxMSArMjAxLDExIEBAIGlubGluZSB2b2lkIENvbnRlbnRGaWx0ZXI6OmZvckVh
Y2hDb250ZW4KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgZnVu
Y3Rpb24oKmNvbnRlbnRGaWx0ZXIpOworICAgICAgICBmdW5jdGlvbihjb250ZW50RmlsdGVyLmdl
dCgpKTsKIAogICAgICAgICBpZiAoY29udGVudEZpbHRlci0+ZGlkQmxvY2tEYXRhKCkpIHsKICAg
ICAgICAgICAgIEFTU0VSVCghbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXIpOwotICAgICAgICAgICAg
bV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXIgPSBjb250ZW50RmlsdGVyLmdldCgpOworICAgICAgICAg
ICAgbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXIgPSAmY29udGVudEZpbHRlcjsKICAgICAgICAgICAg
IGRpZERlY2lkZShTdGF0ZTo6QmxvY2tlZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0gZWxzZSBpZiAoY29udGVudEZpbHRlci0+bmVlZHNNb3JlRGF0YSgpKQpAQCAtMjI2LDIwICsy
MjYsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRpZERlY2lkZShTdGF0ZSBzdGF0CiAgICAgaWYg
KG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIENvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciB7IG1fYmxvY2tpbmdDb250ZW50
RmlsdGVyLT51bmJsb2NrSGFuZGxlcigpIH07Ci0gICAgdW5ibG9ja0hhbmRsZXIuc2V0VW5yZWFj
aGFibGVVUkwobV9kb2N1bWVudExvYWRlci5kb2N1bWVudFVSTCgpKTsKLSAgICBhdXRvIGZyYW1l
IHsgbV9kb2N1bWVudExvYWRlci5mcmFtZSgpIH07Ci0gICAgU3RyaW5nIHVuYmxvY2tSZXF1ZXN0
RGVuaWVkU2NyaXB0IHsgbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXItPnVuYmxvY2tSZXF1ZXN0RGVu
aWVkU2NyaXB0KCkgfTsKLSAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LmlzRW1w
dHkoKSAmJiBmcmFtZSkgewotICAgICAgICB1bmJsb2NrSGFuZGxlci53cmFwV2l0aERlY2lzaW9u
SGFuZGxlcihbc2NyaXB0Q29udHJvbGxlciA9IG1ha2VXZWFrUHRyKGZyYW1lLT5zY3JpcHQoKSks
IHNjcmlwdCA9IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0Lmlzb2xhdGVkQ29weSgpXShib29s
IHVuYmxvY2tlZCkgewotICAgICAgICAgICAgaWYgKCF1bmJsb2NrZWQgJiYgc2NyaXB0Q29udHJv
bGxlcikKLSAgICAgICAgICAgICAgICBzY3JpcHRDb250cm9sbGVyLT5leGVjdXRlU2NyaXB0SWdu
b3JpbmdFeGNlcHRpb24oc2NyaXB0KTsKLSAgICAgICAgfSk7Ci0gICAgfQotICAgIG1fZG9jdW1l
bnRMb2FkZXIuZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuY29udGVudEZpbHRlckRpZEJsb2NrTG9h
ZChXVEZNb3ZlKHVuYmxvY2tIYW5kbGVyKSk7Ci0KLSAgICBtX2Jsb2NrZWRFcnJvciA9IG1fZG9j
dW1lbnRMb2FkZXIuZnJhbWVMb2FkZXIoKS0+YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKG1f
ZG9jdW1lbnRMb2FkZXIucmVxdWVzdCgpKTsKLSAgICBtX2RvY3VtZW50TG9hZGVyLmNhbmNlbE1h
aW5SZXNvdXJjZUxvYWQobV9ibG9ja2VkRXJyb3IpOworICAgIG1fYmxvY2tlZEVycm9yID0gbV9j
bGllbnQuZGlkQmxvY2sobV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXItPnVuYmxvY2tIYW5kbGVyKCks
IG1fYmxvY2tpbmdDb250ZW50RmlsdGVyLT51bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCgpKTsK
IH0KIAogdm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSkKQEAgLTI0Nyw3ICsyMzQsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRl
bGl2ZXJSZXNvdXJjZURhdGEoCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQp
OwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZl
cmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNlQnVmZmVyID0g
cmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9kb2N1bWVudExvYWRlci5kYXRh
UmVjZWl2ZWQocmVzb3VyY2UsIHJlc291cmNlQnVmZmVyLT5kYXRhKCksIHJlc291cmNlQnVmZmVy
LT5zaXplKCkpOworICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWQocmVzb3VyY2VCdWZmZXIt
PmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CiB9CiAKIHN0YXRpYyBjb25zdCBVUkwm
IGJsb2NrZWRQYWdlVVJMKCkKQEAgLTI5NCw3ICsyODEsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6
OmhhbmRsZVByb3Zpc2lvbmFsTG9hCiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSB7IFVS
TCgpLCAidGV4dC9odG1sIl9zLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHJlcGxhY2VtZW50RGF0
YS0+c2l6ZSgpKSwgIlVURi04Il9zIH07CiAgICAgU3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURh
dGEgeyBXVEZNb3ZlKHJlcGxhY2VtZW50RGF0YSksIGVycm9yLmZhaWxpbmdVUkwoKSwgcmVzcG9u
c2UsIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OkhpZGRlbiB9Owog
ICAgIFNldEZvclNjb3BlPGJvb2w+IGxvYWRpbmdCbG9ja2VkUGFnZSB7IG1faXNMb2FkaW5nQmxv
Y2tlZFBhZ2UsIHRydWUgfTsKLSAgICBtX2RvY3VtZW50TG9hZGVyLmZyYW1lTG9hZGVyKCktPmxv
YWQoRnJhbWVMb2FkUmVxdWVzdCgqbV9kb2N1bWVudExvYWRlci5mcmFtZSgpLCBibG9ja2VkUGFn
ZVVSTCgpLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdywgc3Vi
c3RpdHV0ZURhdGEpKTsKKyAgICBtX2NsaWVudC5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJl
KGJsb2NrZWRQYWdlVVJMKCksIHN1YnN0aXR1dGVEYXRhKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCShyZXZpc2lv
biAyNTQ0MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiwxMCArMzIsMTIgQEAKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgi
CiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1
ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNo
ZWRSYXdSZXNvdXJjZTsKK2NsYXNzIENvbnRlbnRGaWx0ZXJDbGllbnQ7CiBjbGFzcyBEb2N1bWVu
dExvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7
CkBAIC00OCw3ICs1MCw3IEBAIGNsYXNzIENvbnRlbnRGaWx0ZXIgewogcHVibGljOgogICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgdm9pZCBhZGRUeXBlKCkgeyB0eXBlcygpLmFwcGVu
ZCh0eXBlPFQ+KCkpOyB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0
ZXI+IGNyZWF0ZShEb2N1bWVudExvYWRlciYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
Q29udGVudEZpbHRlcj4gY3JlYXRlKENvbnRlbnRGaWx0ZXJDbGllbnQmKTsKICAgICB+Q29udGVu
dEZpbHRlcigpOwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHVybFNjaGVtZSgpIHsgcmV0dXJu
ICJ4LWFwcGxlLWNvbnRlbnQtZmlsdGVyIjsgfQpAQCAtNjksMjMgKzcxLDIzIEBAIHByaXZhdGU6
CiAgICAgdXNpbmcgU3RhdGUgPSBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXI6OlN0YXRlOwogCiAgICAg
c3RydWN0IFR5cGUgewotICAgICAgICBjb25zdCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybUNvbnRlbnRGaWx0ZXI+KCk+IGNyZWF0ZTsKKyAgICAgICAgRnVuY3Rpb248VW5p
cXVlUmVmPFBsYXRmb3JtQ29udGVudEZpbHRlcj4oKT4gY3JlYXRlOwogICAgIH07CiAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBUeXBlIHR5cGUoKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgVmVjdG9yPFR5cGU+JiB0eXBlcygpOwogCi0gICAgdXNpbmcgQ29udGFpbmVyID0g
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUNvbnRlbnRGaWx0ZXI+PjsKLSAgICBmcmll
bmQgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVu
dEZpbHRlcj4oQ29udGFpbmVyJiYsIERvY3VtZW50TG9hZGVyJik7Ci0gICAgQ29udGVudEZpbHRl
cihDb250YWluZXImJiwgRG9jdW1lbnRMb2FkZXImKTsKKyAgICB1c2luZyBDb250YWluZXIgPSBW
ZWN0b3I8VW5pcXVlUmVmPFBsYXRmb3JtQ29udGVudEZpbHRlcj4+OworICAgIGZyaWVuZCBzdGQ6
OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50RmlsdGVy
PihDb250YWluZXImJiwgQ29udGVudEZpbHRlckNsaWVudCYpOworICAgIENvbnRlbnRGaWx0ZXIo
Q29udGFpbmVyJiYsIENvbnRlbnRGaWx0ZXJDbGllbnQmKTsKIAogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBGdW5jdGlvbj4gdm9pZCBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChGdW5j
dGlvbiYmKTsKICAgICB2b2lkIGRpZERlY2lkZShTdGF0ZSk7CiAgICAgdm9pZCBkZWxpdmVyUmVz
b3VyY2VEYXRhKENhY2hlZFJlc291cmNlJik7CiAKLSAgICBjb25zdCBDb250YWluZXIgbV9jb250
ZW50RmlsdGVyczsKLSAgICBEb2N1bWVudExvYWRlciYgbV9kb2N1bWVudExvYWRlcjsKKyAgICBD
b250YWluZXIgbV9jb250ZW50RmlsdGVyczsKKyAgICBDb250ZW50RmlsdGVyQ2xpZW50JiBtX2Ns
aWVudDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9tYWlu
UmVzb3VyY2U7Ci0gICAgUGxhdGZvcm1Db250ZW50RmlsdGVyKiBtX2Jsb2NraW5nQ29udGVudEZp
bHRlciB7IG51bGxwdHIgfTsKKyAgICBjb25zdCBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIqIG1fYmxv
Y2tpbmdDb250ZW50RmlsdGVyIHsgbnVsbHB0ciB9OwogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0
ZTo6U3RvcHBlZCB9OwogICAgIFJlc291cmNlRXJyb3IgbV9ibG9ja2VkRXJyb3I7CiAgICAgYm9v
bCBtX2lzTG9hZGluZ0Jsb2NrZWRQYWdlIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKworI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyOworY2xhc3MgUmVzb3VyY2VFcnJvcjsKK2NsYXNzIFN1YnN0
aXR1dGVEYXRhOworCitjbGFzcyBDb250ZW50RmlsdGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5Db250ZW50RmlsdGVyQ2xpZW50KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlZigp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSBjb25zdCA9IDA7CisKKyAgICB2
aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqLCBpbnQpID0gMDsKKyAgICB2aXJ0
dWFsIFJlc291cmNlRXJyb3IgZGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBT
dHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkws
IFN1YnN0aXR1dGVEYXRhJikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiAyNTQ1NzYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNiAr
MTAyLDggQEAKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICNpbmNsdWRlICJDb250
ZW50RmlsdGVyLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgorI2luY2x1ZGUgIlNj
cmlwdENvbnRyb2xsZXIuaCIKICNlbmRpZgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCkBAIC0yMTg1
LDQgKzIxODcsMjYgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZW5xdWV1ZVNlY3VyaXR5UG9saQog
ICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmVucXVldWVTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2
ZW50KFdURk1vdmUoZXZlbnRJbml0KSk7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpCit2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNv
bnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkK
K3sKKyAgICBmcmFtZUxvYWRlcigpLT5sb2FkKEZyYW1lTG9hZFJlcXVlc3QoKmZyYW1lKCksIGJs
b2NrZWRQYWdlVVJMLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxv
dywgc3Vic3RpdHV0ZURhdGEpKTsKK30KKworUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6
ZGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBXVEY6
OlN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQoreworICAgIHVuYmxvY2tIYW5k
bGVyLnNldFVucmVhY2hhYmxlVVJMKGRvY3VtZW50VVJMKCkpOworICAgIGlmICghdW5ibG9ja1Jl
cXVlc3REZW5pZWRTY3JpcHQuaXNFbXB0eSgpICYmIGZyYW1lKCkpIHsKKyAgICAgICAgdW5ibG9j
a0hhbmRsZXIud3JhcFdpdGhEZWNpc2lvbkhhbmRsZXIoW3NjcmlwdENvbnRyb2xsZXIgPSBtYWtl
V2Vha1B0cihmcmFtZSgpLT5zY3JpcHQoKSksIHNjcmlwdCA9IHVuYmxvY2tSZXF1ZXN0RGVuaWVk
U2NyaXB0Lmlzb2xhdGVkQ29weSgpXShib29sIHVuYmxvY2tlZCkgeworICAgICAgICAgICAgaWYg
KCF1bmJsb2NrZWQgJiYgc2NyaXB0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBzY3JpcHRD
b250cm9sbGVyLT5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oc2NyaXB0KTsKKyAgICAg
ICAgfSk7CisgICAgfQorICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmNvbnRlbnRGaWx0ZXJE
aWRCbG9ja0xvYWQoV1RGTW92ZSh1bmJsb2NrSGFuZGxlcikpOworICAgIGF1dG8gYmxvY2tlZEVy
cm9yID0gZnJhbWVMb2FkZXIoKS0+YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKHJlcXVlc3Qo
KSk7CisgICAgY2FuY2VsTWFpblJlc291cmNlTG9hZChibG9ja2VkRXJyb3IpOworICAgIHJldHVy
biBibG9ja2VkRXJyb3I7Cit9CisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuaAkocmV2aXNpb24gMjU0NDMxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1
ZGUgIkNhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VI
YW5kbGUuaCIKKyNpbmNsdWRlICJDb250ZW50RmlsdGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ29u
dGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmgiCiAjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25P
ck1vdGlvblBlcm1pc3Npb25TdGF0ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50SWRlbnRpZmllci5o
IgpAQCAtMTQyLDYgKzE0Myw5IEBAIGNsYXNzIERvY3VtZW50TG9hZGVyCiAgICAgOiBwdWJsaWMg
UmVmQ291bnRlZDxEb2N1bWVudExvYWRlcj4KICAgICAsIHB1YmxpYyBGcmFtZURlc3RydWN0aW9u
T2JzZXJ2ZXIKICAgICAsIHB1YmxpYyBDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQKKyNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisgICAgLCBwdWJsaWMgQ29udGVudEZpbHRlckNsaWVu
dAorI2VuZGlmCiAgICAgLCBwcml2YXRlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRF9XSVRIX0hFQVBfSURFTlRJRklFUihEb2N1bWVudExvYWRl
cik7CiAgICAgZnJpZW5kIGNsYXNzIENvbnRlbnRGaWx0ZXI7CkBAIC00MDAsNiArNDA0LDEyIEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNldENvbnRyb2xsaW5nU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmKTsKICNlbmRp
ZgogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorICAgIC8vIENvbnRlbnRGaWx0ZXJD
bGllbnQKKyAgICB2b2lkIHJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxEb2N1bWVudExv
YWRlcj46OnJlZigpOyB9CisgICAgdm9pZCBkZXJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRl
ZDxEb2N1bWVudExvYWRlcj46OnJlZigpOyB9CisjZW5kaWYKKyAgICAgICAgCiBwcm90ZWN0ZWQ6
CiAgICAgV0VCQ09SRV9FWFBPUlQgRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKIApAQCAtNDQzLDggKzQ1MywxNiBAQCBwcml2YXRl
OgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJldmlld1Jlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAjZW5kaWYKIAot
ICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisg
ICAgLy8gQ29udGVudEZpbHRlckNsaWVudAorICAgIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0IGNo
YXIqLCBpbnQpIGZpbmFsOworICAgIFJlc291cmNlRXJyb3IgZGlkQmxvY2soQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgZmlu
YWw7CisgICAgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFVSTCYgYmxv
Y2tlZFBhZ2VVUkwsIFN1YnN0aXR1dGVEYXRhJikgZmluYWw7CisjZWxzZQogICAgIHZvaWQgZGF0
YVJlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOworI2VuZGlmCisKKyAgICB2
b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICBib29sIG1heWJlTG9hZEVtcHR5KCk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50Rmls
dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaAkocmV2aXNpb24gMjU0NDMxKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi9Db21waWxlci5oPgog
I2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
KyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIGVudW0gTkVGaWx0ZXJTb3VyY2VTdGF0dXMg
OiBOU0ludGVnZXI7CiAKQEAgLTM5LDEwICs0MCwxMCBAQCBPQkpDX0NMQVNTIE5TRGF0YTsKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIg
ZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1Db250ZW50RmlsdGVyIHsKLSAgICBmcmllbmQgc3RkOjp1
bmlxdWVfcHRyPE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyPiBzdGQ6Om1ha2VfdW5pcXVl
PE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyPigpOworICAgIGZyaWVuZCBVbmlxdWVSZWY8
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI+IFdURjo6bWFrZVVuaXF1ZVJlZldpdGhvdXRG
YXN0TWFsbG9jQ2hlY2s8TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI+KCk7CiAKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtFeHRlbnNpb25Db250ZW50Rmls
dGVyPiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgVW5pcXVlUmVmPE5ldHdvcmtFeHRlbnNpb25Db250
ZW50RmlsdGVyPiBjcmVhdGUoKTsKIAogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIHJl
c3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0JKHJldmlzaW9uIDI1NDQzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC03MSw5ICs3MSw5IEBAIGJvb2wgTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXI6OmVuYWIKICAgICByZXR1cm4gZW5hYmxlZDsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyPiBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlcjo6Y3JlYXRlKCkKK1VuaXF1ZVJlZjxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcj4g
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIG1h
a2VVbmlxdWU8TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI+KCk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWVSZWY8TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI+KCk7CiB9CiAKIHZvaWQg
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmluaXRpYWxpemUoY29uc3QgVVJMKiB1cmwp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgJKHJldmlzaW9uIDI1NDQzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUNv
bnRlbnRGaWx0ZXIuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGlsZXIuaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBPQkpDX0NMQVNTIE5T
RGF0YTsKIE9CSkNfQ0xBU1MgV2ViRmlsdGVyRXZhbHVhdG9yOwpAQCAtMzUsMTAgKzM2LDEwIEBA
IE9CSkNfQ0xBU1MgV2ViRmlsdGVyRXZhbHVhdG9yOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlciBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9y
bUNvbnRlbnRGaWx0ZXIgewotICAgIGZyaWVuZCBzdGQ6OnVuaXF1ZV9wdHI8UGFyZW50YWxDb250
cm9sc0NvbnRlbnRGaWx0ZXI+IHN0ZDo6bWFrZV91bmlxdWU8UGFyZW50YWxDb250cm9sc0NvbnRl
bnRGaWx0ZXI+KCk7CisgICAgZnJpZW5kIFVuaXF1ZVJlZjxQYXJlbnRhbENvbnRyb2xzQ29udGVu
dEZpbHRlcj4gV1RGOjptYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxQYXJlbnRh
bENvbnRyb2xzQ29udGVudEZpbHRlcj4oKTsKIAogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI+IGNyZWF0ZSgpOworICAgIHN0
YXRpYyBVbmlxdWVSZWY8UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI+IGNyZWF0ZSgpOwog
CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlci5tbQkocmV2aXNpb24gMjU0NDMxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTY3
LDkgKzY3LDkgQEAgYm9vbCBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6ZW5hYgogICAg
IHJldHVybiBlbmFibGVkOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UGFyZW50YWxDb250cm9sc0Nv
bnRlbnRGaWx0ZXI+IFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpjcmVhdGUoKQorVW5p
cXVlUmVmPFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyPiBQYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlcjo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXJlbnRhbENv
bnRyb2xzQ29udGVudEZpbHRlcj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxQYXJlbnRh
bENvbnRyb2xzQ29udGVudEZpbHRlcj4oKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGNhbkhh
bmRsZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpJbmRleDogU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAJKHJldmlzaW9uIDI1
NDQzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02Miw5ICs2Miw5IEBAIGJvb2wgTW9ja0NvbnRlbnRGaWx0ZXI6OmVu
YWJsZWQoKQogICAgIHJldHVybiBlbmFibGVkOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8TW9ja0Nv
bnRlbnRGaWx0ZXI+IE1vY2tDb250ZW50RmlsdGVyOjpjcmVhdGUoKQorVW5pcXVlUmVmPE1vY2tD
b250ZW50RmlsdGVyPiBNb2NrQ29udGVudEZpbHRlcjo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4g
bWFrZVVuaXF1ZTxNb2NrQ29udGVudEZpbHRlcj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJl
ZjxNb2NrQ29udGVudEZpbHRlcj4oKTsKIH0KIAogdm9pZCBNb2NrQ29udGVudEZpbHRlcjo6d2ls
bFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NvbnRlbnRGaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDb250ZW50RmlsdGVyLmgJKHJldmlzaW9uIDI1NDQzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTUgKzI3LDE2
IEBACiAKICNpbmNsdWRlICJNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1Db250ZW50RmlsdGVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1vY2tDb250ZW50RmlsdGVyIGZpbmFsIDogcHVi
bGljIFBsYXRmb3JtQ29udGVudEZpbHRlciB7Ci0gICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxN
b2NrQ29udGVudEZpbHRlcj4gc3RkOjptYWtlX3VuaXF1ZTxNb2NrQ29udGVudEZpbHRlcj4oKTsK
KyAgICBmcmllbmQgVW5pcXVlUmVmPE1vY2tDb250ZW50RmlsdGVyPiBXVEY6Om1ha2VVbmlxdWVS
ZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPE1vY2tDb250ZW50RmlsdGVyPigpOwogCiBwdWJsaWM6
CiAgICAgc3RhdGljIHZvaWQgZW5zdXJlSW5zdGFsbGVkKCk7Ci0gICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxNb2NrQ29udGVudEZpbHRlcj4gY3JlYXRlKCk7CisgICAgc3RhdGljIFVuaXF1ZVJl
ZjxNb2NrQ29udGVudEZpbHRlcj4gY3JlYXRlKCk7CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlk
ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388395</attachid>
            <date>2020-01-21 20:56:08 -0800</date>
            <delta_ts>2020-01-21 23:17:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206564-20200121205607.patch</filename>
            <type>text/plain</type>
            <size>27274</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDg5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDIwLTAxLTIxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29udGVudEZp
bHRlciBzaG91bGQgYWNjZXNzIERvY3VtZW50TG9hZGVyIHRocm91Z2ggYW4gaW50ZXJmYWNlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1NjQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHdpbGwg
bWFrZSBpdCBlYXNpZXIgdG8gbW92ZSwgbGlrZSB0byB0aGUgTmV0d29ya1Byb2Nlc3Mgd2hlcmUg
dGhlcmUgYXJlIG5vIERvY3VtZW50TG9hZGVycy4KKyAgICAgICAgQWxzbyB1c2UgV1RGOjpGdW5j
dGlvbiBpbnN0ZWFkIG9mIHN0ZDo6ZnVuY3Rpb24gYW5kIFVuaXF1ZVJlZiBpbnN0ZWFkIG9mIHN0
ZDo6dW5pcXVlX3B0ci4KKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9D
b250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OnR5cGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpDb250ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5
RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Zm9yRWFjaENvbnRl
bnRGaWx0ZXJVbnRpbEJsb2NrZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6
ZGlkRGVjaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNv
dXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6aGFuZGxlUHJvdmlz
aW9uYWxMb2FkRmFpbHVyZSk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRl
ci9Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyQ2xpZW50Ojp+Q29udGVu
dEZpbHRlckNsaWVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkaWRCbG9jayk6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6Y3JlYXRlKToKKwogMjAyMC0wMS0y
MSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBB
IHBhcnRpYWxseSBzZWxlY3RlZCBSVEwgdGV4dCBpcyBwbGFjZWQgYXQgYSB3cm9uZyB2ZXJ0aWNh
bCBwb3NpdGlvbiBpZiBpdCBoYXMgYSB2ZXJ0aWNhbCBpbml0aWFsIGFkdmFuY2UKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjU0NDMxKQorKysgU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtNjc1LDYgKzY3NSw3IEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKIAogICAgIGxvYWRlci9BZENsaWNrQXR0cmlidXRpb24u
aAogICAgIGxvYWRlci9DYW52YXNBY3Rpdml0eVJlY29yZC5oCisgICAgbG9hZGVyL0NvbnRlbnRG
aWx0ZXJDbGllbnQuaAogICAgIGxvYWRlci9Db29raWVKYXIuaAogICAgIGxvYWRlci9Dcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2wuaAogICAgIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3Vs
dENhY2hlLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI1NDQzMSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTkxMCw2ICsx
OTEwLDcgQEAKIAkJNUNEOUY1NjYxQUEwRjczQzAwREE0NUZGIC8qIERGQUJ5dGVjb2RlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzM5MzA1RDFBQTBG
NkE5MDAyOUM4MTYgLyogREZBQnl0ZWNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1Q0Q5RjU2NzFBQTBGNzQyMDBEQTQ1RkYgLyogREZBQnl0
ZWNvZGVDb21waWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUMzOTMwNUYxQUEwRjZBOTAwMjlDODE2IC8qIERGQUJ5dGVjb2RlQ29tcGlsZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1Q0Q5RjU2
ODFBQTBGNzQ2MDBEQTQ1RkYgLyogREZBQnl0ZWNvZGVJbnRlcnByZXRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMzOTMwNjExQUEwRjZBOTAwMjlD
ODE2IC8qIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1Q0RDRERDNjIzRDgwQTFDMDBCQTM0QTEgLyogQ29u
dGVudEZpbHRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUNEQ0REQkYyM0Q3QjdCRTAwQkEzNEExIC8qIENvbnRlbnRGaWx0ZXJDbGllbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1Q0RE
ODM2NDFFNDMyNUEwMDA2MjFFOTIgLyogTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDREQ4MzNGMUU0
MzI1M0QwMDYyMUU5MiAvKiBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwICovOyB9Owog
CQk1Q0RGQTZDODFBQTRGMkRBMDBFQTg3NDYgLyogQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDREZBNkM3MUFB
NEYyREEwMEVBODc0NiAvKiBDb250ZW50RXh0ZW5zaW9uQWN0aW9ucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDRUVFNDM2MUY1RjhGMjEwMDE0
QTVGNSAvKiBSZWN0RWRnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVDOTdBMzM2MUY1RjdBNjUwMDEwNTIwNyAvKiBSZWN0RWRnZXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTA0Niw2ICs5MDQ3
LDcgQEAKIAkJNUNCQzhEQUIxQUFBMzAyMjAwRTFDODAzIC8qIE1lZGlhQWNjZXNzaWJpbGl0eVNv
ZnRMaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQWNjZXNzaWJp
bGl0eVNvZnRMaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQ0MyNzA2MjJE
NTNCNjgwMDk2NEZBMCAvKiBBdXRvZmlsbEVsZW1lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEF1dG9maWxsRWxlbWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUNDQzI3MDcyMkQ1M0I2OTAwOTY0RkEwIC8qIEF1dG9maWxsRWxlbWVudHMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV0b2ZpbGxFbGVtZW50cy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDRENEREJGMjNEN0I3QkUwMEJBMzRBMSAv
KiBDb250ZW50RmlsdGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvbnRlbnRGaWx0ZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNE
RDgzMzkxRTQzMjRCQjAwNjIxRTgzIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29h
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
REQ4MzM5MUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVJbmNvbWluZ1Zp
ZGVvU291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNERDgzM0ExRTQz
MjRCQjAwNjIxRTgzIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNv
Y29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTY4Niw2ICsyNTY4OCw3IEBA
CiAJCQkJRUZDQzZDOEQyMEZFOTE0MDAwQTIzMjFCIC8qIENhbnZhc0FjdGl2aXR5UmVjb3JkLmgg
Ki8sCiAJCQkJQTE0OTc4NkMxQUJBRjMzODAwQ0VGN0U0IC8qIENvbnRlbnRGaWx0ZXIuY3BwICov
LAogCQkJCUExNDk3ODZEMUFCQUYzMzgwMENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmggKi8sCisJ
CQkJNUNEQ0REQkYyM0Q3QjdCRTAwQkEzNEExIC8qIENvbnRlbnRGaWx0ZXJDbGllbnQuaCAqLywK
IAkJCQlFMTQyNEM5MTE2NEI1MkM4MDBGMzJENDAgLyogQ29va2llSmFyLmNwcCAqLywKIAkJCQlF
MTQyNEM5MjE2NEI1MkM4MDBGMzJENDAgLyogQ29va2llSmFyLmggKi8sCiAJCQkJRTFDNDE2MTYw
RjY1NjMxODAwOTJEMkZCIC8qIENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAgKi8sCkBAIC0y
OTM2MSw2ICsyOTM2NCw3IEBACiAJCQkJMjYyMzkxMzYxQTY0OENFRTAwNzI1MUEzIC8qIENvbnRl
bnRFeHRlbnNpb25zRGVidWdnaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUZCNjdEQzFBRTZC
ODJGMDBEMDZDNUEgLyogQ29udGVudEV4dGVuc2lvblN0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUExNDk3ODZGMUFCQUYzMzgwMENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1Q0RDRERDNjIzRDgwQTFDMDBCQTM0QTEgLyogQ29udGVudEZpbHRlckNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE0MDkwRkQxQUE1MUU0ODAwOTExOTFBIC8qIENv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM5QzJEQjUy
MjQxQTY3QjAwOTk2QjBCIC8qIENvbnRlbnRSdWxlTGlzdFJlc3VsdHMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTk3QzQ3MURDMTJGOTI1QkQwMDg2MzU0QiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3ku
aCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVy
LmNwcAkocmV2aXNpb24gMjU0NDMxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQogCiAjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2UuaCIKKyNpbmNs
dWRlICJDb250ZW50RmlsdGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFt
ZS5oIgpAQCAtNTQsMzYgKzU1LDM1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFZlY3RvcjxDb250
ZW50RmlsdGVyOjpUeXBlPiYgQ29udGVudEZpbHRlcjo6dHlwZXMoKQogewogICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxWZWN0b3I8Q29udGVudEZpbHRlcjo6VHlwZT4+IHR5cGVzIHsKLSAgICAg
ICAgVmVjdG9yPENvbnRlbnRGaWx0ZXI6OlR5cGU+IHsKKyAgICAgICAgVmVjdG9yPENvbnRlbnRG
aWx0ZXI6OlR5cGU+Ojpmcm9tKAogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFMpCiAgICAgICAg
ICAgICB0eXBlPFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyPigpLAogI2VuZGlmCiAjaWYg
SEFWRShORVRXT1JLX0VYVEVOU0lPTikKICAgICAgICAgICAgIHR5cGU8TmV0d29ya0V4dGVuc2lv
bkNvbnRlbnRGaWx0ZXI+KCkKICNlbmRpZgotICAgICAgICB9CisgICAgICAgICkKICAgICB9Owog
ICAgIHJldHVybiB0eXBlczsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IENv
bnRlbnRGaWx0ZXI6OmNyZWF0ZShEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIpCitzdGQ6
OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gQ29udGVudEZpbHRlcjo6Y3JlYXRlKENvbnRlbnRG
aWx0ZXJDbGllbnQmIGNsaWVudCkKIHsKICAgICBDb250YWluZXIgZmlsdGVyczsKICAgICBmb3Ig
KGF1dG8mIHR5cGUgOiB0eXBlcygpKSB7CiAgICAgICAgIGF1dG8gZmlsdGVyID0gdHlwZS5jcmVh
dGUoKTsKLSAgICAgICAgQVNTRVJUKGZpbHRlcik7CiAgICAgICAgIGZpbHRlcnMuYXBwZW5kKFdU
Rk1vdmUoZmlsdGVyKSk7CiAgICAgfQogCiAgICAgaWYgKGZpbHRlcnMuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBtYWtlVW5pcXVlPENvbnRlbnRGaWx0
ZXI+KFdURk1vdmUoZmlsdGVycyksIGRvY3VtZW50TG9hZGVyKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxDb250ZW50RmlsdGVyPihXVEZNb3ZlKGZpbHRlcnMpLCBjbGllbnQpOwogfQogCi1Db250
ZW50RmlsdGVyOjpDb250ZW50RmlsdGVyKENvbnRhaW5lciYmIGNvbnRlbnRGaWx0ZXJzLCBEb2N1
bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIpCi0gICAgOiBtX2NvbnRlbnRGaWx0ZXJzIHsgV1RG
TW92ZShjb250ZW50RmlsdGVycykgfQotICAgICwgbV9kb2N1bWVudExvYWRlciB7IGRvY3VtZW50
TG9hZGVyIH0KK0NvbnRlbnRGaWx0ZXI6OkNvbnRlbnRGaWx0ZXIoQ29udGFpbmVyJiYgY29udGVu
dEZpbHRlcnMsIENvbnRlbnRGaWx0ZXJDbGllbnQmIGNsaWVudCkKKyAgICA6IG1fY29udGVudEZp
bHRlcnMoV1RGTW92ZShjb250ZW50RmlsdGVycykpCisgICAgLCBtX2NsaWVudChjbGllbnQpCiB7
CiAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDcmVhdGluZyBDb250ZW50RmlsdGVyIHdpdGgg
JXp1IHBsYXRmb3JtIGNvbnRlbnQgZmlsdGVyKHMpLlxuIiwgbV9jb250ZW50RmlsdGVycy5zaXpl
KCkpOwogICAgIEFTU0VSVCghbV9jb250ZW50RmlsdGVycy5pc0VtcHR5KCkpOwpAQCAtOTYsNyAr
OTYsNyBAQCBDb250ZW50RmlsdGVyOjp+Q29udGVudEZpbHRlcigpCiAKIGJvb2wgQ29udGVudEZp
bHRlcjo6Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCiB7Ci0gICAgUmVm
PERvY3VtZW50TG9hZGVyPiBwcm90ZWN0ZWREb2N1bWVudExvYWRlciB7IG1fZG9jdW1lbnRMb2Fk
ZXIgfTsKKyAgICBSZWY8Q29udGVudEZpbHRlckNsaWVudD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9j
bGllbnQgfTsKIAogICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciByZWNl
aXZlZCByZXF1ZXN0IGZvciA8JXM+IHdpdGggcmVkaXJlY3QgcmVzcG9uc2UgZnJvbSA8JXM+Llxu
IiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSwgcmVkaXJlY3RSZXNwb25z
ZS51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAjaWYgIUxPR19ESVNBQkxFRApAQCAt
MTM1LDcgKzEzNSw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6c3RvcEZpbHRlcmluZ01haW5SZXMK
IAogYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBSZWY8RG9jdW1lbnRMb2FkZXI+
IHByb3RlY3RlZERvY3VtZW50TG9hZGVyIHsgbV9kb2N1bWVudExvYWRlciB9OworICAgIFJlZjxD
b250ZW50RmlsdGVyQ2xpZW50PiBwcm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwogCiAgICAg
aWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRlcmluZykgewogICAgICAgICBMT0coQ29udGVudEZp
bHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgcmVjZWl2ZWQgcmVzcG9uc2UgZnJvbSA8JXM+LlxuIiwg
cmVzcG9uc2UudXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwpAQCAtMTQ5LDcgKzE0OSw3
IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclJlc3BvbnMKIAogYm9vbCBDb250
ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBsZW5ndGgpCiB7Ci0gICAgUmVmPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0ZWREb2N1bWVudExv
YWRlciB7IG1fZG9jdW1lbnRMb2FkZXIgfTsKKyAgICBSZWY8Q29udGVudEZpbHRlckNsaWVudD4g
cHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQgfTsKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRl
OjpGaWx0ZXJpbmcpIHsKICAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50Rmls
dGVyIHJlY2VpdmVkICVkIGJ5dGVzIG9mIGRhdGEgZnJvbSA8JXM+LlxuIiwgbGVuZ3RoLCBtX21h
aW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwpAQCAtMTY4LDcgKzE2
OCw3IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWMKIGJvb2wgQ29u
dGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9t
YWluUmVzb3VyY2UpOwotICAgIFJlZjxEb2N1bWVudExvYWRlcj4gcHJvdGVjdGVkRG9jdW1lbnRM
b2FkZXIgeyBtX2RvY3VtZW50TG9hZGVyIH07CisgICAgUmVmPENvbnRlbnRGaWx0ZXJDbGllbnQ+
IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50IH07CiAKICAgICBpZiAobV9tYWluUmVzb3VyY2Ut
PmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMDEsMTEgKzIwMSwx
MSBAQCBpbmxpbmUgdm9pZCBDb250ZW50RmlsdGVyOjpmb3JFYWNoQ29udGVuCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGZ1bmN0aW9uKCpjb250ZW50RmlsdGVy
KTsKKyAgICAgICAgZnVuY3Rpb24oY29udGVudEZpbHRlci5nZXQoKSk7CiAKICAgICAgICAgaWYg
KGNvbnRlbnRGaWx0ZXItPmRpZEJsb2NrRGF0YSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoIW1f
YmxvY2tpbmdDb250ZW50RmlsdGVyKTsKLSAgICAgICAgICAgIG1fYmxvY2tpbmdDb250ZW50Rmls
dGVyID0gY29udGVudEZpbHRlci5nZXQoKTsKKyAgICAgICAgICAgIG1fYmxvY2tpbmdDb250ZW50
RmlsdGVyID0gJmNvbnRlbnRGaWx0ZXI7CiAgICAgICAgICAgICBkaWREZWNpZGUoU3RhdGU6OkJs
b2NrZWQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnRG
aWx0ZXItPm5lZWRzTW9yZURhdGEoKSkKQEAgLTIyNiwyMCArMjI2LDcgQEAgdm9pZCBDb250ZW50
RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUgc3RhdAogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpC
bG9ja2VkKQogICAgICAgICByZXR1cm47CiAKLSAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXIgdW5ibG9ja0hhbmRsZXIgeyBtX2Jsb2NraW5nQ29udGVudEZpbHRlci0+dW5ibG9ja0hhbmRs
ZXIoKSB9OwotICAgIHVuYmxvY2tIYW5kbGVyLnNldFVucmVhY2hhYmxlVVJMKG1fZG9jdW1lbnRM
b2FkZXIuZG9jdW1lbnRVUkwoKSk7Ci0gICAgYXV0byBmcmFtZSB7IG1fZG9jdW1lbnRMb2FkZXIu
ZnJhbWUoKSB9OwotICAgIFN0cmluZyB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCB7IG1fYmxv
Y2tpbmdDb250ZW50RmlsdGVyLT51bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCgpIH07Ci0gICAg
aWYgKCF1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUpIHsKLSAg
ICAgICAgdW5ibG9ja0hhbmRsZXIud3JhcFdpdGhEZWNpc2lvbkhhbmRsZXIoW3NjcmlwdENvbnRy
b2xsZXIgPSBtYWtlV2Vha1B0cihmcmFtZS0+c2NyaXB0KCkpLCBzY3JpcHQgPSB1bmJsb2NrUmVx
dWVzdERlbmllZFNjcmlwdC5pc29sYXRlZENvcHkoKV0oYm9vbCB1bmJsb2NrZWQpIHsKLSAgICAg
ICAgICAgIGlmICghdW5ibG9ja2VkICYmIHNjcmlwdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAg
ICAgc2NyaXB0Q29udHJvbGxlci0+ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKHNjcmlw
dCk7Ci0gICAgICAgIH0pOwotICAgIH0KLSAgICBtX2RvY3VtZW50TG9hZGVyLmZyYW1lTG9hZGVy
KCktPmNsaWVudCgpLmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV1RGTW92ZSh1bmJsb2NrSGFu
ZGxlcikpOwotCi0gICAgbV9ibG9ja2VkRXJyb3IgPSBtX2RvY3VtZW50TG9hZGVyLmZyYW1lTG9h
ZGVyKCktPmJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihtX2RvY3VtZW50TG9hZGVyLnJlcXVl
c3QoKSk7Ci0gICAgbV9kb2N1bWVudExvYWRlci5jYW5jZWxNYWluUmVzb3VyY2VMb2FkKG1fYmxv
Y2tlZEVycm9yKTsKKyAgICBtX2Jsb2NrZWRFcnJvciA9IG1fY2xpZW50LmRpZEJsb2NrKG1fYmxv
Y2tpbmdDb250ZW50RmlsdGVyLT51bmJsb2NrSGFuZGxlcigpLCBtX2Jsb2NraW5nQ29udGVudEZp
bHRlci0+dW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQoKSk7CiB9CiAKIHZvaWQgQ29udGVudEZp
bHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC0y
NDcsNyArMjM0LDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKAog
ICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKICAgICBBU1NFUlQocmVzb3Vy
Y2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRh
dGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNlLnJlc291cmNlQnVm
ZmVyKCkpCi0gICAgICAgIG1fZG9jdW1lbnRMb2FkZXIuZGF0YVJlY2VpdmVkKHJlc291cmNlLCBy
ZXNvdXJjZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAg
bV9jbGllbnQuZGF0YVJlY2VpdmVkKHJlc291cmNlQnVmZmVyLT5kYXRhKCksIHJlc291cmNlQnVm
ZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCkBA
IC0yOTQsNyArMjgxLDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpoYW5kbGVQcm92aXNpb25hbExv
YQogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyBVUkwoKSwgInRleHQvaHRtbCJfcywg
c3RhdGljX2Nhc3Q8bG9uZyBsb25nPihyZXBsYWNlbWVudERhdGEtPnNpemUoKSksICJVVEYtOCJf
cyB9OwogICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhIHsgV1RGTW92ZShyZXBsYWNl
bWVudERhdGEpLCBlcnJvci5mYWlsaW5nVVJMKCksIHJlc3BvbnNlLCBTdWJzdGl0dXRlRGF0YTo6
U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4gfTsKICAgICBTZXRGb3JTY29wZTxib29s
PiBsb2FkaW5nQmxvY2tlZFBhZ2UgeyBtX2lzTG9hZGluZ0Jsb2NrZWRQYWdlLCB0cnVlIH07Ci0g
ICAgbV9kb2N1bWVudExvYWRlci5mcmFtZUxvYWRlcigpLT5sb2FkKEZyYW1lTG9hZFJlcXVlc3Qo
Km1fZG9jdW1lbnRMb2FkZXIuZnJhbWUoKSwgYmxvY2tlZFBhZ2VVUkwoKSwgU2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIHN1YnN0aXR1dGVEYXRhKSk7CisgICAg
bV9jbGllbnQuaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShibG9ja2VkUGFnZVVSTCgpLCBz
dWJzdGl0dXRlRGF0YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAkocmV2aXNpb24gMjU0NDMxKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTAg
KzMyLDEyIEBACiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgPGZ1bmN0aW9u
YWw+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7CitjbGFz
cyBDb250ZW50RmlsdGVyQ2xpZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBSZXNv
dXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwpAQCAtNDgsNyArNTAsNyBAQCBj
bGFzcyBDb250ZW50RmlsdGVyIHsKIHB1YmxpYzoKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
c3RhdGljIHZvaWQgYWRkVHlwZSgpIHsgdHlwZXMoKS5hcHBlbmQodHlwZTxUPigpKTsgfQogCi0g
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBjcmVhdGUoRG9jdW1lbnRM
b2FkZXImKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IGNyZWF0
ZShDb250ZW50RmlsdGVyQ2xpZW50Jik7CiAgICAgfkNvbnRlbnRGaWx0ZXIoKTsKIAogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiB1cmxTY2hlbWUoKSB7IHJldHVybiAieC1hcHBsZS1jb250ZW50LWZp
bHRlciI7IH0KQEAgLTY5LDIzICs3MSwyMyBAQCBwcml2YXRlOgogICAgIHVzaW5nIFN0YXRlID0g
UGxhdGZvcm1Db250ZW50RmlsdGVyOjpTdGF0ZTsKIAogICAgIHN0cnVjdCBUeXBlIHsKLSAgICAg
ICAgY29uc3Qgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1Db250ZW50Rmls
dGVyPigpPiBjcmVhdGU7CisgICAgICAgIEZ1bmN0aW9uPFVuaXF1ZVJlZjxQbGF0Zm9ybUNvbnRl
bnRGaWx0ZXI+KCk+IGNyZWF0ZTsKICAgICB9OwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBz
dGF0aWMgVHlwZSB0eXBlKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFZlY3RvcjxUeXBl
PiYgdHlwZXMoKTsKIAotICAgIHVzaW5nIENvbnRhaW5lciA9IFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8UGxhdGZvcm1Db250ZW50RmlsdGVyPj47Ci0gICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxD
b250ZW50RmlsdGVyPiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRGaWx0ZXI+KENvbnRhaW5lciYm
LCBEb2N1bWVudExvYWRlciYpOwotICAgIENvbnRlbnRGaWx0ZXIoQ29udGFpbmVyJiYsIERvY3Vt
ZW50TG9hZGVyJik7CisgICAgdXNpbmcgQ29udGFpbmVyID0gVmVjdG9yPFVuaXF1ZVJlZjxQbGF0
Zm9ybUNvbnRlbnRGaWx0ZXI+PjsKKyAgICBmcmllbmQgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRG
aWx0ZXI+IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudEZpbHRlcj4oQ29udGFpbmVyJiYsIENvbnRl
bnRGaWx0ZXJDbGllbnQmKTsKKyAgICBDb250ZW50RmlsdGVyKENvbnRhaW5lciYmLCBDb250ZW50
RmlsdGVyQ2xpZW50Jik7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+IHZvaWQg
Zm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2NrZWQoRnVuY3Rpb24mJik7CiAgICAgdm9pZCBk
aWREZWNpZGUoU3RhdGUpOwogICAgIHZvaWQgZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNv
dXJjZSYpOwogCi0gICAgY29uc3QgQ29udGFpbmVyIG1fY29udGVudEZpbHRlcnM7Ci0gICAgRG9j
dW1lbnRMb2FkZXImIG1fZG9jdW1lbnRMb2FkZXI7CisgICAgQ29udGFpbmVyIG1fY29udGVudEZp
bHRlcnM7CisgICAgQ29udGVudEZpbHRlckNsaWVudCYgbV9jbGllbnQ7CiAgICAgQ2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fbWFpblJlc291cmNlOwotICAgIFBsYXRm
b3JtQ29udGVudEZpbHRlciogbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXIgeyBudWxscHRyIH07Cisg
ICAgY29uc3QgUGxhdGZvcm1Db250ZW50RmlsdGVyKiBtX2Jsb2NraW5nQ29udGVudEZpbHRlciB7
IG51bGxwdHIgfTsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlN0b3BwZWQgfTsKICAgICBS
ZXNvdXJjZUVycm9yIG1fYmxvY2tlZEVycm9yOwogICAgIGJvb2wgbV9pc0xvYWRpbmdCbG9ja2Vk
UGFnZSB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRl
ckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50Rmls
dGVyQ2xpZW50LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRl
bnRGaWx0ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
cjsKK2NsYXNzIFJlc291cmNlRXJyb3I7CitjbGFzcyBTdWJzdGl0dXRlRGF0YTsKKworY2xhc3Mg
Q29udGVudEZpbHRlckNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q29udGVudEZpbHRl
ckNsaWVudCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZWYoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGRlcmVmKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNl
aXZlZChjb25zdCBjaGFyKiwgaW50KSA9IDA7CisgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGRp
ZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVl
c3REZW5pZWRTY3JpcHQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZShjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYpID0g
MDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklORykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcAkocmV2aXNpb24gMjU0NTc2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiw4IEBACiAKICNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCiAjaW5jbHVkZSAiQ29udGVudEZpbHRlci5oIgorI2luY2x1
ZGUgIkZyYW1lTG9hZFJlcXVlc3QuaCIKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAj
ZW5kaWYKIAogI2lmIFVTRShRVUlDS19MT09LKQpAQCAtMjE4NSw0ICsyMTg3LDI2IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmVucXVldWVTZWN1cml0eVBvbGkKICAgICBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5lbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChXVEZNb3ZlKGV2ZW50SW5p
dCkpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQordm9pZCBEb2N1bWVudExv
YWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBVUkwmIGJsb2NrZWRQYWdl
VVJMLCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCit7CisgICAgZnJhbWVMb2FkZXIo
KS0+bG9hZChGcmFtZUxvYWRSZXF1ZXN0KCpmcmFtZSgpLCBibG9ja2VkUGFnZVVSTCwgU2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIHN1YnN0aXR1dGVEYXRhKSk7
Cit9CisKK1Jlc291cmNlRXJyb3IgRG9jdW1lbnRMb2FkZXI6OmRpZEJsb2NrKENvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgV1RGOjpTdHJpbmcmJiB1bmJsb2NrUmVx
dWVzdERlbmllZFNjcmlwdCkKK3sKKyAgICB1bmJsb2NrSGFuZGxlci5zZXRVbnJlYWNoYWJsZVVS
TChkb2N1bWVudFVSTCgpKTsKKyAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0Lmlz
RW1wdHkoKSAmJiBmcmFtZSgpKSB7CisgICAgICAgIHVuYmxvY2tIYW5kbGVyLndyYXBXaXRoRGVj
aXNpb25IYW5kbGVyKFtzY3JpcHRDb250cm9sbGVyID0gbWFrZVdlYWtQdHIoZnJhbWUoKS0+c2Ny
aXB0KCkpLCBzY3JpcHQgPSB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc29sYXRlZENvcHko
KV0oYm9vbCB1bmJsb2NrZWQpIHsKKyAgICAgICAgICAgIGlmICghdW5ibG9ja2VkICYmIHNjcmlw
dENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgc2NyaXB0Q29udHJvbGxlci0+ZXhlY3V0ZVNj
cmlwdElnbm9yaW5nRXhjZXB0aW9uKHNjcmlwdCk7CisgICAgICAgIH0pOworICAgIH0KKyAgICBm
cmFtZUxvYWRlcigpLT5jbGllbnQoKS5jb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdURk1vdmUo
dW5ibG9ja0hhbmRsZXIpKTsKKyAgICBhdXRvIGJsb2NrZWRFcnJvciA9IGZyYW1lTG9hZGVyKCkt
PmJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihyZXF1ZXN0KCkpOworICAgIGNhbmNlbE1haW5S
ZXNvdXJjZUxvYWQoYmxvY2tlZEVycm9yKTsKKyAgICByZXR1cm4gYmxvY2tlZEVycm9yOworfQor
I2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlzaW9u
IDI1NDQzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJDYWNoZWRSYXdSZXNvdXJj
ZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAi
Q29udGVudEZpbHRlckNsaWVudC5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeUNs
aWVudC5oIgogI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3Rh
dGUuaCIKICNpbmNsdWRlICJEb2N1bWVudElkZW50aWZpZXIuaCIKQEAgLTE0Miw2ICsxNDMsOSBA
QCBjbGFzcyBEb2N1bWVudExvYWRlcgogICAgIDogcHVibGljIFJlZkNvdW50ZWQ8RG9jdW1lbnRM
b2FkZXI+CiAgICAgLCBwdWJsaWMgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyCiAgICAgLCBwdWJs
aWMgQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQorICAgICwgcHVibGljIENvbnRlbnRGaWx0ZXJDbGllbnQKKyNlbmRpZgogICAgICwgcHJp
dmF0ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RURfV0lUSF9IRUFQX0lERU5USUZJRVIoRG9jdW1lbnRMb2FkZXIpOwogICAgIGZyaWVuZCBjbGFz
cyBDb250ZW50RmlsdGVyOwpAQCAtNDAwLDYgKzQwNCwxMiBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBzZXRDb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklORykKKyAgICAvLyBDb250ZW50RmlsdGVyQ2xpZW50CisgICAgdm9pZCByZWYo
KSBjb25zdCBmaW5hbCB7IFJlZkNvdW50ZWQ8RG9jdW1lbnRMb2FkZXI+OjpyZWYoKTsgfQorICAg
IHZvaWQgZGVyZWYoKSBjb25zdCBmaW5hbCB7IFJlZkNvdW50ZWQ8RG9jdW1lbnRMb2FkZXI+Ojpy
ZWYoKTsgfQorI2VuZGlmCisgICAgICAgIAogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JU
IERvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVE
YXRhJik7CiAKQEAgLTQ0Myw4ICs0NTMsMTYgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHByZXZpZXdSZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2b2lkIHJlc3BvbnNlUmVj
ZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorICAgIC8vIENvbnRlbnRGaWx0ZXJD
bGllbnQKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZChjb25zdCBjaGFyKiwg
aW50KSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yIGRpZEJsb2NrKENv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRT
Y3JpcHQpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZShjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYpIGZp
bmFsOworI2Vsc2UKICAgICB2b2lkIGRhdGFSZWNlaXZlZChjb25zdCBjaGFyKiBkYXRhLCBpbnQg
bGVuZ3RoKTsKKyNlbmRpZgorCisgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgYm9vbCBt
YXliZUxvYWRFbXB0eSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9O
ZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgJKHJldmlz
aW9uIDI1NDQzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlIDx3dGYvQ29tcGlsZXIuaD4KICNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBl
bnVtIE5FRmlsdGVyU291cmNlU3RhdHVzIDogTlNJbnRlZ2VyOwogCkBAIC0zOSwxMCArNDAsMTAg
QEAgT0JKQ19DTEFTUyBOU0RhdGE7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE5ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyIGZpbmFsIDogcHVibGljIFBsYXRmb3JtQ29udGVudEZp
bHRlciB7Ci0gICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrRXh0ZW5zaW9uQ29udGVu
dEZpbHRlcj4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcj4o
KTsKKyAgICBmcmllbmQgVW5pcXVlUmVmPE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyPiBX
VEY6Om1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPE5ldHdvcmtFeHRlbnNpb25D
b250ZW50RmlsdGVyPigpOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxO
ZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcj4gY3JlYXRlKCk7CisgICAgc3RhdGljIFVuaXF1
ZVJlZjxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcj4gY3JlYXRlKCk7CiAKICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCShyZXZp
c2lvbiAyNTQ0MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0
ZW5zaW9uQ29udGVudEZpbHRlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNzEsOSArNzEsOSBAQCBi
b29sIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjplbmFiCiAgICAgcmV0dXJuIGVuYWJs
ZWQ7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcj4g
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgpCitVbmlxdWVSZWY8TmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI+IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpj
cmVhdGUoKQogewotICAgIHJldHVybiBtYWtlVW5pcXVlPE5ldHdvcmtFeHRlbnNpb25Db250ZW50
RmlsdGVyPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlUmVmPE5ldHdvcmtFeHRlbnNpb25Db250
ZW50RmlsdGVyPigpOwogfQogCiB2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpp
bml0aWFsaXplKGNvbnN0IFVSTCogdXJsKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5o
CShyZXZpc2lvbiAyNTQ0MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJl
bnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3
IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZW50RmlsdGVyLmgiCiAjaW5jbHVkZSA8d3RmL0Nv
bXBpbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVSZWYuaD4KIAogT0JKQ19DTEFTUyBOU0RhdGE7CiBPQkpDX0NMQVNTIFdlYkZpbHRlckV2YWx1
YXRvcjsKQEAgLTM1LDEwICszNiwxMCBAQCBPQkpDX0NMQVNTIFdlYkZpbHRlckV2YWx1YXRvcjsK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0
ZXIgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1Db250ZW50RmlsdGVyIHsKLSAgICBmcmllbmQgc3Rk
Ojp1bmlxdWVfcHRyPFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyPiBzdGQ6Om1ha2VfdW5p
cXVlPFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyPigpOworICAgIGZyaWVuZCBVbmlxdWVS
ZWY8UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI+IFdURjo6bWFrZVVuaXF1ZVJlZldpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s8UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI+KCk7CiAKIHB1
YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBhcmVudGFsQ29udHJvbHNDb250ZW50
RmlsdGVyPiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgVW5pcXVlUmVmPFBhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyPiBjcmVhdGUoKTsKIAogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IH0KICAgICB2
b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRl
bnRGaWx0ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0JKHJldmlzaW9uIDI1NDQzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVy
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw5ICs2Nyw5IEBAIGJvb2wgUGFyZW50YWxDb250cm9s
c0NvbnRlbnRGaWx0ZXI6OmVuYWIKICAgICByZXR1cm4gZW5hYmxlZDsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyPiBQYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlcjo6Y3JlYXRlKCkKK1VuaXF1ZVJlZjxQYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlcj4gUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0
dXJuIG1ha2VVbmlxdWU8UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI+KCk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWVSZWY8UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI+KCk7CiB9CiAK
IHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5IYW5kbGVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRG
aWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRl
bnRGaWx0ZXIuY3BwCShyZXZpc2lvbiAyNTQ0MzEpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDb250ZW50RmlsdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsOSArNjIsOSBAQCBi
b29sIE1vY2tDb250ZW50RmlsdGVyOjplbmFibGVkKCkKICAgICByZXR1cm4gZW5hYmxlZDsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPE1vY2tDb250ZW50RmlsdGVyPiBNb2NrQ29udGVudEZpbHRlcjo6
Y3JlYXRlKCkKK1VuaXF1ZVJlZjxNb2NrQ29udGVudEZpbHRlcj4gTW9ja0NvbnRlbnRGaWx0ZXI6
OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8TW9ja0NvbnRlbnRGaWx0ZXI+KCk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8TW9ja0NvbnRlbnRGaWx0ZXI+KCk7CiB9CiAKIHZv
aWQgTW9ja0NvbnRlbnRGaWx0ZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oCShyZXZpc2lvbiAyNTQ0
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDE1ICsyNywxNiBAQAogCiAjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGVudEZpbHRlci5oIgorI2luY2x1
ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNb2Nr
Q29udGVudEZpbHRlciBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIgewotICAg
IGZyaWVuZCBzdGQ6OnVuaXF1ZV9wdHI8TW9ja0NvbnRlbnRGaWx0ZXI+IHN0ZDo6bWFrZV91bmlx
dWU8TW9ja0NvbnRlbnRGaWx0ZXI+KCk7CisgICAgZnJpZW5kIFVuaXF1ZVJlZjxNb2NrQ29udGVu
dEZpbHRlcj4gV1RGOjptYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxNb2NrQ29u
dGVudEZpbHRlcj4oKTsKIAogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGVuc3VyZUluc3RhbGxl
ZCgpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TW9ja0NvbnRlbnRGaWx0ZXI+IGNyZWF0
ZSgpOworICAgIHN0YXRpYyBVbmlxdWVSZWY8TW9ja0NvbnRlbnRGaWx0ZXI+IGNyZWF0ZSgpOwog
CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388397</attachid>
            <date>2020-01-21 23:17:02 -0800</date>
            <delta_ts>2020-01-22 20:48:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206564-20200121231701.patch</filename>
            <type>text/plain</type>
            <size>27471</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDg5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDIwLTAxLTIxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29udGVudEZp
bHRlciBzaG91bGQgYWNjZXNzIERvY3VtZW50TG9hZGVyIHRocm91Z2ggYW4gaW50ZXJmYWNlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1NjQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHdpbGwg
bWFrZSBpdCBlYXNpZXIgdG8gbW92ZSwgbGlrZSB0byB0aGUgTmV0d29ya1Byb2Nlc3Mgd2hlcmUg
dGhlcmUgYXJlIG5vIERvY3VtZW50TG9hZGVycy4KKyAgICAgICAgQWxzbyB1c2UgV1RGOjpGdW5j
dGlvbiBpbnN0ZWFkIG9mIHN0ZDo6ZnVuY3Rpb24gYW5kIFVuaXF1ZVJlZiBpbnN0ZWFkIG9mIHN0
ZDo6dW5pcXVlX3B0ci4KKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9D
b250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OnR5cGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpDb250ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5
RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Zm9yRWFjaENvbnRl
bnRGaWx0ZXJVbnRpbEJsb2NrZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6
ZGlkRGVjaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNv
dXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6aGFuZGxlUHJvdmlz
aW9uYWxMb2FkRmFpbHVyZSk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRl
ci9Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyQ2xpZW50Ojp+Q29udGVu
dEZpbHRlckNsaWVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkaWRCbG9jayk6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6Y3JlYXRlKToKKwogMjAyMC0wMS0y
MSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBB
IHBhcnRpYWxseSBzZWxlY3RlZCBSVEwgdGV4dCBpcyBwbGFjZWQgYXQgYSB3cm9uZyB2ZXJ0aWNh
bCBwb3NpdGlvbiBpZiBpdCBoYXMgYSB2ZXJ0aWNhbCBpbml0aWFsIGFkdmFuY2UKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjU0NDMxKQorKysgU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtNjc1LDYgKzY3NSw3IEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKIAogICAgIGxvYWRlci9BZENsaWNrQXR0cmlidXRpb24u
aAogICAgIGxvYWRlci9DYW52YXNBY3Rpdml0eVJlY29yZC5oCisgICAgbG9hZGVyL0NvbnRlbnRG
aWx0ZXJDbGllbnQuaAogICAgIGxvYWRlci9Db29raWVKYXIuaAogICAgIGxvYWRlci9Dcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2wuaAogICAgIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3Vs
dENhY2hlLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI1NDQzMSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTkxMCw2ICsx
OTEwLDcgQEAKIAkJNUNEOUY1NjYxQUEwRjczQzAwREE0NUZGIC8qIERGQUJ5dGVjb2RlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzM5MzA1RDFBQTBG
NkE5MDAyOUM4MTYgLyogREZBQnl0ZWNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1Q0Q5RjU2NzFBQTBGNzQyMDBEQTQ1RkYgLyogREZBQnl0
ZWNvZGVDb21waWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUMzOTMwNUYxQUEwRjZBOTAwMjlDODE2IC8qIERGQUJ5dGVjb2RlQ29tcGlsZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1Q0Q5RjU2
ODFBQTBGNzQ2MDBEQTQ1RkYgLyogREZBQnl0ZWNvZGVJbnRlcnByZXRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMzOTMwNjExQUEwRjZBOTAwMjlD
ODE2IC8qIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1Q0RDRERDNjIzRDgwQTFDMDBCQTM0QTEgLyogQ29u
dGVudEZpbHRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUNEQ0REQkYyM0Q3QjdCRTAwQkEzNEExIC8qIENvbnRlbnRGaWx0ZXJDbGllbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1Q0RE
ODM2NDFFNDMyNUEwMDA2MjFFOTIgLyogTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDREQ4MzNGMUU0
MzI1M0QwMDYyMUU5MiAvKiBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwICovOyB9Owog
CQk1Q0RGQTZDODFBQTRGMkRBMDBFQTg3NDYgLyogQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDREZBNkM3MUFB
NEYyREEwMEVBODc0NiAvKiBDb250ZW50RXh0ZW5zaW9uQWN0aW9ucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDRUVFNDM2MUY1RjhGMjEwMDE0
QTVGNSAvKiBSZWN0RWRnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVDOTdBMzM2MUY1RjdBNjUwMDEwNTIwNyAvKiBSZWN0RWRnZXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTA0Niw2ICs5MDQ3
LDcgQEAKIAkJNUNCQzhEQUIxQUFBMzAyMjAwRTFDODAzIC8qIE1lZGlhQWNjZXNzaWJpbGl0eVNv
ZnRMaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQWNjZXNzaWJp
bGl0eVNvZnRMaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQ0MyNzA2MjJE
NTNCNjgwMDk2NEZBMCAvKiBBdXRvZmlsbEVsZW1lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEF1dG9maWxsRWxlbWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUNDQzI3MDcyMkQ1M0I2OTAwOTY0RkEwIC8qIEF1dG9maWxsRWxlbWVudHMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV0b2ZpbGxFbGVtZW50cy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDRENEREJGMjNEN0I3QkUwMEJBMzRBMSAv
KiBDb250ZW50RmlsdGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvbnRlbnRGaWx0ZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNE
RDgzMzkxRTQzMjRCQjAwNjIxRTgzIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29h
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
REQ4MzM5MUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVJbmNvbWluZ1Zp
ZGVvU291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNERDgzM0ExRTQz
MjRCQjAwNjIxRTgzIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNv
Y29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTY4Niw2ICsyNTY4OCw3IEBA
CiAJCQkJRUZDQzZDOEQyMEZFOTE0MDAwQTIzMjFCIC8qIENhbnZhc0FjdGl2aXR5UmVjb3JkLmgg
Ki8sCiAJCQkJQTE0OTc4NkMxQUJBRjMzODAwQ0VGN0U0IC8qIENvbnRlbnRGaWx0ZXIuY3BwICov
LAogCQkJCUExNDk3ODZEMUFCQUYzMzgwMENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmggKi8sCisJ
CQkJNUNEQ0REQkYyM0Q3QjdCRTAwQkEzNEExIC8qIENvbnRlbnRGaWx0ZXJDbGllbnQuaCAqLywK
IAkJCQlFMTQyNEM5MTE2NEI1MkM4MDBGMzJENDAgLyogQ29va2llSmFyLmNwcCAqLywKIAkJCQlF
MTQyNEM5MjE2NEI1MkM4MDBGMzJENDAgLyogQ29va2llSmFyLmggKi8sCiAJCQkJRTFDNDE2MTYw
RjY1NjMxODAwOTJEMkZCIC8qIENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAgKi8sCkBAIC0y
OTM2MSw2ICsyOTM2NCw3IEBACiAJCQkJMjYyMzkxMzYxQTY0OENFRTAwNzI1MUEzIC8qIENvbnRl
bnRFeHRlbnNpb25zRGVidWdnaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUZCNjdEQzFBRTZC
ODJGMDBEMDZDNUEgLyogQ29udGVudEV4dGVuc2lvblN0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUExNDk3ODZGMUFCQUYzMzgwMENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1Q0RDRERDNjIzRDgwQTFDMDBCQTM0QTEgLyogQ29udGVudEZpbHRlckNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE0MDkwRkQxQUE1MUU0ODAwOTExOTFBIC8qIENv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM5QzJEQjUy
MjQxQTY3QjAwOTk2QjBCIC8qIENvbnRlbnRSdWxlTGlzdFJlc3VsdHMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTk3QzQ3MURDMTJGOTI1QkQwMDg2MzU0QiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3ku
aCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVy
LmNwcAkocmV2aXNpb24gMjU0NDMxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQogCiAjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2UuaCIKKyNpbmNs
dWRlICJDb250ZW50RmlsdGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFt
ZS5oIgpAQCAtNTQsMzYgKzU1LDM1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFZlY3RvcjxDb250
ZW50RmlsdGVyOjpUeXBlPiYgQ29udGVudEZpbHRlcjo6dHlwZXMoKQogewogICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxWZWN0b3I8Q29udGVudEZpbHRlcjo6VHlwZT4+IHR5cGVzIHsKLSAgICAg
ICAgVmVjdG9yPENvbnRlbnRGaWx0ZXI6OlR5cGU+IHsKKyAgICAgICAgVmVjdG9yPENvbnRlbnRG
aWx0ZXI6OlR5cGU+Ojpmcm9tKAogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFMpCiAgICAgICAg
ICAgICB0eXBlPFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyPigpLAogI2VuZGlmCiAjaWYg
SEFWRShORVRXT1JLX0VYVEVOU0lPTikKICAgICAgICAgICAgIHR5cGU8TmV0d29ya0V4dGVuc2lv
bkNvbnRlbnRGaWx0ZXI+KCkKICNlbmRpZgotICAgICAgICB9CisgICAgICAgICkKICAgICB9Owog
ICAgIHJldHVybiB0eXBlczsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IENv
bnRlbnRGaWx0ZXI6OmNyZWF0ZShEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIpCitzdGQ6
OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gQ29udGVudEZpbHRlcjo6Y3JlYXRlKENvbnRlbnRG
aWx0ZXJDbGllbnQmIGNsaWVudCkKIHsKICAgICBDb250YWluZXIgZmlsdGVyczsKICAgICBmb3Ig
KGF1dG8mIHR5cGUgOiB0eXBlcygpKSB7CiAgICAgICAgIGF1dG8gZmlsdGVyID0gdHlwZS5jcmVh
dGUoKTsKLSAgICAgICAgQVNTRVJUKGZpbHRlcik7CiAgICAgICAgIGZpbHRlcnMuYXBwZW5kKFdU
Rk1vdmUoZmlsdGVyKSk7CiAgICAgfQogCiAgICAgaWYgKGZpbHRlcnMuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBtYWtlVW5pcXVlPENvbnRlbnRGaWx0
ZXI+KFdURk1vdmUoZmlsdGVycyksIGRvY3VtZW50TG9hZGVyKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxDb250ZW50RmlsdGVyPihXVEZNb3ZlKGZpbHRlcnMpLCBjbGllbnQpOwogfQogCi1Db250
ZW50RmlsdGVyOjpDb250ZW50RmlsdGVyKENvbnRhaW5lciYmIGNvbnRlbnRGaWx0ZXJzLCBEb2N1
bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIpCi0gICAgOiBtX2NvbnRlbnRGaWx0ZXJzIHsgV1RG
TW92ZShjb250ZW50RmlsdGVycykgfQotICAgICwgbV9kb2N1bWVudExvYWRlciB7IGRvY3VtZW50
TG9hZGVyIH0KK0NvbnRlbnRGaWx0ZXI6OkNvbnRlbnRGaWx0ZXIoQ29udGFpbmVyJiYgY29udGVu
dEZpbHRlcnMsIENvbnRlbnRGaWx0ZXJDbGllbnQmIGNsaWVudCkKKyAgICA6IG1fY29udGVudEZp
bHRlcnMoV1RGTW92ZShjb250ZW50RmlsdGVycykpCisgICAgLCBtX2NsaWVudChjbGllbnQpCiB7
CiAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDcmVhdGluZyBDb250ZW50RmlsdGVyIHdpdGgg
JXp1IHBsYXRmb3JtIGNvbnRlbnQgZmlsdGVyKHMpLlxuIiwgbV9jb250ZW50RmlsdGVycy5zaXpl
KCkpOwogICAgIEFTU0VSVCghbV9jb250ZW50RmlsdGVycy5pc0VtcHR5KCkpOwpAQCAtOTYsNyAr
OTYsNyBAQCBDb250ZW50RmlsdGVyOjp+Q29udGVudEZpbHRlcigpCiAKIGJvb2wgQ29udGVudEZp
bHRlcjo6Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCiB7Ci0gICAgUmVm
PERvY3VtZW50TG9hZGVyPiBwcm90ZWN0ZWREb2N1bWVudExvYWRlciB7IG1fZG9jdW1lbnRMb2Fk
ZXIgfTsKKyAgICBSZWY8Q29udGVudEZpbHRlckNsaWVudD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9j
bGllbnQgfTsKIAogICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciByZWNl
aXZlZCByZXF1ZXN0IGZvciA8JXM+IHdpdGggcmVkaXJlY3QgcmVzcG9uc2UgZnJvbSA8JXM+Llxu
IiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSwgcmVkaXJlY3RSZXNwb25z
ZS51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAjaWYgIUxPR19ESVNBQkxFRApAQCAt
MTM1LDcgKzEzNSw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6c3RvcEZpbHRlcmluZ01haW5SZXMK
IAogYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBSZWY8RG9jdW1lbnRMb2FkZXI+
IHByb3RlY3RlZERvY3VtZW50TG9hZGVyIHsgbV9kb2N1bWVudExvYWRlciB9OworICAgIFJlZjxD
b250ZW50RmlsdGVyQ2xpZW50PiBwcm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwogCiAgICAg
aWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRlcmluZykgewogICAgICAgICBMT0coQ29udGVudEZp
bHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgcmVjZWl2ZWQgcmVzcG9uc2UgZnJvbSA8JXM+LlxuIiwg
cmVzcG9uc2UudXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwpAQCAtMTQ5LDcgKzE0OSw3
IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclJlc3BvbnMKIAogYm9vbCBDb250
ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBsZW5ndGgpCiB7Ci0gICAgUmVmPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0ZWREb2N1bWVudExv
YWRlciB7IG1fZG9jdW1lbnRMb2FkZXIgfTsKKyAgICBSZWY8Q29udGVudEZpbHRlckNsaWVudD4g
cHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQgfTsKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRl
OjpGaWx0ZXJpbmcpIHsKICAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50Rmls
dGVyIHJlY2VpdmVkICVkIGJ5dGVzIG9mIGRhdGEgZnJvbSA8JXM+LlxuIiwgbGVuZ3RoLCBtX21h
aW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwpAQCAtMTY4LDcgKzE2
OCw3IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWMKIGJvb2wgQ29u
dGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9t
YWluUmVzb3VyY2UpOwotICAgIFJlZjxEb2N1bWVudExvYWRlcj4gcHJvdGVjdGVkRG9jdW1lbnRM
b2FkZXIgeyBtX2RvY3VtZW50TG9hZGVyIH07CisgICAgUmVmPENvbnRlbnRGaWx0ZXJDbGllbnQ+
IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50IH07CiAKICAgICBpZiAobV9tYWluUmVzb3VyY2Ut
PmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMDEsMTEgKzIwMSwx
MSBAQCBpbmxpbmUgdm9pZCBDb250ZW50RmlsdGVyOjpmb3JFYWNoQ29udGVuCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGZ1bmN0aW9uKCpjb250ZW50RmlsdGVy
KTsKKyAgICAgICAgZnVuY3Rpb24oY29udGVudEZpbHRlci5nZXQoKSk7CiAKICAgICAgICAgaWYg
KGNvbnRlbnRGaWx0ZXItPmRpZEJsb2NrRGF0YSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoIW1f
YmxvY2tpbmdDb250ZW50RmlsdGVyKTsKLSAgICAgICAgICAgIG1fYmxvY2tpbmdDb250ZW50Rmls
dGVyID0gY29udGVudEZpbHRlci5nZXQoKTsKKyAgICAgICAgICAgIG1fYmxvY2tpbmdDb250ZW50
RmlsdGVyID0gJmNvbnRlbnRGaWx0ZXI7CiAgICAgICAgICAgICBkaWREZWNpZGUoU3RhdGU6OkJs
b2NrZWQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnRG
aWx0ZXItPm5lZWRzTW9yZURhdGEoKSkKQEAgLTIyNiwyMCArMjI2LDggQEAgdm9pZCBDb250ZW50
RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUgc3RhdAogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpC
bG9ja2VkKQogICAgICAgICByZXR1cm47CiAKLSAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXIgdW5ibG9ja0hhbmRsZXIgeyBtX2Jsb2NraW5nQ29udGVudEZpbHRlci0+dW5ibG9ja0hhbmRs
ZXIoKSB9OwotICAgIHVuYmxvY2tIYW5kbGVyLnNldFVucmVhY2hhYmxlVVJMKG1fZG9jdW1lbnRM
b2FkZXIuZG9jdW1lbnRVUkwoKSk7Ci0gICAgYXV0byBmcmFtZSB7IG1fZG9jdW1lbnRMb2FkZXIu
ZnJhbWUoKSB9OwotICAgIFN0cmluZyB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCB7IG1fYmxv
Y2tpbmdDb250ZW50RmlsdGVyLT51bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCgpIH07Ci0gICAg
aWYgKCF1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUpIHsKLSAg
ICAgICAgdW5ibG9ja0hhbmRsZXIud3JhcFdpdGhEZWNpc2lvbkhhbmRsZXIoW3NjcmlwdENvbnRy
b2xsZXIgPSBtYWtlV2Vha1B0cihmcmFtZS0+c2NyaXB0KCkpLCBzY3JpcHQgPSB1bmJsb2NrUmVx
dWVzdERlbmllZFNjcmlwdC5pc29sYXRlZENvcHkoKV0oYm9vbCB1bmJsb2NrZWQpIHsKLSAgICAg
ICAgICAgIGlmICghdW5ibG9ja2VkICYmIHNjcmlwdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAg
ICAgc2NyaXB0Q29udHJvbGxlci0+ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKHNjcmlw
dCk7Ci0gICAgICAgIH0pOwotICAgIH0KLSAgICBtX2RvY3VtZW50TG9hZGVyLmZyYW1lTG9hZGVy
KCktPmNsaWVudCgpLmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV1RGTW92ZSh1bmJsb2NrSGFu
ZGxlcikpOwotCi0gICAgbV9ibG9ja2VkRXJyb3IgPSBtX2RvY3VtZW50TG9hZGVyLmZyYW1lTG9h
ZGVyKCktPmJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihtX2RvY3VtZW50TG9hZGVyLnJlcXVl
c3QoKSk7Ci0gICAgbV9kb2N1bWVudExvYWRlci5jYW5jZWxNYWluUmVzb3VyY2VMb2FkKG1fYmxv
Y2tlZEVycm9yKTsKKyAgICBtX2Jsb2NrZWRFcnJvciA9IG1fY2xpZW50LmRpZEJsb2NrKG1fYmxv
Y2tpbmdDb250ZW50RmlsdGVyLT51bmJsb2NrSGFuZGxlcigpLCBtX2Jsb2NraW5nQ29udGVudEZp
bHRlci0+dW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQoKSk7CisgICAgbV9jbGllbnQuY2FuY2Vs
TWFpblJlc291cmNlTG9hZChtX2Jsb2NrZWRFcnJvcik7CiB9CiAKIHZvaWQgQ29udGVudEZpbHRl
cjo6ZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC0yNDcs
NyArMjM1LDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKAogICAg
IEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKICAgICBBU1NFUlQocmVzb3VyY2Uu
ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEp
OwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNlLnJlc291cmNlQnVmZmVy
KCkpCi0gICAgICAgIG1fZG9jdW1lbnRMb2FkZXIuZGF0YVJlY2VpdmVkKHJlc291cmNlLCByZXNv
dXJjZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9j
bGllbnQuZGF0YVJlY2VpdmVkKHJlc291cmNlQnVmZmVyLT5kYXRhKCksIHJlc291cmNlQnVmZmVy
LT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCkBAIC0y
OTQsNyArMjgyLDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpoYW5kbGVQcm92aXNpb25hbExvYQog
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyBVUkwoKSwgInRleHQvaHRtbCJfcywgc3Rh
dGljX2Nhc3Q8bG9uZyBsb25nPihyZXBsYWNlbWVudERhdGEtPnNpemUoKSksICJVVEYtOCJfcyB9
OwogICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhIHsgV1RGTW92ZShyZXBsYWNlbWVu
dERhdGEpLCBlcnJvci5mYWlsaW5nVVJMKCksIHJlc3BvbnNlLCBTdWJzdGl0dXRlRGF0YTo6U2Vz
c2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4gfTsKICAgICBTZXRGb3JTY29wZTxib29sPiBs
b2FkaW5nQmxvY2tlZFBhZ2UgeyBtX2lzTG9hZGluZ0Jsb2NrZWRQYWdlLCB0cnVlIH07Ci0gICAg
bV9kb2N1bWVudExvYWRlci5mcmFtZUxvYWRlcigpLT5sb2FkKEZyYW1lTG9hZFJlcXVlc3QoKm1f
ZG9jdW1lbnRMb2FkZXIuZnJhbWUoKSwgYmxvY2tlZFBhZ2VVUkwoKSwgU2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIHN1YnN0aXR1dGVEYXRhKSk7CisgICAgbV9j
bGllbnQuaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShibG9ja2VkUGFnZVVSTCgpLCBzdWJz
dGl0dXRlRGF0YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAkocmV2aXNpb24gMjU0NDMxKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTAgKzMy
LDEyIEBACiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7CitjbGFzcyBD
b250ZW50RmlsdGVyQ2xpZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwpAQCAtNDgsNyArNTAsNyBAQCBjbGFz
cyBDb250ZW50RmlsdGVyIHsKIHB1YmxpYzoKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3Rh
dGljIHZvaWQgYWRkVHlwZSgpIHsgdHlwZXMoKS5hcHBlbmQodHlwZTxUPigpKTsgfQogCi0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBjcmVhdGUoRG9jdW1lbnRMb2Fk
ZXImKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IGNyZWF0ZShD
b250ZW50RmlsdGVyQ2xpZW50Jik7CiAgICAgfkNvbnRlbnRGaWx0ZXIoKTsKIAogICAgIHN0YXRp
YyBjb25zdCBjaGFyKiB1cmxTY2hlbWUoKSB7IHJldHVybiAieC1hcHBsZS1jb250ZW50LWZpbHRl
ciI7IH0KQEAgLTY5LDIzICs3MSwyMyBAQCBwcml2YXRlOgogICAgIHVzaW5nIFN0YXRlID0gUGxh
dGZvcm1Db250ZW50RmlsdGVyOjpTdGF0ZTsKIAogICAgIHN0cnVjdCBUeXBlIHsKLSAgICAgICAg
Y29uc3Qgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1Db250ZW50RmlsdGVy
PigpPiBjcmVhdGU7CisgICAgICAgIEZ1bmN0aW9uPFVuaXF1ZVJlZjxQbGF0Zm9ybUNvbnRlbnRG
aWx0ZXI+KCk+IGNyZWF0ZTsKICAgICB9OwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0
aWMgVHlwZSB0eXBlKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFZlY3RvcjxUeXBlPiYg
dHlwZXMoKTsKIAotICAgIHVzaW5nIENvbnRhaW5lciA9IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1Db250ZW50RmlsdGVyPj47Ci0gICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxDb250
ZW50RmlsdGVyPiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRGaWx0ZXI+KENvbnRhaW5lciYmLCBE
b2N1bWVudExvYWRlciYpOwotICAgIENvbnRlbnRGaWx0ZXIoQ29udGFpbmVyJiYsIERvY3VtZW50
TG9hZGVyJik7CisgICAgdXNpbmcgQ29udGFpbmVyID0gVmVjdG9yPFVuaXF1ZVJlZjxQbGF0Zm9y
bUNvbnRlbnRGaWx0ZXI+PjsKKyAgICBmcmllbmQgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0
ZXI+IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudEZpbHRlcj4oQ29udGFpbmVyJiYsIENvbnRlbnRG
aWx0ZXJDbGllbnQmKTsKKyAgICBDb250ZW50RmlsdGVyKENvbnRhaW5lciYmLCBDb250ZW50Rmls
dGVyQ2xpZW50Jik7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+IHZvaWQgZm9y
RWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2NrZWQoRnVuY3Rpb24mJik7CiAgICAgdm9pZCBkaWRE
ZWNpZGUoU3RhdGUpOwogICAgIHZvaWQgZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJj
ZSYpOwogCi0gICAgY29uc3QgQ29udGFpbmVyIG1fY29udGVudEZpbHRlcnM7Ci0gICAgRG9jdW1l
bnRMb2FkZXImIG1fZG9jdW1lbnRMb2FkZXI7CisgICAgQ29udGFpbmVyIG1fY29udGVudEZpbHRl
cnM7CisgICAgQ29udGVudEZpbHRlckNsaWVudCYgbV9jbGllbnQ7CiAgICAgQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fbWFpblJlc291cmNlOwotICAgIFBsYXRmb3Jt
Q29udGVudEZpbHRlciogbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXIgeyBudWxscHRyIH07CisgICAg
Y29uc3QgUGxhdGZvcm1Db250ZW50RmlsdGVyKiBtX2Jsb2NraW5nQ29udGVudEZpbHRlciB7IG51
bGxwdHIgfTsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlN0b3BwZWQgfTsKICAgICBSZXNv
dXJjZUVycm9yIG1fYmxvY2tlZEVycm9yOwogICAgIGJvb2wgbV9pc0xvYWRpbmdCbG9ja2VkUGFn
ZSB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVy
Q2xpZW50LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsK
K2NsYXNzIFJlc291cmNlRXJyb3I7CitjbGFzcyBTdWJzdGl0dXRlRGF0YTsKKworY2xhc3MgQ29u
dGVudEZpbHRlckNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q29udGVudEZpbHRlckNs
aWVudCgpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVmKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkZXJlZigpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBkYXRh
UmVjZWl2ZWQoY29uc3QgY2hhciosIGludCkgPSAwOworICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJv
ciBkaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tS
ZXF1ZXN0RGVuaWVkU2NyaXB0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbE1haW5SZXNv
dXJjZUxvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBTdWJz
dGl0dXRlRGF0YSYpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNpb24gMjU0NTc2KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiw4
IEBACiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAjaW5jbHVkZSAiQ29udGVudEZp
bHRlci5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZFJlcXVlc3QuaCIKKyNpbmNsdWRlICJTY3JpcHRD
b250cm9sbGVyLmgiCiAjZW5kaWYKIAogI2lmIFVTRShRVUlDS19MT09LKQpAQCAtMjE4NSw0ICsy
MTg3LDI0IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmVucXVldWVTZWN1cml0eVBvbGkKICAgICBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5lbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChX
VEZNb3ZlKGV2ZW50SW5pdCkpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQor
dm9pZCBEb2N1bWVudExvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBV
UkwmIGJsb2NrZWRQYWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCit7Cisg
ICAgZnJhbWVMb2FkZXIoKS0+bG9hZChGcmFtZUxvYWRSZXF1ZXN0KCpmcmFtZSgpLCBibG9ja2Vk
UGFnZVVSTCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIHN1
YnN0aXR1dGVEYXRhKSk7Cit9CisKK1Jlc291cmNlRXJyb3IgRG9jdW1lbnRMb2FkZXI6OmRpZEJs
b2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgV1RGOjpTdHJp
bmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKK3sKKyAgICB1bmJsb2NrSGFuZGxlci5z
ZXRVbnJlYWNoYWJsZVVSTChkb2N1bWVudFVSTCgpKTsKKyAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0
RGVuaWVkU2NyaXB0LmlzRW1wdHkoKSAmJiBmcmFtZSgpKSB7CisgICAgICAgIHVuYmxvY2tIYW5k
bGVyLndyYXBXaXRoRGVjaXNpb25IYW5kbGVyKFtzY3JpcHRDb250cm9sbGVyID0gbWFrZVdlYWtQ
dHIoZnJhbWUoKS0+c2NyaXB0KCkpLCBzY3JpcHQgPSB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlw
dC5pc29sYXRlZENvcHkoKV0oYm9vbCB1bmJsb2NrZWQpIHsKKyAgICAgICAgICAgIGlmICghdW5i
bG9ja2VkICYmIHNjcmlwdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgc2NyaXB0Q29udHJv
bGxlci0+ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKHNjcmlwdCk7CisgICAgICAgIH0p
OworICAgIH0KKyAgICBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5jb250ZW50RmlsdGVyRGlkQmxv
Y2tMb2FkKFdURk1vdmUodW5ibG9ja0hhbmRsZXIpKTsKKyAgICByZXR1cm4gZnJhbWVMb2FkZXIo
KS0+YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKHJlcXVlc3QoKSk7Cit9CisjZW5kaWYgLy8g
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gMjU0NDMxKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJDb250ZW50Rmls
dGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmgiCiAj
aW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZS5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50SWRlbnRpZmllci5oIgpAQCAtMTQyLDYgKzE0Myw5IEBAIGNsYXNzIERv
Y3VtZW50TG9hZGVyCiAgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxEb2N1bWVudExvYWRlcj4KICAg
ICAsIHB1YmxpYyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIKICAgICAsIHB1YmxpYyBDb250ZW50
U2VjdXJpdHlQb2xpY3lDbGllbnQKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisgICAg
LCBwdWJsaWMgQ29udGVudEZpbHRlckNsaWVudAorI2VuZGlmCiAgICAgLCBwcml2YXRlIENhY2hl
ZFJhd1Jlc291cmNlQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRF9XSVRIX0hF
QVBfSURFTlRJRklFUihEb2N1bWVudExvYWRlcik7CiAgICAgZnJpZW5kIGNsYXNzIENvbnRlbnRG
aWx0ZXI7CkBAIC0yNzYsNyArMjgwLDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TWFpblJlc291
cmNlRGF0YUJ1ZmZlcmluZ1BvbGljeShEYXRhQnVmZmVyaW5nUG9saWN5KTsKIAogICAgIHZvaWQg
c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjYW5j
ZWxNYWluUmVzb3VyY2VMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIHdpbGxD
b250aW51ZU1haW5SZXNvdXJjZUxvYWRBZnRlclJlZGlyZWN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOwogCiAgICAgYm9vbCBpc0xvYWRpbmdNYWluUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBt
X2xvYWRpbmdNYWluUmVzb3VyY2U7IH0KQEAgLTM2Nyw2ICszNzAsMTEgQEAgcHVibGljOgogCiAj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIENvbnRlbnRGaWx0ZXIqIGNvbnRlbnRG
aWx0ZXIoKSBjb25zdDsKKyAgICB2b2lkIHJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxE
b2N1bWVudExvYWRlcj46OnJlZigpOyB9CisgICAgdm9pZCBkZXJlZigpIGNvbnN0IGZpbmFsIHsg
UmVmQ291bnRlZDxEb2N1bWVudExvYWRlcj46OnJlZigpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsK
KyNlbHNlCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKICNlbmRpZgogCiAgICAgYm9vbCBpc0Fsd2F5c09uTG9nZ2lu
Z0FsbG93ZWQoKSBjb25zdDsKQEAgLTQ0NCw3ICs0NTIsMTQgQEAgcHJpdmF0ZToKICNlbmRpZgog
CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqLCBpbnQp
IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IgZGlkQmxvY2soQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlw
dCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRG
YWlsdXJlKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFN1YnN0aXR1dGVEYXRhJikgZmluYWw7
CisjZWxzZQogICAgIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5n
dGgpOworI2VuZGlmCiAKICAgICBib29sIG1heWJlTG9hZEVtcHR5KCk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXIuaAkocmV2aXNpb24gMjU0NDMxKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi9Db21waWxlci5oPgogI2luY2x1
ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIGVudW0gTkVGaWx0ZXJTb3VyY2VTdGF0dXMgOiBOU0lu
dGVnZXI7CiAKQEAgLTM5LDEwICs0MCwxMCBAQCBPQkpDX0NMQVNTIE5TRGF0YTsKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIgZmluYWwg
OiBwdWJsaWMgUGxhdGZvcm1Db250ZW50RmlsdGVyIHsKLSAgICBmcmllbmQgc3RkOjp1bmlxdWVf
cHRyPE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyPiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyPigpOworICAgIGZyaWVuZCBVbmlxdWVSZWY8TmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI+IFdURjo6bWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s8TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI+KCk7CiAKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyPiBj
cmVhdGUoKTsKKyAgICBzdGF0aWMgVW5pcXVlUmVmPE5ldHdvcmtFeHRlbnNpb25Db250ZW50Rmls
dGVyPiBjcmVhdGUoKTsKIAogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc3BvbnNl
UmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXIubW0JKHJldmlzaW9uIDI1NDQzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC03MSw5ICs3MSw5IEBAIGJvb2wgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXI6OmVuYWIKICAgICByZXR1cm4gZW5hYmxlZDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPE5ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyPiBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6
Y3JlYXRlKCkKK1VuaXF1ZVJlZjxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcj4gTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIG1ha2VVbmlx
dWU8TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWVSZWY8TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI+KCk7CiB9CiAKIHZvaWQgTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmluaXRpYWxpemUoY29uc3QgVVJMKiB1cmwpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVu
dGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgJKHJldmlzaW9uIDI1NDQzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRlbnRG
aWx0ZXIuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGlsZXIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBPQkpDX0NMQVNTIE5TRGF0YTsK
IE9CSkNfQ0xBU1MgV2ViRmlsdGVyRXZhbHVhdG9yOwpAQCAtMzUsMTAgKzM2LDEwIEBAIE9CSkNf
Q0xBU1MgV2ViRmlsdGVyRXZhbHVhdG9yOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQ
YXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlciBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybUNvbnRl
bnRGaWx0ZXIgewotICAgIGZyaWVuZCBzdGQ6OnVuaXF1ZV9wdHI8UGFyZW50YWxDb250cm9sc0Nv
bnRlbnRGaWx0ZXI+IHN0ZDo6bWFrZV91bmlxdWU8UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0
ZXI+KCk7CisgICAgZnJpZW5kIFVuaXF1ZVJlZjxQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRl
cj4gV1RGOjptYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxQYXJlbnRhbENvbnRy
b2xzQ29udGVudEZpbHRlcj4oKTsKIAogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBV
bmlxdWVSZWY8UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI+IGNyZWF0ZSgpOwogCiAgICAg
dm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5t
bQkocmV2aXNpb24gMjU0NDMxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFy
ZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTY3LDkgKzY3
LDkgQEAgYm9vbCBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6ZW5hYgogICAgIHJldHVy
biBlbmFibGVkOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UGFyZW50YWxDb250cm9sc0NvbnRlbnRG
aWx0ZXI+IFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpjcmVhdGUoKQorVW5pcXVlUmVm
PFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyPiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlcjo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXJlbnRhbENvbnRyb2xz
Q29udGVudEZpbHRlcj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxQYXJlbnRhbENvbnRy
b2xzQ29udGVudEZpbHRlcj4oKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGNhbkhhbmRsZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpJbmRleDogU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAJKHJldmlzaW9uIDI1NDQzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02Miw5ICs2Miw5IEBAIGJvb2wgTW9ja0NvbnRlbnRGaWx0ZXI6OmVuYWJsZWQo
KQogICAgIHJldHVybiBlbmFibGVkOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8TW9ja0NvbnRlbnRG
aWx0ZXI+IE1vY2tDb250ZW50RmlsdGVyOjpjcmVhdGUoKQorVW5pcXVlUmVmPE1vY2tDb250ZW50
RmlsdGVyPiBNb2NrQ29udGVudEZpbHRlcjo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gbWFrZVVu
aXF1ZTxNb2NrQ29udGVudEZpbHRlcj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxNb2Nr
Q29udGVudEZpbHRlcj4oKTsKIH0KIAogdm9pZCBNb2NrQ29udGVudEZpbHRlcjo6d2lsbFNlbmRS
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVkaXJlY3RSZXNwb25zZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRl
bnRGaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyLmgJKHJldmlzaW9uIDI1NDQzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NvbnRlbnRGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTUgKzI3LDE2IEBACiAK
ICNpbmNsdWRlICJNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1Db250ZW50RmlsdGVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1vY2tDb250ZW50RmlsdGVyIGZpbmFsIDogcHVibGljIFBs
YXRmb3JtQ29udGVudEZpbHRlciB7Ci0gICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxNb2NrQ29u
dGVudEZpbHRlcj4gc3RkOjptYWtlX3VuaXF1ZTxNb2NrQ29udGVudEZpbHRlcj4oKTsKKyAgICBm
cmllbmQgVW5pcXVlUmVmPE1vY2tDb250ZW50RmlsdGVyPiBXVEY6Om1ha2VVbmlxdWVSZWZXaXRo
b3V0RmFzdE1hbGxvY0NoZWNrPE1vY2tDb250ZW50RmlsdGVyPigpOwogCiBwdWJsaWM6CiAgICAg
c3RhdGljIHZvaWQgZW5zdXJlSW5zdGFsbGVkKCk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxNb2NrQ29udGVudEZpbHRlcj4gY3JlYXRlKCk7CisgICAgc3RhdGljIFVuaXF1ZVJlZjxNb2Nr
Q29udGVudEZpbHRlcj4gY3JlYXRlKCk7CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388512</attachid>
            <date>2020-01-22 20:48:24 -0800</date>
            <delta_ts>2020-01-23 09:41:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206564-20200122204822.patch</filename>
            <type>text/plain</type>
            <size>27985</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDk1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDIwLTAxLTIyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29udGVudEZp
bHRlciBzaG91bGQgYWNjZXNzIERvY3VtZW50TG9hZGVyIHRocm91Z2ggYW4gaW50ZXJmYWNlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1NjQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHdpbGwg
bWFrZSBpdCBlYXNpZXIgdG8gbW92ZSwgbGlrZSB0byB0aGUgTmV0d29ya1Byb2Nlc3Mgd2hlcmUg
dGhlcmUgYXJlIG5vIERvY3VtZW50TG9hZGVycy4KKyAgICAgICAgQWxzbyB1c2UgV1RGOjpGdW5j
dGlvbiBpbnN0ZWFkIG9mIHN0ZDo6ZnVuY3Rpb24gYW5kIFVuaXF1ZVJlZiBpbnN0ZWFkIG9mIHN0
ZDo6dW5pcXVlX3B0ci4KKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9D
b250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OnR5cGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpDb250ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5
RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Zm9yRWFjaENvbnRl
bnRGaWx0ZXJVbnRpbEJsb2NrZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6
ZGlkRGVjaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNv
dXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6aGFuZGxlUHJvdmlz
aW9uYWxMb2FkRmFpbHVyZSk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRl
ci9Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyQ2xpZW50Ojp+Q29udGVu
dEZpbHRlckNsaWVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkaWRCbG9jayk6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6Y3JlYXRlKToKKwogMjAyMC0wMS0y
MiAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtPcGVu
U1NMXSBBZGQgc3R1YnMgYW5kIGJ1aWxkIGZvciBXZWIgQ3J5cHRvCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UJKHJldmlzaW9uIDI1NDk1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTY4OSw2ICs2ODksNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZS
QU1FV09SS19IRUFERVJTCiAKICAgICBsb2FkZXIvQWRDbGlja0F0dHJpYnV0aW9uLmgKICAgICBs
b2FkZXIvQ2FudmFzQWN0aXZpdHlSZWNvcmQuaAorICAgIGxvYWRlci9Db250ZW50RmlsdGVyQ2xp
ZW50LmgKICAgICBsb2FkZXIvQ29va2llSmFyLmgKICAgICBsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nl
c3NDb250cm9sLmgKICAgICBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5o
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAyNTQ5NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5MTUsNiArMTkxNSw3IEBA
CiAJCTVDRDlGNTY2MUFBMEY3M0MwMERBNDVGRiAvKiBERkFCeXRlY29kZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMzOTMwNUQxQUEwRjZBOTAwMjlD
ODE2IC8qIERGQUJ5dGVjb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNUNEOUY1NjcxQUEwRjc0MjAwREE0NUZGIC8qIERGQUJ5dGVjb2RlQ29t
cGlsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
MzkzMDVGMUFBMEY2QTkwMDI5QzgxNiAvKiBERkFCeXRlY29kZUNvbXBpbGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUNEOUY1NjgxQUEwRjc0
NjAwREE0NUZGIC8qIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMzkzMDYxMUFBMEY2QTkwMDI5QzgxNiAvKiBE
RkFCeXRlY29kZUludGVycHJldGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJNUNEQ0REQzYyM0Q4MEExQzAwQkEzNEExIC8qIENvbnRlbnRGaWx0
ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDRENEREJGMjNEN0I3QkUwMEJBMzRBMSAvKiBDb250ZW50RmlsdGVyQ2xpZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUNERDgzNjQxRTQz
MjVBMDAwNjIxRTkyIC8qIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0REODMzRjFFNDMyNTNEMDA2
MjFFOTIgLyogTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCAqLzsgfTsKIAkJNUNERkE2
QzgxQUE0RjJEQTAwRUE4NzQ2IC8qIENvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0RGQTZDNzFBQTRGMkRBMDBF
QTg3NDYgLyogQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1Q0VFRTQzNjFGNUY4RjIxMDAxNEE1RjUgLyog
UmVjdEVkZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1Qzk3QTMzNjFGNUY3QTY1MDAxMDUyMDcgLyogUmVjdEVkZ2VzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkwNjgsNiArOTA2OSw3IEBACiAJ
CTVDQkM4REFCMUFBQTMwMjIwMEUxQzgwMyAvKiBNZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUFjY2Vzc2liaWxpdHlTb2Z0
TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0NDMjcwNjIyRDUzQjY4MDA5
NjRGQTAgLyogQXV0b2ZpbGxFbGVtZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBdXRvZmlsbEVsZW1lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
Q0MyNzA3MjJENTNCNjkwMDk2NEZBMCAvKiBBdXRvZmlsbEVsZW1lbnRzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1dG9maWxsRWxlbWVudHMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1Q0RDRERCRjIzRDdCN0JFMDBCQTM0QTEgLyogQ29udGVu
dEZpbHRlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50
RmlsdGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDREQ4MzM5MUU0
MzI0QkIwMDYyMUU4MyAvKiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0REODMzOTFF
NDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJj
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDREQ4MzNBMUU0MzI0QkIwMDYy
MUU4MyAvKiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU3NTEsNiArMjU3NTMsNyBAQAogCQkJCUVG
Q0M2QzhEMjBGRTkxNDAwMEEyMzIxQiAvKiBDYW52YXNBY3Rpdml0eVJlY29yZC5oICovLAogCQkJ
CUExNDk3ODZDMUFCQUYzMzgwMENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmNwcCAqLywKIAkJCQlB
MTQ5Nzg2RDFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVudEZpbHRlci5oICovLAorCQkJCTVDRENE
REJGMjNEN0I3QkUwMEJBMzRBMSAvKiBDb250ZW50RmlsdGVyQ2xpZW50LmggKi8sCiAJCQkJRTE0
MjRDOTExNjRCNTJDODAwRjMyRDQwIC8qIENvb2tpZUphci5jcHAgKi8sCiAJCQkJRTE0MjRDOTIx
NjRCNTJDODAwRjMyRDQwIC8qIENvb2tpZUphci5oICovLAogCQkJCUUxQzQxNjE2MEY2NTYzMTgw
MDkyRDJGQiAvKiBDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwICovLApAQCAtMjk0MzIsNiAr
Mjk0MzUsNyBAQAogCQkJCTI2MjM5MTM2MUE2NDhDRUUwMDcyNTFBMyAvKiBDb250ZW50RXh0ZW5z
aW9uc0RlYnVnZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGQjY3REMxQUU2QjgyRjAwRDA2
QzVBIC8qIENvbnRlbnRFeHRlbnNpb25TdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
MTQ5Nzg2RjFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNUNEQ0REQzYyM0Q4MEExQzAwQkEzNEExIC8qIENvbnRlbnRGaWx0ZXJDbGllbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUExNDA5MEZEMUFBNTFFNDgwMDkxMTkxQSAvKiBDb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDOUMyREI1MjI0MUE2N0Iw
MDk5NkIwQiAvKiBDb250ZW50UnVsZUxpc3RSZXN1bHRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
N0M0NzFEQzEyRjkyNUJEMDA4NjM1NEIgLyogQ29udGVudFNlY3VyaXR5UG9saWN5LmggaW4gSGVh
ZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAJKHJl
dmlzaW9uIDI1NDk1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKIAogI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlLmgiCisjaW5jbHVkZSAiQ29u
dGVudEZpbHRlckNsaWVudC5oIgogI2luY2x1ZGUgIkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
ci5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAg
LTU0LDM2ICs1NSwzNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBWZWN0b3I8Q29udGVudEZpbHRl
cjo6VHlwZT4mIENvbnRlbnRGaWx0ZXI6OnR5cGVzKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VmVjdG9yPENvbnRlbnRGaWx0ZXI6OlR5cGU+PiB0eXBlcyB7Ci0gICAgICAgIFZlY3Rv
cjxDb250ZW50RmlsdGVyOjpUeXBlPiB7CisgICAgICAgIFZlY3RvcjxDb250ZW50RmlsdGVyOjpU
eXBlPjo6ZnJvbSgKICNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xTKQogICAgICAgICAgICAgdHlw
ZTxQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcj4oKSwKICNlbmRpZgogI2lmIEhBVkUoTkVU
V09SS19FWFRFTlNJT04pCiAgICAgICAgICAgICB0eXBlPE5ldHdvcmtFeHRlbnNpb25Db250ZW50
RmlsdGVyPigpCiAjZW5kaWYKLSAgICAgICAgfQorICAgICAgICApCiAgICAgfTsKICAgICByZXR1
cm4gdHlwZXM7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBDb250ZW50Rmls
dGVyOjpjcmVhdGUoRG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyKQorc3RkOjp1bmlxdWVf
cHRyPENvbnRlbnRGaWx0ZXI+IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZShDb250ZW50RmlsdGVyQ2xp
ZW50JiBjbGllbnQpCiB7CiAgICAgQ29udGFpbmVyIGZpbHRlcnM7CiAgICAgZm9yIChhdXRvJiB0
eXBlIDogdHlwZXMoKSkgewogICAgICAgICBhdXRvIGZpbHRlciA9IHR5cGUuY3JlYXRlKCk7Ci0g
ICAgICAgIEFTU0VSVChmaWx0ZXIpOwogICAgICAgICBmaWx0ZXJzLmFwcGVuZChXVEZNb3ZlKGZp
bHRlcikpOwogICAgIH0KIAogICAgIGlmIChmaWx0ZXJzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250ZW50RmlsdGVyPihXVEZN
b3ZlKGZpbHRlcnMpLCBkb2N1bWVudExvYWRlcik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29u
dGVudEZpbHRlcj4oV1RGTW92ZShmaWx0ZXJzKSwgY2xpZW50KTsKIH0KIAotQ29udGVudEZpbHRl
cjo6Q29udGVudEZpbHRlcihDb250YWluZXImJiBjb250ZW50RmlsdGVycywgRG9jdW1lbnRMb2Fk
ZXImIGRvY3VtZW50TG9hZGVyKQotICAgIDogbV9jb250ZW50RmlsdGVycyB7IFdURk1vdmUoY29u
dGVudEZpbHRlcnMpIH0KLSAgICAsIG1fZG9jdW1lbnRMb2FkZXIgeyBkb2N1bWVudExvYWRlciB9
CitDb250ZW50RmlsdGVyOjpDb250ZW50RmlsdGVyKENvbnRhaW5lciYmIGNvbnRlbnRGaWx0ZXJz
LCBDb250ZW50RmlsdGVyQ2xpZW50JiBjbGllbnQpCisgICAgOiBtX2NvbnRlbnRGaWx0ZXJzKFdU
Rk1vdmUoY29udGVudEZpbHRlcnMpKQorICAgICwgbV9jbGllbnQoY2xpZW50KQogewogICAgIExP
RyhDb250ZW50RmlsdGVyaW5nLCAiQ3JlYXRpbmcgQ29udGVudEZpbHRlciB3aXRoICV6dSBwbGF0
Zm9ybSBjb250ZW50IGZpbHRlcihzKS5cbiIsIG1fY29udGVudEZpbHRlcnMuc2l6ZSgpKTsKICAg
ICBBU1NFUlQoIW1fY29udGVudEZpbHRlcnMuaXNFbXB0eSgpKTsKQEAgLTk2LDcgKzk2LDcgQEAg
Q29udGVudEZpbHRlcjo6fkNvbnRlbnRGaWx0ZXIoKQogCiBib29sIENvbnRlbnRGaWx0ZXI6OmNv
bnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQogewotICAgIFJlZjxEb2N1bWVu
dExvYWRlcj4gcHJvdGVjdGVkRG9jdW1lbnRMb2FkZXIgeyBtX2RvY3VtZW50TG9hZGVyIH07Cisg
ICAgUmVmPENvbnRlbnRGaWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50IH07
CiAKICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgcmVjZWl2ZWQgcmVx
dWVzdCBmb3IgPCVzPiB3aXRoIHJlZGlyZWN0IHJlc3BvbnNlIGZyb20gPCVzPi5cbiIsIHJlcXVl
c3QudXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIHJlZGlyZWN0UmVzcG9uc2UudXJsKCku
c3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogI2lmICFMT0dfRElTQUJMRUQKQEAgLTEzNSw3ICsx
MzUsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0b3BGaWx0ZXJpbmdNYWluUmVzCiAKIGJvb2wg
Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgUmVmPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0
ZWREb2N1bWVudExvYWRlciB7IG1fZG9jdW1lbnRMb2FkZXIgfTsKKyAgICBSZWY8Q29udGVudEZp
bHRlckNsaWVudD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQgfTsKIAogICAgIGlmIChtX3N0
YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsKICAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcs
ICJDb250ZW50RmlsdGVyIHJlY2VpdmVkIHJlc3BvbnNlIGZyb20gPCVzPi5cbiIsIHJlc3BvbnNl
LnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKQEAgLTE0OSw3ICsxNDksNyBAQCBib29s
IENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJSZXNwb25zCiAKIGJvb2wgQ29udGVudEZpbHRl
cjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3Ro
KQogewotICAgIFJlZjxEb2N1bWVudExvYWRlcj4gcHJvdGVjdGVkRG9jdW1lbnRMb2FkZXIgeyBt
X2RvY3VtZW50TG9hZGVyIH07CisgICAgUmVmPENvbnRlbnRGaWx0ZXJDbGllbnQ+IHByb3RlY3Rl
ZENsaWVudCB7IG1fY2xpZW50IH07CiAKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RmlsdGVy
aW5nKSB7CiAgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciByZWNl
aXZlZCAlZCBieXRlcyBvZiBkYXRhIGZyb20gPCVzPi5cbiIsIGxlbmd0aCwgbV9tYWluUmVzb3Vy
Y2UtPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKQEAgLTE2OCw3ICsxNjgsNyBAQCBi
b29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjCiBib29sIENvbnRlbnRGaWx0
ZXI6OmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Up
CiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291
cmNlKTsKLSAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3RlZERvY3VtZW50TG9hZGVyIHsg
bV9kb2N1bWVudExvYWRlciB9OworICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBwcm90ZWN0
ZWRDbGllbnQgeyBtX2NsaWVudCB9OwogCiAgICAgaWYgKG1fbWFpblJlc291cmNlLT5lcnJvck9j
Y3VycmVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjAxLDExICsyMDEsMTEgQEAgaW5s
aW5lIHZvaWQgQ29udGVudEZpbHRlcjo6Zm9yRWFjaENvbnRlbgogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KIAotICAgICAgICBmdW5jdGlvbigqY29udGVudEZpbHRlcik7CisgICAg
ICAgIGZ1bmN0aW9uKGNvbnRlbnRGaWx0ZXIuZ2V0KCkpOwogCiAgICAgICAgIGlmIChjb250ZW50
RmlsdGVyLT5kaWRCbG9ja0RhdGEoKSkgewogICAgICAgICAgICAgQVNTRVJUKCFtX2Jsb2NraW5n
Q29udGVudEZpbHRlcik7Ci0gICAgICAgICAgICBtX2Jsb2NraW5nQ29udGVudEZpbHRlciA9IGNv
bnRlbnRGaWx0ZXIuZ2V0KCk7CisgICAgICAgICAgICBtX2Jsb2NraW5nQ29udGVudEZpbHRlciA9
ICZjb250ZW50RmlsdGVyOwogICAgICAgICAgICAgZGlkRGVjaWRlKFN0YXRlOjpCbG9ja2VkKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfSBlbHNlIGlmIChjb250ZW50RmlsdGVyLT5u
ZWVkc01vcmVEYXRhKCkpCkBAIC0yMjYsMjAgKzIyNiw4IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6
ZGlkRGVjaWRlKFN0YXRlIHN0YXQKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxv
Y2tIYW5kbGVyIHsgbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXItPnVuYmxvY2tIYW5kbGVyKCkgfTsK
LSAgICB1bmJsb2NrSGFuZGxlci5zZXRVbnJlYWNoYWJsZVVSTChtX2RvY3VtZW50TG9hZGVyLmRv
Y3VtZW50VVJMKCkpOwotICAgIGF1dG8gZnJhbWUgeyBtX2RvY3VtZW50TG9hZGVyLmZyYW1lKCkg
fTsKLSAgICBTdHJpbmcgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQgeyBtX2Jsb2NraW5nQ29u
dGVudEZpbHRlci0+dW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQoKSB9OwotICAgIGlmICghdW5i
bG9ja1JlcXVlc3REZW5pZWRTY3JpcHQuaXNFbXB0eSgpICYmIGZyYW1lKSB7Ci0gICAgICAgIHVu
YmxvY2tIYW5kbGVyLndyYXBXaXRoRGVjaXNpb25IYW5kbGVyKFtzY3JpcHRDb250cm9sbGVyID0g
bWFrZVdlYWtQdHIoZnJhbWUtPnNjcmlwdCgpKSwgc2NyaXB0ID0gdW5ibG9ja1JlcXVlc3REZW5p
ZWRTY3JpcHQuaXNvbGF0ZWRDb3B5KCldKGJvb2wgdW5ibG9ja2VkKSB7Ci0gICAgICAgICAgICBp
ZiAoIXVuYmxvY2tlZCAmJiBzY3JpcHRDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIHNjcmlw
dENvbnRyb2xsZXItPmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihzY3JpcHQpOwotICAg
ICAgICB9KTsKLSAgICB9Ci0gICAgbV9kb2N1bWVudExvYWRlci5mcmFtZUxvYWRlcigpLT5jbGll
bnQoKS5jb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdURk1vdmUodW5ibG9ja0hhbmRsZXIpKTsK
LQotICAgIG1fYmxvY2tlZEVycm9yID0gbV9kb2N1bWVudExvYWRlci5mcmFtZUxvYWRlcigpLT5i
bG9ja2VkQnlDb250ZW50RmlsdGVyRXJyb3IobV9kb2N1bWVudExvYWRlci5yZXF1ZXN0KCkpOwot
ICAgIG1fZG9jdW1lbnRMb2FkZXIuY2FuY2VsTWFpblJlc291cmNlTG9hZChtX2Jsb2NrZWRFcnJv
cik7CisgICAgbV9ibG9ja2VkRXJyb3IgPSBtX2NsaWVudC5jb250ZW50RmlsdGVyRGlkQmxvY2so
bV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXItPnVuYmxvY2tIYW5kbGVyKCksIG1fYmxvY2tpbmdDb250
ZW50RmlsdGVyLT51bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCgpKTsKKyAgICBtX2NsaWVudC5j
YW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihtX2Jsb2NrZWRFcnJvcik7CiB9
CiAKIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UpCkBAIC0yNDcsNyArMjM1LDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkZWxp
dmVyUmVzb3VyY2VEYXRhKAogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKTsK
ICAgICBBU1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJp
bmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJl
c291cmNlLnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgIG1fZG9jdW1lbnRMb2FkZXIuZGF0YVJl
Y2VpdmVkKHJlc291cmNlLCByZXNvdXJjZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0
ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CiB9CiAK
IHN0YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKQEAgLTI5NCw3ICsyODIsNyBAQCB2
b2lkIENvbnRlbnRGaWx0ZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hCiAgICAgUmVzb3VyY2VSZXNw
b25zZSByZXNwb25zZSB7IFVSTCgpLCAidGV4dC9odG1sIl9zLCBzdGF0aWNfY2FzdDxsb25nIGxv
bmc+KHJlcGxhY2VtZW50RGF0YS0+c2l6ZSgpKSwgIlVURi04Il9zIH07CiAgICAgU3Vic3RpdHV0
ZURhdGEgc3Vic3RpdHV0ZURhdGEgeyBXVEZNb3ZlKHJlcGxhY2VtZW50RGF0YSksIGVycm9yLmZh
aWxpbmdVUkwoKSwgcmVzcG9uc2UsIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2li
aWxpdHk6OkhpZGRlbiB9OwogICAgIFNldEZvclNjb3BlPGJvb2w+IGxvYWRpbmdCbG9ja2VkUGFn
ZSB7IG1faXNMb2FkaW5nQmxvY2tlZFBhZ2UsIHRydWUgfTsKLSAgICBtX2RvY3VtZW50TG9hZGVy
LmZyYW1lTG9hZGVyKCktPmxvYWQoRnJhbWVMb2FkUmVxdWVzdCgqbV9kb2N1bWVudExvYWRlci5m
cmFtZSgpLCBibG9ja2VkUGFnZVVSTCgpLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpT
aG91bGROb3RBbGxvdywgc3Vic3RpdHV0ZURhdGEpKTsKKyAgICBtX2NsaWVudC5oYW5kbGVQcm92
aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoYmxvY2tlZFBhZ2VVUkwoKSwgc3Vi
c3RpdHV0ZURhdGEpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgJKHJldmlzaW9uIDI1NDk1OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEwICsz
MiwxMiBAQAogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFs
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNlOworY2xhc3Mg
Q29udGVudEZpbHRlckNsaWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKQEAgLTQ4LDcgKzUwLDcgQEAgY2xh
c3MgQ29udGVudEZpbHRlciB7CiBwdWJsaWM6CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0
YXRpYyB2b2lkIGFkZFR5cGUoKSB7IHR5cGVzKCkuYXBwZW5kKHR5cGU8VD4oKSk7IH0KIAotICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gY3JlYXRlKERvY3VtZW50TG9h
ZGVyJik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBjcmVhdGUo
Q29udGVudEZpbHRlckNsaWVudCYpOwogICAgIH5Db250ZW50RmlsdGVyKCk7CiAKICAgICBzdGF0
aWMgY29uc3QgY2hhciogdXJsU2NoZW1lKCkgeyByZXR1cm4gIngtYXBwbGUtY29udGVudC1maWx0
ZXIiOyB9CkBAIC02OSwyMyArNzEsMjMgQEAgcHJpdmF0ZToKICAgICB1c2luZyBTdGF0ZSA9IFBs
YXRmb3JtQ29udGVudEZpbHRlcjo6U3RhdGU7CiAKICAgICBzdHJ1Y3QgVHlwZSB7Ci0gICAgICAg
IGNvbnN0IHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtQ29udGVudEZpbHRl
cj4oKT4gY3JlYXRlOworICAgICAgICBGdW5jdGlvbjxVbmlxdWVSZWY8UGxhdGZvcm1Db250ZW50
RmlsdGVyPigpPiBjcmVhdGU7CiAgICAgfTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3Rh
dGljIFR5cGUgdHlwZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBWZWN0b3I8VHlwZT4m
IHR5cGVzKCk7CiAKLSAgICB1c2luZyBDb250YWluZXIgPSBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PFBsYXRmb3JtQ29udGVudEZpbHRlcj4+OwotICAgIGZyaWVuZCBzdGQ6OnVuaXF1ZV9wdHI8Q29u
dGVudEZpbHRlcj4gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50RmlsdGVyPihDb250YWluZXImJiwg
RG9jdW1lbnRMb2FkZXImKTsKLSAgICBDb250ZW50RmlsdGVyKENvbnRhaW5lciYmLCBEb2N1bWVu
dExvYWRlciYpOworICAgIHVzaW5nIENvbnRhaW5lciA9IFZlY3RvcjxVbmlxdWVSZWY8UGxhdGZv
cm1Db250ZW50RmlsdGVyPj47CisgICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50Rmls
dGVyPiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRGaWx0ZXI+KENvbnRhaW5lciYmLCBDb250ZW50
RmlsdGVyQ2xpZW50Jik7CisgICAgQ29udGVudEZpbHRlcihDb250YWluZXImJiwgQ29udGVudEZp
bHRlckNsaWVudCYpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPiB2b2lkIGZv
ckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKEZ1bmN0aW9uJiYpOwogICAgIHZvaWQgZGlk
RGVjaWRlKFN0YXRlKTsKICAgICB2b2lkIGRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3Vy
Y2UmKTsKIAotICAgIGNvbnN0IENvbnRhaW5lciBtX2NvbnRlbnRGaWx0ZXJzOwotICAgIERvY3Vt
ZW50TG9hZGVyJiBtX2RvY3VtZW50TG9hZGVyOworICAgIENvbnRhaW5lciBtX2NvbnRlbnRGaWx0
ZXJzOworICAgIENvbnRlbnRGaWx0ZXJDbGllbnQmIG1fY2xpZW50OwogICAgIENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX21haW5SZXNvdXJjZTsKLSAgICBQbGF0Zm9y
bUNvbnRlbnRGaWx0ZXIqIG1fYmxvY2tpbmdDb250ZW50RmlsdGVyIHsgbnVsbHB0ciB9OworICAg
IGNvbnN0IFBsYXRmb3JtQ29udGVudEZpbHRlciogbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXIgeyBu
dWxscHRyIH07CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpTdG9wcGVkIH07CiAgICAgUmVz
b3VyY2VFcnJvciBtX2Jsb2NrZWRFcnJvcjsKICAgICBib29sIG1faXNMb2FkaW5nQmxvY2tlZFBh
Z2UgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRl
ckNsaWVudC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7
CitjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgU3Vic3RpdHV0ZURhdGE7CisKK2NsYXNzIENv
bnRlbnRGaWx0ZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfkNvbnRlbnRGaWx0ZXJD
bGllbnQoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB2b2lkIHJlZigpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGF0
YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgY2hhciosIGludCkgPSAwOworICAg
IHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRl
cihjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92
aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFn
ZVVSTCwgU3Vic3RpdHV0ZURhdGEmKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDI1NDk1OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
Miw2ICsxMDIsOCBAQAogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogI2luY2x1ZGUg
IkNvbnRlbnRGaWx0ZXIuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRSZXF1ZXN0LmgiCisjaW5jbHVk
ZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2VuZGlmCiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKQEAg
LTIxODYsNCArMjE4OCwzNCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjplbnF1ZXVlU2VjdXJpdHlQ
b2xpCiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0
aW9uRXZlbnQoV1RGTW92ZShldmVudEluaXQpKTsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50
RmlsdGVyKGNvbnN0IGNoYXIqIGRhdGEsIGludCBzaXplKQoreworICAgIGRhdGFSZWNlaXZlZChk
YXRhLCBzaXplKTsKK30KKwordm9pZCBEb2N1bWVudExvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNl
TG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAg
Y2FuY2VsTWFpblJlc291cmNlTG9hZChlcnJvcik7Cit9CisKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6
OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwm
IGJsb2NrZWRQYWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCit7CisgICAg
ZnJhbWVMb2FkZXIoKS0+bG9hZChGcmFtZUxvYWRSZXF1ZXN0KCpmcmFtZSgpLCBibG9ja2VkUGFn
ZVVSTCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIHN1YnN0
aXR1dGVEYXRhKSk7Cit9CisKK1Jlc291cmNlRXJyb3IgRG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRG
aWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIs
IFdURjo6U3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCit7CisgICAgdW5ibG9j
a0hhbmRsZXIuc2V0VW5yZWFjaGFibGVVUkwoZG9jdW1lbnRVUkwoKSk7CisgICAgaWYgKCF1bmJs
b2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUoKSkgeworICAgICAgICB1
bmJsb2NrSGFuZGxlci53cmFwV2l0aERlY2lzaW9uSGFuZGxlcihbc2NyaXB0Q29udHJvbGxlciA9
IG1ha2VXZWFrUHRyKGZyYW1lKCktPnNjcmlwdCgpKSwgc2NyaXB0ID0gdW5ibG9ja1JlcXVlc3RE
ZW5pZWRTY3JpcHQuaXNvbGF0ZWRDb3B5KCldKGJvb2wgdW5ibG9ja2VkKSB7CisgICAgICAgICAg
ICBpZiAoIXVuYmxvY2tlZCAmJiBzY3JpcHRDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIHNj
cmlwdENvbnRyb2xsZXItPmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihzY3JpcHQpOwor
ICAgICAgICB9KTsKKyAgICB9CisgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuY29udGVudEZp
bHRlckRpZEJsb2NrTG9hZChXVEZNb3ZlKHVuYmxvY2tIYW5kbGVyKSk7CisgICAgcmV0dXJuIGZy
YW1lTG9hZGVyKCktPmJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihyZXF1ZXN0KCkpOworfQor
I2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlzaW9u
IDI1NDk1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJDYWNoZWRSYXdSZXNvdXJj
ZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAi
Q29udGVudEZpbHRlckNsaWVudC5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeUNs
aWVudC5oIgogI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3Rh
dGUuaCIKICNpbmNsdWRlICJEb2N1bWVudElkZW50aWZpZXIuaCIKQEAgLTE0Miw2ICsxNDMsOSBA
QCBjbGFzcyBEb2N1bWVudExvYWRlcgogICAgIDogcHVibGljIFJlZkNvdW50ZWQ8RG9jdW1lbnRM
b2FkZXI+CiAgICAgLCBwdWJsaWMgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyCiAgICAgLCBwdWJs
aWMgQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQorICAgICwgcHVibGljIENvbnRlbnRGaWx0ZXJDbGllbnQKKyNlbmRpZgogICAgICwgcHJp
dmF0ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RURfV0lUSF9IRUFQX0lERU5USUZJRVIoRG9jdW1lbnRMb2FkZXIpOwogICAgIGZyaWVuZCBjbGFz
cyBDb250ZW50RmlsdGVyOwpAQCAtMzY2LDcgKzM3MCw5IEBAIHB1YmxpYzoKICAgICBTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3Bh
Z2F0ZSgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotICAgIENvbnRl
bnRGaWx0ZXIqIGNvbnRlbnRGaWx0ZXIoKSBjb25zdDsKKyAgICBDb250ZW50RmlsdGVyKiBjb250
ZW50RmlsdGVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50RmlsdGVyLmdldCgpOyB9CisgICAg
dm9pZCByZWYoKSBjb25zdCBmaW5hbCB7IFJlZkNvdW50ZWQ8RG9jdW1lbnRMb2FkZXI+OjpyZWYo
KTsgfQorICAgIHZvaWQgZGVyZWYoKSBjb25zdCBmaW5hbCB7IFJlZkNvdW50ZWQ8RG9jdW1lbnRM
b2FkZXI+OjpkZXJlZigpOyB9CiAjZW5kaWYKIAogICAgIGJvb2wgaXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCkgY29uc3Q7CkBAIC00NDQsNiArNDUwLDE1IEBAIHByaXZhdGU6CiAjZW5kaWYKIAog
ICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
KyAgICAvLyBDb250ZW50RmlsdGVyQ2xpZW50CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRh
UmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBjaGFyKiwgaW50KSBmaW5hbDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2Ny
aXB0KSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxv
YWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZp
bHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYpIGZpbmFsOwor
I2VuZGlmCisKICAgICB2b2lkIGRhdGFSZWNlaXZlZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVu
Z3RoKTsKIAogICAgIGJvb2wgbWF5YmVMb2FkRW1wdHkoKTsKQEAgLTcwMiwxNSArNzE3LDYgQEAg
aW5saW5lIEFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBEb2N1bWVudExvYQogICAgIHJldHVybiBtX2Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LmdldCgpOwogfQogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQotCi1pbmxpbmUgQ29udGVudEZpbHRlciogRG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWx0
ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX2NvbnRlbnRGaWx0ZXIuZ2V0KCk7Ci19Ci0KLSNl
bmRpZgotCiBpbmxpbmUgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkVGVsbENsaWVudEFib3V0TG9h
ZChjb25zdCBTdHJpbmcmIHVybCkKIHsKICNpZiAhUExBVEZPUk0oQ09DT0EpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyLmgJKHJldmlzaW9uIDI1NDk1OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDx3dGYvQ29tcGlsZXIuaD4KICNpbmNs
dWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBlbnVtIE5FRmlsdGVyU291cmNlU3RhdHVzIDogTlNJ
bnRlZ2VyOwogCkBAIC0zOSwxMCArNDAsMTAgQEAgT0JKQ19DTEFTUyBOU0RhdGE7CiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyIGZpbmFs
IDogcHVibGljIFBsYXRmb3JtQ29udGVudEZpbHRlciB7Ci0gICAgZnJpZW5kIHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcj4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcj4oKTsKKyAgICBmcmllbmQgVW5pcXVlUmVmPE5ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyPiBXVEY6Om1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1h
bGxvY0NoZWNrPE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyPigpOwogCiBwdWJsaWM6Ci0g
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcj4g
Y3JlYXRlKCk7CisgICAgc3RhdGljIFVuaXF1ZVJlZjxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlcj4gY3JlYXRlKCk7CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNwb25z
ZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyLm1tCShyZXZpc2lvbiAyNTQ5NTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNzEsOSArNzEsOSBAQCBib29sIE5ldHdvcmtFeHRlbnNpb25Db250ZW50Rmls
dGVyOjplbmFiCiAgICAgcmV0dXJuIGVuYWJsZWQ7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxOZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcj4gTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6
OmNyZWF0ZSgpCitVbmlxdWVSZWY8TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI+IE5ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpjcmVhdGUoKQogewotICAgIHJldHVybiBtYWtlVW5p
cXVlPE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyPigpOworICAgIHJldHVybiBtYWtlVW5p
cXVlUmVmPE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyPigpOwogfQogCiB2b2lkIE5ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjppbml0aWFsaXplKGNvbnN0IFVSTCogdXJsKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRG
aWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJl
bnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCShyZXZpc2lvbiAyNTQ5NTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZW50
RmlsdGVyLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBpbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogT0JKQ19DTEFTUyBOU0RhdGE7
CiBPQkpDX0NMQVNTIFdlYkZpbHRlckV2YWx1YXRvcjsKQEAgLTM1LDEwICszNiwxMCBAQCBPQkpD
X0NMQVNTIFdlYkZpbHRlckV2YWx1YXRvcjsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1Db250
ZW50RmlsdGVyIHsKLSAgICBmcmllbmQgc3RkOjp1bmlxdWVfcHRyPFBhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyPiBzdGQ6Om1ha2VfdW5pcXVlPFBhcmVudGFsQ29udHJvbHNDb250ZW50Rmls
dGVyPigpOworICAgIGZyaWVuZCBVbmlxdWVSZWY8UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0
ZXI+IFdURjo6bWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8UGFyZW50YWxDb250
cm9sc0NvbnRlbnRGaWx0ZXI+KCk7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyPiBjcmVhdGUoKTsKKyAgICBzdGF0aWMg
VW5pcXVlUmVmPFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyPiBjcmVhdGUoKTsKIAogICAg
IHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSBvdmVycmlkZSB7IH0KICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIu
bW0JKHJldmlzaW9uIDI1NDk1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bh
cmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw5ICs2
Nyw5IEBAIGJvb2wgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmVuYWIKICAgICByZXR1
cm4gZW5hYmxlZDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFBhcmVudGFsQ29udHJvbHNDb250ZW50
RmlsdGVyPiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6Y3JlYXRlKCkKK1VuaXF1ZVJl
ZjxQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcj4gUGFyZW50YWxDb250cm9sc0NvbnRlbnRG
aWx0ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFyZW50YWxDb250cm9s
c0NvbnRlbnRGaWx0ZXI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8UGFyZW50YWxDb250
cm9sc0NvbnRlbnRGaWx0ZXI+KCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5IYW5kbGVS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCShyZXZpc2lvbiAyNTQ5NTkp
CisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjIsOSArNjIsOSBAQCBib29sIE1vY2tDb250ZW50RmlsdGVyOjplbmFibGVk
KCkKICAgICByZXR1cm4gZW5hYmxlZDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPE1vY2tDb250ZW50
RmlsdGVyPiBNb2NrQ29udGVudEZpbHRlcjo6Y3JlYXRlKCkKK1VuaXF1ZVJlZjxNb2NrQ29udGVu
dEZpbHRlcj4gTW9ja0NvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIG1ha2VV
bmlxdWU8TW9ja0NvbnRlbnRGaWx0ZXI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8TW9j
a0NvbnRlbnRGaWx0ZXI+KCk7CiB9CiAKIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6OndpbGxTZW5k
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29u
dGVudEZpbHRlci5oCShyZXZpc2lvbiAyNTQ5NTkpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDb250ZW50RmlsdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE1ICsyNywxNiBAQAog
CiAjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtQ29udGVudEZpbHRlci5oIgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBNb2NrQ29udGVudEZpbHRlciBmaW5hbCA6IHB1YmxpYyBQ
bGF0Zm9ybUNvbnRlbnRGaWx0ZXIgewotICAgIGZyaWVuZCBzdGQ6OnVuaXF1ZV9wdHI8TW9ja0Nv
bnRlbnRGaWx0ZXI+IHN0ZDo6bWFrZV91bmlxdWU8TW9ja0NvbnRlbnRGaWx0ZXI+KCk7CisgICAg
ZnJpZW5kIFVuaXF1ZVJlZjxNb2NrQ29udGVudEZpbHRlcj4gV1RGOjptYWtlVW5pcXVlUmVmV2l0
aG91dEZhc3RNYWxsb2NDaGVjazxNb2NrQ29udGVudEZpbHRlcj4oKTsKIAogcHVibGljOgogICAg
IHN0YXRpYyB2b2lkIGVuc3VyZUluc3RhbGxlZCgpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8TW9ja0NvbnRlbnRGaWx0ZXI+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBVbmlxdWVSZWY8TW9j
a0NvbnRlbnRGaWx0ZXI+IGNyZWF0ZSgpOwogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZv
aWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Cg==
</data>
<flag name="review"
          id="404238"
          type_id="1"
          status="+"
          setter="aestes"
    />
          </attachment>
      

    </bug>

</bugzilla>