<?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>12018</bug_id>
          
          <creation_ts>2006-12-28 14:30:34 -0800</creation_ts>
          <short_desc>Cleanup of CSSRule and its subclasses.</short_desc>
          <delta_ts>2006-12-29 11:44:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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>39151</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-12-28 14:30:34 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39155</commentid>
    <comment_count>1</comment_count>
      <attachid>12087</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-12-28 15:05:40 -0800</bug_when>
    <thetext>Created attachment 12087
patch

- Make CSSRule::type() virtual instead of using a member variable.
- Make CSSRule::setCssText() virtual and take an ExceptionCode argument to conform to the spec.  Subclasses are also stubbed with the method and a FIXME comment urging for their implementation.
- Cleanup cssText() implementations.
- General style cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39165</commentid>
    <comment_count>2</comment_count>
      <attachid>12087</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-12-28 15:50:30 -0800</bug_when>
    <thetext>Comment on attachment 12087
patch

Removing review flag.  Many things are wrong with patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39053</commentid>
    <comment_count>3</comment_count>
      <attachid>12103</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-12-29 06:33:30 -0800</bug_when>
    <thetext>Created attachment 12103
patch 2

After a discussion on IRC it became apparen that many parts of the previous patch were misguided.  So, I&apos;ve changed the scope of the patch to just make CSSRule::type() virtual instead of using a member variable and do some general style cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39012</commentid>
    <comment_count>4</comment_count>
      <attachid>12103</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2006-12-29 11:17:28 -0800</bug_when>
    <thetext>Comment on attachment 12103
patch 2

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39014</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-12-29 11:44:24 -0800</bug_when>
    <thetext>Landed in r18476.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12087</attachid>
            <date>2006-12-28 15:05:40 -0800</date>
            <delta_ts>2006-12-29 06:33:30 -0800</delta_ts>
            <desc>patch</desc>
            <filename>cssomFinal.diff</filename>
            <type>text/plain</type>
            <size>25356</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxODQ1OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzYgQEAKKzIwMDYtMTItMjggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCBm
