<?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>78715</bug_id>
          
          <creation_ts>2012-02-15 07:13:16 -0800</creation_ts>
          <short_desc>[GTK] Allow printing multiple pages per sheet in WebKit2 for printers that don&apos;t support it</short_desc>
          <delta_ts>2012-02-17 08:43:17 -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>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>75544</blocked>
    
    <blocked>78793</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gustavo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>557249</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-02-15 07:13:16 -0800</bug_when>
    <thetext>Multiple pages per sheet is not supported when printing to a file, for example. We need to provide custom code to implement it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557259</commentid>
    <comment_count>1</comment_count>
      <attachid>127184</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-02-15 07:25:05 -0800</bug_when>
    <thetext>Created attachment 127184
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558653</commentid>
    <comment_count>2</comment_count>
      <attachid>127184</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-02-16 16:24:16 -0800</bug_when>
    <thetext>Comment on attachment 127184
Patch

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

&gt; Source/WebKit2/ChangeLog:3
&gt; +        [GTK] Allow printing multiple pages per sheet in WebKit2 for printers that don&apos;t support it

Correct me if I&apos;m wrong, but as far as I understood this code will run regardless of what printer is selected, isn&apos;t that right? Where you say printers that don&apos;t support it, do you mean this is for the case where we set the number of pages to print per sheet in the dialog, instead of through some printer-specific thing, or am I misssing something?

&gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp:93
&gt; +        printOperation-&gt;m_manualNumberUp = gtk_print_job_get_n_up(printOperation-&gt;m_printJob.get());
&gt; +        printOperation-&gt;m_manualNumberUpLayout = gtk_print_job_get_n_up_layout(printOperation-&gt;m_printJob.get());
&gt; +

Can we do away with the &apos;manual&apos; here and in the other patches? It feels out of place to me; I understand what you mean with it, but I think by having our own PrintOperation we already convey the idea that we are doing a lot of the processing ourselves, anyway; and we are not using the manual name in rotation, for instance, in which gtk unix print operation does; just a nit anyway.

&gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp:273
&gt; +    int sheetNumber;
&gt; +    int numberOfSheets;

I am wondering about the usage of size_t and int interchangeably. Any reason why we shouldn&apos;t standardize on size_t? It feels more correct to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558952</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-02-16 23:18:55 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 127184 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127184&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:3
&gt; &gt; +        [GTK] Allow printing multiple pages per sheet in WebKit2 for printers that don&apos;t support it
&gt; 
&gt; Correct me if I&apos;m wrong, but as far as I understood this code will run regardless of what printer is selected, isn&apos;t that right? Where you say printers that don&apos;t support it, do you mean this is for the case where we set the number of pages to print per sheet in the dialog, instead of through some printer-specific thing, or am I misssing something?

No, because the printer resets the settings of the features it supports. For example, when printing with cups in a printer that supports multiple pages per sheet, the cups gtk print backend sets n_up to 1 in the print job. 

&gt; &gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp:93
&gt; &gt; +        printOperation-&gt;m_manualNumberUp = gtk_print_job_get_n_up(printOperation-&gt;m_printJob.get());
&gt; &gt; +        printOperation-&gt;m_manualNumberUpLayout = gtk_print_job_get_n_up_layout(printOperation-&gt;m_printJob.get());
&gt; &gt; +
&gt; 
&gt; Can we do away with the &apos;manual&apos; here and in the other patches? It feels out of place to me; I understand what you mean with it, but I think by having our own PrintOperation we already convey the idea that we are doing a lot of the processing ourselves, anyway; and we are not using the manual name in rotation, for instance, in which gtk unix print operation does; just a nit anyway.

Yes, because rotation is always enabled in the print dialog. Manual capabilities correspond to GtkPrintCapabilities, you need to set them explicitly to enable them in the print dialog. A following patch will enable the supported ones in WebKitPrintOperation. So in this case the &apos;manual&apos; prefix means the feature correspond to a GtkPrintCapabilities enabled in the print dialog with gtk_print_unix_dialog_set_manual_capabilities(). I don&apos;t mind to remove it anyway.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp:273
&gt; &gt; +    int sheetNumber;
&gt; &gt; +    int numberOfSheets;
&gt; 
&gt; I am wondering about the usage of size_t and int interchangeably. Any reason why we shouldn&apos;t standardize on size_t? It feels more correct to me.

You are right, and this is causing a compile warning indeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559158</commentid>
    <comment_count>4</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-02-17 06:35:02 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; No, because the printer resets the settings of the features it supports. For example, when printing with cups in a printer that supports multiple pages per sheet, the cups gtk print backend sets n_up to 1 in the print job. 

OK, that makes sense.
 
&gt; &gt; Can we do away with the &apos;manual&apos; here and in the other patches? It feels out of place to me; I understand what you mean with it, but I think by having our own PrintOperation we already convey the idea that we are doing a lot of the processing ourselves, anyway; and we are not using the manual name in rotation, for instance, in which gtk unix print operation does; just a nit anyway.
&gt; 
&gt; Yes, because rotation is always enabled in the print dialog. Manual capabilities correspond to GtkPrintCapabilities, you need to set them explicitly to enable them in the print dialog. A following patch will enable the supported ones in WebKitPrintOperation. So in this case the &apos;manual&apos; prefix means the feature correspond to a GtkPrintCapabilities enabled in the print dialog with gtk_print_unix_dialog_set_manual_capabilities(). I don&apos;t mind to remove it anyway.

That means this will be dead code meanwhile?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559162</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-02-17 06:41:17 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; No, because the printer resets the settings of the features it supports. For example, when printing with cups in a printer that supports multiple pages per sheet, the cups gtk print backend sets n_up to 1 in the print job. 
&gt; 
&gt; OK, that makes sense.
&gt; 
&gt; &gt; &gt; Can we do away with the &apos;manual&apos; here and in the other patches? It feels out of place to me; I understand what you mean with it, but I think by having our own PrintOperation we already convey the idea that we are doing a lot of the processing ourselves, anyway; and we are not using the manual name in rotation, for instance, in which gtk unix print operation does; just a nit anyway.
&gt; &gt; 
&gt; &gt; Yes, because rotation is always enabled in the print dialog. Manual capabilities correspond to GtkPrintCapabilities, you need to set them explicitly to enable them in the print dialog. A following patch will enable the supported ones in WebKitPrintOperation. So in this case the &apos;manual&apos; prefix means the feature correspond to a GtkPrintCapabilities enabled in the print dialog with gtk_print_unix_dialog_set_manual_capabilities(). I don&apos;t mind to remove it anyway.
&gt; 
&gt; That means this will be dead code meanwhile?

