From owner-freebsd-fs@FreeBSD.ORG Thu Oct 1 23:24:12 2009 Return-Path: Delivered-To: freebsd-fs@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4E10F106566B for ; Thu, 1 Oct 2009 23:24:12 +0000 (UTC) (envelope-from artemb@gmail.com) Received: from mail-yx0-f171.google.com (mail-yx0-f171.google.com [209.85.210.171]) by mx1.freebsd.org (Postfix) with ESMTP id 0379D8FC15 for ; Thu, 1 Oct 2009 23:24:11 +0000 (UTC) Received: by yxe1 with SMTP id 1so617258yxe.3 for ; Thu, 01 Oct 2009 16:24:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:received:in-reply-to :references:date:x-google-sender-auth:message-id:subject:from:to:cc :content-type; bh=4x8fAO69cZMYH4NxTOlRF2PcFHmL2mpKLpc5x9xBxBA=; b=HJgjY8GgyAcmrODGS45c8bUkVkFrl96XfzoVeVQJrLQlBKJYfP8EvLLhbGyyeXZV/A R5b0+bnav0pA9iJ7Tc17S2jLbKIdq/cKCx21t0N+yBj8lms68cr19fyxnaOXMNYIY7yr legX26aEoUDqlPW8liEq2x7lFnTYkHa2EAud4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; b=m1AvtqZvC7NIbmN8jFx6o8GEvE+qTEXl4mhKy0Cc2X2C+ca+6Ar7Oy0g9gCcODYtBE EOIPkDlFxIL/PsYCIZfXPEPPWp7eXkPrkz9cGnold+BOc2tmB38nXBrTfZxR5OAxnbPp sYElxiQSO/Ro/VPqYuKsOLcWpjHCTtVpMHoeU= MIME-Version: 1.0 Sender: artemb@gmail.com Received: by 10.90.10.9 with SMTP id 9mr1011512agj.69.1254438003137; Thu, 01 Oct 2009 16:00:03 -0700 (PDT) In-Reply-To: <8c9ae7950910011322j1a6b66fcp73615cc17ae20328@mail.gmail.com> References: <8c9ae7950910011322j1a6b66fcp73615cc17ae20328@mail.gmail.com> Date: Thu, 1 Oct 2009 16:00:03 -0700 X-Google-Sender-Auth: 1aa82c7358e2208f Message-ID: From: Artem Belevich To: Alexander Shevchenko Content-Type: multipart/mixed; boundary=00163616438f91deb30474e79b4f Cc: freebsd-fs@freebsd.org Subject: Re: ARC & L2ARC efficiency X-BeenThere: freebsd-fs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Filesystems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 01 Oct 2009 23:24:12 -0000 --00163616438f91deb30474e79b4f Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable There's a pretty useful script to present ARC stats (alas, L2ARC info is not included) in a readable way: http://cuddletech.com/arc_summary/ I've attaches somewhat hacked (and a bit outdated) version that runs on Fre= eBSD. --Artem On Thu, Oct 1, 2009 at 1:22 PM, Alexander Shevchenko wr= ote: > Good time of day! > > How could i check the efficiency of ARC? > Are total reads from pool equal kstat.zfs.misc.arcstats.hits + > kstat.zfs.misc.arcstats.misses, or this values are just reads from cache? > By =A0efficiency i mean reads_from_cache/(reads_from_cache+reads_from_dri= ves) > Are there any document where kstat values described? > > zpool status > =A0pool: data > =A0state: ONLINE > =A0scrub: none requested > config: > > =A0 =A0 =A0 =A0NAME =A0 =A0 =A0 =A0STATE =A0 =A0 READ WRITE CKSUM > =A0 =A0 =A0 =A0data =A0 =A0 =A0 =A0ONLINE =A0 =A0 =A0 0 =A0 =A0 0 =A0 =A0= 0 > =A0 =A0 =A0 =A0 =A0da2 =A0 =A0 =A0 ONLINE =A0 =A0 =A0 0 =A0 =A0 0 =A0 =A0= 0 > =A0 =A0 =A0 =A0 =A0da4 =A0 =A0 =A0 ONLINE =A0 =A0 =A0 0 =A0 =A0 0 =A0 =A0= 0 > =A0 =A0 =A0 =A0cache > =A0 =A0 =A0 =A0 =A0da3 =A0 =A0 =A0 ONLINE =A0 =A0 =A0 0 =A0 =A0 0 =A0 =A0= 0 > > > #sysctl kstat > kstat.zfs.misc.arcstats.hits: 282927703 > kstat.zfs.misc.arcstats.misses: 66220328 > kstat.zfs.misc.arcstats.demand_data_hits: 164374119 > kstat.zfs.misc.arcstats.demand_data_misses: 6615511 > kstat.zfs.misc.arcstats.demand_metadata_hits: 88715021 > kstat.zfs.misc.arcstats.demand_metadata_misses: 4464890 > kstat.zfs.misc.arcstats.prefetch_data_hits: 28851210 > kstat.zfs.misc.arcstats.prefetch_data_misses: 55109950 > kstat.zfs.misc.arcstats.prefetch_metadata_hits: 987353 > kstat.zfs.misc.arcstats.prefetch_metadata_misses: 29977 > kstat.zfs.misc.arcstats.mru_hits: 44560461 > kstat.zfs.misc.arcstats.mru_ghost_hits: 1493532 > kstat.zfs.misc.arcstats.mfu_hits: 211027800 > kstat.zfs.misc.arcstats.mfu_ghost_hits: 16337660 > kstat.zfs.misc.arcstats.deleted: 49112923 > kstat.zfs.misc.arcstats.recycle_miss: 9574100 > kstat.zfs.misc.arcstats.mutex_miss: 252423 > kstat.zfs.misc.arcstats.evict_skip: 2269320648 > kstat.zfs.misc.arcstats.hash_elements: 644877 > kstat.zfs.misc.arcstats.hash_elements_max: 678888 > kstat.zfs.misc.arcstats.hash_collisions: 21697862 > kstat.zfs.misc.arcstats.hash_chains: 182323 > kstat.zfs.misc.arcstats.hash_chain_max: 9 > kstat.zfs.misc.arcstats.p: 1251375616 > kstat.zfs.misc.arcstats.c: 1252817408 > kstat.zfs.misc.arcstats.c_min: 1252817408 > kstat.zfs.misc.arcstats.c_max: 10022539264 > kstat.zfs.misc.arcstats.size: 1237578176 > kstat.zfs.misc.arcstats.hdr_size: 9610640 > kstat.zfs.misc.arcstats.l2_hits: 12905801 > kstat.zfs.misc.arcstats.l2_misses: 680 > kstat.zfs.misc.arcstats.l2_feeds: 52666 > kstat.zfs.misc.arcstats.l2_rw_clash: 680 > kstat.zfs.misc.arcstats.l2_writes_sent: 41330 > kstat.zfs.misc.arcstats.l2_writes_done: 41330 > kstat.zfs.misc.arcstats.l2_writes_error: 0 > kstat.zfs.misc.arcstats.l2_writes_hdr_miss: 62 > kstat.zfs.misc.arcstats.l2_evict_lock_retry: 53 > kstat.zfs.misc.arcstats.l2_evict_reading: 5 > kstat.zfs.misc.arcstats.l2_free_on_write: 30044 > kstat.zfs.misc.arcstats.l2_abort_lowmem: 309837 > kstat.zfs.misc.arcstats.l2_cksum_bad: 0 > kstat.zfs.misc.arcstats.l2_io_error: 0 > kstat.zfs.misc.arcstats.l2_size: 79319831552 > kstat.zfs.misc.arcstats.l2_hdr_size: 134102528 > kstat.zfs.misc.arcstats.memory_throttle_count: 112340 > kstat.zfs.misc.vdev_cache_stats.delegations: 3822 > kstat.zfs.misc.vdev_cache_stats.hits: 342974 > kstat.zfs.misc.vdev_cache_stats.misses: 170601 > > > WBR, > Alexander Shevchenko > _______________________________________________ > freebsd-fs@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-fs > To unsubscribe, send any mail to "freebsd-fs-unsubscribe@freebsd.org" > --00163616438f91deb30474e79b4f Content-Type: application/octet-stream; name="arc_summary.pl" Content-Disposition: attachment; filename="arc_summary.pl" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g0a3wh810 IyEvdXNyL2Jpbi9wZXJsIC13CiMKIyMgYmVuckBjdWRkbGV0ZWNoLmNvbQojIyBhcmNfc3VtbWFy eS5wbCB2MC4yCgp1c2Ugc3RyaWN0OwoKbXkgJEtzdGF0OyAjID0gU3VuOjpTb2xhcmlzOjpLc3Rh dC0+bmV3KCk7CgojIyMgU3lzdGVtIE1lbW9yeSAjIyMKbXkgJHBoeXNfcGFnZXMgPSAwOwpteSAk ZnJlZV9wYWdlcyA9IDA7Cm15ICRsb3RzZnJlZV9wYWdlcyA9IDA7Cm15ICRwYWdlc2l6ZSA9IGBz eXNjdGwgLW4gJ2h3LnBhZ2VzaXplJ2A7CgpteSAkcGh5c19tZW1vcnkgPSBgc3lzY3RsIC1uICdo dy5waHlzbWVtJ2A7CiRwaHlzX3BhZ2VzID0gICRwaHlzX21lbW9yeSAvICRwYWdlc2l6ZTsKbXkg JGZyZWVfbWVtb3J5ID0gMDsKbXkgJGxvdHNmcmVlX21lbW9yeSA9IDA7CgpwcmludCAiU3lzdGVt IE1lbW9yeTpcbiI7CnByaW50ZigiXHQgUGh5c2ljYWwgUkFNOiBcdCVkIE1CXG4iLCAkcGh5c19t ZW1vcnkgLyAxMDI0IC8gMTAyNCk7CnByaW50ZigiXHQgRnJlZSBNZW1vcnkgOiBcdCVkIE1CXG4i LCAkZnJlZV9tZW1vcnkgLyAxMDI0IC8gMTAyNCk7CnByaW50ICJcbiI7CiMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCgoKCm15IEBrID0gYHN5c2N0bCAna3N0YXQuemZzLm1pc2MuYXJjc3RhdHMn YDsKCmZvcmVhY2ggbXkgJGsgKEBrKSB7CiAgY2hvbXAgJGs7CiAgbXkgKCRuYW1lLCR2YWx1ZSkg PSBzcGxpdCAvOi8sICRrOwogIG15IEB6ID0gc3BsaXQgL1wuLywgJG5hbWU7CiAgbXkgJG4gPSBw b3AgQHo7CiAgJHtLc3RhdH0tPnt6ZnN9LT57MH0tPnthcmNzdGF0c30tPnskbn0gPSAkdmFsdWU7 Cn0KCgojIyMjIEFSQyBTaXppbmcgIyMjIyMjIyMjIyMjIyMjCm15ICRtcnVfc2l6ZSA9ICR7S3N0 YXR9LT57emZzfS0+ezB9LT57YXJjc3RhdHN9LT57cH07Cm15ICR0YXJnZXRfc2l6ZSA9ICR7S3N0 YXR9LT57emZzfS0+ezB9LT57YXJjc3RhdHN9LT57Y307Cm15ICRhcmNfbWluX3NpemUgPSAke0tz dGF0fS0+e3pmc30tPnswfS0+e2FyY3N0YXRzfS0+e2NfbWlufTsKbXkgJGFyY19tYXhfc2l6ZSA9 ICR7S3N0YXR9LT57emZzfS0+ezB9LT57YXJjc3RhdHN9LT57Y19tYXh9OwoKbXkgJGFyY19zaXpl ID0gJHtLc3RhdH0tPnt6ZnN9LT57MH0tPnthcmNzdGF0c30tPntzaXplfTsKbXkgJG1mdV9zaXpl ID0gJHt0YXJnZXRfc2l6ZX0gLSAkbXJ1X3NpemU7Cm15ICRtcnVfcGVyYyA9IDEwMCooJG1ydV9z aXplIC8gJHRhcmdldF9zaXplKTsKbXkgJG1mdV9wZXJjID0gMTAwKigkbWZ1X3NpemUgLyAkdGFy Z2V0X3NpemUpOwoKCnByaW50ICJBUkMgU2l6ZTpcbiI7CnByaW50ZigiXHQgQ3VycmVudCBTaXpl OiAgICAgICAgICAgICAlZCBNQiAoYXJjc2l6ZSlcbiIsICRhcmNfc2l6ZSAvIDEwMjQgLyAxMDI0 KTsKcHJpbnRmKCJcdCBUYXJnZXQgU2l6ZSAoQWRhcHRpdmUpOiAgICVkIE1CIChjKVxuIiwgJHRh cmdldF9zaXplIC8gMTAyNCAvIDEwMjQpOwpwcmludGYoIlx0IE1pbiBTaXplIChIYXJkIExpbWl0 KTogICAgJWQgTUIgKHpmc19hcmNfbWluKVxuIiwgJGFyY19taW5fc2l6ZSAvIDEwMjQgLyAxMDI0 KTsKcHJpbnRmKCJcdCBNYXggU2l6ZSAoSGFyZCBMaW1pdCk6ICAgICVkIE1CICh6ZnNfYXJjX21h eClcbiIsICRhcmNfbWF4X3NpemUgLyAxMDI0IC8gMTAyNCk7CgpwcmludCAiXG5BUkMgU2l6ZSBC cmVha2Rvd246XG4iOwoKcHJpbnRmKCJcdCBNb3N0IFJlY2VudGx5IFVzZWQgQ2FjaGUgU2l6ZTog XHQgJTJkJSUgXHQlZCBNQiAocClcbiIsICRtcnVfcGVyYywgJG1ydV9zaXplIC8gMTAyNCAvIDEw MjQpOwpwcmludGYoIlx0IE1vc3QgRnJlcXVlbnRseSBVc2VkIENhY2hlIFNpemU6IFx0ICUyZCUl IFx0JWQgTUIgKGMtcClcbiIsICRtZnVfcGVyYywgJG1mdV9zaXplIC8gMTAyNCAvIDEwMjQpOwpw cmludCAiXG4iOwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojbXkgJGFyY19z aXplID0gJHtLc3RhdH0tPnt6ZnN9LT57MH0tPnthcmNzdGF0c30tPntzaXplfTsKCiAgICAgICAg CgojIyMjIyMjIEFSQyBFZmZpY2VuY3kgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpteSAkYXJj X2hpdHMgPSAke0tzdGF0fS0+e3pmc30tPnswfS0+e2FyY3N0YXRzfS0+e2hpdHN9OwpteSAkYXJj X21pc3NlcyA9ICR7S3N0YXR9LT57emZzfS0+ezB9LT57YXJjc3RhdHN9LT57bWlzc2VzfTsKbXkg JGFyY19hY2Nlc3Nlc190b3RhbCA9ICgkYXJjX2hpdHMgKyAkYXJjX21pc3Nlcyk7CgpteSAkYXJj X2hpdF9wZXJjID0gMTAwKigkYXJjX2hpdHMgLyAkYXJjX2FjY2Vzc2VzX3RvdGFsKTsKbXkgJGFy Y19taXNzX3BlcmMgPSAxMDAqKCRhcmNfbWlzc2VzIC8gJGFyY19hY2Nlc3Nlc190b3RhbCk7CgoK bXkgJG1mdV9oaXRzID0gJHtLc3RhdH0tPnt6ZnN9LT57MH0tPnthcmNzdGF0c30tPnttZnVfaGl0 c307Cm15ICRtcnVfaGl0cyA9ICR7S3N0YXR9LT57emZzfS0+ezB9LT57YXJjc3RhdHN9LT57bXJ1 X2hpdHN9OwpteSAkbWZ1X2dob3N0X2hpdHMgPSAke0tzdGF0fS0+e3pmc30tPnswfS0+e2FyY3N0 YXRzfS0+e21mdV9naG9zdF9oaXRzfTsKbXkgJG1ydV9naG9zdF9oaXRzID0gJHtLc3RhdH0tPnt6 ZnN9LT57MH0tPnthcmNzdGF0c30tPnttcnVfZ2hvc3RfaGl0c307Cm15ICRhbm9uX2hpdHMgPSAk YXJjX2hpdHMgLSAoJG1mdV9oaXRzICsgJG1ydV9oaXRzICsgJG1mdV9naG9zdF9oaXRzICsgJG1y dV9naG9zdF9oaXRzKTsKCm15ICRyZWFsX2hpdHMgPSAoJG1mdV9oaXRzICsgJG1ydV9oaXRzKTsK bXkgJHJlYWxfaGl0c19wZXJjID0gMTAwKigkcmVhbF9oaXRzIC8gJGFyY19hY2Nlc3Nlc190b3Rh bCk7CgojIyMgVGhlc2Ugc2hvdWxkIGJlIGJhc2VkIG9uIFRPVEFMIEhJVFMgKCRhcmNfaGl0cykK bXkgJGFub25faGl0c19wZXJjID0gMTAwKigkYW5vbl9oaXRzIC8gJGFyY19oaXRzKTsKbXkgJG1m dV9oaXRzX3BlcmMgPSAxMDAqKCRtZnVfaGl0cyAvICRhcmNfaGl0cyk7Cm15ICRtcnVfaGl0c19w ZXJjID0gMTAwKigkbXJ1X2hpdHMgLyAkYXJjX2hpdHMpOwpteSAkbWZ1X2dob3N0X2hpdHNfcGVy YyA9IDEwMCooJG1mdV9naG9zdF9oaXRzIC8gJGFyY19oaXRzKTsKbXkgJG1ydV9naG9zdF9oaXRz X3BlcmMgPSAxMDAqKCRtcnVfZ2hvc3RfaGl0cyAvICRhcmNfaGl0cyk7CgoKbXkgJGRlbWFuZF9k YXRhX2hpdHMgPSAke0tzdGF0fS0+e3pmc30tPnswfS0+e2FyY3N0YXRzfS0+e2RlbWFuZF9kYXRh X2hpdHN9OwpteSAkZGVtYW5kX21ldGFkYXRhX2hpdHMgPSAke0tzdGF0fS0+e3pmc30tPnswfS0+ e2FyY3N0YXRzfS0+e2RlbWFuZF9tZXRhZGF0YV9oaXRzfTsKbXkgJHByZWZldGNoX2RhdGFfaGl0 cyA9ICR7S3N0YXR9LT57emZzfS0+ezB9LT57YXJjc3RhdHN9LT57cHJlZmV0Y2hfZGF0YV9oaXRz fTsKbXkgJHByZWZldGNoX21ldGFkYXRhX2hpdHMgPSAke0tzdGF0fS0+e3pmc30tPnswfS0+e2Fy Y3N0YXRzfS0+e3ByZWZldGNoX21ldGFkYXRhX2hpdHN9OwoKbXkgJGRlbWFuZF9kYXRhX2hpdHNf cGVyYyA9IDEwMCooJGRlbWFuZF9kYXRhX2hpdHMgLyAkYXJjX2hpdHMpOwpteSAkZGVtYW5kX21l dGFkYXRhX2hpdHNfcGVyYyA9IDEwMCooJGRlbWFuZF9tZXRhZGF0YV9oaXRzIC8gJGFyY19oaXRz KTsKbXkgJHByZWZldGNoX2RhdGFfaGl0c19wZXJjID0gMTAwKigkcHJlZmV0Y2hfZGF0YV9oaXRz IC8gJGFyY19oaXRzKTsKbXkgJHByZWZldGNoX21ldGFkYXRhX2hpdHNfcGVyYyA9IDEwMCooJHBy ZWZldGNoX21ldGFkYXRhX2hpdHMgLyAkYXJjX2hpdHMpOwoKCm15ICRkZW1hbmRfZGF0YV9taXNz ZXMgPSAke0tzdGF0fS0+e3pmc30tPnswfS0+e2FyY3N0YXRzfS0+e2RlbWFuZF9kYXRhX21pc3Nl c307Cm15ICRkZW1hbmRfbWV0YWRhdGFfbWlzc2VzID0gJHtLc3RhdH0tPnt6ZnN9LT57MH0tPnth cmNzdGF0c30tPntkZW1hbmRfbWV0YWRhdGFfbWlzc2VzfTsKbXkgJHByZWZldGNoX2RhdGFfbWlz c2VzID0gJHtLc3RhdH0tPnt6ZnN9LT57MH0tPnthcmNzdGF0c30tPntwcmVmZXRjaF9kYXRhX21p c3Nlc307Cm15ICRwcmVmZXRjaF9tZXRhZGF0YV9taXNzZXMgPSAke0tzdGF0fS0+e3pmc30tPnsw fS0+e2FyY3N0YXRzfS0+e3ByZWZldGNoX21ldGFkYXRhX21pc3Nlc307CgpteSAkZGVtYW5kX2Rh dGFfbWlzc2VzX3BlcmMgPSAxMDAqKCRkZW1hbmRfZGF0YV9taXNzZXMgLyAkYXJjX21pc3Nlcyk7 Cm15ICRkZW1hbmRfbWV0YWRhdGFfbWlzc2VzX3BlcmMgPSAxMDAqKCRkZW1hbmRfbWV0YWRhdGFf bWlzc2VzIC8gJGFyY19taXNzZXMpOwpteSAkcHJlZmV0Y2hfZGF0YV9taXNzZXNfcGVyYyA9IDEw MCooJHByZWZldGNoX2RhdGFfbWlzc2VzIC8gJGFyY19taXNzZXMpOwpteSAkcHJlZmV0Y2hfbWV0 YWRhdGFfbWlzc2VzX3BlcmMgPSAxMDAqKCRwcmVmZXRjaF9tZXRhZGF0YV9taXNzZXMgLyAkYXJj X21pc3Nlcyk7CgpteSAkcHJlZmV0Y2hfZGF0YV90b3RhbCA9ICgkcHJlZmV0Y2hfZGF0YV9oaXRz ICsgJHByZWZldGNoX2RhdGFfbWlzc2VzKTsKbXkgJHByZWZldGNoX2RhdGFfcGVyYyA9ICIwMCI7 CmlmICgkcHJlZmV0Y2hfZGF0YV90b3RhbCA+IDAgKSB7CiAgICAgICAgJHByZWZldGNoX2RhdGFf cGVyYyA9IDEwMCooJHByZWZldGNoX2RhdGFfaGl0cyAvICRwcmVmZXRjaF9kYXRhX3RvdGFsKTsK fQoKbXkgJGRlbWFuZF9kYXRhX3RvdGFsID0gKCRkZW1hbmRfZGF0YV9oaXRzICsgJGRlbWFuZF9k YXRhX21pc3Nlcyk7Cm15ICRkZW1hbmRfZGF0YV9wZXJjID0gMTAwKigkZGVtYW5kX2RhdGFfaGl0 cyAvICRkZW1hbmRfZGF0YV90b3RhbCk7CgoKcHJpbnQgIkFSQyBFZmZpY2VuY3k6XG4iOwpwcmlu dGYoIlx0IENhY2hlIEFjY2VzcyBUb3RhbDogICAgICAgIFx0ICVkXG4iLCAkYXJjX2FjY2Vzc2Vz X3RvdGFsKTsKcHJpbnRmKCJcdCBDYWNoZSBIaXQgUmF0aW86ICAgICAgJTJkJSVcdCAlZCAgIFx0 W0RlZmluZWQgU3RhdGUgZm9yIGJ1ZmZlcl1cbiIsICRhcmNfaGl0X3BlcmMsICRhcmNfaGl0cyk7 CnByaW50ZigiXHQgQ2FjaGUgTWlzcyBSYXRpbzogICAgICUyZCUlXHQgJWQgICBcdFtVbmRlZmlu ZWQgU3RhdGUgZm9yIEJ1ZmZlcl1cbiIsICRhcmNfbWlzc19wZXJjLCAkYXJjX21pc3Nlcyk7CnBy aW50ZigiXHQgUkVBTCBIaXQgUmF0aW86ICAgICAgICUyZCUlXHQgJWQgICBcdFtNUlUvTUZVIEhp dHMgT25seV1cbiIsICRyZWFsX2hpdHNfcGVyYywgJHJlYWxfaGl0cyk7CnByaW50ICJcbiI7CnBy aW50ZigiXHQgRGF0YSBEZW1hbmQgICBFZmZpY2llbmN5OiAgICAlMmQlJVxuIiwgJGRlbWFuZF9k YXRhX3BlcmMpOwppZiAoJHByZWZldGNoX2RhdGFfdG90YWwgPT0gMCl7IAogICAgICAgIHByaW50 ZigiXHQgRGF0YSBQcmVmZXRjaCBFZmZpY2llbmN5OiAgICBESVNBQkxFRCAoemZzX3ByZWZldGNo X2Rpc2FibGUpXG4iKTsKfSBlbHNlIHsKICAgICAgICBwcmludGYoIlx0IERhdGEgUHJlZmV0Y2gg RWZmaWNpZW5jeTogICAgJTJkJSVcbiIsICRwcmVmZXRjaF9kYXRhX3BlcmMpOwp9CnByaW50ICJc biI7CgoKcHJpbnQgIlx0Q0FDSEUgSElUUyBCWSBDQUNIRSBMSVNUOlxuIjsKaWYgKCAkYW5vbl9o aXRzIDwgMSApewogICAgICAgIHByaW50ZigiXHQgIEFub246ICAgICAgICAgICAgICAgICAgICAg ICAtLSUlIFx0IENvdW50ZXIgUm9sbGVkLlxuIik7Cn0gZWxzZSB7CiAgICAgICAgcHJpbnRmKCJc dCAgQW5vbjogICAgICAgICAgICAgICAgICAgICAgICUyZCUlIFx0ICVkICAgICAgICAgICAgXHRb IE5ldyBDdXN0b21lciwgRmlyc3QgQ2FjaGUgSGl0IF1cbiIsICRhbm9uX2hpdHNfcGVyYywgJGFu b25faGl0cyk7Cn0KcHJpbnRmKCJcdCAgTW9zdCBSZWNlbnRseSBVc2VkOiAgICAgICAgICUyZCUl IFx0ICVkIChtcnUpICAgICAgXHRbIFJldHVybiBDdXN0b21lciBdXG4iLCAkbXJ1X2hpdHNfcGVy YywgJG1ydV9oaXRzKTsKcHJpbnRmKCJcdCAgTW9zdCBGcmVxdWVudGx5IFVzZWQ6ICAgICAgICUy ZCUlIFx0ICVkIChtZnUpICAgICAgXHRbIEZyZXF1ZW50IEN1c3RvbWVyIF1cbiIsICRtZnVfaGl0 c19wZXJjLCAkbWZ1X2hpdHMpOwpwcmludGYoIlx0ICBNb3N0IFJlY2VudGx5IFVzZWQgR2hvc3Q6 ICAgJTJkJSUgXHQgJWQgKG1ydV9naG9zdClcdFsgUmV0dXJuIEN1c3RvbWVyIEV2aWN0ZWQsIE5v dyBCYWNrIF1cbiIsICRtcnVfZ2hvc3RfaGl0c19wZXJjLCAkbXJ1X2dob3N0X2hpdHMpOwpwcmlu dGYoIlx0ICBNb3N0IEZyZXF1ZW50bHkgVXNlZCBHaG9zdDogJTJkJSUgXHQgJWQgKG1mdV9naG9z dClcdFsgRnJlcXVlbnQgQ3VzdG9tZXIgRXZpY3RlZCwgTm93IEJhY2sgXVxuIiwgJG1mdV9naG9z dF9oaXRzX3BlcmMsICRtZnVfZ2hvc3RfaGl0cyk7CgpwcmludCAiXHRDQUNIRSBISVRTIEJZIERB VEEgVFlQRTpcbiI7CnByaW50ZigiXHQgIERlbWFuZCBEYXRhOiAgICAgICAgICAgICAgICAlMmQl JSBcdCAlZCBcbiIsICRkZW1hbmRfZGF0YV9oaXRzX3BlcmMsICRkZW1hbmRfZGF0YV9oaXRzKTsK cHJpbnRmKCJcdCAgUHJlZmV0Y2ggRGF0YTogICAgICAgICAgICAgICUyZCUlIFx0ICVkIFxuIiwg JHByZWZldGNoX2RhdGFfaGl0c19wZXJjLCAkcHJlZmV0Y2hfZGF0YV9oaXRzKTsKcHJpbnRmKCJc dCAgRGVtYW5kIE1ldGFkYXRhOiAgICAgICAgICAgICUyZCUlIFx0ICVkIFxuIiwgJGRlbWFuZF9t ZXRhZGF0YV9oaXRzX3BlcmMsICRkZW1hbmRfbWV0YWRhdGFfaGl0cyk7CnByaW50ZigiXHQgIFBy ZWZldGNoIE1ldGFkYXRhOiAgICAgICAgICAlMmQlJSBcdCAlZCBcbiIsICRwcmVmZXRjaF9tZXRh ZGF0YV9oaXRzX3BlcmMsICRwcmVmZXRjaF9tZXRhZGF0YV9oaXRzKTsKCnByaW50ICJcdENBQ0hF IE1JU1NFUyBCWSBEQVRBIFRZUEU6XG4iOwpwcmludGYoIlx0ICBEZW1hbmQgRGF0YTogICAgICAg ICAgICAgICAgJTJkJSUgXHQgJWQgXG4iLCAkZGVtYW5kX2RhdGFfbWlzc2VzX3BlcmMsICRkZW1h bmRfZGF0YV9taXNzZXMpOwpwcmludGYoIlx0ICBQcmVmZXRjaCBEYXRhOiAgICAgICAgICAgICAg JTJkJSUgXHQgJWQgXG4iLCAkcHJlZmV0Y2hfZGF0YV9taXNzZXNfcGVyYywgJHByZWZldGNoX2Rh dGFfbWlzc2VzKTsKcHJpbnRmKCJcdCAgRGVtYW5kIE1ldGFkYXRhOiAgICAgICAgICAgICUyZCUl IFx0ICVkIFxuIiwgJGRlbWFuZF9tZXRhZGF0YV9taXNzZXNfcGVyYywgJGRlbWFuZF9tZXRhZGF0 YV9taXNzZXMpOwpwcmludGYoIlx0ICBQcmVmZXRjaCBNZXRhZGF0YTogICAgICAgICAgJTJkJSUg XHQgJWQgXG4iLCAkcHJlZmV0Y2hfbWV0YWRhdGFfbWlzc2VzX3BlcmMsICRwcmVmZXRjaF9tZXRh ZGF0YV9taXNzZXMpOwoKcHJpbnQgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLVxuIgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwo= --00163616438f91deb30474e79b4f--