<?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>128069</bug_id>
          
          <creation_ts>2014-02-02 05:23:50 -0800</creation_ts>
          <short_desc>Remove StyleScopeResolver</short_desc>
          <delta_ts>2014-02-02 09:23:02 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>bunhere</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>974768</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-02-02 05:23:50 -0800</bug_when>
    <thetext>dead code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974770</commentid>
    <comment_count>1</comment_count>
      <attachid>222924</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-02-02 07:09:00 -0800</bug_when>
    <thetext>Created attachment 222924
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974777</commentid>
    <comment_count>2</comment_count>
      <attachid>222924</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-02-02 09:20:04 -0800</bug_when>
    <thetext>Comment on attachment 222924
patch

r=me, but please fix Windows!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974778</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-02-02 09:23:02 -0800</bug_when>
    <thetext>https://trac.webkit.org/r163263</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222924</attachid>
            <date>2014-02-02 07:09:00 -0800</date>
            <delta_ts>2014-02-02 09:20:03 -0800</delta_ts>
            <desc>patch</desc>
            <filename>scope-resolver-remove.patch</filename>
            <type>text/plain</type>
            <size>32401</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MzI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE0LTAyLTAyICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgU3R5bGVTY29wZVJl
c29sdmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjgwNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGlzIGRlYWQgY29kZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50UnVsZVNldHM6OmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50UnVsZVNldHM6OmNvbGxlY3RGZWF0dXJlcyk6CisgICAg
ICAgICogY3NzL0RvY3VtZW50UnVsZVNldHMuaDoKKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVD
b2xsZWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpFbGVt
ZW50UnVsZUNvbGxlY3Rvcik6CisgICAgICAgICogY3NzL1J1bGVTZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UnVsZVNldDo6YWRkQ2hpbGRSdWxlcyk6CisgICAgICAgICogY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cHVzaFBhcmVudEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cG9wUGFyZW50RWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpsb2NhdGVTaGFyZWRTdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQpOgorICAg
ICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjpkb2N1bWVudCk6CisgICAgICAgICogY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZVRyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OmF0dGFjaFNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OnJlc29sdmVT
aGFkb3dUcmVlKToKKwogMjAxNC0wMi0wMSAgSHVuc2VvcCBKZW9uZyAgPGhzODUuamVvbmdAc2Ft
c3VuZy5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTYzMjM0KSBEZWJ1ZyBidWlsZCBpcyBi
cm9rZW4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNjMyMzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTEwNCw3ICsxMTA0
LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGNzcy9TdHlsZVJlc29sdmVyLmNwcAogICAg
IGNzcy9TdHlsZVJ1bGUuY3BwCiAgICAgY3NzL1N0eWxlUnVsZUltcG9ydC5jcHAKLSAgICBjc3Mv
U3R5bGVTY29wZVJlc29sdmVyLmNwcAogICAgIGNzcy9TdHlsZVNoZWV0LmNwcAogICAgIGNzcy9T
dHlsZVNoZWV0Q29udGVudHMuY3BwCiAgICAgY3NzL1N0eWxlU2hlZXRMaXN0LmNwcApJbmRleDog
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNjMyMzkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yNjk0LDggKzI2
OTQsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1
bGUuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuaCBcCi0JU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlU2NvcGVSZXNvbHZlci5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVz
b2x2ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVTaGVldC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVl
dENvbnRlbnRzLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjMyMzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM3
MjQsNyArMzcyNCw2IEBACiAJCUE3QUQyRjg3MEVDODlEMDcwMDhBQjAwMiAvKiBMaW5rSGFzaC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0FEMkY4
NTBFQzg5RDA3MDA4QUIwMDIgLyogTGlua0hhc2guY3BwICovOyB9OwogCQlBN0FEMkY4ODBFQzg5
RDA3MDA4QUIwMDIgLyogTGlua0hhc2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3QUQyRjg2MEVDODlEMDcwMDhBQjAwMiAvKiBMaW5rSGFzaC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3QjZFNjlG
MEIyOTFBOTYwMEQwNTI5RiAvKiBEcmFnRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCNkU2OUQwQjI5MUE5NjAwRDA1MjlGIC8qIERyYWdEYXRh
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTdC
NzYxQTExNjFFRTUyNjAwMjA4M0QzIC8qIFN0eWxlU2NvcGVSZXNvbHZlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCNzYxOUYxNjFFRTUyNjAwMjA4
M0QzIC8qIFN0eWxlU2NvcGVSZXNvbHZlci5oICovOyB9OwogCQlBN0JCRTI2NjExQUZCM0YyMDAw
NUVBMDMgLyogSlNIVE1MTWV0ZXJFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QkJFMjY0MTFBRkIzRjIwMDA1RUEwMyAvKiBKU0hUTUxN
ZXRlckVsZW1lbnQuY3BwICovOyB9OwogCQlBN0JCRTI2NzExQUZCM0YyMDAwNUVBMDMgLyogSlNI
VE1MTWV0ZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBN0JCRTI2NTExQUZCM0YyMDAwNUVBMDMgLyogSlNIVE1MTWV0ZXJFbGVtZW50Lmgg
Ki87IH07CiAJCUE3QkY3RURGMTRDOTE3NUEwMDE0NDg5RCAvKiBJbnRlcm5hbFNldHRpbmdzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QkY3RURD
MTRDOTE3NUEwMDE0NDg5RCAvKiBJbnRlcm5hbFNldHRpbmdzLmNwcCAqLzsgfTsKQEAgLTEwNzAw
LDcgKzEwNjk5LDYgQEAKIAkJQTdCNEVBNzgxNEM5MzQ4NDAwQzhGNUJGIC8qIEpTSW50ZXJuYWxT
ZXR0aW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ludGVy
bmFsU2V0dGluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0I0RUE3OTE0
QzkzNDg0MDBDOEY1QkYgLyogSlNJbnRlcm5hbFNldHRpbmdzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTSW50ZXJuYWxTZXR0aW5ncy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBN0I2RTY5RDBCMjkxQTk2MDBEMDUyOUYgLyogRHJhZ0RhdGEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhZ0RhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQTdCNzYxOUYxNjFFRTUyNjAwMjA4M0QzIC8qIFN0eWxlU2NvcGVSZXNvbHZl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZVNjb3BlUmVzb2x2ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdCQkUyNjQxMUFGQjNGMjAwMDVFQTAz
IC8qIEpTSFRNTE1ldGVyRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0hUTUxNZXRlckVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBN0JCRTI2NTExQUZCM0YyMDAwNUVBMDMgLyogSlNIVE1MTWV0ZXJFbGVtZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTE1ldGVyRWxlbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0JFN0VERDE0QzkxNzVBMDAxNDQ4OUQgLyogTWFs
bG9jU3RhdGlzdGljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWxsb2NT
dGF0aXN0aWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTUyMSw3ICsyMTUx
OSw2IEBACiAJCQkJRTRCQkVENEIxNEZDREJBMTAwM0YwQjk4IC8qIFN0eWxlUnVsZS5oICovLAog
CQkJCUU0OTQ2RUFDMTU2RTY0REQwMEQzMjk3RiAvKiBTdHlsZVJ1bGVJbXBvcnQuY3BwICovLAog
CQkJCUU0OTQ2RUFEMTU2RTY0REQwMEQzMjk3RiAvKiBTdHlsZVJ1bGVJbXBvcnQuaCAqLywKLQkJ
CQlBN0I3NjE5RjE2MUVFNTI2MDAyMDgzRDMgLyogU3R5bGVTY29wZVJlc29sdmVyLmggKi8sCiAJ
CQkJQThFQTgwMDUwQTE5NTE2RTAwQThFRjVGIC8qIFN0eWxlU2hlZXQuY3BwICovLAogCQkJCUE4
RUE4MDA0MEExOTUxNkUwMEE4RUY1RiAvKiBTdHlsZVNoZWV0LmggKi8sCiAJCQkJODUwNjU2REMw
QUFCNDREOTAwMkQxNUMwIC8qIFN0eWxlU2hlZXQuaWRsICovLApAQCAtMjUzMzcsNyArMjUzMzQs
NiBAQAogCQkJCUUxMzk4NjY0MTU0Nzg0NzQwMDFFM0Y2NSAvKiBTdHlsZVJlc29sdmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFNEJCRUQ0RDE0RkNEQkExMDAzRjBCOTggLyogU3R5bGVSdWxlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFNDk0NkVBRjE1NkU2NEREMDBEMzI5N0YgLyogU3R5bGVSdWxl
SW1wb3J0LmggaW4gSGVhZGVycyAqLywKLQkJCQlBN0I3NjFBMTE2MUVFNTI2MDAyMDgzRDMgLyog
U3R5bGVTY29wZVJlc29sdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBODAwQzBBMTk1MTZF
MDBBOEVGNUYgLyogU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NERDRTYxODgx
MDUxRDAwM0VFREJCIC8qIFRleHRBdXRvU2l6aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEY5
RUVGMzE1NkRBMDA3MDBEMjNFN0UgLyogU3R5bGVTaGVldENvbnRlbnRzLmggaW4gSGVhZGVycyAq
LywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHAJKHJldmlzaW9u
IDE2MzIzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTMsMjQgKzkzLDE0IEBAIHZvaWQgRG9jdW1lbnRSdWxlU2V0czo6YXBw
ZW5kQXV0aG9yU3R5bGUKICAgICAgICAgQVNTRVJUKCFjc3NTaGVldC0+ZGlzYWJsZWQoKSk7CiAg
ICAgICAgIGlmIChjc3NTaGVldC0+bWVkaWFRdWVyaWVzKCkgJiYgIW1lZGl1bS0+ZXZhbChjc3NT
aGVldC0+bWVkaWFRdWVyaWVzKCksIHJlc29sdmVyKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBTdHlsZVNoZWV0Q29udGVudHMmIHNoZWV0ID0gY3NzU2hlZXQtPmNvbnRlbnRzKCk7
Ci0jaWYgRU5BQkxFKFNIQURPV19ET00pCi0gICAgICAgIGlmIChjb25zdCBDb250YWluZXJOb2Rl
KiBzY29wZSA9IFN0eWxlU2NvcGVSZXNvbHZlcjo6c2NvcGVGb3IoY3NzU2hlZXQpKSB7Ci0gICAg
ICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIGEgZGVwZW5kZW5jeSB0byBjYWxsaW5nIGEgU3R5bGVS
ZXNvbHZlcidzIG1lbWJlciBmdW5jdGlvbi4KLSAgICAgICAgICAgIC8vIElmIHdlIGNhbiBhdm9p
ZCBjYWxsaW5nIHJlc29sdmVyLT5lbnN1cmVTY29wZVJlc29sdmVyKCkgaGVyZSwgd2UgZG9uJ3Qg
aGF2ZSB0byBpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiLgotICAgICAgICAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODg5MAotICAgICAgICAgICAgcmVz
b2x2ZXItPmVuc3VyZVNjb3BlUmVzb2x2ZXIoKS0+ZW5zdXJlUnVsZVNldEZvcihzY29wZSktPmFk
ZFJ1bGVzRnJvbVNoZWV0KCZzaGVldCwgKm1lZGl1bSwgcmVzb2x2ZXIsIHNjb3BlKTsKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgbV9hdXRob3JTdHls
ZS0+YWRkUnVsZXNGcm9tU2hlZXQoJnNoZWV0LCAqbWVkaXVtLCByZXNvbHZlcik7CisgICAgICAg
IG1fYXV0aG9yU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KCZjc3NTaGVldC0+Y29udGVudHMoKSwg
Km1lZGl1bSwgcmVzb2x2ZXIpOwogICAgICAgICBpbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNvbGxl
Y3RGcm9tU3R5bGVTaGVldElmTmVlZGVkKGNzc1NoZWV0KTsKICAgICB9CiAgICAgbV9hdXRob3JT
dHlsZS0+c2hyaW5rVG9GaXQoKTsKLSAgICBjb2xsZWN0RmVhdHVyZXMoaXNWaWV3U291cmNlLCBy
ZXNvbHZlci0+c2NvcGVSZXNvbHZlcigpKTsKKyAgICBjb2xsZWN0RmVhdHVyZXMoaXNWaWV3U291
cmNlKTsKIH0KIAotdm9pZCBEb2N1bWVudFJ1bGVTZXRzOjpjb2xsZWN0RmVhdHVyZXMoYm9vbCBp
c1ZpZXdTb3VyY2UsIFN0eWxlU2NvcGVSZXNvbHZlciogc2NvcGVSZXNvbHZlcikKK3ZvaWQgRG9j
dW1lbnRSdWxlU2V0czo6Y29sbGVjdEZlYXR1cmVzKGJvb2wgaXNWaWV3U291cmNlKQogewogICAg
IG1fZmVhdHVyZXMuY2xlYXIoKTsKICAgICAvLyBDb2xsZWN0IGFsbCBpZHMgYW5kIHJ1bGVzIHVz
aW5nIHNpYmxpbmcgc2VsZWN0b3JzICg6Zmlyc3QtY2hpbGQgYW5kIHNpbWlsYXIpCkBAIC0xMjMs
OCArMTEzLDYgQEAgdm9pZCBEb2N1bWVudFJ1bGVTZXRzOjpjb2xsZWN0RmVhdHVyZXMoYgogICAg
IGlmIChpc1ZpZXdTb3VyY2UpCiAgICAgICAgIG1fZmVhdHVyZXMuYWRkKENTU0RlZmF1bHRTdHls
ZVNoZWV0czo6dmlld1NvdXJjZVN0eWxlKCktPmZlYXR1cmVzKCkpOwogCi0gICAgaWYgKHNjb3Bl
UmVzb2x2ZXIpCi0gICAgICAgIHNjb3BlUmVzb2x2ZXItPmNvbGxlY3RGZWF0dXJlc1RvKG1fZmVh
dHVyZXMpOwogICAgIGlmIChtX3VzZXJTdHlsZSkKICAgICAgICAgbV9mZWF0dXJlcy5hZGQobV91
c2VyU3R5bGUtPmZlYXR1cmVzKCkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1l
bnRSdWxlU2V0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1
bGVTZXRzLmgJKHJldmlzaW9uIDE2MzIzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVu
dFJ1bGVTZXRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDYgQEAgY2xhc3MgRG9jdW1l
bnRTdHlsZVNoZWV0Q29sbGVjdGlvbjsKIGNsYXNzIEluc3BlY3RvckNTU09NV3JhcHBlcnM7CiBj
bGFzcyBNZWRpYVF1ZXJ5RXZhbHVhdG9yOwogY2xhc3MgUnVsZVNldDsKLWNsYXNzIFN0eWxlU2Nv
cGVSZXNvbHZlcjsKIAogY2xhc3MgRG9jdW1lbnRSdWxlU2V0cyB7CiBwdWJsaWM6CkBAIC01NSw3
ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0QXV0aG9yU3R5bGUoKTsKICAgICB2b2lk
IGFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKHVuc2lnbmVkIGZpcnN0TmV3LCBjb25zdCBWZWN0b3I8
UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYsIE1lZGlhUXVlcnlFdmFsdWF0b3IqLCBJbnNwZWN0b3JD
U1NPTVdyYXBwZXJzJiwgYm9vbCBpc1ZpZXdTb3VyY2UsIFN0eWxlUmVzb2x2ZXIqKTsKIAotICAg
IHZvaWQgY29sbGVjdEZlYXR1cmVzKGJvb2wgaXNWaWV3U291cmNlLCBTdHlsZVNjb3BlUmVzb2x2
ZXIqKTsKKyAgICB2b2lkIGNvbGxlY3RGZWF0dXJlcyhib29sIGlzVmlld1NvdXJjZSk7CiAKIHBy
aXZhdGU6CiAgICAgdm9pZCBjb2xsZWN0UnVsZXNGcm9tVXNlclN0eWxlU2hlZXRzKGNvbnN0IFZl
Y3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiwgUnVsZVNldCYgdXNlclN0eWxlLCBjb25zdCBN
ZWRpYVF1ZXJ5RXZhbHVhdG9yJiwgU3R5bGVSZXNvbHZlciYpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgJKHJldmlzaW9uIDE2MzIzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw3ICszNyw2IEBAIGNsYXNzIFJlbmRlclJlZ2lvbjsKIGNsYXNzIFJ1bGVEYXRhOwogY2xhc3Mg
UnVsZVNldDsKIGNsYXNzIFNlbGVjdG9yRmlsdGVyOwotY2xhc3MgU3R5bGVTY29wZVJlc29sdmVy
OwogCiBjbGFzcyBFbGVtZW50UnVsZUNvbGxlY3RvciB7CiBwdWJsaWM6CkBAIC00NSw3ICs0NCw2
IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX3N0YXRlKHN0YXRlKQogICAgICAgICAsIG1fcnVsZVNl
dHMoc3R5bGVSZXNvbHZlci0+cnVsZVNldHMoKSkKICAgICAgICAgLCBtX3NlbGVjdG9yRmlsdGVy
KHN0eWxlUmVzb2x2ZXItPnNlbGVjdG9yRmlsdGVyKCkpCi0gICAgICAgICwgbV9zY29wZVJlc29s
dmVyKHN0eWxlUmVzb2x2ZXItPnNjb3BlUmVzb2x2ZXIoKSkKICAgICAgICAgLCBtX2lzUHJpbnRT
dHlsZShmYWxzZSkKICAgICAgICAgLCBtX3JlZ2lvbkZvclN0eWxpbmcoMCkKICAgICAgICAgLCBt
X3BzZXVkb1N0eWxlUmVxdWVzdChOT1BTRVVETykKQEAgLTkxLDcgKzg5LDYgQEAgcHJpdmF0ZToK
ICAgICBjb25zdCBTdHlsZVJlc29sdmVyOjpTdGF0ZSYgbV9zdGF0ZTsKICAgICBEb2N1bWVudFJ1
bGVTZXRzJiBtX3J1bGVTZXRzOwogICAgIFNlbGVjdG9yRmlsdGVyJiBtX3NlbGVjdG9yRmlsdGVy
OwotICAgIFN0eWxlU2NvcGVSZXNvbHZlciogbV9zY29wZVJlc29sdmVyOwogCiAgICAgYm9vbCBt
X2lzUHJpbnRTdHlsZTsKICAgICBSZW5kZXJSZWdpb24qIG1fcmVnaW9uRm9yU3R5bGluZzsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvUnVsZVNldC5jcHAJKHJldmlzaW9uIDE2MzIzOSkKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9SdWxlU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA2LDEwICszMDYsNiBAQCB2
b2lkIFJ1bGVTZXQ6OmFkZENoaWxkUnVsZXMoY29uc3QgVmVjdG9yCiAgICAgICAgICAgICBhZGRS
ZWdpb25SdWxlKHN0YXRpY19jYXN0PFN0eWxlUnVsZVJlZ2lvbio+KHJ1bGUpLCBoYXNEb2N1bWVu
dFNlY3VyaXR5T3JpZ2luKTsKICAgICAgICAgfQogI2VuZGlmCi0jaWYgRU5BQkxFKFNIQURPV19E
T00pCi0gICAgICAgIGVsc2UgaWYgKHJ1bGUtPmlzSG9zdFJ1bGUoKSkKLSAgICAgICAgICAgIHJl
c29sdmVyLT5hZGRIb3N0UnVsZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGVIb3N0Kj4ocnVsZSksIGhh
c0RvY3VtZW50U2VjdXJpdHlPcmlnaW4sIHNjb3BlKTsKLSNlbmRpZgogI2lmIEVOQUJMRShDU1Nf
REVWSUNFX0FEQVBUQVRJT04pCiAgICAgICAgIGVsc2UgaWYgKHJ1bGUtPmlzVmlld3BvcnRSdWxl
KCkgJiYgcmVzb2x2ZXIpIHsKICAgICAgICAgICAgIC8vIEB2aWV3cG9ydCBzaG91bGQgbm90IGJl
IHNjb3BlZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAJKHJldmlzaW9u
IDE2MzIzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzI4LDEwICszMjgsNiBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OnB1c2hQYXJl
bnRFbGVtZW50KEVsCiAgICAgICAgIG1fc2VsZWN0b3JGaWx0ZXIuc2V0dXBQYXJlbnRTdGFjayhw
YXJlbnQpOwogICAgIGVsc2UKICAgICAgICAgbV9zZWxlY3RvckZpbHRlci5wdXNoUGFyZW50KHBh
cmVudCk7Ci0KLSAgICAvLyBOb3RlOiBXZSBtdXN0bid0IHNraXAgU2hhZG93Um9vdCBub2RlcyBm
b3IgdGhlIHNjb3BlIHN0YWNrLgotICAgIGlmIChtX3Njb3BlUmVzb2x2ZXIpCi0gICAgICAgIG1f
c2NvcGVSZXNvbHZlci0+cHVzaChwYXJlbnQsIHBhcmVudC0+cGFyZW50T3JTaGFkb3dIb3N0Tm9k
ZSgpKTsKIH0KIAogdm9pZCBTdHlsZVJlc29sdmVyOjpwb3BQYXJlbnRFbGVtZW50KEVsZW1lbnQq
IHBhcmVudCkKQEAgLTM0MCwyMiArMzM2LDYgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpwb3BQYXJl
bnRFbGVtZW50KEVsZQogICAgIC8vIFBhdXNlIG1haW50YWluaW5nIHRoZSBzdGFjayBpbiB0aGlz
IGNhc2UuCiAgICAgaWYgKG1fc2VsZWN0b3JGaWx0ZXIucGFyZW50U3RhY2tJc0NvbnNpc3RlbnQo
cGFyZW50KSkKICAgICAgICAgbV9zZWxlY3RvckZpbHRlci5wb3BQYXJlbnQoKTsKLSAgICBpZiAo
bV9zY29wZVJlc29sdmVyKQotICAgICAgICBtX3Njb3BlUmVzb2x2ZXItPnBvcChwYXJlbnQpOwot
fQotCi12b2lkIFN0eWxlUmVzb2x2ZXI6OnB1c2hQYXJlbnRTaGFkb3dSb290KGNvbnN0IFNoYWRv
d1Jvb3QqIHNoYWRvd1Jvb3QpCi17Ci0gICAgQVNTRVJUKHNoYWRvd1Jvb3QtPmhvc3RFbGVtZW50
KCkpOwotICAgIGlmIChtX3Njb3BlUmVzb2x2ZXIpCi0gICAgICAgIG1fc2NvcGVSZXNvbHZlci0+
cHVzaChzaGFkb3dSb290LCBzaGFkb3dSb290LT5ob3N0RWxlbWVudCgpKTsKLX0KLQotdm9pZCBT
dHlsZVJlc29sdmVyOjpwb3BQYXJlbnRTaGFkb3dSb290KGNvbnN0IFNoYWRvd1Jvb3QqIHNoYWRv
d1Jvb3QpCi17Ci0gICAgQVNTRVJUKHNoYWRvd1Jvb3QtPmhvc3RFbGVtZW50KCkpOwotICAgIGlm
IChtX3Njb3BlUmVzb2x2ZXIpCi0gICAgICAgIG1fc2NvcGVSZXNvbHZlci0+cG9wKHNoYWRvd1Jv
b3QpOwogfQogCiAvLyBUaGlzIGlzIGEgc2ltcGxpZmllZCBzdHlsZSBzZXR0aW5nIGZ1bmN0aW9u
IGZvciBrZXlmcmFtZSBzdHlsZXMKQEAgLTM5NywxNSArMzc3LDYgQEAgdm9pZCBTdHlsZVJlc29s
dmVyOjpzd2VlcE1hdGNoZWRQcm9wZXJ0aQogICAgIG1fbWF0Y2hlZFByb3BlcnRpZXNDYWNoZUFk
ZGl0aW9uc1NpbmNlTGFzdFN3ZWVwID0gMDsKIH0KIAotaW5saW5lIGJvb2wgU3R5bGVSZXNvbHZl
cjo6c3R5bGVTaGFyaW5nQ2FuZGlkYXRlTWF0Y2hlc0hvc3RSdWxlcygpCi17Ci0jaWYgRU5BQkxF
KFNIQURPV19ET00pCi0gICAgcmV0dXJuIG1fc2NvcGVSZXNvbHZlciAmJiBtX3Njb3BlUmVzb2x2
ZXItPnN0eWxlU2hhcmluZ0NhbmRpZGF0ZU1hdGNoZXNIb3N0UnVsZXMobV9zdGF0ZS5lbGVtZW50
KCkpOwotI2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0KLQogYm9vbCBTdHlsZVJl
c29sdmVyOjpjbGFzc05hbWVzQWZmZWN0ZWRCeVJ1bGVzKGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcm
IGNsYXNzTmFtZXMpIGNvbnN0CiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNsYXNz
TmFtZXMuc2l6ZSgpOyArK2kpIHsKQEAgLTc3NSw5ICs3NDYsNiBAQCBSZW5kZXJTdHlsZSogU3R5
bGVSZXNvbHZlcjo6bG9jYXRlU2hhcmVkCiAgICAgLy8gQ2FuJ3Qgc2hhcmUgaWYgYXR0cmlidXRl
IHJ1bGVzIGFwcGx5LgogICAgIGlmIChzdHlsZVNoYXJpbmdDYW5kaWRhdGVNYXRjaGVzUnVsZVNl
dChtX3J1bGVTZXRzLnVuY29tbW9uQXR0cmlidXRlKCkpKQogICAgICAgICByZXR1cm4gMDsKLSAg
ICAvLyBDYW4ndCBzaGFyZSBpZiBAaG9zdCBALXJ1bGVzIGFwcGx5LgotICAgIGlmIChzdHlsZVNo
YXJpbmdDYW5kaWRhdGVNYXRjaGVzSG9zdFJ1bGVzKCkpCi0gICAgICAgIHJldHVybiAwOwogICAg
IC8vIFRyYWNraW5nIGNoaWxkIGluZGV4IHJlcXVpcmVzIHVuaXF1ZSBzdHlsZSBmb3IgZWFjaCBu
b2RlLiBUaGlzIG1heSBnZXQgc2V0IGJ5IHRoZSBzaWJsaW5nIHJ1bGUgbWF0Y2ggYWJvdmUuCiAg
ICAgaWYgKHBhcmVudEVsZW1lbnRQcmV2ZW50c1NoYXJpbmcoc3RhdGUuZWxlbWVudCgpLT5wYXJl
bnRFbGVtZW50KCkpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTgzOSw3ICs4MDcsNyBAQCBQYXNz
UmVmPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsCiAgICAgYm9vbCBuZWVkc0NvbGxl
Y3Rpb24gPSBmYWxzZTsKICAgICBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmVuc3VyZURlZmF1bHRT
dHlsZVNoZWV0c0ZvckVsZW1lbnQoZWxlbWVudCwgbmVlZHNDb2xsZWN0aW9uKTsKICAgICBpZiAo
bmVlZHNDb2xsZWN0aW9uKQotICAgICAgICBtX3J1bGVTZXRzLmNvbGxlY3RGZWF0dXJlcyhkb2N1
bWVudCgpLmlzVmlld1NvdXJjZSgpLCBtX3Njb3BlUmVzb2x2ZXIuZ2V0KCkpOworICAgICAgICBt
X3J1bGVTZXRzLmNvbGxlY3RGZWF0dXJlcyhkb2N1bWVudCgpLmlzVmlld1NvdXJjZSgpKTsKIAog
ICAgIEVsZW1lbnRSdWxlQ29sbGVjdG9yIGNvbGxlY3Rvcih0aGlzLCBzdGF0ZSk7CiAgICAgY29s
bGVjdG9yLnNldFJlZ2lvbkZvclN0eWxpbmcocmVnaW9uRm9yU3R5bGluZyk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgJKHJldmlzaW9uIDE2MzIzOSkKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDYgQEAK
ICNpbmNsdWRlICJTZWxlY3RvckNoZWNrZXIuaCIKICNpbmNsdWRlICJTZWxlY3RvckZpbHRlci5o
IgogI2luY2x1ZGUgIlN0eWxlSW5oZXJpdGVkRGF0YS5oIgotI2luY2x1ZGUgIlN0eWxlU2NvcGVS
ZXNvbHZlci5oIgogI2luY2x1ZGUgIlZpZXdwb3J0U3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUg
PG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNzcsNyArNzYsNiBAQCBjbGFz
cyBSZW5kZXJTY3JvbGxiYXI7CiBjbGFzcyBSdWxlRGF0YTsKIGNsYXNzIFJ1bGVTZXQ7CiBjbGFz
cyBTZXR0aW5nczsKLWNsYXNzIFN0eWxlU2NvcGVSZXNvbHZlcjsKIGNsYXNzIFN0eWxlSW1hZ2U7
CiBjbGFzcyBTdHlsZUtleWZyYW1lOwogY2xhc3MgU3R5bGVQZW5kaW5nSW1hZ2U7CkBAIC0xNDcs
MTEgKzE0NSw2IEBAIHB1YmxpYzoKICAgICAvLyBVc2luZyB0aGVzZSBkdXJpbmcgdHJlZSB3YWxr
IHdpbGwgYWxsb3cgc3R5bGUgc2VsZWN0b3IgdG8gb3B0aW1pemUgY2hpbGQgYW5kIGRlc2NlbmRh
bnQgc2VsZWN0b3IgbG9va3Vwcy4KICAgICB2b2lkIHB1c2hQYXJlbnRFbGVtZW50KEVsZW1lbnQq
KTsKICAgICB2b2lkIHBvcFBhcmVudEVsZW1lbnQoRWxlbWVudCopOwotICAgIHZvaWQgcHVzaFBh
cmVudFNoYWRvd1Jvb3QoY29uc3QgU2hhZG93Um9vdCopOwotICAgIHZvaWQgcG9wUGFyZW50U2hh
ZG93Um9vdChjb25zdCBTaGFkb3dSb290Kik7Ci0jaWYgRU5BQkxFKFNIQURPV19ET00pCi0gICAg
dm9pZCBhZGRIb3N0UnVsZShTdHlsZVJ1bGVIb3N0KiBydWxlLCBib29sIGhhc0RvY3VtZW50U2Vj
dXJpdHlPcmlnaW4sIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKSB7IGVuc3VyZVNjb3BlUmVz
b2x2ZXIoKS0+YWRkSG9zdFJ1bGUocnVsZSwgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgc2Nv
cGUpOyB9Ci0jZW5kaWYKIAogICAgIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlRm9yRWxlbWVu
dChFbGVtZW50KiwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gMCwgU3R5bGVTaGFyaW5nQmVo
YXZpb3IgPSBBbGxvd1N0eWxlU2hhcmluZywKICAgICAgICAgUnVsZU1hdGNoaW5nQmVoYXZpb3Ig
PSBNYXRjaEFsbFJ1bGVzLCBSZW5kZXJSZWdpb24qIHJlZ2lvbkZvclN0eWxpbmcgPSAwKTsKQEAg
LTE2OCw3ICsxNjEsNiBAQCBwdWJsaWM6CiAgICAgUmVuZGVyU3R5bGUqIHJvb3RFbGVtZW50U3R5
bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnJvb3RFbGVtZW50U3R5bGUoKTsgfQogICAgIEVs
ZW1lbnQqIGVsZW1lbnQoKSB7IHJldHVybiBtX3N0YXRlLmVsZW1lbnQoKTsgfQogICAgIERvY3Vt
ZW50JiBkb2N1bWVudCgpIHsgcmV0dXJuIG1fZG9jdW1lbnQ7IH0KLSAgICBTdHlsZVNjb3BlUmVz
b2x2ZXIqIHNjb3BlUmVzb2x2ZXIoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlUmVzb2x2ZXIuZ2V0
KCk7IH0KICAgICBib29sIGhhc1BhcmVudE5vZGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnBh
cmVudE5vZGUoKTsgfQogCiAgICAgLy8gRklYTUU6IEl0IGNvdWxkIGJlIGJldHRlciB0byBjYWxs
IG1fcnVsZVNldHMuYXBwZW5kQXV0aG9yU3R5bGVTaGVldHMoKSBkaXJlY3RseSBhZnRlciB3ZSBm
YWN0b3IgU3R5bGVSc29sdmVyIGZ1cnRoZXIuCkBAIC0xNzksMjEgKzE3MSwxMCBAQCBwdWJsaWM6
CiAgICAgY29uc3QgRG9jdW1lbnRSdWxlU2V0cyYgcnVsZVNldHMoKSBjb25zdCB7IHJldHVybiBt
X3J1bGVTZXRzOyB9CiAgICAgU2VsZWN0b3JGaWx0ZXImIHNlbGVjdG9yRmlsdGVyKCkgeyByZXR1
cm4gbV9zZWxlY3RvckZpbHRlcjsgfQogCi0jaWYgRU5BQkxFKFNIQURPV19ET00pCi0gICAgU3R5
bGVTY29wZVJlc29sdmVyKiBlbnN1cmVTY29wZVJlc29sdmVyKCkKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNoYWRvd0RPTUVu
YWJsZWQoKSk7Ci0gICAgICAgIGlmICghbV9zY29wZVJlc29sdmVyKQotICAgICAgICAgICAgbV9z
Y29wZVJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxTdHlsZVNjb3BlUmVzb2x2ZXI+KCk7Ci0g
ICAgICAgIHJldHVybiBtX3Njb3BlUmVzb2x2ZXIuZ2V0KCk7Ci0gICAgfQotI2VuZGlmCi0KIHBy
aXZhdGU6CiAgICAgdm9pZCBpbml0RWxlbWVudChFbGVtZW50Kik7CiAgICAgUmVuZGVyU3R5bGUq
IGxvY2F0ZVNoYXJlZFN0eWxlKCk7CiAgICAgYm9vbCBzdHlsZVNoYXJpbmdDYW5kaWRhdGVNYXRj
aGVzUnVsZVNldChSdWxlU2V0Kik7Ci0gICAgYm9vbCBzdHlsZVNoYXJpbmdDYW5kaWRhdGVNYXRj
aGVzSG9zdFJ1bGVzKCk7CiAgICAgTm9kZSogbG9jYXRlQ291c2luTGlzdChFbGVtZW50KiBwYXJl
bnQsIHVuc2lnbmVkJiB2aXNpdGVkTm9kZUNvdW50KSBjb25zdDsKICAgICBTdHlsZWRFbGVtZW50
KiBmaW5kU2libGluZ0ZvclN0eWxlU2hhcmluZyhOb2RlKiwgdW5zaWduZWQmIGNvdW50KSBjb25z
dDsKICAgICBib29sIGNhblNoYXJlU3R5bGVXaXRoRWxlbWVudChTdHlsZWRFbGVtZW50KikgY29u
c3Q7CkBAIC01NDUsNyArNTI2LDYgQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IERlcHJlY2F0ZWRT
dHlsZUJ1aWxkZXImIG1fZGVwcmVjYXRlZFN0eWxlQnVpbGRlcjsKIAotICAgIHN0ZDo6dW5pcXVl
X3B0cjxTdHlsZVNjb3BlUmVzb2x2ZXI+IG1fc2NvcGVSZXNvbHZlcjsKICAgICBDU1NUb1N0eWxl
TWFwIG1fc3R5bGVNYXA7CiAgICAgSW5zcGVjdG9yQ1NTT01XcmFwcGVycyBtX2luc3BlY3RvckNT
U09NV3JhcHBlcnM7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2
ZXIuY3BwCShyZXZpc2lvbiAxNjMyMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29w
ZVJlc29sdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwyMjggKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICogQ29weXJpZ2h0
IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIlN0eWxlU2NvcGVSZXNvbHZlci5oIgotCi0jaWYgRU5BQkxFKFNI
QURPV19ET00pCi0KLSNpbmNsdWRlICJDU1NTdHlsZVJ1bGUuaCIKLSNpbmNsdWRlICJDU1NTdHls
ZVNoZWV0LmgiCi0jaW5jbHVkZSAiQ29udGVudERpc3RyaWJ1dG9yLmgiCi0jaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCi0jaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgotI2luY2x1ZGUgIlJ1bGVG
ZWF0dXJlLmgiCi0jaW5jbHVkZSAiUnVsZVNldC5oIgotI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1TdHlsZVNjb3BlUmVzb2x2ZXI6OlN0eWxlU2NvcGVS
ZXNvbHZlcigpCi0gICAgOiBtX3N0YWNrUGFyZW50KDApCi0gICAgLCBtX3N0YWNrUGFyZW50Qm91
bmRzSW5kZXgoMCkKLXsKLX0KLQotU3R5bGVTY29wZVJlc29sdmVyOjp+U3R5bGVTY29wZVJlc29s
dmVyKCkKLXsKLX0KLQotY29uc3QgQ29udGFpbmVyTm9kZSogU3R5bGVTY29wZVJlc29sdmVyOjpz
Y29wZUZvcihjb25zdCBDU1NTdHlsZVNoZWV0KiBzaGVldCkKLXsKLSAgICBBU1NFUlQoc2hlZXQp
OwotCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc2hlZXQtPm93bmVyRG9jdW1lbnQoKTsKLSAg
ICBpZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm4gMDsKLSAgICBOb2RlKiBvd25lck5vZGUg
PSBzaGVldC0+b3duZXJOb2RlKCk7Ci0gICAgaWYgKCFvd25lck5vZGUgfHwgIW93bmVyTm9kZS0+
aXNIVE1MRWxlbWVudCgpIHx8ICFpc0hUTUxTdHlsZUVsZW1lbnQob3duZXJOb2RlKSkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0KLSAgICBIVE1MU3R5bGVFbGVtZW50KiBzdHlsZUVsZW1lbnQgPSB0b0hU
TUxTdHlsZUVsZW1lbnQob3duZXJOb2RlKTsKLSAgICBpZiAoIXN0eWxlRWxlbWVudC0+c2NvcGVk
KCkpCi0gICAgICAgIHJldHVybiBzdHlsZUVsZW1lbnQtPmlzSW5TaGFkb3dUcmVlKCkgPyBzdHls
ZUVsZW1lbnQtPmNvbnRhaW5pbmdTaGFkb3dSb290KCkgOiAwOwotCi0gICAgQ29udGFpbmVyTm9k
ZSogcGFyZW50ID0gc3R5bGVFbGVtZW50LT5wYXJlbnROb2RlKCk7Ci0gICAgaWYgKCFwYXJlbnQp
Ci0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIChwYXJlbnQtPmlzRWxlbWVudE5vZGUo
KSB8fCBwYXJlbnQtPmlzU2hhZG93Um9vdCgpKSA/IHBhcmVudCA6IDA7Ci19Ci0KLWlubGluZSBS
dWxlU2V0KiBTdHlsZVNjb3BlUmVzb2x2ZXI6OnJ1bGVTZXRGb3IoY29uc3QgQ29udGFpbmVyTm9k
ZSogc2NvcGUpIGNvbnN0Ci17Ci0gICAgaWYgKCFzY29wZS0+aGFzU2NvcGVkSFRNTFN0eWxlQ2hp
bGQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgU2NvcGVkUnVsZVNldE1hcDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBtX2F1dGhvclN0eWxlcy5maW5kKHNjb3BlKTsKLSAgICByZXR1cm4gaXQgIT0g
bV9hdXRob3JTdHlsZXMuZW5kKCkgPyBpdC0+dmFsdWUuZ2V0KCkgOiAwOyAKLX0KLQotUnVsZVNl
dCogU3R5bGVTY29wZVJlc29sdmVyOjplbnN1cmVSdWxlU2V0Rm9yKGNvbnN0IENvbnRhaW5lck5v
ZGUqIHNjb3BlKQotewotICAgIFNjb3BlZFJ1bGVTZXRNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQg
PSBtX2F1dGhvclN0eWxlcy5hZGQoc2NvcGUsIG51bGxwdHIpOwotICAgIGlmIChhZGRSZXN1bHQu
aXNOZXdFbnRyeSkKLSAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IFJ1bGVTZXQ6
OmNyZWF0ZSgpOwotICAgIHJldHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwot
fQotCi12b2lkIFN0eWxlU2NvcGVSZXNvbHZlcjo6c2V0dXBTdGFjayhjb25zdCBDb250YWluZXJO
b2RlKiBwYXJlbnQpCi17Ci0gICAgLy8gVGhlIHNjb3BpbmcgZWxlbWVudCBzdGFjayBzaG91bGRu
J3QgYmUgdXNlZCBpZiA8c3R5bGUgc2NvcGVkPiBpc24ndCB1c2VkIGFueXdoZXJlLgotICAgIEFT
U0VSVCghbV9hdXRob3JTdHlsZXMuaXNFbXB0eSgpKTsKLQotICAgIG1fc3RhY2suc2hyaW5rKDAp
OwotICAgIGludCBhdXRob3JTdHlsZUJvdW5kc0luZGV4ID0gMDsKLSAgICBmb3IgKGNvbnN0IENv
bnRhaW5lck5vZGUqIHNjb3BlID0gcGFyZW50OyBzY29wZTsgc2NvcGUgPSBzY29wZS0+cGFyZW50
T3JTaGFkb3dIb3N0Tm9kZSgpKSB7Ci0gICAgICAgIFJ1bGVTZXQqIHJ1bGVTZXQgPSBydWxlU2V0
Rm9yKHNjb3BlKTsKLSAgICAgICAgaWYgKHJ1bGVTZXQpCi0gICAgICAgICAgICBtX3N0YWNrLmFw
cGVuZChTdGFja0ZyYW1lKHNjb3BlLCBhdXRob3JTdHlsZUJvdW5kc0luZGV4LCBydWxlU2V0KSk7
Ci0gICAgICAgIGlmIChzY29wZS0+aXNTaGFkb3dSb290KCkgJiYgIXRvU2hhZG93Um9vdChzY29w
ZSktPmFwcGx5QXV0aG9yU3R5bGVzKCkpCi0gICAgICAgICAgICAtLWF1dGhvclN0eWxlQm91bmRz
SW5kZXg7Ci0gICAgfQotCi0gICAgbV9zdGFjay5yZXZlcnNlKCk7Ci0gICAgbV9zdGFja1BhcmVu
dCA9IHBhcmVudDsKLSAgICBtX3N0YWNrUGFyZW50Qm91bmRzSW5kZXggPSAwOwotfQotCi12b2lk
IFN0eWxlU2NvcGVSZXNvbHZlcjo6cHVzaChjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSwgY29u
c3QgQ29udGFpbmVyTm9kZSogc2NvcGVQYXJlbnQpCi17Ci0gICAgLy8gU2hvcnRjdXQ6IERvbid0
IGJvdGhlciB3aXRoIHRoZSBzY29waW5nIGVsZW1lbnQgc3RhY2sgaWYgPHN0eWxlIHNjb3BlZD4g
aXNuJ3QgdXNlZCBhbnl3aGVyZS4KLSAgICBpZiAobV9hdXRob3JTdHlsZXMuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIEFTU0VSVCghbV9zdGFja1BhcmVudCk7Ci0gICAgICAgIEFTU0VSVChtX3N0YWNr
LmlzRW1wdHkoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBJbiBzb21lIHdh
Y2t5IGNhc2VzIGR1cmluZyBzdHlsZSByZXNvbHZlIHdlIG1heSBnZXQgaW52b2tlZCBmb3IgcmFu
ZG9tIGVsZW1lbnRzLgotICAgIC8vIFJlY3JlYXRlIHRoZSB3aG9sZSBzY29waW5nIGVsZW1lbnQg
c3RhY2sgaW4gc3VjaCBjYXNlcy4KLSAgICBpZiAoIXN0YWNrSXNDb25zaXN0ZW50KHNjb3BlUGFy
ZW50KSkgewotICAgICAgICBzZXR1cFN0YWNrKHNjb3BlKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChzY29wZS0+aXNTaGFkb3dSb290KCkgJiYgIXRvU2hhZG93Um9vdChzY29w
ZSktPmFwcGx5QXV0aG9yU3R5bGVzKCkpCi0gICAgICAgICsrbV9zdGFja1BhcmVudEJvdW5kc0lu
ZGV4OwotICAgIC8vIE90aGVyd2lzZSBqdXN0IHB1c2ggdGhlIHBhcmVudCBvbnRvIHRoZSBzdGFj
ay4KLSAgICBSdWxlU2V0KiBydWxlU2V0ID0gcnVsZVNldEZvcihzY29wZSk7Ci0gICAgaWYgKHJ1
bGVTZXQpCi0gICAgICAgIG1fc3RhY2suYXBwZW5kKFN0YWNrRnJhbWUoc2NvcGUsIG1fc3RhY2tQ
YXJlbnRCb3VuZHNJbmRleCwgcnVsZVNldCkpOwotICAgIG1fc3RhY2tQYXJlbnQgPSBzY29wZTsK
LX0KLQotdm9pZCBTdHlsZVNjb3BlUmVzb2x2ZXI6OnBvcChjb25zdCBDb250YWluZXJOb2RlKiBz
Y29wZSkKLXsKLSAgICAvLyBPbmx5IGJvdGhlciB0byB1cGRhdGUgdGhlIHNjb3BpbmcgZWxlbWVu
dCBzdGFjayBpZiBpdCBpcyBjb25zaXN0ZW50LgotICAgIGlmIChzdGFja0lzQ29uc2lzdGVudChz
Y29wZSkpIHsKLSAgICAgICAgaWYgKCFtX3N0YWNrLmlzRW1wdHkoKSAmJiBtX3N0YWNrLmxhc3Qo
KS5tX3Njb3BlID09IHNjb3BlKQotICAgICAgICAgICAgbV9zdGFjay5yZW1vdmVMYXN0KCk7Ci0g
ICAgICAgIGlmIChzY29wZS0+aXNTaGFkb3dSb290KCkgJiYgIXRvU2hhZG93Um9vdChzY29wZSkt
PmFwcGx5QXV0aG9yU3R5bGVzKCkpCi0gICAgICAgICAgICAtLW1fc3RhY2tQYXJlbnRCb3VuZHNJ
bmRleDsKLSAgICAgICAgbV9zdGFja1BhcmVudCA9IHNjb3BlLT5wYXJlbnRPclNoYWRvd0hvc3RO
b2RlKCk7Ci0gICAgfQotfQotCi12b2lkIFN0eWxlU2NvcGVSZXNvbHZlcjo6Y29sbGVjdEZlYXR1
cmVzVG8oUnVsZUZlYXR1cmVTZXQmIGZlYXR1cmVzKQotewotICAgIGZvciAoU2NvcGVkUnVsZVNl
dE1hcDo6aXRlcmF0b3IgaXQgPSBtX2F1dGhvclN0eWxlcy5iZWdpbigpOyBpdCAhPSBtX2F1dGhv
clN0eWxlcy5lbmQoKTsgKytpdCkKLSAgICAgICAgZmVhdHVyZXMuYWRkKGl0LT52YWx1ZS0+ZmVh
dHVyZXMoKSk7Ci0jaWYgRU5BQkxFKFNIQURPV19ET00pCi0gICAgZm9yIChTY29wZWRSdWxlU2V0
TWFwOjppdGVyYXRvciBpdCA9IG1fYXRIb3N0UnVsZXMuYmVnaW4oKTsgaXQgIT0gbV9hdEhvc3RS
dWxlcy5lbmQoKTsgKytpdCkKLSAgICAgICAgZmVhdHVyZXMuYWRkKGl0LT52YWx1ZS0+ZmVhdHVy
ZXMoKSk7Ci0jZW5kaWYKLX0KLQotaW5saW5lIFJ1bGVTZXQqIFN0eWxlU2NvcGVSZXNvbHZlcjo6
ZW5zdXJlQXRIb3N0UnVsZVNldEZvcihjb25zdCBTaGFkb3dSb290KiBzaGFkb3dSb290KQotewot
ICAgIFNjb3BlZFJ1bGVTZXRNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX2F0SG9zdFJ1bGVz
LmFkZChzaGFkb3dSb290LCBudWxscHRyKTsKLSAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkp
Ci0gICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBSdWxlU2V0OjpjcmVhdGUoKTsK
LSAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKLX0KLQotaW5saW5l
IFJ1bGVTZXQqIFN0eWxlU2NvcGVSZXNvbHZlcjo6YXRIb3N0UnVsZVNldEZvcihjb25zdCBTaGFk
b3dSb290KiBzaGFkb3dSb290KSBjb25zdAotewotICAgIFNjb3BlZFJ1bGVTZXRNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbV9hdEhvc3RSdWxlcy5maW5kKHNoYWRvd1Jvb3QpOwotICAgIHJldHVy
biBpdCAhPSBtX2F0SG9zdFJ1bGVzLmVuZCgpID8gaXQtPnZhbHVlLmdldCgpIDogMDsKLX0KLQot
I2lmIEVOQUJMRShTSEFET1dfRE9NKQotdm9pZCBTdHlsZVNjb3BlUmVzb2x2ZXI6OmFkZEhvc3RS
dWxlKFN0eWxlUnVsZUhvc3QqIGhvc3RSdWxlLCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmln
aW4sIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKQotewotICAgIGlmICghc2NvcGUgfHwgIXNj
b3BlLT5pc0luU2hhZG93VHJlZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBTaGFkb3dSb290
KiBzaGFkb3dSb290ID0gc2NvcGUtPmNvbnRhaW5pbmdTaGFkb3dSb290KCk7Ci0gICAgaWYgKCFz
aGFkb3dSb290IHx8ICFzaGFkb3dSb290LT5ob3N0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IFJ1bGVTZXQqIHJ1bGUgPSBlbnN1cmVBdEhvc3RSdWxlU2V0Rm9yKHNoYWRvd1Jvb3QpOwotCi0g
ICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiA+JiBjaGlsZFJ1bGVzID0gaG9z
dFJ1bGUtPmNoaWxkUnVsZXMoKTsKLSAgICBBZGRSdWxlRmxhZ3MgYWRkUnVsZUZsYWdzID0gaGFz
RG9jdW1lbnRTZWN1cml0eU9yaWdpbiA/IFJ1bGVIYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luIDog
UnVsZUhhc05vU3BlY2lhbFN0YXRlOwotICAgIGFkZFJ1bGVGbGFncyA9IHN0YXRpY19jYXN0PEFk
ZFJ1bGVGbGFncz4oYWRkUnVsZUZsYWdzIHwgUnVsZUNhblVzZUZhc3RDaGVja1NlbGVjdG9yKTsK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2hpbGRSdWxlcy5zaXplKCk7ICsraSkgewot
ICAgICAgICBTdHlsZVJ1bGVCYXNlKiBob3N0U3R5bGluZ1J1bGUgPSBjaGlsZFJ1bGVzW2ldLmdl
dCgpOwotICAgICAgICBpZiAoaG9zdFN0eWxpbmdSdWxlLT5pc1N0eWxlUnVsZSgpKQotICAgICAg
ICAgICAgcnVsZS0+YWRkU3R5bGVSdWxlKHN0YXRpY19jYXN0PFN0eWxlUnVsZSo+KGhvc3RTdHls
aW5nUnVsZSksIGFkZFJ1bGVGbGFncyk7Ci0gICAgfQotfQotI2VuZGlmCi0KLWJvb2wgU3R5bGVT
Y29wZVJlc29sdmVyOjpzdHlsZVNoYXJpbmdDYW5kaWRhdGVNYXRjaGVzSG9zdFJ1bGVzKGNvbnN0
IEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAgaWYgKG1fYXRIb3N0UnVsZXMuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBGSVhNRSg5OTgyNyk6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTgyNwotICAgIC8vIGFkZCBhIG5ldyBmbGFn
IHRvIEVsZW1lbnRTaGFkb3cgYW5kIGNhY2hlIHdoZXRoZXIgYW55QGhvc3QgQC1ydWxlcyBhcmUK
LSAgICAvLyBhcHBsaWVkIHRvIHRoZSBlbGVtZW50IG9yIG5vdC4gU28gd2UgY2FuIGF2b2lkIGFs
d2F5cyB0cmF2ZXJzaW5nCi0gICAgLy8gc2hhZG93IHJvb3RzLgotICAgIGlmIChTaGFkb3dSb290
KiBzaGFkb3dSb290ID0gZWxlbWVudC0+c2hhZG93Um9vdCgpKSB7Ci0gICAgICAgIGlmIChhdEhv
c3RSdWxlU2V0Rm9yKHNoYWRvd1Jvb3QpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBTdHlsZVNjb3BlUmVzb2x2ZXI6Om1hdGNo
SG9zdFJ1bGVzKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIFZlY3RvcjxSdWxlU2V0Kj4mIG1hdGNo
ZWRSdWxlcykKLXsKLSAgICBpZiAobV9hdEhvc3RSdWxlcy5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIC8vIEZJWE1FKDk5ODI3KTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk5ODI3Ci0gICAgLy8gYWRkIGEgbmV3IGZsYWcgdG8gRWxlbWVudFNoYWRv
dyBhbmQgY2FjaGUgd2hldGhlciBhbnkgQGhvc3QgQC1ydWxlcyBhcmUKLSAgICAvLyBhcHBsaWVk
IHRvIHRoZSBlbGVtZW50IG9yIG5vdC4gU28gd2UgY2FuIHF1aWNrbHkgZXhpdCB0aGlzIG1ldGhv
ZAotICAgIC8vIGJ5IHVzaW5nIHRoZSBmbGFnLgotICAgIGlmIChTaGFkb3dSb290KiBzaGFkb3dS
b290ID0gZWxlbWVudC0+c2hhZG93Um9vdCgpKSB7Ci0gICAgICAgIGlmIChSdWxlU2V0KiBydWxl
U2V0ID0gYXRIb3N0UnVsZVNldEZvcihzaGFkb3dSb290KSkKLSAgICAgICAgICAgIG1hdGNoZWRS
dWxlcy5hcHBlbmQocnVsZVNldCk7Ci0gICAgfQotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
U0hBRE9XX0RPTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmgJ
KHJldmlzaW9uIDE2MzIzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxMjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAz
LCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTdHlsZVNjb3BlUmVz
b2x2ZXJfaAotI2RlZmluZSBTdHlsZVNjb3BlUmVzb2x2ZXJfaAotCi0jaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDb250YWluZXJOb2RlOwotY2xhc3MgQ1NT
U3R5bGVTaGVldDsKLWNsYXNzIEVsZW1lbnQ7Ci1jbGFzcyBSdWxlU2V0OwotY2xhc3MgU2hhZG93
Um9vdDsKLWNsYXNzIFN0eWxlUnVsZUhvc3Q7Ci1zdHJ1Y3QgUnVsZUZlYXR1cmVTZXQ7Ci0KLSNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKLQotY2xhc3MgU3R5bGVTY29wZVJlc29sdmVyIHsKLXB1Ymxp
YzoKLSAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgQ29udGFpbmVyTm9kZSosIE93blB0cjxSdWxl
U2V0Pj4gU2NvcGVkUnVsZVNldE1hcDsKLQotICAgIHN0cnVjdCBTdGFja0ZyYW1lIHsKLSAgICAg
ICAgU3RhY2tGcmFtZSgpIDogbV9zY29wZSgwKSwgbV9hdXRob3JTdHlsZUJvdW5kc0luZGV4KDAp
LCBtX3J1bGVTZXQoMCkgeyB9Ci0gICAgICAgIFN0YWNrRnJhbWUoY29uc3QgQ29udGFpbmVyTm9k
ZSogc2NvcGUsIGludCBhdXRob3JTdHlsZUJvdW5kc0luZGV4LCBSdWxlU2V0KiBydWxlU2V0KQot
ICAgICAgICAgICAgOiBtX3Njb3BlKHNjb3BlKSwgbV9hdXRob3JTdHlsZUJvdW5kc0luZGV4KGF1
dGhvclN0eWxlQm91bmRzSW5kZXgpLCBtX3J1bGVTZXQocnVsZVNldCkKLSAgICAgICAgeyB9Ci0K
LSAgICAgICAgY29uc3QgQ29udGFpbmVyTm9kZSogbV9zY29wZTsKLSAgICAgICAgaW50IG1fYXV0
aG9yU3R5bGVCb3VuZHNJbmRleDsKLSAgICAgICAgUnVsZVNldCogbV9ydWxlU2V0OwotICAgIH07
Ci0KLSAgICBTdHlsZVNjb3BlUmVzb2x2ZXIoKTsKLSAgICB+U3R5bGVTY29wZVJlc29sdmVyKCk7
Ci0KLSAgICBzdGF0aWMgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGVGb3IoY29uc3QgQ1NTU3R5
bGVTaGVldCopOwotCi0gICAgdm9pZCBwdXNoKGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlLCBj
b25zdCBDb250YWluZXJOb2RlKiBzY29wZVBhcmVudCk7Ci0gICAgdm9pZCBwb3AoY29uc3QgQ29u
dGFpbmVyTm9kZSogc2NvcGUpOwotICAgIGJvb2wgaGFzU2NvcGVkU3R5bGVzKCkgY29uc3QgeyBy
ZXR1cm4gIW1fYXV0aG9yU3R5bGVzLmlzRW1wdHkoKTsgfQotICAgIFJ1bGVTZXQqIGVuc3VyZVJ1
bGVTZXRGb3IoY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUpOwotICAgIGJvb2wgZW5zdXJlU3Rh
Y2tDb25zaXN0ZW5jeShDb250YWluZXJOb2RlKik7Ci0gICAgdW5zaWduZWQgc3RhY2tTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGFjay5zaXplKCk7IH0KLSAgICBjb25zdCBTdGFja0ZyYW1lJiBz
dGFja0ZyYW1lQXQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhY2suYXQoaW5k
ZXgpOyB9Ci0gICAgYm9vbCBtYXRjaGVzU3R5bGVCb3VuZHMoY29uc3QgU3RhY2tGcmFtZSYgZnJh
bWUpIGNvbnN0IHsgcmV0dXJuIGZyYW1lLm1fYXV0aG9yU3R5bGVCb3VuZHNJbmRleCA9PSBtX3N0
YWNrUGFyZW50Qm91bmRzSW5kZXg7IH0KLSAgICB2b2lkIGNvbGxlY3RGZWF0dXJlc1RvKFJ1bGVG
ZWF0dXJlU2V0Jik7Ci0KLSAgICB2b2lkIGFkZEhvc3RSdWxlKFN0eWxlUnVsZUhvc3QqLCBib29s
IGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4sIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKTsK
LSAgICBib29sIHN0eWxlU2hhcmluZ0NhbmRpZGF0ZU1hdGNoZXNIb3N0UnVsZXMoY29uc3QgRWxl
bWVudCopOwotICAgIHZvaWQgbWF0Y2hIb3N0UnVsZXMoY29uc3QgRWxlbWVudCosIFZlY3RvcjxS
dWxlU2V0Kj4mIG1hdGNoZWRSdWxlcyk7Ci0KLXByaXZhdGU6Ci0gICAgUnVsZVNldCogcnVsZVNl
dEZvcihjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSkgY29uc3Q7Ci0gICAgdm9pZCBzZXR1cFN0
YWNrKGNvbnN0IENvbnRhaW5lck5vZGUqKTsKLSAgICBib29sIHN0YWNrSXNDb25zaXN0ZW50KGNv
bnN0IENvbnRhaW5lck5vZGUqIHBhcmVudCkgY29uc3QgeyByZXR1cm4gcGFyZW50ICYmIHBhcmVu
dCA9PSBtX3N0YWNrUGFyZW50OyB9Ci0gICAgUnVsZVNldCogZW5zdXJlQXRIb3N0UnVsZVNldEZv
cihjb25zdCBTaGFkb3dSb290Kik7Ci0gICAgUnVsZVNldCogYXRIb3N0UnVsZVNldEZvcihjb25z
dCBTaGFkb3dSb290KikgY29uc3Q7Ci0KLSAgICBTY29wZWRSdWxlU2V0TWFwIG1fYXV0aG9yU3R5
bGVzOwotCi0gICAgLy8gVmVjdG9yICh1c2VkIGFzIHN0YWNrKSB0aGF0IGtlZXBzIHRyYWNrIG9m
IHNjb3BpbmcgZWxlbWVudHMgKGkuZS4sIGVsZW1lbnRzIHdpdGggYSA8c3R5bGUgc2NvcGVkPiBj
aGlsZCkKLSAgICAvLyBlbmNvdW50ZXJlZCBkdXJpbmcgdHJlZSBpdGVyYXRpb24gZm9yIHN0eWxl
IHJlc29sdXRpb24uCi0gICAgVmVjdG9yPFN0YWNrRnJhbWU+IG1fc3RhY2s7Ci0gICAgLy8gRWxl
bWVudCBsYXN0IHNlZW4gYXMgcGFyZW50IGVsZW1lbnQgd2hlbiB1cGRhdGluZyBtX3Njb3BpbmdF
bGVtZW50U3RhY2suCi0gICAgLy8gVGhpcyBpcyB1c2VkIHRvIGRlY2lkZSB3aGV0aGVyIG1fc2Nv
cGluZ0VsZW1lbnRTdGFjayBpcyBjb25zaXN0ZW50LCBzZXBhcmF0ZWx5IGZyb20gU2VsZWN0b3JD
aGVja2VyOjptX3BhcmVudFN0YWNrLgotICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIG1fc3RhY2tQ
YXJlbnQ7Ci0gICAgaW50IG1fc3RhY2tQYXJlbnRCb3VuZHNJbmRleDsKLQotICAgIFNjb3BlZFJ1
bGVTZXRNYXAgbV9hdEhvc3RSdWxlczsKLX07Ci0KLWlubGluZSBib29sIFN0eWxlU2NvcGVSZXNv
bHZlcjo6ZW5zdXJlU3RhY2tDb25zaXN0ZW5jeShDb250YWluZXJOb2RlKiBwYXJlbnQpCi17Ci0g
ICAgLy8gTWF0Y2ggc2NvcGVkIGF1dGhvciBydWxlcyBieSB0cmF2ZXJzaW5nIHRoZSBzY29wZWQg
ZWxlbWVudCBzdGFjayAocmVidWlsZCBpdCBpZiBpdCBnb3QgaW5jb25zaXN0ZW50KS4KLSAgICBp
ZiAoIXN0YWNrSXNDb25zaXN0ZW50KHBhcmVudCkpCi0gICAgICAgIHNldHVwU3RhY2socGFyZW50
KTsKLSAgICByZXR1cm4gIW1fc3RhY2suaXNFbXB0eSgpOwotfQotCi0jZWxzZQotCi1jbGFzcyBT
dHlsZVNjb3BlUmVzb2x2ZXIgewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBDb250YWluZXJO
b2RlKiBzY29wZUZvcihjb25zdCBDU1NTdHlsZVNoZWV0KikgeyByZXR1cm4gMDsgfQotICAgIHZv
aWQgcHVzaChjb25zdCBDb250YWluZXJOb2RlKiwgY29uc3QgQ29udGFpbmVyTm9kZSopIHsgfQot
ICAgIHZvaWQgcG9wKGNvbnN0IENvbnRhaW5lck5vZGUqKSB7IH0KLSAgICB2b2lkIGNvbGxlY3RG
ZWF0dXJlc1RvKFJ1bGVGZWF0dXJlU2V0JikgeyB9Ci0gICAgUnVsZVNldCogZW5zdXJlUnVsZVNl
dEZvcihjb25zdCBDb250YWluZXJOb2RlKikgeyByZXR1cm4gMDsgfQotfTsKLQotI2VuZGlmIC8v
IEVOQUJMRShTSEFET1dfRE9NKQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBTdHlsZVNjb3BlUmVzb2x2ZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVS
ZXNvbHZlVHJlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVS
ZXNvbHZlVHJlZS5jcHAJKHJldmlzaW9uIDE2MzIzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlUmVzb2x2ZVRyZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjYsMTMgKzQ2Niw4IEBA
IHN0YXRpYyB2b2lkIGF0dGFjaENoaWxkcmVuKENvbnRhaW5lck5vZGUKIAogc3RhdGljIHZvaWQg
YXR0YWNoU2hhZG93Um9vdChTaGFkb3dSb290JiBzaGFkb3dSb290KQogewotICAgIFN0eWxlUmVz
b2x2ZXImIHN0eWxlUmVzb2x2ZXIgPSBzaGFkb3dSb290LmRvY3VtZW50KCkuZW5zdXJlU3R5bGVS
ZXNvbHZlcigpOwotICAgIHN0eWxlUmVzb2x2ZXIucHVzaFBhcmVudFNoYWRvd1Jvb3QoJnNoYWRv
d1Jvb3QpOwotCiAgICAgYXR0YWNoQ2hpbGRyZW4oc2hhZG93Um9vdCk7CiAKLSAgICBzdHlsZVJl
c29sdmVyLnBvcFBhcmVudFNoYWRvd1Jvb3QoJnNoYWRvd1Jvb3QpOwotCiAgICAgc2hhZG93Um9v
dC5jbGVhck5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICBzaGFkb3dSb290LmNsZWFyQ2hpbGROZWVk
c1N0eWxlUmVjYWxjKCk7CiB9CkBAIC03MjYsMTkgKzcyMSwxNiBAQCBzdGF0aWMgdm9pZCByZXNv
bHZlU2hhZG93VHJlZShTaGFkb3dSb290CiB7CiAgICAgaWYgKCFzaGFkb3dSb290KQogICAgICAg
ICByZXR1cm47Ci0gICAgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciA9IHNoYWRvd1Jvb3Qt
PmRvY3VtZW50KCkuZW5zdXJlU3R5bGVSZXNvbHZlcigpOwotICAgIHN0eWxlUmVzb2x2ZXIucHVz
aFBhcmVudFNoYWRvd1Jvb3Qoc2hhZG93Um9vdCk7CiAKICAgICBmb3IgKE5vZGUqIGNoaWxkID0g
c2hhZG93Um9vdC0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxp
bmcoKSkgewogICAgICAgICBpZiAoY2hpbGQtPmlzVGV4dE5vZGUoKSkgewotICAgICAgICAgICAg
Ly8gQ3VycmVudCB1c2VyIGFnZW50IFNoYWRvd1Jvb3RzIGRvbid0IGhhdmUgaW1tZWRpYXRlIHRl
eHQgY2hpbGRyZW4gc28gdGhpcyBicmFuY2ggaXMgbmV2ZXIgYWN0dWFsbHkgdGFrZW4uCiAgICAg
ICAgICAgICB1cGRhdGVUZXh0U3R5bGUoKnRvVGV4dChjaGlsZCkpOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KLSAgICAgICAgcmVzb2x2ZVRyZWUoKnRvRWxlbWVudChjaGlsZCks
IGNoYW5nZSk7CisgICAgICAgIGlmIChjaGlsZC0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAg
ICAgcmVzb2x2ZVRyZWUoKnRvRWxlbWVudChjaGlsZCksIGNoYW5nZSk7CiAgICAgfQogCi0gICAg
c3R5bGVSZXNvbHZlci5wb3BQYXJlbnRTaGFkb3dSb290KHNoYWRvd1Jvb3QpOwogICAgIHNoYWRv
d1Jvb3QtPmNsZWFyTmVlZHNTdHlsZVJlY2FsYygpOwogICAgIHNoYWRvd1Jvb3QtPmNsZWFyQ2hp
bGROZWVkc1N0eWxlUmVjYWxjKCk7CiB9Cg==
</data>
<flag name="review"
          id="246944"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>