<?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>155046</bug_id>
          
          <creation_ts>2016-03-04 14:26:00 -0800</creation_ts>
          <short_desc>Begin implementing &lt;attachment&gt; painting on iOS</short_desc>
          <delta_ts>2016-03-04 23:31:47 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>enrica</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1171046</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-03-04 14:26:00 -0800</bug_when>
    <thetext>Begin implementing &lt;attachment&gt; painting on iOS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171047</commentid>
    <comment_count>1</comment_count>
      <attachid>273042</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-03-04 14:26:29 -0800</bug_when>
    <thetext>Created attachment 273042
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171048</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-04 14:28:44 -0800</bug_when>
    <thetext>Attachment 273042 did not pass style-queue:


ERROR: Source/WebCore/rendering/RenderThemeIOS.h:115:  &quot;virtual&quot; is redundant since function is already declared as &quot;override&quot;  [readability/inheritance] [4]
ERROR: Source/WebCore/rendering/RenderThemeIOS.h:116:  &quot;virtual&quot; is redundant since function is already declared as &quot;override&quot;  [readability/inheritance] [4]
ERROR: Source/WebCore/rendering/RenderThemeIOS.h:117:  &quot;virtual&quot; is redundant since function is already declared as &quot;override&quot;  [readability/inheritance] [4]
Total errors found: 3 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171112</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-03-04 16:57:22 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/197600</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171160</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-03-04 22:24:00 -0800</bug_when>
    <thetext>Could you please fix the tests?

https://build.webkit.org/results/Apple%20iOS%209%20Simulator%20Release%20WK2%20(Tests)/r197608%20(3666)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171166</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-03-04 23:21:43 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Could you please fix the tests?
&gt; 
&gt; https://build.webkit.org/results/
&gt; Apple%20iOS%209%20Simulator%20Release%20WK2%20(Tests)/r197608%20(3666)/
&gt; results.html

Oh, weird! As I noted in the ChangeLog, I thought they were skipped. Maybe I had the directory name wrong. Will fix!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171167</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-03-04 23:31:47 -0800</bug_when>
    <thetext>Temporarily skipped in 197610. Next week there will be another &lt;attachment&gt; patch that completes the implementation and turns the tests back on.

Also, are ref tests upside-down?! :D</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273042</attachid>
            <date>2016-03-04 14:26:29 -0800</date>
            <delta_ts>2016-03-04 15:25:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155046-20160304142618.patch</filename>
            <type>text/plain</type>
            <size>17217</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NDgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA3OTAyNTUxMzBmZmQx