b3IgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMTgKKyAgICAgICAg
Q2xlYW51cCBvZiBDU1NSdWxlIGFuZCBpdHMgc3ViY2xhc3NlcworCisgICAgICAgIC0gTWFrZSBD
U1NSdWxlOjp0eXBlKCkgdmlydHVhbCBpbnN0ZWFkIG9mIHVzaW5nIGEgbWVtYmVyIHZhcmlhYmxl
LgorICAgICAgICAtIE1ha2UgQ1NTUnVsZTo6c2V0Q3NzVGV4dCgpIHZpcnR1YWwgYW5kIHRha2Ug
YW4gRXhjZXB0aW9uQ29kZSBhcmd1bWVudAorICAgICAgICAgIHRvIGNvbmZvcm0gdG8gdGhlIHNw
ZWMuICBTdWJjbGFzc2VzIGFyZSBhbHNvIHN0dWJiZWQgd2l0aCB0aGUgbWV0aG9kCisgICAgICAg
ICAgYW5kIGEgRklYTUUgY29tbWVudCB1cmdpbmcgZm9yIHRoZWlyIGltcGxlbWVudGF0aW9uLgor
ICAgICAgICAtIENsZWFudXAgY3NzVGV4dCgpIGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAgLSBH
ZW5lcmFsIHN0eWxlIGNsZWFudXAuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMva2pzX2Nzcy5jcHA6CisgICAgICAg
IChLSlM6OkRPTUNTU1J1bGU6OnB1dFZhbHVlUHJvcGVydHkpOgorICAgICAgICAqIGNzcy9DU1ND
aGFyc2V0UnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDaGFyc2V0UnVsZTo6Q1NTQ2hh
cnNldFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2hhcnNldFJ1bGU6OnNldENzc1RleHQp
OgorICAgICAgICAqIGNzcy9DU1NDaGFyc2V0UnVsZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Q2hhcnNldFJ1bGU6OmlzQ2hhcnNldFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2hhcnNl
dFJ1bGU6OnR5cGUpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVJ1bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VSdWxlOjpDU1NGb250RmFjZVJ1bGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTRm9udEZhY2VSdWxlOjpjc3NUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ZvbnRGYWNlUnVsZTo6c2V0Q3NzVGV4dCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlUnVs
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VSdWxlOjppc0ZvbnRGYWNlUnVsZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVJ1bGU6OnR5cGUpOgorICAgICAgICAqIGNz
cy9DU1NJbXBvcnRSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltcG9ydFJ1bGU6OkNT
U0ltcG9ydFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1wb3J0UnVsZTo6Y3NzVGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NJbXBvcnRSdWxlOjpzZXRDc3NUZXh0KToKKyAgICAgICAg
KiBjc3MvQ1NTSW1wb3J0UnVsZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1wb3J0UnVsZTo6
aXNJbXBvcnRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltcG9ydFJ1bGU6OnR5cGUpOgor
ICAgICAgICAqIGNzcy9DU1NNZWRpYVJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTWVk
aWFSdWxlOjpDU1NNZWRpYVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTWVkaWFSdWxlOjpj
c3NUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU01lZGlhUnVsZTo6c2V0Q3NzVGV4dCk6Cisg
ICAgICAgICogY3NzL0NTU01lZGlhUnVsZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTWVkaWFS
dWxlOjppc01lZGlhUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NNZWRpYVJ1bGU6OnR5cGUp
OgorICAgICAgICAqIGNzcy9DU1NQYWdlUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YWdlUnVsZTo6Q1NTUGFnZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFnZVJ1bGU6OnNl
bGVjdG9yVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYWdlUnVsZTo6c2V0U2VsZWN0b3JU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhZ2VSdWxlOjpjc3NUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhZ2VSdWxlOjpzZXRDc3NUZXh0KToKKyAgICAgICAgKiBjc3MvQ1NTUGFn
ZVJ1bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhZ2VSdWxlOjpzdHlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYWdlUnVsZTo6dHlwZSk6CisgICAgICAgICogY3NzL0NTU1J1bGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUnVsZTo6Y3NzVGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NSdWxlOjpzZXRDc3NUZXh0KToKKyAgICAgICAgKiBjc3MvQ1NTUnVsZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUnVsZTo6Q1NTUnVsZSk6CisgICAgICAgICogY3NzL0NTU1J1bGUuaWRs
OgorICAgICAgICAqIGNzcy9DU1NTdHlsZVJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U3R5bGVSdWxlOjpDU1NTdHlsZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVSdWxl
OjpzZXRTZWxlY3RvclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVSdWxlOjpjc3NU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlUnVsZTo6c2V0Q3NzVGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTdHlsZVJ1bGU6OnBhcnNlU3RyaW5nKToKKyAgICAgICAgKiBjc3Mv
Q1NTU3R5bGVSdWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVJ1bGU6OmlzU3R5bGVS
dWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlUnVsZTo6c3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVSdWxlOjp0eXBlKToKKyAgICAgICAgKiBjc3MvQ1NTVW5rbm93blJ1
bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Vua25vd25SdWxlOjpDU1NVbmtub3duUnVsZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NVbmtub3duUnVsZTo6dHlwZSk6CisKIDIwMDYtMTItMjgg
IEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IHJ3
bGJ1aXMuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMTg0NTgpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTAwMiwxNyArOTAwMiwxNyBAQAogCQlGNTIzRDE4NDAy
REU0MkU4MDE4NjM1Q0EgLyogY3NzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKLQkJCQlBQTA5NzhFRDBBQkFBNkUxMDA4NzQ0ODAgLyogQ1NTQ3Vyc29ySW1hZ2VW
YWx1ZS5jcHAgKi8sCi0JCQkJQUEwOTc4RUUwQUJBQTZFMTAwODc0NDgwIC8qIENTU0N1cnNvcklt
YWdlVmFsdWUuaCAqLywKIAkJCQlBODBFNkNEQTBBMTk4OUNBMDA3RkI4QzUgLyogQ291bnRlci5o
ICovLAogCQkJCTkzMDcwNUM3MDlFMEM5NUYwMEIxN0ZFNCAvKiBDb3VudGVyLmlkbCAqLywKIAkJ
CQlBODBFNkNCQjBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTQm9yZGVySW1hZ2VWYWx1ZS5jcHAgKi8s
CiAJCQkJQTgwRTZDREQwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0JvcmRlckltYWdlVmFsdWUuaCAq
LywKLQkJCQlBODBFNkNDRjBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTQ2hhcnNldFJ1bGUuaCAqLywK
IAkJCQlFMUVCQkJEMzBBQUM5Qjg3MDAxRkU4RTIgLyogQ1NTQ2hhcnNldFJ1bGUuY3BwICovLAor
CQkJCUE4MEU2Q0NGMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NDaGFyc2V0UnVsZS5oICovLAogCQkJ
CTg1QzU2Q0FDMEFBODlGOEUwMEQ5NTc1NSAvKiBDU1NDaGFyc2V0UnVsZS5pZGwgKi8sCiAJCQkJ
QkNFQTQ3N0MwOTdDQUFDODAwOTRDOUU0IC8qIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHAgKi8sCiAJCQkJQkNFQTQ3N0QwOTdDQUFDODAwOTRDOUU0IC8qIENTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5oICovLAorCQkJCUFBMDk3OEVEMEFCQUE2RTEwMDg3NDQ4MCAvKiBDU1NDdXJz
b3JJbWFnZVZhbHVlLmNwcCAqLywKKwkJCQlBQTA5NzhFRTBBQkFBNkUxMDA4NzQ0ODAgLyogQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZS5oICovLAogCQkJCUE4MEU2Q0JEMEExOTg5Q0EwMDdGQjhDNSAvKiBD
U1NGb250RmFjZVJ1bGUuY3BwICovLAogCQkJCUE4MEU2Q0QzMEExOTg5Q0EwMDdGQjhDNSAvKiBD
U1NGb250RmFjZVJ1bGUuaCAqLywKIAkJCQk4NUM1NkNBMzBBQTg5Q0E0MDBEOTU3NTUgLyogQ1NT
Rm9udEZhY2VSdWxlLmlkbCAqLywKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2Nzcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfY3NzLmNwcAkocmV2aXNp
b24gMTg0NTgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19jc3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MDQsNyArNzA0LDcgQEAgY29uc3QgQ2xhc3NJbmZvKiBET01DU1NSdWxlOjpjbGFz
c0luZm8oKQogLyoKIEBiZWdpbiBET01DU1NSdWxlVGFibGUgNAogICB0eXBlICAgICAgICAgICAg
ICAgICAgRE9NQ1NTUnVsZTo6VHlwZSAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQotICBjc3NU
ZXh0ICAgICAgICAgICAgICAgRE9NQ1NTUnVsZTo6Q3NzVGV4dCAgICAgRG9udERlbGV0ZXxSZWFk
T25seQorICBjc3NUZXh0ICAgICAgICAgICAgICAgRE9NQ1NTUnVsZTo6Q3NzVGV4dCAgICAgRG9u
dERlbGV0ZQogICBwYXJlbnRTdHlsZVNoZWV0ICAgICAgRE9NQ1NTUnVsZTo6UGFyZW50U3R5bGVT
aGVldCAgICBEb250RGVsZXRlfFJlYWRPbmx5CiAgIHBhcmVudFJ1bGUgICAgICAgICAgICBET01D
U1NSdWxlOjpQYXJlbnRSdWxlICBEb250RGVsZXRlfFJlYWRPbmx5CiBAZW5kCkBAIC04MjcsNiAr
ODI3LDEzIEBAIHZvaWQgRE9NQ1NTUnVsZTo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY28KIHZvaWQg
RE9NQ1NTUnVsZTo6cHV0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGludCB0b2tlbiwg
SlNWYWx1ZSogdmFsdWUsIGludCkKIHsKICAgc3dpdGNoICh0b2tlbikgeworICBjYXNlIENzc1Rl
eHQ6IHsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBpbXBsKCktPnNldENzc1RleHQo
dmFsdWUtPnRvU3RyaW5nKGV4ZWMpLCBlYyk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVj
KTsKKyAgICByZXR1cm47CisgIH0KKwogICAvLyBmb3IgU1RZTEVfUlVMRToKICAgY2FzZSBTdHls
ZV9TZWxlY3RvclRleHQ6CiAgICAgc3RhdGljX2Nhc3Q8Q1NTU3R5bGVSdWxlKj4obV9pbXBsLmdl
dCgpKS0+c2V0U2VsZWN0b3JUZXh0KHZhbHVlLT50b1N0cmluZyhleGVjKSk7CkluZGV4OiBXZWJD
b3JlL2Nzcy9DU1NDaGFyc2V0UnVsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NT
Q2hhcnNldFJ1bGUuY3BwCShyZXZpc2lvbiAxODQ1OCkKKysrIFdlYkNvcmUvY3NzL0NTU0NoYXJz
ZXRSdWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTksMTYgKzE5LDE4IEBACiAgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAs
CiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLworCiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQ1NTQ2hhcnNldFJ1bGUuaCIKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDU1NDaGFyc2V0UnVsZTo6Q1NTQ2hhcnNl
dFJ1bGUoU3R5bGVCYXNlKiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcpIAogICAgIDog
Q1NTUnVsZShwYXJlbnQpCiAgICAgLCBtX2VuY29kaW5nKGVuY29kaW5nKQogewotICAgIG1fdHlw
ZSA9IENIQVJTRVRfUlVMRTsKIH0KIAogQ1NTQ2hhcnNldFJ1bGU6On5DU1NDaGFyc2V0UnVsZSgp
CkBAIC00MCw0ICs0Miw5IEBAIFN0cmluZyBDU1NDaGFyc2V0UnVsZTo6Y3NzVGV4dCgpIGNvbnN0
CiAgICAgcmV0dXJuICJAY2hhcnNldCBcIiIgKyBtX2VuY29kaW5nICsgIlwiOyI7CiB9CiAKK3Zv
aWQgQ1NTQ2hhcnNldFJ1bGU6OnNldENzc1RleHQoU3RyaW5nIC8qY3NzVGV4dCovLCBFeGNlcHRp
b25Db2RlJiAvKmVjKi8pCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCEKIH0KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTQ2hhcnNldFJ1bGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NDaGFyc2V0UnVsZS5oCShyZXZpc2lvbiAxODQ1OCkK
KysrIFdlYkNvcmUvY3NzL0NTU0NoYXJzZXRSdWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDMw
ICsyMSwzNiBAQAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAgKi8KIAotI2lmbmRl
ZiBDU1NDaGFyc2V0UnVsZV9ICi0jZGVmaW5lIENTU0NoYXJzZXRSdWxlX0gKKyNpZm5kZWYgQ1NT
Q2hhcnNldFJ1bGVfaAorI2RlZmluZSBDU1NDaGFyc2V0UnVsZV9oCiAKICNpbmNsdWRlICJDU1NS
dWxlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBDU1NDaGFyc2V0UnVsZSA6IHB1YmxpYyBDU1NSdWxlCi17CitjbGFzcyBDU1ND
aGFyc2V0UnVsZSA6IHB1YmxpYyBDU1NSdWxlIHsKIHB1YmxpYzoKICAgICBDU1NDaGFyc2V0UnVs
ZShTdHlsZUJhc2UqIHBhcmVudCwgY29uc3QgU3RyaW5nJiBlbmNvZGluZyk7CiAgICAgdmlydHVh
bCB+Q1NTQ2hhcnNldFJ1bGUoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0NoYXJzZXRSdWxlKCkg
eyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKIAog
ICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2Rpbmc7IH0KKworICAg
IC8vIEluaGVyaXRlZCBmcm9tIENTU1J1bGUKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IHR5
cGUoKSBjb25zdCB7IHJldHVybiBDSEFSU0VUX1JVTEU7IH0KKworICAgIHZpcnR1YWwgU3RyaW5n
IGNzc1RleHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3NzVGV4dChTdHJpbmcsIEV4
Y2VwdGlvbkNvZGUmKTsKKworICAgIC8vIE5vdCBwYXJ0IG9mIHRoZSBDU1NPTQogICAgIHZvaWQg
c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBlbmNvZGluZykgeyBtX2VuY29kaW5nID0gZW5jb2Rp
bmc7IH0KIAogcHJvdGVjdGVkOgogICAgIFN0cmluZyBtX2VuY29kaW5nOwogfTsKIAotfSAvLyBu
YW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8gQ1NT
Q2hhcnNldFJ1bGVfaApJbmRleDogV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VSdWxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NGb250RmFjZVJ1bGUuY3BwCShyZXZpc2lvbiAxODQ1
OCkKKysrIFdlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlUnVsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIwLDIxICsyMCwzMyBAQAogICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBV
U0EuCiAgKi8KKwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlUnVs
ZS5oIgogCiAjaW5jbHVkZSAiQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ1NTRm9udEZhY2VS
dWxlOjpDU1NGb250RmFjZVJ1bGUoU3R5bGVCYXNlKiBwYXJlbnQpCiAgICAgOiBDU1NSdWxlKHBh
cmVudCkKIHsKLSAgICBtX3R5cGUgPSBGT05UX0ZBQ0VfUlVMRTsKIH0KIAogQ1NTRm9udEZhY2VS
dWxlOjp+Q1NTRm9udEZhY2VSdWxlKCkKIHsKIH0KIAorU3RyaW5nIENTU0ZvbnRGYWNlUnVsZTo6
Y3NzVGV4dCgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCEKKyAgICByZXR1cm4g
U3RyaW5nKCk7Cit9CisKK3ZvaWQgQ1NTRm9udEZhY2VSdWxlOjpzZXRDc3NUZXh0KFN0cmluZyAv
KmNzc1RleHQqLywgRXhjZXB0aW9uQ29kZSYgLyplYyovKQoreworICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQhCiB9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlUnVsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlUnVs
ZS5oCShyZXZpc2lvbiAxODQ1OCkKKysrIFdlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlUnVsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMSw4ICsyMSw4IEBACiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcs
IFVTQS4KICAqLwogCi0jaWZuZGVmIENTU0ZvbnRGYWNlUnVsZV9ICi0jZGVmaW5lIENTU0ZvbnRG
YWNlUnVsZV9ICisjaWZuZGVmIENTU0ZvbnRGYWNlUnVsZV9oCisjZGVmaW5lIENTU0ZvbnRGYWNl
UnVsZV9oCiAKICNpbmNsdWRlICJDU1NSdWxlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpA
QCAtMzEsMjAgKzMxLDI1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb247CiAKLWNsYXNzIENTU0ZvbnRGYWNlUnVsZSA6IHB1YmxpYyBDU1NS
dWxlCi17CitjbGFzcyBDU1NGb250RmFjZVJ1bGUgOiBwdWJsaWMgQ1NTUnVsZSB7CiBwdWJsaWM6
CiAgICAgQ1NTRm9udEZhY2VSdWxlKFN0eWxlQmFzZSogcGFyZW50KTsKICAgICB2aXJ0dWFsIH5D
U1NGb250RmFjZVJ1bGUoKTsKIAorICAgIHZpcnR1YWwgYm9vbCBpc0ZvbnRGYWNlUnVsZSgpIHsg
cmV0dXJuIHRydWU7IH0KKwogICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3R5bGUuZ2V0KCk7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc0Zv
bnRGYWNlUnVsZSgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICAvLyBJbmhlcml0ZWQgZnJvbSBDU1NS
dWxlCisgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCB0eXBlKCkgY29uc3QgeyByZXR1cm4gRk9O
VF9GQUNFX1JVTEU7IH0KKworICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q3NzVGV4dChTdHJpbmcsIEV4Y2VwdGlvbkNvZGUmKTsKIAogcHJv
dGVjdGVkOgogICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gbV9zdHlsZTsK
IH07CiAKLX0gLy8gbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgor
I2VuZGlmIC8vIENTU0ZvbnRGYWNlUnVsZV9oCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NJbXBvcnRS
dWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NJbXBvcnRSdWxlLmNwcAkocmV2
aXNpb24gMTg0NTgpCisrKyBXZWJDb3JlL2Nzcy9DU1NJbXBvcnRSdWxlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjAsMTMgKzIwLDE1IEBACiAgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCiAgKiBCb3N0b24sIE1BIDAyMTEx
LTEzMDcsIFVTQS4KICAqLworCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTSW1w
b3J0UnVsZS5oIgogCi0jaW5jbHVkZSAiQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUg
IkNTU1N0eWxlU2hlZXQuaCIKKyNpbmNsdWRlICJDYWNoZWRDU1NTdHlsZVNoZWV0LmgiCiAjaW5j
bHVkZSAiRG9jTG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgog
CkBAIC0zOSw4ICs0MSw2IEBAIENTU0ltcG9ydFJ1bGU6OkNTU0ltcG9ydFJ1bGUoU3R5bGVCYXNl
KiAKICAgICAsIG1fY2FjaGVkU2hlZXQoMCkKICAgICAsIG1fbG9hZGluZyhmYWxzZSkKIHsKLSAg
ICBtX3R5cGUgPSBJTVBPUlRfUlVMRTsKLQogICAgIGlmIChtX2xzdE1lZGlhKQogICAgICAgICBt
X2xzdE1lZGlhLT5zZXRQYXJlbnQodGhpcyk7CiAgICAgZWxzZQpAQCAtMTEzLDE3ICsxMTMsMTcg
QEAgdm9pZCBDU1NJbXBvcnRSdWxlOjppbnNlcnRlZEludG9QYXJlbnQoKQogCiBTdHJpbmcgQ1NT
SW1wb3J0UnVsZTo6Y3NzVGV4dCgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nIHJlc3VsdCA9ICJAaW1w
b3J0IHVybChcIiI7Ci0gICAgcmVzdWx0ICs9IG1fc3RySHJlZjsKLSAgICByZXN1bHQgKz0gIlwi
KSI7Ci0KLSAgICBpZiAobV9sc3RNZWRpYSkgewotICAgICAgICByZXN1bHQgKz0gIiAiOwotICAg
ICAgICByZXN1bHQgKz0gbV9sc3RNZWRpYS0+bWVkaWFUZXh0KCk7Ci0gICAgfQorICAgIFN0cmlu
ZyByZXN1bHQgPSAiQGltcG9ydCB1cmwoXCIiICsgbV9zdHJIcmVmICsgIlwiKSI7CisgICAgaWYg
KG1fbHN0TWVkaWEpCisgICAgICAgIHJlc3VsdCArPSAiICIgKyBtX2xzdE1lZGlhLT5tZWRpYVRl
eHQoKTsKICAgICByZXN1bHQgKz0gIjsiOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordm9p
ZCBDU1NJbXBvcnRSdWxlOjpzZXRDc3NUZXh0KFN0cmluZyAvKmNzc1RleHQqLywgRXhjZXB0aW9u
Q29kZSYgLyplYyovKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQhCiB9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU0ltcG9ydFJ1bGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NJbXBvcnRSdWxlLmgJKHJldmlzaW9uIDE4NDU4KQorKysg
V2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw4ICsyMSw4
IEBACiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLwogCi0jaWZuZGVmIENTU0lt
cG9ydFJ1bGVfSAotI2RlZmluZSBDU1NJbXBvcnRSdWxlX0gKKyNpZm5kZWYgQ1NTSW1wb3J0UnVs
ZV9oCisjZGVmaW5lIENTU0ltcG9ydFJ1bGVfaAogCiAjaW5jbHVkZSAiQ1NTUnVsZS5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCkBAIC0zMywxOSArMzMsMjQgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQ2FjaGVkQ1NTU3R5bGVTaGVldDsKIGNsYXNzIE1lZGlhTGlz
dDsKIAotY2xhc3MgQ1NTSW1wb3J0UnVsZSA6IHB1YmxpYyBDU1NSdWxlLCBwdWJsaWMgQ2FjaGVk
UmVzb3VyY2VDbGllbnQKLXsKK2NsYXNzIENTU0ltcG9ydFJ1bGUgOiBwdWJsaWMgQ1NTUnVsZSwg
cHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKIHB1YmxpYzoKICAgICBDU1NJbXBvcnRSdWxl
KFN0eWxlQmFzZSogcGFyZW50LCBjb25zdCBTdHJpbmcmIGhyZWYsIE1lZGlhTGlzdCopOwogICAg
IHZpcnR1YWwgfkNTU0ltcG9ydFJ1bGUoKTsKIAorICAgIHZpcnR1YWwgYm9vbCBpc0ltcG9ydFJ1
bGUoKSB7IHJldHVybiB0cnVlOyB9CisKICAgICBTdHJpbmcgaHJlZigpIGNvbnN0IHsgcmV0dXJu
IG1fc3RySHJlZjsgfQogICAgIE1lZGlhTGlzdCogbWVkaWEoKSBjb25zdCB7IHJldHVybiBtX2xz
dE1lZGlhLmdldCgpOyB9CiAgICAgQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3R5bGVTaGVldC5nZXQoKTsgfQogCi0gICAgdmlydHVhbCBib29sIGlzSW1wb3J0
UnVsZSgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICAvLyBJbmhlcml0ZWQgZnJvbSBDU1NSdWxlCisg
ICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCB0eXBlKCkgY29uc3QgeyByZXR1cm4gSU1QT1JUX1JV
TEU7IH0KKwogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKLSAgCisgICAgdmly
dHVhbCB2b2lkIHNldENzc1RleHQoU3RyaW5nLCBFeGNlcHRpb25Db2RlJik7CisKKyAgICAvLyBO
b3QgcGFydCBvZiB0aGUgQ1NTT00KICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0OwogCiAgICAg
Ly8gZnJvbSBDYWNoZWRSZXNvdXJjZUNsaWVudApAQCAtNjEsNiArNjYsNiBAQCBwcm90ZWN0ZWQ6
CiAgICAgYm9vbCBtX2xvYWRpbmc7CiB9OwogCi19IC8vIG5hbWVzcGFjZQorfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBDU1NJbXBvcnRSdWxlX2gKSW5kZXg6IFdl
YkNvcmUvY3NzL0NTU01lZGlhUnVsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NT
TWVkaWFSdWxlLmNwcAkocmV2aXNpb24gMTg0NTgpCisrKyBXZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBAIENTU01lZGlhUnVsZTo6Q1NT
TWVkaWFSdWxlKFN0eWxlQmFzZSogcGEKICAgICAsIG1fbHN0TWVkaWEobWVkaWFMaXN0KQogICAg
ICwgbV9sc3RDU1NSdWxlcyhydWxlTGlzdCkKIHsKLSAgICBtX3R5cGUgPSBNRURJQV9SVUxFOwog
fQogCiBDU1NNZWRpYVJ1bGU6OkNTU01lZGlhUnVsZShTdHlsZUJhc2UqIHBhcmVudCkKQEAgLTQ3
LDcgKzQ2LDYgQEAgQ1NTTWVkaWFSdWxlOjpDU1NNZWRpYVJ1bGUoU3R5bGVCYXNlKiBwYQogICAg
ICwgbV9sc3RDU1NSdWxlcyhuZXcgQ1NTUnVsZUxpc3QoKSkKIAogewotICAgIG1fdHlwZSA9IE1F
RElBX1JVTEU7CiB9CiAKIENTU01lZGlhUnVsZTo6Q1NTTWVkaWFSdWxlKFN0eWxlQmFzZSogcGFy
ZW50LCBjb25zdCBTdHJpbmcgJm1lZGlhKQpAQCAtNTUsNyArNTMsNiBAQCBDU1NNZWRpYVJ1bGU6
OkNTU01lZGlhUnVsZShTdHlsZUJhc2UqIHBhCiAgICAgLCBtX2xzdE1lZGlhKG5ldyBNZWRpYUxp
c3QodGhpcywgbWVkaWEpKQogICAgICwgbV9sc3RDU1NSdWxlcyhuZXcgQ1NTUnVsZUxpc3QoKSkK
IHsKLSAgICBtX3R5cGUgPSBNRURJQV9SVUxFOwogfQogCiBDU1NNZWRpYVJ1bGU6On5DU1NNZWRp
YVJ1bGUoKQpAQCAtMTMyLDIyICsxMjksMjMgQEAgdm9pZCBDU1NNZWRpYVJ1bGU6OmRlbGV0ZVJ1
bGUodW5zaWduZWQgaQogU3RyaW5nIENTU01lZGlhUnVsZTo6Y3NzVGV4dCgpIGNvbnN0CiB7CiAg
ICAgU3RyaW5nIHJlc3VsdCA9ICJAbWVkaWEgIjsKLSAgICBpZiAobV9sc3RNZWRpYSkgewotICAg
ICAgICByZXN1bHQgKz0gbV9sc3RNZWRpYS0+bWVkaWFUZXh0KCk7Ci0gICAgICAgIHJlc3VsdCAr
PSAiICI7Ci0gICAgfQorICAgIGlmIChtX2xzdE1lZGlhKQorICAgICAgICByZXN1bHQgKz0gbV9s
c3RNZWRpYS0+bWVkaWFUZXh0KCkgKyAiICI7CisKICAgICByZXN1bHQgKz0gInsgXG4iOwotICAg
IAogICAgIGlmIChtX2xzdENTU1J1bGVzKSB7CiAgICAgICAgIHVuc2lnbmVkIGxlbiA9IG1fbHN0
Q1NTUnVsZXMtPmxlbmd0aCgpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
OyBpKyspIHsKLSAgICAgICAgICAgIHJlc3VsdCArPSAiICAiOwotICAgICAgICAgICAgcmVzdWx0
ICs9IG1fbHN0Q1NTUnVsZXMtPml0ZW0oaSktPmNzc1RleHQoKTsKLSAgICAgICAgICAgIHJlc3Vs
dCArPSAiXG4iOwotICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW47IGkrKykKKyAgICAgICAgICAgIHJlc3VsdCArPSAiICAiICsgbV9sc3RDU1NSdWxlcy0+aXRl
bShpKS0+Y3NzVGV4dCgpICsgIlxuIjsKICAgICB9Ci0gICAgCiAgICAgcmVzdWx0ICs9ICJ9IjsK
KwogICAgIHJldHVybiByZXN1bHQ7CiB9CisKK3ZvaWQgQ1NTTWVkaWFSdWxlOjpzZXRDc3NUZXh0
KFN0cmluZyAvKmNzc1RleHQqLywgRXhjZXB0aW9uQ29kZSYgLyplYyovKQoreworICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQhCiB9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNv
cmUvY3NzL0NTU01lZGlhUnVsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU01lZGlh
UnVsZS5oCShyZXZpc2lvbiAxODQ1OCkKKysrIFdlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMiw4ICsyMiw4IEBACiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcs
IFVTQS4KICAqLwogCi0jaWZuZGVmIENTU01lZGlhUnVsZV9ICi0jZGVmaW5lIENTU01lZGlhUnVs
ZV9ICisjaWZuZGVmIENTU01lZGlhUnVsZV9oCisjZGVmaW5lIENTU01lZGlhUnVsZV9oCiAKICNp
bmNsdWRlICJDU1NSdWxlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtMzMsMjYgKzMz
LDI4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENTU1J1bGVMaXN0OwogY2xhc3MgTWVk
aWFMaXN0OwogCi10eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwotCi1jbGFzcyBDU1NNZWRpYVJ1
bGUgOiBwdWJsaWMgQ1NTUnVsZQoteworY2xhc3MgQ1NTTWVkaWFSdWxlIDogcHVibGljIENTU1J1
bGUgewogcHVibGljOgogICAgIENTU01lZGlhUnVsZShTdHlsZUJhc2UqIHBhcmVudCk7CiAgICAg
Q1NTTWVkaWFSdWxlKFN0eWxlQmFzZSogcGFyZW50LCBjb25zdCBTdHJpbmcgJm1lZGlhKTsKICAg
ICBDU1NNZWRpYVJ1bGUoU3R5bGVCYXNlKiBwYXJlbnQsIE1lZGlhTGlzdCogbWVkaWFMaXN0LCBD
U1NSdWxlTGlzdCogcnVsZUxpc3QpOwogICAgIHZpcnR1YWwgfkNTU01lZGlhUnVsZSgpOwogCisg
ICAgdmlydHVhbCBib29sIGlzTWVkaWFSdWxlKCkgeyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgTWVk
aWFMaXN0KiBtZWRpYSgpIGNvbnN0IHsgcmV0dXJuIG1fbHN0TWVkaWEuZ2V0KCk7IH0KICAgICBD
U1NSdWxlTGlzdCogY3NzUnVsZXMoKSB7IHJldHVybiBtX2xzdENTU1J1bGVzLmdldCgpOyB9CiAK
ICAgICB1bnNpZ25lZCBpbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZSwgdW5zaWduZWQgaW5k
ZXgsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGRlbGV0ZVJ1bGUodW5zaWduZWQgaW5kZXgs
IEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhUnVsZSgpIHsgcmV0
dXJuIHRydWU7IH0KKyAgICAvLyBJbmhlcml0ZWQgZnJvbSBDU1NSdWxlCisgICAgdmlydHVhbCB1
bnNpZ25lZCBzaG9ydCB0eXBlKCkgY29uc3QgeyByZXR1cm4gTUVESUFfUlVMRTsgfQorCiAgICAg
dmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRDc3NU
ZXh0KFN0cmluZywgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgLyogTm90IHBhcnQgb2YgdGhlIERP
TSAqLworICAgIC8vIE5vdCBwYXJ0IG9mIHRoZSBDU1NPTQogICAgIHVuc2lnbmVkIGFwcGVuZChD
U1NSdWxlKik7CiAKIHByb3RlY3RlZDoKQEAgLTYwLDYgKzYyLDYgQEAgcHJvdGVjdGVkOgogICAg
IFJlZlB0cjxDU1NSdWxlTGlzdD4gbV9sc3RDU1NSdWxlczsKIH07CiAKLX0gLy8gbmFtZXNwYWNl
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlmIC8vIENTU01lZGlhUnVs
ZV9oCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9jc3MvQ1NTUGFnZVJ1bGUuY3BwCShyZXZpc2lvbiAxODQ1OCkKKysrIFdlYkNvcmUvY3Nz
L0NTU1BhZ2VSdWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAsMTcgKzIwLDE4IEBACiAgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0
ZSAzMzAsCiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLworCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTUGFnZVJ1bGUuaCIKIAogI2luY2x1ZGUgIkNTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIENTU1BhZ2VSdWxlOjpDU1NQYWdlUnVsZShTdHlsZUJhc2UqIHBh
cmVudCkKICAgICA6IENTU1J1bGUocGFyZW50KQogewotICAgIG1fdHlwZSA9IFBBR0VfUlVMRTsK
IH0KIAogQ1NTUGFnZVJ1bGU6On5DU1NQYWdlUnVsZSgpCkBAIC0zOSwxMyArNDAsMjQgQEAgQ1NT
UGFnZVJ1bGU6On5DU1NQYWdlUnVsZSgpCiAKIFN0cmluZyBDU1NQYWdlUnVsZTo6c2VsZWN0b3JU
ZXh0KCkgY29uc3QKIHsKLSAgICAvLyAjIyMKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IQogICAg
IHJldHVybiBTdHJpbmcoKTsKIH0KIAotdm9pZCBDU1NQYWdlUnVsZTo6c2V0U2VsZWN0b3JUZXh0
KGNvbnN0IFN0cmluZyYgLypzdHIqLykKK3ZvaWQgQ1NTUGFnZVJ1bGU6OnNldFNlbGVjdG9yVGV4
dChjb25zdCBTdHJpbmcmIC8qc2VsZWN0b3JUZXh0Ki8pCiB7Ci0gICAgLy8gIyMjCisgICAgLy8g
RklYTUU6IEltcGxlbWVudCEKIH0KIAorU3RyaW5nIENTU1BhZ2VSdWxlOjpjc3NUZXh0KCkgY29u
c3QKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IQorICAgIHJldHVybiBTdHJpbmcoKTsKIH0K
Kwordm9pZCBDU1NQYWdlUnVsZTo6c2V0Q3NzVGV4dChTdHJpbmcgLypjc3NUZXh0Ki8sIEV4Y2Vw
dGlvbkNvZGUmIC8qZWMqLykKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IQorfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1BhZ2VSdWxlLmgJKHJldmlzaW9uIDE4NDU4KQorKysg
V2ViQ29yZS9jc3MvQ1NTUGFnZVJ1bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsOCArMjEsOCBA
QAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAgKi8KIAotI2lmbmRlZiBDU1NQYWdl
UnVsZV9ICi0jZGVmaW5lIENTU1BhZ2VSdWxlX0gKKyNpZm5kZWYgQ1NTUGFnZVJ1bGVfaAorI2Rl
ZmluZSBDU1NQYWdlUnVsZV9oCiAKICNpbmNsdWRlICJDU1NSdWxlLmgiCiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgpAQCAtMzEsMjMgKzMxLDI4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb247CiAKLWNsYXNzIENTU1BhZ2VSdWxlIDogcHVi
bGljIENTU1J1bGUKLXsKK2NsYXNzIENTU1BhZ2VSdWxlIDogcHVibGljIENTU1J1bGUgewogcHVi
bGljOgogICAgIENTU1BhZ2VSdWxlKFN0eWxlQmFzZSogcGFyZW50KTsKICAgICB2aXJ0dWFsIH5D
U1NQYWdlUnVsZSgpOwogCi0gICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHN0eWxlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHlsZS5nZXQoKTsgfQotCiAgICAgdmlydHVhbCBib29sIGlzUGFn
ZVJ1bGUoKSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBTdHJpbmcgc2VsZWN0b3JUZXh0KCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRTZWxlY3RvclRleHQoY29uc3QgU3RyaW5nJik7CiAKKyAgICBDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlLmdl
dCgpOyB9CisKKyAgICAvLyBJbmhlcml0ZWQgZnJvbSBDU1NSdWxlCisgICAgdmlydHVhbCB1bnNp
Z25lZCBzaG9ydCB0eXBlKCkgY29uc3QgeyByZXR1cm4gUEFHRV9SVUxFOyB9CisKKyAgICB2aXJ0
dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldENzc1RleHQo
U3RyaW5nLCBFeGNlcHRpb25Db2RlJik7CisKIHByb3RlY3RlZDoKICAgICBSZWZQdHI8Q1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24+IG1fc3R5bGU7CiB9OwogCi19IC8vIG5hbWVzcGFjZQorfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBDU1NQYWdlUnVsZV9oCklu
ZGV4OiBXZWJDb3JlL2Nzcy9DU1NSdWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9D
U1NSdWxlLmNwcAkocmV2aXNpb24gMTg0NTgpCisrKyBXZWJDb3JlL2Nzcy9DU1NSdWxlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjAsMTAgKzIwLDEyIEBACiAgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCiAgKiBCb3N0b24s
IE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLworCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiQ1NTUnVsZS5oIgogCiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOSwxMyArNDEsMTMg
QEAgQ1NTUnVsZSogQ1NTUnVsZTo6cGFyZW50UnVsZSgpIGNvbnN0CiAKIFN0cmluZyBDU1NSdWxl
Ojpjc3NUZXh0KCkgY29uc3QKIHsKLSAgICAvLyAjIyMKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50
IQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotdm9pZCBDU1NSdWxlOjpzZXRDc3NUZXh0KFN0
cmluZyAvKnN0ciovKQordm9pZCBDU1NSdWxlOjpzZXRDc3NUZXh0KFN0cmluZyAvKmNzc1RleHQq
LywgRXhjZXB0aW9uQ29kZSYgLyplYyovKQogewotICAgIC8vICMjIworICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQhCiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUv
Y3NzL0NTU1J1bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NSdWxlLmgJKHJldmlz
aW9uIDE4NDU4KQorKysgV2ViQ29yZS9jc3MvQ1NTUnVsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MSw4ICsyMSw4IEBACiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLwogCi0jaWZu
ZGVmIENTU1J1bGVfSAotI2RlZmluZSBDU1NSdWxlX0gKKyNpZm5kZWYgQ1NTUnVsZV9oCisjZGVm
aW5lIENTU1J1bGVfaAogCiAjaW5jbHVkZSAiU3R5bGVCYXNlLmgiCiAKQEAgLTMwLDggKzMwLDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NTdHlsZVNoZWV0OwogCi1jbGFzcyBD
U1NSdWxlIDogcHVibGljIFN0eWxlQmFzZQotewordHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsK
KworY2xhc3MgQ1NTUnVsZSA6IHB1YmxpYyBTdHlsZUJhc2UgewogcHVibGljOgogICAgIGVudW0g
Q1NTUnVsZVR5cGUgeyAKICAgICAgICAgVU5LTk9XTl9SVUxFLCAKQEAgLTQyLDIyICs0MywyMyBA
QCBwdWJsaWM6CiAgICAgICAgIEZPTlRfRkFDRV9SVUxFLCAKICAgICAgICAgUEFHRV9SVUxFIAog
ICAgIH07Ci0gICAgCi0gICAgQ1NTUnVsZShTdHlsZUJhc2UqIHBhcmVudCkgOiBTdHlsZUJhc2Uo
cGFyZW50KSwgbV90eXBlKFVOS05PV05fUlVMRSkgeyB9CisKKyAgICBDU1NSdWxlKFN0eWxlQmFz
ZSogcGFyZW50KQorICAgICAgICA6IFN0eWxlQmFzZShwYXJlbnQpCisgICAgeworICAgIH0KIAog
ICAgIHZpcnR1YWwgYm9vbCBpc1J1bGUoKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdW5zaWduZWQg
c2hvcnQgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorCisgICAgdmlydHVhbCB1bnNp
Z25lZCBzaG9ydCB0eXBlKCkgY29uc3QgPSAwOwogCiAgICAgQ1NTU3R5bGVTaGVldCogcGFyZW50
U3R5bGVTaGVldCgpIGNvbnN0OwogICAgIENTU1J1bGUqIHBhcmVudFJ1bGUoKSBjb25zdDsKIAog
ICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKLSAgICB2b2lkIHNldENzc1RleHQo
U3RyaW5nIHN0cik7Ci0KLXByb3RlY3RlZDoKLSAgICBDU1NSdWxlVHlwZSBtX3R5cGU7CisgICAg
dmlydHVhbCB2b2lkIHNldENzc1RleHQoU3RyaW5nLCBFeGNlcHRpb25Db2RlJik7CiB9OwogCi19
IC8vIG5hbWVzcGFjZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAv
LyBDU1NSdWxlX2gKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1J1bGUuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvY3NzL0NTU1J1bGUuaWRsCShyZXZpc2lvbiAxODQ1OCkKKysrIFdlYkNvcmUvY3Nz
L0NTU1J1bGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw2IEBAIG1vZHVsZSBjc3Mg
ewogCiAgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKICAgICBpbnRlcmZhY2UgW0xl
Z2FjeVBhcmVudD1LSlM6OkRPTUNTU1J1bGUsIEdlbmVyYXRlQ29uc3RydWN0b3IsIE9iakNDdXN0
b21JbnRlcm5hbEltcGxdIENTU1J1bGUgewotCiAgICAgICAgIC8vIFJ1bGVUeXBlCiAgICAgICAg
IGNvbnN0IHVuc2lnbmVkIHNob3J0IFVOS05PV05fUlVMRSA9IDA7CiAgICAgICAgIGNvbnN0IHVu
c2lnbmVkIHNob3J0IFNUWUxFX1JVTEUgPSAxOwpAQCAtMzUsMTQgKzM0LDEyIEBAIG1vZHVsZSBj
c3MgewogI2lmICFkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpCiAgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCAgIHR5cGU7CiAKLSAgICAgICAgICAgICAgICAgLy8g
RklYTUU6IERPTSBzcGVjIHNheXMgdGhhdCB0aGlzIGNhbiByYWlzZSBhbgotICAgICAgICAgICAg
ICAgICAvLyBleGNlcHRpb24gb24gc2V0dGluZy4KICAgICAgICAgICAgICAgICAgYXR0cmlidXRl
IERPTVN0cmluZyAgICAgICAgY3NzVGV4dAotICAgICAgICAgICAgICAgICAgICAgLypzZXR0ZXIg
cmFpc2VzIChET01FeGNlcHRpb24pKi87CisgICAgICAgICAgICAgICAgICAgICBzZXR0ZXIgcmFp
c2VzIChET01FeGNlcHRpb24pOwogCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NTdHls
ZVNoZWV0ICAgIHBhcmVudFN0eWxlU2hlZXQ7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBD
U1NSdWxlICAgICAgICAgIHBhcmVudFJ1bGU7CiAjZW5kaWYKLQogICAgIH07CisKIH0KSW5kZXg6
IFdlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVSdWxlLmNwcAkocmV2aXNpb24gMTg0NTgpCisrKyBXZWJDb3JlL2Nzcy9DU1NTdHls
ZVJ1bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCwxMSArMjAsMTMgQEAKICAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwK
ICAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogICovCisKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJDU1NTdHlsZVJ1bGUuaCIKIAogI2luY2x1ZGUgIkNTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKKyNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzIsNyArMzQsNiBAQCBD
U1NTdHlsZVJ1bGU6OkNTU1N0eWxlUnVsZShTdHlsZUJhc2UqIHBhCiAgICAgOiBDU1NSdWxlKHBh
cmVudCkKICAgICAsIG1fc2VsZWN0b3IoMCkKIHsKLSAgICBtX3R5cGUgPSBTVFlMRV9SVUxFOwog
fQogCiBDU1NTdHlsZVJ1bGU6On5DU1NTdHlsZVJ1bGUoKQpAQCAtNTYsMjUgKzU3LDI0IEBAIFN0
cmluZyBDU1NTdHlsZVJ1bGU6OnNlbGVjdG9yVGV4dCgpIGNvbnMKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKLXZvaWQgQ1NTU3R5bGVSdWxlOjpzZXRTZWxlY3RvclRleHQoU3RyaW5nIC8qc3Ry
Ki8pCit2b2lkIENTU1N0eWxlUnVsZTo6c2V0U2VsZWN0b3JUZXh0KFN0cmluZyAvKnNlbGVjdG9y
VGV4dCovKQogewotICAgIC8vICMjIworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQhCiB9CiAKIFN0
cmluZyBDU1NTdHlsZVJ1bGU6OmNzc1RleHQoKSBjb25zdAogewotICAgIFN0cmluZyByZXN1bHQg
PSBzZWxlY3RvclRleHQoKTsKLSAgICAKLSAgICByZXN1bHQgKz0gIiB7ICI7Ci0gICAgcmVzdWx0
ICs9IG1fc3R5bGUtPmNzc1RleHQoKTsKLSAgICByZXN1bHQgKz0gIn0iOwotICAgIAotICAgIHJl
dHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHNlbGVjdG9yVGV4dCgpICsgIiB7ICIgKyBtX3N0eWxl
LT5jc3NUZXh0KCkgKyAifSI7CiB9CiAKLWJvb2wgQ1NTU3R5bGVSdWxlOjpwYXJzZVN0cmluZygg
Y29uc3QgU3RyaW5nICYvKnN0cmluZyovLCBib29sICkKK3ZvaWQgQ1NTU3R5bGVSdWxlOjpzZXRD
c3NUZXh0KFN0cmluZyAvKmNzc1RleHQqLywgRXhjZXB0aW9uQ29kZSYgLyplYyovKQogewotICAg
IC8vICMjIworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQhCit9CisKK2Jvb2wgQ1NTU3R5bGVSdWxl
OjpwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcmIC8qc3RyaW5nKi8sIGJvb2wgLypzdHJpY3QqLykK
K3sKKyAgICAvLyBGSVhNRQogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtODMsNCArODMsNCBA
QCB2b2lkIENTU1N0eWxlUnVsZTo6c2V0RGVjbGFyYXRpb24oUGFzc1JlCiAgICAgbV9zdHlsZSA9
IHN0eWxlOwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2Nz
cy9DU1NTdHlsZVJ1bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUu
aAkocmV2aXNpb24gMTg0NTgpCisrKyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEsOCArMjEsOCBAQAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0Eu
CiAgKi8KIAotI2lmbmRlZiBDU1NTdHlsZVJ1bGVfSAotI2RlZmluZSBDU1NTdHlsZVJ1bGVfSAor
I2lmbmRlZiBDU1NTdHlsZVJ1bGVfaAorI2RlZmluZSBDU1NTdHlsZVJ1bGVfaAogCiAjaW5jbHVk
ZSAiQ1NTUnVsZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC0zMywyMCArMzMs
MjUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b247CiBjbGFzcyBDU1NTZWxlY3RvcjsKIAotY2xhc3MgQ1NTU3R5bGVSdWxlIDogcHVibGljIENT
U1J1bGUKLXsKK2NsYXNzIENTU1N0eWxlUnVsZSA6IHB1YmxpYyBDU1NSdWxlIHsKIHB1YmxpYzoK
ICAgICBDU1NTdHlsZVJ1bGUoU3R5bGVCYXNlKiBwYXJlbnQpOwogICAgIHZpcnR1YWwgfkNTU1N0
eWxlUnVsZSgpOwogCi0gICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHN0eWxlKCkgY29u
c3QgeyByZXR1cm4gbV9zdHlsZS5nZXQoKTsgfQotCiAgICAgdmlydHVhbCBib29sIGlzU3R5bGVS
dWxlKCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25z
dDsKIAogICAgIFN0cmluZyBzZWxlY3RvclRleHQoKSBjb25zdDsKICAgICB2b2lkIHNldFNlbGVj
dG9yVGV4dChTdHJpbmcpOwogCisgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHN0eWxl
KCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZS5nZXQoKTsgfQorCisgICAgLy8gSW5oZXJpdGVkIGZy
b20gQ1NTUnVsZQorICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIFNUWUxFX1JVTEU7IH0KKworICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3NzVGV4dChTdHJpbmcsIEV4Y2VwdGlvbkNvZGUmKTsKKwor
ICAgIC8vIE5vdCBwYXJ0IG9mIHRoZSBDU1NPTQogICAgIHZpcnR1YWwgYm9vbCBwYXJzZVN0cmlu
Zyhjb25zdCBTdHJpbmcmLCBib29sID0gZmFsc2UpOwogCiAgICAgdm9pZCBzZXRTZWxlY3RvcihD
U1NTZWxlY3Rvciogc2VsZWN0b3IpIHsgbV9zZWxlY3RvciA9IHNlbGVjdG9yOyB9CkBAIC02MCw2
ICs2NSw2IEBAIHByb3RlY3RlZDoKICAgICBDU1NTZWxlY3RvciogbV9zZWxlY3RvcjsKIH07CiAK
LX0gLy8gbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlm
IC8vIENTU1N0eWxlUnVsZV9oCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NVbmtub3duUnVsZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1Vua25vd25SdWxlLmgJKHJldmlzaW9uIDE4NDU4
KQorKysgV2ViQ29yZS9jc3MvQ1NTVW5rbm93blJ1bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjEs
OCArMjEsOCBAQAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAgKi8KIAotI2lmbmRl
ZiBDU1NVbmtub3duUnVsZV9ICi0jZGVmaW5lIENTU1Vua25vd25SdWxlX0gKKyNpZm5kZWYgQ1NT
VW5rbm93blJ1bGVfaAorI2RlZmluZSBDU1NVbmtub3duUnVsZV9oCiAKICNpbmNsdWRlICJDU1NS
dWxlLmgiCiAKQEAgLTMwLDExICszMCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IENTU1Vua25vd25SdWxlIDogcHVibGljIENTU1J1bGUgewogcHVibGljOgotICAgIENTU1Vua25v
d25SdWxlKFN0eWxlQmFzZSogcGFyZW50KSA6IENTU1J1bGUocGFyZW50KSB7IH0KKyAgICBDU1NV
bmtub3duUnVsZShTdHlsZUJhc2UqIHBhcmVudCkKKyAgICAgICAgOiBDU1NSdWxlKHBhcmVudCkK
KyAgICB7CisgICAgfQogCiAgICAgdmlydHVhbCBib29sIGlzVW5rbm93blJ1bGUoKSB7IHJldHVy
biB0cnVlOyB9CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IHR5cGUoKSBjb25zdCB7IHJl
dHVybiBVTktOT1dOX1JVTEU7IH0KIH07CiAKLX0gLy8gbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlmIC8vIENTU1Vua25vd25SdWxlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12103</attachid>
            <date>2006-12-29 06:33:30 -0800</date>
            <delta_ts>2006-12-29 11:17:28 -0800</delta_ts>
            <desc>patch 2</desc>
            <filename>cssomLesser.diff</filename>
            <type>text/plain</type>
            <size>22931</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxODQ3MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjcgQEAKKzIwMDYtMTItMjkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCBm
