<?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>11424</bug_id>
          
          <creation_ts>2006-10-26 11:10:58 -0700</creation_ts>
          <short_desc>Cleanup rendering code</short_desc>
          <delta_ts>2006-10-26 13:38:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>49602</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-10-26 11:10:58 -0700</bug_when>
    <thetext>Just some fall cleaning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49603</commentid>
    <comment_count>1</comment_count>
      <attachid>11226</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-10-26 11:13:40 -0700</bug_when>
    <thetext>Created attachment 11226
Patch

Code cleanup of files in Rendering directory not starting with Rendering*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49604</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-10-26 11:36:14 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=11226) [edit]
&gt; Patch
&gt; 
&gt; Code cleanup of files in Rendering directory not starting with Rendering*
&gt; 

Mitz points out that it should be files &quot;not starting with Render*&quot;.  I apologize for any hardships this error may of caused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49606</commentid>
    <comment_count>3</comment_count>
      <attachid>11226</attachid>
    <who name="">mitz</who>
    <bug_when>2006-10-26 12:15:30 -0700</bug_when>
    <thetext>Comment on attachment 11226
Patch

r- only because the first &apos;false&apos; in
+        : InlineBox(obj, 0, y, width, height, baseline, firstLine, false, false, false, 0, 0, parent)

should be &apos;true&apos; (corresponding to m_constructed = true).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49554</commentid>
    <comment_count>4</comment_count>
      <attachid>11227</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-10-26 12:59:26 -0700</bug_when>
    <thetext>Created attachment 11227
updated patch

Updated to fix issue pointed out by mitz.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49555</commentid>
    <comment_count>5</comment_count>
      <attachid>11227</attachid>
    <who name="">mitz</who>
    <bug_when>2006-10-26 13:04:29 -0700</bug_when>
    <thetext>Comment on attachment 11227
updated patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49507</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-10-26 13:38:13 -0700</bug_when>
    <thetext>Landed in r17338.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11226</attachid>
            <date>2006-10-26 11:13:40 -0700</date>
            <delta_ts>2006-10-26 12:59:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>fallclean.diff</filename>
            <type>text/plain</type>
            <size>44734</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNzMyOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzYgQEAKKzIwMDYtMTAtMjYgIFNhbSBXZWluaWcgIDxzYW0ud2VpbmlnQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