ZmFlY2ExMjNlN2E1ZWM4ZDQ0YjliMmM0My4uZWQ3NWU2ODUzN2YyYWFiZWQxMTdiNmRmZTIzZGEw
MDA4MWI1NmUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE2LTAzLTA0ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEJlZ2luIGltcGxl
bWVudGluZyA8YXR0YWNobWVudD4gcGFpbnRpbmcgb24gaU9TCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUwNDYKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzI0ODA1OTkxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0czsgdGhlcmUgYXJlIGV4aXN0aW5nIHRlc3RzIHRoYXQgSSB3aWxs
IHVuc2tpcCBhbmQgcmViYXNlbGluZQorICAgICAgICBpbiB0aGUgbmVhciBmdXR1cmUuCisKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50SW5mbzo6YWRk
TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50SW5mbzo6YnVpbGRUaXRsZUxpbmVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZvOjpidWlsZFNpbmdsZUxpbmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0QXR0YWNobWVudFByb2dyZXNzKToKKyAgICAgICAgKFdlYkNv
cmU6Omljb25Gb3JBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZv
OjpBdHRhY2htZW50SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6YXR0
YWNobWVudEludHJpbnNpY1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6
OmF0dGFjaG1lbnRCYXNlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpwYWludEF0dGFjaG1lbnRJ
Y29uKToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50QXR0YWNobWVudFRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6cGFpbnRBdHRhY2htZW50UHJvZ3Jlc3MpOgorICAgICAgICAoV2ViQ29yZTo6cGFp
bnRBdHRhY2htZW50Qm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpw
YWludEF0dGFjaG1lbnQpOgorICAgICAgICBUaGVyZSBhcmUgc3RpbGwgYSBmZXcgbWlzc2luZyBw
aWVjZXMsIGJ1dCBnZXQgPGF0dGFjaG1lbnQ+IHBhaW50aW5nIGEgYml0IG9uIGlPUy4KKyAgICAg
ICAgV2Ugd2lsbCBwYWludCBhbiBpY29uLCBhY3Rpb24sIHRpdGxlLCBhbmQgc3VidGl0bGUgLSBp
biB0aGF0IG9yZGVyIC0gZGVwZW5kaW5nIG9uIHdoYXQgd2UgaGF2ZS4KKyAgICAgICAgVGhlIGNv
bnRlbnQgaXMgdmVydGljYWxseSBhbmQgaG9yaXpvbnRhbGx5IGNlbnRlcmVkLgorCiAyMDE2LTAz
LTAyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEhUTUwgcGFy
c2VyIGluc3RhbnRpYXRlcyBhIGN1c3RvbSBlbGVtZW50IGluc2lkZSBhIHRlbXBsYXRlIGVsZW1l
bnQgd2l0aCBhIHdyb25nIG93bmVyIGRvY3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUlPUy5oCmluZGV4IDNlYmZjNjU5NWU0ZTIzOTA2NTlkNmFhMWMzYjAyODU4N2Qz
ZTExMmMuLjBiY2I5OGNmOTM0ZDFiODQ3MDJmMmI1ZWI4NWQ2ODZlODgyZDhkYjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCkBAIC0zNCw3ICszNCw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgR3JhcGhp
Y3NDb250ZXh0OwotICAgIAorc3RydWN0IEF0dGFjaG1lbnRMYXlvdXQ7CisKIGNsYXNzIFJlbmRl
clRoZW1lSU9TIGZpbmFsIDogcHVibGljIFJlbmRlclRoZW1lIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPFJlbmRlclRoZW1lPiBjcmVhdGUoKTsKQEAgLTExMCw2ICsxMTEsMTIgQEAgcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhQ29udHJvbHNTY3JpcHQoKSBvdmVycmlkZTsK
ICNlbmRpZgogCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICB2aXJ0dWFsIExh
eW91dFNpemUgYXR0YWNobWVudEludHJpbnNpY1NpemUoY29uc3QgUmVuZGVyQXR0YWNobWVudCYp
IGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgaW50IGF0dGFjaG1lbnRCYXNlbGluZShjb25z
dCBSZW5kZXJBdHRhY2htZW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIHBh
aW50QXR0YWNobWVudChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBSZW5kZXJUaGVt
ZUlPUygpOwogICAgIHZpcnR1YWwgflJlbmRlclRoZW1lSU9TKCkgeyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggOGM3NGViMTA3ZDk3MDFiYmUzNzlj
ZTg5Y2NiZjM4YTcxZGYwY2E2ZC4uZTNjNzI5M2FkZjdhNTU3NDVhN2QxZGQ1NTg5ZWEzMmJlYWFk
M2RiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAt
MjcsMjAgKzI3LDI1IEBACiAKICNpZiBQTEFURk9STShJT1MpCiAKKyNpbXBvcnQgIkJpdG1hcElt
YWdlLmgiCiAjaW1wb3J0ICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2ltcG9ydCAiQ1NTVG9MZW5n
dGhDb252ZXJzaW9uRGF0YS5oIgogI2ltcG9ydCAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2ltcG9y
dCAiQ29yZVRleHRTUEkuaCIKICNpbXBvcnQgIkRhdGVDb21wb25lbnRzLmgiCiAjaW1wb3J0ICJE
b2N1bWVudC5oIgorI2ltcG9ydCAiRmlsZS5oIgogI2ltcG9ydCAiRmxvYXRSb3VuZGVkUmVjdC5o
IgogI2ltcG9ydCAiRm9udENhY2hlLmgiCiAjaW1wb3J0ICJGb250Q2FzY2FkZS5oIgogI2ltcG9y
dCAiRnJhbWUuaCIKKyNpbXBvcnQgIkZyYW1lU2VsZWN0aW9uLmgiCiAjaW1wb3J0ICJGcmFtZVZp
ZXcuaCIKKyNpbXBvcnQgIkdlb21ldHJ5VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJHcmFkaWVudC5o
IgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRD
Ry5oIgorI2ltcG9ydCAiSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MSW5w
dXRFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MTmFtZXMuaCIKICNpbXBvcnQgIkhUTUxTZWxlY3RF
bGVtZW50LmgiCkBAIC00OSw3ICs1NCw5IEBACiAjaW1wb3J0ICJOb2RlUmVuZGVyU3R5bGUuaCIK
ICNpbXBvcnQgIlBhZ2UuaCIKICNpbXBvcnQgIlBhaW50SW5mby5oIgorI2ltcG9ydCAiUGF0aFV0
aWxpdGllcy5oIgogI2ltcG9ydCAiUGxhdGZvcm1Mb2NhbGUuaCIKKyNpbXBvcnQgIlJlbmRlckF0
dGFjaG1lbnQuaCIKICNpbXBvcnQgIlJlbmRlck9iamVjdC5oIgogI2ltcG9ydCAiUmVuZGVyUHJv
Z3Jlc3MuaCIKICNpbXBvcnQgIlJlbmRlclN0eWxlLmgiCkBAIC01Nyw2ICs2NCw3IEBACiAjaW1w
b3J0ICJSZW5kZXJWaWV3LmgiCiAjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgogI2ltcG9ydCAiVUlL
aXRTUEkuaCIKKyNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVXNlckFnZW50U2Ny
aXB0cy5oIgogI2ltcG9ydCAiVXNlckFnZW50U3R5bGVTaGVldHMuaCIKICNpbXBvcnQgIldlYkNv
cmVUaHJlYWRSdW4uaCIKQEAgLTY2LDEwICs3NCwxOCBAQAogI2ltcG9ydCA8d3RmL1JlZlB0ci5o
PgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCitTT0ZUX0xJTktfRlJBTUVXT1JLKE1v
YmlsZUNvcmVTZXJ2aWNlcykKK1NPRlRfTElOS19DTEFTUyhNb2JpbGVDb3JlU2VydmljZXMsIExT
RG9jdW1lbnRQcm94eSkKKwogU09GVF9MSU5LX0ZSQU1FV09SSyhVSUtpdCkKIFNPRlRfTElOS19D
TEFTUyhVSUtpdCwgVUlBcHBsaWNhdGlvbikKIFNPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlDb2xv
cikKK1NPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlEb2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxl
cikKK1NPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlGb250KQorU09GVF9MSU5LX0NMQVNTKFVJS2l0
LCBVSUltYWdlKQogU09GVF9MSU5LX0NPTlNUQU5UKFVJS2l0LCBVSUNvbnRlbnRTaXplQ2F0ZWdv
cnlEaWRDaGFuZ2VOb3RpZmljYXRpb24sIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX0NPTlNUQU5U
KFVJS2l0LCBVSUZvbnRUZXh0U3R5bGVGb290bm90ZSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19D
T05TVEFOVChVSUtpdCwgVUlGb250VGV4dFN0eWxlQ2FwdGlvbjEsIE5TU3RyaW5nICopCiAjZGVm
aW5lIFVJQ29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZU5vdGlmaWNhdGlvbiBnZXRVSUNvbnRl
bnRTaXplQ2F0ZWdvcnlEaWRDaGFuZ2VOb3RpZmljYXRpb24oKQogCiBAaW50ZXJmYWNlIFdlYkNv
cmVSZW5kZXJUaGVtZUJ1bmRsZSA6IE5TT2JqZWN0CkBAIC04MCw2ICs5Niw4IEBAIFNPRlRfTElO
S19DT05TVEFOVChVSUtpdCwgVUlDb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlTm90aWZpY2F0
aW9uLCBDRlN0cmluZ1JlCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordXNpbmcgbmFtZXNwYWNl
IEhUTUxOYW1lczsKKwogY29uc3QgZmxvYXQgQ29udHJvbEJhc2VIZWlnaHQgPSAyMDsKIGNvbnN0
IGZsb2F0IENvbnRyb2xCYXNlRm9udFNpemUgPSAxMTsKIApAQCAtMTMyMSw2ICsxMzM5LDMyMCBA
QCBDb2xvciBSZW5kZXJUaGVtZUlPUzo6c3lzdGVtQ29sb3IoQ1NTVmFsdWVJRCBjc3NWYWx1ZUlE
KSBjb25zdAogICAgIHJldHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogfQogCisjaWYg
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKworY29uc3QgQ0dTaXplIGF0dGFjaG1lbnRTaXpl
ID0geyAxNjAsIDExOSB9OworCitjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRCb3JkZXJSYWRpdXMg
PSAxNjsKK3N0YXRpYyBDb2xvciBhdHRhY2htZW50Qm9yZGVyQ29sb3IoKSB7IHJldHVybiBDb2xv
cigyMDQsIDIwNCwgMjA0KTsgfQorCitjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRQcm9ncmVzc1Np
emUgPSAzNjsKK2NvbnN0IENHRmxvYXQgYXR0YWNobWVudEljb25TaXplID0gNDg7CisKK2NvbnN0
IENHRmxvYXQgYXR0YWNobWVudEl0ZW1NYXJnaW4gPSA4OworCitjb25zdCBDR0Zsb2F0IGF0dGFj
aG1lbnRUaXRsZU1heGltdW1XaWR0aCA9IDE0MDsKK2NvbnN0IENGSW5kZXggYXR0YWNobWVudFRp
dGxlTWF4aW11bUxpbmVDb3VudCA9IDI7CisKKy8vIEZJWE1FOiBTaG91bGQgYmUgZW1waGFzaXpl
ZC4KK3N0YXRpYyBVSUZvbnQgKmF0dGFjaG1lbnRBY3Rpb25Gb250KCkgeyByZXR1cm4gW2dldFVJ
Rm9udENsYXNzKCkgcHJlZmVycmVkRm9udEZvclRleHRTdHlsZTpnZXRVSUZvbnRUZXh0U3R5bGVG
b290bm90ZSgpXTsgfQorc3RhdGljIFVJQ29sb3IgKmF0dGFjaG1lbnRBY3Rpb25Db2xvcigpIHsg
cmV0dXJuIFtnZXRVSUNvbG9yQ2xhc3MoKSBzeXN0ZW1CbHVlQ29sb3JdOyB9CisKK3N0YXRpYyBV
SUZvbnQgKmF0dGFjaG1lbnRUaXRsZUZvbnQoKSB7IHJldHVybiBbZ2V0VUlGb250Q2xhc3MoKSBw
cmVmZXJyZWRGb250Rm9yVGV4dFN0eWxlOmdldFVJRm9udFRleHRTdHlsZUNhcHRpb24xKCldOyB9
CitzdGF0aWMgVUlDb2xvciAqYXR0YWNobWVudFRpdGxlQ29sb3IoKSB7IHJldHVybiBbZ2V0VUlD
b2xvckNsYXNzKCkgc3lzdGVtR3JheUNvbG9yXTsgfQorCitzdGF0aWMgVUlGb250ICphdHRhY2ht
ZW50U3VidGl0bGVGb250KCkgeyByZXR1cm4gW2dldFVJRm9udENsYXNzKCkgcHJlZmVycmVkRm9u
dEZvclRleHRTdHlsZTpnZXRVSUZvbnRUZXh0U3R5bGVDYXB0aW9uMSgpXTsgfQorc3RhdGljIFVJ
Q29sb3IgKmF0dGFjaG1lbnRTdWJ0aXRsZUNvbG9yKCkgeyByZXR1cm4gW2dldFVJQ29sb3JDbGFz
cygpIHN5c3RlbUdyYXlDb2xvcl07IH0KKworc3RydWN0IEF0dGFjaG1lbnRJbmZvIHsKKyAgICBl
eHBsaWNpdCBBdHRhY2htZW50SW5mbyhjb25zdCBSZW5kZXJBdHRhY2htZW50Jik7CisKKyAgICBG
bG9hdFJlY3QgaWNvblJlY3Q7CisgICAgRmxvYXRSZWN0IGF0dGFjaG1lbnRSZWN0OworICAgIEZs
b2F0UmVjdCBwcm9ncmVzc1JlY3Q7CisKKyAgICBCT09MIGhhc1Byb2dyZXNzIHsgTk8gfTsKKyAg
ICBmbG9hdCBwcm9ncmVzczsKKworICAgIFJldGFpblB0cjxVSUltYWdlPiBpY29uOworCisgICAg
aW50IGJhc2VsaW5lIHsgMCB9OworCisgICAgc3RydWN0IExhYmVsTGluZSB7CisgICAgICAgIEZs
b2F0UmVjdCByZWN0OworICAgICAgICBSZXRhaW5QdHI8Q1RMaW5lUmVmPiBsaW5lOworICAgIH07
CisgICAgVmVjdG9yPExhYmVsTGluZT4gbGluZXM7CisKKyAgICBDR0Zsb2F0IGNvbnRlbnRZT3Jp
Z2luIHsgMCB9OworCitwcml2YXRlOgorICAgIHZvaWQgYnVpbGRUaXRsZUxpbmVzKGNvbnN0IFJl
bmRlckF0dGFjaG1lbnQmKTsKKyAgICB2b2lkIGJ1aWxkU2luZ2xlTGluZShjb25zdCBTdHJpbmcm
LCBVSUZvbnQgKiwgVUlDb2xvciAqKTsKKworICAgIHZvaWQgYWRkTGluZShDVExpbmVSZWYpOwor
fTsKKwordm9pZCBBdHRhY2htZW50SW5mbzo6YWRkTGluZShDVExpbmVSZWYgbGluZSkKK3sKKyAg
ICBDR1JlY3QgbGluZUJvdW5kcyA9IENUTGluZUdldEJvdW5kc1dpdGhPcHRpb25zKGxpbmUsIGtD
VExpbmVCb3VuZHNFeGNsdWRlVHlwb2dyYXBoaWNMZWFkaW5nKTsKKyAgICBDR0Zsb2F0IHRyYWls
aW5nV2hpdGVzcGFjZVdpZHRoID0gQ1RMaW5lR2V0VHJhaWxpbmdXaGl0ZXNwYWNlV2lkdGgobGlu
ZSk7CisgICAgQ0dGbG9hdCBsaW5lV2lkdGhJZ25vcmluZ1RyYWlsaW5nV2hpdGVzcGFjZSA9IGxp
bmVCb3VuZHMuc2l6ZS53aWR0aCAtIHRyYWlsaW5nV2hpdGVzcGFjZVdpZHRoOworICAgIENHRmxv
YXQgbGluZUhlaWdodCA9IENHQ2VpbGluZyhsaW5lQm91bmRzLnNpemUuaGVpZ2h0ICsgbGluZUJv
dW5kcy5vcmlnaW4ueSk7CisKKyAgICBDR0Zsb2F0IHhPZmZzZXQgPSAoYXR0YWNobWVudFJlY3Qu
d2lkdGgoKSAvIDIpIC0gKGxpbmVXaWR0aElnbm9yaW5nVHJhaWxpbmdXaGl0ZXNwYWNlIC8gMik7
CisgICAgTGFiZWxMaW5lIGxhYmVsTGluZTsKKyAgICBsYWJlbExpbmUubGluZSA9IGxpbmU7Cisg
ICAgbGFiZWxMaW5lLnJlY3QgPSBGbG9hdFJlY3QoeE9mZnNldCwgMCwgbGluZVdpZHRoSWdub3Jp
bmdUcmFpbGluZ1doaXRlc3BhY2UsIGxpbmVIZWlnaHQpOworCisgICAgbGluZXMuYXBwZW5kKGxh
YmVsTGluZSk7CiB9CiAKK3ZvaWQgQXR0YWNobWVudEluZm86OmJ1aWxkVGl0bGVMaW5lcyhjb25z
dCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50KQoreworICAgIFJldGFpblB0cjxVSUZvbnQ+
IGZvbnQgPSBhdHRhY2htZW50VGl0bGVGb250KCk7CisKKyAgICBTdHJpbmcgdGl0bGUgPSBhdHRh
Y2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuYXR0YWNobWVudFRpdGxlKCk7CisgICAgaWYgKHRp
dGxlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNEaWN0aW9uYXJ5ICp0ZXh0
QXR0cmlidXRlcyA9IEB7CisgICAgICAgIChpZClrQ1RGb250QXR0cmlidXRlTmFtZTogZm9udC5n
ZXQoKSwKKyAgICAgICAgKGlkKWtDVEZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWU6IGF0dGFj
aG1lbnRUaXRsZUNvbG9yKCkKKyAgICB9OworICAgIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJp
bmc+IGF0dHJpYnV0ZWRUaXRsZSA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoU3RyaW5nOnRpdGxlIGF0dHJpYnV0ZXM6dGV4dEF0dHJpYnV0ZXNdKTsKKyAgICBS
ZXRhaW5QdHI8Q1RGcmFtZXNldHRlclJlZj4gdGl0bGVGcmFtZXNldHRlciA9IGFkb3B0Q0YoQ1RG
cmFtZXNldHRlckNyZWF0ZVdpdGhBdHRyaWJ1dGVkU3RyaW5nKChDRkF0dHJpYnV0ZWRTdHJpbmdS
ZWYpYXR0cmlidXRlZFRpdGxlLmdldCgpKSk7CisKKyAgICBDRlJhbmdlIGZpdFJhbmdlOworICAg
IENHU2l6ZSB0aXRsZVRleHRTaXplID0gQ1RGcmFtZXNldHRlclN1Z2dlc3RGcmFtZVNpemVXaXRo
Q29uc3RyYWludHModGl0bGVGcmFtZXNldHRlci5nZXQoKSwgQ0ZSYW5nZU1ha2UoMCwgMCksIG51
bGxwdHIsIENHU2l6ZU1ha2UoYXR0YWNobWVudFRpdGxlTWF4aW11bVdpZHRoLCBDR0ZMT0FUX01B
WCksICZmaXRSYW5nZSk7CisKKyAgICBSZXRhaW5QdHI8Q0dQYXRoUmVmPiB0aXRsZVBhdGggPSBh
ZG9wdENGKENHUGF0aENyZWF0ZVdpdGhSZWN0KENHUmVjdE1ha2UoMCwgMCwgdGl0bGVUZXh0U2l6
ZS53aWR0aCwgdGl0bGVUZXh0U2l6ZS5oZWlnaHQpLCBudWxscHRyKSk7CisgICAgUmV0YWluUHRy
PENURnJhbWVSZWY+IHRpdGxlRnJhbWUgPSBhZG9wdENGKENURnJhbWVzZXR0ZXJDcmVhdGVGcmFt
ZSh0aXRsZUZyYW1lc2V0dGVyLmdldCgpLCBmaXRSYW5nZSwgdGl0bGVQYXRoLmdldCgpLCBudWxs
cHRyKSk7CisKKyAgICBDRkFycmF5UmVmIGN0TGluZXMgPSBDVEZyYW1lR2V0TGluZXModGl0bGVG
cmFtZS5nZXQoKSk7CisgICAgQ0ZJbmRleCBsaW5lQ291bnQgPSBDRkFycmF5R2V0Q291bnQoY3RM
aW5lcyk7CisgICAgaWYgKCFsaW5lQ291bnQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIExh
eSBvdXQgYW5kIHJlY29yZCB0aGUgZmlyc3QgKGF0dGFjaG1lbnRUaXRsZU1heGltdW1MaW5lQ291
bnQgLSAxKSBsaW5lcy4KKyAgICBDRkluZGV4IGxpbmVJbmRleCA9IDA7CisgICAgZm9yICg7IGxp
bmVJbmRleCA8IHN0ZDo6bWluKGF0dGFjaG1lbnRUaXRsZU1heGltdW1MaW5lQ291bnQgLSAxLCBs
aW5lQ291bnQpOyArK2xpbmVJbmRleCkgeworICAgICAgICBDVExpbmVSZWYgbGluZSA9IChDVExp
bmVSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChjdExpbmVzLCBsaW5lSW5kZXgpOworICAgICAg
ICBhZGRMaW5lKGxpbmUpOworICAgIH0KKworICAgIGlmIChsaW5lSW5kZXggPT0gbGluZUNvdW50
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBXZSBoYWQgdGV4dCB0aGF0IGRpZG4ndCBmaXQg
aW4gdGhlIGZpcnN0IChhdHRhY2htZW50VGl0bGVNYXhpbXVtTGluZUNvdW50IC0gMSkgbGluZXMu
CisgICAgLy8gQ29tYmluZSBpdCBpbnRvIG9uZSBsYXN0IGxpbmUsIGFuZCBjZW50ZXItdHJ1bmNh
dGUgaXQuCisgICAgQ1RMaW5lUmVmIGZpcnN0UmVtYWluaW5nTGluZSA9IChDVExpbmVSZWYpQ0ZB
cnJheUdldFZhbHVlQXRJbmRleChjdExpbmVzLCBsaW5lSW5kZXgpOworICAgIENGSW5kZXggcmVt
YWluaW5nUmFuZ2VTdGFydCA9IENUTGluZUdldFN0cmluZ1JhbmdlKGZpcnN0UmVtYWluaW5nTGlu
ZSkubG9jYXRpb247CisgICAgTlNSYW5nZSByZW1haW5pbmdSYW5nZSA9IE5TTWFrZVJhbmdlKHJl
bWFpbmluZ1JhbmdlU3RhcnQsIFthdHRyaWJ1dGVkVGl0bGUgbGVuZ3RoXSAtIHJlbWFpbmluZ1Jh
bmdlU3RhcnQpOworICAgIE5TQXR0cmlidXRlZFN0cmluZyAqcmVtYWluaW5nU3RyaW5nID0gW2F0
dHJpYnV0ZWRUaXRsZSBhdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlOnJlbWFpbmluZ1Jhbmdl
XTsKKyAgICBSZXRhaW5QdHI8Q1RMaW5lUmVmPiByZW1haW5pbmdMaW5lID0gYWRvcHRDRihDVExp
bmVDcmVhdGVXaXRoQXR0cmlidXRlZFN0cmluZygoQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVmKXJlbWFp
bmluZ1N0cmluZykpOworICAgIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IGVsbGlwc2lz
U3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJp
bmc6QCJcdTIwMjYiIGF0dHJpYnV0ZXM6dGV4dEF0dHJpYnV0ZXNdKTsKKyAgICBSZXRhaW5QdHI8
Q1RMaW5lUmVmPiBlbGxpcHNpc0xpbmUgPSBhZG9wdENGKENUTGluZUNyZWF0ZVdpdGhBdHRyaWJ1
dGVkU3RyaW5nKChDRkF0dHJpYnV0ZWRTdHJpbmdSZWYpZWxsaXBzaXNTdHJpbmcuZ2V0KCkpKTsK
KyAgICBSZXRhaW5QdHI8Q1RMaW5lUmVmPiB0cnVuY2F0ZWRMaW5lID0gYWRvcHRDRihDVExpbmVD
cmVhdGVUcnVuY2F0ZWRMaW5lKHJlbWFpbmluZ0xpbmUuZ2V0KCksIGF0dGFjaG1lbnRUaXRsZU1h
eGltdW1XaWR0aCwga0NUTGluZVRydW5jYXRpb25NaWRkbGUsIGVsbGlwc2lzTGluZS5nZXQoKSkp
OworCisgICAgaWYgKCF0cnVuY2F0ZWRMaW5lKQorICAgICAgICB0cnVuY2F0ZWRMaW5lID0gcmVt
YWluaW5nTGluZTsKKworICAgIGFkZExpbmUodHJ1bmNhdGVkTGluZS5nZXQoKSk7Cit9CisKK3Zv
aWQgQXR0YWNobWVudEluZm86OmJ1aWxkU2luZ2xlTGluZShjb25zdCBTdHJpbmcmIHRleHQsIFVJ
Rm9udCAqZm9udCwgVUlDb2xvciAqY29sb3IpCit7CisgICAgaWYgKHRleHQuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBOU0RpY3Rpb25hcnkgKnRleHRBdHRyaWJ1dGVzID0gQHsK
KyAgICAgICAgKGlkKWtDVEZvbnRBdHRyaWJ1dGVOYW1lOiBmb250LAorICAgICAgICAoaWQpa0NU
Rm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZTogY29sb3IKKyAgICB9OworICAgIFJldGFpblB0
cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IGF0dHJpYnV0ZWRUZXh0ID0gYWRvcHROUyhbW05TQXR0cmli
dXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6dGV4dCBhdHRyaWJ1dGVzOnRleHRBdHRy
aWJ1dGVzXSk7CisKKyAgICBhZGRMaW5lKGFkb3B0Q0YoQ1RMaW5lQ3JlYXRlV2l0aEF0dHJpYnV0
ZWRTdHJpbmcoKENGQXR0cmlidXRlZFN0cmluZ1JlZilhdHRyaWJ1dGVkVGV4dC5nZXQoKSkpLmdl
dCgpKTsKK30KKworc3RhdGljIEJPT0wgZ2V0QXR0YWNobWVudFByb2dyZXNzKGNvbnN0IFJlbmRl
ckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsIGZsb2F0JiBwcm9ncmVzcykKK3sKKyAgICBTdHJpbmcg
cHJvZ3Jlc3NTdHJpbmcgPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuZmFzdEdldEF0
dHJpYnV0ZShwcm9ncmVzc0F0dHIpOworICAgIGlmIChwcm9ncmVzc1N0cmluZy5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBOTzsKKyAgICBib29sIHZhbGlkUHJvZ3Jlc3M7CisgICAgcHJvZ3Jl
c3MgPSBwcm9ncmVzc1N0cmluZy50b0Zsb2F0KCZ2YWxpZFByb2dyZXNzKTsKKyAgICByZXR1cm4g
dmFsaWRQcm9ncmVzczsKK30KKworc3RhdGljIFJldGFpblB0cjxVSUltYWdlPiBpY29uRm9yQXR0
YWNobWVudChjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50LCBGbG9hdFNpemUmIHNp
emUpCit7CisgICAgU3RyaW5nIE1JTUVUeXBlID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVu
dCgpLmF0dGFjaG1lbnRUeXBlKCk7CisKKyAgICBTdHJpbmcgZmlsZU5hbWU7CisgICAgaWYgKEZp
bGUqIGZpbGUgPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuZmlsZSgpKQorICAgICAg
ICBmaWxlTmFtZSA9IGZpbGUtPm5hbWUoKTsKKworICAgIGlmIChmaWxlTmFtZS5pc0VtcHR5KCkp
CisgICAgICAgIGZpbGVOYW1lID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLmF0dGFj
aG1lbnRUaXRsZSgpOworCisgICAgUmV0YWluUHRyPFVJSW1hZ2U+IHJlc3VsdDsKKworICAgIFJl
dGFpblB0cjxVSURvY3VtZW50SW50ZXJhY3Rpb25Db250cm9sbGVyPiBkb2N1bWVudEludGVyYWN0
aW9uQ29udHJvbGxlciA9IGFkb3B0TlMoW1tnZXRVSURvY3VtZW50SW50ZXJhY3Rpb25Db250cm9s
bGVyQ2xhc3MoKSBhbGxvY10gaW5pdF0pOworICAgIFtkb2N1bWVudEludGVyYWN0aW9uQ29udHJv
bGxlciBzZXROYW1lOmZpbGVOYW1lXTsKKyAgICBbZG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xs
ZXIgc2V0VVRJOnN0YXRpY19jYXN0PE5TU3RyaW5nICo+KG1pbWVUeXBlRnJvbVVUSVRyZWUoTUlN
RVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkuZ2V0KCkpXTsKKworICAgIE5TQXJyYXkgKmlj
b25zID0gW2RvY3VtZW50SW50ZXJhY3Rpb25Db250cm9sbGVyIGljb25zXTsKKyAgICBpZiAoIWlj
b25zLmNvdW50KQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmVzdWx0ID0gaWNvbnMubGFz
dE9iamVjdDsKKworICAgIEJPT0wgdXNlSGVpZ2h0Rm9yQ2xvc2VzdE1hdGNoID0gW3Jlc3VsdCBz
aXplXS5oZWlnaHQgPiBbcmVzdWx0IHNpemVdLndpZHRoOworICAgIENHRmxvYXQgYmVzdE1hdGNo
UmF0aW8gPSAtMTsKKworICAgIGZvciAoVUlJbWFnZSAqaWNvbiBpbiBpY29ucykgeworICAgICAg
ICBDR0Zsb2F0IGljb25TaXplID0gdXNlSGVpZ2h0Rm9yQ2xvc2VzdE1hdGNoID8gaWNvbi5zaXpl
LmhlaWdodCA6IGljb24uc2l6ZS53aWR0aDsKKworICAgICAgICBDR0Zsb2F0IG1hdGNoUmF0aW8g
PSAoYXR0YWNobWVudEljb25TaXplIC8gaWNvblNpemUpIC0gMS4wZjsKKyAgICAgICAgaWYgKG1h
dGNoUmF0aW8gPCAwLjNmKSB7CisgICAgICAgICAgICBtYXRjaFJhdGlvID0gQ0dGQWJzKG1hdGNo
UmF0aW8pOworICAgICAgICAgICAgaWYgKChiZXN0TWF0Y2hSYXRpbyA9PSAtMSkgfHwgKG1hdGNo
UmF0aW8gPCBiZXN0TWF0Y2hSYXRpbykpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBpY29u
OworICAgICAgICAgICAgICAgIGJlc3RNYXRjaFJhdGlvID0gbWF0Y2hSYXRpbzsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIENHRmxvYXQgaWNvbkFzcGVjdCA9IFtyZXN1
bHQgc2l6ZV0ud2lkdGggLyBbcmVzdWx0IHNpemVdLmhlaWdodDsKKyAgICBzaXplID0gbGFyZ2Vz
dFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KGljb25Bc3BlY3QsIEZsb2F0UmVjdCgwLCAw
LCBhdHRhY2htZW50SWNvblNpemUsIGF0dGFjaG1lbnRJY29uU2l6ZSkpLnNpemUoKTsKKworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK0F0dGFjaG1lbnRJbmZvOjpBdHRhY2htZW50SW5mbyhjb25z
dCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50KQoreworICAgIGF0dGFjaG1lbnRSZWN0ID0g
RmxvYXRSZWN0KDAsIDAsIGF0dGFjaG1lbnRTaXplLndpZHRoLCBhdHRhY2htZW50U2l6ZS5oZWln
aHQpOworCisgICAgaGFzUHJvZ3Jlc3MgPSBnZXRBdHRhY2htZW50UHJvZ3Jlc3MoYXR0YWNobWVu
dCwgcHJvZ3Jlc3MpOworCisgICAgU3RyaW5nIGFjdGlvbiA9IGF0dGFjaG1lbnQuYXR0YWNobWVu
dEVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKGFjdGlvbkF0dHIpOworICAgIFN0cmluZyBzdWJ0
aXRsZSA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKHN1
YnRpdGxlQXR0cik7CisKKyAgICBDR0Zsb2F0IHlPZmZzZXQgPSAwOworCisgICAgaWYgKGhhc1By
b2dyZXNzKSB7CisgICAgICAgIHByb2dyZXNzUmVjdCA9IEZsb2F0UmVjdCgoYXR0YWNobWVudFJl
Y3Qud2lkdGgoKSAvIDIpIC0gKGF0dGFjaG1lbnRQcm9ncmVzc1NpemUgLyAyKSwgMCwgYXR0YWNo
bWVudFByb2dyZXNzU2l6ZSwgYXR0YWNobWVudFByb2dyZXNzU2l6ZSk7CisgICAgICAgIHlPZmZz
ZXQgKz0gYXR0YWNobWVudFByb2dyZXNzU2l6ZSArIGF0dGFjaG1lbnRJdGVtTWFyZ2luOworICAg
IH0KKworICAgIGlmIChhY3Rpb24uaXNFbXB0eSgpICYmICFoYXNQcm9ncmVzcykgeworICAgICAg
ICBGbG9hdFNpemUgaWNvblNpemU7CisgICAgICAgIGljb24gPSBpY29uRm9yQXR0YWNobWVudChh
dHRhY2htZW50LCBpY29uU2l6ZSk7CisgICAgICAgIGlmIChpY29uKSB7CisgICAgICAgICAgICBp
Y29uUmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KChhdHRhY2htZW50UmVjdC53aWR0aCgpIC8g
MikgLSAoaWNvblNpemUud2lkdGgoKSAvIDIpLCAwKSwgaWNvblNpemUpOworICAgICAgICAgICAg
eU9mZnNldCArPSBpY29uUmVjdC5oZWlnaHQoKSArIGF0dGFjaG1lbnRJdGVtTWFyZ2luOworICAg
ICAgICB9CisgICAgfSBlbHNlCisgICAgICAgIGJ1aWxkU2luZ2xlTGluZShhY3Rpb24sIGF0dGFj
aG1lbnRBY3Rpb25Gb250KCksIGF0dGFjaG1lbnRBY3Rpb25Db2xvcigpKTsKKworICAgIGJ1aWxk
VGl0bGVMaW5lcyhhdHRhY2htZW50KTsKKyAgICBidWlsZFNpbmdsZUxpbmUoc3VidGl0bGUsIGF0
dGFjaG1lbnRTdWJ0aXRsZUZvbnQoKSwgYXR0YWNobWVudFN1YnRpdGxlQ29sb3IoKSk7CisKKyAg
ICBpZiAoIWxpbmVzLmlzRW1wdHkoKSkgeworICAgICAgICBmb3IgKGF1dG8mIGxpbmUgOiBsaW5l
cykgeworICAgICAgICAgICAgbGluZS5yZWN0LnNldFkoeU9mZnNldCk7CisgICAgICAgICAgICB5
T2Zmc2V0ICs9IGxpbmUucmVjdC5oZWlnaHQoKSArIGF0dGFjaG1lbnRJdGVtTWFyZ2luOworICAg
ICAgICB9CisgICAgfQorCisgICAgY29udGVudFlPcmlnaW4gPSAoYXR0YWNobWVudFJlY3QuaGVp
Z2h0KCkgLyAyKSAtICh5T2Zmc2V0IC8gMik7Cit9CisKK0xheW91dFNpemUgUmVuZGVyVGhlbWVJ
T1M6OmF0dGFjaG1lbnRJbnRyaW5zaWNTaXplKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmKSBjb25z
dAoreworICAgIHJldHVybiBMYXlvdXRTaXplKEZsb2F0U2l6ZShhdHRhY2htZW50U2l6ZSkpOwor
fQorCitpbnQgUmVuZGVyVGhlbWVJT1M6OmF0dGFjaG1lbnRCYXNlbGluZShjb25zdCBSZW5kZXJB
dHRhY2htZW50JiBhdHRhY2htZW50KSBjb25zdAoreworICAgIEF0dGFjaG1lbnRJbmZvIGluZm8o
YXR0YWNobWVudCk7CisgICAgcmV0dXJuIGluZm8uYmFzZWxpbmU7Cit9CisKK3N0YXRpYyB2b2lk
IHBhaW50QXR0YWNobWVudEljb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBBdHRhY2htZW50
SW5mbyYgaW5mbykKK3sKKyAgICBpZiAoIWluZm8uaWNvbikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgUmVmUHRyPEltYWdlPiBpY29uSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFtpbmZvLmlj
b24gQ0dJbWFnZV0pOworICAgIGlmICghaWNvbkltYWdlKQorICAgICAgICByZXR1cm47CisKKyAg
ICBjb250ZXh0LmRyYXdJbWFnZSgqaWNvbkltYWdlLCBpbmZvLmljb25SZWN0KTsKK30KKworCitz
dGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
QXR0YWNobWVudEluZm8mIGluZm8pCit7CisgICAgZm9yIChjb25zdCBhdXRvJiBsaW5lIDogaW5m
by5saW5lcykgeworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHNhdmVyKGNvbnRl
eHQpOworCisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKHRvRmxvYXRTaXplKGxpbmUucmVjdC5t
aW5YTWF4WUNvcm5lcigpKSk7CisgICAgICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0x
KSk7CisKKyAgICAgICAgQ0dDb250ZXh0U2V0VGV4dE1hdHJpeChjb250ZXh0LnBsYXRmb3JtQ29u
dGV4dCgpLCBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5KTsKKyAgICAgICAgQ1RMaW5lRHJhdyhs
aW5lLmxpbmUuZ2V0KCksIGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpOworICAgIH0KK30KKwor
c3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50UHJvZ3Jlc3MoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBBdHRhY2htZW50SW5mbyYgaW5mbykKK3sKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHNhdmVyKGNvbnRleHQpOworCisgICAgLy8gRklYTUU6IEltcGxlbWVudCBwcm9ncmVzcyBp
bmRpY2F0b3IuCisgICAgY29udGV4dC5maWxsUmVjdChpbmZvLnByb2dyZXNzUmVjdCwgQ29sb3Io
MCwgMjU1LCAwKSk7Cit9CisKK3N0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEJvcmRlcihHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIEF0dGFjaG1lbnRJbmZvJiBpbmZvKQoreworICAgIFBhdGgg
Ym9yZGVyUGF0aDsKKyAgICBib3JkZXJQYXRoLmFkZFJvdW5kZWRSZWN0KGluZm8uYXR0YWNobWVu
dFJlY3QsIEZsb2F0U2l6ZShhdHRhY2htZW50Qm9yZGVyUmFkaXVzLCBhdHRhY2htZW50Qm9yZGVy
UmFkaXVzKSk7CisgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihhdHRhY2htZW50Qm9yZGVyQ29s
b3IoKSk7CisgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMSk7CisgICAgY29udGV4dC5z
dHJva2VQYXRoKGJvcmRlclBhdGgpOworfQorCitib29sIFJlbmRlclRoZW1lSU9TOjpwYWludEF0
dGFjaG1lbnQoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IEludFJlY3QmIHBhaW50UmVjdCkKK3sKKyAgICBpZiAoIWlzPFJlbmRl
ckF0dGFjaG1lbnQ+KHJlbmRlcmVyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29u
c3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCA9IGRvd25jYXN0PFJlbmRlckF0dGFjaG1l
bnQ+KHJlbmRlcmVyKTsKKworICAgIEF0dGFjaG1lbnRJbmZvIGluZm8oYXR0YWNobWVudCk7CisK
KyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOworICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc2F2ZXIoY29udGV4dCk7CisKKyAgICBjb250ZXh0
LnRyYW5zbGF0ZSh0b0Zsb2F0U2l6ZShwYWludFJlY3QubG9jYXRpb24oKSkpOworCisgICAgcGFp
bnRBdHRhY2htZW50Qm9yZGVyKGNvbnRleHQsIGluZm8pOworCisgICAgY29udGV4dC50cmFuc2xh
dGUoRmxvYXRTaXplKDAsIGluZm8uY29udGVudFlPcmlnaW4pKTsKKworICAgIGlmIChpbmZvLmhh
c1Byb2dyZXNzKQorICAgICAgICBwYWludEF0dGFjaG1lbnRQcm9ncmVzcyhjb250ZXh0LCBpbmZv
KTsKKyAgICBlbHNlIGlmIChpbmZvLmljb24pCisgICAgICAgIHBhaW50QXR0YWNobWVudEljb24o
Y29udGV4dCwgaW5mbyk7CisKKyAgICBwYWludEF0dGFjaG1lbnRUZXh0KGNvbnRleHQsIGluZm8p
OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKICNlbmRpZiAvL1BMQVRGT1JNKElP
UykK
</data>
<flag name="review"
          id="297658"
          type_id="1"
          status="+"
          setter="enrica"
    />
          </attachment>
      

    </bug>

</bugzilla>