<?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>134742</bug_id>
          
          <creation_ts>2014-07-08 14:04:11 -0700</creation_ts>
          <short_desc>[ftlopt] Phantom simplification should be in its own phase</short_desc>
          <delta_ts>2014-07-08 20:01:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>134677</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1021189</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-08 14:04:11 -0700</bug_when>
    <thetext>Another step towards getting rid of strange things in CSEPhase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1021190</commentid>
    <comment_count>1</comment_count>
      <attachid>234594</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-08 14:08:25 -0700</bug_when>
    <thetext>Created attachment 234594
the patch

Not ready for review because I&apos;m still running tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1021198</commentid>
    <comment_count>2</comment_count>
      <attachid>234594</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-08 14:35:40 -0700</bug_when>
    <thetext>Comment on attachment 234594
the patch

It&apos;s ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1021222</commentid>
    <comment_count>3</comment_count>
      <attachid>234594</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-07-08 15:37:58 -0700</bug_when>
    <thetext>Comment on attachment 234594
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=234594&amp;action=review

r=me

&gt; Source/JavaScriptCore/dfg/DFGCleanUpPhase.cpp:43
&gt; +class CleanUpPhase : public Phase {
&gt; +public:
&gt; +    CleanUpPhase(Graph&amp; graph)
&gt; +        : Phase(graph, &quot;clean-up&quot;)

Would be nice to specify what we&apos;re cleaning up. PhantomCleanUpPhase?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1021268</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-08 19:45:38 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 234594 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=234594&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGCleanUpPhase.cpp:43
&gt; &gt; +class CleanUpPhase : public Phase {
&gt; &gt; +public:
&gt; &gt; +    CleanUpPhase(Graph&amp; graph)
&gt; &gt; +        : Phase(graph, &quot;clean-up&quot;)
&gt; 
&gt; Would be nice to specify what we&apos;re cleaning up. PhantomCleanUpPhase?

I&apos;ll call it PhantomRemovalPhase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1021269</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-08 20:01:03 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/170907</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234594</attachid>
            <date>2014-07-08 14:08:25 -0700</date>
            <delta_ts>2014-07-08 15:37:57 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>22820</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcwODkzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBA
CisyMDE0LTA3LTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
W2Z0bG9wdF0gUGhhbnRvbSBzaW1wbGlmaWNhdGlvbiBzaG91bGQgYmUgaW4gaXRzIG93biBwaGFz
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0NzQy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAg
ICBUaGlzIG1vdmVzIFBoYW50b20gc2ltcGxpZmljYXRpb24gb3V0IG9mIENTRSwgd2hpY2ggZ3Jl
YXRseSBzaW1wbGlmaWVzIENTRSBhbmQgZ2l2ZXMgaXQKKyAgICAgICAgbW9yZSBmb2N1cy4gQWxz
byB0aGlzIGZpbmFsbHkgYWRkcyBhIHBoYXNlIHRoYXQgcmVtb3ZlcyBlbXB0eSBQaGFudG9tcy4g
V2Ugc29ydCBvZiBoYWQKKyAgICAgICAgdGhpcyBpbiBDUFNSZXRocmVhZGluZywgYnV0IHRoYXQg
cGhhc2UgcnVucyB0b28gaW5mcmVxdWVudGx5IGFuZCBkb2Vzbid0IHJ1biBhdCBhbGwgZm9yCisg
ICAgICAgIFNTQS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRmZy9ERkdB
ZGphY2VuY3lMaXN0Lmg6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpDU0VQaGFzZTo6cnVuKToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6
c2V0UmVwbGFjZW1lbnQpOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjplbGltaW5hdGUp
OgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpwZXJmb3JtTm9kZUNTRSk6CisgICAgICAg
IChKU0M6OkRGRzo6Q1NFUGhhc2U6OmVsaW1pbmF0ZUlycmVsZXZhbnRQaGFudG9tQ2hpbGRyZW4p
OiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdDbGVhblVwUGhhc2UuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6REZHOjpDbGVhblVwUGhhc2U6OkNsZWFuVXBQaGFzZSk6CisgICAgICAgIChK
U0M6OkRGRzo6Q2xlYW5VcFBoYXNlOjpydW4pOgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1D
bGVhblVwKToKKyAgICAgICAgKiBkZmcvREZHQ2xlYW5VcFBoYXNlLmg6IEFkZGVkLgorICAgICAg
ICAqIGRmZy9ERkdQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjpjb21waWxlSW5U
aHJlYWRJbXBsKToKKwogMjAxNC0wNy0wOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29t
PgogCiAgICAgICAgIFtmdGxvcHRdIEdldCByaWQgb2YgTm9kZTo6bWlzYyBieSBtb3ZpbmcgdGhl
IGZpZWxkcyBvdXQgb2YgdGhlIHVuaW9uIHNvIHRoYXQgeW91IGNhbiB1c2UgcmVwbGFjZW1lbnQg
YW5kIG93bmVyIHNpbXVsdGFuZW91c2x5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiAxNzA4OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw2ICsxMjQsNyBAQCBzZXQoSmF2YVNjcmlw
dENvcmVfU09VUkNFUwogICAgIGRmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAogICAgIGRm
Zy9ERkdDU0VQaGFzZS5jcHAKICAgICBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorICAgIGRmZy9E
RkdDbGVhblVwUGhhc2UuY3BwCiAgICAgZGZnL0RGR0Nsb2JiZXJTZXQuY3BwCiAgICAgZGZnL0RG
R0Nsb2JiZXJpemUuY3BwCiAgICAgZGZnL0RGR0NvbW1vbi5jcHAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNpb24gMTcwODkzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMzczLDYgKzM3Myw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxkZmdcREZHQ2FwYWJpbGl0aWVzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGRmZ1xERkdDRkFQaGFzZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxkZmdcREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxkZmdcREZHQ2xlYW5VcFBoYXNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGRmZ1xERkdDbG9iYmVyaXplLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGRmZ1xERkdDbG9iYmVyU2V0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXGRmZ1xERkdDb21tb24uY3BwIiAvPgpAQCAtOTM3LDYgKzkzOCw3IEBACiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHQ0NhbGxIZWxwZXJzLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxkZmdcREZHQ0ZBUGhhc2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGRmZ1xERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmgiIC8+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxkZmdcREZHQ2xlYW5VcFBoYXNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxkZmdcREZHQ2xvYmJlcml6ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cZGZnXERGR0Nsb2JiZXJTZXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGRmZ1xERkdDb21tb24uaCIgLz4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxNzA4OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDU2LDYgKzQ1Niw4
IEBACiAJCTBGQkUwRjc1MTZDMURCMEIwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9u
UGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
QkUwRjZFMTZDMURCMDEwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkJFMEY3
NjE2QzFEQjBGMDA4MkM1RTggLyogREZHVW5pZmljYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkJFMEY2RjE2QzFEQjAxMDA4MkM1
RTggLyogREZHVW5pZmljYXRpb25QaGFzZS5jcHAgKi87IH07CiAJCTBGQkUwRjc3MTZDMURCMTIw
MDgyQzVFOCAvKiBERkdVbmlmaWNhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkJFMEY3MDE2QzFEQjAxMDA4MkM1RTggLyogREZHVW5p
ZmljYXRpb25QaGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGQkZERDA0MTk2QzkyQkYwMDdBNUJGQSAvKiBERkdDbGVhblVwUGhhc2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCRkREMDIx
OTZDOTJCRjAwN0E1QkZBIC8qIERGR0NsZWFuVXBQaGFzZS5jcHAgKi87IH07CisJCTBGQkZERDA1
MTk2QzkyQkYwMDdBNUJGQSAvKiBERkdDbGVhblVwUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkZERDAzMTk2QzkyQkYwMDdBNUJGQSAvKiBE
RkdDbGVhblVwUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRkMwOTc2QTE0NjhBNkY3MDBDRjI0NDIgLyogREZHT1NSRXhpdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3NjgxNDY4QTZF
RjAwQ0YyNDQyIC8qIERGR09TUkV4aXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRkMwOTc3MTE0NjkzQUY1MDBDRjI0NDIgLyogREZHT1NSRXhp
dENvbXBpbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkMwOTc2RjE0NjkzQUVGMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZDMDk3NzIxNDY5
M0FGOTAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlcjY0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzcwMTQ2OTNBRUYwMENGMjQ0MiAv
KiBERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAgKi87IH07CkBAIC0yNjQxLDYgKzI2NDMsOCBAQAog
CQkwRkJFMEY2RTE2QzFEQjAxMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1ByZWRpY3Rpb25JbmplY3Rp
b25QaGFzZS5oOyBwYXRoID0gZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkJFMEY2RjE2QzFEQjAxMDA4MkM1RTggLyogREZH
VW5pZmljYXRpb25QaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBERkdVbmlmaWNhdGlvblBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdVbmlmaWNhdGlvblBoYXNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCRTBGNzAxNkMxREIwMTAwODJD
NUU4IC8qIERGR1VuaWZpY2F0aW9uUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gREZHVW5pZmljYXRpb25QaGFzZS5oOyBwYXRoID0gZGZnL0RGR1VuaWZpY2F0aW9uUGhh
c2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCRkREMDIxOTZDOTJCRjAwN0E1
QkZBIC8qIERGR0NsZWFuVXBQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBERkdDbGVhblVwUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR0NsZWFuVXBQaGFzZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQkZERDAzMTk2QzkyQkYwMDdBNUJG
QSAvKiBERkdDbGVhblVwUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
REZHQ2xlYW5VcFBoYXNlLmg7IHBhdGggPSBkZmcvREZHQ2xlYW5VcFBoYXNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzA5NzY4MTQ2OEE2RUYwMENGMjQ0MiAvKiBERkdPU1JF
eGl0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR09TUkV4aXQuaDsgcGF0
aCA9IGRmZy9ERkdPU1JFeGl0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzA5
NzZGMTQ2OTNBRUYwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT1NSRXhpdENvbXBpbGVyLmg7IHBhdGggPSBkZmcvREZH
T1NSRXhpdENvbXBpbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzA5Nzcw
MTQ2OTNBRUYwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHA7IHBhdGgg
PSBkZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNTAwNSw2ICs1MDA5LDggQEAKIAkJODZFQzlEQjMxMzI4REY0NDAwMkIyQUQ3IC8qIGRm
ZyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEZCRkRE
MDIxOTZDOTJCRjAwN0E1QkZBIC8qIERGR0NsZWFuVXBQaGFzZS5jcHAgKi8sCisJCQkJMEZCRkRE
MDMxOTZDOTJCRjAwN0E1QkZBIC8qIERGR0NsZWFuVXBQaGFzZS5oICovLAogCQkJCUE3N0E0MjM2
MTdBMEJCRkQwMEE4REI4MSAvKiBERkdBYnN0cmFjdEhlYXAuY3BwICovLAogCQkJCUE3N0E0MjM3
MTdBMEJCRkQwMEE4REI4MSAvKiBERkdBYnN0cmFjdEhlYXAuaCAqLywKIAkJCQlBNzA0RDhGRTE3
QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlci5oICovLApAQCAtNjMxNCw2
ICs2MzIwLDcgQEAKIAkJCQk4NjA2RERFQTE4REE0NEFCMDBBMzgzRDAgLyogSWRlbnRpZmllcklu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MzI0MzhDMTg1NjgzMzUwMDJFRDY5MiAvKiBJ
bnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwRTRCNjIxODgw
OURENTAwNjhBNDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEZCRkREMDUxOTZDOTJCRjAwN0E1QkZBIC8qIERGR0NsZWFuVXBQaGFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTU1RDkzQUMxODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3RvclR5cGVCdWls
ZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTkzQ0Y4MzE4NDAzNzcxMDBCRkNFMjcgLyogSW5z
cGVjdG9yVmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjlBMDc5OTBFRDFEM0FFMDBGMUY2
ODEgLyogSW5zdHJ1Y3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtODA2Nyw2ICs4MDc0LDcgQEAK
IAkJCQlDMjI1NDk0MzE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZpc2l0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTMzMDQwMkMwRTZBNzY0MDAwNzg2RTZBIC8qIFNtYWxsU3RyaW5ncy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjhGMkI5RTE3MzA2QzhEMDA3REJEQTUgLyogU291cmNlQ29k
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkJGREQwNDE5NkM5MkJGMDA3QTVCRkEgLyogREZH
Q2xlYW5VcFBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDkzQUZBMTZEMENBRDMwMDg0
NTA4QiAvKiBTb3VyY2VQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDlEQzE2QjEy
RUYyOTNFMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjBDRDRDNDE1RjZCNkJCMDAzMkYxQzAgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAg
aW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRqYWNl
bmN5TGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRq
YWNlbmN5TGlzdC5oCShyZXZpc2lvbiAxNzA4OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FkamFjZW5jeUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIHNldENoaWxkKGksIGNoaWxkKGkgKyAxKSk7CiAgICAgICAg
IHNldENoaWxkKFNpemUgLSAxLCBFZGdlKCkpOwogICAgIH0KLQorICAgIAogICAgIHVuc2lnbmVk
IGZpcnN0Q2hpbGQoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fd29yZHNbMF0ubV9l
bmNvZGVkV29yZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2Uu
Y3BwCShyZXZpc2lvbiAxNzA4OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NT
RVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNDcgKzU0LDYgQEAgcHVibGljOgogICAg
ICAgICAKICAgICAgICAgbV9ncmFwaC5jbGVhclJlcGxhY2VtZW50cygpOwogICAgICAgICAKLSAg
ICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBi
bG9ja0luZGV4LS07KSB7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGgu
YmxvY2soYmxvY2tJbmRleCk7Ci0gICAgICAgICAgICBpZiAoIWJsb2NrKQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBBbGwgUGhpcyBuZWVk
IHRvIGFscmVhZHkgYmUgbWFya2VkIGFzIHJlbGV2YW50IHRvIE9TUi4KLSAgICAgICAgICAgIGlm
ICghQVNTRVJUX0RJU0FCTEVEKSB7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGJsb2NrLT5waGlzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoYmxvY2stPnBoaXNbaV0tPmZsYWdzKCkgJiBOb2RlUmVsZXZhbnRUb09TUik7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2Nr
LT5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0
KGkpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3Ao
KSkgewotICAgICAgICAgICAgICAgIGNhc2UgU2V0TG9jYWw6Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBHZXRMb2NhbDogLy8gRklYTUU6IFRoZSBHZXRMb2NhbCBjYXNlIGlzIG9ubHkgbmVjZXNzYXJ5
IHVudGlsIHdlIGRvIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY3
MDcuCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZVJlbGV2YW50VG9P
U1IpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVSZWxldmFudFRvT1NS
KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxv
Y2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKLSAgICAgICAg
ICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKLSAgICAg
ICAgICAgIGlmICghYmxvY2spCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5zaXplKCk7IGktLTspIHsK
LSAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwotICAgICAgICAgICAg
ICAgIGlmICghbm9kZS0+Y29udGFpbnNNb3ZIaW50KCkpCi0gICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5v
cCgpICE9IFpvbWJpZUhpbnQpOwotICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgpLT5tZXJn
ZUZsYWdzKE5vZGVSZWxldmFudFRvT1NSKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
ICAgICAKICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkgewogICAgICAgICAgICAg
VmVjdG9yPEJhc2ljQmxvY2sqPiBkZXB0aEZpcnN0OwogICAgICAgICAgICAgbV9ncmFwaC5nZXRC
bG9ja3NJbkRlcHRoRmlyc3RPcmRlcihkZXB0aEZpcnN0KTsKQEAgLTgzMSwzMCArNzkwLDEyIEBA
IHByaXZhdGU6CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHZvaWQgZWxp
bWluYXRlSXJyZWxldmFudFBoYW50b21DaGlsZHJlbihOb2RlKiBub2RlKQotICAgIHsKLSAgICAg
ICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gUGhhbnRvbSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBBZGphY2VuY3lMaXN0OjpTaXplOyArK2kpIHsKLSAgICAgICAgICAgIEVkZ2Ug
ZWRnZSA9IG5vZGUtPmNoaWxkcmVuLmNoaWxkKGkpOwotICAgICAgICAgICAgaWYgKCFlZGdlKQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKGVkZ2UudXNlS2luZCgp
ICE9IFVudHlwZWRVc2UpCi0gICAgICAgICAgICAgICAgY29udGludWU7IC8vIEtlZXAgdGhlIHR5
cGUgY2hlY2suCi0gICAgICAgICAgICBpZiAoZWRnZS0+ZmxhZ3MoKSAmIE5vZGVSZWxldmFudFRv
T1NSKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAg
ICBub2RlLT5jaGlsZHJlbi5yZW1vdmVFZGdlKGktLSk7Ci0gICAgICAgICAgICBtX2NoYW5nZWQg
PSB0cnVlOwotICAgICAgICB9Ci0gICAgfQotICAgIAogICAgIGJvb2wgc2V0UmVwbGFjZW1lbnQo
Tm9kZSogcmVwbGFjZW1lbnQpCiAgICAgewogICAgICAgICBpZiAoIXJlcGxhY2VtZW50KQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKICAgICAgICAgbV9jdXJyZW50Tm9kZS0+
Y29udmVydFRvUGhhbnRvbSgpOwotICAgICAgICBlbGltaW5hdGVJcnJlbGV2YW50UGhhbnRvbUNo
aWxkcmVuKG1fY3VycmVudE5vZGUpOwogICAgICAgICAKICAgICAgICAgLy8gQXQgdGhpcyBwb2lu
dCB3ZSB3aWxsIGVsaW1pbmF0ZSBhbGwgcmVmZXJlbmNlcyB0byB0aGlzIG5vZGUuCiAgICAgICAg
IG1fY3VycmVudE5vZGUtPnJlcGxhY2VtZW50ID0gcmVwbGFjZW1lbnQ7CkBAIC04NjgsNyArODA5
LDYgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2N1cnJlbnROb2RlLT5tdXN0
R2VuZXJhdGUoKSk7CiAgICAgICAgIG1fY3VycmVudE5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsK
LSAgICAgICAgZWxpbWluYXRlSXJyZWxldmFudFBoYW50b21DaGlsZHJlbihtX2N1cnJlbnROb2Rl
KTsKICAgICAgICAgCiAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CiAgICAgfQpAQCAtODc5LDgg
KzgxOSw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIEFTU0VSVChu
b2RlLT5tdXN0R2VuZXJhdGUoKSk7CiAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdz
KHBoYW50b21UeXBlKTsKLSAgICAgICAgaWYgKHBoYW50b21UeXBlID09IFBoYW50b20pCi0gICAg
ICAgICAgICBlbGltaW5hdGVJcnJlbGV2YW50UGhhbnRvbUNoaWxkcmVuKG5vZGUpOwogICAgICAg
ICAKICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICB9CkBAIC0xMTEwLDE0ICsxMDQ4LDYg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBlbGltaW5hdGUoKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgUGhhbnRvbToKLSAgICAgICAgICAgIC8v
IEZJWE1FOiB3ZSBvdWdodCB0byByZW1vdmUgUGhhbnRvbSdzIHRoYXQgaGF2ZSBubyBjaGlsZHJl
bi4KLSAgICAgICAgICAgIC8vIE5CLiBJdCB3b3VsZCBiZSBpbmNvcnJlY3QgdG8gZG8gdGhpcyBm
b3IgSGFyZFBoYW50b20uIEluIGZhY3QsIHRoZSB3aG9sZSBwb2ludAotICAgICAgICAgICAgLy8g
b2YgSGFyZFBoYW50b20gaXMgdGhhdCB3ZSAqZG9uJ3QqIGRvIHRoaXMgZm9yIEhhcmRQaGFudG9t
cywgc2luY2UgdGhleSBzaWduaWZ5Ci0gICAgICAgICAgICAvLyBhIG1vcmUgc3RyaWN0IGtpbmQg
b2YgbGl2ZW5lc3MgdGhhbiB0aGUgUGhhbnRvbSBieXRlY29kZSBsaXZlbmVzcy4KLSAgICAgICAg
ICAgIGVsaW1pbmF0ZUlycmVsZXZhbnRQaGFudG9tQ2hpbGRyZW4obm9kZSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIAogICAgICAgICBjYXNlIEZsdXNoOgogICAgICAgICAgICAg
Ly8gVGhpcyBpcyBuZWVkZWQgZm9yIGFyZ3VtZW50cyBzaW1wbGlmaWNhdGlvbiB0byB3b3JrLiBX
ZSBuZWVkIHRvIGVsaW1pbmF0ZSB0aGUKICAgICAgICAgICAgIC8vIHJlZHVuZGFuY3kgYmV0d2Vl
biBvcF9lbnRlcidzIHVuZGVmaW5lZC1hbGwtdGhlLXRoaW5ncyBhbmQgdGhlIHN1YnNlcXVlbnQK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xlYW5VcFBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NsZWFuVXBQaGFzZS5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NsZWFuVXBQaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNDggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkRGR0NsZWFuVXBQaGFzZS5oIgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRl
ICJERkdHcmFwaC5oIgorI2luY2x1ZGUgIkRGR0luc2VydGlvblNldC5oIgorI2luY2x1ZGUgIkRG
R1BoYXNlLmgiCisjaW5jbHVkZSAiREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuaCIKKyNp
bmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmgiCisjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK2NsYXNzIENsZWFuVXBQ
aGFzZSA6IHB1YmxpYyBQaGFzZSB7CitwdWJsaWM6CisgICAgQ2xlYW5VcFBoYXNlKEdyYXBoJiBn
cmFwaCkKKyAgICAgICAgOiBQaGFzZShncmFwaCwgImNsZWFuLXVwIikKKyAgICB7CisgICAgfQor
ICAgIAorICAgIGJvb2wgcnVuKCkKKyAgICB7CisgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNl
OworICAgICAgICAKKyAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBo
Lm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBi
bG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CisgICAgICAgICAgICBpZiAoIWJsb2Nr
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICAv
LyBBbGwgUGhpcyBuZWVkIHRvIGFscmVhZHkgYmUgbWFya2VkIGFzIHJlbGV2YW50IHRvIE9TUi4K
KyAgICAgICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5waGlzLnNpemUoKTsgKytpKQorICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoYmxvY2stPnBoaXNbaV0tPmZsYWdzKCkgJiBOb2RlUmVsZXZhbnRU
b09TUik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IGJsb2NrLT5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICBOb2RlKiBu
b2RlID0gYmxvY2stPmF0KGkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHN3
aXRjaCAobm9kZS0+b3AoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgU2V0TG9jYWw6CisgICAg
ICAgICAgICAgICAgY2FzZSBHZXRMb2NhbDogLy8gRklYTUU6IFRoZSBHZXRMb2NhbCBjYXNlIGlz
IG9ubHkgbmVjZXNzYXJ5IHVudGlsIHdlIGRvIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDY3MDcuCisgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3Mo
Tm9kZVJlbGV2YW50VG9PU1IpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5v
ZGVSZWxldmFudFRvT1NSKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmb3Ig
KEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgt
LTspIHsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9j
a0luZGV4KTsKKyAgICAgICAgICAgIGlmICghYmxvY2spCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5z
aXplKCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkp
OworICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IE1vdkhpbnQpCisgICAgICAgICAg
ICAgICAgICAgIG5vZGUtPmNoaWxkMSgpLT5tZXJnZUZsYWdzKE5vZGVSZWxldmFudFRvT1NSKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZm9yIChCbG9ja0lu
ZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7Cisg
ICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7
CisgICAgICAgICAgICBpZiAoIWJsb2NrKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgCisgICAgICAgICAgICB1bnNpZ25lZCBzb3VyY2VJbmRleCA9IDA7CisgICAgICAg
ICAgICB1bnNpZ25lZCB0YXJnZXRJbmRleCA9IDA7CisgICAgICAgICAgICBOb2RlKiBsYXN0Tm9k
ZSA9IG51bGxwdHI7CisgICAgICAgICAgICB3aGlsZSAoc291cmNlSW5kZXggPCBibG9jay0+c2l6
ZSgpKSB7CisgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChzb3VyY2VJbmRl
eCsrKTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQaGFudG9tKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChsYXN0Tm9kZSAmJiAobGFzdE5vZGUtPm9yaWdpbi5mb3JFeGl0
ICE9IG5vZGUtPm9yaWdpbi5mb3JFeGl0IHx8IChsYXN0Tm9kZS0+ZmxhZ3MoKSAmIE5vZGVIYXNW
YXJBcmdzKSkpCisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0Tm9kZSA9IG51bGxwdHI7Cisg
ICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBBZGphY2VuY3lMaXN0
OjpTaXplOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG5vZGUt
PmNoaWxkcmVuLmNoaWxkKGkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlZGdlKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGVkZ2UudXNlS2luZCgpICE9IFVudHlwZWRVc2UpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7IC8vIEtlZXAgdGhlIHR5cGUgY2hlY2suCisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoZWRnZS0+ZmxhZ3MoKSAmIE5vZGVSZWxldmFudFRvT1NSKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChsYXN0Tm9kZSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgQWRqYWNlbmN5TGlzdDo6U2l6ZTsgKytq
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFzdE5vZGUtPmNo
aWxkcmVuLmNoaWxkKGopLm5vZGUoKSA9PSBlZGdlLm5vZGUoKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZv
dW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4ucmVtb3ZlRWRnZShpLS0pOworICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5p
c0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgbGFzdE5vZGUgPSBub2RlOworICAgICAgICAgICAgICAg
IGJsb2NrLT5hdCh0YXJnZXRJbmRleCsrKSA9IG5vZGU7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBibG9jay0+cmVzaXplKHRhcmdldEluZGV4KTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgcmV0dXJuIGNoYW5nZWQ7CisgICAgfQorfTsKKyAgICAKK2Jvb2wgcGVyZm9ybUNsZWFu
VXAoR3JhcGgmIGdyYXBoKQoreworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJE
RkcgQ2xlYW4gVXAgUGhhc2UiKTsKKyAgICByZXR1cm4gcnVuUGhhc2U8Q2xlYW5VcFBoYXNlPihn
cmFwaCk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJM
RShERkdfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NsZWFuVXBQ
aGFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xlYW5V
cFBoYXNlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
ZWFuVXBQaGFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdDbGVhblVwUGhh
c2VfaAorI2RlZmluZSBERkdDbGVhblVwUGhhc2VfaAorCisjaWYgRU5BQkxFKERGR19KSVQpCisK
K25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworY2xhc3MgR3JhcGg7CisKKy8vIENs
ZWFucyB1cCB1bm5lY2Vzc2FyeSBQaGFudG9tcyBhbmQgUGhhbnRvbiBjaGlsZHJlbi4gVGhpcyBy
ZWR1Y2VzIGxpdmUgcmFuZ2VzLCBidXQgYWxzbywgaXQKKy8vIGVsaW1pbmF0ZXMgbWFueSBQaGFu
dG9tcyBlbnRpcmVseS4gVGhpcyBpbnZhbGlkYXRlcyBsaXZlbmVzcyBhbmFseXNpcy4KKworYm9v
bCBwZXJmb3JtQ2xlYW5VcChHcmFwaCYpOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisK
KyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERGR0NsZWFuVXBQaGFzZV9o
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9uIDE3MDg5
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNl
LmgiCiAjaW5jbHVkZSAiREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5oIgogI2luY2x1ZGUgIkRGR0NT
RVBoYXNlLmgiCisjaW5jbHVkZSAiREZHQ2xlYW5VcFBoYXNlLmgiCiAjaW5jbHVkZSAiREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuaCIKICNpbmNsdWRlICJERkdDcml0aWNhbEVkZ2VCcmVha2luZ1Bo
YXNlLmgiCiAjaW5jbHVkZSAiREZHRENFUGhhc2UuaCIKQEAgLTI2MCw3ICsyNjEsNyBAQCBQbGFu
OjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyCiAgICAgCiAgICAgaWYgKHZhbGlk
YXRpb25FbmFibGVkKCkpCiAgICAgICAgIHZhbGlkYXRlKGRmZyk7Ci0KKyAgICAKICAgICBwZXJm
b3JtQ1BTUmV0aHJlYWRpbmcoZGZnKTsKICAgICBpZiAoY2hhbmdlZCkgewogICAgICAgICBwZXJm
b3JtQ0ZBKGRmZyk7CkBAIC0yODEsNiArMjgyLDcgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBs
YW46OmNvbXBpbGVJblRocgogICAgICAgICBwZXJmb3JtVGllclVwQ2hlY2tJbmplY3Rpb24oZGZn
KTsKIAogICAgICAgICBwZXJmb3JtU3RvcmVCYXJyaWVyRWxpc2lvbihkZmcpOworICAgICAgICBw
ZXJmb3JtQ2xlYW5VcChkZmcpOwogICAgICAgICBwZXJmb3JtQ1BTUmV0aHJlYWRpbmcoZGZnKTsK
ICAgICAgICAgcGVyZm9ybURDRShkZmcpOwogICAgICAgICBwZXJmb3JtU3RhY2tMYXlvdXQoZGZn
KTsKQEAgLTMwOCw2ICszMTAsNyBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGls
ZUluVGhyCiAgICAgICAgICAgICByZXR1cm4gRmFpbFBhdGg7CiAgICAgICAgIH0KICAgICAgICAg
CisgICAgICAgIHBlcmZvcm1DbGVhblVwKGRmZyk7CiAgICAgICAgIHBlcmZvcm1Dcml0aWNhbEVk
Z2VCcmVha2luZyhkZmcpOwogICAgICAgICBwZXJmb3JtTG9vcFByZUhlYWRlckNyZWF0aW9uKGRm
Zyk7CiAgICAgICAgIHBlcmZvcm1DUFNSZXRocmVhZGluZyhkZmcpOwpAQCAtMzI0LDYgKzMyNyw3
IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHIKICAgICAgICAgICAg
IHBlcmZvcm1DRkEoZGZnKTsKICAgICAgICAgfQogICAgICAgICBwZXJmb3JtTElDTShkZmcpOwor
ICAgICAgICBwZXJmb3JtQ2xlYW5VcChkZmcpOwogICAgICAgICBwZXJmb3JtSW50ZWdlckNoZWNr
Q29tYmluaW5nKGRmZyk7CiAgICAgICAgIHBlcmZvcm1DU0UoZGZnKTsKICAgICAgICAgCkBAIC0z
MzIsNiArMzM2LDcgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocgog
ICAgICAgICBkZmcubV9maXhwb2ludFN0YXRlID0gRml4cG9pbnRDb252ZXJnZWQ7CiAgICAgICAg
IAogICAgICAgICBwZXJmb3JtU3RvcmVCYXJyaWVyRWxpc2lvbihkZmcpOworICAgICAgICBwZXJm
b3JtQ2xlYW5VcChkZmcpOwogICAgICAgICBwZXJmb3JtTGl2ZW5lc3NBbmFseXNpcyhkZmcpOwog
ICAgICAgICBwZXJmb3JtQ0ZBKGRmZyk7CiAgICAgICAgIGlmIChPcHRpb25zOjp2YWxpZGF0ZUZU
TE9TUkV4aXRMaXZlbmVzcygpKQo=
</data>
<flag name="review"
          id="259130"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>