aXggZm9yIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDI0CisgICAg
ICAgIENsZWFudXAgcmVuZGVyaW5nIGNvZGUKKworICAgICAgICAtIEFzc29ydGVkIGNvZGUgY2xl
YW51cC4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiByZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcDoKKyAgICAgICAgKiByZW5kZXJp
bmcvQXV0b1RhYmxlTGF5b3V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBdXRvVGFibGVMYXlvdXQ6
OnRvdGFsUGVyY2VudCk6CisgICAgICAgICogcmVuZGVyaW5nL0NvdW50ZXJMaXN0SXRlbS5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9Db3VudGVyTm9kZS5jcHA6CisgICAgICAgICogcmVuZGVyaW5n
L0NvdW50ZXJOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpDb3VudGVyTm9kZTo6fkNvdW50ZXJO
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXJOb2RlOjppc1Jlc2V0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvQ291bnRlclJlc2V0Tm9kZS5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL0Nv
dW50ZXJSZXNldE5vZGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvRGF0YVJlZi5oOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YVJlZjo6RGF0YVJlZik6CisgICAgICAgICogcmVuZGVyaW5nL0RlcHJl
Y2F0ZWRSZW5kZXJTZWxlY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvRGVwcmVjYXRlZFNsaWRl
ci5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL0RlcHJlY2F0ZWRTbGlkZXIuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9FbGxpcHNp
c0JveC5oOgorICAgICAgICAoV2ViQ29yZTo6RWxsaXBzaXNCb3g6OkVsbGlwc2lzQm94KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5jcHA6CisgICAgICAgICogcmVuZGVy
aW5nL0ZpeGVkVGFibGVMYXlvdXQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvR2FwUmVjdHMuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lQm94LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcv
SW5saW5lQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OklubGluZUJveCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OnNldENvbnN0cnVjdGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OklubGluZUJveDo6Y2xlYXJUcnVuY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUJveDo6bWFya0RpcnR5KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5j
cHA6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaDoKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUZsb3dCb3g6OklubGluZUZsb3dCb3gpOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lRmxvd0JveDo6c2V0Q29uc3RydWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxv
d0JveDo6c2V0RWRnZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6c2V0VmVy
dGljYWxPdmVyZmxvd1Bvc2l0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94
OjpzZXRWZXJ0aWNhbFNlbGVjdGlvblBvc2l0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL0lu
bGluZVJ1bkJveC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lUnVuQm94OjpwYWludEJhY2tn
cm91bmRBbmRCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lUnVuQm94OjpwYWludERl
Y29yYXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAg
ICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZVRleHRCb3g6OklubGluZVRleHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJv
eDo6ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnRleHRPYmplY3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9MZW5ndGguaDoKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6
TGVuZ3RoKToKKyAgICAgICAgKiByZW5kZXJpbmcvTGlzdE1hcmtlckJveC5jcHA6CisgICAgICAg
ICogcmVuZGVyaW5nL0xpc3RNYXJrZXJCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
UGFydE9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9T
VkdJbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvU1ZHSW5saW5lRmxvd0Jv
eC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lRmxvd0JveDo6U1ZHSW5saW5lRmxvd0Jv
eCk6CisgICAgICAgICogcmVuZGVyaW5nL1NWR1Jvb3RJbmxpbmVCb3guY3BwOgorICAgICAgICAq
IHJlbmRlcmluZy9TVkdSb290SW5saW5lQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdSb290
SW5saW5lQm94OjpTVkdSb290SW5saW5lQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvVGFibGVM
YXlvdXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRhYmxlTGF5b3V0OjpUYWJsZUxheW91dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUYWJsZUxheW91dDo6flRhYmxlTGF5b3V0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvYmlkaS5oOgorICAgICAgICAoV2ViQ29yZTo6QmlkaVN0YXR1czo6QmlkaVN0YXR1
cyk6CisgICAgICAgIChXZWJDb3JlOjpCaWRpUnVuOjpCaWRpUnVuKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvYnJlYWtfbGluZXMuaDoKKwogMjAwNi0xMC0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzLgpJbmRleDogV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE3MzIyKQorKysgV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTg3NTAsOCArODc1MCw2IEBACiAJCUY1MjNEMkYzMDJERTQ0M0IwMTg2MzVDQSAvKiByZW5kZXJp
bmcgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUFCQjU0
MTlDMEFDRERGRTQwMDI4MjBFQiAvKiBSZW5kZXJMaXN0Qm94LmNwcCAqLywKLQkJCQlBQkI1NDE5
RDBBQ0RERkU0MDAyODIwRUIgLyogUmVuZGVyTGlzdEJveC5oICovLAogCQkJCUE4Q0ZGMDRCMEEx
NTRGMDkwMDBBNDIzNCAvKiBBdXRvVGFibGVMYXlvdXQuY3BwICovLAogCQkJCUE4Q0ZGMDQ5MEEx
NTRGMDkwMDBBNDIzNCAvKiBBdXRvVGFibGVMYXlvdXQuaCAqLywKIAkJCQlCQ0VBNDgxMzA5N0Q5
MzAyMDA5NEM5RTQgLyogYmlkaS5jcHAgKi8sCkBAIC04ODI5LDYgKzg4MjcsOCBAQAogCQkJCUE4
RUE3M0JEMEExOTAwRTMwMEE4RUY1RiAvKiBSZW5kZXJMZWdlbmQuaCAqLywKIAkJCQlBOEVBNzNC
RTBBMTkwMEUzMDBBOEVGNUYgLyogUmVuZGVyTGluZUVkaXQuY3BwICovLAogCQkJCUE4RUE3M0Ix
MEExOTAwRTMwMEE4RUY1RiAvKiBSZW5kZXJMaW5lRWRpdC5oICovLAorCQkJCUFCQjU0MTlDMEFD
RERGRTQwMDI4MjBFQiAvKiBSZW5kZXJMaXN0Qm94LmNwcCAqLywKKwkJCQlBQkI1NDE5RDBBQ0RE
RkU0MDAyODIwRUIgLyogUmVuZGVyTGlzdEJveC5oICovLAogCQkJCUE4RUE3QTQ4MEExOTFBNTIw
MEE4RUY1RiAvKiBSZW5kZXJMaXN0SXRlbS5jcHAgKi8sCiAJCQkJQThFQTdBNEMwQTE5MUE1MjAw
QThFRjVGIC8qIFJlbmRlckxpc3RJdGVtLmggKi8sCiAJCQkJQThFQTdBNEIwQTE5MUE1MjAwQThF
RjVGIC8qIFJlbmRlckxpc3RNYXJrZXIuY3BwICovLApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcv
QXV0b1RhYmxlTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9BdXRv
VGFibGVMYXlvdXQuY3BwCShyZXZpc2lvbiAxNzMyMikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL0F1
dG9UYWJsZUxheW91dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcgQEAKICAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRl
IDMzMCwKICAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogICovCisKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJBdXRvVGFibGVMYXlvdXQuaCIKIApJbmRleDogV2ViQ29yZS9y
ZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvQXV0b1RhYmxlTGF5b3V0LmgJKHJldmlzaW9uIDE3MzIyKQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvQXV0b1RhYmxlTGF5b3V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVuZGVyVGFibGU7CiBjbGFzcyBSZW5kZXJUYWJsZUNl
bGw7CiAKLWNsYXNzIEF1dG9UYWJsZUxheW91dCA6IHB1YmxpYyBUYWJsZUxheW91dAoteworY2xh
c3MgQXV0b1RhYmxlTGF5b3V0IDogcHVibGljIFRhYmxlTGF5b3V0IHsKIHB1YmxpYzoKICAgICBB
dXRvVGFibGVMYXlvdXQoUmVuZGVyVGFibGUqKTsKICAgICB+QXV0b1RhYmxlTGF5b3V0KCk7CkBA
IC00NCwxMyArNDMsMTcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIHZvaWQgZnVsbFJlY2Fs
YygpOwogICAgIHZvaWQgcmVjYWxjQ29sdW1uKGludCBlZmZDb2wpOwotICAgIGludCB0b3RhbFBl
cmNlbnQoKSBjb25zdCB7CisKKyAgICB2b2lkIGNhbGNQZXJjZW50YWdlcygpIGNvbnN0OworICAg
IGludCB0b3RhbFBlcmNlbnQoKSBjb25zdAorICAgIHsKICAgICAgICAgaWYgKG1fcGVyY2VudGFn
ZXNEaXJ0eSkKICAgICAgICAgICAgIGNhbGNQZXJjZW50YWdlcygpOwogICAgICAgICByZXR1cm4g
bV90b3RhbFBlcmNlbnQ7CiAgICAgfQotICAgIHZvaWQgY2FsY1BlcmNlbnRhZ2VzKCkgY29uc3Q7
CisKICAgICBpbnQgY2FsY0VmZmVjdGl2ZVdpZHRoKCk7CisKICAgICB2b2lkIGluc2VydFNwYW5D
ZWxsKFJlbmRlclRhYmxlQ2VsbCopOwogCiAgICAgc3RydWN0IExheW91dCB7CkBAIC03Nyw2ICs4
MCw2IEBAIHByb3RlY3RlZDoKICAgICBtdXRhYmxlIHVuc2lnbmVkIHNob3J0IG1fdG90YWxQZXJj
ZW50OwogfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAv
LyBBdXRvVGFibGVMYXlvdXRfSApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvQ291bnRlckxpc3RJ
dGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvQ291bnRlckxpc3RJdGVtLmgJ
KHJldmlzaW9uIDE3MzIyKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvQ291bnRlckxpc3RJdGVtLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDE2ICsyOCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIENvdW50ZXJMaXN0SXRlbSA6IHB1YmxpYyBDb3VudGVyTm9kZQoteworY2xhc3Mg
Q291bnRlckxpc3RJdGVtIDogcHVibGljIENvdW50ZXJOb2RlIHsKIHB1YmxpYzoKICAgICBpbnQg
Y291bnQoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCByZWNvdW50KGJvb2wgc2V0RGlydHkg
PSB0cnVlKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZkRpcnR5KCk7Ci0KIH07CiAKLX0gLy9u
YW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8gQ291
bnRlckxpc3RJdGVtX0gKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9Db3VudGVyTm9kZS5jcHAJKHJldmlzaW9u
IDE3MzIyKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvQ291bnRlck5vZGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDgsNCArMTA4LDQgQEAgdm9pZCBDb3VudGVyTm9kZTo6c2V0UGFyZW50RGlydHko
KQogICAgICAgICBtX3JlbmRlcmVyLT5zZXROZWVkc0xheW91dEFuZE1pbk1heFJlY2FsYygpOwog
fQogCi19IC8vIG5hbWVzcGFjZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvQ291bnRlck5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmlu
Zy9Db3VudGVyTm9kZS5oCShyZXZpc2lvbiAxNzMyMikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL0Nv
dW50ZXJOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDggKzIwLDggQEAKICAqIEJvc3Rvbiwg
TUEgMDIxMTEtMTMwNywgVVNBLgogICoKICovCi0jaWZuZGVmIENvdW50ZXJfTm9kZV9oXwotI2Rl
ZmluZSBDb3VudGVyX05vZGVfaF8KKyNpZm5kZWYgQ291bnRlck5vZGVfaAorI2RlZmluZSBDb3Vu
dGVyTm9kZV9oCiAKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKIApAQCAtMzcsNyArMzcsNyBA
QCBjbGFzcyBDb3VudGVyUmVzZXROb2RlOwogY2xhc3MgQ291bnRlck5vZGUgewogcHVibGljOgog
ICAgIENvdW50ZXJOb2RlKFJlbmRlck9iamVjdCopOwotICAgIHZpcnR1YWwgfkNvdW50ZXJOb2Rl
KCkge30KKyAgICB2aXJ0dWFsIH5Db3VudGVyTm9kZSgpIHsgfQogCiAgICAgQ291bnRlclJlc2V0
Tm9kZSogcGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnQ7IH0KICAgICBDb3VudGVyTm9k
ZSogcHJldmlvdXNTaWJsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91czsgfQpAQCAtNDUs
NyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBDb3VudGVyTm9kZSogZmlyc3RDaGlsZCgp
IGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIENvdW50ZXJOb2RlKiBsYXN0Q2hpbGQo
KSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCB2b2lkIGluc2VydEFmdGVyKENvdW50
ZXJOb2RlKiBuZXdDaGlsZCwgQ291bnRlck5vZGUqIHJlZkNoaWxkKTsKLSAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlQ2hpbGQgKENvdW50ZXJOb2RlKiBvbGRDaGlsZCk7CisgICAgdmlydHVhbCB2b2lk
IHJlbW92ZUNoaWxkKENvdW50ZXJOb2RlKik7CiAgICAgdm9pZCByZW1vdmUoKTsKIAogICAgIGlu
dCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KQEAgLTU0LDcgKzU0LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0Q291bnQoaW50IGMpIHsgbV9jb3VudCA9IGM7IH0KICAgICB2b2lk
IHNldEhhc1NlcGFyYXRvcigpIHsgbV9oYXNTZXBhcmF0b3IgPSB0cnVlOyB9CiAKLSAgICB2aXJ0
dWFsIGJvb2wgaXNSZXNldCgpIGNvbnN0eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNSZXNldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBDb3VudGVy
Tm9kZSogcmVjb3VudEFuZEdldE5leHQoYm9vbCBzZXREaXJ0eSA9IHRydWUpOwogICAgIHZpcnR1
YWwgdm9pZCByZWNvdW50VHJlZShib29sIHNldERpcnR5ID0gdHJ1ZSk7CiAgICAgdmlydHVhbCB2
b2lkIHNldFNlbGZEaXJ0eSgpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvQ291bnRlclJlc2V0
Tm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvQ291bnRlclJlc2V0Tm9k
ZS5jcHAJKHJldmlzaW9uIDE3MzIyKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvQ291bnRlclJlc2V0
Tm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw0ICsxNTMsNCBAQCB2b2lkIENvdW50ZXJS
ZXNldE5vZGU6OnVwZGF0ZVRvdGFsKGludCB2CiAgICAgICAgIG1fdG90YWwgPSB2YWx1ZTsKIH0K
IAotfSAvLyBuYW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL0NvdW50ZXJSZXNldE5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRl
cmluZy9Db3VudGVyUmVzZXROb2RlLmgJKHJldmlzaW9uIDE3MzIyKQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvQ291bnRlclJlc2V0Tm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw4IEBA
CiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqCiAqLwotI2lmbmRlZiBDb3VudGVy
X1Jlc2V0X05vZGVfaF8KLSNkZWZpbmUgQ291bnRlcl9SZXNldF9Ob2RlX2hfCisjaWZuZGVmIENv
dW50ZXJSZXNldE5vZGVfaAorI2RlZmluZSBDb3VudGVyUmVzZXROb2RlX2gKIAogI2luY2x1ZGUg
IkNvdW50ZXJOb2RlLmgiCiAKQEAgLTM0LDE0ICszNCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIC8vIEltcGxlbWVudGF0aW9uIG9mIGNvdW50ZXItcmVzZXQgYW5kIHJvb3QKIGNsYXNzIENv
dW50ZXJSZXNldE5vZGUgOiBwdWJsaWMgQ291bnRlck5vZGUgewotCiBwdWJsaWM6CiAgICAgQ291
bnRlclJlc2V0Tm9kZShSZW5kZXJPYmplY3QqKTsKIAogICAgIHZpcnR1YWwgQ291bnRlck5vZGUq
IGZpcnN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0OyB9OwogICAgIHZpcnR1YWwgQ291
bnRlck5vZGUqIGxhc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdDsgfTsKICAgICB2aXJ0
dWFsIHZvaWQgaW5zZXJ0QWZ0ZXIoQ291bnRlck5vZGUqIG5ld0NoaWxkLCBDb3VudGVyTm9kZSog
cmVmQ2hpbGQpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDaGlsZCAoQ291bnRlck5vZGUqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2hpbGQoQ291bnRlck5vZGUqKTsKIAogICAgIHZpcnR1
YWwgYm9vbCBpc1Jlc2V0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfTsKICAgICB2aXJ0dWFsIENv
dW50ZXJOb2RlKiByZWNvdW50QW5kR2V0TmV4dChib29sIHNldERpcnR5ID0gdHJ1ZSk7CkluZGV4
OiBXZWJDb3JlL3JlbmRlcmluZy9EYXRhUmVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5k
ZXJpbmcvRGF0YVJlZi5oCShyZXZpc2lvbiAxNzMyMikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL0Rh
dGFSZWYuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTAgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIERhdGFSZWYKLXsKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBEYXRhUmVmIHsKIHB1YmxpYzoKLSAgICBEYXRhUmVmKCkg
OiBtX2RhdGEoMCkgeyB9CisgICAgRGF0YVJlZigpCisgICAgICAgIDogbV9kYXRhKDApCisgICAg
eworICAgIH0KIAogICAgIERhdGFSZWYoY29uc3QgRGF0YVJlZjxUPiYgZCkKICAgICB7CkBAIC05
OCw2ICsxMDAsNiBAQCBwcml2YXRlOgogICAgIFQqIG1fZGF0YTsKIH07CiAKLX0KK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8gRGF0YVJlZl9oCkluZGV4OiBXZWJD
b3JlL3JlbmRlcmluZy9EZXByZWNhdGVkUmVuZGVyU2VsZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvRGVwcmVjYXRlZFJlbmRlclNlbGVjdC5oCShyZXZpc2lvbiAxNzMyMikK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL0RlcHJlY2F0ZWRSZW5kZXJTZWxlY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIlJlbmRlckZvcm1FbGVtZW50LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKKwogICAgIGNsYXNzIEhUTUxTZWxlY3RFbGVtZW50
OwogICAgIGNsYXNzIExpc3RCb3g7CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL0RlcHJlY2F0
ZWRTbGlkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL0RlcHJlY2F0ZWRT
bGlkZXIuY3BwCShyZXZpc2lvbiAxNzMyMikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL0RlcHJlY2F0
ZWRTbGlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAi
RGVwcmVjYXRlZFNsaWRlci5oIgogCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKICNpbmNsdWRlICJTbGlkZXIuaCIKIAogdXNpbmcgc3RkOjptaW47CkluZGV4
OiBXZWJDb3JlL3JlbmRlcmluZy9EZXByZWNhdGVkU2xpZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvRGVwcmVjYXRlZFNsaWRlci5oCShyZXZpc2lvbiAxNzMyMikKKysrIFdl
YkNvcmUvcmVuZGVyaW5nL0RlcHJlY2F0ZWRTbGlkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
MTEgKzMxLDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBIVE1MSW5wdXRF
bGVtZW50OwotICAgIAorCiAgICAgY2xhc3MgRGVwcmVjYXRlZFNsaWRlciA6IHB1YmxpYyBSZW5k
ZXJGb3JtRWxlbWVudCB7CiAgICAgcHVibGljOgogICAgICAgICBEZXByZWNhdGVkU2xpZGVyKEhU
TUxJbnB1dEVsZW1lbnQqKTsKLSAgICAgICAgCisKICAgICAgICAgdmlydHVhbCBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIkRlcHJlY2F0ZWRTbGlkZXIiOyB9CiAKICAg
ICAgICAgdmlydHVhbCB2b2lkIGNhbGNNaW5NYXhXaWR0aCgpOwpAQCAtNDUsNyArNDUsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB2YWx1ZUNoYW5nZWQoV2lk
Z2V0Kik7CiAgICAgfTsKIAotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBE
ZXByZWNhdGVkU2xpZGVyX2gKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAJKHJldmlz
aW9uIDE3MzIyKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOCw3ICsxOCw2IEBACiAgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCiAgKiBCb3N0b24sIE1BIDAyMTEx
LTEzMDcsIFVTQS4KICAqLwotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiRWxsaXBzaXNCb3guaCIKQEAgLTg0LDQgKzgzLDQgQEAgYm9vbCBFbGxp
cHNpc0JveDo6bm9kZUF0UG9pbnQoUmVuZGVyT2JqZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
fQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBz
aXNCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5oCShy
ZXZpc2lvbiAxNzMyMikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDIzICsyOCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEVsbGlwc2lzQm94IDogcHVibGljIElubGluZUJveCB7CiBwdWJsaWM6Ci0gICAgRWxsaXBzaXNC
b3goUmVuZGVyT2JqZWN0KiBvYmosIGNvbnN0IEF0b21pY1N0cmluZyYgZWxsaXBzaXNTdHIsIElu
bGluZUZsb3dCb3gqIHAsCi0gICAgICAgICAgICAgICAgaW50IHcsIGludCB5LCBpbnQgaCwgaW50
IGIsIGJvb2wgZmlyc3RMaW5lLCBJbmxpbmVCb3gqIG1hcmt1cEJveCkKLSAgICAgICAgOiBJbmxp
bmVCb3gob2JqKQorICAgIEVsbGlwc2lzQm94KFJlbmRlck9iamVjdCogb2JqLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGVsbGlwc2lzU3RyLCBJbmxpbmVGbG93Qm94KiBwYXJlbnQsCisgICAgICAgICAg
ICAgICAgaW50IHdpZHRoLCBpbnQgeSwgaW50IGhlaWdodCwgaW50IGJhc2VsaW5lLCBib29sIGZp
cnN0TGluZSwgSW5saW5lQm94KiBtYXJrdXBCb3gpCisgICAgICAgIDogSW5saW5lQm94KG9iaiwg
MCwgeSwgd2lkdGgsIGhlaWdodCwgYmFzZWxpbmUsIGZpcnN0TGluZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgMCwgMCwgcGFyZW50KQogICAgICAgICAsIG1fc3RyKGVsbGlwc2lzU3RyKQorICAgICAg
ICAsIG1fbWFya3VwQm94KG1hcmt1cEJveCkKICAgICB7Ci0gICAgICAgIG1fcGFyZW50ID0gcDsK
LSAgICAgICAgbV93aWR0aCA9IHc7Ci0gICAgICAgIG1feSA9IHk7Ci0gICAgICAgIG1faGVpZ2h0
ID0gaDsKLSAgICAgICAgbV9iYXNlbGluZSA9IGI7Ci0gICAgICAgIG1fZmlyc3RMaW5lID0gZmly
c3RMaW5lOwotICAgICAgICBtX2NvbnN0cnVjdGVkID0gdHJ1ZTsKLSAgICAgICAgbV9tYXJrdXBC
b3ggPSBtYXJrdXBCb3g7CiAgICAgfQotICAgIAotICAgIHZpcnR1YWwgdm9pZCBwYWludChSZW5k
ZXJPYmplY3Q6OlBhaW50SW5mbyYgaSwgaW50IF90eCwgaW50IF90eSk7Ci0gICAgdmlydHVhbCBi
b29sIG5vZGVBdFBvaW50KFJlbmRlck9iamVjdDo6Tm9kZUluZm8mIGluZm8sIGludCBfeCwgaW50
IF95LCBpbnQgX3R4LCBpbnQgX3R5KTsKKworICAgIHZpcnR1YWwgdm9pZCBwYWludChSZW5kZXJP
YmplY3Q6OlBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5KTsKKyAgICB2aXJ0dWFsIGJvb2wgbm9k
ZUF0UG9pbnQoUmVuZGVyT2JqZWN0OjpOb2RlSW5mbyYsIGludCB4LCBpbnQgeSwgaW50IHR4LCBp
bnQgdHkpOwogCiBwcml2YXRlOgogICAgIEF0b21pY1N0cmluZyBtX3N0cjsKSW5kZXg6IFdlYkNv
cmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwCShyZXZpc2lvbiAxNzMyMikKKysrIFdlYkNv
cmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzYs
NCArMzM2LDQgQEAgdm9pZCBGaXhlZFRhYmxlTGF5b3V0OjpsYXlvdXQoKQogCiAjdW5kZWYgREVC
VUdfTEFZT1VUCiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmlu
Zy9GaXhlZFRhYmxlTGF5b3V0LmgJKHJldmlzaW9uIDE3MzIyKQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvRml4ZWRUYWJsZUxheW91dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyVGFibGU7CiAKLWNsYXNzIEZpeGVkVGFi
bGVMYXlvdXQgOiBwdWJsaWMgVGFibGVMYXlvdXQKLXsKK2NsYXNzIEZpeGVkVGFibGVMYXlvdXQg
OiBwdWJsaWMgVGFibGVMYXlvdXQgewogcHVibGljOgogICAgIEZpeGVkVGFibGVMYXlvdXQoUmVu
ZGVyVGFibGUqKTsKICAgICB+Rml4ZWRUYWJsZUxheW91dCgpOwpAQCAtNDYsNiArNDUsNiBAQCBw
cm90ZWN0ZWQ6CiAgICAgVmVjdG9yPExlbmd0aD4gbV93aWR0aDsKIH07CiAKLX0KK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8gRml4ZWRUYWJsZUxheW91dF9ICklu
ZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9HYXBSZWN0cy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cmVuZGVyaW5nL0dhcFJlY3RzLmgJKHJldmlzaW9uIDE3MzIyKQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvR2FwUmVjdHMuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIEludFJlY3QgbV9yaWdodDsKICAgICB9OwogCi19Cit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlmIC8vIEdhcFJlY3RzX2gKSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lQm94LmNwcAkocmV2aXNpb24gMTczMjIpCisrKyBXZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOCwxMiArMTgsMTMgQEAKICAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRl
IDMzMCwKICAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogICovCisKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJJbmxpbmVCb3guaCIKIAogI2luY2x1ZGUgIklubGluZUZsb3dC
b3guaCIKLSNpbmNsdWRlICJSb290SW5saW5lQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyQXJlbmEu
aCIKKyNpbmNsdWRlICJSb290SW5saW5lQm94LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAK
QEAgLTIzOCw3ICsyMzksNyBAQCBpbnQgSW5saW5lQm94OjpwbGFjZUVsbGlwc2lzQm94KGJvb2wg
bHRyCiAgICAgcmV0dXJuIC0xOwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNp
Zm5kZWYgTkRFQlVHCiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5oCShyZXZpc2lvbiAxNzMyMikK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4
ICszMSw3IEBAIGNsYXNzIFJvb3RJbmxpbmVCb3g7CiAKIC8vIElubGluZUJveCByZXByZXNlbnRz
IGEgcmVjdGFuZ2xlIHRoYXQgb2NjdXJzIG9uIGEgbGluZS4gIEl0IGNvcnJlc3BvbmRzIHRvCiAv
LyBzb21lIFJlbmRlck9iamVjdCAoaS5lLiwgaXQgcmVwcmVzZW50cyBhIHBvcnRpb24gb2YgdGhh
dCBSZW5kZXJPYmplY3QpLgotY2xhc3MgSW5saW5lQm94Ci17CitjbGFzcyBJbmxpbmVCb3ggewog
cHVibGljOgogICAgIElubGluZUJveChSZW5kZXJPYmplY3QqIG9iaikKICAgICAgICAgOiBtX29i
amVjdChvYmopCkBAIC01MSw2ICs1MCwyNCBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAorICAg
IElubGluZUJveChSZW5kZXJPYmplY3QqIG9iaiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQsIGludCBiYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIGJvb2wgY29uc3RydWN0ZWQs
CisgICAgICAgICAgICAgIGJvb2wgZGlydHksIGJvb2wgZXh0cmFjdGVkLCBJbmxpbmVCb3gqIG5l
eHQsIElubGluZUJveCogcHJldiwgSW5saW5lRmxvd0JveCogcGFyZW50KQorICAgICAgICA6IG1f
b2JqZWN0KG9iaikKKyAgICAgICAgLCBtX3goeCkKKyAgICAgICAgLCBtX3koeSkKKyAgICAgICAg
LCBtX3dpZHRoKHdpZHRoKQorICAgICAgICAsIG1faGVpZ2h0KGhlaWdodCkKKyAgICAgICAgLCBt
X2Jhc2VsaW5lKGJhc2VsaW5lKQorICAgICAgICAsIG1fZmlyc3RMaW5lKGZpcnN0TGluZSkKKyAg
ICAgICAgLCBtX2NvbnN0cnVjdGVkKGNvbnN0cnVjdGVkKQorICAgICAgICAsIG1fZGlydHkoZGly
dHkpCisgICAgICAgICwgbV9leHRyYWN0ZWQoZXh0cmFjdGVkKQorICAgICAgICAsIG1fbmV4dChu
ZXh0KQorICAgICAgICAsIG1fcHJldihwcmV2KQorICAgICAgICAsIG1fcGFyZW50KHBhcmVudCkK
KyAgICB7CisgICAgfQorCiAgICAgdmlydHVhbCB+SW5saW5lQm94KCkgeyB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGVzdHJveShSZW5kZXJBcmVuYSopOwpAQCAtNjMsOSArODAsOSBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0UG9zaXRpb24oaW50IGR4LCBpbnQgZHkpOwogCi0g
ICAgdmlydHVhbCB2b2lkIHBhaW50KFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgaW50IF90eCwg
aW50IF90eSk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFJlbmRlck9iamVjdDo6UGFpbnRJbmZv
JiwgaW50IHR4LCBpbnQgdHkpOwogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChSZW5kZXJP
YmplY3Q6Ok5vZGVJbmZvJiwgaW50IHgsIGludCB5LCBpbnQgdHgsIGludCB0eSk7Ci0gICAgCisK
ICAgICAvLyBPdmVybG9hZGVkIG5ldyBvcGVyYXRvci4KICAgICB2b2lkKiBvcGVyYXRvciBuZXco
c2l6ZV90LCBSZW5kZXJBcmVuYSopIHRocm93KCk7CiAKQEAgLTc1LDcgKzkyLDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICAvLyBUaGUgbm9ybWFsIG9wZXJhdG9yIG5ldyBpcyBkaXNhbGxvd2Vk
LgogICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QpIHRocm93KCk7Ci0gICAgCisKIHB1Ymxp
YzoKICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBzaG93VHJlZUZvclRoaXMoKSBjb25zdDsKQEAg
LTg5LDExICsxMDYsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1RleHQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgYm9vbCBpc0NvbnN0cnVjdGVkKCkgeyByZXR1cm4g
bV9jb25zdHJ1Y3RlZDsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRDb25zdHJ1Y3RlZCgpIHsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q29uc3RydWN0ZWQoKQorICAgIHsKICAgICAgICAgbV9jb25zdHJ1
Y3RlZCA9IHRydWU7CiAgICAgICAgIGlmIChtX25leHQpCiAgICAgICAgICAgICBtX25leHQtPnNl
dENvbnN0cnVjdGVkKCk7CiAgICAgfQorCiAgICAgdm9pZCBzZXRFeHRyYWN0ZWQoYm9vbCBiID0g
dHJ1ZSkgeyBtX2V4dHJhY3RlZCA9IGI7IH0KICAgICAKICAgICB2b2lkIHNldEZpcnN0TGluZVN0
eWxlQml0KGJvb2wgZikgeyBtX2ZpcnN0TGluZSA9IGY7IH0KQEAgLTE0OCwxMCArMTY3LDEwIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBjYXJldE1heE9mZnNldCgpIGNvbnN0OwogICAgIHZp
cnR1YWwgdW5zaWduZWQgY2FyZXRNYXhSZW5kZXJlZE9mZnNldCgpIGNvbnN0OwogICAgIAotICAg
IHZpcnR1YWwgdm9pZCBjbGVhclRydW5jYXRpb24oKSB7fTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xl
YXJUcnVuY2F0aW9uKCkgeyB9CiAKICAgICBib29sIGlzRGlydHkoKSBjb25zdCB7IHJldHVybiBt
X2RpcnR5OyB9Ci0gICAgdm9pZCBtYXJrRGlydHkoYm9vbCBkaXJ0eT10cnVlKSB7IG1fZGlydHkg
PSBkaXJ0eTsgfQorICAgIHZvaWQgbWFya0RpcnR5KGJvb2wgZGlydHkgPSB0cnVlKSB7IG1fZGly
dHkgPSBkaXJ0eTsgfQogCiAgICAgdm9pZCBkaXJ0eUxpbmVCb3hlcygpOwogICAgIApAQCAtMTY5
LDcgKzE4OCw3IEBAIHB1YmxpYzogLy8gRklYTUU6IFdvdWxkIGxpa2UgdG8gbWFrZSB0aGkKICAg
ICBpbnQgbV93aWR0aDsKICAgICBpbnQgbV9oZWlnaHQ7CiAgICAgaW50IG1fYmFzZWxpbmU7Ci0g
ICAgCisKICAgICBib29sIG1fZmlyc3RMaW5lIDogMTsKICAgICBib29sIG1fY29uc3RydWN0ZWQg
OiAxOwogICAgIGJvb2wgbV9kaXJ0eSA6IDE7CkBAIC0xODEsMTEgKzIwMCwxMSBAQCBwdWJsaWM6
IC8vIEZJWE1FOiBXb3VsZCBsaWtlIHRvIG1ha2UgdGhpCiAgICAgSW5saW5lRmxvd0JveCogbV9w
YXJlbnQ7IC8vIFRoZSBib3ggdGhhdCBjb250YWlucyB1cy4KIH07CiAKLX0gLy9uYW1lc3BhY2UK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2lmbmRlZiBOREVCVUcKIC8vIE91dHNpZGUgdGhl
IFdlYkNvcmUgbmFtZXNwYWNlIGZvciBlYXNlIG9mIGludm9jYXRpb24gZnJvbSBnZGIuCiB2b2lk
IHNob3dUcmVlKGNvbnN0IFdlYkNvcmU6OklubGluZUJveCopOwogI2VuZGlmCiAKLSNlbmRpZgor
I2VuZGlmIC8vIElubGluZUJveF9ICkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93
Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNw
cAkocmV2aXNpb24gMTczMjIpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTgsNiArMTgsNyBAQAogICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAogICogQm9zdG9u
LCBNQSAwMjExMS0xMzA3LCBVU0EuCiAgKi8KKwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIklubGluZUZsb3dCb3guaCIKIApAQCAtMjYsMTEgKzI3LDExIEBACiAjaW5jbHVkZSAiRWxs
aXBzaXNCb3guaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbmxp
bmVUZXh0Qm94LmgiCi0jaW5jbHVkZSAiUm9vdElubGluZUJveC5oIgogI2luY2x1ZGUgIlJlbmRl
ckJsb2NrLmgiCiAjaW5jbHVkZSAiUmVuZGVyRmxvdy5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RN
YXJrZXIuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKKyNpbmNsdWRlICJSb290SW5s
aW5lQm94LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTg0OSw0ICs4NTAsNCBAQCB2
b2lkIElubGluZUZsb3dCb3g6OmNsZWFyVHJ1bmNhdGlvbigpCiAgICAgICAgIGJveC0+Y2xlYXJU
cnVuY2F0aW9uKCk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCShyZXZpc2lvbiAxNzMyMikKKysrIFdl
YkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTcg
KzI3LDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW5saW5lRmxvd0JveCA6
IHB1YmxpYyBJbmxpbmVSdW5Cb3gKLXsKK2NsYXNzIElubGluZUZsb3dCb3ggOiBwdWJsaWMgSW5s
aW5lUnVuQm94IHsKIHB1YmxpYzoKICAgICBJbmxpbmVGbG93Qm94KFJlbmRlck9iamVjdCogb2Jq
KQotICAgIDpJbmxpbmVSdW5Cb3gob2JqKQorICAgICAgICA6IElubGluZVJ1bkJveChvYmopCisg
ICAgICAgICwgbV9maXJzdENoaWxkKDApCisgICAgICAgICwgbV9sYXN0Q2hpbGQoMCkKKyAgICAg
ICAgLCBtX21heEhvcml6b250YWxTaGFkb3coMCkKKyAgICAgICAgLCBtX2luY2x1ZGVMZWZ0RWRn
ZShmYWxzZSkKKyAgICAgICAgLCBtX2luY2x1ZGVSaWdodEVkZ2UoZmFsc2UpCisgICAgICAgICwg
bV9oYXNUZXh0Q2hpbGRyZW4oZmFsc2UpCiAgICAgewotICAgICAgICBtX2ZpcnN0Q2hpbGQgPSAw
OwotICAgICAgICBtX2xhc3RDaGlsZCA9IDA7Ci0gICAgICAgIG1faW5jbHVkZUxlZnRFZGdlID0g
bV9pbmNsdWRlUmlnaHRFZGdlID0gZmFsc2U7Ci0gICAgICAgIG1faGFzVGV4dENoaWxkcmVuID0g
ZmFsc2U7Ci0gICAgICAgIG1fbWF4SG9yaXpvbnRhbFNoYWRvdyA9IDA7CiAgICAgfQogCiAgICAg
UmVuZGVyRmxvdyogZmxvd09iamVjdCgpOwpAQCAtNDYsMzcgKzQ2LDM4IEBAIHB1YmxpYzoKIAog
ICAgIElubGluZUZsb3dCb3gqIHByZXZGbG93Qm94KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8SW5saW5lRmxvd0JveCo+KG1fcHJldkxpbmUpOyB9CiAgICAgSW5saW5lRmxvd0JveCogbmV4
dEZsb3dCb3goKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJbmxpbmVGbG93Qm94Kj4obV9u
ZXh0TGluZSk7IH0KLSAgICAKKwogICAgIElubGluZUJveCogZmlyc3RDaGlsZCgpIHsgcmV0dXJu
IG1fZmlyc3RDaGlsZDsgfQogICAgIElubGluZUJveCogbGFzdENoaWxkKCkgeyByZXR1cm4gbV9s
YXN0Q2hpbGQ7IH0KIAogICAgIHZpcnR1YWwgSW5saW5lQm94KiBmaXJzdExlYWZDaGlsZCgpOwog
ICAgIHZpcnR1YWwgSW5saW5lQm94KiBsYXN0TGVhZkNoaWxkKCk7Ci0gICAgSW5saW5lQm94KiBm
aXJzdExlYWZDaGlsZEFmdGVyQm94KElubGluZUJveCogc3RhcnQ9MCk7Ci0gICAgSW5saW5lQm94
KiBsYXN0TGVhZkNoaWxkQmVmb3JlQm94KElubGluZUJveCogc3RhcnQ9MCk7Ci0gICAgICAgIAot
ICAgIHZpcnR1YWwgdm9pZCBzZXRDb25zdHJ1Y3RlZCgpIHsKKyAgICBJbmxpbmVCb3gqIGZpcnN0
TGVhZkNoaWxkQWZ0ZXJCb3goSW5saW5lQm94KiBzdGFydCA9IDApOworICAgIElubGluZUJveCog
bGFzdExlYWZDaGlsZEJlZm9yZUJveChJbmxpbmVCb3gqIHN0YXJ0ID0gMCk7CisKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0Q29uc3RydWN0ZWQoKQorICAgIHsKICAgICAgICAgSW5saW5lQm94OjpzZXRD
b25zdHJ1Y3RlZCgpOwogICAgICAgICBpZiAobV9maXJzdENoaWxkKQogICAgICAgICAgICAgbV9m
aXJzdENoaWxkLT5zZXRDb25zdHJ1Y3RlZCgpOwogICAgIH0KLSAgICB2b2lkIGFkZFRvTGluZShJ
bmxpbmVCb3gqIGNoaWxkKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVMaW5lKFJlbmRlckFy
ZW5hKiBhcmVuYSk7CisgICAgdm9pZCBhZGRUb0xpbmUoSW5saW5lQm94KiBjaGlsZCk7CisgICAg
dmlydHVhbCB2b2lkIGRlbGV0ZUxpbmUoUmVuZGVyQXJlbmEqKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZXh0cmFjdExpbmUoKTsKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoTGluZSgpOwogICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RQb3NpdGlvbihpbnQgZHgsIGludCBkeSk7CiAKICAgICB2aXJ0dWFsIHZv
aWQgY2xlYXJUcnVuY2F0aW9uKCk7Ci0gICAgCi0gICAgdmlydHVhbCB2b2lkIHBhaW50QmFja2dy
b3VuZEFuZEJvcmRlcihSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgaSwgaW50IF90eCwgaW50IF90
eSk7Ci0gICAgdm9pZCBwYWludEJhY2tncm91bmRzKEdyYXBoaWNzQ29udGV4dCogcCwgY29uc3Qg
Q29sb3ImIGMsIGNvbnN0IEJhY2tncm91bmRMYXllciogYmdMYXllciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IG15LCBpbnQgbWgsIGludCBfdHgsIGludCBfdHksIGludCB3LCBpbnQg
aCk7Ci0gICAgdm9pZCBwYWludEJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBwLCBjb25zdCBD
b2xvciYgYywgY29uc3QgQmFja2dyb3VuZExheWVyKiBiZ0xheWVyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBteSwgaW50IG1oLCBpbnQgX3R4LCBpbnQgX3R5LCBpbnQgdywgaW50IGgp
OwotICAgIHZpcnR1YWwgdm9pZCBwYWludERlY29yYXRpb25zKFJlbmRlck9iamVjdDo6UGFpbnRJ
bmZvJiBpLCBpbnQgX3R4LCBpbnQgX3R5LCBib29sIHBhaW50ZWRDaGlsZHJlbiA9IGZhbHNlKTsK
LSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIGksIGludCBf
dHgsIGludCBfdHkpOwotICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChSZW5kZXJPYmplY3Q6
Ok5vZGVJbmZvJiBpLCBpbnQgeCwgaW50IHksIGludCB0eCwgaW50IHR5KTsKKworICAgIHZpcnR1
YWwgdm9pZCBwYWludEJhY2tncm91bmRBbmRCb3JkZXIoUmVuZGVyT2JqZWN0OjpQYWludEluZm8m
LCBpbnQgdHgsIGludCB0eSk7CisgICAgdm9pZCBwYWludEJhY2tncm91bmRzKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IENvbG9yJiwgY29uc3QgQmFja2dyb3VuZExheWVyKiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IG15LCBpbnQgbWgsIGludCB0eCwgaW50IHR5LCBpbnQgdywgaW50
IGgpOworICAgIHZvaWQgcGFpbnRCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IENv
bG9yJiwgY29uc3QgQmFja2dyb3VuZExheWVyKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgbXksIGludCBtaCwgaW50IHR4LCBpbnQgdHksIGludCB3LCBpbnQgaCk7CisgICAgdmlydHVh
bCB2b2lkIHBhaW50RGVjb3JhdGlvbnMoUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBpbnQgdHgs
IGludCB0eSwgYm9vbCBwYWludGVkQ2hpbGRyZW4gPSBmYWxzZSk7CisgICAgdmlydHVhbCB2b2lk
IHBhaW50KFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgaW50IHR4LCBpbnQgdHkpOworICAgIHZp
cnR1YWwgYm9vbCBub2RlQXRQb2ludChSZW5kZXJPYmplY3Q6Ok5vZGVJbmZvJiwgaW50IHgsIGlu
dCB5LCBpbnQgdHgsIGludCB0eSk7CiAKICAgICBpbnQgbWFyZ2luQm9yZGVyUGFkZGluZ0xlZnQo
KTsKICAgICBpbnQgbWFyZ2luQm9yZGVyUGFkZGluZ1JpZ2h0KCk7CkBAIC04NiwxMyArODcsMTUg
QEAgcHVibGljOgogICAgIGludCBib3JkZXJSaWdodCgpIHsgaWYgKGluY2x1ZGVSaWdodEVkZ2Uo
KSkgcmV0dXJuIG9iamVjdCgpLT5ib3JkZXJSaWdodCgpOyByZXR1cm4gMDsgfQogICAgIGludCBw
YWRkaW5nTGVmdCgpIHsgaWYgKGluY2x1ZGVMZWZ0RWRnZSgpKSByZXR1cm4gb2JqZWN0KCktPnBh
ZGRpbmdMZWZ0KCk7IHJldHVybiAwOyB9CiAgICAgaW50IHBhZGRpbmdSaWdodCgpIHsgaWYgKGlu
Y2x1ZGVSaWdodEVkZ2UoKSkgcmV0dXJuIG9iamVjdCgpLT5wYWRkaW5nUmlnaHQoKTsgcmV0dXJu
IDA7IH0KLSAgICAKKwogICAgIGJvb2wgaW5jbHVkZUxlZnRFZGdlKCkgeyByZXR1cm4gbV9pbmNs
dWRlTGVmdEVkZ2U7IH0KICAgICBib29sIGluY2x1ZGVSaWdodEVkZ2UoKSB7IHJldHVybiBtX2lu
Y2x1ZGVSaWdodEVkZ2U7IH0KLSAgICB2b2lkIHNldEVkZ2VzKGJvb2wgaW5jbHVkZUxlZnQsIGJv
b2wgaW5jbHVkZVJpZ2h0KSB7CisgICAgdm9pZCBzZXRFZGdlcyhib29sIGluY2x1ZGVMZWZ0LCBi
b29sIGluY2x1ZGVSaWdodCkKKyAgICB7CiAgICAgICAgIG1faW5jbHVkZUxlZnRFZGdlID0gaW5j
bHVkZUxlZnQ7CiAgICAgICAgIG1faW5jbHVkZVJpZ2h0RWRnZSA9IGluY2x1ZGVSaWdodDsKICAg
ICB9CisKICAgICB2aXJ0dWFsIGJvb2wgaGFzVGV4dENoaWxkcmVuKCkgeyByZXR1cm4gbV9oYXNU
ZXh0Q2hpbGRyZW47IH0KIAogICAgIC8vIEhlbHBlciBmdW5jdGlvbnMgdXNlZCBkdXJpbmcgbGlu
ZSBjb25zdHJ1Y3Rpb24gYW5kIHBsYWNlbWVudC4KQEAgLTEwOSwxMiArMTEyLDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgdG9wUG9zaXRpb24sIGludCYg
Ym90dG9tUG9zaXRpb24sIGludCYgc2VsZWN0aW9uVG9wLCBpbnQmIHNlbGVjdGlvbkJvdHRvbSk7
CiAgICAgdm9pZCBzaHJpbmtCb3hlc1dpdGhOb1RleHRDaGlsZHJlbihpbnQgdG9wUG9zaXRpb24s
IGludCBib3R0b21Qb3NpdGlvbik7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHNldFZlcnRpY2Fs
T3ZlcmZsb3dQb3NpdGlvbnMoaW50IHRvcCwgaW50IGJvdHRvbSkge30KLSAgICB2aXJ0dWFsIHZv
aWQgc2V0VmVydGljYWxTZWxlY3Rpb25Qb3NpdGlvbnMoaW50IHRvcCwgaW50IGJvdHRvbSkge30K
KyAgICB2aXJ0dWFsIHZvaWQgc2V0VmVydGljYWxPdmVyZmxvd1Bvc2l0aW9ucyhpbnQgdG9wLCBp
bnQgYm90dG9tKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmVydGljYWxTZWxlY3Rpb25Qb3Np
dGlvbnMoaW50IHRvcCwgaW50IGJvdHRvbSkgeyB9CiAgICAgaW50IG1heEhvcml6b250YWxTaGFk
b3coKSBjb25zdCB7IHJldHVybiBtX21heEhvcml6b250YWxTaGFkb3c7IH0KIAogICAgIHZvaWQg
cmVtb3ZlQ2hpbGQoSW5saW5lQm94KiBjaGlsZCk7Ci0gICAgCisKICAgICB2aXJ0dWFsIFJlbmRl
ck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgc2VsZWN0aW9uU3RhdGUoKTsKIAogICAgIHZpcnR1YWwg
Ym9vbCBjYW5BY2NvbW1vZGF0ZUVsbGlwc2lzKGJvb2wgbHRyLCBpbnQgYmxvY2tFZGdlLCBpbnQg
ZWxsaXBzaXNXaWR0aCk7CkBAIC0xMjksMTEgKzEzMiwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9v
bCBtX2hhc1RleHRDaGlsZHJlbiA6IDE7CiB9OwogCi19IC8vbmFtZXNwYWNlCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNpZm5kZWYgTkRFQlVHCiAvLyBPdXRzaWRlIHRoZSBXZWJDb3JlIG5h
bWVzcGFjZSBmb3IgZWFzZSBvZiBpbnZvY2F0aW9uIGZyb20gZ2RiLgogdm9pZCBzaG93VHJlZShj
b25zdCBXZWJDb3JlOjpJbmxpbmVCb3gqKTsKICNlbmRpZgogCi0jZW5kaWYKKyNlbmRpZiAvLyBJ
bmxpbmVGbG93Qm94X0gKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZVJ1bkJveC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZVJ1bkJveC5oCShyZXZpc2lvbiAx
NzMyMikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZVJ1bkJveC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw4ICsyNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW5saW5l
UnVuQm94IDogcHVibGljIElubGluZUJveAoteworY2xhc3MgSW5saW5lUnVuQm94IDogcHVibGlj
IElubGluZUJveCB7CiBwdWJsaWM6CiAgICAgSW5saW5lUnVuQm94KFJlbmRlck9iamVjdCogb2Jq
KQogICAgICAgICA6IElubGluZUJveChvYmopCkBAIC00MiwxNCArNDEsMTQgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0TmV4dExpbmVCb3goSW5saW5lUnVuQm94KiBuKSB7IG1fbmV4dExpbmUgPSBu
OyB9CiAgICAgdm9pZCBzZXRQcmV2aW91c0xpbmVCb3goSW5saW5lUnVuQm94KiBwKSB7IG1fcHJl
dkxpbmUgPSBwOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCYWNrZ3JvdW5kQW5kQm9yZGVy
KFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgaW50IF90eCwgaW50IF90eSkge307Ci0gICAgdmly
dHVhbCB2b2lkIHBhaW50RGVjb3JhdGlvbnMoUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBpbnQg
X3R4LCBpbnQgX3R5LCBib29sIHBhaW50ZWRDaGlsZHJlbiA9IGZhbHNlKSB7fTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRCYWNrZ3JvdW5kQW5kQm9yZGVyKFJlbmRlck9iamVjdDo6UGFpbnRJbmZv
JiwgaW50IHR4LCBpbnQgdHkpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWludERlY29yYXRpb25z
KFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgaW50IHR4LCBpbnQgdHksIGJvb2wgcGFpbnRlZENo
aWxkcmVuID0gZmFsc2UpIHsgfQogICAgIAogcHJvdGVjdGVkOgogICAgIElubGluZVJ1bkJveCog
bV9wcmV2TGluZTsgIC8vIFRoZSBwcmV2aW91cyBib3ggdGhhdCBhbHNvIHVzZXMgb3VyIFJlbmRl
ck9iamVjdAogICAgIElubGluZVJ1bkJveCogbV9uZXh0TGluZTsgIC8vIFRoZSBuZXh0IGJveCB0
aGF0IGFsc28gdXNlcyBvdXIgUmVuZGVyT2JqZWN0CiB9OwogCi19IC8vbmFtZXNwYWNlCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlmIC8vIElubGluZVJ1bkJveF9ICklu
ZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAkocmV2aXNpb24gMTczMjIpCisrKyBX
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzY0
LDQgKzc2NCw0IEBAIGJvb2wgSW5saW5lVGV4dEJveDo6Y29udGFpbnNDYXJldE9mZnNldCgKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guaAkocmV2aXNpb24gMTczMjIpCisrKyBXZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVUZXh0Qm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDEyICsyMiwxMiBAQAog
ICoKICAqLwogCi0jaWZuZGVmIEtIVE1MX0lubGluZVRleHRCb3hfSAotI2RlZmluZSBLSFRNTF9J
bmxpbmVUZXh0Qm94X0gKKyNpZm5kZWYgSW5saW5lVGV4dEJveF9ICisjZGVmaW5lIElubGluZVRl
eHRCb3hfSAogCiAjaW5jbHVkZSAiRG9jdW1lbnRNYXJrZXIuaCIKLSNpbmNsdWRlICJSZW5kZXJU
ZXh0LmgiCiAjaW5jbHVkZSAiSW5saW5lUnVuQm94LmgiCisjaW5jbHVkZSAiUmVuZGVyVGV4dC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5LDQ0ICszOSw0MyBAQCBjbGFzcyBTdHJp
bmdJbXBsOwogY2xhc3MgTWFya2VkVGV4dFVuZGVybGluZTsKIGNsYXNzIFBvc2l0aW9uOwogCi1j
bGFzcyBJbmxpbmVUZXh0Qm94IDogcHVibGljIElubGluZVJ1bkJveAoteworY2xhc3MgSW5saW5l
VGV4dEJveCA6IHB1YmxpYyBJbmxpbmVSdW5Cb3ggewogcHVibGljOgogICAgIElubGluZVRleHRC
b3goUmVuZGVyT2JqZWN0KiBvYmopCi0gICAgOklubGluZVJ1bkJveChvYmopCisgICAgICAgIDog
SW5saW5lUnVuQm94KG9iaikKKyAgICAgICAgLCBtX3N0YXJ0KDApCisgICAgICAgICwgbV9sZW4o
MCkKKyAgICAgICAgLCBtX3RydW5jYXRpb24oY05vVHJ1bmNhdGlvbikKKyAgICAgICAgLCBtX3Jl
dmVyc2VkKGZhbHNlKQorICAgICAgICAsIG1fdHJlYXRBc1RleHQodHJ1ZSkKKyAgICAgICAgLCBt
X3RvQWRkKDApCiAgICAgewotICAgICAgICBtX3N0YXJ0ID0gMDsKLSAgICAgICAgbV9sZW4gPSAw
OwotICAgICAgICBtX3JldmVyc2VkID0gZmFsc2U7Ci0gICAgICAgIG1fdHJlYXRBc1RleHQgPSB0
cnVlOwotICAgICAgICBtX3RvQWRkID0gMDsKLSAgICAgICAgbV90cnVuY2F0aW9uID0gY05vVHJ1
bmNhdGlvbjsKICAgICB9Ci0gICAgCisKICAgICBJbmxpbmVUZXh0Qm94KiBuZXh0VGV4dEJveCgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PElubGluZVRleHRCb3gqPihuZXh0TGluZUJveCgp
KTsgfQogICAgIElubGluZVRleHRCb3gqIHByZXZUZXh0Qm94KCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8SW5saW5lVGV4dEJveCo+KHByZXZMaW5lQm94KCkpOyB9Ci0gICAgCisKICAgICB1
bnNpZ25lZCBzdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnQ7IH0KLSAgICB1bnNpZ25lZCBl
bmQoKSBjb25zdCB7IHJldHVybiBtX2xlbiA/IG1fc3RhcnQrbV9sZW4tMSA6IG1fc3RhcnQ7IH0K
KyAgICB1bnNpZ25lZCBlbmQoKSBjb25zdCB7IHJldHVybiBtX2xlbiA/IG1fc3RhcnQgKyBtX2xl
biAtIDEgOiBtX3N0YXJ0OyB9CiAgICAgdW5zaWduZWQgbGVuKCkgY29uc3QgeyByZXR1cm4gbV9s
ZW47IH0KLSAgCisKICAgICB2b2lkIHNldFN0YXJ0KHVuc2lnbmVkIHN0YXJ0KSB7IG1fc3RhcnQg
PSBzdGFydDsgfQogICAgIHZvaWQgc2V0TGVuKHVuc2lnbmVkIGxlbikgeyBtX2xlbiA9IGxlbjsg
fQogCiAgICAgdm9pZCBvZmZzZXRSdW4oaW50IGQpIHsgbV9zdGFydCArPSBkOyB9CiAKLSAgICB2
b2lkIGRlc3Ryb3koUmVuZGVyQXJlbmEqIGFyZW5hKTsKLSAgICAKKyAgICB2b2lkIGRlc3Ryb3ko
UmVuZGVyQXJlbmEqKTsKKwogICAgIEludFJlY3Qgc2VsZWN0aW9uUmVjdChpbnQgYWJzeCwgaW50
IGFic3ksIGludCBzdGFydFBvcywgaW50IGVuZFBvcyk7CiAgICAgYm9vbCBpc1NlbGVjdGVkKGlu
dCBzdGFydFBvcywgaW50IGVuZFBvcykgY29uc3Q7CiAgICAgdm9pZCBzZWxlY3Rpb25TdGFydEVu
ZChpbnQmIHNQb3MsIGludCYgZVBvcyk7Ci0gICAgCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KFJl
bmRlck9iamVjdDo6UGFpbnRJbmZvJiBpLCBpbnQgdHgsIGludCB0eSk7Ci0gICAgdmlydHVhbCBi
b29sIG5vZGVBdFBvaW50KFJlbmRlck9iamVjdDo6Tm9kZUluZm8mIGksIGludCB4LCBpbnQgeSwg
aW50IHR4LCBpbnQgdHkpOworCisgICAgdmlydHVhbCB2b2lkIHBhaW50KFJlbmRlck9iamVjdDo6
UGFpbnRJbmZvJiwgaW50IHR4LCBpbnQgdHkpOworICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2lu
dChSZW5kZXJPYmplY3Q6Ok5vZGVJbmZvJiwgaW50IHgsIGludCB5LCBpbnQgdHgsIGludCB0eSk7
CiAKICAgICBSZW5kZXJUZXh0KiB0ZXh0T2JqZWN0KCkgY29uc3Q7Ci0gICAgCi0gICAgdmlydHVh
bCB2b2lkIGRlbGV0ZUxpbmUoUmVuZGVyQXJlbmEqIGFyZW5hKTsKKworICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVMaW5lKFJlbmRlckFyZW5hKik7CiAgICAgdmlydHVhbCB2b2lkIGV4dHJhY3RMaW5l
KCk7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaExpbmUoKTsKIApAQCAtODksMTQgKzg4LDE0IEBA
IHB1YmxpYzoKIAogICAgIC8vIE92ZXJsb2FkZWQgbmV3IG9wZXJhdG9yLiAgRGVyaXZlZCBjbGFz
c2VzIG11c3Qgb3ZlcnJpZGUgb3BlcmF0b3IgbmV3CiAgICAgLy8gaW4gb3JkZXIgdG8gYWxsb2Nh
dGUgb3V0IG9mIHRoZSBSZW5kZXJBcmVuYS4KLSAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90
IHN6LCBSZW5kZXJBcmVuYSogcmVuZGVyQXJlbmEpIHRocm93KCk7ICAgIAorICAgIHZvaWQqIG9w
ZXJhdG9yIG5ldyhzaXplX3QsIFJlbmRlckFyZW5hKikgdGhyb3coKTsgIAogCiAgICAgLy8gT3Zl
cnJpZGRlbiB0byBwcmV2ZW50IHRoZSBub3JtYWwgZGVsZXRlIGZyb20gYmVpbmcgY2FsbGVkLgot
ICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHB0ciwgc2l6ZV90IHN6KTsKLSAgICAKKyAg
ICB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiwgc2l6ZV90KTsKKwogcHJpdmF0ZToKICAgICAv
LyBUaGUgbm9ybWFsIG9wZXJhdG9yIG5ldyBpcyBkaXNhbGxvd2VkLgotICAgIHZvaWQqIG9wZXJh
dG9yIG5ldyhzaXplX3Qgc3opIHRocm93KCk7CisgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVf
dCkgdGhyb3coKTsKIAogcHVibGljOgogICAgIHZvaWQgc2V0U3BhY2VBZGQoaW50IGFkZCkgeyBt
X3dpZHRoIC09IG1fdG9BZGQ7IG1fdG9BZGQgPSBhZGQ7IG1fd2lkdGggKz0gbV90b0FkZDsgfQpA
QCAtMTA1LDcgKzEwNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNJbmxpbmVUZXh0
Qm94KCkgeyByZXR1cm4gdHJ1ZTsgfSAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0KCkgY29u
c3QgeyByZXR1cm4gbV90cmVhdEFzVGV4dDsgfQogICAgIHZvaWQgc2V0SXNUZXh0KGJvb2wgYikg
eyBtX3RyZWF0QXNUZXh0ID0gYjsgfQotICAgIAorCiAgICAgdm9pZCBwYWludERlY29yYXRpb24o
R3JhcGhpY3NDb250ZXh0KiwgaW50IHR4LCBpbnQgdHksIGludCBkZWNvcmF0aW9uKTsKICAgICB2
b2lkIHBhaW50U2VsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCosIGludCB0eCwgaW50IHR5LCBSZW5k
ZXJTdHlsZSosIGNvbnN0IEZvbnQqKTsKICAgICB2b2lkIHBhaW50TWFya2VkVGV4dEJhY2tncm91
bmQoR3JhcGhpY3NDb250ZXh0KiwgaW50IHR4LCBpbnQgdHksIFJlbmRlclN0eWxlKiwgY29uc3Qg
Rm9udCosIGludCBzdGFydFBvcywgaW50IGVuZFBvcyk7CkBAIC0xMTksMTYgKzExOCwxNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBpbnQgY2FyZXRNaW5PZmZzZXQoKSBjb25zdDsKICAgICB2aXJ0
dWFsIGludCBjYXJldE1heE9mZnNldCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdW5zaWduZWQgY2Fy
ZXRNYXhSZW5kZXJlZE9mZnNldCgpIGNvbnN0OwotICAgIAorCiAgICAgaW50IHRleHRQb3MoKSBj
b25zdDsKLSAgICBpbnQgb2Zmc2V0Rm9yUG9zaXRpb24oaW50IF94LCBib29sIGluY2x1ZGVQYXJ0
aWFsR2x5cGhzID0gdHJ1ZSkgY29uc3Q7CisgICAgaW50IG9mZnNldEZvclBvc2l0aW9uKGludCB4
LCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzID0gdHJ1ZSkgY29uc3Q7CiAgICAgaW50IHBvc2l0
aW9uRm9yT2Zmc2V0KGludCBvZmZzZXQpIGNvbnN0OwogCiAgICAgYm9vbCBjb250YWluc0NhcmV0
T2Zmc2V0KGludCBvZmZzZXQpIGNvbnN0OyAvLyBmYWxzZSBmb3Igb2Zmc2V0IGFmdGVyIGxpbmUg
YnJlYWsKLSAgICAKKwogICAgIGludCBtX3N0YXJ0OwogICAgIHVuc2lnbmVkIHNob3J0IG1fbGVu
OwotICAgIAorCiAgICAgaW50IG1fdHJ1bmNhdGlvbjsgLy8gV2hlcmUgdG8gdHJ1bmNhdGUgd2hl
biB0ZXh0IG92ZXJmbG93IGlzIGFwcGxpZWQuICBXZSB1c2Ugc3BlY2lhbCBjb25zdGFudHMgdG8K
ICAgICAgICAgICAgICAgICAgICAgICAvLyBkZW5vdGUgbm8gdHJ1bmNhdGlvbiAodGhlIHdob2xl
IHJ1biBwYWludHMpIGFuZCBmdWxsIHRydW5jYXRpb24gKG5vdGhpbmcgcGFpbnRzIGF0IGFsbCku
CiAKQEAgLTE0MSwxMSArMTQwLDExIEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFJlbmRl
clRleHQ7CiB9OwogCi1pbmxpbmUgUmVuZGVyVGV4dCAqSW5saW5lVGV4dEJveDo6dGV4dE9iamVj
dCgpIGNvbnN0CitpbmxpbmUgUmVuZGVyVGV4dCogSW5saW5lVGV4dEJveDo6dGV4dE9iamVjdCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlclRleHQgKj4obV9vYmplY3Qp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0Kj4obV9vYmplY3QpOwogfQogCi19
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlmIC8vIElubGluZVRleHRC
b3hfSApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvTGVuZ3RoLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvTGVuZ3RoLmgJKHJldmlzaW9uIDE3MzIyKQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvTGVuZ3RoLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDggKzIwLDggQEAKICAgICBCb3N0
b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICovCiAKLSNpZm5kZWYgTEVOR1RIX0gKLSNkZWZpbmUg
TEVOR1RIX0gKKyNpZm5kZWYgTGVuZ3RoX0gKKyNkZWZpbmUgTGVuZ3RoX0gKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0zMCwxMCArMzAsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGVudW0gTGVuZ3RoVHlwZSB7IEF1dG8sIFJlbGF0aXZlLCBQZXJjZW50LCBGaXhlZCwgU3RhdGlj
LCBJbnRyaW5zaWMsIE1pbkludHJpbnNpYyB9OwogCiAgICAgc3RydWN0IExlbmd0aCB7Ci0gICAg
ICAgIExlbmd0aCgpIDogbV92YWx1ZSgwKSB7IH0KLSAgICAgICAgTGVuZ3RoKExlbmd0aFR5cGUg
dCkgOiBtX3ZhbHVlKHQpIHsgfQotICAgICAgICBMZW5ndGgoaW50IHYsIExlbmd0aFR5cGUgdCwg
Ym9vbCBxID0gZmFsc2UpIDogbV92YWx1ZSgodiAqIDE2KSB8IChxIDw8IDMpIHwgdCkgeyB9Ci0g
ICAgICAgICAgICAvLyBGSVhNRTogRG9lc24ndCB3b3JrIGlmIHRoZSBwYXNzZWQtaW4gdmFsdWUg
aXMgdmVyeSBsYXJnZSEKKyAgICAgICAgTGVuZ3RoKCkKKyAgICAgICAgICAgIDogbV92YWx1ZSgw
KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBMZW5ndGgoTGVuZ3RoVHlwZSB0KQor
ICAgICAgICAgICAgOiBtX3ZhbHVlKHQpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAg
IExlbmd0aChpbnQgdiwgTGVuZ3RoVHlwZSB0LCBib29sIHEgPSBmYWxzZSkKKyAgICAgICAgICAg
IDogbV92YWx1ZSgodiAqIDE2KSB8IChxIDw8IDMpIHwgdCkgLy8gRklYTUU6IERvZXNuJ3Qgd29y
ayBpZiB0aGUgcGFzc2VkLWluIHZhbHVlIGlzIHZlcnkgbGFyZ2UhCisgICAgICAgIHsKKyAgICAg
ICAgfQogCiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMZW5ndGgmIG8pIGNvbnN0IHsg
cmV0dXJuIG1fdmFsdWUgPT0gby5tX3ZhbHVlOyB9CiAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBMZW5ndGgmIG8pIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgIT0gby5tX3ZhbHVlOyB9CkBA
IC04NCw2ICs5NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgaW50IG1fdmFsdWU7
CiAgICAgfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAv
LyBMZW5ndGhfSApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvTGlzdE1hcmtlckJveC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvTGlzdE1hcmtlckJveC5jcHAJKHJldmlzaW9u
IDE3MzIyKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvTGlzdE1hcmtlckJveC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIyLDYgKzIyLDcgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgog
ICoKICAqLworCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGlzdE1hcmtlckJveC5o
IgogCkBAIC00MSw0ICs0Miw0IEBAIGJvb2wgTGlzdE1hcmtlckJveDo6aXNUZXh0KCkgY29uc3QK
ICAgICByZXR1cm4gIXN0YXRpY19jYXN0PFJlbmRlckxpc3RNYXJrZXIqPihvYmplY3QoKSktPmxp
c3RJbWFnZSgpOwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9MaXN0TWFya2VyQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvTGlzdE1hcmtlckJveC5oCShyZXZpc2lvbiAxNzMyMikKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L0xpc3RNYXJrZXJCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTQgKzI5LDEzIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTGlzdE1hcmtlckJveCA6IHB1YmxpYyBJbmxpbmVC
b3gKLXsKK2NsYXNzIExpc3RNYXJrZXJCb3ggOiBwdWJsaWMgSW5saW5lQm94IHsKIHB1YmxpYzoK
ICAgICBMaXN0TWFya2VyQm94KFJlbmRlck9iamVjdCopOwotICAgIAorCiAgICAgdmlydHVhbCBi
b29sIGlzVGV4dCgpIGNvbnN0OwogfTsKIAotfSAvL25hbWVzcGFjZQorfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBMaXN0TWFya2VyQm94X0gKSW5kZXg6IFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclBhcnRPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJQYXJ0T2JqZWN0LmgJKHJldmlzaW9uIDE3MzIyKQorKysgV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUGFydE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUmVuZGVyUGFydE9iamVjdCA6IHB1
YmxpYyBSZW5kZXJQYXJ0Ci17CitjbGFzcyBSZW5kZXJQYXJ0T2JqZWN0IDogcHVibGljIFJlbmRl
clBhcnQgewogcHVibGljOgogICAgIFJlbmRlclBhcnRPYmplY3QoSFRNTEVsZW1lbnQqKTsKIApA
QCAtNDIsNiArNDEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHZpZXdDbGVhcmVkKCk7
CiB9OwogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlmIC8vIFJl
bmRlclBhcnRPYmplY3RfSApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAJKHJl
dmlzaW9uIDE3MzIyKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE4LDEzICsxOCwxNSBAQAogICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAogICogQm9zdG9uLCBN
QSAwMjExMS0xMzA3LCBVU0EuCiAgKi8KKwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlJvb3RJbmxpbmVCb3guaCIKIAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxs
aXBzaXNCb3guaCIKLSNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiUmVuZGVyQmxvY2su
aCIKKwogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlICJGcmFtZU1hYy5oIgogI2VuZGlmCkBA
IC0zMTksNCArMzIxLDQgQEAgdm9pZCBSb290SW5saW5lQm94OjpzZXRMaW5lQnJlYWtJbmZvKFJl
bgogICAgICAgICBtX2xpbmVCcmVha0JpZGlTdGF0dXMgPSAqc3RhdHVzOwogfQogCi19Cit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCShyZXZp
c2lvbiAxNzMyMikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsOCArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBFbGxp
cHNpc0JveDsKIHN0cnVjdCBHYXBSZWN0czsKIAotY2xhc3MgUm9vdElubGluZUJveCA6IHB1Ymxp
YyBJbmxpbmVGbG93Qm94Ci17CitjbGFzcyBSb290SW5saW5lQm94IDogcHVibGljIElubGluZUZs
b3dCb3ggewogcHVibGljOgogICAgIFJvb3RJbmxpbmVCb3goUmVuZGVyT2JqZWN0KiBvYmopCiAg
ICAgICAgIDogSW5saW5lRmxvd0JveChvYmopCkBAIC04NiwyOSArODUsMjggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgaW50IHBsYWNlRWxsaXBzaXNCb3goYm9vbCBsdHIsIGludCBibG9ja0VkZ2Us
IGludCBlbGxpcHNpc1dpZHRoLCBib29sJik7CiAKICAgICBFbGxpcHNpc0JveCogZWxsaXBzaXNC
b3goKSBjb25zdCB7IHJldHVybiBtX2VsbGlwc2lzQm94OyB9Ci0gICAgdm9pZCBwYWludEVsbGlw
c2lzQm94KFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBpLCBpbnQgX3R4LCBpbnQgX3R5KSBjb25z
dDsKLSAgICBib29sIGhpdFRlc3RFbGxpcHNpc0JveChSZW5kZXJPYmplY3Q6Ok5vZGVJbmZvJiBp
bmZvLCBpbnQgX3gsIGludCBfeSwgaW50IF90eCwgaW50IF90eSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24sIGJvb2wgaW5Cb3gpOworICAg
IHZvaWQgcGFpbnRFbGxpcHNpc0JveChSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGludCB0eCwg
aW50IHR5KSBjb25zdDsKKyAgICBib29sIGhpdFRlc3RFbGxpcHNpc0JveChSZW5kZXJPYmplY3Q6
Ok5vZGVJbmZvJiwgaW50IHgsIGludCB5LCBpbnQgdHgsIGludCB0eSwgSGl0VGVzdEFjdGlvbiwg
Ym9vbCBpbkJveCk7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGNsZWFyVHJ1bmNhdGlvbigpOwog
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgYWRkSGlnaGxpZ2h0T3ZlcmZsb3coKTsKLSAg
ICB2b2lkIHBhaW50Q3VzdG9tSGlnaGxpZ2h0KFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBpLCBp
bnQgdHgsIGludCB0eSwgY29uc3QgQXRvbWljU3RyaW5nJiBoaWdobGlnaHRUeXBlKTsKKyAgICB2
b2lkIHBhaW50Q3VzdG9tSGlnaGxpZ2h0KFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgaW50IHR4
LCBpbnQgdHksIGNvbnN0IEF0b21pY1N0cmluZyYgaGlnaGxpZ2h0VHlwZSk7CiAjZW5kaWYKIAot
ICAgIHZpcnR1YWwgdm9pZCBwYWludChSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgaSwgaW50IF90
eCwgaW50IF90eSk7Ci0gICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KFJlbmRlck9iamVjdDo6
Tm9kZUluZm8mIGksIGludCB4LCBpbnQgeSwgaW50IHR4LCBpbnQgdHkpOworICAgIHZpcnR1YWwg
dm9pZCBwYWludChSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5KTsKKyAg
ICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoUmVuZGVyT2JqZWN0OjpOb2RlSW5mbyYsIGludCB4
LCBpbnQgeSwgaW50IHR4LCBpbnQgdHkpOwogCiAgICAgYm9vbCBoYXNTZWxlY3RlZENoaWxkcmVu
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNTZWxlY3RlZENoaWxkcmVuOyB9CiAgICAgdm9pZCBzZXRI
YXNTZWxlY3RlZENoaWxkcmVuKGJvb2wgYik7Ci0gICAgCisKICAgICB2aXJ0dWFsIFJlbmRlck9i
amVjdDo6U2VsZWN0aW9uU3RhdGUgc2VsZWN0aW9uU3RhdGUoKTsKICAgICBJbmxpbmVCb3gqIGZp
cnN0U2VsZWN0ZWRCb3goKTsKICAgICBJbmxpbmVCb3gqIGxhc3RTZWxlY3RlZEJveCgpOwogICAg
IAogICAgIEdhcFJlY3RzIGZpbGxMaW5lU2VsZWN0aW9uR2FwKGludCBzZWxUb3AsIGludCBzZWxI
ZWlnaHQsIFJlbmRlckJsb2NrKiByb290QmxvY2ssIGludCBibG9ja1gsIGludCBibG9ja1ksIAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0eCwgaW50IHR5LCBjb25zdCBS
ZW5kZXJPYmplY3Q6OlBhaW50SW5mbyogaSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IHR4LCBpbnQgdHksIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvKik7CiAg
ICAgCiAgICAgUmVuZGVyQmxvY2sqIGJsb2NrKCkgY29uc3Q7CiAKQEAgLTExNiw3ICsxMTQsNyBA
QCBwdWJsaWM6CiAgICAgaW50IHNlbGVjdGlvbkJvdHRvbSgpIHsgcmV0dXJuIG1fc2VsZWN0aW9u
Qm90dG9tOyB9CiAgICAgaW50IHNlbGVjdGlvbkhlaWdodCgpIHsgcmV0dXJuIG1heCgwLCBzZWxl
Y3Rpb25Cb3R0b20oKSAtIHNlbGVjdGlvblRvcCgpKTsgfQogIAotICAgIElubGluZUJveCogY2xv
c2VzdExlYWZDaGlsZEZvclhQb3MoaW50IF94LCBpbnQgX3R4KTsKKyAgICBJbmxpbmVCb3gqIGNs
b3Nlc3RMZWFmQ2hpbGRGb3JYUG9zKGludCB4LCBpbnQgdHgpOwogCiBwcm90ZWN0ZWQ6CiAgICAg
Ly8gTm9ybWFsbHkgd2UgYXJlIG9ubHkgYXMgdGFsbCBhcyB0aGUgc3R5bGUgb24gb3VyIGJsb2Nr
IGRpY3RhdGVzLCBidXQgd2UgbWlnaHQgaGF2ZSBjb250ZW50CkBAIC0xNTIsNiArMTUwLDYgQEAg
cHJvdGVjdGVkOgogICAgIEVsbGlwc2lzQm94KiBtX2VsbGlwc2lzQm94OwogfTsKIAotfSAvL25h
bWVzcGFjZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBSb290
SW5saW5lQm94X0gKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1NWR0lubGluZUZsb3dCb3guY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1NWR0lubGluZUZsb3dCb3guY3BwCShy
ZXZpc2lvbiAxNzMyMikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1NWR0lubGluZUZsb3dCb3guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMSwyMCArMjEsMjEgQEAKICAqCiAgKi8KIAorI2luY2x1ZGUg
ImNvbmZpZy5oIgogCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAotI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlNWR0lubGluZUZsb3dCb3guaCIKLSNpbmNsdWRlICJLUmVuZGVyaW5nRGV2aWNl
LmgiCi0jaW5jbHVkZSAiS0NhbnZhc1JlbmRlcmluZ1N0eWxlLmgiCisKKyNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiS0Nh
bnZhc0NsaXBwZXIuaCIKICNpbmNsdWRlICJLQ2FudmFzTWFza2VyLmgiCi0jaW5jbHVkZSAiSW5s
aW5lVGV4dEJveC5oIgorI2luY2x1ZGUgIktDYW52YXNSZW5kZXJpbmdTdHlsZS5oIgorI2luY2x1
ZGUgIktSZW5kZXJpbmdEZXZpY2UuaCIKICNpbmNsdWRlICJSb290SW5saW5lQm94LmgiCi0jaW5j
bHVkZSAiU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aExp
c3QuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJTVkdUZXh0UG9z
aXRpb25pbmdFbGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiB1c2luZyBuYW1l
c3BhY2Ugc3RkOwpAQCAtMjkwLDUgKzI5MSw2IEBAIHZvaWQgcGxhY2VTVkdGbG93VmVydGljYWxs
eShJbmxpbmVGbG93Qm8KICAgICBmbG93LT5zZXRWZXJ0aWNhbFNlbGVjdGlvblBvc2l0aW9ucyh0
b3AsIGJvdHRvbSk7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwogI2VuZGlmIC8v
IFNWR19TVVBQT1JUCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdJbmxpbmVGbG93Qm94LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvU1ZHSW5saW5lRmxvd0JveC5oCShyZXZp
c2lvbiAxNzMyMikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1NWR0lubGluZUZsb3dCb3guaAkod29y
a2luZyBjb3B5KQpAQCAtMzAsMjEgKzMwLDI0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
dm9pZCBwYWludFNWR0lubGluZUZsb3coSW5saW5lRmxvd0JveCogZmxvdywgUmVuZGVyT2JqZWN0
KiBvYmplY3QsIFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBpLCAKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBfdHgsIGludCBfdHkpOwotaW50IHBsYWNlU1ZHRmxvd0hvcml6b250YWxseShJ
bmxpbmVGbG93Qm94KiBmbG93LCBpbnQgeCwgaW50JiBsZWZ0UG9zaXRpb24sIGludCYgcmlnaHRQ
b3NpdGlvbiwgYm9vbCYgbmVlZHNXb3JkU3BhY2luZyk7Ci12b2lkIHBsYWNlU1ZHRmxvd1ZlcnRp
Y2FsbHkoSW5saW5lRmxvd0JveCogZmxvdywgaW50JiBoZWlnaHRPZkJsb2NrKTsKK3ZvaWQgcGFp
bnRTVkdJbmxpbmVGbG93KElubGluZUZsb3dCb3gqLCBSZW5kZXJPYmplY3QqLCBSZW5kZXJPYmpl
Y3Q6OlBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5KTsKK2ludCBwbGFjZVNWR0Zsb3dIb3Jpem9u
dGFsbHkoSW5saW5lRmxvd0JveCosIGludCB4LCBpbnQmIGxlZnRQb3NpdGlvbiwgaW50JiByaWdo
dFBvc2l0aW9uLCBib29sJiBuZWVkc1dvcmRTcGFjaW5nKTsKK3ZvaWQgcGxhY2VTVkdGbG93VmVy
dGljYWxseShJbmxpbmVGbG93Qm94KiwgaW50JiBoZWlnaHRPZkJsb2NrKTsKIAogY2xhc3MgU1ZH
SW5saW5lRmxvd0JveCA6IHB1YmxpYyBJbmxpbmVGbG93Qm94IHsKIHB1YmxpYzoKLSAgICBTVkdJ
bmxpbmVGbG93Qm94KFJlbmRlck9iamVjdCogb2JqKSA6IElubGluZUZsb3dCb3gob2JqKSB7fQot
ICAgIHZpcnR1YWwgdm9pZCBwYWludChSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgaSwgaW50IF90
eCwgaW50IF90eSk7CisgICAgU1ZHSW5saW5lRmxvd0JveChSZW5kZXJPYmplY3QqIG9iaikKKyAg
ICAgICAgOiBJbmxpbmVGbG93Qm94KG9iaikKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2
b2lkIHBhaW50KFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgaW50IHR4LCBpbnQgdHkpOwogICAg
IHZpcnR1YWwgaW50IHBsYWNlQm94ZXNIb3Jpem9udGFsbHkoaW50IHgsIGludCYgbGVmdFBvc2l0
aW9uLCBpbnQmIHJpZ2h0UG9zaXRpb24sIGJvb2wmIG5lZWRzV29yZFNwYWNpbmcpOwogICAgIHZp
cnR1YWwgdm9pZCB2ZXJ0aWNhbGx5QWxpZ25Cb3hlcyhpbnQmIGhlaWdodE9mQmxvY2spOwogfTsK
IAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKIAot
I2VuZGlmIC8vICFTVkdJbmxpbmVGbG93Qm94X0gKKyNlbmRpZiAvLyBTVkdJbmxpbmVGbG93Qm94
X0gKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1NWR1Jvb3RJbmxpbmVCb3guY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1NWR1Jvb3RJbmxpbmVCb3guY3BwCShyZXZpc2lvbiAx
NzMyMikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1NWR1Jvb3RJbmxpbmVCb3guY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMSwxMSArMjEsMTIgQEAKICAqCiAgKi8KIAorI2luY2x1ZGUgImNvbmZpZy5o
IgogCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAotI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlNWR1Jvb3RJbmxpbmVCb3guaCIKKwogI2luY2x1ZGUgIlNWR0lubGluZUZsb3dCb3guaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDUsNSArNDYsNiBAQCB2b2lkIFNWR1Jvb3RJbmxpbmVC
b3g6OnZlcnRpY2FsbHlBbGlnbkJvCiAgICAgcGxhY2VTVkdGbG93VmVydGljYWxseSh0aGlzLCBo
ZWlnaHRPZkJsb2NrKTsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCiAjZW5kaWYg
Ly8gU1ZHX1NVUFBPUlQKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1NWR1Jvb3RJbmxpbmVCb3gu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9TVkdSb290SW5saW5lQm94LmgJKHJl
dmlzaW9uIDE3MzIyKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUm9vdElubGluZUJveC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiwxNCArMzIsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IAogY2xhc3MgU1ZHUm9vdElubGluZUJveCA6IHB1YmxpYyBSb290SW5saW5lQm94IHsKIHB1Ymxp
YzoKLSAgICBTVkdSb290SW5saW5lQm94KFJlbmRlck9iamVjdCogb2JqKSA6IFJvb3RJbmxpbmVC
b3gob2JqKSB7fQotICAgIHZpcnR1YWwgdm9pZCBwYWludChSZW5kZXJPYmplY3Q6OlBhaW50SW5m
byYgaSwgaW50IF90eCwgaW50IF90eSk7CisgICAgU1ZHUm9vdElubGluZUJveChSZW5kZXJPYmpl
Y3QqIG9iaikKKyAgICAgICAgOiBSb290SW5saW5lQm94KG9iaikKKyAgICB7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIHBhaW50KFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgaW50IHR4LCBp
bnQgdHkpOwogICAgIHZpcnR1YWwgaW50IHBsYWNlQm94ZXNIb3Jpem9udGFsbHkoaW50IHgsIGlu
dCYgbGVmdFBvc2l0aW9uLCBpbnQmIHJpZ2h0UG9zaXRpb24sIGJvb2wmIG5lZWRzV29yZFNwYWNp
bmcpOwogICAgIHZpcnR1YWwgdm9pZCB2ZXJ0aWNhbGx5QWxpZ25Cb3hlcyhpbnQmIGhlaWdodE9m
QmxvY2spOwogfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZH
X1NVUFBPUlQKIAotI2VuZGlmIC8vICFSb290SW5saW5lQm94X0gKKyNlbmRpZiAvLyBTVkdSb290
SW5saW5lQm94X0gKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1RhYmxlTGF5b3V0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvVGFibGVMYXlvdXQuaAkocmV2aXNpb24gMTczMjIp
CisrKyBXZWJDb3JlL3JlbmRlcmluZy9UYWJsZUxheW91dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NywxMSArMjcsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJUYWJsZTsK
IAotY2xhc3MgVGFibGVMYXlvdXQKLXsKK2NsYXNzIFRhYmxlTGF5b3V0IHsKIHB1YmxpYzoKLSAg
ICBUYWJsZUxheW91dChSZW5kZXJUYWJsZSogdCkgOiBtX3RhYmxlKHQpIHt9Ci0gICAgdmlydHVh
bCB+VGFibGVMYXlvdXQoKSB7fTsKKyAgICBUYWJsZUxheW91dChSZW5kZXJUYWJsZSogdGFibGUp
CisgICAgICAgIDogbV90YWJsZSh0YWJsZSkKKyAgICB7CisgICAgfQorICAgIHZpcnR1YWwgflRh
YmxlTGF5b3V0KCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgY2FsY01pbk1heFdpZHRoKCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSA9IDA7CkBAIC00MCw2ICs0Miw2IEBAIHByb3Rl
Y3RlZDoKICAgICBSZW5kZXJUYWJsZSogbV90YWJsZTsKIH07CiAKLX0KK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8gVGFibGVMYXlvdXRfSApJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvYmlkaS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL2JpZGku
aAkocmV2aXNpb24gMTczMjIpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9iaWRpLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDEzICszNCwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
SW5saW5lQm94OwogCiAgICAgc3RydWN0IEJpZGlTdGF0dXMgewotICAgICAgICBCaWRpU3RhdHVz
KCkgOiBlb3IoVV9PVEhFUl9ORVVUUkFMKSwgbGFzdFN0cm9uZyhVX09USEVSX05FVVRSQUwpLCBs
YXN0KFVfT1RIRVJfTkVVVFJBTCkge30KLSAgICAgICAgCisgICAgICAgIEJpZGlTdGF0dXMoKQor
ICAgICAgICAgICAgOiBlb3IoVV9PVEhFUl9ORVVUUkFMKQorICAgICAgICAgICAgLCBsYXN0U3Ry
b25nKFVfT1RIRVJfTkVVVFJBTCkKKyAgICAgICAgICAgICwgbGFzdChVX09USEVSX05FVVRSQUwp
CisgICAgICAgIHsKKyAgICAgICAgfQorCiAgICAgICAgIFVDaGFyRGlyZWN0aW9uIGVvcjsKICAg
ICAgICAgVUNoYXJEaXJlY3Rpb24gbGFzdFN0cm9uZzsKICAgICAgICAgVUNoYXJEaXJlY3Rpb24g
bGFzdDsKICAgICB9OwotICAgICAgICAKKwogICAgIGNsYXNzIEJpZGlDb250ZXh0IHsKICAgICBw
dWJsaWM6CiAgICAgICAgIEJpZGlDb250ZXh0KHVuc2lnbmVkIGNoYXIgbGV2ZWwsIFVDaGFyRGly
ZWN0aW9uIGVtYmVkZGluZywgQmlkaUNvbnRleHQqIHBhcmVudCA9IDAsIGJvb2wgb3ZlcnJpZGUg
PSBmYWxzZSk7CkBAIC02NSw3ICs3MCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBz
dHJ1Y3QgQmlkaVJ1biB7CiAgICAgICAgIEJpZGlSdW4oaW50IHN0YXJ0XywgaW50IHN0b3BfLCBS
ZW5kZXJPYmplY3QqIG8sIEJpZGlDb250ZXh0KiBjb250ZXh0LCBVQ2hhckRpcmVjdGlvbiBkaXIp
Ci0gICAgICAgICAgICA6ICBzdGFydChzdGFydF8pLCBzdG9wKHN0b3BfKSwgb2JqKG8pLCBib3go
MCksIG92ZXJyaWRlKGNvbnRleHQtPm92ZXJyaWRlKSwgbmV4dFJ1bigwKQorICAgICAgICAgICAg
OiBzdGFydChzdGFydF8pCisgICAgICAgICAgICAsIHN0b3Aoc3RvcF8pCisgICAgICAgICAgICAs
IG9iaihvKQorICAgICAgICAgICAgLCBib3goMCkKKyAgICAgICAgICAgICwgb3ZlcnJpZGUoY29u
dGV4dC0+b3ZlcnJpZGUpCisgICAgICAgICAgICAsIG5leHRSdW4oMCkKICAgICAgICAgewogICAg
ICAgICAgICAgaWYgKGRpciA9PSBVX09USEVSX05FVVRSQUwpIAogICAgICAgICAgICAgICAgIGRp
ciA9IGNvbnRleHQtPmRpcigpOwpAQCAtMTAwLDE0ICsxMTAsMTQgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBpbnQgc3RhcnQ7CiAgICAgICAgIGludCBzdG9wOwogCi0gICAgICAgIFJl
bmRlck9iamVjdCAqb2JqOworICAgICAgICBSZW5kZXJPYmplY3QqIG9iajsKICAgICAgICAgSW5s
aW5lQm94KiBib3g7Ci0gICAgICAgIAorCiAgICAgICAgIC8vIGV4cGxpY2l0ICsgaW1wbGljaXQg
bGV2ZWxzIGhlcmUKICAgICAgICAgdW5zaWduZWQgY2hhciBsZXZlbDsKICAgICAgICAgYm9vbCBv
dmVycmlkZSA6IDE7CiAgICAgICAgIGJvb2wgY29tcGFjdCA6IDE7Ci0gICAgICAgIAorCiAgICAg
ICAgIEJpZGlSdW4qIG5leHRSdW47CiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcv
YnJlYWtfbGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9icmVha19saW5l
cy5oCShyZXZpc2lvbiAxNzMyMikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDkgQEAKICAqCiAgKi8KIAorI2lmbmRlZiBicmVh
a19saW5lc19oCisjZGVmaW5lIGJyZWFrX2xpbmVzX2gKKwogI2luY2x1ZGUgIlVDaGFyLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMzLDQgKzM2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICByZXR1cm4gcG9zID09IG5leHRCcmVha2FibGU7CiAgICAgfQogCi19Cit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBicmVha19saW5lc19oCg==
</data>
<flag name="review"
          id="3855"
          type_id="1"
          status="-"
          setter="mitz"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11227</attachid>
            <date>2006-10-26 12:59:26 -0700</date>
            <delta_ts>2006-10-26 13:04:29 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>fallclean2.diff</filename>
            <type>text/plain</type>
            <size>45341</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNzMzMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzYgQEAKKzIwMDYtMTAtMjYgIFNhbSBXZWluaWcgIDxzYW0ud2VpbmlnQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
