<?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>51629</bug_id>
          
          <creation_ts>2010-12-26 21:14:54 -0800</creation_ts>
          <short_desc>WebKit2: Add additional API for managing databases</short_desc>
          <delta_ts>2010-12-30 09:54:01 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>51754</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>326959</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-26 21:14:54 -0800</bug_when>
    <thetext>We nee additional API in WebKit2 to manage database.  Specifically, we need to be able to reproduce the logic required to implement Safari&apos;s database panel in the Safari preferences.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326960</commentid>
    <comment_count>1</comment_count>
      <attachid>77477</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-26 21:22:22 -0800</bug_when>
    <thetext>Created attachment 77477
Patch 1

This adds most of the necessary API.  The missing part after this is notifications of database changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327088</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-27 11:18:44 -0800</bug_when>
    <thetext>First part landed in http://trac.webkit.org/changeset/74690.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327093</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-27 12:13:14 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/74690 might have broken Leopard Intel Debug (Tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327096</commentid>
    <comment_count>4</comment_count>
      <attachid>77514</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-27 12:49:22 -0800</bug_when>
    <thetext>Created attachment 77514
Patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327100</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-27 13:05:24 -0800</bug_when>
    <thetext>Landed part 2 in http://trac.webkit.org/changeset/74693.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327109</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-27 13:47:07 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/74693 might have broken Leopard Intel Debug (Tests)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77477</attachid>
            <date>2010-12-26 21:22:22 -0800</date>
            <delta_ts>2010-12-27 11:18:54 -0800</delta_ts>
            <desc>Patch 1</desc>
            <filename>database1.diff</filename>
            <type>text/plain</type>
            <size>41555</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NDY3MykKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzIgQEAKKzIwMTAtMTItMjYgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJLaXQy
OiBBZGQgYWRkaXRpb25hbCBBUEkgZm9yIG1hbmFnaW5nIGRhdGFiYXNlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE2MjkKKworICAgICAgICAtIEFk
ZHMgV0tEYXRhYmFzZU1hbmFnZXJHZXREYXRhYmFzZXNCeU9yaWdpbiwgd2hpY2ggYXN5bmNocm9u
b3VzbHkgcmV0dXJucworICAgICAgICAgIGFuIGFycmF5IG9mIGRpY3Rpb25hcmllcyBjb250YWlu
aW5nIGRldGFpbHMgYWJvdXQgZWFjaCBvcmlnaW4gdXNpbmcgCisgICAgICAgICAgZGF0YWJhc2Vz
IGFuZCBkZXRhaWxzIGFib3V0IGVhY2ggZGF0YWJhc2UuIEtleXMgd2VyZSBhZGRlZCBmb3IgYWNj
ZXNzaW5nCisgICAgICAgICAgdGhlIGRhdGEgaW4gdGhlIGRpY3Rpb25hcmllcy4KKyAgICAgICAg
LSBBZGRzIFdLRGF0YWJhc2VNYW5hZ2VyRGVsZXRlRGF0YWJhc2VzV2l0aE5hbWVGb3JPcmlnaW4g
dG8gZGVsZXRlIGEgZGF0YWJhc2UKKyAgICAgICAgICB3aXRoIGEgc3BlY2lmaWMgaWRlbnRpZmll
ci4KKyAgICAgICAgLSBBZGRzIFdLRGF0YWJhc2VNYW5hZ2VyU2V0UXVvdGFGb3JPcmlnaW4gdG8g
c2V0IHRoZSBxdW90YSBmb3IgYW4gb3JpZ2luLgorCisgICAgICAgICogU2hhcmVkL09yaWdpbkFu
ZERhdGFiYXNlcy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5BbmREYXRhYmFz
ZXM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpbkFuZERhdGFiYXNlczo6ZGVjb2Rl
KToKKyAgICAgICAgKiBTaGFyZWQvT3JpZ2luQW5kRGF0YWJhc2VzLmg6IEFkZGVkLgorICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tEYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tEYXRhYmFzZU1hbmFnZXJH
ZXRPcmlnaW5LZXkpOgorICAgICAgICAoV0tEYXRhYmFzZU1hbmFnZXJHZXRPcmlnaW5RdW90YUtl
eSk6CisgICAgICAgIChXS0RhdGFiYXNlTWFuYWdlckdldE9yaWdpblVzYWdlS2V5KToKKyAgICAg
ICAgKFdLRGF0YWJhc2VNYW5hZ2VyR2V0RGF0YWJhc2VEZXRhaWxzS2V5KToKKyAgICAgICAgKFdL
RGF0YWJhc2VNYW5hZ2VyR2V0RGF0YWJhc2VEZXRhaWxzTmFtZUtleSk6CisgICAgICAgIChXS0Rh
dGFiYXNlTWFuYWdlckdldERhdGFiYXNlRGV0YWlsc0Rpc3BsYXlOYW1lS2V5KToKKyAgICAgICAg
KFdLRGF0YWJhc2VNYW5hZ2VyR2V0RGF0YWJhc2VEZXRhaWxzRXhwZWN0ZWRVc2FnZUtleSk6Cisg
ICAgICAgIChXS0RhdGFiYXNlTWFuYWdlckdldERhdGFiYXNlRGV0YWlsc0N1cnJlbnRVc2FnZUtl
eSk6CisgICAgICAgIChXS0RhdGFiYXNlTWFuYWdlckdldERhdGFiYXNlc0J5T3JpZ2luKToKKyAg
ICAgICAgKGNhbGxHZXREYXRhYmFzZXNCeU9yaWdpbkJsb2NrQW5kRGlzcG9zZSk6CisgICAgICAg
IChXS0RhdGFiYXNlTWFuYWdlckdldERhdGFiYXNlc0J5T3JpZ2luX2IpOgorICAgICAgICAoV0tE
YXRhYmFzZU1hbmFnZXJHZXREYXRhYmFzZU9yaWdpbnMpOgorICAgICAgICAoY2FsbEdldERhdGFi
YXNlT3JpZ2luc0Jsb2NrQmxvY2tBbmREaXNwb3NlKToKKyAgICAgICAgKFdLRGF0YWJhc2VNYW5h
Z2VyR2V0RGF0YWJhc2VPcmlnaW5zX2IpOgorICAgICAgICAoV0tEYXRhYmFzZU1hbmFnZXJEZWxl
dGVEYXRhYmFzZXNXaXRoTmFtZUZvck9yaWdpbik6CisgICAgICAgIChXS0RhdGFiYXNlTWFuYWdl
ckRlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbik6CisgICAgICAgIChXS0RhdGFiYXNlTWFuYWdlckRl
bGV0ZUFsbERhdGFiYXNlcyk6CisgICAgICAgIChXS0RhdGFiYXNlTWFuYWdlclNldFF1b3RhRm9y
T3JpZ2luKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tEYXRhYmFzZU1hbmFnZXIuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6b3JpZ2luS2V5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6Om9yaWdpblF1b3RhS2V5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6Om9yaWdpblVzYWdlS2V5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmRhdGFiYXNlRGV0YWlsc0tl
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlclByb3h5OjpkYXRhYmFzZURl
dGFpbHNOYW1lS2V5KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6
OmRhdGFiYXNlRGV0YWlsc0Rpc3BsYXlOYW1lS2V5KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0
YWJhc2VNYW5hZ2VyUHJveHk6OmRhdGFiYXNlRGV0YWlsc0V4cGVjdGVkVXNhZ2VLZXkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6ZGF0YWJhc2VEZXRhaWxzQ3Vy
cmVudFVzYWdlS2V5KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6
OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6
Z2V0RGF0YWJhc2VzQnlPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZU1hbmFn
ZXJQcm94eTo6ZGlkR2V0RGF0YWJhc2VzQnlPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJE
YXRhYmFzZU1hbmFnZXJQcm94eTo6Z2V0RGF0YWJhc2VPcmlnaW5zKToKKyAgICAgICAgKFdlYktp
dDo6V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmRpZEdldERhdGFiYXNlT3JpZ2lucyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlclByb3h5OjpkZWxldGVEYXRhYmFzZVdpdGhO
YW1lRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6
OmRlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNl
TWFuYWdlclByb3h5OjpzZXRRdW90YUZvck9yaWdpbik6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkRhdGFiYXNlTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkRhdGFiYXNl
TWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYktpdDIucHJvOgorICAgICAg
ICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkRhdGFiYXNlTWFuYWdlcjo6Z2V0RGF0YWJhc2VzQnlPcmlnaW4pOgorICAgICAgICAo
V2ViS2l0OjpXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZURhdGFiYXNlV2l0aE5hbWVGb3JPcmln
aW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZU1hbmFnZXI6OnNldFF1b3RhRm9yT3Jp
Z2luKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFu
YWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VN
YW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIHdpbi9XZWJLaXQyLnZjcHJvajoKKwogMjAx
MC0xMi0yNiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBXZWJLaXQyL1dlYktpdDIucHJvCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvV2ViS2l0Mi5wcm8JKHJldmlzaW9uIDc0NjYyKQorKysgV2Vi
S2l0Mi9XZWJLaXQyLnBybwkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDYgKzI0NSw3IEBAIEhFQURF
UlMgKz0gXAogICAgIFNoYXJlZC9NdXRhYmxlRGljdGlvbmFyeS5oIFwKICAgICBTaGFyZWQvTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudC5oIFwKICAgICBTaGFyZWQvTm90SW1wbGVtZW50ZWQuaCBcCisg
ICAgU2hhcmVkL09yaWdpbkFuZERhdGFiYXNlcy5oIFwKICAgICBTaGFyZWQvUGxhdGZvcm1Qb3B1
cE1lbnVEYXRhLmggXAogICAgIFNoYXJlZC9TYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIFwK
ICAgICBTaGFyZWQvU3RyaW5nUGFpclZlY3Rvci5oIFwKQEAgLTQ1NCw2ICs0NTUsNyBAQCBTT1VS
Q0VTICs9IFwKICAgICBTaGFyZWQvSW1tdXRhYmxlRGljdGlvbmFyeS5jcHAgXAogICAgIFNoYXJl
ZC9NdXRhYmxlQXJyYXkuY3BwIFwKICAgICBTaGFyZWQvTXV0YWJsZURpY3Rpb25hcnkuY3BwIFwK
KyAgICBTaGFyZWQvT3JpZ2luQW5kRGF0YWJhc2VzLmNwcCBcCiAgICAgU2hhcmVkL1BsYXRmb3Jt
UG9wdXBNZW51RGF0YS5jcHAgXAogICAgIFNoYXJlZC9WaXNpdGVkTGlua1RhYmxlLmNwcCBcCiAg
ICAgU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5jcHAgXApJbmRleDogV2ViS2l0Mi9TaGFyZWQv
T3JpZ2luQW5kRGF0YWJhc2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9Pcmln
aW5BbmREYXRhYmFzZXMuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9TaGFyZWQvT3JpZ2lu
QW5kRGF0YWJhc2VzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJPcmlnaW5BbmREYXRhYmFzZXMuaCIKKworI2luY2x1ZGUgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3ZvaWQgT3JpZ2luQW5kRGF0YWJhc2VzOjplbmNvZGUoQ29yZUlQQzo6QXJn
dW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXItPmVuY29kZShDb3Jl
SVBDOjpJbihvcmlnaW5JZGVudGlmaWVyLCBvcmlnaW5RdW90YSwgb3JpZ2luVXNhZ2UsIGRhdGFi
YXNlcykpOworfQorCitib29sIE9yaWdpbkFuZERhdGFiYXNlczo6ZGVjb2RlKENvcmVJUEM6OkFy
Z3VtZW50RGVjb2RlciogZGVjb2RlciwgT3JpZ2luQW5kRGF0YWJhc2VzJiBvcmlnaW5BbmREYXRh
YmFzZXMpCit7CisgICAgcmV0dXJuIGRlY29kZXItPmRlY29kZShDb3JlSVBDOjpPdXQob3JpZ2lu
QW5kRGF0YWJhc2VzLm9yaWdpbklkZW50aWZpZXIsIG9yaWdpbkFuZERhdGFiYXNlcy5vcmlnaW5R
dW90YSwgb3JpZ2luQW5kRGF0YWJhc2VzLm9yaWdpblVzYWdlLCBvcmlnaW5BbmREYXRhYmFzZXMu
ZGF0YWJhc2VzKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9T
aGFyZWQvT3JpZ2luQW5kRGF0YWJhc2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQv
T3JpZ2luQW5kRGF0YWJhc2VzLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1NoYXJlZC9Pcmln
aW5BbmREYXRhYmFzZXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgT3JpZ2luQW5kRGF0YWJhc2VzX2gKKyNkZWZpbmUgT3JpZ2luQW5kRGF0YWJh
c2VzX2gKKworI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VEZXRhaWxzLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3Bh
Y2UgQ29yZUlQQyB7CisgICAgY2xhc3MgQXJndW1lbnREZWNvZGVyOworICAgIGNsYXNzIEFyZ3Vt
ZW50RW5jb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBPcmlnaW5BbmRE
YXRhYmFzZXMgeworICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciopIGNv
bnN0OworICAgIHN0YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBP
cmlnaW5BbmREYXRhYmFzZXMmKTsKKworICAgIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyOworICAg
IHVuc2lnbmVkIGxvbmcgbG9uZyBvcmlnaW5RdW90YTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcg
b3JpZ2luVXNhZ2U7CisgICAgVmVjdG9yPFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscz4gZGF0YWJh
c2VzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBPcmlnaW5BbmRE
YXRhYmFzZXNfaApJbmRleDogV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJl
dmlzaW9uIDc0NjYyKQorKysgV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50aWFsLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9DdXJzb3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlRGV0
YWlscy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
bG9hdFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KQEAgLTMxNSw2ICszMTYs
MzggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOgogICAgIH0KIH07
CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q29sb3I+IHsKKyAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBXZWJD
b3JlOjpDb2xvciYgY29sb3IpCisgICAgeworICAgICAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkg
eworICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlQm9vbChmYWxzZSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBlbmNvZGVyLT5lbmNvZGVCb29sKHRydWUpOwor
ICAgICAgICBlbmNvZGVyLT5lbmNvZGUoY29sb3IucmdiKCkpOworICAgIH0KKworICAgIHN0YXRp
YyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkNvcmU6OkNvbG9yJiBj
b2xvcikKKyAgICB7CisgICAgICAgIGJvb2wgaXNWYWxpZDsKKyAgICAgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUoaXNWYWxpZCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
aWYgKCFpc1ZhbGlkKSB7CisgICAgICAgICAgICBjb2xvciA9IFdlYkNvcmU6OkNvbG9yKCk7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIFdlYkNvcmU6OlJH
QkEzMiByZ2JhOworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShyZ2JhKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBjb2xvciA9IFdlYkNvcmU6OkNvbG9yKHJnYmEp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9OworCiAjaWYgUExBVEZPUk0oTUFDKQog
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+
IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25z
dCBXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQmIGtleXByZXNzQ29tbWFuZCkKQEAgLTMzNywxNCAr
MzcwLDMwIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZToKICAgICAK
ICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJDb3Jl
OjpDb21wb3NpdGlvblVuZGVybGluZSYgdW5kZXJsaW5lKQogICAgIHsKLSAgICAgICAgdWludDMy
X3QgcmdiOwotICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShDb3JlSVBDOjpPdXQodW5kZXJs
aW5lLnN0YXJ0T2Zmc2V0LCB1bmRlcmxpbmUuZW5kT2Zmc2V0LCB1bmRlcmxpbmUudGhpY2ssIHJn
YikpKQorICAgICAgICByZXR1cm4gZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dCh1bmRlcmxp
bmUuc3RhcnRPZmZzZXQsIHVuZGVybGluZS5lbmRPZmZzZXQsIHVuZGVybGluZS50aGljaywgdW5k
ZXJsaW5lLmNvbG9yKSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpEYXRhYmFzZURldGFpbHM+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpEYXRhYmFzZURldGFpbHMm
IGRldGFpbHMpCisgICAgeworICAgICAgICBlbmNvZGVyLT5lbmNvZGUoQ29yZUlQQzo6SW4oZGV0
YWlscy5uYW1lKCksIGRldGFpbHMuZGlzcGxheU5hbWUoKSwgZGV0YWlscy5leHBlY3RlZFVzYWdl
KCksIGRldGFpbHMuY3VycmVudFVzYWdlKCkpKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIGJv
b2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29yZTo6RGF0YWJhc2VEZXRh
aWxzJiBkZXRhaWxzKQorICAgIHsKKyAgICAgICAgU3RyaW5nIG5hbWU7CisgICAgICAgIFN0cmlu
ZyBkaXNwbGF5TmFtZTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGV4cGVjdGVkVXNhZ2U7
CisgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50VXNhZ2U7CisgICAgICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dChuYW1lLCBkaXNwbGF5TmFtZSwgZXhwZWN0ZWRV
c2FnZSwgY3VycmVudFVzYWdlKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IHVuZGVybGluZS5jb2xvciA9IHJnYjsKKyAgICAgICAgCisgICAgICAgIGRldGFpbHMgPSBXZWJD
b3JlOjpEYXRhYmFzZURldGFpbHMobmFtZSwgZGlzcGxheU5hbWUsIGV4cGVjdGVkVXNhZ2UsIGN1
cnJlbnRVc2FnZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH07Ci0gICAgCisKIH0g
Ly8gbmFtZXNwYWNlIENvcmVJUEMKIAogI2VuZGlmIC8vIFdlYkNvcmVBcmd1bWVudENvZGVyc19o
CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkuY3Bw
CShyZXZpc2lvbiA3NDY2MikKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdl
clByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIldl
YkRhdGFiYXNlTWFuYWdlclByb3h5LmgiCiAKICNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgor
I2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJXZWJEYXRhYmFzZU1h
bmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJT
ZWN1cml0eU9yaWdpbi5oIgpAQCAtMzQsNiArMzUsNTQgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitTdHJpbmcgV2ViRGF0YWJhc2VNYW5hZ2VyUHJv
eHk6Om9yaWdpbktleSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGtleSwg
KCJXZWJEYXRhYmFzZU1hbmFnZXJPcmlnaW5LZXkiKSk7CisgICAgcmV0dXJuIGtleTsKK30KKwor
U3RyaW5nIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5OjpvcmlnaW5RdW90YUtleSgpCit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGtleSwgKCJXZWJEYXRhYmFzZU1hbmFnZXJPcmln
aW5RdW90YUtleSIpKTsKKyAgICByZXR1cm4ga2V5OworfQorCitTdHJpbmcgV2ViRGF0YWJhc2VN
YW5hZ2VyUHJveHk6Om9yaWdpblVzYWdlS2V5KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFN0cmluZywga2V5LCAoIldlYkRhdGFiYXNlTWFuYWdlck9yaWdpblVzYWdlS2V5IikpOworICAg
IHJldHVybiBrZXk7Cit9CisKK1N0cmluZyBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6ZGF0YWJh
c2VEZXRhaWxzS2V5KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywga2V5LCAo
IldlYkRhdGFiYXNlTWFuYWdlckRhdGFiYXNlRGV0YWlsc0tleSIpKTsKKyAgICByZXR1cm4ga2V5
OworfQorCitTdHJpbmcgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmRhdGFiYXNlRGV0YWlsc05h
bWVLZXkoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBrZXksICgiV2ViRGF0
YWJhc2VNYW5hZ2VyRGF0YWJhc2VEZXRhaWxzTmFtZUtleSIpKTsKKyAgICByZXR1cm4ga2V5Owor
fQorCitTdHJpbmcgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmRhdGFiYXNlRGV0YWlsc0Rpc3Bs
YXlOYW1lS2V5KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywga2V5LCAoIldl
YkRhdGFiYXNlTWFuYWdlckRhdGFiYXNlRGV0YWlsc0Rpc3BsYXlOYW1lS2V5IikpOworICAgIHJl
dHVybiBrZXk7Cit9CisKK1N0cmluZyBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6ZGF0YWJhc2VE
ZXRhaWxzRXhwZWN0ZWRVc2FnZUtleSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJp
bmcsIGtleSwgKCJXZWJEYXRhYmFzZU1hbmFnZXJEYXRhYmFzZURldGFpbHNFeHBlY3RlZFVzYWdl
S2V5IikpOworICAgIHJldHVybiBrZXk7Cit9CisKK1N0cmluZyBXZWJEYXRhYmFzZU1hbmFnZXJQ
cm94eTo6ZGF0YWJhc2VEZXRhaWxzQ3VycmVudFVzYWdlS2V5KCkKK3sKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywga2V5LCAoIldlYkRhdGFiYXNlTWFuYWdlckRhdGFiYXNlRGV0YWls
c0N1cnJlbnRVc2FnZUtleSIpKTsKKyAgICByZXR1cm4ga2V5OworfQorCiBQYXNzUmVmUHRyPFdl
YkRhdGFiYXNlTWFuYWdlclByb3h5PiBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6Y3JlYXRlKFdl
YkNvbnRleHQqIHdlYkNvbnRleHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJEYXRh
YmFzZU1hbmFnZXJQcm94eSh3ZWJDb250ZXh0KSk7CkBAIC01MCwyMiArOTksNzQgQEAgV2ViRGF0
YWJhc2VNYW5hZ2VyUHJveHk6On5XZWJEYXRhYmFzZU1hbgogCiB2b2lkIFdlYkRhdGFiYXNlTWFu
YWdlclByb3h5OjppbnZhbGlkYXRlKCkKIHsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9k
YXRhYmFzZU9yaWdpbnNDYWxsYmFja3MpOworICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2Fy
cmF5Q2FsbGJhY2tzKTsKIAogICAgIG1fd2ViQ29udGV4dCA9IDA7CiB9CiAKLXZvaWQgV2ViRGF0
YWJhc2VNYW5hZ2VyUHJveHk6OmdldERhdGFiYXNlT3JpZ2lucyhQYXNzUmVmUHRyPERhdGFiYXNl
T3JpZ2luc0NhbGxiYWNrPiBwcnBDYWxsYmFjaykKK3ZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyUHJv
eHk6OmdldERhdGFiYXNlc0J5T3JpZ2luKFBhc3NSZWZQdHI8QXJyYXlDYWxsYmFjaz4gcHJwQ2Fs
bGJhY2spCiB7Ci0gICAgUmVmUHRyPERhdGFiYXNlT3JpZ2luc0NhbGxiYWNrPiBjYWxsYmFjayA9
IHBycENhbGxiYWNrOworICAgIFJlZlB0cjxBcnJheUNhbGxiYWNrPiBjYWxsYmFjayA9IHBycENh
bGxiYWNrOwogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OwotICAgIG1fZGF0YWJhc2VPcmlnaW5zQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFj
ay5yZWxlYXNlKCkpOworICAgIG1fYXJyYXlDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxi
YWNrLnJlbGVhc2UoKSk7CisgICAgbV93ZWJDb250ZXh0LT5wcm9jZXNzKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYkRhdGFiYXNlTWFuYWdlcjo6R2V0RGF0YWJhc2VzQnlPcmlnaW4oY2FsbGJhY2tJRCks
IDApOworfQorCisKK3ZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmRpZEdldERhdGFiYXNl
c0J5T3JpZ2luKGNvbnN0IFZlY3RvcjxPcmlnaW5BbmREYXRhYmFzZXM+JiBvcmlnaW5BbmREYXRh
YmFzZXNWZWN0b3IsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgUmVmUHRyPEFycmF5Q2Fs
bGJhY2s+IGNhbGxiYWNrID0gbV9hcnJheUNhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpOworICAg
IGlmICghY2FsbGJhY2spIHsKKyAgICAgICAgLy8gRklYTUU6IExvZyBlcnJvciBvciBhc3NlcnQu
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaXplX3Qgb3JpZ2luQW5kRGF0YWJhc2Vz
Q291bnQgPSBvcmlnaW5BbmREYXRhYmFzZXNWZWN0b3Iuc2l6ZSgpOworICAgIFZlY3RvcjxSZWZQ
dHI8QVBJT2JqZWN0PiA+IHJlc3VsdChvcmlnaW5BbmREYXRhYmFzZXNDb3VudCk7CisKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG9yaWdpbkFuZERhdGFiYXNlc0NvdW50OyArK2kpIHsKKyAg
ICAgICAgY29uc3QgT3JpZ2luQW5kRGF0YWJhc2VzJiBvcmlnaW5BbmREYXRhYmFzZXMgPSBvcmln
aW5BbmREYXRhYmFzZXNWZWN0b3JbaV07CisgICAgCisgICAgICAgIFJlZlB0cjxBUElPYmplY3Q+
IG9yaWdpbiA9IFdlYlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUob3JpZ2luQW5kRGF0YWJhc2VzLm9y
aWdpbklkZW50aWZpZXIpOworICAgIAorICAgICAgICBzaXplX3QgZGF0YWJhc2VzQ291bnQgPSBv
cmlnaW5BbmREYXRhYmFzZXMuZGF0YWJhc2VzLnNpemUoKTsKKyAgICAgICAgVmVjdG9yPFJlZlB0
cjxBUElPYmplY3Q+ID4gZGF0YWJhc2VzKGRhdGFiYXNlc0NvdW50KTsKKyAgICAKKyAgICAgICAg
Zm9yIChzaXplX3QgaiA9IDA7IGogPCBkYXRhYmFzZXNDb3VudDsgKytqKSB7CisgICAgICAgICAg
ICBjb25zdCBEYXRhYmFzZURldGFpbHMmIGRldGFpbHMgPSBvcmlnaW5BbmREYXRhYmFzZXMuZGF0
YWJhc2VzW2ldOworICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxBUElPYmplY3Q+
ID4gZGV0YWlsc01hcDsKKworICAgICAgICAgICAgZGV0YWlsc01hcC5zZXQoZGF0YWJhc2VEZXRh
aWxzTmFtZUtleSgpLCBXZWJTdHJpbmc6OmNyZWF0ZShkZXRhaWxzLm5hbWUoKSkpOworICAgICAg
ICAgICAgZGV0YWlsc01hcC5zZXQoZGF0YWJhc2VEZXRhaWxzRGlzcGxheU5hbWVLZXkoKSwgV2Vi
U3RyaW5nOjpjcmVhdGUoZGV0YWlscy5kaXNwbGF5TmFtZSgpKSk7CisgICAgICAgICAgICBkZXRh
aWxzTWFwLnNldChkYXRhYmFzZURldGFpbHNFeHBlY3RlZFVzYWdlS2V5KCksIFdlYlVJbnQ2NDo6
Y3JlYXRlKGRldGFpbHMuZXhwZWN0ZWRVc2FnZSgpKSk7CisgICAgICAgICAgICBkZXRhaWxzTWFw
LnNldChkYXRhYmFzZURldGFpbHNDdXJyZW50VXNhZ2VLZXkoKSwgV2ViVUludDY0OjpjcmVhdGUo
ZGV0YWlscy5jdXJyZW50VXNhZ2UoKSkpOworICAgICAgICAgICAgZGF0YWJhc2VzLmFwcGVuZChJ
bW11dGFibGVEaWN0aW9uYXJ5OjphZG9wdChkZXRhaWxzTWFwKSk7CisgICAgICAgIH0KKworICAg
ICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEFQSU9iamVjdD4gPiBvcmlnaW5BbmREYXRhYmFz
ZXNNYXA7CisgICAgICAgIG9yaWdpbkFuZERhdGFiYXNlc01hcC5zZXQob3JpZ2luS2V5KCksIG9y
aWdpbik7CisgICAgICAgIG9yaWdpbkFuZERhdGFiYXNlc01hcC5zZXQob3JpZ2luUXVvdGFLZXko
KSwgV2ViVUludDY0OjpjcmVhdGUob3JpZ2luQW5kRGF0YWJhc2VzLm9yaWdpblF1b3RhKSk7Cisg
ICAgICAgIG9yaWdpbkFuZERhdGFiYXNlc01hcC5zZXQob3JpZ2luVXNhZ2VLZXkoKSwgV2ViVUlu
dDY0OjpjcmVhdGUob3JpZ2luQW5kRGF0YWJhc2VzLm9yaWdpblVzYWdlKSk7CisgICAgICAgIG9y
aWdpbkFuZERhdGFiYXNlc01hcC5zZXQoZGF0YWJhc2VEZXRhaWxzS2V5KCksIEltbXV0YWJsZUFy
cmF5OjphZG9wdChkYXRhYmFzZXMpKTsKKworICAgICAgICByZXN1bHQuYXBwZW5kKEltbXV0YWJs
ZURpY3Rpb25hcnk6OmFkb3B0KG9yaWdpbkFuZERhdGFiYXNlc01hcCkpOworICAgIH0KKworICAg
IFJlZlB0cjxJbW11dGFibGVBcnJheT4gcmVzdWx0QXJyYXkgPSBJbW11dGFibGVBcnJheTo6YWRv
cHQocmVzdWx0KTsKKyAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVl
KHJlc3VsdEFycmF5LmdldCgpKTsKK30KKwordm9pZCBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6
Z2V0RGF0YWJhc2VPcmlnaW5zKFBhc3NSZWZQdHI8QXJyYXlDYWxsYmFjaz4gcHJwQ2FsbGJhY2sp
Cit7CisgICAgUmVmUHRyPEFycmF5Q2FsbGJhY2s+IGNhbGxiYWNrID0gcHJwQ2FsbGJhY2s7Cisg
ICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV9h
cnJheUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2sucmVsZWFzZSgpKTsKICAgICBt
X3dlYkNvbnRleHQtPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViRGF0YWJhc2VNYW5hZ2Vy
OjpHZXREYXRhYmFzZU9yaWdpbnMoY2FsbGJhY2tJRCksIDApOwogfQogCiB2b2lkIFdlYkRhdGFi
YXNlTWFuYWdlclByb3h5OjpkaWRHZXREYXRhYmFzZU9yaWdpbnMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIG9yaWdpbklkZW50aWZpZXJzLCB1aW50NjRfdCBjYWxsYmFja0lEKQogewotICAgIFJlZlB0
cjxEYXRhYmFzZU9yaWdpbnNDYWxsYmFjaz4gY2FsbGJhY2sgPSBtX2RhdGFiYXNlT3JpZ2luc0Nh
bGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpOworICAgIFJlZlB0cjxBcnJheUNhbGxiYWNrPiBjYWxs
YmFjayA9IG1fYXJyYXlDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxi
YWNrKSB7CiAgICAgICAgIC8vIEZJWE1FOiBMb2cgZXJyb3Igb3IgYXNzZXJ0LgogICAgICAgICBy
ZXR1cm47CkBAIC04MCwxMSArMTgxLDEzIEBAIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6
OmRpZEdldERhdGEKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVl
KEltbXV0YWJsZUFycmF5OjphZG9wdChzZWN1cml0eU9yaWdpbnMpLmdldCgpKTsKIH0KIAotdm9p
ZCBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6ZGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2luKFdlYlNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW4pCit2b2lkIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5OjpkZWxl
dGVEYXRhYmFzZVdpdGhOYW1lRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlm
aWVyLCBXZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewotICAgIGlmICghb3JpZ2luKQotICAg
ICAgICByZXR1cm47CisgICAgbV93ZWJDb250ZXh0LT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6
OldlYkRhdGFiYXNlTWFuYWdlcjo6RGVsZXRlRGF0YWJhc2VXaXRoTmFtZUZvck9yaWdpbihkYXRh
YmFzZUlkZW50aWZpZXIsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkpLCAwKTsKK30KIAor
dm9pZCBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6ZGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2luKFdl
YlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit7CiAgICAgbV93ZWJDb250ZXh0LT5wcm9jZXNzKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkRhdGFiYXNlTWFuYWdlcjo6RGVsZXRlRGF0YWJhc2VzRm9yT3Jp
Z2luKG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkpLCAwKTsKIH0KIApAQCAtOTMsNSArMTk2
LDEwIEBAIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbEQKICAgICBtX3dl
YkNvbnRleHQtPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViRGF0YWJhc2VNYW5hZ2VyOjpE
ZWxldGVBbGxEYXRhYmFzZXMoKSwgMCk7CiB9CiAKK3ZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyUHJv
eHk6OnNldFF1b3RhRm9yT3JpZ2luKFdlYlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIHVpbnQ2NF90
IHF1b3RhKQoreworICAgIG1fd2ViQ29udGV4dC0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJEYXRhYmFzZU1hbmFnZXI6OlNldFF1b3RhRm9yT3JpZ2luKG9yaWdpbi0+ZGF0YWJhc2VJZGVu
dGlmaWVyKCksIHF1b3RhKSwgMCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCkluZGV4
OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5LmgJKHJldmlzaW9u
IDc0NjYyKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkuaAko
d29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgog
I2luY2x1ZGUgIkFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkdlbmVyaWNDYWxsYmFjay5oIgorI2lu
Y2x1ZGUgIk9yaWdpbkFuZERhdGFiYXNlcy5oIgogI2luY2x1ZGUgIldLQmFzZS5oIgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTQ0LDcg
KzQ1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJDb250ZXh0OwogY2xhc3MgV2Vi
U2VjdXJpdHlPcmlnaW47CiAKLXR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPFdLQXJyYXlSZWY+IERh
dGFiYXNlT3JpZ2luc0NhbGxiYWNrOwordHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8V0tBcnJheVJl
Zj4gQXJyYXlDYWxsYmFjazsKIAogY2xhc3MgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkgOiBwdWJs
aWMgQVBJT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTU1LDkgKzU2LDIxIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgaW52YWxpZGF0ZSgpOwogCi0gICAgdm9pZCBnZXREYXRhYmFzZU9yaWdpbnMoUGFzc1Jl
ZlB0cjxEYXRhYmFzZU9yaWdpbnNDYWxsYmFjaz4pOworICAgIHZvaWQgZ2V0RGF0YWJhc2VzQnlP
cmlnaW4oUGFzc1JlZlB0cjxBcnJheUNhbGxiYWNrPik7CisgICAgdm9pZCBnZXREYXRhYmFzZU9y
aWdpbnMoUGFzc1JlZlB0cjxBcnJheUNhbGxiYWNrPik7CisgICAgdm9pZCBkZWxldGVEYXRhYmFz
ZVdpdGhOYW1lRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyLCBXZWJT
ZWN1cml0eU9yaWdpbiopOwogICAgIHZvaWQgZGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2luKFdlYlNl
Y3VyaXR5T3JpZ2luKik7CiAgICAgdm9pZCBkZWxldGVBbGxEYXRhYmFzZXMoKTsKKyAgICB2b2lk
IHNldFF1b3RhRm9yT3JpZ2luKFdlYlNlY3VyaXR5T3JpZ2luKiwgdWludDY0X3QgcXVvdGEpOwor
ICAgIAorICAgIHN0YXRpYyBTdHJpbmcgb3JpZ2luS2V5KCk7CisgICAgc3RhdGljIFN0cmluZyBv
cmlnaW5RdW90YUtleSgpOworICAgIHN0YXRpYyBTdHJpbmcgb3JpZ2luVXNhZ2VLZXkoKTsKKyAg
ICBzdGF0aWMgU3RyaW5nIGRhdGFiYXNlRGV0YWlsc0tleSgpOworICAgIHN0YXRpYyBTdHJpbmcg
ZGF0YWJhc2VEZXRhaWxzTmFtZUtleSgpOworICAgIHN0YXRpYyBTdHJpbmcgZGF0YWJhc2VEZXRh
aWxzRGlzcGxheU5hbWVLZXkoKTsKKyAgICBzdGF0aWMgU3RyaW5nIGRhdGFiYXNlRGV0YWlsc0V4
cGVjdGVkVXNhZ2VLZXkoKTsKKyAgICBzdGF0aWMgU3RyaW5nIGRhdGFiYXNlRGV0YWlsc0N1cnJl
bnRVc2FnZUtleSgpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViRGF0YWJhc2VNYW5hZ2VyUHJv
eHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJ
UEM6OkFyZ3VtZW50RGVjb2RlciopOwogCkBAIC02NywxMCArODAsMTEgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KIAogICAgIC8v
IE1lc3NhZ2UgaGFuZGxlcnMuCisgICAgdm9pZCBkaWRHZXREYXRhYmFzZXNCeU9yaWdpbihjb25z
dCBWZWN0b3I8T3JpZ2luQW5kRGF0YWJhc2VzPiYgb3JpZ2luQW5kRGF0YWJhc2VzLCB1aW50NjRf
dCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRpZEdldERhdGFiYXNlT3JpZ2lucyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgb3JpZ2luSWRlbnRpZmllcnMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogCiAg
ICAgV2ViQ29udGV4dCogbV93ZWJDb250ZXh0OwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0
cjxEYXRhYmFzZU9yaWdpbnNDYWxsYmFjaz4gPiBtX2RhdGFiYXNlT3JpZ2luc0NhbGxiYWNrczsK
KyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8QXJyYXlDYWxsYmFjaz4gPiBtX2FycmF5Q2Fs
bGJhY2tzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgkocmV2
aXNpb24gNzQ2NjIpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94
eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjEsNSArMjEsNiBAQAogIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogCiBtZXNzYWdlcyAtPiBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eSB7CisgICAgRGlkR2V0
RGF0YWJhc2VzQnlPcmlnaW4oVmVjdG9yPFdlYktpdDo6T3JpZ2luQW5kRGF0YWJhc2VzPiBvcmln
aW5BbmREYXRhYmFzZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIERpZEdldERhdGFiYXNl
T3JpZ2lucyhWZWN0b3I8V1RGOjpTdHJpbmc+IG9yaWdpbklkZW50aWZpZXJzLCB1aW50NjRfdCBj
YWxsYmFja0lEKQogfQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tEYXRhYmFzZU1h
bmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLRGF0YWJh
c2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gNzQ2NjIpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0RhdGFiYXNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDMyICszOSwxMDgg
QEAgV0tUeXBlSUQgV0tEYXRhYmFzZU1hbmFnZXJHZXRUeXBlSUQoKQogICAgIHJldHVybiB0b0FQ
SShXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6QVBJVHlwZSk7CiB9CiAKLXZvaWQgV0tEYXRhYmFz
ZU1hbmFnZXJHZXREYXRhYmFzZU9yaWdpbnMoV0tEYXRhYmFzZU1hbmFnZXJSZWYgZGF0YWJhc2VN
YW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0RhdGFiYXNlTWFuYWdlckdldERhdGFiYXNlT3JpZ2lu
c0Z1bmN0aW9uIGNhbGxiYWNrKQorV0tTdHJpbmdSZWYgV0tEYXRhYmFzZU1hbmFnZXJHZXRPcmln
aW5LZXkoKQogewotICAgIHRvSW1wbChkYXRhYmFzZU1hbmFnZXIpLT5nZXREYXRhYmFzZU9yaWdp
bnMoRGF0YWJhc2VPcmlnaW5zQ2FsbGJhY2s6OmNyZWF0ZShjb250ZXh0LCBjYWxsYmFjaykpOwor
ICAgIHN0YXRpYyBXZWJTdHJpbmcqIGtleSA9IFdlYlN0cmluZzo6Y3JlYXRlKFdlYkRhdGFiYXNl
TWFuYWdlclByb3h5OjpvcmlnaW5LZXkoKSkucmVsZWFzZVJlZigpOworICAgIHJldHVybiB0b0FQ
SShrZXkpOworfQorCitXS1N0cmluZ1JlZiBXS0RhdGFiYXNlTWFuYWdlckdldE9yaWdpblF1b3Rh
S2V5KCkKK3sKKyAgICBzdGF0aWMgV2ViU3RyaW5nKiBrZXkgPSBXZWJTdHJpbmc6OmNyZWF0ZShX
ZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6b3JpZ2luUXVvdGFLZXkoKSkucmVsZWFzZVJlZigpOwor
ICAgIHJldHVybiB0b0FQSShrZXkpOworfQorCitXS1N0cmluZ1JlZiBXS0RhdGFiYXNlTWFuYWdl
ckdldE9yaWdpblVzYWdlS2V5KCkKK3sKKyAgICBzdGF0aWMgV2ViU3RyaW5nKiBrZXkgPSBXZWJT
dHJpbmc6OmNyZWF0ZShXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6b3JpZ2luVXNhZ2VLZXkoKSku
cmVsZWFzZVJlZigpOworICAgIHJldHVybiB0b0FQSShrZXkpOworfQorCitXS1N0cmluZ1JlZiBX
S0RhdGFiYXNlTWFuYWdlckdldERhdGFiYXNlRGV0YWlsc0tleSgpCit7CisgICAgc3RhdGljIFdl
YlN0cmluZyoga2V5ID0gV2ViU3RyaW5nOjpjcmVhdGUoV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6
OmRhdGFiYXNlRGV0YWlsc0tleSgpKS5yZWxlYXNlUmVmKCk7CisgICAgcmV0dXJuIHRvQVBJKGtl
eSk7Cit9CisKK1dLU3RyaW5nUmVmIFdLRGF0YWJhc2VNYW5hZ2VyR2V0RGF0YWJhc2VEZXRhaWxz
TmFtZUtleSgpCit7CisgICAgc3RhdGljIFdlYlN0cmluZyoga2V5ID0gV2ViU3RyaW5nOjpjcmVh
dGUoV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmRhdGFiYXNlRGV0YWlsc05hbWVLZXkoKSkucmVs
ZWFzZVJlZigpOworICAgIHJldHVybiB0b0FQSShrZXkpOworfQorCitXS1N0cmluZ1JlZiBXS0Rh
dGFiYXNlTWFuYWdlckdldERhdGFiYXNlRGV0YWlsc0Rpc3BsYXlOYW1lS2V5KCkKK3sKKyAgICBz
dGF0aWMgV2ViU3RyaW5nKiBrZXkgPSBXZWJTdHJpbmc6OmNyZWF0ZShXZWJEYXRhYmFzZU1hbmFn
ZXJQcm94eTo6ZGF0YWJhc2VEZXRhaWxzRGlzcGxheU5hbWVLZXkoKSkucmVsZWFzZVJlZigpOwor
ICAgIHJldHVybiB0b0FQSShrZXkpOworfQorCitXS1N0cmluZ1JlZiBXS0RhdGFiYXNlTWFuYWdl
ckdldERhdGFiYXNlRGV0YWlsc0V4cGVjdGVkVXNhZ2VLZXkoKQoreworICAgIHN0YXRpYyBXZWJT
dHJpbmcqIGtleSA9IFdlYlN0cmluZzo6Y3JlYXRlKFdlYkRhdGFiYXNlTWFuYWdlclByb3h5Ojpk
YXRhYmFzZURldGFpbHNFeHBlY3RlZFVzYWdlS2V5KCkpLnJlbGVhc2VSZWYoKTsKKyAgICByZXR1
cm4gdG9BUEkoa2V5KTsKK30KKworV0tTdHJpbmdSZWYgV0tEYXRhYmFzZU1hbmFnZXJHZXREYXRh
YmFzZURldGFpbHNDdXJyZW50VXNhZ2VLZXkoKQoreworICAgIHN0YXRpYyBXZWJTdHJpbmcqIGtl
eSA9IFdlYlN0cmluZzo6Y3JlYXRlKFdlYkRhdGFiYXNlTWFuYWdlclByb3h5OjpkYXRhYmFzZURl
dGFpbHNDdXJyZW50VXNhZ2VLZXkoKSkucmVsZWFzZVJlZigpOworICAgIHJldHVybiB0b0FQSShr
ZXkpOworfQorCit2b2lkIFdLRGF0YWJhc2VNYW5hZ2VyR2V0RGF0YWJhc2VzQnlPcmlnaW4oV0tE
YXRhYmFzZU1hbmFnZXJSZWYgZGF0YWJhc2VNYW5hZ2VyUmVmLCB2b2lkKiBjb250ZXh0LCBXS0Rh
dGFiYXNlTWFuYWdlckdldERhdGFiYXNlc0J5T3JpZ2luRnVuY3Rpb24gY2FsbGJhY2spCit7Cisg
ICAgdG9JbXBsKGRhdGFiYXNlTWFuYWdlclJlZiktPmdldERhdGFiYXNlc0J5T3JpZ2luKEFycmF5
Q2FsbGJhY2s6OmNyZWF0ZShjb250ZXh0LCBjYWxsYmFjaykpOworfQorCisjaWZkZWYgX19CTE9D
S1NfXworc3RhdGljIHZvaWQgY2FsbEdldERhdGFiYXNlc0J5T3JpZ2luQmxvY2tBbmREaXNwb3Nl
KFdLQXJyYXlSZWYgcmVzdWx0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3JSZWYsIHZvaWQqIGNvbnRl
eHQpCit7CisgICAgV0tEYXRhYmFzZU1hbmFnZXJHZXREYXRhYmFzZXNCeU9yaWdpbkJsb2NrIGJs
b2NrID0gKFdLRGF0YWJhc2VNYW5hZ2VyR2V0RGF0YWJhc2VzQnlPcmlnaW5CbG9jayljb250ZXh0
OworICAgIGJsb2NrKHJlc3VsdFZhbHVlLCBlcnJvclJlZik7CisgICAgQmxvY2tfcmVsZWFzZShi
bG9jayk7Cit9CisKK3ZvaWQgV0tEYXRhYmFzZU1hbmFnZXJHZXREYXRhYmFzZXNCeU9yaWdpbl9i
KFdLRGF0YWJhc2VNYW5hZ2VyUmVmIGRhdGFiYXNlTWFuYWdlclJlZiwgV0tEYXRhYmFzZU1hbmFn
ZXJHZXREYXRhYmFzZXNCeU9yaWdpbkJsb2NrIGJsb2NrKQoreworICAgIFdLRGF0YWJhc2VNYW5h
Z2VyR2V0RGF0YWJhc2VzQnlPcmlnaW4oZGF0YWJhc2VNYW5hZ2VyUmVmLCBCbG9ja19jb3B5KGJs
b2NrKSwgY2FsbEdldERhdGFiYXNlc0J5T3JpZ2luQmxvY2tBbmREaXNwb3NlKTsKK30KKyNlbmRp
ZgorCit2b2lkIFdLRGF0YWJhc2VNYW5hZ2VyR2V0RGF0YWJhc2VPcmlnaW5zKFdLRGF0YWJhc2VN
YW5hZ2VyUmVmIGRhdGFiYXNlTWFuYWdlclJlZiwgdm9pZCogY29udGV4dCwgV0tEYXRhYmFzZU1h
bmFnZXJHZXREYXRhYmFzZU9yaWdpbnNGdW5jdGlvbiBjYWxsYmFjaykKK3sKKyAgICB0b0ltcGwo
ZGF0YWJhc2VNYW5hZ2VyUmVmKS0+Z2V0RGF0YWJhc2VPcmlnaW5zKEFycmF5Q2FsbGJhY2s6OmNy
ZWF0ZShjb250ZXh0LCBjYWxsYmFjaykpOwogfQogCiAjaWZkZWYgX19CTE9DS1NfXwotc3RhdGlj
IHZvaWQgY2FsbEdldERhdGFiYXNlT3JpZ2luc0Jsb2NrQmxvY2tBbmREaXNwb3NlKFdLQXJyYXlS
ZWYgcmVzdWx0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IsIHZvaWQqIGNvbnRleHQpCitzdGF0aWMg
dm9pZCBjYWxsR2V0RGF0YWJhc2VPcmlnaW5zQmxvY2tCbG9ja0FuZERpc3Bvc2UoV0tBcnJheVJl
ZiByZXN1bHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJvclJlZiwgdm9pZCogY29udGV4dCkKIHsKICAg
ICBXS0RhdGFiYXNlTWFuYWdlckdldERhdGFiYXNlT3JpZ2luc0Jsb2NrIGJsb2NrID0gKFdLRGF0
YWJhc2VNYW5hZ2VyR2V0RGF0YWJhc2VPcmlnaW5zQmxvY2spY29udGV4dDsKLSAgICBibG9jayhy
ZXN1bHRWYWx1ZSwgZXJyb3IpOworICAgIGJsb2NrKHJlc3VsdFZhbHVlLCBlcnJvclJlZik7CiAg
ICAgQmxvY2tfcmVsZWFzZShibG9jayk7CiB9CiAKLXZvaWQgV0tEYXRhYmFzZU1hbmFnZXJHZXRE
YXRhYmFzZU9yaWdpbnNfYihXS0RhdGFiYXNlTWFuYWdlclJlZiBkYXRhYmFzZU1hbmFnZXIsIFdL
RGF0YWJhc2VNYW5hZ2VyR2V0RGF0YWJhc2VPcmlnaW5zQmxvY2sgYmxvY2spCit2b2lkIFdLRGF0
YWJhc2VNYW5hZ2VyR2V0RGF0YWJhc2VPcmlnaW5zX2IoV0tEYXRhYmFzZU1hbmFnZXJSZWYgZGF0
YWJhc2VNYW5hZ2VyUmVmLCBXS0RhdGFiYXNlTWFuYWdlckdldERhdGFiYXNlT3JpZ2luc0Jsb2Nr
IGJsb2NrKQogewotICAgIFdLRGF0YWJhc2VNYW5hZ2VyR2V0RGF0YWJhc2VPcmlnaW5zKGRhdGFi
YXNlTWFuYWdlciwgQmxvY2tfY29weShibG9jayksIGNhbGxHZXREYXRhYmFzZU9yaWdpbnNCbG9j
a0Jsb2NrQW5kRGlzcG9zZSk7CisgICAgV0tEYXRhYmFzZU1hbmFnZXJHZXREYXRhYmFzZU9yaWdp
bnMoZGF0YWJhc2VNYW5hZ2VyUmVmLCBCbG9ja19jb3B5KGJsb2NrKSwgY2FsbEdldERhdGFiYXNl
T3JpZ2luc0Jsb2NrQmxvY2tBbmREaXNwb3NlKTsKIH0KICNlbmRpZgogCi12b2lkIFdLRGF0YWJh
c2VNYW5hZ2VyRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2luKFdLRGF0YWJhc2VNYW5hZ2VyUmVmIGRh
dGFiYXNlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4pCit2b2lkIFdLRGF0YWJh
c2VNYW5hZ2VyRGVsZXRlRGF0YWJhc2VzV2l0aE5hbWVGb3JPcmlnaW4oV0tEYXRhYmFzZU1hbmFn
ZXJSZWYgZGF0YWJhc2VNYW5hZ2VyUmVmLCBXS1N0cmluZ1JlZiBkYXRhYmFzZU5hbWVSZWYsIFdL
U2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luUmVmKQogewotICAgIHRvSW1wbChkYXRhYmFzZU1hbmFn
ZXIpLT5kZWxldGVEYXRhYmFzZXNGb3JPcmlnaW4odG9JbXBsKG9yaWdpbikpOworICAgIHRvSW1w
bChkYXRhYmFzZU1hbmFnZXJSZWYpLT5kZWxldGVEYXRhYmFzZVdpdGhOYW1lRm9yT3JpZ2luKHRv
V1RGU3RyaW5nKGRhdGFiYXNlTmFtZVJlZiksIHRvSW1wbChvcmlnaW5SZWYpKTsKIH0KIAotdm9p
ZCBXS0RhdGFiYXNlTWFuYWdlckRlbGV0ZUFsbERhdGFiYXNlcyhXS0RhdGFiYXNlTWFuYWdlclJl
ZiBkYXRhYmFzZU1hbmFnZXIpCit2b2lkIFdLRGF0YWJhc2VNYW5hZ2VyRGVsZXRlRGF0YWJhc2Vz
Rm9yT3JpZ2luKFdLRGF0YWJhc2VNYW5hZ2VyUmVmIGRhdGFiYXNlTWFuYWdlclJlZiwgV0tTZWN1
cml0eU9yaWdpblJlZiBvcmlnaW5SZWYpCiB7Ci0gICAgdG9JbXBsKGRhdGFiYXNlTWFuYWdlcikt
PmRlbGV0ZUFsbERhdGFiYXNlcygpOworICAgIHRvSW1wbChkYXRhYmFzZU1hbmFnZXJSZWYpLT5k
ZWxldGVEYXRhYmFzZXNGb3JPcmlnaW4odG9JbXBsKG9yaWdpblJlZikpOwogfQogCit2b2lkIFdL
RGF0YWJhc2VNYW5hZ2VyRGVsZXRlQWxsRGF0YWJhc2VzKFdLRGF0YWJhc2VNYW5hZ2VyUmVmIGRh
dGFiYXNlTWFuYWdlclJlZikKK3sKKyAgICB0b0ltcGwoZGF0YWJhc2VNYW5hZ2VyUmVmKS0+ZGVs
ZXRlQWxsRGF0YWJhc2VzKCk7Cit9CisKK3ZvaWQgV0tEYXRhYmFzZU1hbmFnZXJTZXRRdW90YUZv
ck9yaWdpbihXS0RhdGFiYXNlTWFuYWdlclJlZiBkYXRhYmFzZU1hbmFnZXJSZWYsIFdLU2VjdXJp
dHlPcmlnaW5SZWYgb3JpZ2luUmVmLCB1aW50NjRfdCBxdW90YSkKK3sKKyAgICB0b0ltcGwoZGF0
YWJhc2VNYW5hZ2VyUmVmKS0+c2V0UXVvdGFGb3JPcmlnaW4odG9JbXBsKG9yaWdpblJlZiksIHF1
b3RhKTsKK30KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLRGF0YWJhc2VNYW5hZ2Vy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tEYXRhYmFzZU1hbmFn
ZXIuaAkocmV2aXNpb24gNzQ2NjIpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0RhdGFi
YXNlTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxNSArMzQsNTUgQEAgZXh0ZXJuICJD
IiB7CiAKIFdLX0VYUE9SVCBXS1R5cGVJRCBXS0RhdGFiYXNlTWFuYWdlckdldFR5cGVJRCgpOwog
CisvKiBWYWx1ZSB0eXBlOiBXS1NlY3VyaXR5T3JpZ2luUmVmICovCitXS19FWFBPUlQgV0tTdHJp
bmdSZWYgV0tEYXRhYmFzZU1hbmFnZXJHZXRPcmlnaW5LZXkoKTsKKworLyogVmFsdWUgdHlwZTog
V0tVSW50NjRSZWYgKi8KK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0RhdGFiYXNlTWFuYWdlckdl
dE9yaWdpblF1b3RhS2V5KCk7CisKKy8qIFZhbHVlIHR5cGU6IFdLVUludDY0UmVmICovCitXS19F
WFBPUlQgV0tTdHJpbmdSZWYgV0tEYXRhYmFzZU1hbmFnZXJHZXRPcmlnaW5Vc2FnZUtleSgpOwor
CisvKiBWYWx1ZSB0eXBlOiBXS0FycmF5UmVmIChhcnJheSBvZiBXS0RpY3Rpb25hcnlSZWYncyB3
aXRoIGtleXMgdGhhdCBpbmNsdWRlOgorICAgICAgIC0gV0tEYXRhYmFzZU1hbmFnZXJHZXREYXRh
YmFzZU5hbWVLZXkoKQorICAgICAgIC0gV0tEYXRhYmFzZU1hbmFnZXJHZXREYXRhYmFzZURpc3Bs
YXlOYW1lS2V5KCkKKyAgICAgICAtIFdLRGF0YWJhc2VNYW5hZ2VyR2V0RGF0YWJhc2VFeHBlY3Rl
ZFVzYWdlS2V5KCkKKyAgICAgICAtIFdLRGF0YWJhc2VNYW5hZ2VyR2V0RGF0YWJhc2VDdXJyZW50
VXNhZ2VLZXkoKQorICovCitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tEYXRhYmFzZU1hbmFnZXJH
ZXREYXRhYmFzZURldGFpbHNLZXkoKTsKKworLyogVmFsdWUgdHlwZTogV0tTdHJpbmdSZWYgKi8K
K1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0RhdGFiYXNlTWFuYWdlckdldERhdGFiYXNlRGV0YWls
c05hbWVLZXkoKTsKKworLyogVmFsdWUgdHlwZTogV0tTdHJpbmdSZWYgKi8KK1dLX0VYUE9SVCBX
S1N0cmluZ1JlZiBXS0RhdGFiYXNlTWFuYWdlckdldERhdGFiYXNlRGV0YWlsc0Rpc3BsYXlOYW1l
S2V5KCk7CisKKy8qIFZhbHVlIHR5cGU6IFdLVUludDY0UmVmICovCitXS19FWFBPUlQgV0tTdHJp
bmdSZWYgV0tEYXRhYmFzZU1hbmFnZXJHZXREYXRhYmFzZURldGFpbHNFeHBlY3RlZFVzYWdlS2V5
KCk7CisKKy8qIFZhbHVlIHR5cGU6IFdLVUludDY0UmVmICovCitXS19FWFBPUlQgV0tTdHJpbmdS
ZWYgV0tEYXRhYmFzZU1hbmFnZXJHZXREYXRhYmFzZURldGFpbHNDdXJyZW50VXNhZ2VLZXkoKTsK
KwordHlwZWRlZiB2b2lkICgqV0tEYXRhYmFzZU1hbmFnZXJHZXREYXRhYmFzZXNCeU9yaWdpbkZ1
bmN0aW9uKShXS0FycmF5UmVmLCBXS0Vycm9yUmVmLCB2b2lkKik7CitXS19FWFBPUlQgdm9pZCBX
S0RhdGFiYXNlTWFuYWdlckdldERhdGFiYXNlc0J5T3JpZ2luKFdLRGF0YWJhc2VNYW5hZ2VyUmVm
IGNvbnRleHRSZWYsIHZvaWQqIGNvbnRleHQsIFdLRGF0YWJhc2VNYW5hZ2VyR2V0RGF0YWJhc2Vz
QnlPcmlnaW5GdW5jdGlvbiBmdW5jdGlvbik7CisjaWZkZWYgX19CTE9DS1NfXwordHlwZWRlZiB2
b2lkICheV0tEYXRhYmFzZU1hbmFnZXJHZXREYXRhYmFzZXNCeU9yaWdpbkJsb2NrKShXS0FycmF5
UmVmLCBXS0Vycm9yUmVmKTsKK1dLX0VYUE9SVCB2b2lkIFdLRGF0YWJhc2VNYW5hZ2VyR2V0RGF0
YWJhc2VzQnlPcmlnaW5fYihXS0RhdGFiYXNlTWFuYWdlclJlZiBkYXRhYmFzZU1hbmFnZXIsIFdL
RGF0YWJhc2VNYW5hZ2VyR2V0RGF0YWJhc2VzQnlPcmlnaW5CbG9jayBibG9jayk7CisjZW5kaWYK
KwogdHlwZWRlZiB2b2lkICgqV0tEYXRhYmFzZU1hbmFnZXJHZXREYXRhYmFzZU9yaWdpbnNGdW5j
dGlvbikoV0tBcnJheVJlZiwgV0tFcnJvclJlZiwgdm9pZCopOwogV0tfRVhQT1JUIHZvaWQgV0tE
YXRhYmFzZU1hbmFnZXJHZXREYXRhYmFzZU9yaWdpbnMoV0tEYXRhYmFzZU1hbmFnZXJSZWYgY29u
dGV4dFJlZiwgdm9pZCogY29udGV4dCwgV0tEYXRhYmFzZU1hbmFnZXJHZXREYXRhYmFzZU9yaWdp
bnNGdW5jdGlvbiBmdW5jdGlvbik7CiAjaWZkZWYgX19CTE9DS1NfXwogdHlwZWRlZiB2b2lkIChe
V0tEYXRhYmFzZU1hbmFnZXJHZXREYXRhYmFzZU9yaWdpbnNCbG9jaykoV0tBcnJheVJlZiwgV0tF
cnJvclJlZik7CiBXS19FWFBPUlQgdm9pZCBXS0RhdGFiYXNlTWFuYWdlckdldERhdGFiYXNlT3Jp
Z2luc19iKFdLRGF0YWJhc2VNYW5hZ2VyUmVmIGRhdGFiYXNlTWFuYWdlciwgV0tEYXRhYmFzZU1h
bmFnZXJHZXREYXRhYmFzZU9yaWdpbnNCbG9jayBibG9jayk7CiAjZW5kaWYKKworV0tfRVhQT1JU
IHZvaWQgV0tEYXRhYmFzZU1hbmFnZXJEZWxldGVEYXRhYmFzZXNXaXRoTmFtZUZvck9yaWdpbihX
S0RhdGFiYXNlTWFuYWdlclJlZiBkYXRhYmFzZU1hbmFnZXIsIFdLU3RyaW5nUmVmIGRhdGFiYXNl
TmFtZSwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4pOwogV0tfRVhQT1JUIHZvaWQgV0tEYXRh
YmFzZU1hbmFnZXJEZWxldGVEYXRhYmFzZXNGb3JPcmlnaW4oV0tEYXRhYmFzZU1hbmFnZXJSZWYg
ZGF0YWJhc2VNYW5hZ2VyLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbik7CiBXS19FWFBPUlQg
dm9pZCBXS0RhdGFiYXNlTWFuYWdlckRlbGV0ZUFsbERhdGFiYXNlcyhXS0RhdGFiYXNlTWFuYWdl
clJlZiBkYXRhYmFzZU1hbmFnZXIpOwogCitXS19FWFBPUlQgdm9pZCBXS0RhdGFiYXNlTWFuYWdl
clNldFF1b3RhRm9yT3JpZ2luKFdLRGF0YWJhc2VNYW5hZ2VyUmVmIGRhdGFiYXNlTWFuYWdlciwg
V0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIHVpbnQ2NF90IHF1b3RhKTsKKwogI2lmZGVmIF9f
Y3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiA3NDY2MikKKysrIFdlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01MjAsNiArNTIwLDggQEAKIAkJ
QkNDOEIzNzQxMjVGQjY5MDAwREU0NkE0IC8qIFdLR2VvbWV0cnkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQzhCMzczMTI1RkI2OTAwMERFNDZBNCAv
KiBXS0dlb21ldHJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9
OyB9OwogCQlCQ0M5MzhFMTExODBERTQ0MDA4NUU1RkUgLyogV0tDb250ZXh0UHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDOTM4RTAxMTgw
REU0NDAwODVFNUZFIC8qIFdLQ29udGV4dFByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0NCNzVDNjEyMDNBMUNFMDAyMjJEMUIgLyog
V2ViQ29udGV4dE1lc3NhZ2VLaW5kcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNDQjc1QzUxMjAzQTFDRTAwMjIyRDFCIC8qIFdlYkNvbnRleHRNZXNz
YWdlS2luZHMuaCAqLzsgfTsKKwkJQkNDRjY3MkQxMkM3RURGNzAwOEY5QzM1IC8qIE9yaWdpbkFu
ZERhdGFiYXNlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNDRjY3MkMxMkM3RURGNzAwOEY5QzM1IC8qIE9yaWdpbkFuZERhdGFiYXNlcy5oICovOyB9
OworCQlCQ0NGNjczMzEyQzdGMTVDMDA4RjlDMzUgLyogT3JpZ2luQW5kRGF0YWJhc2VzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQ0Y2NzMyMTJD
N0YxNUMwMDhGOUMzNSAvKiBPcmlnaW5BbmREYXRhYmFzZXMuY3BwICovOyB9OwogCQlCQ0QwMDQy
RDExMEMxRTI3MDAzQjhBNjcgLyogQ29yZVNlcnZpY2VzLmZyYW1ld29yayBpbiBGcmFtZXdvcmtz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDAwNDJDMTEwQzFFMjcwMDNC
OEE2NyAvKiBDb3JlU2VydmljZXMuZnJhbWV3b3JrICovOyB9OwogCQlCQ0QwMTM5QjExMEZBNDIw
MDAzQjhBNjcgLyogV0tGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkNEMDEzOTcxMTBGQTQyMDAwM0I4QTY3IC8qIFdLRnJhbWUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCUJDRDAxMzlDMTEwRkE0
MjAwMDNCOEE2NyAvKiBXS0ZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDRDAxMzk4MTEwRkE0MjAwMDNCOEE2NyAvKiBXS0ZyYW1lLmNwcCAq
LzsgfTsKQEAgLTExODksNiArMTE5MSw4IEBACiAJCUJDQzhCMzczMTI1RkI2OTAwMERFNDZBNCAv
KiBXS0dlb21ldHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLR2VvbWV0
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNDOTM4RTAxMTgwREU0NDAwODVF
NUZFIC8qIFdLQ29udGV4dFByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tDb250ZXh0UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0NC
NzVDNTEyMDNBMUNFMDAyMjJEMUIgLyogV2ViQ29udGV4dE1lc3NhZ2VLaW5kcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0TWVzc2FnZUtpbmRzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQ0Y2NzJDMTJDN0VERjcwMDhGOUMzNSAvKiBPcmln
aW5BbmREYXRhYmFzZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3JpZ2lu
QW5kRGF0YWJhc2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQ0Y2NzMyMTJD
N0YxNUMwMDhGOUMzNSAvKiBPcmlnaW5BbmREYXRhYmFzZXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gT3JpZ2luQW5kRGF0YWJhc2VzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkNEMDA0MkMxMTBDMUUyNzAwM0I4QTY3IC8qIENvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IENvcmVTZXJ2aWNlcy5mcmFtZXdvcms7IHBh
dGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrOyBz
b3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQlCQ0QwMTM5NzExMEZBNDIwMDAzQjhBNjcg
LyogV0tGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0ZyYW1lLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRDAxMzk4MTEwRkE0MjAwMDNCOEE2NyAv
KiBXS0ZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLRnJh
bWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYxNiw2ICsxNjIwLDggQEAK
IAkJCQk1MTI5MzVENjEyODhEMTk0MDBBNEI2OTUgLyogV2ViQ29udGV4dE1lbnVJdGVtLmggKi8s
CiAJCQkJNTEwRkJCOTgxMjg4Qzk1RTAwQUZGREY0IC8qIFdlYkNvbnRleHRNZW51SXRlbURhdGEu
Y3BwICovLAogCQkJCTUxMEZCQjk5MTI4OEM5NUUwMEFGRkRGNCAvKiBXZWJDb250ZXh0TWVudUl0
ZW1EYXRhLmggKi8sCisJCQkJQkNDRjY3MzIxMkM3RjE1QzAwOEY5QzM1IC8qIE9yaWdpbkFuZERh
dGFiYXNlcy5jcHAgKi8sCisJCQkJQkNDRjY3MkMxMkM3RURGNzAwOEY5QzM1IC8qIE9yaWdpbkFu
ZERhdGFiYXNlcy5oICovLAogCQkJCTUxNTc4QjgyMTIwOUVDRUYwMEEzN0M0QSAvKiBXZWJEYXRh
LmggKi8sCiAJCQkJQkM1NzU2MTIxMjZFMDEzODAwNkYwRjEyIC8qIFdlYkVycm9yLmNwcCAqLywK
IAkJCQk1MTZBNEE1QjEyMEEyQ0NEMDBDMDVCN0YgLyogV2ViRXJyb3IuaCAqLywKQEAgLTI3NzQs
NiArMjc4MCw3IEBACiAJCQkJQkM4NThBMjAxMkMwMzU3QjAwRURFQjJFIC8qIFdlYlJlc291cmNl
TG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBNDE3Q0IxMkMwMENDQTAwMkJFNjdC
IC8qIFRleHRDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE0MUFCNTEyQzAyRUM0MDAy
QkU2N0IgLyogU2VsZWN0aW9uU3RhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDQ0Y2NzJEMTJD
N0VERjcwMDhGOUMzNSAvKiBPcmlnaW5BbmREYXRhYmFzZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAt
MzE5OCw2ICszMjA1LDcgQEAKIAkJCQkxQTRBOUM5QTEyQjgyMUNEMDA4RkU5ODQgLyogTmV0c2Nh
cGVQbHVnaW5Nb2R1bGVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzg1OEEyMTEyQzAzNTdC
MDBFREVCMkUgLyogV2ViUmVzb3VyY2VMb2FkQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFBQTQxN0VGMTJDMDBEODcwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlck1hYy5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCUJDQ0Y2NzMzMTJDN0YxNUMwMDhGOUMzNSAvKiBPcmlnaW5BbmREYXRhYmFzZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gNzQ2NjIp
CisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsOSArMjcsMTEgQEAKIAogI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJNZXNzYWdlSUQuaCIKKyNpbmNsdWRlICJPcmlnaW5BbmREYXRh
YmFzZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJX
ZWJEYXRhYmFzZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VEZXRhaWxzLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9EYXRhYmFzZVRyYWNrZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+
CiAKQEAgLTUzLDYgKzU1LDQ4IEBAIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpkaWRSZWNlaXZl
TWVzc2EKICAgICBkaWRSZWNlaXZlV2ViRGF0YWJhc2VNYW5hZ2VyTWVzc2FnZShjb25uZWN0aW9u
LCBtZXNzYWdlSUQsIGFyZ3VtZW50cyk7CiB9CiAKK3ZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpn
ZXREYXRhYmFzZXNCeU9yaWdpbih1aW50NjRfdCBjYWxsYmFja0lEKSBjb25zdAoreworICAgIC8v
IEZJWE1FOiBUaGlzIGNvdWxkIGJlIG1hZGUgbW9yZSBlZmZpY2llbnQgYnkgYWRkaW5nIGEgZnVu
Y3Rpb24gdG8gRGF0YWJhc2VUcmFja2VyCisgICAgLy8gdG8gZ2V0IGJvdGggdGhlIG9yaWdpbnMg
YW5kIHRoZSBWZWN0b3Igb2YgRGF0YWJhc2VEZXRhaWxzIGZvciBlYWNoIG9yaWdpbiBpbiBvbmUK
KyAgICAvLyBzaG90LiAgVGhhdCB3b3VsZCBhdm9pZCB0YWtpbmcgdGhlIG51bWVyb3VzIGxvY2tz
IHRoaXMgcmVxdWlyZXMuCisKKyAgICBWZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiA+IG9y
aWdpbnM7CisgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkub3JpZ2lucyhvcmlnaW5zKTsK
KworICAgIFZlY3RvcjxPcmlnaW5BbmREYXRhYmFzZXM+IG9yaWdpbkFuZERhdGFiYXNlc1ZlY3Rv
cjsKKyAgICBvcmlnaW5BbmREYXRhYmFzZXNWZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShv
cmlnaW5zLnNpemUoKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9yaWdpbnMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgT3JpZ2luQW5kRGF0YWJhc2VzIG9yaWdpbkFuZERhdGFiYXNl
czsKKworICAgICAgICBWZWN0b3I8U3RyaW5nPiBuYW1lVmVjdG9yOworICAgICAgICBpZiAoIURh
dGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4ob3JpZ2luc1tp
XS5nZXQoKSwgbmFtZVZlY3RvcikpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBW
ZWN0b3I8RGF0YWJhc2VEZXRhaWxzPiBkZXRhaWxzVmVjdG9yOworICAgICAgICBkZXRhaWxzVmVj
dG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobmFtZVZlY3Rvci5zaXplKCkpOworICAgICAgICBm
b3IgKHNpemVfdCBqID0gMDsgaiA8IG5hbWVWZWN0b3Iuc2l6ZSgpOyBqKyspIHsKKyAgICAgICAg
ICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCku
ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFtZVZlY3RvcltqXSwgb3JpZ2luc1tpXS5nZXQoKSk7
CisgICAgICAgICAgICBpZiAoZGV0YWlscy5uYW1lKCkuaXNOdWxsKCkpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgICAgIGRldGFpbHNWZWN0b3IuYXBwZW5kKGRldGFpbHMp
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRldGFpbHNWZWN0b3IuaXNFbXB0eSgpKQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgb3JpZ2luQW5kRGF0YWJhc2VzLm9yaWdpbklk
ZW50aWZpZXIgPSBvcmlnaW5zW2ldLT5kYXRhYmFzZUlkZW50aWZpZXIoKTsKKyAgICAgICAgb3Jp
Z2luQW5kRGF0YWJhc2VzLm9yaWdpblF1b3RhID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCku
cXVvdGFGb3JPcmlnaW4ob3JpZ2luc1tpXS5nZXQoKSk7CisgICAgICAgIG9yaWdpbkFuZERhdGFi
YXNlcy5vcmlnaW5Vc2FnZSA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnVzYWdlRm9yT3Jp
Z2luKG9yaWdpbnNbaV0uZ2V0KCkpOworICAgICAgICBvcmlnaW5BbmREYXRhYmFzZXMuZGF0YWJh
c2VzLnN3YXAoZGV0YWlsc1ZlY3Rvcik7IAorICAgICAgICBvcmlnaW5BbmREYXRhYmFzZXNWZWN0
b3IuYXBwZW5kKG9yaWdpbkFuZERhdGFiYXNlcyk7CisgICAgfQorCisgICAgV2ViUHJvY2Vzczo6
c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJEYXRhYmFzZU1hbmFnZXJQ
cm94eTo6RGlkR2V0RGF0YWJhc2VzQnlPcmlnaW4ob3JpZ2luQW5kRGF0YWJhc2VzVmVjdG9yLCBj
YWxsYmFja0lEKSwgMCk7Cit9CisKIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpnZXREYXRhYmFz
ZU9yaWdpbnModWludDY0X3QgY2FsbGJhY2tJRCkgY29uc3QKIHsKICAgICBWZWN0b3I8UmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiA+IG9yaWdpbnM7CkBAIC02Niw2ICsxMTAsMTUgQEAgdm9pZCBXZWJE
YXRhYmFzZU1hbmFnZXI6OmdldERhdGFiYXNlT3JpZwogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgp
LmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OkRp
ZEdldERhdGFiYXNlT3JpZ2lucyhpZGVudGlmaWVycywgY2FsbGJhY2tJRCksIDApOwogfQogCit2
b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlRGF0YWJhc2VXaXRoTmFtZUZvck9yaWdpbihj
b25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVu
dGlmaWVyKSBjb25zdAoreworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luSWRlbnRpZmll
cik7CisgICAgaWYgKCFvcmlnaW4pCisgICAgICAgIHJldHVybjsKKworICAgIERhdGFiYXNlVHJh
Y2tlcjo6dHJhY2tlcigpLmRlbGV0ZURhdGFiYXNlKG9yaWdpbi5nZXQoKSwgZGF0YWJhc2VJZGVu
dGlmaWVyKTsKK30KKwogdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZURhdGFiYXNlc0Zv
ck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpIGNvbnN0CiB7CiAgICAgUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURh
dGFiYXNlSWRlbnRpZmllcihvcmlnaW5JZGVudGlmaWVyKTsKQEAgLTgwLDQgKzEzMywxNyBAQCB2
b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlQWxsRGF0YWJhCiAgICAgRGF0YWJhc2VUcmFj
a2VyOjp0cmFja2VyKCkuZGVsZXRlQWxsRGF0YWJhc2VzKCk7CiB9CiAKK3ZvaWQgV2ViRGF0YWJh
c2VNYW5hZ2VyOjpzZXRRdW90YUZvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZp
ZXIsIHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkgY29uc3QKK3sKKyAgICAvLyBJZiB0aGUgcXVv
dGEgaXMgc2V0IHRvIGEgdmFsdWUgbG93ZXIgdGhhbiB0aGUgY3VycmVudCB1c2FnZSwgdGhhdCBx
dW90YSB3aWxsCisgICAgLy8gInN0aWNrIiBidXQgbm8gZGF0YSB3aWxsIGJlIHB1cmdlZCB0byBt
ZWV0IHRoZSBuZXcgcXVvdGEuIFRoaXMgd2lsbCBzaW1wbHkKKyAgICAvLyBwcmV2ZW50IG5ldyBk
YXRhIGZyb20gYmVpbmcgYWRkZWQgdG8gZGF0YWJhc2VzIGluIHRoYXQgb3JpZ2luLgorCisgICAg
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJv
bURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5JZGVudGlmaWVyKTsKKyAgICBpZiAoIW9yaWdpbikK
KyAgICAgICAgcmV0dXJuOworCisgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0UXVv
dGEob3JpZ2luLmdldCgpLCBxdW90YSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRh
YmFzZU1hbmFnZXIuaAkocmV2aXNpb24gNzQ2NjIpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDIx
ICszOCwyNiBAQCBjbGFzcyBNZXNzYWdlSUQ7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFz
cyBXZWJEYXRhYmFzZU1hbmFnZXIgOiBwdWJsaWMgTm9uY29weWFibGUgeworY2xhc3MgV2ViRGF0
YWJhc2VNYW5hZ2VyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJEYXRhYmFzZU1hbmFn
ZXIpOwogcHVibGljOgogICAgIHN0YXRpYyBXZWJEYXRhYmFzZU1hbmFnZXImIHNoYXJlZCgpOwog
Ci0gICAgdm9pZCBnZXREYXRhYmFzZU9yaWdpbnModWludDY0X3QgY2FsbGJhY2tJRCkgY29uc3Q7
Ci0gICAgdm9pZCBkZWxldGVEYXRhYmFzZXNGb3JPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5J
ZGVudGlmaWVyKSBjb25zdDsKLSAgICB2b2lkIGRlbGV0ZUFsbERhdGFiYXNlcygpIGNvbnN0Owot
CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQ
Qzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKIAogcHJpdmF0ZToKICAg
ICBXZWJEYXRhYmFzZU1hbmFnZXIoKTsKIAorICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRl
ZCBXZWJEYXRhYmFzZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNl
aXZlV2ViRGF0YWJhc2VNYW5hZ2VyTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQ
Qzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKIAorICAgIHZvaWQgZ2V0
RGF0YWJhc2VzQnlPcmlnaW4odWludDY0X3QgY2FsbGJhY2tJRCkgY29uc3Q7CisgICAgdm9pZCBn
ZXREYXRhYmFzZU9yaWdpbnModWludDY0X3QgY2FsbGJhY2tJRCkgY29uc3Q7CisgICAgdm9pZCBk
ZWxldGVEYXRhYmFzZVdpdGhOYW1lRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpIGNvbnN0OworICAgIHZvaWQg
ZGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikg
Y29uc3Q7CisgICAgdm9pZCBkZWxldGVBbGxEYXRhYmFzZXMoKSBjb25zdDsKKyAgICB2b2lkIHNl
dFF1b3RhRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgdW5zaWduZWQg
bG9uZyBsb25nIHF1b3RhKSBjb25zdDsKKwogICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeSgp
IGNvbnN0OwogfTsKIApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkRhdGFiYXNlTWFuYWdlci5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLm1lc3NhZ2VzLmluCShyZXZp
c2lvbiA3NDY2MikKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRh
YmFzZU1hbmFnZXIubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDEwIEBA
CiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFdlYkRhdGFiYXNlTWFuYWdlciB7CisgICAg
dm9pZCBHZXREYXRhYmFzZXNCeU9yaWdpbih1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIHZvaWQg
R2V0RGF0YWJhc2VPcmlnaW5zKHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgdm9pZCBEZWxldGVE
YXRhYmFzZVdpdGhOYW1lRm9yT3JpZ2luKFdURjo6U3RyaW5nIGRhdGFiYXNlSWRlbnRpZmllciwg
V1RGOjpTdHJpbmcgb3JpZ2luSWRlbnRpZmllcikKICAgICB2b2lkIERlbGV0ZURhdGFiYXNlc0Zv
ck9yaWdpbihXVEY6OlN0cmluZyBvcmlnaW5JZGVudGlmaWVyKQogICAgIHZvaWQgRGVsZXRlQWxs
RGF0YWJhc2VzKCkKKyAgICB2b2lkIFNldFF1b3RhRm9yT3JpZ2luKFdURjo6U3RyaW5nIG9yaWdp
bklkZW50aWZpZXIsIHVpbnQ2NF90IHF1b3RhKQogfQpJbmRleDogV2ViS2l0Mi93aW4vV2ViS2l0
Mi52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHJldmlz
aW9uIDc0NjYyKQorKysgV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHdvcmtpbmcgY29weSkK
QEAgLTQ3MSw2ICs0NzEsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5cU2hhcmVkXE9yaWdpbkFuZERhdGFiYXNlcy5jcHAiCisJCQkJPgorCQkJ
PC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxPcmlnaW5BbmRE
YXRhYmFzZXMuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0
aD0iLi5cU2hhcmVkXFBsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHAiCiAJCQkJPgogCQkJPC9GaWxl
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77514</attachid>
            <date>2010-12-27 12:49:22 -0800</date>
            <delta_ts>2010-12-27 13:00:42 -0800</delta_ts>
            <desc>Patch 2</desc>
            <filename>notificationsPart.diff</filename>
            <type>text/plain</type>
            <size>21665</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NDY5MikKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTAtMTItMjcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJLaXQy
OiBBZGQgYWRkaXRpb25hbCBBUEkgZm9yIG1hbmFnaW5nIGRhdGFiYXNlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE2MjkKKworICAgICAgICAtIEFk
ZHMgY2xpZW50IGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlciB0byBnZXQgbm90aWZpY2F0aW9ucwor
ICAgICAgICAgIG9mIGNoYW5nZXMgdG8gZGF0YWJhc2VzLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLRGF0YWJhc2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLRGF0YWJhc2VNYW5hZ2Vy
U2V0Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tEYXRhYmFzZU1hbmFnZXIu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZUNsaWVudCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlclByb3h5OjpkaWRNb2RpZnlPcmln
aW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6ZGlkTW9kaWZ5
RGF0YWJhc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlDbGllbnQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlDbGllbnQ6
OmRpZE1vZGlmeU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlclBy
b3h5Q2xpZW50OjpkaWRNb2RpZnlEYXRhYmFzZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkRh
dGFiYXNlTWFuYWdlclByb3h5Q2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAqIFdlYktpdDIucHJv
OgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlcjo6V2ViRGF0YWJhc2VNYW5hZ2VyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyOjp+V2ViRGF0YWJhc2VNYW5hZ2VyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyOjpkaXNwYXRjaERpZE1vZGlmeU9y
aWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlcjo6ZGlzcGF0Y2hEaWRN
b2RpZnlEYXRhYmFzZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJE
YXRhYmFzZU1hbmFnZXIuaDoKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi52Y3Byb2o6CisKIDIwMTAt
MTItMjcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBbmRlcnMgQ2FybHNzb24uCkluZGV4OiBXZWJLaXQyL1dlYktpdDIucHJvCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvV2ViS2l0Mi5wcm8JKHJldmlzaW9uIDc0NjkxKQorKysgV2ViS2l0Mi9XZWJL
aXQyLnBybwkod29ya2luZyBjb3B5KQpAQCAtMzM1LDYgKzMzNSw3IEBAIEhFQURFUlMgKz0gXAog
ICAgIFVJUHJvY2Vzcy9XZWJDb250ZXh0TWVudVByb3h5LmggXAogICAgIFVJUHJvY2Vzcy9XZWJD
b250ZXh0VXNlck1lc3NhZ2VDb2RlcnMuaCBcCiAgICAgVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFu
YWdlclByb3h5LmggXAorICAgIFVJUHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94eUNsaWVu
dC5oIFwKICAgICBVSVByb2Nlc3MvV2ViRG93bmxvYWRDbGllbnQuaCBcCiAgICAgVUlQcm9jZXNz
L1dlYkVkaXRDb21tYW5kUHJveHkuaCBcCiAgICAgVUlQcm9jZXNzL1dlYkZpbmRDbGllbnQuaCBc
CkBAIC01MzMsNiArNTM0LDcgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL1dlYkNvbnRl
eHRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJDb250ZXh0TWVu
dVByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5LmNwcCBc
CisgICAgVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5Q2xpZW50LmNwcCBcCiAgICAg
VUlQcm9jZXNzL1dlYkRvd25sb2FkQ2xpZW50LmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYkVkaXRD
b21tYW5kUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViRmluZENsaWVudC5jcHAgXApJbmRl
eDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5LmNwcAkocmV2
aXNpb24gNzQ2OTEpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw2ICsxMDQsMTEgQEAgdm9pZCBXZWJEYXRhYmFz
ZU1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZQogICAgIG1fd2ViQ29udGV4dCA9IDA7CiB9CiAKK3Zv
aWQgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmluaXRpYWxpemVDbGllbnQoY29uc3QgV0tEYXRh
YmFzZU1hbmFnZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICBtX2NsaWVudC5pbml0aWFsaXplKGNs
aWVudCk7Cit9CisKIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmdldERhdGFiYXNlc0J5
T3JpZ2luKFBhc3NSZWZQdHI8QXJyYXlDYWxsYmFjaz4gcHJwQ2FsbGJhY2spCiB7CiAgICAgUmVm
UHRyPEFycmF5Q2FsbGJhY2s+IGNhbGxiYWNrID0gcHJwQ2FsbGJhY2s7CkBAIC0yMDEsNSArMjA2
LDE3IEBAIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OnNldFF1b3RhRm8KICAgICBtX3dl
YkNvbnRleHQtPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViRGF0YWJhc2VNYW5hZ2VyOjpT
ZXRRdW90YUZvck9yaWdpbihvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLCBxdW90YSksIDAp
OwogfQogCit2b2lkIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5OjpkaWRNb2RpZnlPcmlnaW4oY29u
c3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKQoreworICAgIFJlZlB0cjxXZWJTZWN1cml0eU9y
aWdpbj4gb3JpZ2luID0gV2ViU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShvcmlnaW5JZGVudGlmaWVy
KTsKKyAgICBtX2NsaWVudC5kaWRNb2RpZnlPcmlnaW4odGhpcywgb3JpZ2luLmdldCgpKTsKK30K
Kwordm9pZCBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6ZGlkTW9kaWZ5RGF0YWJhc2UoY29uc3Qg
U3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmll
cikKK3sKKyAgICBSZWZQdHI8V2ViU2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFdlYlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUob3JpZ2luSWRlbnRpZmllcik7CisgICAgbV9jbGllbnQuZGlkTW9kaWZ5
RGF0YWJhc2UodGhpcywgb3JpZ2luLmdldCgpLCBkYXRhYmFzZUlkZW50aWZpZXIpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRGF0YWJh
c2VNYW5hZ2VyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJEYXRh
YmFzZU1hbmFnZXJQcm94eS5oCShyZXZpc2lvbiA3NDY5MSkKKysrIFdlYktpdDIvVUlQcm9jZXNz
L1dlYkRhdGFiYXNlTWFuYWdlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcg
QEAKICNpbmNsdWRlICJBcmd1bWVudHMuaCIKICNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIK
ICNpbmNsdWRlICJPcmlnaW5BbmREYXRhYmFzZXMuaCIKLSNpbmNsdWRlICJXS0Jhc2UuaCIKKyNp
bmNsdWRlICJXZWJEYXRhYmFzZU1hbmFnZXJQcm94eUNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIApAQCAtNTYsNiArNTYsOCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKIAorICAgIHZvaWQgaW5pdGlhbGl6
ZUNsaWVudChjb25zdCBXS0RhdGFiYXNlTWFuYWdlckNsaWVudCopOworCiAgICAgdm9pZCBnZXRE
YXRhYmFzZXNCeU9yaWdpbihQYXNzUmVmUHRyPEFycmF5Q2FsbGJhY2s+KTsKICAgICB2b2lkIGdl
dERhdGFiYXNlT3JpZ2lucyhQYXNzUmVmUHRyPEFycmF5Q2FsbGJhY2s+KTsKICAgICB2b2lkIGRl
bGV0ZURhdGFiYXNlV2l0aE5hbWVGb3JPcmlnaW4oY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50
aWZpZXIsIFdlYlNlY3VyaXR5T3JpZ2luKik7CkBAIC04Miw5ICs4NCwxMyBAQCBwcml2YXRlOgog
ICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRHZXREYXRhYmFzZXNCeU9yaWdp
bihjb25zdCBWZWN0b3I8T3JpZ2luQW5kRGF0YWJhc2VzPiYgb3JpZ2luQW5kRGF0YWJhc2VzLCB1
aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRpZEdldERhdGFiYXNlT3JpZ2lucyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgb3JpZ2luSWRlbnRpZmllcnMsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
OworICAgIHZvaWQgZGlkTW9kaWZ5T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmll
cik7CisgICAgdm9pZCBkaWRNb2RpZnlEYXRhYmFzZShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKTsKIAogICAgIFdlYkNvbnRl
eHQqIG1fd2ViQ29udGV4dDsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8QXJyYXlDYWxs
YmFjaz4gPiBtX2FycmF5Q2FsbGJhY2tzOworCisgICAgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlD
bGllbnQgbV9jbGllbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktp
dDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5Lm1lc3NhZ2Vz
LmluCShyZXZpc2lvbiA3NDY5MSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFu
YWdlclByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw0ICsyMyw2IEBACiBt
ZXNzYWdlcyAtPiBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eSB7CiAgICAgRGlkR2V0RGF0YWJhc2Vz
QnlPcmlnaW4oVmVjdG9yPFdlYktpdDo6T3JpZ2luQW5kRGF0YWJhc2VzPiBvcmlnaW5BbmREYXRh
YmFzZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIERpZEdldERhdGFiYXNlT3JpZ2lucyhW
ZWN0b3I8V1RGOjpTdHJpbmc+IG9yaWdpbklkZW50aWZpZXJzLCB1aW50NjRfdCBjYWxsYmFja0lE
KQorICAgIERpZE1vZGlmeU9yaWdpbihXVEY6OlN0cmluZyBvcmlnaW5JZGVudGlmaWVyKQorICAg
IERpZE1vZGlmeURhdGFiYXNlKFdURjo6U3RyaW5nIG9yaWdpbklkZW50aWZpZXIsIFdURjo6U3Ry
aW5nIGRhdGFiYXNlSWRlbnRpZmllcikKIH0KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYkRh
dGFiYXNlTWFuYWdlclByb3h5Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94eUNsaWVudC5jcHAJKHJldmlzaW9uIDApCisrKyBX
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94eUNsaWVudC5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV2ViRGF0YWJh
c2VNYW5hZ2VyUHJveHlDbGllbnQuaCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eUNsaWVudDo6ZGlk
TW9kaWZ5T3JpZ2luKFdlYkRhdGFiYXNlTWFuYWdlclByb3h5KiBkYXRhYmFzZU1hbmFnZXIsIFdl
YlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit7CisgICAgaWYgKCFtX2NsaWVudC5kaWRNb2RpZnlP
cmlnaW4pCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LmRpZE1vZGlmeU9yaWdpbih0
b0FQSShkYXRhYmFzZU1hbmFnZXIpLCB0b0FQSShvcmlnaW4pLCBtX2NsaWVudC5jbGllbnRJbmZv
KTsKK30KKwordm9pZCBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eUNsaWVudDo6ZGlkTW9kaWZ5RGF0
YWJhc2UoV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkqIGRhdGFiYXNlTWFuYWdlciwgV2ViU2VjdXJp
dHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpCit7Cisg
ICAgaWYgKCFtX2NsaWVudC5kaWRNb2RpZnlEYXRhYmFzZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9jbGllbnQuZGlkTW9kaWZ5RGF0YWJhc2UodG9BUEkoZGF0YWJhc2VNYW5hZ2VyKSwgdG9B
UEkob3JpZ2luKSwgdG9BUEkoZGF0YWJhc2VJZGVudGlmaWVyLmltcGwoKSksIG1fY2xpZW50LmNs
aWVudEluZm8pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvVUlQ
cm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlDbGllbnQuaAkocmV2aXNpb24g
MCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5Q2xpZW50LmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkRh
dGFiYXNlTWFuYWdlclByb3h5Q2xpZW50X2gKKyNkZWZpbmUgV2ViRGF0YWJhc2VNYW5hZ2VyUHJv
eHlDbGllbnRfaAorCisjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCisjaW5jbHVkZSAiV0tEYXRhYmFz
ZU1hbmFnZXIuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk7CitjbGFzcyBXZWJTZWN1cml0eU9y
aWdpbjsKKworY2xhc3MgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlDbGllbnQgOiBwdWJsaWMgQVBJ
Q2xpZW50PFdLRGF0YWJhc2VNYW5hZ2VyQ2xpZW50PiB7CitwdWJsaWM6CisgICAgdm9pZCBkaWRN
b2RpZnlPcmlnaW4oV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkqLCBXZWJTZWN1cml0eU9yaWdpbiop
OworICAgIHZvaWQgZGlkTW9kaWZ5RGF0YWJhc2UoV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkqLCBX
ZWJTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViRGF0YWJhc2VNYW5hZ2Vy
UHJveHlDbGllbnRfaApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tEYXRhYmFzZU1h
bmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLRGF0YWJh
c2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gNzQ2OTEpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0RhdGFiYXNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDYgKzg3LDEzIEBA
IFdLU3RyaW5nUmVmIFdLRGF0YWJhc2VNYW5hZ2VyR2V0RGF0YWJhc2UKICAgICByZXR1cm4gdG9B
UEkoa2V5KTsKIH0KIAordm9pZCBXS0RhdGFiYXNlTWFuYWdlclNldENsaWVudChXS0RhdGFiYXNl
TWFuYWdlclJlZiBkYXRhYmFzZU1hbmFnZXJSZWYsIGNvbnN0IFdLRGF0YWJhc2VNYW5hZ2VyQ2xp
ZW50KiB3a0NsaWVudCkKK3sKKyAgICBpZiAod2tDbGllbnQgJiYgd2tDbGllbnQtPnZlcnNpb24p
CisgICAgICAgIHJldHVybjsKKyAgICB0b0ltcGwoZGF0YWJhc2VNYW5hZ2VyUmVmKS0+aW5pdGlh
bGl6ZUNsaWVudCh3a0NsaWVudCk7Cit9CisKIHZvaWQgV0tEYXRhYmFzZU1hbmFnZXJHZXREYXRh
YmFzZXNCeU9yaWdpbihXS0RhdGFiYXNlTWFuYWdlclJlZiBkYXRhYmFzZU1hbmFnZXJSZWYsIHZv
aWQqIGNvbnRleHQsIFdLRGF0YWJhc2VNYW5hZ2VyR2V0RGF0YWJhc2VzQnlPcmlnaW5GdW5jdGlv
biBjYWxsYmFjaykKIHsKICAgICB0b0ltcGwoZGF0YWJhc2VNYW5hZ2VyUmVmKS0+Z2V0RGF0YWJh
c2VzQnlPcmlnaW4oQXJyYXlDYWxsYmFjazo6Y3JlYXRlKGNvbnRleHQsIGNhbGxiYWNrKSk7Cklu
ZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0RhdGFiYXNlTWFuYWdlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLRGF0YWJhc2VNYW5hZ2VyLmgJKHJldmlz
aW9uIDc0NjkxKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tEYXRhYmFzZU1hbmFnZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsNiBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYK
IAotV0tfRVhQT1JUIFdLVHlwZUlEIFdLRGF0YWJhc2VNYW5hZ2VyR2V0VHlwZUlEKCk7Ci0KIC8q
IFZhbHVlIHR5cGU6IFdLU2VjdXJpdHlPcmlnaW5SZWYgKi8KIFdLX0VYUE9SVCBXS1N0cmluZ1Jl
ZiBXS0RhdGFiYXNlTWFuYWdlckdldE9yaWdpbktleSgpOwogCkBAIC02Myw4ICs2MSwyNiBAQCBX
S19FWFBPUlQgV0tTdHJpbmdSZWYgV0tEYXRhYmFzZU1hbmFnZXJHCiAvKiBWYWx1ZSB0eXBlOiBX
S1VJbnQ2NFJlZiAqLwogV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLRGF0YWJhc2VNYW5hZ2VyR2V0
RGF0YWJhc2VEZXRhaWxzQ3VycmVudFVzYWdlS2V5KCk7CiAKKworLy8gRGF0YWJhc2UgTWFuYWdl
ciBDbGllbnQKK3R5cGVkZWYgdm9pZCAoKldLRGF0YWJhc2VNYW5hZ2VyRGlkTW9kaWZ5T3JpZ2lu
Q2FsbGJhY2spKFdLRGF0YWJhc2VNYW5hZ2VyUmVmIGRhdGFiYXNlTWFuYWdlciwgV0tTZWN1cml0
eU9yaWdpblJlZiBvcmlnaW4sIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lk
ICgqV0tEYXRhYmFzZU1hbmFnZXJEaWRNb2RpZnlEYXRhYmFzZUNhbGxiYWNrKShXS0RhdGFiYXNl
TWFuYWdlclJlZiBkYXRhYmFzZU1hbmFnZXIsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBX
S1N0cmluZ1JlZiBkYXRhYmFzZUlkZW50aWZpZXIsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwor
CitzdHJ1Y3QgV0tEYXRhYmFzZU1hbmFnZXJDbGllbnQgeworICAgIGludCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lv
bjsKKyAgICBjb25zdCB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNsaWVudEluZm87CisgICAgV0tEYXRhYmFzZU1hbmFnZXJEaWRN
b2RpZnlPcmlnaW5DYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRNb2RpZnlP
cmlnaW47CisgICAgV0tEYXRhYmFzZU1hbmFnZXJEaWRNb2RpZnlEYXRhYmFzZUNhbGxiYWNrICAg
ICAgICAgICAgICAgICAgICAgICAgICBkaWRNb2RpZnlEYXRhYmFzZTsKK307Cit0eXBlZGVmIHN0
cnVjdCBXS0RhdGFiYXNlTWFuYWdlckNsaWVudCBXS0RhdGFiYXNlTWFuYWdlckNsaWVudDsKKwor
CitXS19FWFBPUlQgV0tUeXBlSUQgV0tEYXRhYmFzZU1hbmFnZXJHZXRUeXBlSUQoKTsKKworV0tf
RVhQT1JUIHZvaWQgV0tEYXRhYmFzZU1hbmFnZXJTZXRDbGllbnQoV0tEYXRhYmFzZU1hbmFnZXJS
ZWYgZGF0YWJhc2VNYW5hZ2VyLCBjb25zdCBXS0RhdGFiYXNlTWFuYWdlckNsaWVudCogY2xpZW50
KTsKKwogdHlwZWRlZiB2b2lkICgqV0tEYXRhYmFzZU1hbmFnZXJHZXREYXRhYmFzZXNCeU9yaWdp
bkZ1bmN0aW9uKShXS0FycmF5UmVmLCBXS0Vycm9yUmVmLCB2b2lkKik7Ci1XS19FWFBPUlQgdm9p
ZCBXS0RhdGFiYXNlTWFuYWdlckdldERhdGFiYXNlc0J5T3JpZ2luKFdLRGF0YWJhc2VNYW5hZ2Vy
UmVmIGNvbnRleHRSZWYsIHZvaWQqIGNvbnRleHQsIFdLRGF0YWJhc2VNYW5hZ2VyR2V0RGF0YWJh
c2VzQnlPcmlnaW5GdW5jdGlvbiBmdW5jdGlvbik7CitXS19FWFBPUlQgdm9pZCBXS0RhdGFiYXNl
TWFuYWdlckdldERhdGFiYXNlc0J5T3JpZ2luKFdLRGF0YWJhc2VNYW5hZ2VyUmVmIGRhdGFiYXNl
TWFuYWdlciwgdm9pZCogY29udGV4dCwgV0tEYXRhYmFzZU1hbmFnZXJHZXREYXRhYmFzZXNCeU9y
aWdpbkZ1bmN0aW9uIGZ1bmN0aW9uKTsKICNpZmRlZiBfX0JMT0NLU19fCiB0eXBlZGVmIHZvaWQg
KF5XS0RhdGFiYXNlTWFuYWdlckdldERhdGFiYXNlc0J5T3JpZ2luQmxvY2spKFdLQXJyYXlSZWYs
IFdLRXJyb3JSZWYpOwogV0tfRVhQT1JUIHZvaWQgV0tEYXRhYmFzZU1hbmFnZXJHZXREYXRhYmFz
ZXNCeU9yaWdpbl9iKFdLRGF0YWJhc2VNYW5hZ2VyUmVmIGRhdGFiYXNlTWFuYWdlciwgV0tEYXRh
YmFzZU1hbmFnZXJHZXREYXRhYmFzZXNCeU9yaWdpbkJsb2NrIGJsb2NrKTsKSW5kZXg6IFdlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA3NDY5MSkKKysr
IFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC00ODQsNiArNDg0LDggQEAKIAkJQkNBOEM2QTkxMUUzQkE1RjAwODEyRkI3IC8qIEluamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNBOEM2QTcxMUUzQkE1RjAwODEyRkI3IC8qIEluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudC5oICovOyB9OwogCQlCQ0E4QzZBRjExRTNDMDg3MDA4MTJGQjcg
LyogSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBOEM2QUQxMUUzQzA4NzAwODEyRkI3IC8qIEluamVj
dGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcCAqLzsgfTsKIAkJQkNBOEM2QjAxMUUzQzA4NzAwODEy
RkI3IC8qIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0E4QzZBRTExRTNDMDg3MDA4MTJGQjcgLyogSW5q
ZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaCAqLzsgfTsKKwkJQkNBQzExMUYxMkM5MkMxRjAwQjA4
RUVFIC8qIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0FDMTExRDEyQzkyQzFGMDBCMDhFRUUgLyog
V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlDbGllbnQuaCAqLzsgfTsKKwkJQkNBQzExMjAxMkM5MkMx
RjAwQjA4RUVFIC8qIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5Q2xpZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUMxMTFFMTJDOTJDMUYwMEIw
OEVFRSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eUNsaWVudC5jcHAgKi87IH07CiAJCUJDQjBB
RDMzMTIyRjI4NTgwMEIxMzQxRSAvKiBNdXRhYmxlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDODA0OUQxMjJGMEQ2QjAwMTAzNTI5IC8q
IE11dGFibGVBcnJheS5jcHAgKi87IH07CiAJCUJDQjBBRDM0MTIyRjI4NTgwMEIxMzQxRSAvKiBN
dXRhYmxlQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDQzgwNDlFMTIyRjBENkIwMDEwMzUyOSAvKiBNdXRhYmxlQXJyYXkuaCAqLzsgfTsKIAkJ
QkNCMEFFRTkxMjJGNTNFMzAwQjEzNDFFIC8qIE11dGFibGVEaWN0aW9uYXJ5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IwQUVFNzEyMkY1M0UzMDBC
MTM0MUUgLyogTXV0YWJsZURpY3Rpb25hcnkuaCAqLzsgfTsKQEAgLTExNTMsNiArMTE1NSw4IEBA
CiAJCUJDQThDNkE3MTFFM0JBNUYwMDgxMkZCNyAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQThDNkFE
MTFFM0MwODcwMDgxMkZCNyAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQThDNkFFMTFFM0MwODcwMDgx
MkZCNyAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCQ0FDMTExRDEyQzkyQzFGMDBCMDhFRUUgLyogV2ViRGF0YWJhc2VN
YW5hZ2VyUHJveHlDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
RGF0YWJhc2VNYW5hZ2VyUHJveHlDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkNBQzExMUUxMkM5MkMxRjAwQjA4RUVFIC8qIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5Q2xp
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkRhdGFiYXNl
TWFuYWdlclByb3h5Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNC
MEFFRTcxMjJGNTNFMzAwQjEzNDFFIC8qIE11dGFibGVEaWN0aW9uYXJ5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE11dGFibGVEaWN0aW9uYXJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDQjBBRUU4MTIyRjUzRTMwMEIxMzQxRSAvKiBNdXRhYmxlRGljdGlv
bmFyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNdXRhYmxlRGlj
dGlvbmFyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjBCMERCMTIzMDVB
MjUwMEIxMzQxRSAvKiBXZWJDb250ZXh0VXNlck1lc3NhZ2VDb2RlcnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29udGV4dFVzZXJNZXNzYWdlQ29kZXJzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTI5LDYgKzE5MzMsOCBAQAogCQkJCUJDREUwNTlB
MTFDREE4QUUwMEU0MUFGMSAvKiBXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwICov
LAogCQkJCUJDREUwNTk5MTFDREE4QUUwMEU0MUFGMSAvKiBXZWJDb250ZXh0SW5qZWN0ZWRCdW5k
bGVDbGllbnQuaCAqLywKIAkJCQlCQ0IwQjBEQjEyMzA1QTI1MDBCMTM0MUUgLyogV2ViQ29udGV4
dFVzZXJNZXNzYWdlQ29kZXJzLmggKi8sCisJCQkJQkNBQzExMUUxMkM5MkMxRjAwQjA4RUVFIC8q
IFdlYkRhdGFiYXNlTWFuYWdlclByb3h5Q2xpZW50LmNwcCAqLywKKwkJCQlCQ0FDMTExRDEyQzky
QzFGMDBCMDhFRUUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlDbGllbnQuaCAqLywKIAkJCQlG
NjJBNzY1OTEyQjFBQkMzMDAwNUYxQjYgLyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkuY3BwICov
LAogCQkJCUY2MkE3NjVBMTJCMUFCQzMwMDA1RjFCNiAvKiBXZWJEYXRhYmFzZU1hbmFnZXJQcm94
eS5oICovLAogCQkJCUY2MkE3NjVCMTJCMUFCQzMwMDA1RjFCNiAvKiBXZWJEYXRhYmFzZU1hbmFn
ZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKQEAgLTI3ODEsNiArMjc4Nyw3IEBACiAJCQkJMUFBNDE3
Q0IxMkMwMENDQTAwMkJFNjdCIC8qIFRleHRDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUE0MUFCNTEyQzAyRUM0MDAyQkU2N0IgLyogU2VsZWN0aW9uU3RhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDQ0Y2NzJEMTJDN0VERjcwMDhGOUMzNSAvKiBPcmlnaW5BbmREYXRhYmFzZXMuaCBp
biBIZWFkZXJzICovLAorCQkJCUJDQUMxMTFGMTJDOTJDMUYwMEIwOEVFRSAvKiBXZWJEYXRhYmFz
ZU1hbmFnZXJQcm94eUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0zMjA2LDYgKzMyMTMsNyBA
QAogCQkJCUJDODU4QTIxMTJDMDM1N0IwMEVERUIyRSAvKiBXZWJSZXNvdXJjZUxvYWRDbGllbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBNDE3RUYxMkMwMEQ4NzAwMkJFNjdCIC8qIFRleHRD
aGVja2VyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNDRjY3MzMxMkM3RjE1QzAwOEY5QzM1
IC8qIE9yaWdpbkFuZERhdGFiYXNlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQ0FDMTEyMDEy
QzkyQzFGMDBCMDhFRUUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlDbGllbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0
YWJhc2VNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gNzQ2OTEpCisrKyBXZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDgsNiArNDgsMTEgQEAgV2ViRGF0YWJhc2VNYW5hZ2VyJiBXZWJEYXRh
YmFzZU1hbmFnZXI6OgogV2ViRGF0YWJhc2VNYW5hZ2VyOjpXZWJEYXRhYmFzZU1hbmFnZXIoKQog
ewogICAgIERhdGFiYXNlVHJhY2tlcjo6aW5pdGlhbGl6ZVRyYWNrZXIoZGF0YWJhc2VEaXJlY3Rv
cnkoKSk7CisgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0Q2xpZW50KHRoaXMpOwor
fQorCitXZWJEYXRhYmFzZU1hbmFnZXI6On5XZWJEYXRhYmFzZU1hbmFnZXIoKQorewogfQogCiB2
b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVj
dGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6
QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCkBAIC0xNDYsNCArMTUxLDE0IEBAIHZvaWQgV2Vi
RGF0YWJhc2VNYW5hZ2VyOjpzZXRRdW90YUZvck9yaWcKICAgICBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5zZXRRdW90YShvcmlnaW4uZ2V0KCksIHF1b3RhKTsKIH0KIAordm9pZCBXZWJEYXRh
YmFzZU1hbmFnZXI6OmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmln
aW4pCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6RGlkTW9kaWZ5T3JpZ2luKG9yaWdpbi0+ZGF0
YWJhc2VJZGVudGlmaWVyKCkpLCAwKTsKK30KKwordm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRp
c3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpCit7CisgICAgV2ViUHJvY2Vzczo6c2hh
cmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJEYXRhYmFzZU1hbmFnZXJQcm94
eTo6RGlkTW9kaWZ5RGF0YWJhc2Uob3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSwgZGF0YWJh
c2VJZGVudGlmaWVyKSwgMCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhYmFzZU1h
bmFnZXIuaAkocmV2aXNpb24gNzQ2OTEpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcg
QEAKICNkZWZpbmUgV2ViRGF0YWJhc2VNYW5hZ2VyX2gKIAogI2luY2x1ZGUgIkFyZ3VtZW50cy5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAg
LTM4LDcgKzM5LDcgQEAgY2xhc3MgTWVzc2FnZUlEOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
Y2xhc3MgV2ViRGF0YWJhc2VNYW5hZ2VyIHsKK2NsYXNzIFdlYkRhdGFiYXNlTWFuYWdlciA6IHB1
YmxpYyBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXJDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFdlYkRhdGFiYXNlTWFuYWdlcik7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYkRhdGFi
YXNlTWFuYWdlciYgc2hhcmVkKCk7CkBAIC00Nyw2ICs0OCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICBXZWJEYXRhYmFzZU1hbmFnZXIoKTsKKyAgICB2aXJ0dWFsIH5XZWJEYXRhYmFzZU1h
bmFnZXIoKTsKIAogICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJEYXRhYmFzZU1h
bmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViRGF0YWJhc2VN
YW5hZ2VyTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBD
b3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKQEAgLTU4LDYgKzYwLDEwIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkZWxldGVBbGxEYXRhYmFzZXMoKSBjb25zdDsKICAgICB2b2lkIHNldFF1b3RhRm9y
T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgdW5zaWduZWQgbG9uZyBsb25n
IHF1b3RhKSBjb25zdDsKIAorICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlckNsaWVudAor
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbiopOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIp
OworCiAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3Q7CiB9OwogCkluZGV4OiBX
ZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL3dpbi9XZWJL
aXQyLnZjcHJvagkocmV2aXNpb24gNzQ2OTEpCisrKyBXZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJv
agkod29ya2luZyBjb3B5KQpAQCAtMjAwNyw2ICsyMDA3LDE0IEBACiAJCQkJPgogCQkJPC9GaWxl
PgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xXZWJEYXRhYmFzZU1h
bmFnZXJQcm94eUNsaWVudC5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xXZWJEYXRhYmFzZU1hbmFnZXJQcm94eUNsaWVudC5o
IgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVBy
b2Nlc3NcV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4iCiAJCQkJPgogCQkJPC9G
aWxlPgo=
</data>
<flag name="review"
          id="68650"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>