I can just add the new capability on every patch while landing. Patches don&apos;t include it, because API hadn&apos;t landed when I submitted the patches</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559221</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-02-17 08:43:17 -0800</bug_when>
    <thetext>Committed r108080: &lt;http://trac.webkit.org/changeset/108080&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127184</attachid>
            <date>2012-02-15 07:25:05 -0800</date>
            <delta_ts>2012-02-16 16:24:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-print-n-up.diff</filename>
            <type>text/plain</type>
            <size>15353</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA1OGYyODZlLi41NGRlZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzgg
QEAKKzIwMTItMDItMTUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEFsbG93IHByaW50aW5nIG11bHRpcGxlIHBhZ2VzIHBlciBzaGVl
dCBpbiBXZWJLaXQyIGZvciBwcmludGVycyB0aGF0IGRvbid0IHN1cHBvcnQgaXQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NzE1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJpbnRQ
YWdlc0RhdGE6OlByaW50UGFnZXNEYXRhKTogSW5pdGlhbGl6ZSBzaGVldE51bWJlcgorICAgICAg
ICBhbmQgbnVtYmVyT2ZTaGVldHMuIE1vdmUgcGFnZVBvc2l0aW9uIHRvIFdlYlByaW50T3BlcmF0
aW9uR3RrLgorICAgICAgICAoV2ViS2l0OjpQcmludFBhZ2VzRGF0YTo6aW5jcmVtZW50UGFnZVNl
cXVlbmNlKTogSW5jcmVtZW50IGN1cnJlbnQKKyAgICAgICAgc2hlZXQgYW5kIHBhZ2UgcG9zaXRp
b24uCisgICAgICAgIChXZWJLaXQ6OldlYlByaW50T3BlcmF0aW9uR3RrOjpXZWJQcmludE9wZXJh
dGlvbkd0ayk6CisgICAgICAgIChXZWJLaXQ6OldlYlByaW50T3BlcmF0aW9uR3RrOjpjdXJyZW50
UGFnZUlzRmlyc3RQYWdlT2ZTaGVldCk6CisgICAgICAgIEhlbHBlciBmdW5jdGlvbiB0byBjaGVj
ayB3aGV0aGVyIGN1cnJlbnQgcGFnZXMgaXMgdGhlIGZpcnN0IG9uZSBvZgorICAgICAgICB0aGUg
Y3VycmVudCBzaGVldC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJpbnRPcGVyYXRpb25HdGs6OmN1
cnJlbnRQYWdlSXNMYXN0UGFnZU9mU2hlZXQpOgorICAgICAgICBIZWxwZXIgZnVuY3Rpb24gdG8g
Y2hlY2sgd2hldGhlciBjdXJyZW50IHBhZ2VzIGlzIHRoZSBsYXN0IG9uZSBvZgorICAgICAgICB0
aGUgY3VycmVudCBzaGVldC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJpbnRPcGVyYXRpb25HdGs6
OmdldFJvd3NBbmRDb2x1bW5zT2ZQYWdlc1BlclNoZWV0KToKKyAgICAgICAgUmV0dXJucyB0aGUg
bnVtYmVyIG9mIHJvd3MgYW5kIGNvbHVtbnMgb2YgcGFnZXMgcGVyIHNoZWV0LgorICAgICAgICAo
V2ViS2l0OjpXZWJQcmludE9wZXJhdGlvbkd0azo6Z2V0UG9zaXRpb25PZlBhZ2VJblNoZWV0KTog
UmV0dXJucworICAgICAgICB0aGUgcm93IGFuZCBjb2x1bW4gbnVtYmVyIG9mIHRoZSBjdXJyZW50
IHBhZ2UgaW4gdGhlIGN1cnJlbnQgc2hlZXQuCisgICAgICAgIChXZWJLaXQ6OldlYlByaW50T3Bl
cmF0aW9uR3RrOjpwcmVwYXJlQ29udGV4dFRvRHJhdyk6IFRyYW5zbGF0ZSwKKyAgICAgICAgc2Nh
bGUgYW5kIHJvdGF0ZSBhY2NvcmRpbmdseSB0byByZW5kZXIgZXZlcnkgcGFnZSBpbiB0aGUgcmln
aHQKKyAgICAgICAgcGxhY2Ugb2YgdGhlIHNoZWV0LgorICAgICAgICAoV2ViS2l0OjpXZWJQcmlu
dE9wZXJhdGlvbkd0azo6cmVuZGVyUGFnZSk6IENhbGwKKyAgICAgICAgcHJlcGFyZUNvbnRleHRU
b0RyYXcoKSBiZWZvcmUgZHJhd2luZyB0aGUgcGFnZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
aW50T3BlcmF0aW9uR3RrOjpzZXROdW1iZXJPZlBhZ2VzVG9QcmludCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByaW50T3BlcmF0aW9uR3RrOjpwYWdlUG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcmludE9wZXJhdGlvbkd0azo6c2V0UGFnZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJpbnRPcGVyYXRpb25HdGs6Om1hbnVhbE51bWJlclVwKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJpbnRPcGVyYXRpb25HdGs6Om1hbnVhbE51bWJlclVwTGF5b3V0KToKKwogMjAxMi0w
Mi0xMyAgVy4gSmFtZXMgTWFjTGVhbiAgPHdqbWFjbGVhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgW2Nocm9taXVtXSBSZW1vdmUgb2Jzb2xldGUgem9vbSBhbmltYXRpb24gcGF0aHdheS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRP
cGVyYXRpb25HdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9X
ZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKaW5kZXggYWMyZTczNC4uY2VlZTc1NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlv
bkd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQ
cmludE9wZXJhdGlvbkd0ay5jcHAKQEAgLTg4LDYgKzg4LDkgQEAgcHVibGljOgogICAgICAgICBw
cmludE9wZXJhdGlvbi0+bV9wYWdlc1RvUHJpbnQgPSBndGtfcHJpbnRfam9iX2dldF9wYWdlcyhw
cmludE9wZXJhdGlvbi0+bV9wcmludEpvYi5nZXQoKSk7CiAgICAgICAgIHByaW50T3BlcmF0aW9u
LT5tX25lZWRzUm90YXRpb24gPSBndGtfcHJpbnRfam9iX2dldF9yb3RhdGUocHJpbnRPcGVyYXRp
b24tPm1fcHJpbnRKb2IuZ2V0KCkpOwogCisgICAgICAgIHByaW50T3BlcmF0aW9uLT5tX21hbnVh
bE51bWJlclVwID0gZ3RrX3ByaW50X2pvYl9nZXRfbl91cChwcmludE9wZXJhdGlvbi0+bV9wcmlu
dEpvYi5nZXQoKSk7CisgICAgICAgIHByaW50T3BlcmF0aW9uLT5tX21hbnVhbE51bWJlclVwTGF5
b3V0ID0gZ3RrX3ByaW50X2pvYl9nZXRfbl91cF9sYXlvdXQocHJpbnRPcGVyYXRpb24tPm1fcHJp
bnRKb2IuZ2V0KCkpOworCiAgICAgICAgIHByaW50T3BlcmF0aW9uLT5wcmludChzdXJmYWNlLCA3
MiwgNzIpOwogICAgIH0KIApAQCAtMTAxLDYgKzEwNCw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
c3RhcnRQYWdlKGNhaXJvX3QqIGNyKQogICAgIHsKKyAgICAgICAgaWYgKCFjdXJyZW50UGFnZUlz
Rmlyc3RQYWdlT2ZTaGVldCgpKQorICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBHdGtQYXBl
clNpemUqIHBhcGVyU2l6ZSA9IGd0a19wYWdlX3NldHVwX2dldF9wYXBlcl9zaXplKG1fcGFnZVNl
dHVwLmdldCgpKTsKICAgICAgICAgZG91YmxlIHdpZHRoID0gZ3RrX3BhcGVyX3NpemVfZ2V0X3dp
ZHRoKHBhcGVyU2l6ZSwgR1RLX1VOSVRfUE9JTlRTKTsKICAgICAgICAgZG91YmxlIGhlaWdodCA9
IGd0a19wYXBlcl9zaXplX2dldF9oZWlnaHQocGFwZXJTaXplLCBHVEtfVU5JVF9QT0lOVFMpOwpA
QCAtMTI3LDcgKzEzMyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZW5kUGFnZShjYWlyb190KiBj
cikKICAgICB7Ci0gICAgICAgIGNhaXJvX3Nob3dfcGFnZShjcik7CisgICAgICAgIGlmIChjdXJy
ZW50UGFnZUlzTGFzdFBhZ2VPZlNoZWV0KCkpCisgICAgICAgICAgICBjYWlyb19zaG93X3BhZ2Uo
Y3IpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHByaW50Sm9iQ29tcGxldGUoR3RrUHJpbnRK
b2IqIHByaW50Sm9iLCBXZWJQcmludE9wZXJhdGlvbkd0a1VuaXgqIHByaW50T3BlcmF0aW9uLCBj
b25zdCBHRXJyb3IqKQpAQCAtMTkwLDcgKzE5Nyw4IEBAIHN0cnVjdCBQcmludFBhZ2VzRGF0YSB7
CiAgICAgICAgIDogcHJpbnRPcGVyYXRpb24ocHJpbnRPcGVyYXRpb24pCiAgICAgICAgICwgdG90
YWxQcmludGVkKC0xKQogICAgICAgICAsIHBhZ2VOdW1iZXIoMCkKLSAgICAgICAgLCBwYWdlUG9z
aXRpb24oMCkKKyAgICAgICAgLCBzaGVldE51bWJlcigwKQorICAgICAgICAsIG51bWJlck9mU2hl
ZXRzKDApCiAgICAgICAgICwgaXNEb25lKGZhbHNlKQogICAgIHsKICAgICAgICAgaWYgKHByaW50
T3BlcmF0aW9uLT5wYWdlc1RvUHJpbnQoKSA9PSBHVEtfUFJJTlRfUEFHRVNfUkFOR0VTKSB7CkBA
IC0yMjEsOCArMjI5LDE1IEBAIHN0cnVjdCBQcmludFBhZ2VzRGF0YSB7CiAgICAgICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IHByaW50T3BlcmF0aW9uLT5wYWdlQ291bnQoKTsgKytpKQogICAg
ICAgICAgICAgICAgIHBhZ2VzLmFwcGVuZChpKTsKICAgICAgICAgfQorICAgICAgICBwcmludE9w
ZXJhdGlvbi0+c2V0TnVtYmVyT2ZQYWdlc1RvUHJpbnQocGFnZXMuc2l6ZSgpKTsKIAotICAgICAg
ICBwYWdlTnVtYmVyID0gcGFnZXNbcGFnZVBvc2l0aW9uXTsKKyAgICAgICAgc2l6ZV90IG1hbnVh
bE51bWJlclVwID0gcHJpbnRPcGVyYXRpb24tPm1hbnVhbE51bWJlclVwKCk7CisgICAgICAgIGlm
IChtYW51YWxOdW1iZXJVcCA+IDEpCisgICAgICAgICAgICBudW1iZXJPZlNoZWV0cyA9IChwYWdl
cy5zaXplKCkgJSBtYW51YWxOdW1iZXJVcCkgPyBwYWdlcy5zaXplKCkgLyBtYW51YWxOdW1iZXJV
cCArIDEgOiBwYWdlcy5zaXplKCkgLyBtYW51YWxOdW1iZXJVcDsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgbnVtYmVyT2ZTaGVldHMgPSBwYWdlcy5zaXplKCk7CisKKyAgICAgICAgcGFnZU51
bWJlciA9IHBhZ2VzW3ByaW50T3BlcmF0aW9uLT5wYWdlUG9zaXRpb24oKV07CiAgICAgfQogCiAg
ICAgdm9pZCBpbmNyZW1lbnRQYWdlU2VxdWVuY2UoKQpAQCAtMjMyLDggKzI0NywxNSBAQCBzdHJ1
Y3QgUHJpbnRQYWdlc0RhdGEgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgcGFnZVBvc2l0aW9uKys7Ci0gICAgICAgIGlmIChwYWdlUG9zaXRpb24gPj0gcGFnZXMu
c2l6ZSgpKSB7CisgICAgICAgIHNpemVfdCBwYWdlUG9zaXRpb24gPSBwcmludE9wZXJhdGlvbi0+
cGFnZVBvc2l0aW9uKCk7CisgICAgICAgIGlmIChwcmludE9wZXJhdGlvbi0+Y3VycmVudFBhZ2VJ
c0xhc3RQYWdlT2ZTaGVldCgpKSB7CisgICAgICAgICAgICBzaGVldE51bWJlcisrOworICAgICAg
ICAgICAgcGFnZVBvc2l0aW9uID0gc2hlZXROdW1iZXIgKiBwcmludE9wZXJhdGlvbi0+bWFudWFs
TnVtYmVyVXAoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBwYWdlUG9zaXRpb24rKzsK
KyAgICAgICAgcHJpbnRPcGVyYXRpb24tPnNldFBhZ2VQb3NpdGlvbihwYWdlUG9zaXRpb24pOwor
CisgICAgICAgIGlmIChwYWdlUG9zaXRpb24gPj0gcGFnZXMuc2l6ZSgpIHx8IHNoZWV0TnVtYmVy
ID49IG51bWJlck9mU2hlZXRzKSB7CiAgICAgICAgICAgICBpc0RvbmUgPSB0cnVlOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yNDYsOCArMjY4LDkgQEAgc3RydWN0IFByaW50
UGFnZXNEYXRhIHsKICAgICBpbnQgdG90YWxQcmludGVkOwogICAgIHNpemVfdCB0b3RhbFRvUHJp
bnQ7CiAgICAgaW50IHBhZ2VOdW1iZXI7Ci0gICAgc2l6ZV90IHBhZ2VQb3NpdGlvbjsKICAgICBW
ZWN0b3I8c2l6ZV90PiBwYWdlczsKKyAgICBpbnQgc2hlZXROdW1iZXI7CisgICAgaW50IG51bWJl
ck9mU2hlZXRzOwogCiAgICAgYm9vbCBpc0RvbmUgOiAxOwogfTsKQEAgLTI3MSwxMCArMjk0LDE0
IEBAIFdlYlByaW50T3BlcmF0aW9uR3RrOjpXZWJQcmludE9wZXJhdGlvbkd0ayhXZWJQYWdlKiBw
YWdlLCBjb25zdCBQcmludEluZm8mIHByaW50CiAgICAgLCBtX3hEUEkoMSkKICAgICAsIG1feURQ
SSgxKQogICAgICwgbV9wcmludFBhZ2VzSWRsZUlkKDApCisgICAgLCBtX251bWJlck9mUGFnZXNU
b1ByaW50KDApCiAgICAgLCBtX3BhZ2VzVG9QcmludChHVEtfUFJJTlRfUEFHRVNfQUxMKQorICAg
ICwgbV9wYWdlUG9zaXRpb24oMCkKICAgICAsIG1fcGFnZVJhbmdlcygwKQogICAgICwgbV9wYWdl
UmFuZ2VzQ291bnQoMCkKICAgICAsIG1fbmVlZHNSb3RhdGlvbihmYWxzZSkKKyAgICAsIG1fbWFu
dWFsTnVtYmVyVXAoMSkKKyAgICAsIG1fbWFudWFsTnVtYmVyVXBMYXlvdXQoMCkKIHsKIH0KIApA
QCAtMjg5LDYgKzMxNiwxNiBAQCBpbnQgV2ViUHJpbnRPcGVyYXRpb25HdGs6OnBhZ2VDb3VudCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpbnRDb250ZXh0ID8gbV9wcmludENvbnRleHQtPnBhZ2VD
b3VudCgpIDogMDsKIH0KIAorYm9vbCBXZWJQcmludE9wZXJhdGlvbkd0azo6Y3VycmVudFBhZ2VJ
c0ZpcnN0UGFnZU9mU2hlZXQoKSBjb25zdAoreworICAgIHJldHVybiAobV9tYW51YWxOdW1iZXJV
cCA8IDIgfHwgISgobV9wYWdlUG9zaXRpb24pICUgbV9tYW51YWxOdW1iZXJVcCkpOworfQorCiti
b29sIFdlYlByaW50T3BlcmF0aW9uR3RrOjpjdXJyZW50UGFnZUlzTGFzdFBhZ2VPZlNoZWV0KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gKG1fbWFudWFsTnVtYmVyVXAgPCAyIHx8ICEoKG1fcGFnZVBv
c2l0aW9uICsgMSkgJSBtX21hbnVhbE51bWJlclVwKSB8fCBtX3BhZ2VQb3NpdGlvbiA9PSBtX251
bWJlck9mUGFnZXNUb1ByaW50IC0gMSk7Cit9CisKIHZvaWQgV2ViUHJpbnRPcGVyYXRpb25HdGs6
OnJvdGF0ZVBhZ2UoKQogewogICAgIEd0a1BhcGVyU2l6ZSogcGFwZXJTaXplID0gZ3RrX3BhZ2Vf
c2V0dXBfZ2V0X3BhcGVyX3NpemUobV9wYWdlU2V0dXAuZ2V0KCkpOwpAQCAtMzE4LDYgKzM1NSwx
NjkgQEAgdm9pZCBXZWJQcmludE9wZXJhdGlvbkd0azo6cm90YXRlUGFnZSgpCiAgICAgfQogfQog
Cit2b2lkIFdlYlByaW50T3BlcmF0aW9uR3RrOjpnZXRSb3dzQW5kQ29sdW1uc09mUGFnZXNQZXJT
aGVldChzaXplX3QmIHJvd3MsIHNpemVfdCYgY29sdW1ucykKK3sKKyAgICBzd2l0Y2ggKG1fbWFu
dWFsTnVtYmVyVXApIHsKKyAgICBkZWZhdWx0OgorICAgICAgICBjb2x1bW5zID0gMTsKKyAgICAg
ICAgcm93cyA9IDE7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjoKKyAgICAgICAgY29sdW1u
cyA9IDI7CisgICAgICAgIHJvd3MgPSAxOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDQ6Cisg
ICAgICAgIGNvbHVtbnMgPSAyOworICAgICAgICByb3dzID0gMjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSA2OgorICAgICAgICBjb2x1bW5zID0gMzsKKyAgICAgICAgcm93cyA9IDI7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgOToKKyAgICAgICAgY29sdW1ucyA9IDM7CisgICAgICAgIHJv
d3MgPSAzOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDE2OgorICAgICAgICBjb2x1bW5zID0g
NDsKKyAgICAgICAgcm93cyA9IDQ7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBX
ZWJQcmludE9wZXJhdGlvbkd0azo6Z2V0UG9zaXRpb25PZlBhZ2VJblNoZWV0KHNpemVfdCByb3dz
LCBzaXplX3QgY29sdW1ucywgaW50JiB4LCBpbnQmeSkKK3sKKyAgICBzd2l0Y2ggKG1fbWFudWFs
TnVtYmVyVXBMYXlvdXQpIHsKKyAgICBjYXNlIEdUS19OVU1CRVJfVVBfTEFZT1VUX0xFRlRfVE9f
UklHSFRfVE9QX1RPX0JPVFRPTToKKyAgICAgICAgeCA9IG1fcGFnZVBvc2l0aW9uICUgY29sdW1u
czsKKyAgICAgICAgeSA9IChtX3BhZ2VQb3NpdGlvbiAvIGNvbHVtbnMpICUgcm93czsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBHVEtfTlVNQkVSX1VQX0xBWU9VVF9MRUZUX1RPX1JJR0hUX0JP
VFRPTV9UT19UT1A6CisgICAgICAgIHggPSBtX3BhZ2VQb3NpdGlvbiAlIGNvbHVtbnM7CisgICAg
ICAgIHkgPSByb3dzIC0gMSAtIChtX3BhZ2VQb3NpdGlvbiAvIGNvbHVtbnMpICUgcm93czsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBHVEtfTlVNQkVSX1VQX0xBWU9VVF9SSUdIVF9UT19MRUZU
X1RPUF9UT19CT1RUT006CisgICAgICAgIHggPSBjb2x1bW5zIC0gMSAtIG1fcGFnZVBvc2l0aW9u
ICUgY29sdW1uczsKKyAgICAgICAgeSA9IChtX3BhZ2VQb3NpdGlvbiAvIGNvbHVtbnMpICUgcm93
czsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHVEtfTlVNQkVSX1VQX0xBWU9VVF9SSUdIVF9U
T19MRUZUX0JPVFRPTV9UT19UT1A6CisgICAgICAgIHggPSBjb2x1bW5zIC0gMSAtIG1fcGFnZVBv
c2l0aW9uICUgY29sdW1uczsKKyAgICAgICAgeSA9IHJvd3MgLSAxIC0gKG1fcGFnZVBvc2l0aW9u
IC8gY29sdW1ucykgJSByb3dzOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdUS19OVU1CRVJf
VVBfTEFZT1VUX1RPUF9UT19CT1RUT01fTEVGVF9UT19SSUdIVDoKKyAgICAgICAgeCA9IChtX3Bh
Z2VQb3NpdGlvbiAvIHJvd3MpICUgY29sdW1uczsKKyAgICAgICAgeSA9IG1fcGFnZVBvc2l0aW9u
ICUgcm93czsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHVEtfTlVNQkVSX1VQX0xBWU9VVF9U
T1BfVE9fQk9UVE9NX1JJR0hUX1RPX0xFRlQ6CisgICAgICAgIHggPSBjb2x1bW5zIC0gMSAtICht
X3BhZ2VQb3NpdGlvbiAvIHJvd3MpICUgY29sdW1uczsKKyAgICAgICAgeSA9IG1fcGFnZVBvc2l0
aW9uICUgcm93czsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHVEtfTlVNQkVSX1VQX0xBWU9V
VF9CT1RUT01fVE9fVE9QX0xFRlRfVE9fUklHSFQ6CisgICAgICAgIHggPSAobV9wYWdlUG9zaXRp
b24gLyByb3dzKSAlIGNvbHVtbnM7CisgICAgICAgIHkgPSByb3dzIC0gMSAtIG1fcGFnZVBvc2l0
aW9uICUgcm93czsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHVEtfTlVNQkVSX1VQX0xBWU9V
VF9CT1RUT01fVE9fVE9QX1JJR0hUX1RPX0xFRlQ6CisgICAgICAgIHggPSBjb2x1bW5zIC0gMSAt
IChtX3BhZ2VQb3NpdGlvbiAvIHJvd3MpICUgY29sdW1uczsKKyAgICAgICAgeSA9IHJvd3MgLSAx
IC0gbV9wYWdlUG9zaXRpb24gJSByb3dzOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3Zv
aWQgV2ViUHJpbnRPcGVyYXRpb25HdGs6OnByZXBhcmVDb250ZXh0VG9EcmF3KCkKK3sKKyAgICBp
ZiAobV9tYW51YWxOdW1iZXJVcCA8IDIpIHsKKyAgICAgICAgZG91YmxlIGxlZnQgPSBndGtfcGFn
ZV9zZXR1cF9nZXRfbGVmdF9tYXJnaW4obV9wYWdlU2V0dXAuZ2V0KCksIEdUS19VTklUX0lOQ0gp
OworICAgICAgICBkb3VibGUgdG9wID0gZ3RrX3BhZ2Vfc2V0dXBfZ2V0X3RvcF9tYXJnaW4obV9w
YWdlU2V0dXAuZ2V0KCksIEdUS19VTklUX0lOQ0gpOworICAgICAgICBjYWlyb190cmFuc2xhdGUo
bV9jYWlyb0NvbnRleHQuZ2V0KCksIGxlZnQgKiBtX3hEUEksIHRvcCAqIG1feURQSSk7CisKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIE11bHRpcGxlIHBhZ2VzIHBlciBzaGVldC4K
KyAgICBkb3VibGUgbWFyZ2luTGVmdCA9IGd0a19wYWdlX3NldHVwX2dldF9sZWZ0X21hcmdpbiht
X3BhZ2VTZXR1cC5nZXQoKSwgR1RLX1VOSVRfUE9JTlRTKTsKKyAgICBkb3VibGUgbWFyZ2luUmln
aHQgPSBndGtfcGFnZV9zZXR1cF9nZXRfcmlnaHRfbWFyZ2luKG1fcGFnZVNldHVwLmdldCgpLCBH
VEtfVU5JVF9QT0lOVFMpOworICAgIGRvdWJsZSBtYXJnaW5Ub3AgPSBndGtfcGFnZV9zZXR1cF9n
ZXRfdG9wX21hcmdpbihtX3BhZ2VTZXR1cC5nZXQoKSwgR1RLX1VOSVRfUE9JTlRTKTsKKyAgICBk
b3VibGUgbWFyZ2luQm90dG9tID0gZ3RrX3BhZ2Vfc2V0dXBfZ2V0X2JvdHRvbV9tYXJnaW4obV9w
YWdlU2V0dXAuZ2V0KCksIEdUS19VTklUX1BPSU5UUyk7CisKKyAgICBkb3VibGUgcGFwZXJXaWR0
aCA9IGd0a19wYWdlX3NldHVwX2dldF9wYXBlcl93aWR0aChtX3BhZ2VTZXR1cC5nZXQoKSwgR1RL
X1VOSVRfUE9JTlRTKTsKKyAgICBkb3VibGUgcGFwZXJIZWlnaHQgPSBndGtfcGFnZV9zZXR1cF9n
ZXRfcGFwZXJfaGVpZ2h0KG1fcGFnZVNldHVwLmdldCgpLCBHVEtfVU5JVF9QT0lOVFMpOworCisg
ICAgc2l6ZV90IHJvd3MsIGNvbHVtbnM7CisgICAgZ2V0Um93c0FuZENvbHVtbnNPZlBhZ2VzUGVy
U2hlZXQocm93cywgY29sdW1ucyk7CisKKyAgICBHdGtQYWdlT3JpZW50YXRpb24gb3JpZW50YXRp
b24gPSBndGtfcGFnZV9zZXR1cF9nZXRfb3JpZW50YXRpb24obV9wYWdlU2V0dXAuZ2V0KCkpOwor
ICAgIGRvdWJsZSBwYWdlV2lkdGggPSAwLCBwYWdlSGVpZ2h0ID0gMDsKKyAgICBzd2l0Y2ggKG9y
aWVudGF0aW9uKSB7CisgICAgY2FzZSBHVEtfUEFHRV9PUklFTlRBVElPTl9QT1JUUkFJVDoKKyAg
ICBjYXNlIEdUS19QQUdFX09SSUVOVEFUSU9OX1JFVkVSU0VfUE9SVFJBSVQ6CisgICAgICAgIHBh
Z2VXaWR0aCA9IHBhcGVyV2lkdGggLSAobWFyZ2luTGVmdCArIG1hcmdpblJpZ2h0KTsKKyAgICAg
ICAgcGFnZUhlaWdodCA9IHBhcGVySGVpZ2h0IC0gKG1hcmdpblRvcCArIG1hcmdpbkJvdHRvbSk7
CisgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShtX2NhaXJvQ29udGV4dC5nZXQoKSwgbWFyZ2luTGVm
dCwgbWFyZ2luVG9wKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHVEtfUEFHRV9PUklFTlRB
VElPTl9MQU5EU0NBUEU6CisgICAgY2FzZSBHVEtfUEFHRV9PUklFTlRBVElPTl9SRVZFUlNFX0xB
TkRTQ0FQRToKKyAgICAgICAgcGFnZVdpZHRoID0gcGFwZXJXaWR0aCAtIChtYXJnaW5Ub3AgKyBt
YXJnaW5Cb3R0b20pOworICAgICAgICBwYWdlSGVpZ2h0ID0gcGFwZXJIZWlnaHQgLSAobWFyZ2lu
TGVmdCArIG1hcmdpblJpZ2h0KTsKKyAgICAgICAgY2Fpcm9fdHJhbnNsYXRlKG1fY2Fpcm9Db250
ZXh0LmdldCgpLCBtYXJnaW5Ub3AsIG1hcmdpbkxlZnQpOworCisgICAgICAgIHNpemVfdCB0bXAg
PSBjb2x1bW5zOworICAgICAgICBjb2x1bW5zID0gcm93czsKKyAgICAgICAgcm93cyA9IHRtcDsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaW50IHgsIHk7CisgICAgZ2V0UG9zaXRpb25P
ZlBhZ2VJblNoZWV0KHJvd3MsIGNvbHVtbnMsIHgsIHkpOworCisgICAgc3dpdGNoIChtX21hbnVh
bE51bWJlclVwKSB7CisgICAgY2FzZSA0OgorICAgIGNhc2UgOToKKyAgICBjYXNlIDE2OiB7Cisg
ICAgICAgIGRvdWJsZSBzY2FsZVggPSBwYWdlV2lkdGggLyAoY29sdW1ucyAqIHBhcGVyV2lkdGgp
OworICAgICAgICBkb3VibGUgc2NhbGVZID0gcGFnZUhlaWdodCAvIChyb3dzICogcGFwZXJIZWln
aHQpOworICAgICAgICBkb3VibGUgc2NhbGUgPSBzdGQ6Om1pbihzY2FsZVgsIHNjYWxlWSk7CisK
KyAgICAgICAgZG91YmxlIHN0ZXBYID0gcGFwZXJXaWR0aCAqIChzY2FsZVggLyBzY2FsZSk7Cisg
ICAgICAgIGRvdWJsZSBzdGVwWSA9IHBhcGVySGVpZ2h0ICogKHNjYWxlWSAvIHNjYWxlKTsKKwor
ICAgICAgICBkb3VibGUgd2lkdGggPSBndGtfcGFnZV9zZXR1cF9nZXRfcGFnZV93aWR0aChtX3Bh
Z2VTZXR1cC5nZXQoKSwgR1RLX1VOSVRfSU5DSCkgKiBtX3hEUEk7CisgICAgICAgIGRvdWJsZSBo
ZWlnaHQgPSBndGtfcGFnZV9zZXR1cF9nZXRfcGFnZV9oZWlnaHQobV9wYWdlU2V0dXAuZ2V0KCks
IEdUS19VTklUX0lOQ0gpICogbV95RFBJOworCisgICAgICAgIGRvdWJsZSBvZmZzZXRYLCBvZmZz
ZXRZOworICAgICAgICBpZiAobWFyZ2luTGVmdCArIG1hcmdpblJpZ2h0ID4gMCkgeworICAgICAg
ICAgICAgb2Zmc2V0WCA9IG1hcmdpbkxlZnQgKiAoc3RlcFggLSB3aWR0aCkgLyAobWFyZ2luTGVm
dCArIG1hcmdpblJpZ2h0KTsKKyAgICAgICAgICAgIG9mZnNldFkgPSBtYXJnaW5Ub3AgKiAoc3Rl
cFkgLSBoZWlnaHQpIC8gKG1hcmdpblRvcCArIG1hcmdpbkJvdHRvbSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBvZmZzZXRYID0gKHN0ZXBYIC0gd2lkdGgpIC8gMi4wOworICAgICAg
ICAgICAgb2Zmc2V0WSA9IChzdGVwWSAtIGhlaWdodCkgLyAyLjA7CisgICAgICAgIH0KKworICAg
ICAgICBjYWlyb19zY2FsZShtX2NhaXJvQ29udGV4dC5nZXQoKSwgc2NhbGUsIHNjYWxlKTsKKyAg
ICAgICAgY2Fpcm9fdHJhbnNsYXRlKG1fY2Fpcm9Db250ZXh0LmdldCgpLCB4ICogc3RlcFggKyBv
ZmZzZXRYLCB5ICogc3RlcFkgKyBvZmZzZXRZKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2UgMjoKKyAgICBjYXNlIDY6IHsKKyAgICAgICAgZG91YmxlIHNjYWxlWCA9IHBhZ2VIZWln
aHQgLyAoY29sdW1ucyAqIHBhcGVyV2lkdGgpOworICAgICAgICBkb3VibGUgc2NhbGVZID0gcGFn
ZVdpZHRoIC8gKHJvd3MgKiBwYXBlckhlaWdodCk7CisgICAgICAgIGRvdWJsZSBzY2FsZSA9IHN0
ZDo6bWluKHNjYWxlWCwgc2NhbGVZKTsKKworICAgICAgICBkb3VibGUgc3RlcFggPSBwYXBlcldp
ZHRoICogKHNjYWxlWCAvIHNjYWxlKTsKKyAgICAgICAgZG91YmxlIHN0ZXBZID0gcGFwZXJIZWln
aHQgKiAoc2NhbGVZIC8gc2NhbGUpOworCisgICAgICAgIGRvdWJsZSBvZmZzZXRYID0gKChzdGVw
WCAtIHBhcGVyV2lkdGgpIC8gMi4wICogY29sdW1ucykgLSBtYXJnaW5SaWdodDsKKyAgICAgICAg
ZG91YmxlIG9mZnNldFkgPSAoKHN0ZXBZIC0gcGFwZXJIZWlnaHQpIC8gMi4wICogcm93cykgKyBt
YXJnaW5Ub3A7CisKKyAgICAgICAgY2Fpcm9fc2NhbGUobV9jYWlyb0NvbnRleHQuZ2V0KCksIHNj
YWxlLCBzY2FsZSk7CisgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShtX2NhaXJvQ29udGV4dC5nZXQo
KSwgeSAqIHBhcGVySGVpZ2h0ICsgb2Zmc2V0WSwgKGNvbHVtbnMgLSB4KSAqIHBhcGVyV2lkdGgg
KyBvZmZzZXRYKTsKKyAgICAgICAgY2Fpcm9fcm90YXRlKG1fY2Fpcm9Db250ZXh0LmdldCgpLCAt
R19QSSAvIDIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAg
YnJlYWs7CisgICAgfQorfQorCiB2b2lkIFdlYlByaW50T3BlcmF0aW9uR3RrOjpyZW5kZXJQYWdl
KGludCBwYWdlTnVtYmVyKQogewogICAgIHN0YXJ0UGFnZShtX2NhaXJvQ29udGV4dC5nZXQoKSk7
CkBAIC0zMjUsMTAgKzUyNSw3IEBAIHZvaWQgV2ViUHJpbnRPcGVyYXRpb25HdGs6OnJlbmRlclBh
Z2UoaW50IHBhZ2VOdW1iZXIpCiAKICAgICBpZiAobV9uZWVkc1JvdGF0aW9uKQogICAgICAgICBy
b3RhdGVQYWdlKCk7Ci0KLSAgICBkb3VibGUgbGVmdCA9IGd0a19wYWdlX3NldHVwX2dldF9sZWZ0
X21hcmdpbihtX3BhZ2VTZXR1cC5nZXQoKSwgR1RLX1VOSVRfSU5DSCk7Ci0gICAgZG91YmxlIHRv
cCA9IGd0a19wYWdlX3NldHVwX2dldF90b3BfbWFyZ2luKG1fcGFnZVNldHVwLmdldCgpLCBHVEtf
VU5JVF9JTkNIKTsKLSAgICBjYWlyb190cmFuc2xhdGUobV9jYWlyb0NvbnRleHQuZ2V0KCksIGxl
ZnQgKiBtX3hEUEksIHRvcCAqIG1feURQSSk7CisgICAgcHJlcGFyZUNvbnRleHRUb0RyYXcoKTsK
IAogICAgIGRvdWJsZSBwYWdlV2lkdGggPSBndGtfcGFnZV9zZXR1cF9nZXRfcGFnZV93aWR0aCht
X3BhZ2VTZXR1cC5nZXQoKSwgR1RLX1VOSVRfSU5DSCkgKiBtX3hEUEk7CiAgICAgV2ViQ29yZTo6
UGxhdGZvcm1Db250ZXh0Q2Fpcm8gcGxhdGZvcm1Db250ZXh0KG1fY2Fpcm9Db250ZXh0LmdldCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2Vi
UHJpbnRPcGVyYXRpb25HdGsuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuaAppbmRleCBiMTQyYzRmLi43OTMwMGExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0
aW9uR3RrLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQ
cmludE9wZXJhdGlvbkd0ay5oCkBAIC01MSwxMSArNTEsMTkgQEAgcHVibGljOgogCiAgICAgR3Rr
UHJpbnRTZXR0aW5ncyogcHJpbnRTZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbnRTZXR0
aW5ncy5nZXQoKTsgfQogICAgIEd0a1BhZ2VTZXR1cCogcGFnZVNldHVwKCkgY29uc3QgeyByZXR1
cm4gbV9wYWdlU2V0dXAuZ2V0KCk7IH0KKyAgICB2b2lkIHNldE51bWJlck9mUGFnZXNUb1ByaW50
KHNpemVfdCBudW1iZXJPZlBhZ2VzKSB7IG1fbnVtYmVyT2ZQYWdlc1RvUHJpbnQgPSBudW1iZXJP
ZlBhZ2VzOyB9CiAgICAgdW5zaWduZWQgaW50IHBhZ2VzVG9QcmludCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFnZXNUb1ByaW50OyB9CiAgICAgaW50IHBhZ2VDb3VudCgpIGNvbnN0OworICAgIGJvb2wg
Y3VycmVudFBhZ2VJc0ZpcnN0UGFnZU9mU2hlZXQoKSBjb25zdDsKKyAgICBib29sIGN1cnJlbnRQ
YWdlSXNMYXN0UGFnZU9mU2hlZXQoKSBjb25zdDsKKyAgICBzaXplX3QgcGFnZVBvc2l0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9wYWdlUG9zaXRpb247IH0KKyAgICB2b2lkIHNldFBhZ2VQb3NpdGlv
bihzaXplX3QgcG9zaXRpb24pIHsgbV9wYWdlUG9zaXRpb24gPSBwb3NpdGlvbjsgfQogICAgIEd0
a1BhZ2VSYW5nZSogcGFnZVJhbmdlcygpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVJhbmdlczsgfQog
ICAgIHNpemVfdCBwYWdlUmFuZ2VzQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VSYW5nZXND
b3VudDsgfQogCisgICAgdW5zaWduZWQgaW50IG1hbnVhbE51bWJlclVwKCkgY29uc3QgeyByZXR1
cm4gbV9tYW51YWxOdW1iZXJVcDsgfQorICAgIHVuc2lnbmVkIGludCBtYW51YWxOdW1iZXJVcExh
eW91dCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFudWFsTnVtYmVyVXBMYXlvdXQ7IH0KKwogICAgIHZp
cnR1YWwgdm9pZCBzdGFydFByaW50KFdlYkNvcmU6OlByaW50Q29udGV4dCosIHVpbnQ2NF90IGNh
bGxiYWNrSUQpID0gMDsKIAogcHJvdGVjdGVkOgpAQCAtNzEsNiArNzksOSBAQCBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBwcmludChjYWlyb19zdXJmYWNlX3QqLCBkb3VibGUgeERQSSwgZG91YmxlIHlE
UEkpOwogICAgIHZvaWQgcmVuZGVyUGFnZShpbnQgcGFnZU51bWJlcik7CiAgICAgdm9pZCByb3Rh
dGVQYWdlKCk7CisgICAgdm9pZCBnZXRSb3dzQW5kQ29sdW1uc09mUGFnZXNQZXJTaGVldChzaXpl
X3QmIHJvd3MsIHNpemVfdCYgY29sdW1ucyk7CisgICAgdm9pZCBnZXRQb3NpdGlvbk9mUGFnZUlu
U2hlZXQoc2l6ZV90IHJvd3MsIHNpemVfdCBjb2x1bW5zLCBpbnQmIHgsIGludCZ5KTsKKyAgICB2
b2lkIHByZXBhcmVDb250ZXh0VG9EcmF3KCk7CiAgICAgdm9pZCBwcmludERvbmUoKTsKIAogICAg
IFdlYlBhZ2UqIG1fd2ViUGFnZTsKQEAgLTgzLDEwICs5NCwxNiBAQCBwcm90ZWN0ZWQ6CiAgICAg
ZG91YmxlIG1feURQSTsKIAogICAgIHVuc2lnbmVkIGludCBtX3ByaW50UGFnZXNJZGxlSWQ7Cisg
ICAgc2l6ZV90IG1fbnVtYmVyT2ZQYWdlc1RvUHJpbnQ7CiAgICAgdW5zaWduZWQgaW50IG1fcGFn
ZXNUb1ByaW50OworICAgIHNpemVfdCBtX3BhZ2VQb3NpdGlvbjsKICAgICBHdGtQYWdlUmFuZ2Uq
IG1fcGFnZVJhbmdlczsKICAgICBzaXplX3QgbV9wYWdlUmFuZ2VzQ291bnQ7CiAgICAgYm9vbCBt
X25lZWRzUm90YXRpb247CisKKyAgICAvLyBNYW51YWwgY2FwYWJpbGl0aWVzLgorICAgIHVuc2ln
bmVkIGludCBtX21hbnVhbE51bWJlclVwOworICAgIHVuc2lnbmVkIGludCBtX21hbnVhbE51bWJl
clVwTGF5b3V0OwogfTsKIAogfQo=
</data>
<flag name="review"
          id="129234"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>