aXggZm9yIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDI0CisgICAg
ICAgIENsZWFudXAgcmVuZGVyaW5nIGNvZGUKKworICAgICAgICAtIEFzc29ydGVkIGNvZGUgY2xl
YW51cC4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiByZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcDoKKyAgICAgICAgKiByZW5kZXJp
bmcvQXV0b1RhYmxlTGF5b3V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBdXRvVGFibGVMYXlvdXQ6
OnRvdGFsUGVyY2VudCk6CisgICAgICAgICogcmVuZGVyaW5nL0NvdW50ZXJMaXN0SXRlbS5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9Db3VudGVyTm9kZS5jcHA6CisgICAgICAgICogcmVuZGVyaW5n
L0NvdW50ZXJOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpDb3VudGVyTm9kZTo6fkNvdW50ZXJO
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXJOb2RlOjppc1Jlc2V0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvQ291bnRlclJlc2V0Tm9kZS5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL0Nv
dW50ZXJSZXNldE5vZGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvRGF0YVJlZi5oOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YVJlZjo6RGF0YVJlZik6CisgICAgICAgICogcmVuZGVyaW5nL0RlcHJl
Y2F0ZWRSZW5kZXJTZWxlY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvRGVwcmVjYXRlZFNsaWRl
ci5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL0RlcHJlY2F0ZWRTbGlkZXIuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9FbGxpcHNp
c0JveC5oOgorICAgICAgICAoV2ViQ29yZTo6RWxsaXBzaXNCb3g6OkVsbGlwc2lzQm94KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5jcHA6CisgICAgICAgICogcmVuZGVy
aW5nL0ZpeGVkVGFibGVMYXlvdXQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvR2FwUmVjdHMuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lQm94LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcv
SW5saW5lQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OklubGluZUJveCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OnNldENvbnN0cnVjdGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OklubGluZUJveDo6Y2xlYXJUcnVuY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUJveDo6bWFya0RpcnR5KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5j
cHA6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaDoKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUZsb3dCb3g6OklubGluZUZsb3dCb3gpOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lRmxvd0JveDo6c2V0Q29uc3RydWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxv
d0JveDo6c2V0RWRnZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6c2V0VmVy
dGljYWxPdmVyZmxvd1Bvc2l0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94
OjpzZXRWZXJ0aWNhbFNlbGVjdGlvblBvc2l0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL0lu
bGluZVJ1bkJveC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lUnVuQm94OjpwYWludEJhY2tn
cm91bmRBbmRCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lUnVuQm94OjpwYWludERl
Y29yYXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAg
ICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZVRleHRCb3g6OklubGluZVRleHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJv
eDo6ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnRleHRPYmplY3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9MZW5ndGguaDoKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6
TGVuZ3RoKToKKyAgICAgICAgKiByZW5kZXJpbmcvTGlzdE1hcmtlckJveC5jcHA6CisgICAgICAg
ICogcmVuZGVyaW5nL0xpc3RNYXJrZXJCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
UGFydE9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9T
VkdJbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvU1ZHSW5saW5lRmxvd0Jv
eC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lRmxvd0JveDo6U1ZHSW5saW5lRmxvd0Jv
eCk6CisgICAgICAgICogcmVuZGVyaW5nL1NWR1Jvb3RJbmxpbmVCb3guY3BwOgorICAgICAgICAq
IHJlbmRlcmluZy9TVkdSb290SW5saW5lQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdSb290
SW5saW5lQm94OjpTVkdSb290SW5saW5lQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvVGFibGVM
YXlvdXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRhYmxlTGF5b3V0OjpUYWJsZUxheW91dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUYWJsZUxheW91dDo6flRhYmxlTGF5b3V0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvYmlkaS5oOgorICAgICAgICAoV2ViQ29yZTo6QmlkaVN0YXR1czo6QmlkaVN0YXR1
cyk6CisgICAgICAgIChXZWJDb3JlOjpCaWRpUnVuOjpCaWRpUnVuKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvYnJlYWtfbGluZXMuaDoKKwogMjAwNi0xMC0yNiAgTmlrb2xhcyBaaW1tZXJtYW5uICA8
emltbWVybWFubkBrZGUub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluLgpJbmRleDog
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE3MzMx
KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTg3NTAsOCArODc1MCw2IEBACiAJCUY1MjNEMkYzMDJERTQ0M0IwMTg2MzVDQSAv
KiByZW5kZXJpbmcgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAot
CQkJCUFCQjU0MTlDMEFDRERGRTQwMDI4MjBFQiAvKiBSZW5kZXJMaXN0Qm94LmNwcCAqLywKLQkJ
CQlBQkI1NDE5RDBBQ0RERkU0MDAyODIwRUIgLyogUmVuZGVyTGlzdEJveC5oICovLAogCQkJCUE4
Q0ZGMDRCMEExNTRGMDkwMDBBNDIzNCAvKiBBdXRvVGFibGVMYXlvdXQuY3BwICovLAogCQkJCUE4
Q0ZGMDQ5MEExNTRGMDkwMDBBNDIzNCAvKiBBdXRvVGFibGVMYXlvdXQuaCAqLywKIAkJCQlCQ0VB
NDgxMzA5N0Q5MzAyMDA5NEM5RTQgLyogYmlkaS5jcHAgKi8sCkBAIC04ODI5LDYgKzg4MjcsOCBA
QAogCQkJCUE4RUE3M0JEMEExOTAwRTMwMEE4RUY1RiAvKiBSZW5kZXJMZWdlbmQuaCAqLywKIAkJ
CQlBOEVBNzNCRTBBMTkwMEUzMDBBOEVGNUYgLyogUmVuZGVyTGluZUVkaXQuY3BwICovLAogCQkJ
CUE4RUE3M0IxMEExOTAwRTMwMEE4RUY1RiAvKiBSZW5kZXJMaW5lRWRpdC5oICovLAorCQkJCUFC
QjU0MTlDMEFDRERGRTQwMDI4MjBFQiAvKiBSZW5kZXJMaXN0Qm94LmNwcCAqLywKKwkJCQlBQkI1
NDE5RDBBQ0RERkU0MDAyODIwRUIgLyogUmVuZGVyTGlzdEJveC5oICovLAogCQkJCUE4RUE3QTQ4
MEExOTFBNTIwMEE4RUY1RiAvKiBSZW5kZXJMaXN0SXRlbS5jcHAgKi8sCiAJCQkJQThFQTdBNEMw
QTE5MUE1MjAwQThFRjVGIC8qIFJlbmRlckxpc3RJdGVtLmggKi8sCiAJCQkJQThFQTdBNEIwQTE5
MUE1MjAwQThFRjVGIC8qIFJlbmRlckxpc3RNYXJrZXIuY3BwICovLApAQCAtMTA0ODksNyArMTA0
ODksNiBAQAogCQkwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi8g
PSB7CiAJCQlpc2EgPSBQQlhQcm9qZWN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0
OUMyODQzMDg5MDJCMTEwMDhBOUVGQyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBC
WFByb2plY3QgIldlYkNvcmUiICovOwotCQkJY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUg
Mi40IjsKIAkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwogCQkJa25vd25SZWdpb25zID0g
KAogCQkJCUVuZ2xpc2gsCkBAIC0xMDUwNCw3ICsxMDUwMyw2IEBACiAJCQlwcm9kdWN0UmVmR3Jv
dXAgPSAwMzQ3NjhERkZGMzhBNTA0MTFEQjlDOEIgLyogUHJvZHVjdHMgKi87CiAJCQlwcm9qZWN0
RGlyUGF0aCA9ICIiOwogCQkJcHJvamVjdFJvb3QgPSAiIjsKLQkJCXNob3VsZENoZWNrQ29tcGF0
aWJpbGl0eSA9IDE7CiAJCQl0YXJnZXRzID0gKAogCQkJCTkzRjE5OEE1MDgyNDVFNTkwMDFFOUFC
QyAvKiBXZWJDb3JlICovLAogCQkJCUREMDQxRkJFMDlEOUREQkUwMDEwQUYyQSAvKiBEZXJpdmVk
IFNvdXJjZXMgKi8sCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAJKHJl
dmlzaW9uIDE3MzMxKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjAsNiArMjAsNyBAQAogICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAogICogQm9zdG9uLCBN
QSAwMjExMS0xMzA3LCBVU0EuCiAgKi8KKwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkF1dG9UYWJsZUxheW91dC5oIgogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVM
YXlvdXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQu
aAkocmV2aXNpb24gMTczMzEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBSZW5kZXJUYWJsZTsKIGNsYXNzIFJlbmRlclRhYmxlQ2VsbDsKIAotY2xhc3MgQXV0b1Rh
YmxlTGF5b3V0IDogcHVibGljIFRhYmxlTGF5b3V0Ci17CitjbGFzcyBBdXRvVGFibGVMYXlvdXQg
OiBwdWJsaWMgVGFibGVMYXlvdXQgewogcHVibGljOgogICAgIEF1dG9UYWJsZUxheW91dChSZW5k
ZXJUYWJsZSopOwogICAgIH5BdXRvVGFibGVMYXlvdXQoKTsKQEAgLTQ0LDEzICs0MywxNyBAQCBw
dWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmdWxsUmVjYWxjKCk7CiAgICAgdm9pZCByZWNh
bGNDb2x1bW4oaW50IGVmZkNvbCk7Ci0gICAgaW50IHRvdGFsUGVyY2VudCgpIGNvbnN0IHsKKwor
ICAgIHZvaWQgY2FsY1BlcmNlbnRhZ2VzKCkgY29uc3Q7CisgICAgaW50IHRvdGFsUGVyY2VudCgp
IGNvbnN0CisgICAgewogICAgICAgICBpZiAobV9wZXJjZW50YWdlc0RpcnR5KQogICAgICAgICAg
ICAgY2FsY1BlcmNlbnRhZ2VzKCk7CiAgICAgICAgIHJldHVybiBtX3RvdGFsUGVyY2VudDsKICAg
ICB9Ci0gICAgdm9pZCBjYWxjUGVyY2VudGFnZXMoKSBjb25zdDsKKwogICAgIGludCBjYWxjRWZm
ZWN0aXZlV2lkdGgoKTsKKwogICAgIHZvaWQgaW5zZXJ0U3BhbkNlbGwoUmVuZGVyVGFibGVDZWxs
Kik7CiAKICAgICBzdHJ1Y3QgTGF5b3V0IHsKQEAgLTc3LDYgKzgwLDYgQEAgcHJvdGVjdGVkOgog
ICAgIG11dGFibGUgdW5zaWduZWQgc2hvcnQgbV90b3RhbFBlcmNlbnQ7CiB9OwogCi19Cit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlmIC8vIEF1dG9UYWJsZUxheW91dF9I
CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9Db3VudGVyTGlzdEl0ZW0uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9Db3VudGVyTGlzdEl0ZW0uaAkocmV2aXNpb24gMTczMzEpCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9Db3VudGVyTGlzdEl0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAt
MjgsMTYgKzI4LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ291bnRlckxp
c3RJdGVtIDogcHVibGljIENvdW50ZXJOb2RlCi17CitjbGFzcyBDb3VudGVyTGlzdEl0ZW0gOiBw
dWJsaWMgQ291bnRlck5vZGUgewogcHVibGljOgogICAgIGludCBjb3VudCgpIGNvbnN0OwogCiAg
ICAgdmlydHVhbCB2b2lkIHJlY291bnQoYm9vbCBzZXREaXJ0eSA9IHRydWUpOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRTZWxmRGlydHkoKTsKLQogfTsKIAotfSAvL25hbWVzcGFjZQorfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBDb3VudGVyTGlzdEl0ZW1fSApJbmRl
eDogV2ViQ29yZS9yZW5kZXJpbmcvQ291bnRlck5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmNwcAkocmV2aXNpb24gMTczMzEpCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9Db3VudGVyTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw0ICsxMDgs
NCBAQCB2b2lkIENvdW50ZXJOb2RlOjpzZXRQYXJlbnREaXJ0eSgpCiAgICAgICAgIG1fcmVuZGVy
ZXItPnNldE5lZWRzTGF5b3V0QW5kTWluTWF4UmVjYWxjKCk7CiB9CiAKLX0gLy8gbmFtZXNwYWNl
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9Db3VudGVy
Tm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmgJKHJl
dmlzaW9uIDE3MzMxKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvQ291bnRlck5vZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjAsOCArMjAsOCBAQAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0Eu
CiAgKgogKi8KLSNpZm5kZWYgQ291bnRlcl9Ob2RlX2hfCi0jZGVmaW5lIENvdW50ZXJfTm9kZV9o
XworI2lmbmRlZiBDb3VudGVyTm9kZV9oCisjZGVmaW5lIENvdW50ZXJOb2RlX2gKIAogI2luY2x1
ZGUgIlJlbmRlck9iamVjdC5oIgogCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIENvdW50ZXJSZXNl
dE5vZGU7CiBjbGFzcyBDb3VudGVyTm9kZSB7CiBwdWJsaWM6CiAgICAgQ291bnRlck5vZGUoUmVu
ZGVyT2JqZWN0Kik7Ci0gICAgdmlydHVhbCB+Q291bnRlck5vZGUoKSB7fQorICAgIHZpcnR1YWwg
fkNvdW50ZXJOb2RlKCkgeyB9CiAKICAgICBDb3VudGVyUmVzZXROb2RlKiBwYXJlbnQoKSBjb25z
dCB7IHJldHVybiBtX3BhcmVudDsgfQogICAgIENvdW50ZXJOb2RlKiBwcmV2aW91c1NpYmxpbmco
KSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3VzOyB9CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIENvdW50ZXJOb2RlKiBmaXJzdENoaWxkKCkgY29uc3QgeyByZXR1cm4gMDsg
fQogICAgIHZpcnR1YWwgQ291bnRlck5vZGUqIGxhc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0QWZ0ZXIoQ291bnRlck5vZGUqIG5ld0NoaWxkLCBD
b3VudGVyTm9kZSogcmVmQ2hpbGQpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDaGlsZCAoQ291
bnRlck5vZGUqIG9sZENoaWxkKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2hpbGQoQ291bnRl
ck5vZGUqKTsKICAgICB2b2lkIHJlbW92ZSgpOwogCiAgICAgaW50IHZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWx1ZTsgfQpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRD
b3VudChpbnQgYykgeyBtX2NvdW50ID0gYzsgfQogICAgIHZvaWQgc2V0SGFzU2VwYXJhdG9yKCkg
eyBtX2hhc1NlcGFyYXRvciA9IHRydWU7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc1Jlc2V0KCkg
Y29uc3R7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1Jlc2V0KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIENvdW50ZXJOb2RlKiByZWNvdW50QW5kR2V0
TmV4dChib29sIHNldERpcnR5ID0gdHJ1ZSk7CiAgICAgdmlydHVhbCB2b2lkIHJlY291bnRUcmVl
KGJvb2wgc2V0RGlydHkgPSB0cnVlKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZkRpcnR5KCk7
CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9Db3VudGVyUmVzZXROb2RlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9Db3VudGVyUmVzZXROb2RlLmNwcAkocmV2aXNpb24gMTcz
MzEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9Db3VudGVyUmVzZXROb2RlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTUzLDQgKzE1Myw0IEBAIHZvaWQgQ291bnRlclJlc2V0Tm9kZTo6dXBkYXRlVG90
YWwoaW50IHYKICAgICAgICAgbV90b3RhbCA9IHZhbHVlOwogfQogCi19IC8vIG5hbWVzcGFjZQor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvQ291bnRlclJl
c2V0Tm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL0NvdW50ZXJSZXNldE5v
ZGUuaAkocmV2aXNpb24gMTczMzEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9Db3VudGVyUmVzZXRO
b2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDggKzIwLDggQEAKICAqIEJvc3RvbiwgTUEgMDIx
MTEtMTMwNywgVVNBLgogICoKICovCi0jaWZuZGVmIENvdW50ZXJfUmVzZXRfTm9kZV9oXwotI2Rl
ZmluZSBDb3VudGVyX1Jlc2V0X05vZGVfaF8KKyNpZm5kZWYgQ291bnRlclJlc2V0Tm9kZV9oCisj
ZGVmaW5lIENvdW50ZXJSZXNldE5vZGVfaAogCiAjaW5jbHVkZSAiQ291bnRlck5vZGUuaCIKIApA
QCAtMzQsMTQgKzM0LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gSW1wbGVtZW50YXRp
b24gb2YgY291bnRlci1yZXNldCBhbmQgcm9vdAogY2xhc3MgQ291bnRlclJlc2V0Tm9kZSA6IHB1
YmxpYyBDb3VudGVyTm9kZSB7Ci0KIHB1YmxpYzoKICAgICBDb3VudGVyUmVzZXROb2RlKFJlbmRl
ck9iamVjdCopOwogCiAgICAgdmlydHVhbCBDb3VudGVyTm9kZSogZmlyc3RDaGlsZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZmlyc3Q7IH07CiAgICAgdmlydHVhbCBDb3VudGVyTm9kZSogbGFzdENoaWxk
KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0OyB9OwogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRBZnRl
cihDb3VudGVyTm9kZSogbmV3Q2hpbGQsIENvdW50ZXJOb2RlKiByZWZDaGlsZCk7Ci0gICAgdmly
dHVhbCB2b2lkIHJlbW92ZUNoaWxkIChDb3VudGVyTm9kZSopOworICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVDaGlsZChDb3VudGVyTm9kZSopOwogCiAgICAgdmlydHVhbCBib29sIGlzUmVzZXQoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9OwogICAgIHZpcnR1YWwgQ291bnRlck5vZGUqIHJlY291bnRB
bmRHZXROZXh0KGJvb2wgc2V0RGlydHkgPSB0cnVlKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5n
L0RhdGFSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9EYXRhUmVmLmgJKHJl
dmlzaW9uIDE3MzMxKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvRGF0YVJlZi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCwxMCArMzAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRGF0YVJlZgotewordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNs
YXNzIERhdGFSZWYgewogcHVibGljOgotICAgIERhdGFSZWYoKSA6IG1fZGF0YSgwKSB7IH0KKyAg
ICBEYXRhUmVmKCkKKyAgICAgICAgOiBtX2RhdGEoMCkKKyAgICB7CisgICAgfQogCiAgICAgRGF0
YVJlZihjb25zdCBEYXRhUmVmPFQ+JiBkKQogICAgIHsKQEAgLTk4LDYgKzEwMCw2IEBAIHByaXZh
dGU6CiAgICAgVCogbV9kYXRhOwogfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0j
ZW5kaWYKKyNlbmRpZiAvLyBEYXRhUmVmX2gKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL0RlcHJl
Y2F0ZWRSZW5kZXJTZWxlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9EZXBy
ZWNhdGVkUmVuZGVyU2VsZWN0LmgJKHJldmlzaW9uIDE3MzMxKQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvRGVwcmVjYXRlZFJlbmRlclNlbGVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3
IEBACiAjaW5jbHVkZSAiUmVuZGVyRm9ybUVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewotICAgIAorCiAgICAgY2xhc3MgSFRNTFNlbGVjdEVsZW1lbnQ7CiAgICAgY2xhc3MgTGlzdEJv
eDsKIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvRGVwcmVjYXRlZFNsaWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvRGVwcmVjYXRlZFNsaWRlci5jcHAJKHJldmlzaW9u
IDE3MzMxKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvRGVwcmVjYXRlZFNsaWRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRlICJEZXByZWNhdGVkU2xpZGVyLmgi
CiAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5j
bHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1
ZGUgIlNsaWRlci5oIgogCiB1c2luZyBzdGQ6Om1pbjsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5n
L0RlcHJlY2F0ZWRTbGlkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9EZXBy
ZWNhdGVkU2xpZGVyLmgJKHJldmlzaW9uIDE3MzMxKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvRGVw
cmVjYXRlZFNsaWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMSArMzEsMTEgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7Ci0gICAgCisKICAg
ICBjbGFzcyBEZXByZWNhdGVkU2xpZGVyIDogcHVibGljIFJlbmRlckZvcm1FbGVtZW50IHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIERlcHJlY2F0ZWRTbGlkZXIoSFRNTElucHV0RWxlbWVudCopOwot
ICAgICAgICAKKwogICAgICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25z
dCB7IHJldHVybiAiRGVwcmVjYXRlZFNsaWRlciI7IH0KIAogICAgICAgICB2aXJ0dWFsIHZvaWQg
Y2FsY01pbk1heFdpZHRoKCk7CkBAIC00NSw3ICs0NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHZhbHVlQ2hhbmdlZChXaWRnZXQqKTsKICAgICB9OwogCi0K
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIERlcHJlY2F0ZWRTbGlkZXJfaApJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcAkocmV2aXNpb24gMTczMzEpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4LDcgKzE4
LDYgQEAKICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQ
bGFjZSAtIFN1aXRlIDMzMCwKICAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogICovCi0v
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFbGxp
cHNpc0JveC5oIgpAQCAtODQsNCArODMsNCBAQCBib29sIEVsbGlwc2lzQm94Ojpub2RlQXRQb2lu
dChSZW5kZXJPYmplCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmgJKHJldmlzaW9uIDE3MzMxKQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMjMg
KzI4LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRWxsaXBzaXNCb3ggOiBwdWJs
aWMgSW5saW5lQm94IHsKIHB1YmxpYzoKLSAgICBFbGxpcHNpc0JveChSZW5kZXJPYmplY3QqIG9i
aiwgY29uc3QgQXRvbWljU3RyaW5nJiBlbGxpcHNpc1N0ciwgSW5saW5lRmxvd0JveCogcCwKLSAg
ICAgICAgICAgICAgICBpbnQgdywgaW50IHksIGludCBoLCBpbnQgYiwgYm9vbCBmaXJzdExpbmUs
IElubGluZUJveCogbWFya3VwQm94KQotICAgICAgICA6IElubGluZUJveChvYmopCisgICAgRWxs
aXBzaXNCb3goUmVuZGVyT2JqZWN0KiBvYmosIGNvbnN0IEF0b21pY1N0cmluZyYgZWxsaXBzaXNT
dHIsIElubGluZUZsb3dCb3gqIHBhcmVudCwKKyAgICAgICAgICAgICAgICBpbnQgd2lkdGgsIGlu
dCB5LCBpbnQgaGVpZ2h0LCBpbnQgYmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBJbmxpbmVCb3gq
IG1hcmt1cEJveCkKKyAgICAgICAgOiBJbmxpbmVCb3gob2JqLCAwLCB5LCB3aWR0aCwgaGVpZ2h0
LCBiYXNlbGluZSwgZmlyc3RMaW5lLCB0cnVlLCBmYWxzZSwgZmFsc2UsIDAsIDAsIHBhcmVudCkK
ICAgICAgICAgLCBtX3N0cihlbGxpcHNpc1N0cikKKyAgICAgICAgLCBtX21hcmt1cEJveChtYXJr
dXBCb3gpCiAgICAgewotICAgICAgICBtX3BhcmVudCA9IHA7Ci0gICAgICAgIG1fd2lkdGggPSB3
OwotICAgICAgICBtX3kgPSB5OwotICAgICAgICBtX2hlaWdodCA9IGg7Ci0gICAgICAgIG1fYmFz
ZWxpbmUgPSBiOwotICAgICAgICBtX2ZpcnN0TGluZSA9IGZpcnN0TGluZTsKLSAgICAgICAgbV9j
b25zdHJ1Y3RlZCA9IHRydWU7Ci0gICAgICAgIG1fbWFya3VwQm94ID0gbWFya3VwQm94OwogICAg
IH0KLSAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUmVuZGVyT2JqZWN0OjpQYWludEluZm8m
IGksIGludCBfdHgsIGludCBfdHkpOwotICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChSZW5k
ZXJPYmplY3Q6Ok5vZGVJbmZvJiBpbmZvLCBpbnQgX3gsIGludCBfeSwgaW50IF90eCwgaW50IF90
eSk7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBp
bnQgdHgsIGludCB0eSk7CisgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KFJlbmRlck9iamVj
dDo6Tm9kZUluZm8mLCBpbnQgeCwgaW50IHksIGludCB0eCwgaW50IHR5KTsKIAogcHJpdmF0ZToK
ICAgICBBdG9taWNTdHJpbmcgbV9zdHI7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9GaXhlZFRh
YmxlTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9GaXhlZFRhYmxl
TGF5b3V0LmNwcAkocmV2aXNpb24gMTczMzEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9GaXhlZFRh
YmxlTGF5b3V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM2LDQgKzMzNiw0IEBAIHZvaWQgRml4
ZWRUYWJsZUxheW91dDo6bGF5b3V0KCkKIAogI3VuZGVmIERFQlVHX0xBWU9VVAogCi19Cit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9GaXhlZFRhYmxlTGF5
b3V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5o
CShyZXZpc2lvbiAxNzMzMSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFJlbmRlclRhYmxlOwogCi1jbGFzcyBGaXhlZFRhYmxlTGF5b3V0IDogcHVibGljIFRh
YmxlTGF5b3V0Ci17CitjbGFzcyBGaXhlZFRhYmxlTGF5b3V0IDogcHVibGljIFRhYmxlTGF5b3V0
IHsKIHB1YmxpYzoKICAgICBGaXhlZFRhYmxlTGF5b3V0KFJlbmRlclRhYmxlKik7CiAgICAgfkZp
eGVkVGFibGVMYXlvdXQoKTsKQEAgLTQ2LDYgKzQ1LDYgQEAgcHJvdGVjdGVkOgogICAgIFZlY3Rv
cjxMZW5ndGg+IG1fd2lkdGg7CiB9OwogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNl
bmRpZgorI2VuZGlmIC8vIEZpeGVkVGFibGVMYXlvdXRfSApJbmRleDogV2ViQ29yZS9yZW5kZXJp
bmcvR2FwUmVjdHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9HYXBSZWN0cy5o
CShyZXZpc2lvbiAxNzMzMSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL0dhcFJlY3RzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU5LDYgKzU5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBJ
bnRSZWN0IG1fcmlnaHQ7CiAgICAgfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0j
ZW5kaWYKKyNlbmRpZiAvLyBHYXBSZWN0c19oCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAJ
KHJldmlzaW9uIDE3MzMxKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTgsMTIgKzE4LDEzIEBACiAgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCiAgKiBCb3N0b24sIE1B
IDAyMTExLTEzMDcsIFVTQS4KICAqLworCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
SW5saW5lQm94LmgiCiAKICNpbmNsdWRlICJJbmxpbmVGbG93Qm94LmgiCi0jaW5jbHVkZSAiUm9v
dElubGluZUJveC5oIgogI2luY2x1ZGUgIlJlbmRlckFyZW5hLmgiCisjaW5jbHVkZSAiUm9vdElu
bGluZUJveC5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC0yMzgsNyArMjM5LDcgQEAg
aW50IElubGluZUJveDo6cGxhY2VFbGxpcHNpc0JveChib29sIGx0cgogICAgIHJldHVybiAtMTsK
IH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjaWZuZGVmIE5ERUJVRwogCkluZGV4
OiBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVCb3guaAkocmV2aXNpb24gMTczMzEpCisrKyBXZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsNyBAQCBjbGFzcyBSb290
SW5saW5lQm94OwogCiAvLyBJbmxpbmVCb3ggcmVwcmVzZW50cyBhIHJlY3RhbmdsZSB0aGF0IG9j
Y3VycyBvbiBhIGxpbmUuICBJdCBjb3JyZXNwb25kcyB0bwogLy8gc29tZSBSZW5kZXJPYmplY3Qg
KGkuZS4sIGl0IHJlcHJlc2VudHMgYSBwb3J0aW9uIG9mIHRoYXQgUmVuZGVyT2JqZWN0KS4KLWNs
YXNzIElubGluZUJveAoteworY2xhc3MgSW5saW5lQm94IHsKIHB1YmxpYzoKICAgICBJbmxpbmVC
b3goUmVuZGVyT2JqZWN0KiBvYmopCiAgICAgICAgIDogbV9vYmplY3Qob2JqKQpAQCAtNTEsNiAr
NTAsMjQgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKKyAgICBJbmxpbmVCb3goUmVuZGVyT2Jq
ZWN0KiBvYmosIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgYmFzZWxp
bmUsIGJvb2wgZmlyc3RMaW5lLCBib29sIGNvbnN0cnVjdGVkLAorICAgICAgICAgICAgICBib29s
IGRpcnR5LCBib29sIGV4dHJhY3RlZCwgSW5saW5lQm94KiBuZXh0LCBJbmxpbmVCb3gqIHByZXYs
IElubGluZUZsb3dCb3gqIHBhcmVudCkKKyAgICAgICAgOiBtX29iamVjdChvYmopCisgICAgICAg
ICwgbV94KHgpCisgICAgICAgICwgbV95KHkpCisgICAgICAgICwgbV93aWR0aCh3aWR0aCkKKyAg
ICAgICAgLCBtX2hlaWdodChoZWlnaHQpCisgICAgICAgICwgbV9iYXNlbGluZShiYXNlbGluZSkK
KyAgICAgICAgLCBtX2ZpcnN0TGluZShmaXJzdExpbmUpCisgICAgICAgICwgbV9jb25zdHJ1Y3Rl
ZChjb25zdHJ1Y3RlZCkKKyAgICAgICAgLCBtX2RpcnR5KGRpcnR5KQorICAgICAgICAsIG1fZXh0
cmFjdGVkKGV4dHJhY3RlZCkKKyAgICAgICAgLCBtX25leHQobmV4dCkKKyAgICAgICAgLCBtX3By
ZXYocHJldikKKyAgICAgICAgLCBtX3BhcmVudChwYXJlbnQpCisgICAgeworICAgIH0KKwogICAg
IHZpcnR1YWwgfklubGluZUJveCgpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koUmVu
ZGVyQXJlbmEqKTsKQEAgLTYzLDkgKzgwLDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IGFkanVzdFBvc2l0aW9uKGludCBkeCwgaW50IGR5KTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWlu
dChSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGludCBfdHgsIGludCBfdHkpOworICAgIHZpcnR1
YWwgdm9pZCBwYWludChSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5KTsK
ICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoUmVuZGVyT2JqZWN0OjpOb2RlSW5mbyYsIGlu
dCB4LCBpbnQgeSwgaW50IHR4LCBpbnQgdHkpOwotICAgIAorCiAgICAgLy8gT3ZlcmxvYWRlZCBu
ZXcgb3BlcmF0b3IuCiAgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgUmVuZGVyQXJlbmEq
KSB0aHJvdygpOwogCkBAIC03NSw3ICs5Miw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8g
VGhlIG5vcm1hbCBvcGVyYXRvciBuZXcgaXMgZGlzYWxsb3dlZC4KICAgICB2b2lkKiBvcGVyYXRv
ciBuZXcoc2l6ZV90KSB0aHJvdygpOwotICAgIAorCiBwdWJsaWM6CiAjaWZuZGVmIE5ERUJVRwog
ICAgIHZvaWQgc2hvd1RyZWVGb3JUaGlzKCkgY29uc3Q7CkBAIC04OSwxMSArMTA2LDEzIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
IAogICAgIGJvb2wgaXNDb25zdHJ1Y3RlZCgpIHsgcmV0dXJuIG1fY29uc3RydWN0ZWQ7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q29uc3RydWN0ZWQoKSB7CisgICAgdmlydHVhbCB2b2lkIHNldENv
bnN0cnVjdGVkKCkKKyAgICB7CiAgICAgICAgIG1fY29uc3RydWN0ZWQgPSB0cnVlOwogICAgICAg
ICBpZiAobV9uZXh0KQogICAgICAgICAgICAgbV9uZXh0LT5zZXRDb25zdHJ1Y3RlZCgpOwogICAg
IH0KKwogICAgIHZvaWQgc2V0RXh0cmFjdGVkKGJvb2wgYiA9IHRydWUpIHsgbV9leHRyYWN0ZWQg
PSBiOyB9CiAgICAgCiAgICAgdm9pZCBzZXRGaXJzdExpbmVTdHlsZUJpdChib29sIGYpIHsgbV9m
aXJzdExpbmUgPSBmOyB9CkBAIC0xNDgsMTAgKzE2NywxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBpbnQgY2FyZXRNYXhPZmZzZXQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGNhcmV0
TWF4UmVuZGVyZWRPZmZzZXQoKSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJU
cnVuY2F0aW9uKCkge307CisgICAgdmlydHVhbCB2b2lkIGNsZWFyVHJ1bmNhdGlvbigpIHsgfQog
CiAgICAgYm9vbCBpc0RpcnR5KCkgY29uc3QgeyByZXR1cm4gbV9kaXJ0eTsgfQotICAgIHZvaWQg
bWFya0RpcnR5KGJvb2wgZGlydHk9dHJ1ZSkgeyBtX2RpcnR5ID0gZGlydHk7IH0KKyAgICB2b2lk
IG1hcmtEaXJ0eShib29sIGRpcnR5ID0gdHJ1ZSkgeyBtX2RpcnR5ID0gZGlydHk7IH0KIAogICAg
IHZvaWQgZGlydHlMaW5lQm94ZXMoKTsKICAgICAKQEAgLTE2OSw3ICsxODgsNyBAQCBwdWJsaWM6
IC8vIEZJWE1FOiBXb3VsZCBsaWtlIHRvIG1ha2UgdGhpCiAgICAgaW50IG1fd2lkdGg7CiAgICAg
aW50IG1faGVpZ2h0OwogICAgIGludCBtX2Jhc2VsaW5lOwotICAgIAorCiAgICAgYm9vbCBtX2Zp
cnN0TGluZSA6IDE7CiAgICAgYm9vbCBtX2NvbnN0cnVjdGVkIDogMTsKICAgICBib29sIG1fZGly
dHkgOiAxOwpAQCAtMTgxLDExICsyMDAsMTEgQEAgcHVibGljOiAvLyBGSVhNRTogV291bGQgbGlr
ZSB0byBtYWtlIHRoaQogICAgIElubGluZUZsb3dCb3gqIG1fcGFyZW50OyAvLyBUaGUgYm94IHRo
YXQgY29udGFpbnMgdXMuCiB9OwogCi19IC8vbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNpZm5kZWYgTkRFQlVHCiAvLyBPdXRzaWRlIHRoZSBXZWJDb3JlIG5hbWVzcGFjZSBm
b3IgZWFzZSBvZiBpbnZvY2F0aW9uIGZyb20gZ2RiLgogdm9pZCBzaG93VHJlZShjb25zdCBXZWJD
b3JlOjpJbmxpbmVCb3gqKTsKICNlbmRpZgogCi0jZW5kaWYKKyNlbmRpZiAvLyBJbmxpbmVCb3hf
SApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAJKHJldmlzaW9uIDE3MzMxKQor
KysgV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE4LDYgKzE4LDcgQEAKICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5
IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKICAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNB
LgogICovCisKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbmxpbmVGbG93Qm94Lmgi
CiAKQEAgLTI2LDExICsyNywxMSBAQAogI2luY2x1ZGUgIkVsbGlwc2lzQm94LmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgotI2luY2x1
ZGUgIlJvb3RJbmxpbmVCb3guaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUg
IlJlbmRlckZsb3cuaCIKICNpbmNsdWRlICJSZW5kZXJMaXN0TWFya2VyLmgiCiAjaW5jbHVkZSAi
UmVuZGVyVGFibGVDZWxsLmgiCisjaW5jbHVkZSAiUm9vdElubGluZUJveC5oIgogCiB1c2luZyBu
YW1lc3BhY2Ugc3RkOwogCkBAIC04NDksNCArODUwLDQgQEAgdm9pZCBJbmxpbmVGbG93Qm94Ojpj
bGVhclRydW5jYXRpb24oKQogICAgICAgICBib3gtPmNsZWFyVHJ1bmNhdGlvbigpOwogfQogCi19
IC8vIG5hbWVzcGFjZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lRmxvd0JveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZUZsb3dCb3guaAkocmV2aXNpb24gMTczMzEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVGbG93Qm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE3ICsyNywxNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIElubGluZUZsb3dCb3ggOiBwdWJsaWMgSW5saW5lUnVuQm94
Ci17CitjbGFzcyBJbmxpbmVGbG93Qm94IDogcHVibGljIElubGluZVJ1bkJveCB7CiBwdWJsaWM6
CiAgICAgSW5saW5lRmxvd0JveChSZW5kZXJPYmplY3QqIG9iaikKLSAgICA6SW5saW5lUnVuQm94
KG9iaikKKyAgICAgICAgOiBJbmxpbmVSdW5Cb3gob2JqKQorICAgICAgICAsIG1fZmlyc3RDaGls
ZCgwKQorICAgICAgICAsIG1fbGFzdENoaWxkKDApCisgICAgICAgICwgbV9tYXhIb3Jpem9udGFs
U2hhZG93KDApCisgICAgICAgICwgbV9pbmNsdWRlTGVmdEVkZ2UoZmFsc2UpCisgICAgICAgICwg
bV9pbmNsdWRlUmlnaHRFZGdlKGZhbHNlKQorICAgICAgICAsIG1faGFzVGV4dENoaWxkcmVuKGZh
bHNlKQogICAgIHsKLSAgICAgICAgbV9maXJzdENoaWxkID0gMDsKLSAgICAgICAgbV9sYXN0Q2hp
bGQgPSAwOwotICAgICAgICBtX2luY2x1ZGVMZWZ0RWRnZSA9IG1faW5jbHVkZVJpZ2h0RWRnZSA9
IGZhbHNlOwotICAgICAgICBtX2hhc1RleHRDaGlsZHJlbiA9IGZhbHNlOwotICAgICAgICBtX21h
eEhvcml6b250YWxTaGFkb3cgPSAwOwogICAgIH0KIAogICAgIFJlbmRlckZsb3cqIGZsb3dPYmpl
Y3QoKTsKQEAgLTQ2LDM3ICs0NiwzOCBAQCBwdWJsaWM6CiAKICAgICBJbmxpbmVGbG93Qm94KiBw
cmV2Rmxvd0JveCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PElubGluZUZsb3dCb3gqPiht
X3ByZXZMaW5lKTsgfQogICAgIElubGluZUZsb3dCb3gqIG5leHRGbG93Qm94KCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8SW5saW5lRmxvd0JveCo+KG1fbmV4dExpbmUpOyB9Ci0gICAgCisK
ICAgICBJbmxpbmVCb3gqIGZpcnN0Q2hpbGQoKSB7IHJldHVybiBtX2ZpcnN0Q2hpbGQ7IH0KICAg
ICBJbmxpbmVCb3gqIGxhc3RDaGlsZCgpIHsgcmV0dXJuIG1fbGFzdENoaWxkOyB9CiAKICAgICB2
aXJ0dWFsIElubGluZUJveCogZmlyc3RMZWFmQ2hpbGQoKTsKICAgICB2aXJ0dWFsIElubGluZUJv
eCogbGFzdExlYWZDaGlsZCgpOwotICAgIElubGluZUJveCogZmlyc3RMZWFmQ2hpbGRBZnRlckJv
eChJbmxpbmVCb3gqIHN0YXJ0PTApOwotICAgIElubGluZUJveCogbGFzdExlYWZDaGlsZEJlZm9y
ZUJveChJbmxpbmVCb3gqIHN0YXJ0PTApOwotICAgICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29uc3RydWN0ZWQoKSB7CisgICAgSW5saW5lQm94KiBmaXJzdExlYWZDaGlsZEFmdGVyQm94KElu
bGluZUJveCogc3RhcnQgPSAwKTsKKyAgICBJbmxpbmVCb3gqIGxhc3RMZWFmQ2hpbGRCZWZvcmVC
b3goSW5saW5lQm94KiBzdGFydCA9IDApOworCisgICAgdmlydHVhbCB2b2lkIHNldENvbnN0cnVj
dGVkKCkKKyAgICB7CiAgICAgICAgIElubGluZUJveDo6c2V0Q29uc3RydWN0ZWQoKTsKICAgICAg
ICAgaWYgKG1fZmlyc3RDaGlsZCkKICAgICAgICAgICAgIG1fZmlyc3RDaGlsZC0+c2V0Q29uc3Ry
dWN0ZWQoKTsKICAgICB9Ci0gICAgdm9pZCBhZGRUb0xpbmUoSW5saW5lQm94KiBjaGlsZCk7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlTGluZShSZW5kZXJBcmVuYSogYXJlbmEpOworICAgIHZv
aWQgYWRkVG9MaW5lKElubGluZUJveCogY2hpbGQpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVM
aW5lKFJlbmRlckFyZW5hKik7CiAgICAgdmlydHVhbCB2b2lkIGV4dHJhY3RMaW5lKCk7CiAgICAg
dmlydHVhbCB2b2lkIGF0dGFjaExpbmUoKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0UG9zaXRp
b24oaW50IGR4LCBpbnQgZHkpOwogCiAgICAgdmlydHVhbCB2b2lkIGNsZWFyVHJ1bmNhdGlvbigp
OwotICAgIAotICAgIHZpcnR1YWwgdm9pZCBwYWludEJhY2tncm91bmRBbmRCb3JkZXIoUmVuZGVy
T2JqZWN0OjpQYWludEluZm8mIGksIGludCBfdHgsIGludCBfdHkpOwotICAgIHZvaWQgcGFpbnRC
YWNrZ3JvdW5kcyhHcmFwaGljc0NvbnRleHQqIHAsIGNvbnN0IENvbG9yJiBjLCBjb25zdCBCYWNr
Z3JvdW5kTGF5ZXIqIGJnTGF5ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGludCBteSwg
aW50IG1oLCBpbnQgX3R4LCBpbnQgX3R5LCBpbnQgdywgaW50IGgpOwotICAgIHZvaWQgcGFpbnRC
YWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogcCwgY29uc3QgQ29sb3ImIGMsIGNvbnN0IEJhY2tn
cm91bmRMYXllciogYmdMYXllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbXksIGlu
dCBtaCwgaW50IF90eCwgaW50IF90eSwgaW50IHcsIGludCBoKTsKLSAgICB2aXJ0dWFsIHZvaWQg
cGFpbnREZWNvcmF0aW9ucyhSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgaSwgaW50IF90eCwgaW50
IF90eSwgYm9vbCBwYWludGVkQ2hpbGRyZW4gPSBmYWxzZSk7Ci0gICAgdmlydHVhbCB2b2lkIHBh
aW50KFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBpLCBpbnQgX3R4LCBpbnQgX3R5KTsKLSAgICB2
aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoUmVuZGVyT2JqZWN0OjpOb2RlSW5mbyYgaSwgaW50IHgs
IGludCB5LCBpbnQgdHgsIGludCB0eSk7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCYWNrZ3Jv
dW5kQW5kQm9yZGVyKFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgaW50IHR4LCBpbnQgdHkpOwor
ICAgIHZvaWQgcGFpbnRCYWNrZ3JvdW5kcyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBDb2xvciYs
IGNvbnN0IEJhY2tncm91bmRMYXllciosCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBt
eSwgaW50IG1oLCBpbnQgdHgsIGludCB0eSwgaW50IHcsIGludCBoKTsKKyAgICB2b2lkIHBhaW50
QmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBDb2xvciYsIGNvbnN0IEJhY2tncm91
bmRMYXllciosCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG15LCBpbnQgbWgsIGludCB0
eCwgaW50IHR5LCBpbnQgdywgaW50IGgpOworICAgIHZpcnR1YWwgdm9pZCBwYWludERlY29yYXRp
b25zKFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgaW50IHR4LCBpbnQgdHksIGJvb2wgcGFpbnRl
ZENoaWxkcmVuID0gZmFsc2UpOworICAgIHZpcnR1YWwgdm9pZCBwYWludChSZW5kZXJPYmplY3Q6
OlBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5KTsKKyAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9p
bnQoUmVuZGVyT2JqZWN0OjpOb2RlSW5mbyYsIGludCB4LCBpbnQgeSwgaW50IHR4LCBpbnQgdHkp
OwogCiAgICAgaW50IG1hcmdpbkJvcmRlclBhZGRpbmdMZWZ0KCk7CiAgICAgaW50IG1hcmdpbkJv
cmRlclBhZGRpbmdSaWdodCgpOwpAQCAtODYsMTMgKzg3LDE1IEBAIHB1YmxpYzoKICAgICBpbnQg
Ym9yZGVyUmlnaHQoKSB7IGlmIChpbmNsdWRlUmlnaHRFZGdlKCkpIHJldHVybiBvYmplY3QoKS0+
Ym9yZGVyUmlnaHQoKTsgcmV0dXJuIDA7IH0KICAgICBpbnQgcGFkZGluZ0xlZnQoKSB7IGlmIChp
bmNsdWRlTGVmdEVkZ2UoKSkgcmV0dXJuIG9iamVjdCgpLT5wYWRkaW5nTGVmdCgpOyByZXR1cm4g
MDsgfQogICAgIGludCBwYWRkaW5nUmlnaHQoKSB7IGlmIChpbmNsdWRlUmlnaHRFZGdlKCkpIHJl
dHVybiBvYmplY3QoKS0+cGFkZGluZ1JpZ2h0KCk7IHJldHVybiAwOyB9Ci0gICAgCisKICAgICBi
b29sIGluY2x1ZGVMZWZ0RWRnZSgpIHsgcmV0dXJuIG1faW5jbHVkZUxlZnRFZGdlOyB9CiAgICAg
Ym9vbCBpbmNsdWRlUmlnaHRFZGdlKCkgeyByZXR1cm4gbV9pbmNsdWRlUmlnaHRFZGdlOyB9Ci0g
ICAgdm9pZCBzZXRFZGdlcyhib29sIGluY2x1ZGVMZWZ0LCBib29sIGluY2x1ZGVSaWdodCkgewor
ICAgIHZvaWQgc2V0RWRnZXMoYm9vbCBpbmNsdWRlTGVmdCwgYm9vbCBpbmNsdWRlUmlnaHQpCisg
ICAgewogICAgICAgICBtX2luY2x1ZGVMZWZ0RWRnZSA9IGluY2x1ZGVMZWZ0OwogICAgICAgICBt
X2luY2x1ZGVSaWdodEVkZ2UgPSBpbmNsdWRlUmlnaHQ7CiAgICAgfQorCiAgICAgdmlydHVhbCBi
b29sIGhhc1RleHRDaGlsZHJlbigpIHsgcmV0dXJuIG1faGFzVGV4dENoaWxkcmVuOyB9CiAKICAg
ICAvLyBIZWxwZXIgZnVuY3Rpb25zIHVzZWQgZHVyaW5nIGxpbmUgY29uc3RydWN0aW9uIGFuZCBw
bGFjZW1lbnQuCkBAIC0xMDksMTIgKzExMiwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQmIHRvcFBvc2l0aW9uLCBpbnQmIGJvdHRvbVBvc2l0aW9uLCBpbnQm
IHNlbGVjdGlvblRvcCwgaW50JiBzZWxlY3Rpb25Cb3R0b20pOwogICAgIHZvaWQgc2hyaW5rQm94
ZXNXaXRoTm9UZXh0Q2hpbGRyZW4oaW50IHRvcFBvc2l0aW9uLCBpbnQgYm90dG9tUG9zaXRpb24p
OwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJ0aWNhbE92ZXJmbG93UG9zaXRpb25zKGlu
dCB0b3AsIGludCBib3R0b20pIHt9Ci0gICAgdmlydHVhbCB2b2lkIHNldFZlcnRpY2FsU2VsZWN0
aW9uUG9zaXRpb25zKGludCB0b3AsIGludCBib3R0b20pIHt9CisgICAgdmlydHVhbCB2b2lkIHNl
dFZlcnRpY2FsT3ZlcmZsb3dQb3NpdGlvbnMoaW50IHRvcCwgaW50IGJvdHRvbSkgeyB9CisgICAg
dmlydHVhbCB2b2lkIHNldFZlcnRpY2FsU2VsZWN0aW9uUG9zaXRpb25zKGludCB0b3AsIGludCBi
b3R0b20pIHsgfQogICAgIGludCBtYXhIb3Jpem9udGFsU2hhZG93KCkgY29uc3QgeyByZXR1cm4g
bV9tYXhIb3Jpem9udGFsU2hhZG93OyB9CiAKICAgICB2b2lkIHJlbW92ZUNoaWxkKElubGluZUJv
eCogY2hpbGQpOwotICAgIAorCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0
YXRlIHNlbGVjdGlvblN0YXRlKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQWNjb21tb2RhdGVF
bGxpcHNpcyhib29sIGx0ciwgaW50IGJsb2NrRWRnZSwgaW50IGVsbGlwc2lzV2lkdGgpOwpAQCAt
MTI5LDExICsxMzIsMTEgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9oYXNUZXh0Q2hpbGRyZW4g
OiAxOwogfTsKIAotfSAvL25hbWVzcGFjZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjaWZu
ZGVmIE5ERUJVRwogLy8gT3V0c2lkZSB0aGUgV2ViQ29yZSBuYW1lc3BhY2UgZm9yIGVhc2Ugb2Yg
aW52b2NhdGlvbiBmcm9tIGdkYi4KIHZvaWQgc2hvd1RyZWUoY29uc3QgV2ViQ29yZTo6SW5saW5l
Qm94Kik7CiAjZW5kaWYKIAotI2VuZGlmCisjZW5kaWYgLy8gSW5saW5lRmxvd0JveF9ICkluZGV4
OiBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVSdW5Cb3guaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVSdW5Cb3guaAkocmV2aXNpb24gMTczMzEpCisrKyBXZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVSdW5Cb3guaAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIElubGluZVJ1bkJveCA6IHB1YmxpYyBJbmxp
bmVCb3gKLXsKK2NsYXNzIElubGluZVJ1bkJveCA6IHB1YmxpYyBJbmxpbmVCb3ggewogcHVibGlj
OgogICAgIElubGluZVJ1bkJveChSZW5kZXJPYmplY3QqIG9iaikKICAgICAgICAgOiBJbmxpbmVC
b3gob2JqKQpAQCAtNDIsMTQgKzQxLDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5leHRMaW5l
Qm94KElubGluZVJ1bkJveCogbikgeyBtX25leHRMaW5lID0gbjsgfQogICAgIHZvaWQgc2V0UHJl
dmlvdXNMaW5lQm94KElubGluZVJ1bkJveCogcCkgeyBtX3ByZXZMaW5lID0gcDsgfQogCi0gICAg
dmlydHVhbCB2b2lkIHBhaW50QmFja2dyb3VuZEFuZEJvcmRlcihSZW5kZXJPYmplY3Q6OlBhaW50
SW5mbyYsIGludCBfdHgsIGludCBfdHkpIHt9OwotICAgIHZpcnR1YWwgdm9pZCBwYWludERlY29y
YXRpb25zKFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgaW50IF90eCwgaW50IF90eSwgYm9vbCBw
YWludGVkQ2hpbGRyZW4gPSBmYWxzZSkge307CisgICAgdmlydHVhbCB2b2lkIHBhaW50QmFja2dy
b3VuZEFuZEJvcmRlcihSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5KSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnREZWNvcmF0aW9ucyhSZW5kZXJPYmplY3Q6OlBhaW50
SW5mbyYsIGludCB0eCwgaW50IHR5LCBib29sIHBhaW50ZWRDaGlsZHJlbiA9IGZhbHNlKSB7IH0K
ICAgICAKIHByb3RlY3RlZDoKICAgICBJbmxpbmVSdW5Cb3gqIG1fcHJldkxpbmU7ICAvLyBUaGUg
cHJldmlvdXMgYm94IHRoYXQgYWxzbyB1c2VzIG91ciBSZW5kZXJPYmplY3QKICAgICBJbmxpbmVS
dW5Cb3gqIG1fbmV4dExpbmU7ICAvLyBUaGUgbmV4dCBib3ggdGhhdCBhbHNvIHVzZXMgb3VyIFJl
bmRlck9iamVjdAogfTsKIAotfSAvL25hbWVzcGFjZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
Ci0jZW5kaWYKKyNlbmRpZiAvLyBJbmxpbmVSdW5Cb3hfSApJbmRleDogV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lVGV4dEJveC5jcHAJKHJldmlzaW9uIDE3MzMxKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lVGV4dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2NCw0ICs3NjQsNCBAQCBib29sIElu
bGluZVRleHRCb3g6OmNvbnRhaW5zQ2FyZXRPZmZzZXQoCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZVRleHRCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmgJKHJldmlzaW9uIDE3MzMxKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMiwxMiArMjIsMTIgQEAKICAqCiAgKi8KIAotI2lmbmRlZiBL
SFRNTF9JbmxpbmVUZXh0Qm94X0gKLSNkZWZpbmUgS0hUTUxfSW5saW5lVGV4dEJveF9ICisjaWZu
ZGVmIElubGluZVRleHRCb3hfSAorI2RlZmluZSBJbmxpbmVUZXh0Qm94X0gKIAogI2luY2x1ZGUg
IkRvY3VtZW50TWFya2VyLmgiCi0jaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIklu
bGluZVJ1bkJveC5oIgorI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0zOSw0NCArMzksNDMgQEAgY2xhc3MgU3RyaW5nSW1wbDsKIGNsYXNzIE1hcmtl
ZFRleHRVbmRlcmxpbmU7CiBjbGFzcyBQb3NpdGlvbjsKIAotY2xhc3MgSW5saW5lVGV4dEJveCA6
IHB1YmxpYyBJbmxpbmVSdW5Cb3gKLXsKK2NsYXNzIElubGluZVRleHRCb3ggOiBwdWJsaWMgSW5s
aW5lUnVuQm94IHsKIHB1YmxpYzoKICAgICBJbmxpbmVUZXh0Qm94KFJlbmRlck9iamVjdCogb2Jq
KQotICAgIDpJbmxpbmVSdW5Cb3gob2JqKQorICAgICAgICA6IElubGluZVJ1bkJveChvYmopCisg
ICAgICAgICwgbV9zdGFydCgwKQorICAgICAgICAsIG1fbGVuKDApCisgICAgICAgICwgbV90cnVu
Y2F0aW9uKGNOb1RydW5jYXRpb24pCisgICAgICAgICwgbV9yZXZlcnNlZChmYWxzZSkKKyAgICAg
ICAgLCBtX3RyZWF0QXNUZXh0KHRydWUpCisgICAgICAgICwgbV90b0FkZCgwKQogICAgIHsKLSAg
ICAgICAgbV9zdGFydCA9IDA7Ci0gICAgICAgIG1fbGVuID0gMDsKLSAgICAgICAgbV9yZXZlcnNl
ZCA9IGZhbHNlOwotICAgICAgICBtX3RyZWF0QXNUZXh0ID0gdHJ1ZTsKLSAgICAgICAgbV90b0Fk
ZCA9IDA7Ci0gICAgICAgIG1fdHJ1bmNhdGlvbiA9IGNOb1RydW5jYXRpb247CiAgICAgfQotICAg
IAorCiAgICAgSW5saW5lVGV4dEJveCogbmV4dFRleHRCb3goKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxJbmxpbmVUZXh0Qm94Kj4obmV4dExpbmVCb3goKSk7IH0KICAgICBJbmxpbmVUZXh0
Qm94KiBwcmV2VGV4dEJveCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PElubGluZVRleHRC
b3gqPihwcmV2TGluZUJveCgpKTsgfQotICAgIAorCiAgICAgdW5zaWduZWQgc3RhcnQoKSBjb25z
dCB7IHJldHVybiBtX3N0YXJ0OyB9Ci0gICAgdW5zaWduZWQgZW5kKCkgY29uc3QgeyByZXR1cm4g
bV9sZW4gPyBtX3N0YXJ0K21fbGVuLTEgOiBtX3N0YXJ0OyB9CisgICAgdW5zaWduZWQgZW5kKCkg
Y29uc3QgeyByZXR1cm4gbV9sZW4gPyBtX3N0YXJ0ICsgbV9sZW4gLSAxIDogbV9zdGFydDsgfQog
ICAgIHVuc2lnbmVkIGxlbigpIGNvbnN0IHsgcmV0dXJuIG1fbGVuOyB9Ci0gIAorCiAgICAgdm9p
ZCBzZXRTdGFydCh1bnNpZ25lZCBzdGFydCkgeyBtX3N0YXJ0ID0gc3RhcnQ7IH0KICAgICB2b2lk
IHNldExlbih1bnNpZ25lZCBsZW4pIHsgbV9sZW4gPSBsZW47IH0KIAogICAgIHZvaWQgb2Zmc2V0
UnVuKGludCBkKSB7IG1fc3RhcnQgKz0gZDsgfQogCi0gICAgdm9pZCBkZXN0cm95KFJlbmRlckFy
ZW5hKiBhcmVuYSk7Ci0gICAgCisgICAgdm9pZCBkZXN0cm95KFJlbmRlckFyZW5hKik7CisKICAg
ICBJbnRSZWN0IHNlbGVjdGlvblJlY3QoaW50IGFic3gsIGludCBhYnN5LCBpbnQgc3RhcnRQb3Ms
IGludCBlbmRQb3MpOwogICAgIGJvb2wgaXNTZWxlY3RlZChpbnQgc3RhcnRQb3MsIGludCBlbmRQ
b3MpIGNvbnN0OwogICAgIHZvaWQgc2VsZWN0aW9uU3RhcnRFbmQoaW50JiBzUG9zLCBpbnQmIGVQ
b3MpOwotICAgIAotICAgIHZpcnR1YWwgdm9pZCBwYWludChSZW5kZXJPYmplY3Q6OlBhaW50SW5m
byYgaSwgaW50IHR4LCBpbnQgdHkpOwotICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChSZW5k
ZXJPYmplY3Q6Ok5vZGVJbmZvJiBpLCBpbnQgeCwgaW50IHksIGludCB0eCwgaW50IHR5KTsKKwor
ICAgIHZpcnR1YWwgdm9pZCBwYWludChSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGludCB0eCwg
aW50IHR5KTsKKyAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoUmVuZGVyT2JqZWN0OjpOb2Rl
SW5mbyYsIGludCB4LCBpbnQgeSwgaW50IHR4LCBpbnQgdHkpOwogCiAgICAgUmVuZGVyVGV4dCog
dGV4dE9iamVjdCgpIGNvbnN0OwotICAgIAotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVMaW5lKFJl
bmRlckFyZW5hKiBhcmVuYSk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlTGluZShSZW5kZXJB
cmVuYSopOwogICAgIHZpcnR1YWwgdm9pZCBleHRyYWN0TGluZSgpOwogICAgIHZpcnR1YWwgdm9p
ZCBhdHRhY2hMaW5lKCk7CiAKQEAgLTg5LDE0ICs4OCwxNCBAQCBwdWJsaWM6CiAKICAgICAvLyBP
dmVybG9hZGVkIG5ldyBvcGVyYXRvci4gIERlcml2ZWQgY2xhc3NlcyBtdXN0IG92ZXJyaWRlIG9w
ZXJhdG9yIG5ldwogICAgIC8vIGluIG9yZGVyIHRvIGFsbG9jYXRlIG91dCBvZiB0aGUgUmVuZGVy
QXJlbmEuCi0gICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzeiwgUmVuZGVyQXJlbmEqIHJl
bmRlckFyZW5hKSB0aHJvdygpOyAgICAKKyAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBS
ZW5kZXJBcmVuYSopIHRocm93KCk7ICAKIAogICAgIC8vIE92ZXJyaWRkZW4gdG8gcHJldmVudCB0
aGUgbm9ybWFsIGRlbGV0ZSBmcm9tIGJlaW5nIGNhbGxlZC4KLSAgICB2b2lkIG9wZXJhdG9yIGRl
bGV0ZSh2b2lkKiBwdHIsIHNpemVfdCBzeik7Ci0gICAgCisgICAgdm9pZCBvcGVyYXRvciBkZWxl
dGUodm9pZCosIHNpemVfdCk7CisKIHByaXZhdGU6CiAgICAgLy8gVGhlIG5vcm1hbCBvcGVyYXRv
ciBuZXcgaXMgZGlzYWxsb3dlZC4KLSAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHN6KSB0
aHJvdygpOworICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QpIHRocm93KCk7CiAKIHB1Ymxp
YzoKICAgICB2b2lkIHNldFNwYWNlQWRkKGludCBhZGQpIHsgbV93aWR0aCAtPSBtX3RvQWRkOyBt
X3RvQWRkID0gYWRkOyBtX3dpZHRoICs9IG1fdG9BZGQ7IH0KQEAgLTEwNSw3ICsxMDQsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzSW5saW5lVGV4dEJveCgpIHsgcmV0dXJuIHRydWU7
IH0gICAgCiAgICAgdmlydHVhbCBib29sIGlzVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJlYXRB
c1RleHQ7IH0KICAgICB2b2lkIHNldElzVGV4dChib29sIGIpIHsgbV90cmVhdEFzVGV4dCA9IGI7
IH0KLSAgICAKKwogICAgIHZvaWQgcGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCosIGlu
dCB0eCwgaW50IHR5LCBpbnQgZGVjb3JhdGlvbik7CiAgICAgdm9pZCBwYWludFNlbGVjdGlvbihH
cmFwaGljc0NvbnRleHQqLCBpbnQgdHgsIGludCB0eSwgUmVuZGVyU3R5bGUqLCBjb25zdCBGb250
Kik7CiAgICAgdm9pZCBwYWludE1hcmtlZFRleHRCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCos
IGludCB0eCwgaW50IHR5LCBSZW5kZXJTdHlsZSosIGNvbnN0IEZvbnQqLCBpbnQgc3RhcnRQb3Ms
IGludCBlbmRQb3MpOwpAQCAtMTE5LDE2ICsxMTgsMTYgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
aW50IGNhcmV0TWluT2Zmc2V0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBpbnQgY2FyZXRNYXhPZmZz
ZXQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGNhcmV0TWF4UmVuZGVyZWRPZmZzZXQo
KSBjb25zdDsKLSAgICAKKwogICAgIGludCB0ZXh0UG9zKCkgY29uc3Q7Ci0gICAgaW50IG9mZnNl
dEZvclBvc2l0aW9uKGludCBfeCwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocyA9IHRydWUpIGNv
bnN0OworICAgIGludCBvZmZzZXRGb3JQb3NpdGlvbihpbnQgeCwgYm9vbCBpbmNsdWRlUGFydGlh
bEdseXBocyA9IHRydWUpIGNvbnN0OwogICAgIGludCBwb3NpdGlvbkZvck9mZnNldChpbnQgb2Zm
c2V0KSBjb25zdDsKIAogICAgIGJvb2wgY29udGFpbnNDYXJldE9mZnNldChpbnQgb2Zmc2V0KSBj
b25zdDsgLy8gZmFsc2UgZm9yIG9mZnNldCBhZnRlciBsaW5lIGJyZWFrCi0gICAgCisKICAgICBp
bnQgbV9zdGFydDsKICAgICB1bnNpZ25lZCBzaG9ydCBtX2xlbjsKLSAgICAKKwogICAgIGludCBt
X3RydW5jYXRpb247IC8vIFdoZXJlIHRvIHRydW5jYXRlIHdoZW4gdGV4dCBvdmVyZmxvdyBpcyBh
cHBsaWVkLiAgV2UgdXNlIHNwZWNpYWwgY29uc3RhbnRzIHRvCiAgICAgICAgICAgICAgICAgICAg
ICAgLy8gZGVub3RlIG5vIHRydW5jYXRpb24gKHRoZSB3aG9sZSBydW4gcGFpbnRzKSBhbmQgZnVs
bCB0cnVuY2F0aW9uIChub3RoaW5nIHBhaW50cyBhdCBhbGwpLgogCkBAIC0xNDEsMTEgKzE0MCwx
MSBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJUZXh0OwogfTsKIAotaW5saW5l
IFJlbmRlclRleHQgKklubGluZVRleHRCb3g6OnRleHRPYmplY3QoKSBjb25zdAoraW5saW5lIFJl
bmRlclRleHQqIElubGluZVRleHRCb3g6OnRleHRPYmplY3QoKSBjb25zdAogewotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0ICo+KG1fb2JqZWN0KTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8UmVuZGVyVGV4dCo+KG1fb2JqZWN0KTsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBJbmxpbmVUZXh0Qm94X0gKSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL0xlbmd0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL0xlbmd0
aC5oCShyZXZpc2lvbiAxNzMzMSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL0xlbmd0aC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw4IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBV
U0EuCiAqLwogCi0jaWZuZGVmIExFTkdUSF9ICi0jZGVmaW5lIExFTkdUSF9ICisjaWZuZGVmIExl
bmd0aF9ICisjZGVmaW5lIExlbmd0aF9ICiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzAs
MTAgKzMwLDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBlbnVtIExlbmd0aFR5cGUgeyBB
dXRvLCBSZWxhdGl2ZSwgUGVyY2VudCwgRml4ZWQsIFN0YXRpYywgSW50cmluc2ljLCBNaW5JbnRy
aW5zaWMgfTsKIAogICAgIHN0cnVjdCBMZW5ndGggewotICAgICAgICBMZW5ndGgoKSA6IG1fdmFs
dWUoMCkgeyB9Ci0gICAgICAgIExlbmd0aChMZW5ndGhUeXBlIHQpIDogbV92YWx1ZSh0KSB7IH0K
LSAgICAgICAgTGVuZ3RoKGludCB2LCBMZW5ndGhUeXBlIHQsIGJvb2wgcSA9IGZhbHNlKSA6IG1f
dmFsdWUoKHYgKiAxNikgfCAocSA8PCAzKSB8IHQpIHsgfQotICAgICAgICAgICAgLy8gRklYTUU6
IERvZXNuJ3Qgd29yayBpZiB0aGUgcGFzc2VkLWluIHZhbHVlIGlzIHZlcnkgbGFyZ2UhCisgICAg
ICAgIExlbmd0aCgpCisgICAgICAgICAgICA6IG1fdmFsdWUoMCkKKyAgICAgICAgeworICAgICAg
ICB9CisKKyAgICAgICAgTGVuZ3RoKExlbmd0aFR5cGUgdCkKKyAgICAgICAgICAgIDogbV92YWx1
ZSh0KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBMZW5ndGgoaW50IHYsIExlbmd0
aFR5cGUgdCwgYm9vbCBxID0gZmFsc2UpCisgICAgICAgICAgICA6IG1fdmFsdWUoKHYgKiAxNikg
fCAocSA8PCAzKSB8IHQpIC8vIEZJWE1FOiBEb2Vzbid0IHdvcmsgaWYgdGhlIHBhc3NlZC1pbiB2
YWx1ZSBpcyB2ZXJ5IGxhcmdlIQorICAgICAgICB7CisgICAgICAgIH0KIAogICAgICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgTGVuZ3RoJiBvKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IG8u
bV92YWx1ZTsgfQogICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTGVuZ3RoJiBvKSBjb25z
dCB7IHJldHVybiBtX3ZhbHVlICE9IG8ubV92YWx1ZTsgfQpAQCAtODQsNiArOTQsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGludCBtX3ZhbHVlOwogICAgIH07CiAKLX0KK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8gTGVuZ3RoX0gKSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL0xpc3RNYXJrZXJCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cmVuZGVyaW5nL0xpc3RNYXJrZXJCb3guY3BwCShyZXZpc2lvbiAxNzMzMSkKKysrIFdlYkNvcmUv
cmVuZGVyaW5nL0xpc3RNYXJrZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3
IEBACiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqCiAgKi8KKwogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkxpc3RNYXJrZXJCb3guaCIKIApAQCAtNDEsNCArNDIsNCBA
QCBib29sIExpc3RNYXJrZXJCb3g6OmlzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuICFzdGF0aWNf
Y2FzdDxSZW5kZXJMaXN0TWFya2VyKj4ob2JqZWN0KCkpLT5saXN0SW1hZ2UoKTsKIH0KIAotfQor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvTGlzdE1hcmtl
ckJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL0xpc3RNYXJrZXJCb3guaAko
cmV2aXNpb24gMTczMzEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9MaXN0TWFya2VyQm94LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDE0ICsyOSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIExpc3RNYXJrZXJCb3ggOiBwdWJsaWMgSW5saW5lQm94Ci17CitjbGFzcyBMaXN0TWFy
a2VyQm94IDogcHVibGljIElubGluZUJveCB7CiBwdWJsaWM6CiAgICAgTGlzdE1hcmtlckJveChS
ZW5kZXJPYmplY3QqKTsKLSAgICAKKwogICAgIHZpcnR1YWwgYm9vbCBpc1RleHQoKSBjb25zdDsK
IH07CiAKLX0gLy9uYW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisj
ZW5kaWYgLy8gTGlzdE1hcmtlckJveF9ICkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQ
YXJ0T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUGFydE9i
amVjdC5oCShyZXZpc2lvbiAxNzMzMSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhcnRP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFJlbmRlclBhcnRPYmplY3QgOiBwdWJsaWMgUmVuZGVyUGFydAotewor
Y2xhc3MgUmVuZGVyUGFydE9iamVjdCA6IHB1YmxpYyBSZW5kZXJQYXJ0IHsKIHB1YmxpYzoKICAg
ICBSZW5kZXJQYXJ0T2JqZWN0KEhUTUxFbGVtZW50Kik7CiAKQEAgLTQyLDYgKzQxLDYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCB2aWV3Q2xlYXJlZCgpOwogfTsKIAotfQorfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBSZW5kZXJQYXJ0T2JqZWN0X0gKSW5k
ZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCShyZXZpc2lvbiAxNzMzMSkKKysrIFdl
YkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOCwx
MyArMTgsMTUgQEAKICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRl
bXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKICAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgog
ICovCisKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSb290SW5saW5lQm94LmgiCiAK
KyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsbGlwc2lzQm94LmgiCi0jaW5jbHVk
ZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRl
ICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCisKICNpZiBQTEFURk9STShN
QUMpCiAjaW5jbHVkZSAiRnJhbWVNYWMuaCIKICNlbmRpZgpAQCAtMzE5LDQgKzMyMSw0IEBAIHZv
aWQgUm9vdElubGluZUJveDo6c2V0TGluZUJyZWFrSW5mbyhSZW4KICAgICAgICAgbV9saW5lQnJl
YWtCaWRpU3RhdHVzID0gKnN0YXR1czsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAkocmV2aXNpb24gMTczMzEpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMx
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRWxsaXBzaXNCb3g7CiBzdHJ1Y3QgR2Fw
UmVjdHM7CiAKLWNsYXNzIFJvb3RJbmxpbmVCb3ggOiBwdWJsaWMgSW5saW5lRmxvd0JveAotewor
Y2xhc3MgUm9vdElubGluZUJveCA6IHB1YmxpYyBJbmxpbmVGbG93Qm94IHsKIHB1YmxpYzoKICAg
ICBSb290SW5saW5lQm94KFJlbmRlck9iamVjdCogb2JqKQogICAgICAgICA6IElubGluZUZsb3dC
b3gob2JqKQpAQCAtODYsMjkgKzg1LDI4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBwbGFj
ZUVsbGlwc2lzQm94KGJvb2wgbHRyLCBpbnQgYmxvY2tFZGdlLCBpbnQgZWxsaXBzaXNXaWR0aCwg
Ym9vbCYpOwogCiAgICAgRWxsaXBzaXNCb3gqIGVsbGlwc2lzQm94KCkgY29uc3QgeyByZXR1cm4g
bV9lbGxpcHNpc0JveDsgfQotICAgIHZvaWQgcGFpbnRFbGxpcHNpc0JveChSZW5kZXJPYmplY3Q6
OlBhaW50SW5mbyYgaSwgaW50IF90eCwgaW50IF90eSkgY29uc3Q7Ci0gICAgYm9vbCBoaXRUZXN0
RWxsaXBzaXNCb3goUmVuZGVyT2JqZWN0OjpOb2RlSW5mbyYgaW5mbywgaW50IF94LCBpbnQgX3ks
IGludCBfdHgsIGludCBfdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSGl0VGVzdEFj
dGlvbiBoaXRUZXN0QWN0aW9uLCBib29sIGluQm94KTsKKyAgICB2b2lkIHBhaW50RWxsaXBzaXNC
b3goUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBpbnQgdHgsIGludCB0eSkgY29uc3Q7CisgICAg
Ym9vbCBoaXRUZXN0RWxsaXBzaXNCb3goUmVuZGVyT2JqZWN0OjpOb2RlSW5mbyYsIGludCB4LCBp
bnQgeSwgaW50IHR4LCBpbnQgdHksIEhpdFRlc3RBY3Rpb24sIGJvb2wgaW5Cb3gpOwogICAgIAog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhclRydW5jYXRpb24oKTsKIAogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICB2b2lkIGFkZEhpZ2hsaWdodE92ZXJmbG93KCk7Ci0gICAgdm9pZCBwYWludEN1c3RvbUhp
Z2hsaWdodChSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgaSwgaW50IHR4LCBpbnQgdHksIGNvbnN0
IEF0b21pY1N0cmluZyYgaGlnaGxpZ2h0VHlwZSk7CisgICAgdm9pZCBwYWludEN1c3RvbUhpZ2hs
aWdodChSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5LCBjb25zdCBBdG9t
aWNTdHJpbmcmIGhpZ2hsaWdodFR5cGUpOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIGksIGludCBfdHgsIGludCBfdHkpOwotICAgIHZp
cnR1YWwgYm9vbCBub2RlQXRQb2ludChSZW5kZXJPYmplY3Q6Ok5vZGVJbmZvJiBpLCBpbnQgeCwg
aW50IHksIGludCB0eCwgaW50IHR5KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUmVuZGVyT2Jq
ZWN0OjpQYWludEluZm8mLCBpbnQgdHgsIGludCB0eSk7CisgICAgdmlydHVhbCBib29sIG5vZGVB
dFBvaW50KFJlbmRlck9iamVjdDo6Tm9kZUluZm8mLCBpbnQgeCwgaW50IHksIGludCB0eCwgaW50
IHR5KTsKIAogICAgIGJvb2wgaGFzU2VsZWN0ZWRDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzU2VsZWN0ZWRDaGlsZHJlbjsgfQogICAgIHZvaWQgc2V0SGFzU2VsZWN0ZWRDaGlsZHJlbihi
b29sIGIpOwotICAgIAorCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRl
IHNlbGVjdGlvblN0YXRlKCk7CiAgICAgSW5saW5lQm94KiBmaXJzdFNlbGVjdGVkQm94KCk7CiAg
ICAgSW5saW5lQm94KiBsYXN0U2VsZWN0ZWRCb3goKTsKICAgICAKICAgICBHYXBSZWN0cyBmaWxs
TGluZVNlbGVjdGlvbkdhcChpbnQgc2VsVG9wLCBpbnQgc2VsSGVpZ2h0LCBSZW5kZXJCbG9jayog
cm9vdEJsb2NrLCBpbnQgYmxvY2tYLCBpbnQgYmxvY2tZLCAKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgdHgsIGludCB0eSwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludElu
Zm8qIGkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0eCwgaW50IHR5
LCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyopOwogICAgIAogICAgIFJlbmRlckJsb2Nr
KiBibG9jaygpIGNvbnN0OwogCkBAIC0xMTYsNyArMTE0LDcgQEAgcHVibGljOgogICAgIGludCBz
ZWxlY3Rpb25Cb3R0b20oKSB7IHJldHVybiBtX3NlbGVjdGlvbkJvdHRvbTsgfQogICAgIGludCBz
ZWxlY3Rpb25IZWlnaHQoKSB7IHJldHVybiBtYXgoMCwgc2VsZWN0aW9uQm90dG9tKCkgLSBzZWxl
Y3Rpb25Ub3AoKSk7IH0KICAKLSAgICBJbmxpbmVCb3gqIGNsb3Nlc3RMZWFmQ2hpbGRGb3JYUG9z
KGludCBfeCwgaW50IF90eCk7CisgICAgSW5saW5lQm94KiBjbG9zZXN0TGVhZkNoaWxkRm9yWFBv
cyhpbnQgeCwgaW50IHR4KTsKIAogcHJvdGVjdGVkOgogICAgIC8vIE5vcm1hbGx5IHdlIGFyZSBv
bmx5IGFzIHRhbGwgYXMgdGhlIHN0eWxlIG9uIG91ciBibG9jayBkaWN0YXRlcywgYnV0IHdlIG1p
Z2h0IGhhdmUgY29udGVudApAQCAtMTUyLDYgKzE1MCw2IEBAIHByb3RlY3RlZDoKICAgICBFbGxp
cHNpc0JveCogbV9lbGxpcHNpc0JveDsKIH07CiAKLX0gLy9uYW1lc3BhY2UKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8gUm9vdElubGluZUJveF9ICkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9TVkdJbmxpbmVGbG93Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3JlbmRlcmluZy9TVkdJbmxpbmVGbG93Qm94LmNwcAkocmV2aXNpb24gMTczMzEpCisrKyBX
ZWJDb3JlL3JlbmRlcmluZy9TVkdJbmxpbmVGbG93Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjEsMjAgKzIxLDIxIEBACiAgKgogICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKIAogI2lmZGVm
IFNWR19TVVBQT1JUCiAKLSNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdJbmxpbmVG
bG93Qm94LmgiCi0jaW5jbHVkZSAiS1JlbmRlcmluZ0RldmljZS5oIgotI2luY2x1ZGUgIktDYW52
YXNSZW5kZXJpbmdTdHlsZS5oIgorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5j
bHVkZSAiSW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIktDYW52YXNDbGlwcGVyLmgiCiAjaW5j
bHVkZSAiS0NhbnZhc01hc2tlci5oIgotI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKKyNpbmNs
dWRlICJLQ2FudmFzUmVuZGVyaW5nU3R5bGUuaCIKKyNpbmNsdWRlICJLUmVuZGVyaW5nRGV2aWNl
LmgiCiAjaW5jbHVkZSAiUm9vdElubGluZUJveC5oIgotI2luY2x1ZGUgIlNWR1RleHRQb3NpdGlv
bmluZ0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdMZW5ndGhMaXN0LmgiCi0jaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oIgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTI5MCw1
ICsyOTEsNiBAQCB2b2lkIHBsYWNlU1ZHRmxvd1ZlcnRpY2FsbHkoSW5saW5lRmxvd0JvCiAgICAg
Zmxvdy0+c2V0VmVydGljYWxTZWxlY3Rpb25Qb3NpdGlvbnModG9wLCBib3R0b20pOwogfQogCi19
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKICNlbmRpZiAvLyBTVkdfU1VQUE9SVApJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvU1ZHSW5saW5lRmxvd0JveC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcmVuZGVyaW5nL1NWR0lubGluZUZsb3dCb3guaAkocmV2aXNpb24gMTczMzEpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9TVkdJbmxpbmVGbG93Qm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDIx
ICszMCwyNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgcGFpbnRTVkdJbmxpbmVG
bG93KElubGluZUZsb3dCb3gqIGZsb3csIFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJPYmpl
Y3Q6OlBhaW50SW5mbyYgaSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgX3R4LCBpbnQg
X3R5KTsKLWludCBwbGFjZVNWR0Zsb3dIb3Jpem9udGFsbHkoSW5saW5lRmxvd0JveCogZmxvdywg
aW50IHgsIGludCYgbGVmdFBvc2l0aW9uLCBpbnQmIHJpZ2h0UG9zaXRpb24sIGJvb2wmIG5lZWRz
V29yZFNwYWNpbmcpOwotdm9pZCBwbGFjZVNWR0Zsb3dWZXJ0aWNhbGx5KElubGluZUZsb3dCb3gq
IGZsb3csIGludCYgaGVpZ2h0T2ZCbG9jayk7Cit2b2lkIHBhaW50U1ZHSW5saW5lRmxvdyhJbmxp
bmVGbG93Qm94KiwgUmVuZGVyT2JqZWN0KiwgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBpbnQg
dHgsIGludCB0eSk7CitpbnQgcGxhY2VTVkdGbG93SG9yaXpvbnRhbGx5KElubGluZUZsb3dCb3gq
LCBpbnQgeCwgaW50JiBsZWZ0UG9zaXRpb24sIGludCYgcmlnaHRQb3NpdGlvbiwgYm9vbCYgbmVl
ZHNXb3JkU3BhY2luZyk7Cit2b2lkIHBsYWNlU1ZHRmxvd1ZlcnRpY2FsbHkoSW5saW5lRmxvd0Jv
eCosIGludCYgaGVpZ2h0T2ZCbG9jayk7CiAKIGNsYXNzIFNWR0lubGluZUZsb3dCb3ggOiBwdWJs
aWMgSW5saW5lRmxvd0JveCB7CiBwdWJsaWM6Ci0gICAgU1ZHSW5saW5lRmxvd0JveChSZW5kZXJP
YmplY3QqIG9iaikgOiBJbmxpbmVGbG93Qm94KG9iaikge30KLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIGksIGludCBfdHgsIGludCBfdHkpOworICAgIFNW
R0lubGluZUZsb3dCb3goUmVuZGVyT2JqZWN0KiBvYmopCisgICAgICAgIDogSW5saW5lRmxvd0Jv
eChvYmopCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwYWludChSZW5kZXJPYmpl
Y3Q6OlBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5KTsKICAgICB2aXJ0dWFsIGludCBwbGFjZUJv
eGVzSG9yaXpvbnRhbGx5KGludCB4LCBpbnQmIGxlZnRQb3NpdGlvbiwgaW50JiByaWdodFBvc2l0
aW9uLCBib29sJiBuZWVkc1dvcmRTcGFjaW5nKTsKICAgICB2aXJ0dWFsIHZvaWQgdmVydGljYWxs
eUFsaWduQm94ZXMoaW50JiBoZWlnaHRPZkJsb2NrKTsKIH07CiAKLX0KK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAKLSNlbmRpZiAvLyAhU1ZHSW5saW5l
Rmxvd0JveF9ICisjZW5kaWYgLy8gU1ZHSW5saW5lRmxvd0JveF9ICkluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9TVkdSb290SW5saW5lQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRl
cmluZy9TVkdSb290SW5saW5lQm94LmNwcAkocmV2aXNpb24gMTczMzEpCisrKyBXZWJDb3JlL3Jl
bmRlcmluZy9TVkdSb290SW5saW5lQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsMTEgKzIx
LDEyIEBACiAgKgogICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKIAogI2lmZGVmIFNWR19TVVBQ
T1JUCiAKLSNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdSb290SW5saW5lQm94Lmgi
CisKICNpbmNsdWRlICJTVkdJbmxpbmVGbG93Qm94LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTQ1LDUgKzQ2LDYgQEAgdm9pZCBTVkdSb290SW5saW5lQm94Ojp2ZXJ0aWNhbGx5QWxpZ25C
bwogICAgIHBsYWNlU1ZHRmxvd1ZlcnRpY2FsbHkodGhpcywgaGVpZ2h0T2ZCbG9jayk7CiB9CiAK
LX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwogI2VuZGlmIC8vIFNWR19TVVBQT1JUCkluZGV4
OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdSb290SW5saW5lQm94LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvU1ZHUm9vdElubGluZUJveC5oCShyZXZpc2lvbiAxNzMzMSkKKysrIFdl
YkNvcmUvcmVuZGVyaW5nL1NWR1Jvb3RJbmxpbmVCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMzIs
MTQgKzMyLDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIFNWR1Jvb3RJbmxp
bmVCb3ggOiBwdWJsaWMgUm9vdElubGluZUJveCB7CiBwdWJsaWM6Ci0gICAgU1ZHUm9vdElubGlu
ZUJveChSZW5kZXJPYmplY3QqIG9iaikgOiBSb290SW5saW5lQm94KG9iaikge30KLSAgICB2aXJ0
dWFsIHZvaWQgcGFpbnQoUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIGksIGludCBfdHgsIGludCBf
dHkpOworICAgIFNWR1Jvb3RJbmxpbmVCb3goUmVuZGVyT2JqZWN0KiBvYmopCisgICAgICAgIDog
Um9vdElubGluZUJveChvYmopCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dChSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5KTsKICAgICB2aXJ0dWFs
IGludCBwbGFjZUJveGVzSG9yaXpvbnRhbGx5KGludCB4LCBpbnQmIGxlZnRQb3NpdGlvbiwgaW50
JiByaWdodFBvc2l0aW9uLCBib29sJiBuZWVkc1dvcmRTcGFjaW5nKTsKICAgICB2aXJ0dWFsIHZv
aWQgdmVydGljYWxseUFsaWduQm94ZXMoaW50JiBoZWlnaHRPZkJsb2NrKTsKIH07CiAKLX0KK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAKLSNlbmRpZiAv
LyAhUm9vdElubGluZUJveF9ICisjZW5kaWYgLy8gU1ZHUm9vdElubGluZUJveF9ICkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9UYWJsZUxheW91dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVu
ZGVyaW5nL1RhYmxlTGF5b3V0LmgJKHJldmlzaW9uIDE3MzMxKQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvVGFibGVMYXlvdXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTEgKzI3LDEzIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyVGFibGU7CiAKLWNsYXNzIFRhYmxlTGF5b3V0
Ci17CitjbGFzcyBUYWJsZUxheW91dCB7CiBwdWJsaWM6Ci0gICAgVGFibGVMYXlvdXQoUmVuZGVy
VGFibGUqIHQpIDogbV90YWJsZSh0KSB7fQotICAgIHZpcnR1YWwgflRhYmxlTGF5b3V0KCkge307
CisgICAgVGFibGVMYXlvdXQoUmVuZGVyVGFibGUqIHRhYmxlKQorICAgICAgICA6IG1fdGFibGUo
dGFibGUpCisgICAgeworICAgIH0KKyAgICB2aXJ0dWFsIH5UYWJsZUxheW91dCgpIHsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGNhbGNNaW5NYXhXaWR0aCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
bGF5b3V0KCkgPSAwOwpAQCAtNDAsNiArNDIsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyVGFi
bGUqIG1fdGFibGU7CiB9OwogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgor
I2VuZGlmIC8vIFRhYmxlTGF5b3V0X0gKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL2JpZGkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9iaWRpLmgJKHJldmlzaW9uIDE3MzMxKQor
KysgV2ViQ29yZS9yZW5kZXJpbmcvYmlkaS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMyArMzQs
MTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIElubGluZUJveDsKIAogICAgIHN0
cnVjdCBCaWRpU3RhdHVzIHsKLSAgICAgICAgQmlkaVN0YXR1cygpIDogZW9yKFVfT1RIRVJfTkVV
VFJBTCksIGxhc3RTdHJvbmcoVV9PVEhFUl9ORVVUUkFMKSwgbGFzdChVX09USEVSX05FVVRSQUwp
IHt9Ci0gICAgICAgIAorICAgICAgICBCaWRpU3RhdHVzKCkKKyAgICAgICAgICAgIDogZW9yKFVf
T1RIRVJfTkVVVFJBTCkKKyAgICAgICAgICAgICwgbGFzdFN0cm9uZyhVX09USEVSX05FVVRSQUwp
CisgICAgICAgICAgICAsIGxhc3QoVV9PVEhFUl9ORVVUUkFMKQorICAgICAgICB7CisgICAgICAg
IH0KKwogICAgICAgICBVQ2hhckRpcmVjdGlvbiBlb3I7CiAgICAgICAgIFVDaGFyRGlyZWN0aW9u
IGxhc3RTdHJvbmc7CiAgICAgICAgIFVDaGFyRGlyZWN0aW9uIGxhc3Q7CiAgICAgfTsKLSAgICAg
ICAgCisKICAgICBjbGFzcyBCaWRpQ29udGV4dCB7CiAgICAgcHVibGljOgogICAgICAgICBCaWRp
Q29udGV4dCh1bnNpZ25lZCBjaGFyIGxldmVsLCBVQ2hhckRpcmVjdGlvbiBlbWJlZGRpbmcsIEJp
ZGlDb250ZXh0KiBwYXJlbnQgPSAwLCBib29sIG92ZXJyaWRlID0gZmFsc2UpOwpAQCAtNjUsNyAr
NzAsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgc3RydWN0IEJpZGlSdW4gewogICAg
ICAgICBCaWRpUnVuKGludCBzdGFydF8sIGludCBzdG9wXywgUmVuZGVyT2JqZWN0KiBvLCBCaWRp
Q29udGV4dCogY29udGV4dCwgVUNoYXJEaXJlY3Rpb24gZGlyKQotICAgICAgICAgICAgOiAgc3Rh
cnQoc3RhcnRfKSwgc3RvcChzdG9wXyksIG9iaihvKSwgYm94KDApLCBvdmVycmlkZShjb250ZXh0
LT5vdmVycmlkZSksIG5leHRSdW4oMCkKKyAgICAgICAgICAgIDogc3RhcnQoc3RhcnRfKQorICAg
ICAgICAgICAgLCBzdG9wKHN0b3BfKQorICAgICAgICAgICAgLCBvYmoobykKKyAgICAgICAgICAg
ICwgYm94KDApCisgICAgICAgICAgICAsIG92ZXJyaWRlKGNvbnRleHQtPm92ZXJyaWRlKQorICAg
ICAgICAgICAgLCBuZXh0UnVuKDApCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChkaXIgPT0g
VV9PVEhFUl9ORVVUUkFMKSAKICAgICAgICAgICAgICAgICBkaXIgPSBjb250ZXh0LT5kaXIoKTsK
QEAgLTEwMCwxNCArMTEwLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgaW50IHN0
YXJ0OwogICAgICAgICBpbnQgc3RvcDsKIAotICAgICAgICBSZW5kZXJPYmplY3QgKm9iajsKKyAg
ICAgICAgUmVuZGVyT2JqZWN0KiBvYmo7CiAgICAgICAgIElubGluZUJveCogYm94OwotICAgICAg
ICAKKwogICAgICAgICAvLyBleHBsaWNpdCArIGltcGxpY2l0IGxldmVscyBoZXJlCiAgICAgICAg
IHVuc2lnbmVkIGNoYXIgbGV2ZWw7CiAgICAgICAgIGJvb2wgb3ZlcnJpZGUgOiAxOwogICAgICAg
ICBib29sIGNvbXBhY3QgOiAxOwotICAgICAgICAKKwogICAgICAgICBCaWRpUnVuKiBuZXh0UnVu
OwogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuaAkocmV2aXNpb24gMTczMzEp
CisrKyBXZWJDb3JlL3JlbmRlcmluZy9icmVha19saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MCw2ICsyMCw5IEBACiAgKgogICovCiAKKyNpZm5kZWYgYnJlYWtfbGluZXNfaAorI2RlZmluZSBi
cmVha19saW5lc19oCisKICNpbmNsdWRlICJVQ2hhci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0zMyw0ICszNiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgcmV0dXJuIHBv
cyA9PSBuZXh0QnJlYWthYmxlOwogICAgIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gYnJlYWtfbGluZXNfaAo=
</data>
<flag name="review"
          id="3856"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>