b3IgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMTgKKyAgICAgICAg
Q2xlYW51cCBvZiBDU1NSdWxlIGFuZCBpdHMgc3ViY2xhc3NlcworCisgICAgICAgIC0gTWFrZSBD
U1NSdWxlOjp0eXBlKCkgdmlydHVhbCBpbnN0ZWFkIG9mIHVzaW5nIGEgbWVtYmVyIHZhcmlhYmxl
LgorICAgICAgICAtIEdlbmVyYWwgc3R5bGUgY2xlYW51cC4KKworICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTQ2hhcnNldFJ1bGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2hhcnNldFJ1bGU6OkNTU0NoYXJzZXRSdWxlKToK
KyAgICAgICAgKiBjc3MvQ1NTQ2hhcnNldFJ1bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0No
YXJzZXRSdWxlOjppc0NoYXJzZXRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NoYXJzZXRS
dWxlOjp0eXBlKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VSdWxlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZvbnRGYWNlUnVsZTo6Q1NTRm9udEZhY2VSdWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZvbnRGYWNlUnVsZTo6Y3NzVGV4dCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRG
YWNlUnVsZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VSdWxlOjppc0ZvbnRGYWNl
UnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVJ1bGU6OnR5cGUpOgorICAgICAg
ICAqIGNzcy9DU1NJbXBvcnRSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltcG9ydFJ1
bGU6OkNTU0ltcG9ydFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1wb3J0UnVsZTo6c2V0
Q1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbXBvcnRSdWxlOjppbnNlcnRl
ZEludG9QYXJlbnQpOgorICAgICAgICAqIGNzcy9DU1NJbXBvcnRSdWxlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NJbXBvcnRSdWxlOjppc0ltcG9ydFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTSW1wb3J0UnVsZTo6dHlwZSk6CisgICAgICAgICogY3NzL0NTU01lZGlhUnVsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NNZWRpYVJ1bGU6OkNTU01lZGlhUnVsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NNZWRpYVJ1bGU6Omluc2VydFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
TWVkaWFSdWxlOjpkZWxldGVSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU01lZGlhUnVsZTo6
Y3NzVGV4dCk6CisgICAgICAgICogY3NzL0NTU01lZGlhUnVsZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTTWVkaWFSdWxlOjppc01lZGlhUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NNZWRp
YVJ1bGU6OnR5cGUpOgorICAgICAgICAqIGNzcy9DU1NQYWdlUnVsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYWdlUnVsZTo6Q1NTUGFnZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFnZVJ1bGU6OnNlbGVjdG9yVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYWdlUnVsZTo6
c2V0U2VsZWN0b3JUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhZ2VSdWxlOjpjc3NUZXh0
KToKKyAgICAgICAgKiBjc3MvQ1NTUGFnZVJ1bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
Z2VSdWxlOjpzdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYWdlUnVsZTo6dHlwZSk6Cisg
ICAgICAgICogY3NzL0NTU1J1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUnVsZTo6Y3Nz
VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NSdWxlOjpzZXRDc3NUZXh0KToKKyAgICAgICAg
KiBjc3MvQ1NTUnVsZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUnVsZTo6KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1J1bGU6OkNTU1J1bGUpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVJ1bGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVSdWxlOjpDU1NTdHlsZVJ1bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVSdWxlOjpzZXRTZWxlY3RvclRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVSdWxlOjpjc3NUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0
eWxlUnVsZTo6cGFyc2VTdHJpbmcpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVJ1bGUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlUnVsZTo6aXNTdHlsZVJ1bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVSdWxlOjpzdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVJ1
bGU6OnR5cGUpOgorICAgICAgICAqIGNzcy9DU1NVbmtub3duUnVsZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTVW5rbm93blJ1bGU6OkNTU1Vua25vd25SdWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Vua25vd25SdWxlOjp0eXBlKToKKwogMjAwNi0xMi0yOSAgTmlrb2xhcyBaaW1tZXJtYW5u
ICA8emltbWVybWFubkBrZGUub3JnPgogCiAgICAgICAgIEJ1aWxkIGZpeGVkLCBub3QgcmV2aWV3
ZWQuIE5vdGljZWQgYnkgRGFuaWVsIE1vbGtlbnRpbi4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODQ3MykKKysrIFdlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05MDExLDE3
ICs5MDExLDE3IEBACiAJCUY1MjNEMTg0MDJERTQyRTgwMTg2MzVDQSAvKiBjc3MgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUFBMDk3OEVEMEFCQUE2RTEw
MDg3NDQ4MCAvKiBDU1NDdXJzb3JJbWFnZVZhbHVlLmNwcCAqLywKLQkJCQlBQTA5NzhFRTBBQkFB
NkUxMDA4NzQ0ODAgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oICovLAogCQkJCUE4MEU2Q0RBMEEx
OTg5Q0EwMDdGQjhDNSAvKiBDb3VudGVyLmggKi8sCiAJCQkJOTMwNzA1QzcwOUUwQzk1RjAwQjE3
RkU0IC8qIENvdW50ZXIuaWRsICovLAogCQkJCUE4MEU2Q0JCMEExOTg5Q0EwMDdGQjhDNSAvKiBD
U1NCb3JkZXJJbWFnZVZhbHVlLmNwcCAqLywKIAkJCQlBODBFNkNERDBBMTk4OUNBMDA3RkI4QzUg
LyogQ1NTQm9yZGVySW1hZ2VWYWx1ZS5oICovLAotCQkJCUE4MEU2Q0NGMEExOTg5Q0EwMDdGQjhD
NSAvKiBDU1NDaGFyc2V0UnVsZS5oICovLAogCQkJCUUxRUJCQkQzMEFBQzlCODcwMDFGRThFMiAv
KiBDU1NDaGFyc2V0UnVsZS5jcHAgKi8sCisJCQkJQTgwRTZDQ0YwQTE5ODlDQTAwN0ZCOEM1IC8q
IENTU0NoYXJzZXRSdWxlLmggKi8sCiAJCQkJODVDNTZDQUMwQUE4OUY4RTAwRDk1NzU1IC8qIENT
U0NoYXJzZXRSdWxlLmlkbCAqLywKIAkJCQlCQ0VBNDc3QzA5N0NBQUM4MDA5NEM5RTQgLyogQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCAqLywKIAkJCQlCQ0VBNDc3RDA5N0NBQUM4MDA5
NEM5RTQgLyogQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggKi8sCisJCQkJQUEwOTc4RUQw
QUJBQTZFMTAwODc0NDgwIC8qIENTU0N1cnNvckltYWdlVmFsdWUuY3BwICovLAorCQkJCUFBMDk3
OEVFMEFCQUE2RTEwMDg3NDQ4MCAvKiBDU1NDdXJzb3JJbWFnZVZhbHVlLmggKi8sCiAJCQkJQTgw
RTZDQkQwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0ZvbnRGYWNlUnVsZS5jcHAgKi8sCiAJCQkJQTgw
RTZDRDMwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0ZvbnRGYWNlUnVsZS5oICovLAogCQkJCTg1QzU2
Q0EzMEFBODlDQTQwMEQ5NTc1NSAvKiBDU1NGb250RmFjZVJ1bGUuaWRsICovLApJbmRleDogV2Vi
Q29yZS9jc3MvQ1NTQ2hhcnNldFJ1bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NT
U0NoYXJzZXRSdWxlLmNwcAkocmV2aXNpb24gMTg0NzMpCisrKyBXZWJDb3JlL2Nzcy9DU1NDaGFy
c2V0UnVsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5LDE2ICsxOSwxNiBAQAogICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMw
LAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAgKi8KKwogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkNTU0NoYXJzZXRSdWxlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotQ1NTQ2hhcnNldFJ1bGU6OkNTU0NoYXJzZXRSdWxlKFN0eWxlQmFzZSogcGFyZW50LCBjb25z
dCBTdHJpbmcmIGVuY29kaW5nKSAKK0NTU0NoYXJzZXRSdWxlOjpDU1NDaGFyc2V0UnVsZShTdHls
ZUJhc2UqIHBhcmVudCwgY29uc3QgU3RyaW5nJiBlbmNvZGluZykKICAgICA6IENTU1J1bGUocGFy
ZW50KQogICAgICwgbV9lbmNvZGluZyhlbmNvZGluZykKIHsKLSAgICBtX3R5cGUgPSBDSEFSU0VU
X1JVTEU7CiB9CiAKIENTU0NoYXJzZXRSdWxlOjp+Q1NTQ2hhcnNldFJ1bGUoKQpAQCAtNDAsNCAr
NDAsNCBAQCBTdHJpbmcgQ1NTQ2hhcnNldFJ1bGU6OmNzc1RleHQoKSBjb25zdAogICAgIHJldHVy
biAiQGNoYXJzZXQgXCIiICsgbV9lbmNvZGluZyArICJcIjsiOwogfQogCi19Cit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NDaGFyc2V0UnVsZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0NoYXJzZXRSdWxlLmgJKHJldmlzaW9uIDE4NDczKQorKysg
V2ViQ29yZS9jc3MvQ1NTQ2hhcnNldFJ1bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsMzAgKzIx
LDM1IEBACiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLwogCi0jaWZuZGVmIENT
U0NoYXJzZXRSdWxlX0gKLSNkZWZpbmUgQ1NTQ2hhcnNldFJ1bGVfSAorI2lmbmRlZiBDU1NDaGFy
c2V0UnVsZV9oCisjZGVmaW5lIENTU0NoYXJzZXRSdWxlX2gKIAogI2luY2x1ZGUgIkNTU1J1bGUu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIENTU0NoYXJzZXRSdWxlIDogcHVibGljIENTU1J1bGUKLXsKK2NsYXNzIENTU0NoYXJz
ZXRSdWxlIDogcHVibGljIENTU1J1bGUgewogcHVibGljOgogICAgIENTU0NoYXJzZXRSdWxlKFN0
eWxlQmFzZSogcGFyZW50LCBjb25zdCBTdHJpbmcmIGVuY29kaW5nKTsKICAgICB2aXJ0dWFsIH5D
U1NDaGFyc2V0UnVsZSgpOwogCiAgICAgdmlydHVhbCBib29sIGlzQ2hhcnNldFJ1bGUoKSB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0OwogCiAgICAg
U3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGluZzsgfQorCisgICAgLy8g
SW5oZXJpdGVkIGZyb20gQ1NTUnVsZQorICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIENIQVJTRVRfUlVMRTsgfQorCisgICAgdmlydHVhbCBTdHJpbmcgY3Nz
VGV4dCgpIGNvbnN0OworCisgICAgLy8gTm90IHBhcnQgb2YgdGhlIENTU09NCiAgICAgdm9pZCBz
ZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmIGVuY29kaW5nKSB7IG1fZW5jb2RpbmcgPSBlbmNvZGlu
ZzsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgU3RyaW5nIG1fZW5jb2Rpbmc7CiB9OwogCi19IC8vIG5h
bWVzcGFjZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBDU1ND
aGFyc2V0UnVsZV9oCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NGb250RmFjZVJ1bGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlUnVsZS5jcHAJKHJldmlzaW9uIDE4NDcz
KQorKysgV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VSdWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjAsNiArMjAsNyBAQAogICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkg
VGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0Eu
CiAgKi8KKwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlUnVsZS5o
IgogCkBAIC0zMCwxMSArMzEsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQ1NTRm9udEZhY2VS
dWxlOjpDU1NGb250RmFjZVJ1bGUoU3R5bGVCYXNlKiBwYXJlbnQpCiAgICAgOiBDU1NSdWxlKHBh
cmVudCkKIHsKLSAgICBtX3R5cGUgPSBGT05UX0ZBQ0VfUlVMRTsKIH0KIAogQ1NTRm9udEZhY2VS
dWxlOjp+Q1NTRm9udEZhY2VSdWxlKCkKIHsKIH0KIAorU3RyaW5nIENTU0ZvbnRGYWNlUnVsZTo6
Y3NzVGV4dCgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCEKKyAgICByZXR1cm4g
U3RyaW5nKCk7CiB9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlUnVsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
UnVsZS5oCShyZXZpc2lvbiAxODQ3MykKKysrIFdlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlUnVsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMSw4ICsyMSw4IEBACiAgKiBCb3N0b24sIE1BIDAyMTExLTEz
MDcsIFVTQS4KICAqLwogCi0jaWZuZGVmIENTU0ZvbnRGYWNlUnVsZV9ICi0jZGVmaW5lIENTU0Zv
bnRGYWNlUnVsZV9ICisjaWZuZGVmIENTU0ZvbnRGYWNlUnVsZV9oCisjZGVmaW5lIENTU0ZvbnRG
YWNlUnVsZV9oCiAKICNpbmNsdWRlICJDU1NSdWxlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgpAQCAtMzEsMjAgKzMxLDI0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb247CiAKLWNsYXNzIENTU0ZvbnRGYWNlUnVsZSA6IHB1YmxpYyBD
U1NSdWxlCi17CitjbGFzcyBDU1NGb250RmFjZVJ1bGUgOiBwdWJsaWMgQ1NTUnVsZSB7CiBwdWJs
aWM6CiAgICAgQ1NTRm9udEZhY2VSdWxlKFN0eWxlQmFzZSogcGFyZW50KTsKICAgICB2aXJ0dWFs
IH5DU1NGb250RmFjZVJ1bGUoKTsKIAorICAgIHZpcnR1YWwgYm9vbCBpc0ZvbnRGYWNlUnVsZSgp
IHsgcmV0dXJuIHRydWU7IH0KKwogICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHls
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGUuZ2V0KCk7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBp
c0ZvbnRGYWNlUnVsZSgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICAvLyBJbmhlcml0ZWQgZnJvbSBD
U1NSdWxlCisgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCB0eXBlKCkgY29uc3QgeyByZXR1cm4g
Rk9OVF9GQUNFX1JVTEU7IH0KKworICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsK
IAogcHJvdGVjdGVkOgogICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gbV9z
dHlsZTsKIH07CiAKLX0gLy8gbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNl
bmRpZgorI2VuZGlmIC8vIENTU0ZvbnRGYWNlUnVsZV9oCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NJ
bXBvcnRSdWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NJbXBvcnRSdWxlLmNw
cAkocmV2aXNpb24gMTg0NzMpCisrKyBXZWJDb3JlL2Nzcy9DU1NJbXBvcnRSdWxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjAsNiArMjAsNyBAQAogICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAogICogQm9zdG9uLCBNQSAw
MjExMS0xMzA3LCBVU0EuCiAgKi8KKwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNT
U0ltcG9ydFJ1bGUuaCIKIApAQCAtMzksOCArNDAsNiBAQCBDU1NJbXBvcnRSdWxlOjpDU1NJbXBv
cnRSdWxlKFN0eWxlQmFzZSogCiAgICAgLCBtX2NhY2hlZFNoZWV0KDApCiAgICAgLCBtX2xvYWRp
bmcoZmFsc2UpCiB7Ci0gICAgbV90eXBlID0gSU1QT1JUX1JVTEU7Ci0KICAgICBpZiAobV9sc3RN
ZWRpYSkKICAgICAgICAgbV9sc3RNZWRpYS0+c2V0UGFyZW50KHRoaXMpOwogICAgIGVsc2UKQEAg
LTU3LDEzICs1NiwxMyBAQCBDU1NJbXBvcnRSdWxlOjp+Q1NTSW1wb3J0UnVsZSgpCiAgICAgICAg
IG1fY2FjaGVkU2hlZXQtPmRlcmVmKHRoaXMpOwogfQogCi12b2lkIENTU0ltcG9ydFJ1bGU6OnNl
dENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nICZ1cmwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwg
Y29uc3QgU3RyaW5nICZzaGVldCkKK3ZvaWQgQ1NTSW1wb3J0UnVsZTo6c2V0Q1NTU3R5bGVTaGVl
dChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBTdHJpbmcm
IHNoZWV0KQogewogICAgIGlmIChtX3N0eWxlU2hlZXQpCiAgICAgICAgIG1fc3R5bGVTaGVldC0+
c2V0UGFyZW50KDApOwogICAgIG1fc3R5bGVTaGVldCA9IG5ldyBDU1NTdHlsZVNoZWV0KHRoaXMs
IHVybCwgY2hhcnNldCk7CiAKLSAgICBDU1NTdHlsZVNoZWV0ICpwYXJlbnQgPSBwYXJlbnRTdHls
ZVNoZWV0KCk7CisgICAgQ1NTU3R5bGVTaGVldCogcGFyZW50ID0gcGFyZW50U3R5bGVTaGVldCgp
OwogICAgIG1fc3R5bGVTaGVldC0+cGFyc2VTdHJpbmcoc2hlZXQsICFwYXJlbnQgfHwgcGFyZW50
LT51c2VTdHJpY3RQYXJzaW5nKCkpOwogICAgIG1fbG9hZGluZyA9IGZhbHNlOwogCkBAIC05NSwx
MCArOTQsMTEgQEAgdm9pZCBDU1NJbXBvcnRSdWxlOjppbnNlcnRlZEludG9QYXJlbnQoKQogCiAg
ICAgLy8gQ2hlY2sgZm9yIGEgY3ljbGUgaW4gb3VyIGltcG9ydCBjaGFpbi4gIElmIHdlIGVuY291
bnRlciBhIHN0eWxlc2hlZXQKICAgICAvLyBpbiBvdXIgcGFyZW50IGNoYWluIHdpdGggdGhlIHNh
bWUgVVJMLCB0aGVuIGp1c3QgYmFpbC4KLSAgICBmb3IgKHBhcmVudCA9IHN0YXRpY19jYXN0PFN0
eWxlQmFzZSo+KHRoaXMpLT5wYXJlbnQoKTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVu
dCgpKQorICAgIGZvciAocGFyZW50ID0gc3RhdGljX2Nhc3Q8U3R5bGVCYXNlKj4odGhpcyktPnBh
cmVudCgpOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50KCkpIHsKICAgICAgICAgaWYg
KGFic0hyZWYgPT0gcGFyZW50LT5iYXNlVVJMKCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAg
CisgICAgfQorCiAgICAgbV9jYWNoZWRTaGVldCA9IGRvY0xvYWRlci0+cmVxdWVzdENTU1N0eWxl
U2hlZXQoYWJzSHJlZiwgcGFyZW50U2hlZXQtPmNoYXJzZXQoKSk7CiAgICAgaWYgKG1fY2FjaGVk
U2hlZXQpIHsKICAgICAgICAgLy8gaWYgdGhlIGltcG9ydCBydWxlIGlzIGlzc3VlZCBkeW5hbWlj
YWxseSwgdGhlIHNoZWV0IG1heSBiZQpAQCAtMTI2LDQgKzEyNiw0IEBAIFN0cmluZyBDU1NJbXBv
cnRSdWxlOjpjc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi19Cit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NJbXBvcnRSdWxlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5oCShyZXZpc2lvbiAxODQ3MykK
KysrIFdlYkNvcmUvY3NzL0NTU0ltcG9ydFJ1bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsOCAr
MjEsOCBAQAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAgKi8KIAotI2lmbmRlZiBD
U1NJbXBvcnRSdWxlX0gKLSNkZWZpbmUgQ1NTSW1wb3J0UnVsZV9ICisjaWZuZGVmIENTU0ltcG9y
dFJ1bGVfaAorI2RlZmluZSBDU1NJbXBvcnRSdWxlX2gKIAogI2luY2x1ZGUgIkNTU1J1bGUuaCIK
ICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgpAQCAtMzMsMTkgKzMzLDIzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7CiBjbGFzcyBNZWRp
YUxpc3Q7CiAKLWNsYXNzIENTU0ltcG9ydFJ1bGUgOiBwdWJsaWMgQ1NTUnVsZSwgcHVibGljIENh
Y2hlZFJlc291cmNlQ2xpZW50Ci17CitjbGFzcyBDU1NJbXBvcnRSdWxlIDogcHVibGljIENTU1J1
bGUsIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgQ1NTSW1wb3J0
UnVsZShTdHlsZUJhc2UqIHBhcmVudCwgY29uc3QgU3RyaW5nJiBocmVmLCBNZWRpYUxpc3QqKTsK
ICAgICB2aXJ0dWFsIH5DU1NJbXBvcnRSdWxlKCk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbXBv
cnRSdWxlKCkgeyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgU3RyaW5nIGhyZWYoKSBjb25zdCB7IHJl
dHVybiBtX3N0ckhyZWY7IH0KICAgICBNZWRpYUxpc3QqIG1lZGlhKCkgY29uc3QgeyByZXR1cm4g
bV9sc3RNZWRpYS5nZXQoKTsgfQogICAgIENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQoKSBjb25z
dCB7IHJldHVybiBtX3N0eWxlU2hlZXQuZ2V0KCk7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc0lt
cG9ydFJ1bGUoKSB7IHJldHVybiB0cnVlOyB9CisgICAgLy8gSW5oZXJpdGVkIGZyb20gQ1NTUnVs
ZQorICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIElNUE9S
VF9SVUxFOyB9CisKICAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7Ci0gIAorCisg
ICAgLy8gTm90IHBhcnQgb2YgdGhlIENTU09NCiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdDsK
IAogICAgIC8vIGZyb20gQ2FjaGVkUmVzb3VyY2VDbGllbnQKQEAgLTYxLDYgKzY1LDYgQEAgcHJv
dGVjdGVkOgogICAgIGJvb2wgbV9sb2FkaW5nOwogfTsKIAotfSAvLyBuYW1lc3BhY2UKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8gQ1NTSW1wb3J0UnVsZV9oCklu
ZGV4OiBXZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
Y3NzL0NTU01lZGlhUnVsZS5jcHAJKHJldmlzaW9uIDE4NDczKQorKysgV2ViQ29yZS9jc3MvQ1NT
TWVkaWFSdWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQCBDU1NNZWRpYVJ1
bGU6OkNTU01lZGlhUnVsZShTdHlsZUJhc2UqIHBhCiAgICAgLCBtX2xzdE1lZGlhKG1lZGlhTGlz
dCkKICAgICAsIG1fbHN0Q1NTUnVsZXMocnVsZUxpc3QpCiB7Ci0gICAgbV90eXBlID0gTUVESUFf
UlVMRTsKIH0KIAogQ1NTTWVkaWFSdWxlOjpDU1NNZWRpYVJ1bGUoU3R5bGVCYXNlKiBwYXJlbnQp
CkBAIC00Nyw3ICs0Niw2IEBAIENTU01lZGlhUnVsZTo6Q1NTTWVkaWFSdWxlKFN0eWxlQmFzZSog
cGEKICAgICAsIG1fbHN0Q1NTUnVsZXMobmV3IENTU1J1bGVMaXN0KCkpCiAKIHsKLSAgICBtX3R5
cGUgPSBNRURJQV9SVUxFOwogfQogCiBDU1NNZWRpYVJ1bGU6OkNTU01lZGlhUnVsZShTdHlsZUJh
c2UqIHBhcmVudCwgY29uc3QgU3RyaW5nICZtZWRpYSkKQEAgLTU1LDcgKzUzLDYgQEAgQ1NTTWVk
aWFSdWxlOjpDU1NNZWRpYVJ1bGUoU3R5bGVCYXNlKiBwYQogICAgICwgbV9sc3RNZWRpYShuZXcg
TWVkaWFMaXN0KHRoaXMsIG1lZGlhKSkKICAgICAsIG1fbHN0Q1NTUnVsZXMobmV3IENTU1J1bGVM
aXN0KCkpCiB7Ci0gICAgbV90eXBlID0gTUVESUFfUlVMRTsKIH0KIAogQ1NTTWVkaWFSdWxlOjp+
Q1NTTWVkaWFSdWxlKCkKQEAgLTk4LDcgKzk1LDcgQEAgdW5zaWduZWQgQ1NTTWVkaWFSdWxlOjpp
bnNlcnRSdWxlKGNvbnN0IAogICAgICAgICAvLyBAbWVkaWEgcnVsZS4gIFRoZXkgYXJlIGN1cnJl
bnRseSBub3QgZ2V0dGluZyBwYXJzZWQsIHJlc3VsdGluZyBpbiBhIFNZTlRBWF9FUlIKICAgICAg
ICAgLy8gdG8gZ2V0IHJhaXNlZCBhYm92ZS4KIAotICAgICAgICAvLyBISUVSQVJDSFlfUkVRVUVT
VF9FUlI6IFJhaXNlZCBpZiB0aGUgcnVsZSBjYW5ub3QgYmUgaW5zZXJ0ZWQgYXQgdGhlIHNwZWNp
ZmllZCAKKyAgICAgICAgLy8gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOiBSYWlzZWQgaWYgdGhlIHJ1
bGUgY2Fubm90IGJlIGluc2VydGVkIGF0IHRoZSBzcGVjaWZpZWQKICAgICAgICAgLy8gaW5kZXgs
IGUuZy4sIGlmIGFuIEBpbXBvcnQgcnVsZSBpcyBpbnNlcnRlZCBhZnRlciBhIHN0YW5kYXJkIHJ1
bGUgc2V0IG9yIG90aGVyCiAgICAgICAgIC8vIGF0LXJ1bGUuCiAgICAgICAgIGVjID0gSElFUkFS
Q0hZX1JFUVVFU1RfRVJSOwpAQCAtMTE3LDcgKzExNCw3IEBAIHVuc2lnbmVkIENTU01lZGlhUnVs
ZTo6aW5zZXJ0UnVsZShjb25zdCAKIHZvaWQgQ1NTTWVkaWFSdWxlOjpkZWxldGVSdWxlKHVuc2ln
bmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoaW5kZXggPj0gbV9sc3RD
U1NSdWxlcy0+bGVuZ3RoKCkpIHsKLSAgICAgICAgLy8gSU5ERVhfU0laRV9FUlI6IFJhaXNlZCBp
ZiB0aGUgc3BlY2lmaWVkIGluZGV4IGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSAKKyAgICAgICAg
Ly8gSU5ERVhfU0laRV9FUlI6IFJhaXNlZCBpZiB0aGUgc3BlY2lmaWVkIGluZGV4IGRvZXMgbm90
IGNvcnJlc3BvbmQgdG8gYQogICAgICAgICAvLyBydWxlIGluIHRoZSBtZWRpYSBydWxlIGxpc3Qu
CiAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CiAgICAgICAgIHJldHVybjsKQEAgLTEzNyw3
ICsxMzQsNyBAQCBTdHJpbmcgQ1NTTWVkaWFSdWxlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAg
cmVzdWx0ICs9ICIgIjsKICAgICB9CiAgICAgcmVzdWx0ICs9ICJ7IFxuIjsKLSAgICAKKwogICAg
IGlmIChtX2xzdENTU1J1bGVzKSB7CiAgICAgICAgIHVuc2lnbmVkIGxlbiA9IG1fbHN0Q1NTUnVs
ZXMtPmxlbmd0aCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuOyBpKysp
IHsKQEAgLTE0Niw4ICsxNDMsOSBAQCBTdHJpbmcgQ1NTTWVkaWFSdWxlOjpjc3NUZXh0KCkgY29u
c3QKICAgICAgICAgICAgIHJlc3VsdCArPSAiXG4iOwogICAgICAgICB9CiAgICAgfQotICAgIAor
CiAgICAgcmVzdWx0ICs9ICJ9IjsKICAgICByZXR1cm4gcmVzdWx0OwogfQotfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuaAkocmV2aXNpb24gMTg0NzMpCisrKyBX
ZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsOCArMjIsOCBA
QAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAgKi8KIAotI2lmbmRlZiBDU1NNZWRp
YVJ1bGVfSAotI2RlZmluZSBDU1NNZWRpYVJ1bGVfSAorI2lmbmRlZiBDU1NNZWRpYVJ1bGVfaAor
I2RlZmluZSBDU1NNZWRpYVJ1bGVfaAogCiAjaW5jbHVkZSAiQ1NTUnVsZS5oIgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KQEAgLTMzLDI2ICszMywyNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBDU1NSdWxlTGlzdDsKIGNsYXNzIE1lZGlhTGlzdDsKIAotdHlwZWRlZiBpbnQgRXhjZXB0
aW9uQ29kZTsKLQotY2xhc3MgQ1NTTWVkaWFSdWxlIDogcHVibGljIENTU1J1bGUKLXsKK2NsYXNz
IENTU01lZGlhUnVsZSA6IHB1YmxpYyBDU1NSdWxlIHsKIHB1YmxpYzoKICAgICBDU1NNZWRpYVJ1
bGUoU3R5bGVCYXNlKiBwYXJlbnQpOwogICAgIENTU01lZGlhUnVsZShTdHlsZUJhc2UqIHBhcmVu
dCwgY29uc3QgU3RyaW5nICZtZWRpYSk7CiAgICAgQ1NTTWVkaWFSdWxlKFN0eWxlQmFzZSogcGFy
ZW50LCBNZWRpYUxpc3QqIG1lZGlhTGlzdCwgQ1NTUnVsZUxpc3QqIHJ1bGVMaXN0KTsKICAgICB2
aXJ0dWFsIH5DU1NNZWRpYVJ1bGUoKTsKIAorICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhUnVsZSgp
IHsgcmV0dXJuIHRydWU7IH0KKwogICAgIE1lZGlhTGlzdCogbWVkaWEoKSBjb25zdCB7IHJldHVy
biBtX2xzdE1lZGlhLmdldCgpOyB9CiAgICAgQ1NTUnVsZUxpc3QqIGNzc1J1bGVzKCkgeyByZXR1
cm4gbV9sc3RDU1NSdWxlcy5nZXQoKTsgfQogCiAgICAgdW5zaWduZWQgaW5zZXJ0UnVsZShjb25z
dCBTdHJpbmcmIHJ1bGUsIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9p
ZCBkZWxldGVSdWxlKHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgaXNNZWRpYVJ1bGUoKSB7IHJldHVybiB0cnVlOyB9CisgICAgLy8gSW5oZXJpdGVk
IGZyb20gQ1NTUnVsZQorICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIE1FRElBX1JVTEU7IH0KKwogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25z
dDsKIAotICAgIC8qIE5vdCBwYXJ0IG9mIHRoZSBET00gKi8KKyAgICAvLyBOb3QgcGFydCBvZiB0
aGUgQ1NTT00KICAgICB1bnNpZ25lZCBhcHBlbmQoQ1NTUnVsZSopOwogCiBwcm90ZWN0ZWQ6CkBA
IC02MCw2ICs2MSw2IEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8Q1NTUnVsZUxpc3Q+IG1fbHN0
Q1NTUnVsZXM7CiB9OwogCi19IC8vIG5hbWVzcGFjZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
Ci0jZW5kaWYKKyNlbmRpZiAvLyBDU1NNZWRpYVJ1bGVfaApJbmRleDogV2ViQ29yZS9jc3MvQ1NT
UGFnZVJ1bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1BhZ2VSdWxlLmNwcAko
cmV2aXNpb24gMTg0NzMpCisrKyBXZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIwLDYgKzIwLDcgQEAKICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKICAqIEJvc3RvbiwgTUEgMDIxMTEt
MTMwNywgVVNBLgogICovCisKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NQYWdl
UnVsZS5oIgogCkBAIC0zMCw3ICszMSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIENTU1BhZ2VS
dWxlOjpDU1NQYWdlUnVsZShTdHlsZUJhc2UqIHBhcmVudCkKICAgICA6IENTU1J1bGUocGFyZW50
KQogewotICAgIG1fdHlwZSA9IFBBR0VfUlVMRTsKIH0KIAogQ1NTUGFnZVJ1bGU6On5DU1NQYWdl
UnVsZSgpCkBAIC0zOSwxMyArMzksMTkgQEAgQ1NTUGFnZVJ1bGU6On5DU1NQYWdlUnVsZSgpCiAK
IFN0cmluZyBDU1NQYWdlUnVsZTo6c2VsZWN0b3JUZXh0KCkgY29uc3QKIHsKLSAgICAvLyAjIyMK
KyAgICAvLyBGSVhNRTogSW1wbGVtZW50IQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotdm9p
ZCBDU1NQYWdlUnVsZTo6c2V0U2VsZWN0b3JUZXh0KGNvbnN0IFN0cmluZyYgLypzdHIqLykKK3Zv
aWQgQ1NTUGFnZVJ1bGU6OnNldFNlbGVjdG9yVGV4dChjb25zdCBTdHJpbmcmIC8qc2VsZWN0b3JU
ZXh0Ki8pCiB7Ci0gICAgLy8gIyMjCisgICAgLy8gRklYTUU6IEltcGxlbWVudCEKIH0KIAorU3Ry
aW5nIENTU1BhZ2VSdWxlOjpjc3NUZXh0KCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IQorICAgIHJldHVybiBTdHJpbmcoKTsKIH0KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogV2ViQ29yZS9jc3MvQ1NTUGFnZVJ1bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nz
cy9DU1NQYWdlUnVsZS5oCShyZXZpc2lvbiAxODQ3MykKKysrIFdlYkNvcmUvY3NzL0NTU1BhZ2VS
dWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDggKzIxLDggQEAKICAqIEJvc3RvbiwgTUEgMDIx
MTEtMTMwNywgVVNBLgogICovCiAKLSNpZm5kZWYgQ1NTUGFnZVJ1bGVfSAotI2RlZmluZSBDU1NQ
YWdlUnVsZV9ICisjaWZuZGVmIENTU1BhZ2VSdWxlX2gKKyNkZWZpbmUgQ1NTUGFnZVJ1bGVfaAog
CiAjaW5jbHVkZSAiQ1NTUnVsZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTMxLDIz
ICszMSwyNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uOwogCi1jbGFzcyBDU1NQYWdlUnVsZSA6IHB1YmxpYyBDU1NSdWxlCi17CitjbGFz
cyBDU1NQYWdlUnVsZSA6IHB1YmxpYyBDU1NSdWxlIHsKIHB1YmxpYzoKICAgICBDU1NQYWdlUnVs
ZShTdHlsZUJhc2UqIHBhcmVudCk7CiAgICAgdmlydHVhbCB+Q1NTUGFnZVJ1bGUoKTsKIAotICAg
IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5
bGUuZ2V0KCk7IH0KLQogICAgIHZpcnR1YWwgYm9vbCBpc1BhZ2VSdWxlKCkgeyByZXR1cm4gdHJ1
ZTsgfQogCiAgICAgU3RyaW5nIHNlbGVjdG9yVGV4dCgpIGNvbnN0OwogICAgIHZvaWQgc2V0U2Vs
ZWN0b3JUZXh0KGNvbnN0IFN0cmluZyYpOwogCisgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24qIHN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZS5nZXQoKTsgfQorCisgICAgLy8gSW5o
ZXJpdGVkIGZyb20gQ1NTUnVsZQorICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIFBBR0VfUlVMRTsgfQorCisgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgp
IGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uPiBtX3N0eWxlOwogfTsKIAotfSAvLyBuYW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAotI2VuZGlmCisjZW5kaWYgLy8gQ1NTUGFnZVJ1bGVfaApJbmRleDogV2ViQ29yZS9jc3Mv
Q1NTUnVsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTUnVsZS5jcHAJKHJldmlz
aW9uIDE4NDczKQorKysgV2ViQ29yZS9jc3MvQ1NTUnVsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIwLDYgKzIwLDcgQEAKICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5
IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKICAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNB
LgogICovCisKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NSdWxlLmgiCiAKQEAg
LTM5LDEzICs0MCwxMyBAQCBDU1NSdWxlKiBDU1NSdWxlOjpwYXJlbnRSdWxlKCkgY29uc3QKIAog
U3RyaW5nIENTU1J1bGU6OmNzc1RleHQoKSBjb25zdAogewotICAgIC8vICMjIworICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQhCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi12b2lkIENTU1J1bGU6
OnNldENzc1RleHQoU3RyaW5nIC8qc3RyKi8pCit2b2lkIENTU1J1bGU6OnNldENzc1RleHQoU3Ry
aW5nIC8qY3NzVGV4dCovKQogewotICAgIC8vICMjIworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQh
CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1J1
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NSdWxlLmgJKHJldmlzaW9uIDE4NDcz
KQorKysgV2ViQ29yZS9jc3MvQ1NTUnVsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw4ICsyMSw4
IEBACiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLwogCi0jaWZuZGVmIENTU1J1
bGVfSAotI2RlZmluZSBDU1NSdWxlX0gKKyNpZm5kZWYgQ1NTUnVsZV9oCisjZGVmaW5lIENTU1J1
bGVfaAogCiAjaW5jbHVkZSAiU3R5bGVCYXNlLmgiCiAKQEAgLTMwLDM0ICszMCwzNCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU1N0eWxlU2hlZXQ7CiAKLWNsYXNzIENTU1J1bGUg
OiBwdWJsaWMgU3R5bGVCYXNlCi17CitjbGFzcyBDU1NSdWxlIDogcHVibGljIFN0eWxlQmFzZSB7
CiBwdWJsaWM6Ci0gICAgZW51bSBDU1NSdWxlVHlwZSB7IAotICAgICAgICBVTktOT1dOX1JVTEUs
IAotICAgICAgICBTVFlMRV9SVUxFLCAKLSAgICAgICAgQ0hBUlNFVF9SVUxFLCAKLSAgICAgICAg
SU1QT1JUX1JVTEUsIAotICAgICAgICBNRURJQV9SVUxFLCAKLSAgICAgICAgRk9OVF9GQUNFX1JV
TEUsIAotICAgICAgICBQQUdFX1JVTEUgCisgICAgZW51bSBDU1NSdWxlVHlwZSB7CisgICAgICAg
IFVOS05PV05fUlVMRSwKKyAgICAgICAgU1RZTEVfUlVMRSwKKyAgICAgICAgQ0hBUlNFVF9SVUxF
LAorICAgICAgICBJTVBPUlRfUlVMRSwKKyAgICAgICAgTUVESUFfUlVMRSwKKyAgICAgICAgRk9O
VF9GQUNFX1JVTEUsCisgICAgICAgIFBBR0VfUlVMRQogICAgIH07Ci0gICAgCi0gICAgQ1NTUnVs
ZShTdHlsZUJhc2UqIHBhcmVudCkgOiBTdHlsZUJhc2UocGFyZW50KSwgbV90eXBlKFVOS05PV05f
UlVMRSkgeyB9CisKKyAgICBDU1NSdWxlKFN0eWxlQmFzZSogcGFyZW50KQorICAgICAgICA6IFN0
eWxlQmFzZShwYXJlbnQpCisgICAgeworICAgIH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc1J1bGUo
KSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdW5zaWduZWQgc2hvcnQgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZTsgfQorCisgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCB0eXBlKCkgY29uc3Qg
PSAwOwogCiAgICAgQ1NTU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVldCgpIGNvbnN0OwogICAg
IENTU1J1bGUqIHBhcmVudFJ1bGUoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1Rl
eHQoKSBjb25zdDsKLSAgICB2b2lkIHNldENzc1RleHQoU3RyaW5nIHN0cik7Ci0KLXByb3RlY3Rl
ZDoKLSAgICBDU1NSdWxlVHlwZSBtX3R5cGU7CisgICAgdm9pZCBzZXRDc3NUZXh0KFN0cmluZyk7
CiB9OwogCi19IC8vIG5hbWVzcGFjZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYK
KyNlbmRpZiAvLyBDU1NSdWxlX2gKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmNwcAkocmV2aXNpb24gMTg0
NzMpCisrKyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MCw2ICsyMCw3IEBACiAgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBU
ZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4K
ICAqLworCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVSdWxlLmgiCiAK
QEAgLTMyLDcgKzMzLDYgQEAgQ1NTU3R5bGVSdWxlOjpDU1NTdHlsZVJ1bGUoU3R5bGVCYXNlKiBw
YQogICAgIDogQ1NTUnVsZShwYXJlbnQpCiAgICAgLCBtX3NlbGVjdG9yKDApCiB7Ci0gICAgbV90
eXBlID0gU1RZTEVfUlVMRTsKIH0KIAogQ1NTU3R5bGVSdWxlOjp+Q1NTU3R5bGVSdWxlKCkKQEAg
LTU2LDI1ICs1NiwyNSBAQCBTdHJpbmcgQ1NTU3R5bGVSdWxlOjpzZWxlY3RvclRleHQoKSBjb25z
CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi12b2lkIENTU1N0eWxlUnVsZTo6c2V0U2VsZWN0
b3JUZXh0KFN0cmluZyAvKnN0ciovKQordm9pZCBDU1NTdHlsZVJ1bGU6OnNldFNlbGVjdG9yVGV4
dChTdHJpbmcgLypzZWxlY3RvclRleHQqLykKIHsKLSAgICAvLyAjIyMKKyAgICAvLyBGSVhNRTog
SW1wbGVtZW50IQogfQogCiBTdHJpbmcgQ1NTU3R5bGVSdWxlOjpjc3NUZXh0KCkgY29uc3QKIHsK
ICAgICBTdHJpbmcgcmVzdWx0ID0gc2VsZWN0b3JUZXh0KCk7Ci0gICAgCisKICAgICByZXN1bHQg
Kz0gIiB7ICI7CiAgICAgcmVzdWx0ICs9IG1fc3R5bGUtPmNzc1RleHQoKTsKICAgICByZXN1bHQg
Kz0gIn0iOwotICAgIAorCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBDU1NTdHlsZVJ1
bGU6OnBhcnNlU3RyaW5nKCBjb25zdCBTdHJpbmcgJi8qc3RyaW5nKi8sIGJvb2wgKQorYm9vbCBD
U1NTdHlsZVJ1bGU6OnBhcnNlU3RyaW5nKGNvbnN0IFN0cmluZyYgLypzdHJpbmcqLywgYm9vbCAv
KnN0cmljdCovKQogewotICAgIC8vICMjIworICAgIC8vIEZJWE1FCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCkBAIC04Myw0ICs4Myw0IEBAIHZvaWQgQ1NTU3R5bGVSdWxlOjpzZXREZWNsYXJhdGlv
bihQYXNzUmUKICAgICBtX3N0eWxlID0gc3R5bGU7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5oCShyZXZpc2lvbiAxODQ3MykKKysrIFdlYkNvcmUvY3Nz
L0NTU1N0eWxlUnVsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw4ICsyMSw4IEBACiAgKiBCb3N0
b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLwogCi0jaWZuZGVmIENTU1N0eWxlUnVsZV9ICi0j
ZGVmaW5lIENTU1N0eWxlUnVsZV9ICisjaWZuZGVmIENTU1N0eWxlUnVsZV9oCisjZGVmaW5lIENT
U1N0eWxlUnVsZV9oCiAKICNpbmNsdWRlICJDU1NSdWxlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KQEAgLTMzLDIwICszMywyNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNzIENTU1NlbGVjdG9yOwogCi1jbGFzcyBD
U1NTdHlsZVJ1bGUgOiBwdWJsaWMgQ1NTUnVsZQoteworY2xhc3MgQ1NTU3R5bGVSdWxlIDogcHVi
bGljIENTU1J1bGUgewogcHVibGljOgogICAgIENTU1N0eWxlUnVsZShTdHlsZUJhc2UqIHBhcmVu
dCk7CiAgICAgdmlydHVhbCB+Q1NTU3R5bGVSdWxlKCk7CiAKLSAgICBDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbiogc3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlLmdldCgpOyB9Ci0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNTdHlsZVJ1bGUoKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVh
bCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0OwogCiAgICAgU3RyaW5nIHNlbGVjdG9yVGV4dCgpIGNv
bnN0OwogICAgIHZvaWQgc2V0U2VsZWN0b3JUZXh0KFN0cmluZyk7CiAKKyAgICBDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbiogc3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlLmdldCgpOyB9
CisKKyAgICAvLyBJbmhlcml0ZWQgZnJvbSBDU1NSdWxlCisgICAgdmlydHVhbCB1bnNpZ25lZCBz
aG9ydCB0eXBlKCkgY29uc3QgeyByZXR1cm4gU1RZTEVfUlVMRTsgfQorCisgICAgdmlydHVhbCBT
dHJpbmcgY3NzVGV4dCgpIGNvbnN0OworCisgICAgLy8gTm90IHBhcnQgb2YgdGhlIENTU09NCiAg
ICAgdmlydHVhbCBib29sIHBhcnNlU3RyaW5nKGNvbnN0IFN0cmluZyYsIGJvb2wgPSBmYWxzZSk7
CiAKICAgICB2b2lkIHNldFNlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWxlY3RvcikgeyBtX3NlbGVj
dG9yID0gc2VsZWN0b3I7IH0KQEAgLTYwLDYgKzY0LDYgQEAgcHJvdGVjdGVkOgogICAgIENTU1Nl
bGVjdG9yKiBtX3NlbGVjdG9yOwogfTsKIAotfSAvLyBuYW1lc3BhY2UKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8gQ1NTU3R5bGVSdWxlX2gKSW5kZXg6IFdlYkNv
cmUvY3NzL0NTU1Vua25vd25SdWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTVW5r
bm93blJ1bGUuaAkocmV2aXNpb24gMTg0NzMpCisrKyBXZWJDb3JlL2Nzcy9DU1NVbmtub3duUnVs
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw4ICsyMSw4IEBACiAgKiBCb3N0b24sIE1BIDAyMTEx
LTEzMDcsIFVTQS4KICAqLwogCi0jaWZuZGVmIENTU1Vua25vd25SdWxlX0gKLSNkZWZpbmUgQ1NT
VW5rbm93blJ1bGVfSAorI2lmbmRlZiBDU1NVbmtub3duUnVsZV9oCisjZGVmaW5lIENTU1Vua25v
d25SdWxlX2gKIAogI2luY2x1ZGUgIkNTU1J1bGUuaCIKIApAQCAtMzAsMTEgKzMwLDE2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTVW5rbm93blJ1bGUgOiBwdWJsaWMgQ1NTUnVs
ZSB7CiBwdWJsaWM6Ci0gICAgQ1NTVW5rbm93blJ1bGUoU3R5bGVCYXNlKiBwYXJlbnQpIDogQ1NT
UnVsZShwYXJlbnQpIHsgfQorICAgIENTU1Vua25vd25SdWxlKFN0eWxlQmFzZSogcGFyZW50KQor
ICAgICAgICA6IENTU1J1bGUocGFyZW50KQorICAgIHsKKyAgICB9CiAKICAgICB2aXJ0dWFsIGJv
b2wgaXNVbmtub3duUnVsZSgpIHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZpcnR1YWwgdW5zaWdu
ZWQgc2hvcnQgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIFVOS05PV05fUlVMRTsgfQogfTsKIAotfSAv
LyBuYW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8g
Q1NTVW5rbm93blJ1bGVfaAo=
</data>
<flag name="review"
          id="4466"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>