Received: by 2002:ab2:1149:0:b0:1f3:1f8c:d0c6 with SMTP id z9csp1314652lqz; Mon, 1 Apr 2024 02:10:45 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCUp/j6JE3SGb+c531xduj/bDZlt3BLcG0CieHP98c2/D9l65N65fBj3iEw2iPFB/FsNCvvBGq5c6OBECkXHP6MgQZ5qy7X/BBWmNhUXKg== X-Google-Smtp-Source: AGHT+IF304fs5Rcm9GmtjRTLS4l8QQDmk93LGAeMAIcmhK7zlMgphgsgKJgAFdkBFi4Bpl0KObl8 X-Received: by 2002:a17:90b:4f4b:b0:2a2:26f9:2e94 with SMTP id pj11-20020a17090b4f4b00b002a226f92e94mr4709240pjb.29.1711962644685; Mon, 01 Apr 2024 02:10:44 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1711962644; cv=pass; d=google.com; s=arc-20160816; b=b3TcwSy+Kf9g0uCllQmwhSrbpV689PFUrmL3Nvzx7Xn3KcWMtiI81+4Je5MZ5Cpfwp lHmlbq+gokwehdvGDNuYyDEBNYjDmMbrjByPA8AVrnd5HRL4NswsXb01ogdcoh4wqbam khjotsuW3hsPaHtRYhI2PpNfLomavlMK9jGQuAL1mAnLGi2ux/Ip4L9vCcejoxLUQjX9 HDeRUMuWsTSc4M3dXQ24Vamie/Ic5H6uzg9peFzl0JMdDdztSGu1q3vS9xghDAwsOm4G lRFW+l76Pf6wxz8V1wypNeLnmib5Y0fDvQCx4BnKUH9Usoio+lYn1Z+euE3gxuVFDmrk BuDA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:list-unsubscribe:list-subscribe:list-id:precedence :subject:message-id:reply-to:cc:to:from:date; bh=T3W9maGRVFhxYBtNfJg1Cu8qms6YgW69OxZQJ5fJQo4=; fh=xkEJ2pzPN7HYbl0l0F/VVCVAb5/+I+ogoNKcCqVY5xA=; b=n+z0qYRsEluJOnfvH45N6vS49GUc/4eW7Psx4YI5G64qHADasjUqTEtIP0LVpSkR5t oMZFS/j5DAYn7lejr61GP8X3NLhA5EjFOsycVuqykTqCaKwzeLiSwXKcaKQ++OPc2IT0 kN3oGrS7CvHTtuUh2a6bdZX/o9yZcsKh7Z5quixWB3dk3VYKSM4kgdGHKAvC+kPrxSwD tcDxzzLQECYbNg9C+5MvXS72Ca75x6+NmPbxXT1WWjovBSi5ioQQTepzgccRvcFKvCwO dgDCDwG4GoWXncXbXEF1lH+6DfMKH/CdGbaGeoZTtSHfSLMRG1DDuGsuJclaEFfI8vMf lSUA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=ubisectech.com); spf=pass (google.com: domain of linux-kernel+bounces-126540-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-126540-linux.lists.archive=gmail.com@vger.kernel.org" Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id sc6-20020a17090b510600b002a2342884e4si2803528pjb.45.2024.04.01.02.10.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Apr 2024 02:10:44 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-126540-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; arc=pass (i=1 spf=pass spfdomain=ubisectech.com); spf=pass (google.com: domain of linux-kernel+bounces-126540-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-126540-linux.lists.archive=gmail.com@vger.kernel.org" Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 499F4281DD4 for ; Mon, 1 Apr 2024 09:10:44 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 2865A101CE; Mon, 1 Apr 2024 09:10:41 +0000 (UTC) Received: from out28-74.mail.aliyun.com (out28-74.mail.aliyun.com [115.124.28.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4B9471113; Mon, 1 Apr 2024 09:10:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.28.74 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711962635; cv=none; b=hsOIxUMOuK0Wrd5t5p4XO2fBIA0rWCGkjJ3rGqZV8ZJTfragAbdLLJNXqQgRt+Oe1BId+z224zKE8QzZUFFZFmBkT+miLrn0X3PgfqfBzXlFc8rgnIGinTMXguSiuCPMOe5YFp2tq9MPokPkr8HqlR6xjA/1V+NJDU8E5FscDpc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711962635; c=relaxed/simple; bh=T3W9maGRVFhxYBtNfJg1Cu8qms6YgW69OxZQJ5fJQo4=; h=Date:From:To:Cc:Message-ID:Subject:MIME-Version:Content-Type; b=h65YZmjpeZSHX0IHB//NDsFPGRSLABNR+oZusbuFo1SmXQcUp/QQKMGz/ByfA1EZP8913aIBMhP8Yy1g9sd8oKy4dE2uUKy2DUiHFxdpymAlRaeVACJnYvESjy6dSIJbYxpb4ybY/5bas5FGd1H3CAYmAAeR1GedAx88BKY8A4M= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ubisectech.com; spf=pass smtp.mailfrom=ubisectech.com; arc=none smtp.client-ip=115.124.28.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ubisectech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ubisectech.com X-Alimail-AntiSpam:AC=CONTINUE;BC=0.1372109|-1;CH=green;DM=|CONTINUE|false|;DS=CONTINUE|ham_system_inform|0.0724808-0.0120841-0.915435;FP=17145583597154636904|5|2|8|3985196777786129774|5|2|8;HT=ay29a033018047211;MF=bugreport@ubisectech.com;NM=1;PH=DW;RN=3;RT=3;SR=0;TI=W4_0.2.3_v5_2112901E_1711961678907_o7001c13q; Received: from WS-web (bugreport@ubisectech.com[W4_0.2.3_v5_2112901E_1711961678907_o7001c13q]) at Mon, 01 Apr 2024 16:54:51 +0800 Date: Mon, 01 Apr 2024 16:54:51 +0800 From: "Ubisectech Sirius" To: "linux-trace-kernel" , "linux-kernel" Cc: "herbert" Reply-To: "Ubisectech Sirius" Message-ID: Subject: =?UTF-8?B?Z2VuZXJhbCBwcm90ZWN0aW9uIGZhdWx0IGluIF9fZmliNl91cGRhdGVfc2VybnVtX3VwdG9f?= =?UTF-8?B?cm9vdA==?= X-Mailer: [Alimail-Mailagent][W4_0.2.3][v5][Chrome] Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 x-aliyun-mail-creator: W4_0.2.3_v5_M3LTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEyMy4wLjAuMCBTYWZhcmkvNTM3LjM2vN Content-Type: multipart/mixed; boundary="----=ALIBOUNDARY_104631_7ffa9c290700_660a765b_3b99b9" This is a multi-part message in MIME format. ------=ALIBOUNDARY_104631_7ffa9c290700_660a765b_3b99b9 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 SGVsbG8uCldlIGFyZSBVYmlzZWN0ZWNoIFNpcml1cyBUZWFtLCB0aGUgdnVsbmVyYWJpbGl0eSBs YWIgb2YgQ2hpbmEgVmFsaWFudFNlYy4gUmVjZW50bHksIG91ciB0ZWFtIGhhcyBkaXNjb3ZlcmVk IGEgaXNzdWUgaW4gTGludXgga2VybmVsIDYuNy4gQXR0YWNoZWQgdG8gdGhlIGVtYWlsIHdlcmUg YSBQb0MgZmlsZSBvZiB0aGUgaXNzdWUuCgpTdGFjayBkdW1wOgpnZW5lcmFsIHByb3RlY3Rpb24g ZmF1bHQsIHByb2JhYmx5IGZvciBub24tY2Fub25pY2FsIGFkZHJlc3MgMHhmZjFmMWIxZjFmMWYx ZjI0OiAwMDAwIFsjMV0gUFJFRU1QVCBTTVAgS0FTQU4gTk9QVEkKS0FTQU46IG1heWJlIHdpbGQt bWVtb3J5LWFjY2VzcyBpbiByYW5nZSBbMHhmOGY4ZjhmOGY4ZjhmOTIwLTB4ZjhmOGY4ZjhmOGY4 ZjkyN10KQ1BVOiAxIFBJRDogOTM2NyBDb21tOiBrd29ya2VyLzE6NSBOb3QgdGFpbnRlZCA2Ljcu MCAjMQpIYXJkd2FyZSBuYW1lOiBRRU1VIFN0YW5kYXJkIFBDIChpNDQwRlggKyBQSUlYLCAxOTk2 KSwgQklPUyAxLjE1LjAtMSAwNC8wMS8yMDE0CldvcmtxdWV1ZTogaXB2Nl9hZGRyY29uZiBhZGRy Y29uZl9kYWRfd29yawpSSVA6IDAwMTA6X19maWI2X3VwZGF0ZV9zZXJudW1fdXB0b19yb290KzB4 YTcvMHgyNzAgbmV0L2lwdjYvaXA2X2ZpYi5jOjEzNTgKQ29kZTogYzEgZTggMDMgNDIgODAgM2Mg MjAgMDAgMGYgODUgOWIgMDEgMDAgMDAgNDggOGIgMWIgNDggODUgZGIgMGYgODQgZDkgMDAgMDAg MDAgZTggNzQgNzAgMzkgZjggNDggOGQgN2IgMmMgNDggODkgZjggNDggYzEgZTggMDMgPDQyPiAw ZiBiNiAxNCAyMCA0OCA4OSBmOCA4MyBlMCAwNyA4MyBjMCAwMyAzOCBkMCA3YyAwOCA4NCBkMiAw ZiA4NQpSU1A6IDAwMTg6ZmZmZmM5MDAwNjMxZjdjOCBFRkxBR1M6IDAwMDEwYTA3ClJBWDogMWYx ZjFmMWYxZjFmMWYyNCBSQlg6IGY4ZjhmOGY4ZjhmOGY4ZjggUkNYOiBmZmZmZmZmZjg5NTA4NjQ0 ClJEWDogZmZmZjg4ODA1MWQ3ODAwMCBSU0k6IGZmZmZmZmZmODk1MDg1ZGMgUkRJOiBmOGY4Zjhm OGY4ZjhmOTI0ClJCUDogMDAwMDAwMDAwMDAwMDAwMSBSMDg6IDAwMDAwMDAwMDAwMDAwMDUgUjA5 OiAwMDAwMDAwMDAwMDAwMDAwClIxMDogMDAwMDAwMDAwMDAwMDAwMSBSMTE6IDAwMDAwMDAwMDAw MDAwMDAgUjEyOiBkZmZmZmMwMDAwMDAwMDAwClIxMzogMDAwMDAwMDAwMDAwMDE4NiBSMTQ6IGZm ZmY4ODgwNTIzOTZjMDAgUjE1OiBmZmZmZWQxMDBhNDcyZDgwCkZTOiAgMDAwMDAwMDAwMDAwMDAw MCgwMDAwKSBHUzpmZmZmODg4MDdlYzAwMDAwKDAwMDApIGtubEdTOjAwMDAwMDAwMDAwMDAwMDAK Q1M6ICAwMDEwIERTOiAwMDAwIEVTOiAwMDAwIENSMDogMDAwMDAwMDA4MDA1MDAzMwpDUjI6IDAw MDA3ZjQyYzg0ODdkMDAgQ1IzOiAwMDAwMDAwMDRiNDJjMDAwIENSNDogMDAwMDAwMDAwMDc1MGVm MApEUjA6IDAwMDAwMDAwMDAwMDAwMDAgRFIxOiAwMDAwMDAwMDAwMDAwMDAwIERSMjogMDAwMDAw MDAwMDAwMDAwMApEUjM6IDAwMDAwMDAwMDAwMDAwMDAgRFI2OiAwMDAwMDAwMGZmZmUwZmYwIERS NzogMDAwMDAwMDAwMDAwMDQwMApQS1JVOiA1NTU1NTU1NApDYWxsIFRyYWNlOgogPFRBU0s+CiBf X2xpc3RfYWRkIGluY2x1ZGUvbGludXgvbGlzdC5oOjE1MyBbaW5saW5lXQogbGlzdF9hZGQgaW5j bHVkZS9saW51eC9saXN0Lmg6MTY5IFtpbmxpbmVdCiBmaWI2X2FkZCsweDE2YzQvMHg0NDEwIG5l dC9pcHY2L2lwNl9maWIuYzoxNDkwCiBfX2lwNl9pbnNfcnQgbmV0L2lwdjYvcm91dGUuYzoxMzEz IFtpbmxpbmVdCiBpcDZfaW5zX3J0KzB4YjYvMHgxMTAgbmV0L2lwdjYvcm91dGUuYzoxMzIzCiBf X2lwdjZfaWZhX25vdGlmeSsweGFiMy8weGQzMCBuZXQvaXB2Ni9hZGRyY29uZi5jOjYyNjYKIGlw djZfaWZhX25vdGlmeSBuZXQvaXB2Ni9hZGRyY29uZi5jOjYzMDMgW2lubGluZV0KIGFkZHJjb25m X2RhZF9jb21wbGV0ZWQrMHgxNWYvMHhlZjAgbmV0L2lwdjYvYWRkcmNvbmYuYzo0MzE3CiBhZGRy Y29uZl9kYWRfd29yaysweDc4NS8weDE0ZTAgbmV0L2lwdjYvYWRkcmNvbmYuYzo0MjYwCiBwcm9j ZXNzX29uZV93b3JrKzB4ODdiLzB4MTVjMCBrZXJuZWwvd29ya3F1ZXVlLmM6MzIyNgogd29ya2Vy X3RocmVhZCsweDg1NS8weDEyMDAga2VybmVsL3dvcmtxdWV1ZS5jOjMzODAKIGt0aHJlYWQrMHgy Y2MvMHgzYjAga2VybmVsL2t0aHJlYWQuYzozODgKIHJldF9mcm9tX2ZvcmsrMHg0NS8weDgwIGFy Y2gveDg2L2tlcm5lbC9wcm9jZXNzLmM6MTQ3CiByZXRfZnJvbV9mb3JrX2FzbSsweDFiLzB4MzAg YXJjaC94ODYvZW50cnkvZW50cnlfNjQuUzoyNTYKIDwvVEFTSz4KTW9kdWxlcyBsaW5rZWQgaW46 Ci0tLVsgZW5kIHRyYWNlIDAwMDAwMDAwMDAwMDAwMDAgXS0tLQpSSVA6IDAwMTA6X19maWI2X3Vw ZGF0ZV9zZXJudW1fdXB0b19yb290KzB4YTcvMHgyNzAgbmV0L2lwdjYvaXA2X2ZpYi5jOjEzNTgK Q29kZTogYzEgZTggMDMgNDIgODAgM2MgMjAgMDAgMGYgODUgOWIgMDEgMDAgMDAgNDggOGIgMWIg NDggODUgZGIgMGYgODQgZDkgMDAgMDAgMDAgZTggNzQgNzAgMzkgZjggNDggOGQgN2IgMmMgNDgg ODkgZjggNDggYzEgZTggMDMgPDQyPiAwZiBiNiAxNCAyMCA0OCA4OSBmOCA4MyBlMCAwNyA4MyBj MCAwMyAzOCBkMCA3YyAwOCA4NCBkMiAwZiA4NQpSU1A6IDAwMTg6ZmZmZmM5MDAwNjMxZjdjOCBF RkxBR1M6IDAwMDEwYTA3ClJBWDogMWYxZjFmMWYxZjFmMWYyNCBSQlg6IGY4ZjhmOGY4ZjhmOGY4 ZjggUkNYOiBmZmZmZmZmZjg5NTA4NjQ0ClJEWDogZmZmZjg4ODA1MWQ3ODAwMCBSU0k6IGZmZmZm ZmZmODk1MDg1ZGMgUkRJOiBmOGY4ZjhmOGY4ZjhmOTI0ClJCUDogMDAwMDAwMDAwMDAwMDAwMSBS MDg6IDAwMDAwMDAwMDAwMDAwMDUgUjA5OiAwMDAwMDAwMDAwMDAwMDAwClIxMDogMDAwMDAwMDAw MDAwMDAwMSBSMTE6IDAwMDAwMDAwMDAwMDAwMDAgUjEyOiBkZmZmZmMwMDAwMDAwMDAwClIxMzog MDAwMDAwMDAwMDAwMDE4NiBSMTQ6IGZmZmY4ODgwNTIzOTZjMDAgUjE1OiBmZmZmZWQxMDBhNDcy ZDgwCkZTOiAgMDAwMDAwMDAwMDAwMDAwMCgwMDAwKSBHUzpmZmZmODg4MDdlYzAwMDAwKDAwMDAp IGtubEdTOjAwMDAwMDAwMDAwMDAwMDAKQ1M6ICAwMDEwIERTOiAwMDAwIEVTOiAwMDAwIENSMDog MDAwMDAwMDA4MDA1MDAzMwpDUjI6IDAwMDA3ZjQyYzg0ODdkMDAgQ1IzOiAwMDAwMDAwMDRiNDJj MDAwIENSNDogMDAwMDAwMDAwMDc1MGVmMApEUjA6IDAwMDAwMDAwMDAwMDAwMDAgRFIxOiAwMDAw MDAwMDAwMDAwMDAwIERSMjogMDAwMDAwMDAwMDAwMDAwMApEUjM6IDAwMDAwMDAwMDAwMDAwMDAg RFI2OiAwMDAwMDAwMGZmZmUwZmYwIERSNzogMDAwMDAwMDAwMDAwMDQwMApQS1JVOiA1NTU1NTU1 NAotLS0tLS0tLS0tLS0tLS0tCkNvZGUgZGlzYXNzZW1ibHkgKGJlc3QgZ3Vlc3MpOgogICAwOiAg IGMxIGU4IDAzICAgICAgICAgICAgICAgIHNociAgICAkMHgzLCVlYXgKICAgMzogICA0MiA4MCAz YyAyMCAwMCAgICAgICAgICBjbXBiICAgJDB4MCwoJXJheCwlcjEyLDEpCiAgIDg6ICAgMGYgODUg OWIgMDEgMDAgMDAgICAgICAgam5lICAgIDB4MWE5CiAgIGU6ICAgNDggOGIgMWIgICAgICAgICAg ICAgICAgbW92ICAgICglcmJ4KSwlcmJ4CiAgMTE6ICAgNDggODUgZGIgICAgICAgICAgICAgICAg dGVzdCAgICVyYngsJXJieAogIDE0OiAgIDBmIDg0IGQ5IDAwIDAwIDAwICAgICAgIGplICAgICAw eGYzCiAgMWE6ICAgZTggNzQgNzAgMzkgZjggICAgICAgICAgY2FsbCAgIDB4ZjgzOTcwOTMKICAx ZjogICA0OCA4ZCA3YiAyYyAgICAgICAgICAgICBsZWEgICAgMHgyYyglcmJ4KSwlcmRpCiAgMjM6 ICAgNDggODkgZjggICAgICAgICAgICAgICAgbW92ICAgICVyZGksJXJheAogIDI2OiAgIDQ4IGMx IGU4IDAzICAgICAgICAgICAgIHNociAgICAkMHgzLCVyYXgKKiAyYTogICA0MiAwZiBiNiAxNCAy MCAgICAgICAgICBtb3Z6YmwgKCVyYXgsJXIxMiwxKSwlZWR4IDwtLSB0cmFwcGluZyBpbnN0cnVj dGlvbgogIDJmOiAgIDQ4IDg5IGY4ICAgICAgICAgICAgICAgIG1vdiAgICAlcmRpLCVyYXgKICAz MjogICA4MyBlMCAwNyAgICAgICAgICAgICAgICBhbmQgICAgJDB4NywlZWF4CiAgMzU6ICAgODMg YzAgMDMgICAgICAgICAgICAgICAgYWRkICAgICQweDMsJWVheAogIDM4OiAgIDM4IGQwICAgICAg ICAgICAgICAgICAgIGNtcCAgICAlZGwsJWFsCiAgM2E6ICAgN2MgMDggICAgICAgICAgICAgICAg ICAgamwgICAgIDB4NDQKICAzYzogICA4NCBkMiAgICAgICAgICAgICAgICAgICB0ZXN0ICAgJWRs LCVkbAogIDNlOiAgIDBmICAgICAgICAgICAgICAgICAgICAgIC5ieXRlIDB4ZgogIDNmOiAgIDg1 ICAgICAgICAgICAgICAgICAgICAgIC5ieXRlIDB4ODUKClRoYW5rIHlvdSBmb3IgdGFraW5nIHRo ZSB0aW1lIHRvIHJlYWQgdGhpcyBlbWFpbCBhbmQgd2UgbG9vayBmb3J3YXJkIHRvIHdvcmtpbmcg d2l0aCB5b3UgZnVydGhlci4KCgoKCg== ------=ALIBOUNDARY_104631_7ffa9c290700_660a765b_3b99b9 Content-Type: application/octet-stream Content-Disposition: attachment; filename="=?UTF-8?B?cG9jLmM=?=" Content-Transfer-Encoding: base64 Ly8gYXV0b2dlbmVyYXRlZCBieSBzeXprYWxsZXIgKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUv c3l6a2FsbGVyKQoKI2RlZmluZSBfR05VX1NPVVJDRQoKI2luY2x1ZGUgPGFycGEvaW5ldC5oPgoj aW5jbHVkZSA8ZGlyZW50Lmg+CiNpbmNsdWRlIDxlbmRpYW4uaD4KI2luY2x1ZGUgPGVycm5vLmg+ CiNpbmNsdWRlIDxmY250bC5oPgojaW5jbHVkZSA8bmV0L2lmLmg+CiNpbmNsdWRlIDxuZXQvaWZf YXJwLmg+CiNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CiNpbmNsdWRlIDxzY2hlZC5oPgojaW5jbHVk ZSA8c2V0am1wLmg+CiNpbmNsdWRlIDxzaWduYWwuaD4KI2luY2x1ZGUgPHN0ZGFyZy5oPgojaW5j bHVkZSA8c3RkYm9vbC5oPgojaW5jbHVkZSA8c3RkZGVmLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4K I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5o PgojaW5jbHVkZSA8c3lzL2lvY3RsLmg+CiNpbmNsdWRlIDxzeXMvbW1hbi5oPgojaW5jbHVkZSA8 c3lzL21vdW50Lmg+CiNpbmNsdWRlIDxzeXMvcHJjdGwuaD4KI2luY2x1ZGUgPHN5cy9yZXNvdXJj ZS5oPgojaW5jbHVkZSA8c3lzL3NvY2tldC5oPgojaW5jbHVkZSA8c3lzL3N0YXQuaD4KI2luY2x1 ZGUgPHN5cy9zeXNjYWxsLmg+CiNpbmNsdWRlIDxzeXMvdGltZS5oPgojaW5jbHVkZSA8c3lzL3R5 cGVzLmg+CiNpbmNsdWRlIDxzeXMvdWlvLmg+CiNpbmNsdWRlIDxzeXMvd2FpdC5oPgojaW5jbHVk ZSA8dGltZS5oPgojaW5jbHVkZSA8dW5pc3RkLmg+CgojaW5jbHVkZSA8bGludXgvY2FwYWJpbGl0 eS5oPgojaW5jbHVkZSA8bGludXgvZ2VuZXRsaW5rLmg+CiNpbmNsdWRlIDxsaW51eC9pZl9hZGRy Lmg+CiNpbmNsdWRlIDxsaW51eC9pZl9ldGhlci5oPgojaW5jbHVkZSA8bGludXgvaWZfbGluay5o PgojaW5jbHVkZSA8bGludXgvaWZfdHVuLmg+CiNpbmNsdWRlIDxsaW51eC9pbjYuaD4KI2luY2x1 ZGUgPGxpbnV4L2lwLmg+CiNpbmNsdWRlIDxsaW51eC9sb29wLmg+CiNpbmNsdWRlIDxsaW51eC9u ZWlnaGJvdXIuaD4KI2luY2x1ZGUgPGxpbnV4L25ldC5oPgojaW5jbHVkZSA8bGludXgvbmV0bGlu ay5oPgojaW5jbHVkZSA8bGludXgvcnRuZXRsaW5rLmg+CiNpbmNsdWRlIDxsaW51eC90Y3AuaD4K I2luY2x1ZGUgPGxpbnV4L3ZldGguaD4KCiNpZm5kZWYgX19OUl9tZW1mZF9jcmVhdGUKI2RlZmlu ZSBfX05SX21lbWZkX2NyZWF0ZSAzMTkKI2VuZGlmCgpzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25n IHByb2NpZDsKCnN0YXRpYyB2b2lkIHNsZWVwX21zKHVpbnQ2NF90IG1zKQp7CiAgdXNsZWVwKG1z ICogMTAwMCk7Cn0KCnN0YXRpYyB1aW50NjRfdCBjdXJyZW50X3RpbWVfbXModm9pZCkKewogIHN0 cnVjdCB0aW1lc3BlYyB0czsKICBpZiAoY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICZ0 cykpCiAgICBleGl0KDEpOwogIHJldHVybiAodWludDY0X3QpdHMudHZfc2VjICogMTAwMCArICh1 aW50NjRfdCl0cy50dl9uc2VjIC8gMTAwMDAwMDsKfQoKc3RhdGljIGJvb2wgd3JpdGVfZmlsZShj b25zdCBjaGFyKiBmaWxlLCBjb25zdCBjaGFyKiB3aGF0LCAuLi4pCnsKICBjaGFyIGJ1ZlsxMDI0 XTsKICB2YV9saXN0IGFyZ3M7CiAgdmFfc3RhcnQoYXJncywgd2hhdCk7CiAgdnNucHJpbnRmKGJ1 Ziwgc2l6ZW9mKGJ1ZiksIHdoYXQsIGFyZ3MpOwogIHZhX2VuZChhcmdzKTsKICBidWZbc2l6ZW9m KGJ1ZikgLSAxXSA9IDA7CiAgaW50IGxlbiA9IHN0cmxlbihidWYpOwogIGludCBmZCA9IG9wZW4o ZmlsZSwgT19XUk9OTFkgfCBPX0NMT0VYRUMpOwogIGlmIChmZCA9PSAtMSkKICAgIHJldHVybiBm YWxzZTsKICBpZiAod3JpdGUoZmQsIGJ1ZiwgbGVuKSAhPSBsZW4pIHsKICAgIGludCBlcnIgPSBl cnJubzsKICAgIGNsb3NlKGZkKTsKICAgIGVycm5vID0gZXJyOwogICAgcmV0dXJuIGZhbHNlOwog IH0KICBjbG9zZShmZCk7CiAgcmV0dXJuIHRydWU7Cn0KCnN0cnVjdCBubG1zZyB7CiAgY2hhciog cG9zOwogIGludCBuZXN0aW5nOwogIHN0cnVjdCBubGF0dHIqIG5lc3RlZFs4XTsKICBjaGFyIGJ1 Zls0MDk2XTsKfTsKCnN0YXRpYyB2b2lkIG5ldGxpbmtfaW5pdChzdHJ1Y3Qgbmxtc2cqIG5sbXNn LCBpbnQgdHlwLCBpbnQgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lk KiBkYXRhLCBpbnQgc2l6ZSkKewogIG1lbXNldChubG1zZywgMCwgc2l6ZW9mKCpubG1zZykpOwog IHN0cnVjdCBubG1zZ2hkciogaGRyID0gKHN0cnVjdCBubG1zZ2hkciopbmxtc2ctPmJ1ZjsKICBo ZHItPm5sbXNnX3R5cGUgPSB0eXA7CiAgaGRyLT5ubG1zZ19mbGFncyA9IE5MTV9GX1JFUVVFU1Qg fCBOTE1fRl9BQ0sgfCBmbGFnczsKICBtZW1jcHkoaGRyICsgMSwgZGF0YSwgc2l6ZSk7CiAgbmxt c2ctPnBvcyA9IChjaGFyKikoaGRyICsgMSkgKyBOTE1TR19BTElHTihzaXplKTsKfQoKc3RhdGlj IHZvaWQgbmV0bGlua19hdHRyKHN0cnVjdCBubG1zZyogbmxtc2csIGludCB0eXAsIGNvbnN0IHZv aWQqIGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSkKewogIHN0cnVjdCBu bGF0dHIqIGF0dHIgPSAoc3RydWN0IG5sYXR0ciopbmxtc2ctPnBvczsKICBhdHRyLT5ubGFfbGVu ID0gc2l6ZW9mKCphdHRyKSArIHNpemU7CiAgYXR0ci0+bmxhX3R5cGUgPSB0eXA7CiAgaWYgKHNp emUgPiAwKQogICAgbWVtY3B5KGF0dHIgKyAxLCBkYXRhLCBzaXplKTsKICBubG1zZy0+cG9zICs9 IE5MTVNHX0FMSUdOKGF0dHItPm5sYV9sZW4pOwp9CgpzdGF0aWMgdm9pZCBuZXRsaW5rX25lc3Qo c3RydWN0IG5sbXNnKiBubG1zZywgaW50IHR5cCkKewogIHN0cnVjdCBubGF0dHIqIGF0dHIgPSAo c3RydWN0IG5sYXR0ciopbmxtc2ctPnBvczsKICBhdHRyLT5ubGFfdHlwZSA9IHR5cDsKICBubG1z Zy0+cG9zICs9IHNpemVvZigqYXR0cik7CiAgbmxtc2ctPm5lc3RlZFtubG1zZy0+bmVzdGluZysr XSA9IGF0dHI7Cn0KCnN0YXRpYyB2b2lkIG5ldGxpbmtfZG9uZShzdHJ1Y3Qgbmxtc2cqIG5sbXNn KQp7CiAgc3RydWN0IG5sYXR0ciogYXR0ciA9IG5sbXNnLT5uZXN0ZWRbLS1ubG1zZy0+bmVzdGlu Z107CiAgYXR0ci0+bmxhX2xlbiA9IG5sbXNnLT5wb3MgLSAoY2hhciopYXR0cjsKfQoKc3RhdGlj IGludCBuZXRsaW5rX3NlbmRfZXh0KHN0cnVjdCBubG1zZyogbmxtc2csIGludCBzb2NrLCB1aW50 MTZfdCByZXBseV90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiByZXBseV9s ZW4sIGJvb2wgZG9mYWlsKQp7CiAgaWYgKG5sbXNnLT5wb3MgPiBubG1zZy0+YnVmICsgc2l6ZW9m KG5sbXNnLT5idWYpIHx8IG5sbXNnLT5uZXN0aW5nKQogICAgZXhpdCgxKTsKICBzdHJ1Y3Qgbmxt c2doZHIqIGhkciA9IChzdHJ1Y3Qgbmxtc2doZHIqKW5sbXNnLT5idWY7CiAgaGRyLT5ubG1zZ19s ZW4gPSBubG1zZy0+cG9zIC0gbmxtc2ctPmJ1ZjsKICBzdHJ1Y3Qgc29ja2FkZHJfbmwgYWRkcjsK ICBtZW1zZXQoJmFkZHIsIDAsIHNpemVvZihhZGRyKSk7CiAgYWRkci5ubF9mYW1pbHkgPSBBRl9O RVRMSU5LOwogIHNzaXplX3QgbiA9IHNlbmR0byhzb2NrLCBubG1zZy0+YnVmLCBoZHItPm5sbXNn X2xlbiwgMCwKICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBzb2NrYWRkciopJmFkZHIsIHNp emVvZihhZGRyKSk7CiAgaWYgKG4gIT0gKHNzaXplX3QpaGRyLT5ubG1zZ19sZW4pIHsKICAgIGlm IChkb2ZhaWwpCiAgICAgIGV4aXQoMSk7CiAgICByZXR1cm4gLTE7CiAgfQogIG4gPSByZWN2KHNv Y2ssIG5sbXNnLT5idWYsIHNpemVvZihubG1zZy0+YnVmKSwgMCk7CiAgaWYgKHJlcGx5X2xlbikK ICAgICpyZXBseV9sZW4gPSAwOwogIGlmIChuIDwgMCkgewogICAgaWYgKGRvZmFpbCkKICAgICAg ZXhpdCgxKTsKICAgIHJldHVybiAtMTsKICB9CiAgaWYgKG4gPCAoc3NpemVfdClzaXplb2Yoc3Ry dWN0IG5sbXNnaGRyKSkgewogICAgZXJybm8gPSBFSU5WQUw7CiAgICBpZiAoZG9mYWlsKQogICAg ICBleGl0KDEpOwogICAgcmV0dXJuIC0xOwogIH0KICBpZiAoaGRyLT5ubG1zZ190eXBlID09IE5M TVNHX0RPTkUpCiAgICByZXR1cm4gMDsKICBpZiAocmVwbHlfbGVuICYmIGhkci0+bmxtc2dfdHlw ZSA9PSByZXBseV90eXBlKSB7CiAgICAqcmVwbHlfbGVuID0gbjsKICAgIHJldHVybiAwOwogIH0K ICBpZiAobiA8IChzc2l6ZV90KShzaXplb2Yoc3RydWN0IG5sbXNnaGRyKSArIHNpemVvZihzdHJ1 Y3Qgbmxtc2dlcnIpKSkgewogICAgZXJybm8gPSBFSU5WQUw7CiAgICBpZiAoZG9mYWlsKQogICAg ICBleGl0KDEpOwogICAgcmV0dXJuIC0xOwogIH0KICBpZiAoaGRyLT5ubG1zZ190eXBlICE9IE5M TVNHX0VSUk9SKSB7CiAgICBlcnJubyA9IEVJTlZBTDsKICAgIGlmIChkb2ZhaWwpCiAgICAgIGV4 aXQoMSk7CiAgICByZXR1cm4gLTE7CiAgfQogIGVycm5vID0gLSgoc3RydWN0IG5sbXNnZXJyKiko aGRyICsgMSkpLT5lcnJvcjsKICByZXR1cm4gLWVycm5vOwp9CgpzdGF0aWMgaW50IG5ldGxpbmtf c2VuZChzdHJ1Y3Qgbmxtc2cqIG5sbXNnLCBpbnQgc29jaykKewogIHJldHVybiBuZXRsaW5rX3Nl bmRfZXh0KG5sbXNnLCBzb2NrLCAwLCBOVUxMLCB0cnVlKTsKfQoKc3RhdGljIGludCBuZXRsaW5r X3F1ZXJ5X2ZhbWlseV9pZChzdHJ1Y3Qgbmxtc2cqIG5sbXNnLCBpbnQgc29jaywKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmYW1pbHlfbmFtZSwgYm9vbCBk b2ZhaWwpCnsKICBzdHJ1Y3QgZ2VubG1zZ2hkciBnZW5saGRyOwogIG1lbXNldCgmZ2VubGhkciwg MCwgc2l6ZW9mKGdlbmxoZHIpKTsKICBnZW5saGRyLmNtZCA9IENUUkxfQ01EX0dFVEZBTUlMWTsK ICBuZXRsaW5rX2luaXQobmxtc2csIEdFTkxfSURfQ1RSTCwgMCwgJmdlbmxoZHIsIHNpemVvZihn ZW5saGRyKSk7CiAgbmV0bGlua19hdHRyKG5sbXNnLCBDVFJMX0FUVFJfRkFNSUxZX05BTUUsIGZh bWlseV9uYW1lLAogICAgICAgICAgICAgICBzdHJubGVuKGZhbWlseV9uYW1lLCBHRU5MX05BTVNJ WiAtIDEpICsgMSk7CiAgaW50IG4gPSAwOwogIGludCBlcnIgPSBuZXRsaW5rX3NlbmRfZXh0KG5s bXNnLCBzb2NrLCBHRU5MX0lEX0NUUkwsICZuLCBkb2ZhaWwpOwogIGlmIChlcnIgPCAwKSB7CiAg ICByZXR1cm4gLTE7CiAgfQogIHVpbnQxNl90IGlkID0gMDsKICBzdHJ1Y3QgbmxhdHRyKiBhdHRy ID0gKHN0cnVjdCBubGF0dHIqKShubG1zZy0+YnVmICsgTkxNU0dfSERSTEVOICsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTE1TR19BTElHTihzaXplb2YoZ2VubGhk cikpKTsKICBmb3IgKDsgKGNoYXIqKWF0dHIgPCBubG1zZy0+YnVmICsgbjsKICAgICAgIGF0dHIg PSAoc3RydWN0IG5sYXR0ciopKChjaGFyKilhdHRyICsgTkxNU0dfQUxJR04oYXR0ci0+bmxhX2xl bikpKSB7CiAgICBpZiAoYXR0ci0+bmxhX3R5cGUgPT0gQ1RSTF9BVFRSX0ZBTUlMWV9JRCkgewog ICAgICBpZCA9ICoodWludDE2X3QqKShhdHRyICsgMSk7CiAgICAgIGJyZWFrOwogICAgfQogIH0K ICBpZiAoIWlkKSB7CiAgICBlcnJubyA9IEVJTlZBTDsKICAgIHJldHVybiAtMTsKICB9CiAgcmVj dihzb2NrLCBubG1zZy0+YnVmLCBzaXplb2Yobmxtc2ctPmJ1ZiksIDApOwogIHJldHVybiBpZDsK fQoKc3RhdGljIGludCBuZXRsaW5rX25leHRfbXNnKHN0cnVjdCBubG1zZyogbmxtc2csIHVuc2ln bmVkIGludCBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg dG90YWxfbGVuKQp7CiAgc3RydWN0IG5sbXNnaGRyKiBoZHIgPSAoc3RydWN0IG5sbXNnaGRyKiko bmxtc2ctPmJ1ZiArIG9mZnNldCk7CiAgaWYgKG9mZnNldCA9PSB0b3RhbF9sZW4gfHwgb2Zmc2V0 ICsgaGRyLT5ubG1zZ19sZW4gPiB0b3RhbF9sZW4pCiAgICByZXR1cm4gLTE7CiAgcmV0dXJuIGhk ci0+bmxtc2dfbGVuOwp9CgpzdGF0aWMgdm9pZCBuZXRsaW5rX2FkZF9kZXZpY2VfaW1wbChzdHJ1 Y3Qgbmxtc2cqIG5sbXNnLCBjb25zdCBjaGFyKiB0eXBlLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lLCBib29sIHVwKQp7CiAgc3RydWN0IGlmaW5m b21zZyBoZHI7CiAgbWVtc2V0KCZoZHIsIDAsIHNpemVvZihoZHIpKTsKICBpZiAodXApCiAgICBo ZHIuaWZpX2ZsYWdzID0gaGRyLmlmaV9jaGFuZ2UgPSBJRkZfVVA7CiAgbmV0bGlua19pbml0KG5s bXNnLCBSVE1fTkVXTElOSywgTkxNX0ZfRVhDTCB8IE5MTV9GX0NSRUFURSwgJmhkciwKICAgICAg ICAgICAgICAgc2l6ZW9mKGhkcikpOwogIGlmIChuYW1lKQogICAgbmV0bGlua19hdHRyKG5sbXNn LCBJRkxBX0lGTkFNRSwgbmFtZSwgc3RybGVuKG5hbWUpKTsKICBuZXRsaW5rX25lc3Qobmxtc2cs IElGTEFfTElOS0lORk8pOwogIG5ldGxpbmtfYXR0cihubG1zZywgSUZMQV9JTkZPX0tJTkQsIHR5 cGUsIHN0cmxlbih0eXBlKSk7Cn0KCnN0YXRpYyB2b2lkIG5ldGxpbmtfYWRkX2RldmljZShzdHJ1 Y3Qgbmxtc2cqIG5sbXNnLCBpbnQgc29jaywgY29uc3QgY2hhciogdHlwZSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUpCnsKICBuZXRsaW5rX2FkZF9kZXZp Y2VfaW1wbChubG1zZywgdHlwZSwgbmFtZSwgZmFsc2UpOwogIG5ldGxpbmtfZG9uZShubG1zZyk7 CiAgaW50IGVyciA9IG5ldGxpbmtfc2VuZChubG1zZywgc29jayk7CiAgaWYgKGVyciA8IDApIHsK ICB9Cn0KCnN0YXRpYyB2b2lkIG5ldGxpbmtfYWRkX3ZldGgoc3RydWN0IG5sbXNnKiBubG1zZywg aW50IHNvY2ssIGNvbnN0IGNoYXIqIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgY2hhciogcGVlcikKewogIG5ldGxpbmtfYWRkX2RldmljZV9pbXBsKG5sbXNnLCAidmV0 aCIsIG5hbWUsIGZhbHNlKTsKICBuZXRsaW5rX25lc3Qobmxtc2csIElGTEFfSU5GT19EQVRBKTsK ICBuZXRsaW5rX25lc3Qobmxtc2csIFZFVEhfSU5GT19QRUVSKTsKICBubG1zZy0+cG9zICs9IHNp emVvZihzdHJ1Y3QgaWZpbmZvbXNnKTsKICBuZXRsaW5rX2F0dHIobmxtc2csIElGTEFfSUZOQU1F LCBwZWVyLCBzdHJsZW4ocGVlcikpOwogIG5ldGxpbmtfZG9uZShubG1zZyk7CiAgbmV0bGlua19k b25lKG5sbXNnKTsKICBuZXRsaW5rX2RvbmUobmxtc2cpOwogIGludCBlcnIgPSBuZXRsaW5rX3Nl bmQobmxtc2csIHNvY2spOwogIGlmIChlcnIgPCAwKSB7CiAgfQp9CgpzdGF0aWMgdm9pZCBuZXRs aW5rX2FkZF94ZnJtKHN0cnVjdCBubG1zZyogbmxtc2csIGludCBzb2NrLCBjb25zdCBjaGFyKiBu YW1lKQp7CiAgbmV0bGlua19hZGRfZGV2aWNlX2ltcGwobmxtc2csICJ4ZnJtIiwgbmFtZSwgdHJ1 ZSk7CiAgbmV0bGlua19uZXN0KG5sbXNnLCBJRkxBX0lORk9fREFUQSk7CiAgaW50IGlmX2lkID0g MTsKICBuZXRsaW5rX2F0dHIobmxtc2csIDIsICZpZl9pZCwgc2l6ZW9mKGlmX2lkKSk7CiAgbmV0 bGlua19kb25lKG5sbXNnKTsKICBuZXRsaW5rX2RvbmUobmxtc2cpOwogIGludCBlcnIgPSBuZXRs aW5rX3NlbmQobmxtc2csIHNvY2spOwogIGlmIChlcnIgPCAwKSB7CiAgfQp9CgpzdGF0aWMgdm9p ZCBuZXRsaW5rX2FkZF9oc3Ioc3RydWN0IG5sbXNnKiBubG1zZywgaW50IHNvY2ssIGNvbnN0IGNo YXIqIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzbGF2ZTEs IGNvbnN0IGNoYXIqIHNsYXZlMikKewogIG5ldGxpbmtfYWRkX2RldmljZV9pbXBsKG5sbXNnLCAi aHNyIiwgbmFtZSwgZmFsc2UpOwogIG5ldGxpbmtfbmVzdChubG1zZywgSUZMQV9JTkZPX0RBVEEp OwogIGludCBpZmluZGV4MSA9IGlmX25hbWV0b2luZGV4KHNsYXZlMSk7CiAgbmV0bGlua19hdHRy KG5sbXNnLCBJRkxBX0hTUl9TTEFWRTEsICZpZmluZGV4MSwgc2l6ZW9mKGlmaW5kZXgxKSk7CiAg aW50IGlmaW5kZXgyID0gaWZfbmFtZXRvaW5kZXgoc2xhdmUyKTsKICBuZXRsaW5rX2F0dHIobmxt c2csIElGTEFfSFNSX1NMQVZFMiwgJmlmaW5kZXgyLCBzaXplb2YoaWZpbmRleDIpKTsKICBuZXRs aW5rX2RvbmUobmxtc2cpOwogIG5ldGxpbmtfZG9uZShubG1zZyk7CiAgaW50IGVyciA9IG5ldGxp bmtfc2VuZChubG1zZywgc29jayk7CiAgaWYgKGVyciA8IDApIHsKICB9Cn0KCnN0YXRpYyB2b2lk IG5ldGxpbmtfYWRkX2xpbmtlZChzdHJ1Y3Qgbmxtc2cqIG5sbXNnLCBpbnQgc29jaywgY29uc3Qg Y2hhciogdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5h bWUsIGNvbnN0IGNoYXIqIGxpbmspCnsKICBuZXRsaW5rX2FkZF9kZXZpY2VfaW1wbChubG1zZywg dHlwZSwgbmFtZSwgZmFsc2UpOwogIG5ldGxpbmtfZG9uZShubG1zZyk7CiAgaW50IGlmaW5kZXgg PSBpZl9uYW1ldG9pbmRleChsaW5rKTsKICBuZXRsaW5rX2F0dHIobmxtc2csIElGTEFfTElOSywg JmlmaW5kZXgsIHNpemVvZihpZmluZGV4KSk7CiAgaW50IGVyciA9IG5ldGxpbmtfc2VuZChubG1z Zywgc29jayk7CiAgaWYgKGVyciA8IDApIHsKICB9Cn0KCnN0YXRpYyB2b2lkIG5ldGxpbmtfYWRk X3ZsYW4oc3RydWN0IG5sbXNnKiBubG1zZywgaW50IHNvY2ssIGNvbnN0IGNoYXIqIG5hbWUsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbGluaywgdWludDE2X3QgaWQs IHVpbnQxNl90IHByb3RvKQp7CiAgbmV0bGlua19hZGRfZGV2aWNlX2ltcGwobmxtc2csICJ2bGFu IiwgbmFtZSwgZmFsc2UpOwogIG5ldGxpbmtfbmVzdChubG1zZywgSUZMQV9JTkZPX0RBVEEpOwog IG5ldGxpbmtfYXR0cihubG1zZywgSUZMQV9WTEFOX0lELCAmaWQsIHNpemVvZihpZCkpOwogIG5l dGxpbmtfYXR0cihubG1zZywgSUZMQV9WTEFOX1BST1RPQ09MLCAmcHJvdG8sIHNpemVvZihwcm90 bykpOwogIG5ldGxpbmtfZG9uZShubG1zZyk7CiAgbmV0bGlua19kb25lKG5sbXNnKTsKICBpbnQg aWZpbmRleCA9IGlmX25hbWV0b2luZGV4KGxpbmspOwogIG5ldGxpbmtfYXR0cihubG1zZywgSUZM QV9MSU5LLCAmaWZpbmRleCwgc2l6ZW9mKGlmaW5kZXgpKTsKICBpbnQgZXJyID0gbmV0bGlua19z ZW5kKG5sbXNnLCBzb2NrKTsKICBpZiAoZXJyIDwgMCkgewogIH0KfQoKc3RhdGljIHZvaWQgbmV0 bGlua19hZGRfbWFjdmxhbihzdHJ1Y3Qgbmxtc2cqIG5sbXNnLCBpbnQgc29jaywgY29uc3QgY2hh ciogbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBsaW5r KQp7CiAgbmV0bGlua19hZGRfZGV2aWNlX2ltcGwobmxtc2csICJtYWN2bGFuIiwgbmFtZSwgZmFs c2UpOwogIG5ldGxpbmtfbmVzdChubG1zZywgSUZMQV9JTkZPX0RBVEEpOwogIHVpbnQzMl90IG1v ZGUgPSBNQUNWTEFOX01PREVfQlJJREdFOwogIG5ldGxpbmtfYXR0cihubG1zZywgSUZMQV9NQUNW TEFOX01PREUsICZtb2RlLCBzaXplb2YobW9kZSkpOwogIG5ldGxpbmtfZG9uZShubG1zZyk7CiAg bmV0bGlua19kb25lKG5sbXNnKTsKICBpbnQgaWZpbmRleCA9IGlmX25hbWV0b2luZGV4KGxpbmsp OwogIG5ldGxpbmtfYXR0cihubG1zZywgSUZMQV9MSU5LLCAmaWZpbmRleCwgc2l6ZW9mKGlmaW5k ZXgpKTsKICBpbnQgZXJyID0gbmV0bGlua19zZW5kKG5sbXNnLCBzb2NrKTsKICBpZiAoZXJyIDwg MCkgewogIH0KfQoKc3RhdGljIHZvaWQgbmV0bGlua19hZGRfZ2VuZXZlKHN0cnVjdCBubG1zZyog bmxtc2csIGludCBzb2NrLCBjb25zdCBjaGFyKiBuYW1lLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludDMyX3Qgdm5pLCBzdHJ1Y3QgaW5fYWRkciogYWRkcjQsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW42X2FkZHIqIGFkZHI2KQp7CiAgbmV0bGlua19h ZGRfZGV2aWNlX2ltcGwobmxtc2csICJnZW5ldmUiLCBuYW1lLCBmYWxzZSk7CiAgbmV0bGlua19u ZXN0KG5sbXNnLCBJRkxBX0lORk9fREFUQSk7CiAgbmV0bGlua19hdHRyKG5sbXNnLCBJRkxBX0dF TkVWRV9JRCwgJnZuaSwgc2l6ZW9mKHZuaSkpOwogIGlmIChhZGRyNCkKICAgIG5ldGxpbmtfYXR0 cihubG1zZywgSUZMQV9HRU5FVkVfUkVNT1RFLCBhZGRyNCwgc2l6ZW9mKCphZGRyNCkpOwogIGlm IChhZGRyNikKICAgIG5ldGxpbmtfYXR0cihubG1zZywgSUZMQV9HRU5FVkVfUkVNT1RFNiwgYWRk cjYsIHNpemVvZigqYWRkcjYpKTsKICBuZXRsaW5rX2RvbmUobmxtc2cpOwogIG5ldGxpbmtfZG9u ZShubG1zZyk7CiAgaW50IGVyciA9IG5ldGxpbmtfc2VuZChubG1zZywgc29jayk7CiAgaWYgKGVy ciA8IDApIHsKICB9Cn0KCiNkZWZpbmUgSUZMQV9JUFZMQU5fRkxBR1MgMgojZGVmaW5lIElQVkxB Tl9NT0RFX0wzUyAyCiN1bmRlZiBJUFZMQU5fRl9WRVBBCiNkZWZpbmUgSVBWTEFOX0ZfVkVQQSAy CgpzdGF0aWMgdm9pZCBuZXRsaW5rX2FkZF9pcHZsYW4oc3RydWN0IG5sbXNnKiBubG1zZywgaW50 IHNvY2ssIGNvbnN0IGNoYXIqIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBjaGFyKiBsaW5rLCB1aW50MTZfdCBtb2RlLCB1aW50MTZfdCBmbGFncykKewogIG5ldGxp bmtfYWRkX2RldmljZV9pbXBsKG5sbXNnLCAiaXB2bGFuIiwgbmFtZSwgZmFsc2UpOwogIG5ldGxp bmtfbmVzdChubG1zZywgSUZMQV9JTkZPX0RBVEEpOwogIG5ldGxpbmtfYXR0cihubG1zZywgSUZM QV9JUFZMQU5fTU9ERSwgJm1vZGUsIHNpemVvZihtb2RlKSk7CiAgbmV0bGlua19hdHRyKG5sbXNn LCBJRkxBX0lQVkxBTl9GTEFHUywgJmZsYWdzLCBzaXplb2YoZmxhZ3MpKTsKICBuZXRsaW5rX2Rv bmUobmxtc2cpOwogIG5ldGxpbmtfZG9uZShubG1zZyk7CiAgaW50IGlmaW5kZXggPSBpZl9uYW1l dG9pbmRleChsaW5rKTsKICBuZXRsaW5rX2F0dHIobmxtc2csIElGTEFfTElOSywgJmlmaW5kZXgs IHNpemVvZihpZmluZGV4KSk7CiAgaW50IGVyciA9IG5ldGxpbmtfc2VuZChubG1zZywgc29jayk7 CiAgaWYgKGVyciA8IDApIHsKICB9Cn0KCnN0YXRpYyB2b2lkIG5ldGxpbmtfZGV2aWNlX2NoYW5n ZShzdHJ1Y3Qgbmxtc2cqIG5sbXNnLCBpbnQgc29jaywKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUsIGJvb2wgdXAsIGNvbnN0IGNoYXIqIG1hc3RlciwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQqIG1hYywgaW50IG1h Y3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuZXdf bmFtZSkKewogIHN0cnVjdCBpZmluZm9tc2cgaGRyOwogIG1lbXNldCgmaGRyLCAwLCBzaXplb2Yo aGRyKSk7CiAgaWYgKHVwKQogICAgaGRyLmlmaV9mbGFncyA9IGhkci5pZmlfY2hhbmdlID0gSUZG X1VQOwogIGhkci5pZmlfaW5kZXggPSBpZl9uYW1ldG9pbmRleChuYW1lKTsKICBuZXRsaW5rX2lu aXQobmxtc2csIFJUTV9ORVdMSU5LLCAwLCAmaGRyLCBzaXplb2YoaGRyKSk7CiAgaWYgKG5ld19u YW1lKQogICAgbmV0bGlua19hdHRyKG5sbXNnLCBJRkxBX0lGTkFNRSwgbmV3X25hbWUsIHN0cmxl bihuZXdfbmFtZSkpOwogIGlmIChtYXN0ZXIpIHsKICAgIGludCBpZmluZGV4ID0gaWZfbmFtZXRv aW5kZXgobWFzdGVyKTsKICAgIG5ldGxpbmtfYXR0cihubG1zZywgSUZMQV9NQVNURVIsICZpZmlu ZGV4LCBzaXplb2YoaWZpbmRleCkpOwogIH0KICBpZiAobWFjc2l6ZSkKICAgIG5ldGxpbmtfYXR0 cihubG1zZywgSUZMQV9BRERSRVNTLCBtYWMsIG1hY3NpemUpOwogIGludCBlcnIgPSBuZXRsaW5r X3NlbmQobmxtc2csIHNvY2spOwogIGlmIChlcnIgPCAwKSB7CiAgfQp9CgpzdGF0aWMgaW50IG5l dGxpbmtfYWRkX2FkZHIoc3RydWN0IG5sbXNnKiBubG1zZywgaW50IHNvY2ssIGNvbnN0IGNoYXIq IGRldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQqIGFkZHIsIGludCBh ZGRyc2l6ZSkKewogIHN0cnVjdCBpZmFkZHJtc2cgaGRyOwogIG1lbXNldCgmaGRyLCAwLCBzaXpl b2YoaGRyKSk7CiAgaGRyLmlmYV9mYW1pbHkgPSBhZGRyc2l6ZSA9PSA0ID8gQUZfSU5FVCA6IEFG X0lORVQ2OwogIGhkci5pZmFfcHJlZml4bGVuID0gYWRkcnNpemUgPT0gNCA/IDI0IDogMTIwOwog IGhkci5pZmFfc2NvcGUgPSBSVF9TQ09QRV9VTklWRVJTRTsKICBoZHIuaWZhX2luZGV4ID0gaWZf bmFtZXRvaW5kZXgoZGV2KTsKICBuZXRsaW5rX2luaXQobmxtc2csIFJUTV9ORVdBRERSLCBOTE1f Rl9DUkVBVEUgfCBOTE1fRl9SRVBMQUNFLCAmaGRyLAogICAgICAgICAgICAgICBzaXplb2YoaGRy KSk7CiAgbmV0bGlua19hdHRyKG5sbXNnLCBJRkFfTE9DQUwsIGFkZHIsIGFkZHJzaXplKTsKICBu ZXRsaW5rX2F0dHIobmxtc2csIElGQV9BRERSRVNTLCBhZGRyLCBhZGRyc2l6ZSk7CiAgcmV0dXJu IG5ldGxpbmtfc2VuZChubG1zZywgc29jayk7Cn0KCnN0YXRpYyB2b2lkIG5ldGxpbmtfYWRkX2Fk ZHI0KHN0cnVjdCBubG1zZyogbmxtc2csIGludCBzb2NrLCBjb25zdCBjaGFyKiBkZXYsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFkZHIpCnsKICBzdHJ1Y3QgaW5f YWRkciBpbl9hZGRyOwogIGluZXRfcHRvbihBRl9JTkVULCBhZGRyLCAmaW5fYWRkcik7CiAgaW50 IGVyciA9IG5ldGxpbmtfYWRkX2FkZHIobmxtc2csIHNvY2ssIGRldiwgJmluX2FkZHIsIHNpemVv Zihpbl9hZGRyKSk7CiAgaWYgKGVyciA8IDApIHsKICB9Cn0KCnN0YXRpYyB2b2lkIG5ldGxpbmtf YWRkX2FkZHI2KHN0cnVjdCBubG1zZyogbmxtc2csIGludCBzb2NrLCBjb25zdCBjaGFyKiBkZXYs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFkZHIpCnsKICBzdHJ1 Y3QgaW42X2FkZHIgaW42X2FkZHI7CiAgaW5ldF9wdG9uKEFGX0lORVQ2LCBhZGRyLCAmaW42X2Fk ZHIpOwogIGludCBlcnIgPSBuZXRsaW5rX2FkZF9hZGRyKG5sbXNnLCBzb2NrLCBkZXYsICZpbjZf YWRkciwgc2l6ZW9mKGluNl9hZGRyKSk7CiAgaWYgKGVyciA8IDApIHsKICB9Cn0KCnN0YXRpYyB2 b2lkIG5ldGxpbmtfYWRkX25laWdoKHN0cnVjdCBubG1zZyogbmxtc2csIGludCBzb2NrLCBjb25z dCBjaGFyKiBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkKiBh ZGRyLCBpbnQgYWRkcnNpemUsIGNvbnN0IHZvaWQqIG1hYywKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IG1hY3NpemUpCnsKICBzdHJ1Y3QgbmRtc2cgaGRyOwogIG1lbXNldCgmaGRy LCAwLCBzaXplb2YoaGRyKSk7CiAgaGRyLm5kbV9mYW1pbHkgPSBhZGRyc2l6ZSA9PSA0ID8gQUZf SU5FVCA6IEFGX0lORVQ2OwogIGhkci5uZG1faWZpbmRleCA9IGlmX25hbWV0b2luZGV4KG5hbWUp OwogIGhkci5uZG1fc3RhdGUgPSBOVURfUEVSTUFORU5UOwogIG5ldGxpbmtfaW5pdChubG1zZywg UlRNX05FV05FSUdILCBOTE1fRl9FWENMIHwgTkxNX0ZfQ1JFQVRFLCAmaGRyLAogICAgICAgICAg ICAgICBzaXplb2YoaGRyKSk7CiAgbmV0bGlua19hdHRyKG5sbXNnLCBOREFfRFNULCBhZGRyLCBh ZGRyc2l6ZSk7CiAgbmV0bGlua19hdHRyKG5sbXNnLCBOREFfTExBRERSLCBtYWMsIG1hY3NpemUp OwogIGludCBlcnIgPSBuZXRsaW5rX3NlbmQobmxtc2csIHNvY2spOwogIGlmIChlcnIgPCAwKSB7 CiAgfQp9CgpzdGF0aWMgc3RydWN0IG5sbXNnIG5sbXNnOwoKc3RhdGljIGludCB0dW5mZCA9IC0x OwoKI2RlZmluZSBUVU5fSUZBQ0UgInN5el90dW4iCiNkZWZpbmUgTE9DQUxfTUFDIDB4YWFhYWFh YWFhYWFhCiNkZWZpbmUgUkVNT1RFX01BQyAweGFhYWFhYWFhYWFiYgojZGVmaW5lIExPQ0FMX0lQ VjQgIjE3Mi4yMC4yMC4xNzAiCiNkZWZpbmUgUkVNT1RFX0lQVjQgIjE3Mi4yMC4yMC4xODciCiNk ZWZpbmUgTE9DQUxfSVBWNiAiZmU4MDo6YWEiCiNkZWZpbmUgUkVNT1RFX0lQVjYgImZlODA6OmJi IgoKI2RlZmluZSBJRkZfTkFQSSAweDAwMTAKCnN0YXRpYyB2b2lkIGluaXRpYWxpemVfdHVuKHZv aWQpCnsKICB0dW5mZCA9IG9wZW4oIi9kZXYvbmV0L3R1biIsIE9fUkRXUiB8IE9fTk9OQkxPQ0sp OwogIGlmICh0dW5mZCA9PSAtMSkgewogICAgcHJpbnRmKCJ0dW46IGNhbid0IG9wZW4gL2Rldi9u ZXQvdHVuOiBwbGVhc2UgZW5hYmxlIENPTkZJR19UVU49eVxuIik7CiAgICBwcmludGYoIm90aGVy d2lzZSBmdXp6aW5nIG9yIHJlcHJvZHVjaW5nIG1pZ2h0IG5vdCB3b3JrIGFzIGludGVuZGVkXG4i KTsKICAgIHJldHVybjsKICB9CiAgY29uc3QgaW50IGtUdW5GZCA9IDIwMDsKICBpZiAoZHVwMih0 dW5mZCwga1R1bkZkKSA8IDApCiAgICBleGl0KDEpOwogIGNsb3NlKHR1bmZkKTsKICB0dW5mZCA9 IGtUdW5GZDsKICBzdHJ1Y3QgaWZyZXEgaWZyOwogIG1lbXNldCgmaWZyLCAwLCBzaXplb2YoaWZy KSk7CiAgc3RybmNweShpZnIuaWZyX25hbWUsIFRVTl9JRkFDRSwgSUZOQU1TSVopOwogIGlmci5p ZnJfZmxhZ3MgPSBJRkZfVEFQIHwgSUZGX05PX1BJOwogIGlmIChpb2N0bCh0dW5mZCwgVFVOU0VU SUZGLCAodm9pZCopJmlmcikgPCAwKSB7CiAgICBleGl0KDEpOwogIH0KICBjaGFyIHN5c2N0bFs2 NF07CiAgc3ByaW50ZihzeXNjdGwsICIvcHJvYy9zeXMvbmV0L2lwdjYvY29uZi8lcy9hY2NlcHRf ZGFkIiwgVFVOX0lGQUNFKTsKICB3cml0ZV9maWxlKHN5c2N0bCwgIjAiKTsKICBzcHJpbnRmKHN5 c2N0bCwgIi9wcm9jL3N5cy9uZXQvaXB2Ni9jb25mLyVzL3JvdXRlcl9zb2xpY2l0YXRpb25zIiwg VFVOX0lGQUNFKTsKICB3cml0ZV9maWxlKHN5c2N0bCwgIjAiKTsKICBpbnQgc29jayA9IHNvY2tl dChBRl9ORVRMSU5LLCBTT0NLX1JBVywgTkVUTElOS19ST1VURSk7CiAgaWYgKHNvY2sgPT0gLTEp CiAgICBleGl0KDEpOwogIG5ldGxpbmtfYWRkX2FkZHI0KCZubG1zZywgc29jaywgVFVOX0lGQUNF LCBMT0NBTF9JUFY0KTsKICBuZXRsaW5rX2FkZF9hZGRyNigmbmxtc2csIHNvY2ssIFRVTl9JRkFD RSwgTE9DQUxfSVBWNik7CiAgdWludDY0X3QgbWFjYWRkciA9IFJFTU9URV9NQUM7CiAgc3RydWN0 IGluX2FkZHIgaW5fYWRkcjsKICBpbmV0X3B0b24oQUZfSU5FVCwgUkVNT1RFX0lQVjQsICZpbl9h ZGRyKTsKICBuZXRsaW5rX2FkZF9uZWlnaCgmbmxtc2csIHNvY2ssIFRVTl9JRkFDRSwgJmluX2Fk ZHIsIHNpemVvZihpbl9hZGRyKSwKICAgICAgICAgICAgICAgICAgICAmbWFjYWRkciwgRVRIX0FM RU4pOwogIHN0cnVjdCBpbjZfYWRkciBpbjZfYWRkcjsKICBpbmV0X3B0b24oQUZfSU5FVDYsIFJF TU9URV9JUFY2LCAmaW42X2FkZHIpOwogIG5ldGxpbmtfYWRkX25laWdoKCZubG1zZywgc29jaywg VFVOX0lGQUNFLCAmaW42X2FkZHIsIHNpemVvZihpbjZfYWRkciksCiAgICAgICAgICAgICAgICAg ICAgJm1hY2FkZHIsIEVUSF9BTEVOKTsKICBtYWNhZGRyID0gTE9DQUxfTUFDOwogIG5ldGxpbmtf ZGV2aWNlX2NoYW5nZSgmbmxtc2csIHNvY2ssIFRVTl9JRkFDRSwgdHJ1ZSwgMCwgJm1hY2FkZHIs IEVUSF9BTEVOLAogICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKICBjbG9zZShzb2NrKTsK fQoKI2RlZmluZSBERVZMSU5LX0ZBTUlMWV9OQU1FICJkZXZsaW5rIgoKI2RlZmluZSBERVZMSU5L X0NNRF9QT1JUX0dFVCA1CiNkZWZpbmUgREVWTElOS19BVFRSX0JVU19OQU1FIDEKI2RlZmluZSBE RVZMSU5LX0FUVFJfREVWX05BTUUgMgojZGVmaW5lIERFVkxJTktfQVRUUl9ORVRERVZfTkFNRSA3 CgpzdGF0aWMgc3RydWN0IG5sbXNnIG5sbXNnMjsKCnN0YXRpYyB2b2lkIGluaXRpYWxpemVfZGV2 bGlua19wb3J0cyhjb25zdCBjaGFyKiBidXNfbmFtZSwgY29uc3QgY2hhciogZGV2X25hbWUsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuZXRkZXZfcHJl Zml4KQp7CiAgc3RydWN0IGdlbmxtc2doZHIgZ2VubGhkcjsKICBpbnQgbGVuLCB0b3RhbF9sZW4s IGlkLCBlcnIsIG9mZnNldDsKICB1aW50MTZfdCBuZXRkZXZfaW5kZXg7CiAgaW50IHNvY2sgPSBz b2NrZXQoQUZfTkVUTElOSywgU09DS19SQVcsIE5FVExJTktfR0VORVJJQyk7CiAgaWYgKHNvY2sg PT0gLTEpCiAgICBleGl0KDEpOwogIGludCBydHNvY2sgPSBzb2NrZXQoQUZfTkVUTElOSywgU09D S19SQVcsIE5FVExJTktfUk9VVEUpOwogIGlmIChydHNvY2sgPT0gLTEpCiAgICBleGl0KDEpOwog IGlkID0gbmV0bGlua19xdWVyeV9mYW1pbHlfaWQoJm5sbXNnLCBzb2NrLCBERVZMSU5LX0ZBTUlM WV9OQU1FLCB0cnVlKTsKICBpZiAoaWQgPT0gLTEpCiAgICBnb3RvIGVycm9yOwogIG1lbXNldCgm Z2VubGhkciwgMCwgc2l6ZW9mKGdlbmxoZHIpKTsKICBnZW5saGRyLmNtZCA9IERFVkxJTktfQ01E X1BPUlRfR0VUOwogIG5ldGxpbmtfaW5pdCgmbmxtc2csIGlkLCBOTE1fRl9EVU1QLCAmZ2VubGhk ciwgc2l6ZW9mKGdlbmxoZHIpKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBERVZMSU5LX0FUVFJf QlVTX05BTUUsIGJ1c19uYW1lLCBzdHJsZW4oYnVzX25hbWUpICsgMSk7CiAgbmV0bGlua19hdHRy KCZubG1zZywgREVWTElOS19BVFRSX0RFVl9OQU1FLCBkZXZfbmFtZSwgc3RybGVuKGRldl9uYW1l KSArIDEpOwogIGVyciA9IG5ldGxpbmtfc2VuZF9leHQoJm5sbXNnLCBzb2NrLCBpZCwgJnRvdGFs X2xlbiwgdHJ1ZSk7CiAgaWYgKGVyciA8IDApIHsKICAgIGdvdG8gZXJyb3I7CiAgfQogIG9mZnNl dCA9IDA7CiAgbmV0ZGV2X2luZGV4ID0gMDsKICB3aGlsZSAoKGxlbiA9IG5ldGxpbmtfbmV4dF9t c2coJm5sbXNnLCBvZmZzZXQsIHRvdGFsX2xlbikpICE9IC0xKSB7CiAgICBzdHJ1Y3QgbmxhdHRy KiBhdHRyID0gKHN0cnVjdCBubGF0dHIqKShubG1zZy5idWYgKyBvZmZzZXQgKyBOTE1TR19IRFJM RU4gKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkxNU0dfQUxJ R04oc2l6ZW9mKGdlbmxoZHIpKSk7CiAgICBmb3IgKDsgKGNoYXIqKWF0dHIgPCBubG1zZy5idWYg KyBvZmZzZXQgKyBsZW47CiAgICAgICAgIGF0dHIgPSAoc3RydWN0IG5sYXR0ciopKChjaGFyKilh dHRyICsgTkxNU0dfQUxJR04oYXR0ci0+bmxhX2xlbikpKSB7CiAgICAgIGlmIChhdHRyLT5ubGFf dHlwZSA9PSBERVZMSU5LX0FUVFJfTkVUREVWX05BTUUpIHsKICAgICAgICBjaGFyKiBwb3J0X25h bWU7CiAgICAgICAgY2hhciBuZXRkZXZfbmFtZVtJRk5BTVNJWl07CiAgICAgICAgcG9ydF9uYW1l ID0gKGNoYXIqKShhdHRyICsgMSk7CiAgICAgICAgc25wcmludGYobmV0ZGV2X25hbWUsIHNpemVv ZihuZXRkZXZfbmFtZSksICIlcyVkIiwgbmV0ZGV2X3ByZWZpeCwKICAgICAgICAgICAgICAgICBu ZXRkZXZfaW5kZXgpOwogICAgICAgIG5ldGxpbmtfZGV2aWNlX2NoYW5nZSgmbmxtc2cyLCBydHNv Y2ssIHBvcnRfbmFtZSwgdHJ1ZSwgMCwgMCwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbmV0ZGV2X25hbWUpOwogICAgICAgIGJyZWFrOwogICAgICB9CiAgICB9CiAgICBvZmZzZXQg Kz0gbGVuOwogICAgbmV0ZGV2X2luZGV4Kys7CiAgfQplcnJvcjoKICBjbG9zZShydHNvY2spOwog IGNsb3NlKHNvY2spOwp9CgojZGVmaW5lIERFVl9JUFY0ICIxNzIuMjAuMjAuJWQiCiNkZWZpbmUg REVWX0lQVjYgImZlODA6OiUwMngiCiNkZWZpbmUgREVWX01BQyAweDAwYWFhYWFhYWFhYQoKc3Rh dGljIHZvaWQgbmV0ZGV2c2ltX2FkZCh1bnNpZ25lZCBpbnQgYWRkciwgdW5zaWduZWQgaW50IHBv cnRfY291bnQpCnsKICB3cml0ZV9maWxlKCIvc3lzL2J1cy9uZXRkZXZzaW0vZGVsX2RldmljZSIs ICIldSIsIGFkZHIpOwogIGlmICh3cml0ZV9maWxlKCIvc3lzL2J1cy9uZXRkZXZzaW0vbmV3X2Rl dmljZSIsICIldSAldSIsIGFkZHIsIHBvcnRfY291bnQpKSB7CiAgICBjaGFyIGJ1ZlszMl07CiAg ICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAibmV0ZGV2c2ltJWQiLCBhZGRyKTsKICAgIGlu aXRpYWxpemVfZGV2bGlua19wb3J0cygibmV0ZGV2c2ltIiwgYnVmLCAibmV0ZGV2c2ltIik7CiAg fQp9CgojZGVmaW5lIFdHX0dFTkxfTkFNRSAid2lyZWd1YXJkIgplbnVtIHdnX2NtZCB7CiAgV0df Q01EX0dFVF9ERVZJQ0UsCiAgV0dfQ01EX1NFVF9ERVZJQ0UsCn07CmVudW0gd2dkZXZpY2VfYXR0 cmlidXRlIHsKICBXR0RFVklDRV9BX1VOU1BFQywKICBXR0RFVklDRV9BX0lGSU5ERVgsCiAgV0dE RVZJQ0VfQV9JRk5BTUUsCiAgV0dERVZJQ0VfQV9QUklWQVRFX0tFWSwKICBXR0RFVklDRV9BX1BV QkxJQ19LRVksCiAgV0dERVZJQ0VfQV9GTEFHUywKICBXR0RFVklDRV9BX0xJU1RFTl9QT1JULAog IFdHREVWSUNFX0FfRldNQVJLLAogIFdHREVWSUNFX0FfUEVFUlMsCn07CmVudW0gd2dwZWVyX2F0 dHJpYnV0ZSB7CiAgV0dQRUVSX0FfVU5TUEVDLAogIFdHUEVFUl9BX1BVQkxJQ19LRVksCiAgV0dQ RUVSX0FfUFJFU0hBUkVEX0tFWSwKICBXR1BFRVJfQV9GTEFHUywKICBXR1BFRVJfQV9FTkRQT0lO VCwKICBXR1BFRVJfQV9QRVJTSVNURU5UX0tFRVBBTElWRV9JTlRFUlZBTCwKICBXR1BFRVJfQV9M QVNUX0hBTkRTSEFLRV9USU1FLAogIFdHUEVFUl9BX1JYX0JZVEVTLAogIFdHUEVFUl9BX1RYX0JZ VEVTLAogIFdHUEVFUl9BX0FMTE9XRURJUFMsCiAgV0dQRUVSX0FfUFJPVE9DT0xfVkVSU0lPTiwK fTsKZW51bSB3Z2FsbG93ZWRpcF9hdHRyaWJ1dGUgewogIFdHQUxMT1dFRElQX0FfVU5TUEVDLAog IFdHQUxMT1dFRElQX0FfRkFNSUxZLAogIFdHQUxMT1dFRElQX0FfSVBBRERSLAogIFdHQUxMT1dF RElQX0FfQ0lEUl9NQVNLLAp9OwoKc3RhdGljIHZvaWQgbmV0bGlua193aXJlZ3VhcmRfc2V0dXAo dm9pZCkKewogIGNvbnN0IGNoYXIgaWZuYW1lX2FbXSA9ICJ3ZzAiOwogIGNvbnN0IGNoYXIgaWZu YW1lX2JbXSA9ICJ3ZzEiOwogIGNvbnN0IGNoYXIgaWZuYW1lX2NbXSA9ICJ3ZzIiOwogIGNvbnN0 IGNoYXIgcHJpdmF0ZV9hW10gPQogICAgICAiXHhhMFx4NWNceGE4XHg0Zlx4NmNceDljXHg4ZVx4 MzhceDUzXHhlMlx4ZmRceDdhXHg3MFx4YWVceDBmXHhiMlx4MGZceGExIgogICAgICAiXHg1Mlx4 NjBceDBjXHhiMFx4MDhceDQ1XHgxN1x4NGZceDA4XHgwN1x4NmZceDhkXHg3OFx4NDMiOwogIGNv bnN0IGNoYXIgcHJpdmF0ZV9iW10gPQogICAgICAiXHhiMFx4ODBceDczXHhlOFx4ZDRceDRlXHg5 MVx4ZTNceGRhXHg5Mlx4MmNceDIyXHg0M1x4ODJceDQ0XHhiYlx4ODhceDVjIgogICAgICAiXHg2 OVx4ZTJceDY5XHhjOFx4ZTlceGQ4XHgzNVx4YjFceDE0XHgyOVx4M2FceDRkXHhkY1x4NmUiOwog IGNvbnN0IGNoYXIgcHJpdmF0ZV9jW10gPQogICAgICAiXHhhMFx4Y2JceDg3XHg5YVx4NDdceGY1 XHhiY1x4NjRceDRjXHgwZVx4NjlceDNmXHhhNlx4ZDBceDMxXHhjN1x4NGFceDE1IgogICAgICAi XHg1M1x4YjZceGU5XHgwMVx4YjlceGZmXHgyZlx4NTFceDhjXHg3OFx4MDRceDJmXHhiNVx4NDIi OwogIGNvbnN0IGNoYXIgcHVibGljX2FbXSA9CiAgICAgICJceDk3XHg1Y1x4OWRceDgxXHhjOVx4 ODNceGM4XHgyMFx4OWVceGU3XHg4MVx4MjVceDRiXHg4OVx4OWZceDhlXHhkOVx4MjUiCiAgICAg ICJceGFlXHg5Zlx4MDlceDIzXHhjMlx4M2NceDYyXHhmNVx4M2NceDU3XHhjZFx4YmZceDY5XHgx YyI7CiAgY29uc3QgY2hhciBwdWJsaWNfYltdID0KICAgICAgIlx4ZDFceDczXHgyOFx4OTlceGY2 XHgxMVx4Y2RceDg5XHg5NFx4MDNceDRkXHg3Zlx4NDFceDNkXHhjOVx4NTdceDYzXHgwZSIKICAg ICAgIlx4NTRceDkzXHhjMlx4ODVceGFjXHhhNFx4MDBceDY1XHhjYlx4NjNceDExXHhiZVx4Njlc eDZiIjsKICBjb25zdCBjaGFyIHB1YmxpY19jW10gPQogICAgICAiXHhmNFx4NGRceGEzXHg2N1x4 YThceDhlXHhlNlx4NTZceDRmXHgwMlx4MDJceDExXHg0NVx4NjdceDI3XHgwOFx4MmZceDVjIgog ICAgICAiXHhlYlx4ZWVceDhiXHgxYlx4ZjVceGViXHg3M1x4MzdceDM0XHgxYlx4NDVceDliXHgz OVx4MjIiOwogIGNvbnN0IHVpbnQxNl90IGxpc3Rlbl9hID0gMjAwMDE7CiAgY29uc3QgdWludDE2 X3QgbGlzdGVuX2IgPSAyMDAwMjsKICBjb25zdCB1aW50MTZfdCBsaXN0ZW5fYyA9IDIwMDAzOwog IGNvbnN0IHVpbnQxNl90IGFmX2luZXQgPSBBRl9JTkVUOwogIGNvbnN0IHVpbnQxNl90IGFmX2lu ZXQ2ID0gQUZfSU5FVDY7CiAgY29uc3Qgc3RydWN0IHNvY2thZGRyX2luIGVuZHBvaW50X2JfdjQg PSB7CiAgICAgIC5zaW5fZmFtaWx5ID0gQUZfSU5FVCwKICAgICAgLnNpbl9wb3J0ID0gaHRvbnMo bGlzdGVuX2IpLAogICAgICAuc2luX2FkZHIgPSB7aHRvbmwoSU5BRERSX0xPT1BCQUNLKX19Owog IGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiBlbmRwb2ludF9jX3Y0ID0gewogICAgICAuc2luX2Zh bWlseSA9IEFGX0lORVQsCiAgICAgIC5zaW5fcG9ydCA9IGh0b25zKGxpc3Rlbl9jKSwKICAgICAg LnNpbl9hZGRyID0ge2h0b25sKElOQUREUl9MT09QQkFDSyl9fTsKICBzdHJ1Y3Qgc29ja2FkZHJf aW42IGVuZHBvaW50X2FfdjYgPSB7LnNpbjZfZmFtaWx5ID0gQUZfSU5FVDYsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zaW42X3BvcnQgPSBodG9ucyhsaXN0ZW5fYSl9 OwogIGVuZHBvaW50X2FfdjYuc2luNl9hZGRyID0gaW42YWRkcl9sb29wYmFjazsKICBzdHJ1Y3Qg c29ja2FkZHJfaW42IGVuZHBvaW50X2NfdjYgPSB7LnNpbjZfZmFtaWx5ID0gQUZfSU5FVDYsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zaW42X3BvcnQgPSBodG9ucyhs aXN0ZW5fYyl9OwogIGVuZHBvaW50X2NfdjYuc2luNl9hZGRyID0gaW42YWRkcl9sb29wYmFjazsK ICBjb25zdCBzdHJ1Y3QgaW5fYWRkciBmaXJzdF9oYWxmX3Y0ID0gezB9OwogIGNvbnN0IHN0cnVj dCBpbl9hZGRyIHNlY29uZF9oYWxmX3Y0ID0geyh1aW50MzJfdClodG9ubCgxMjggPDwgMjQpfTsK ICBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgZmlyc3RfaGFsZl92NiA9IHt7ezB9fX07CiAgY29uc3Qg c3RydWN0IGluNl9hZGRyIHNlY29uZF9oYWxmX3Y2ID0ge3t7MHg4MH19fTsKICBjb25zdCB1aW50 OF90IGhhbGZfY2lkciA9IDE7CiAgY29uc3QgdWludDE2X3QgcGVyc2lzdGVudF9rZWVwYWxpdmVz W10gPSB7MSwgMywgNywgOSwgMTQsIDE5fTsKICBzdHJ1Y3QgZ2VubG1zZ2hkciBnZW5saGRyID0g ey5jbWQgPSBXR19DTURfU0VUX0RFVklDRSwgLnZlcnNpb24gPSAxfTsKICBpbnQgc29jazsKICBp bnQgaWQsIGVycjsKICBzb2NrID0gc29ja2V0KEFGX05FVExJTkssIFNPQ0tfUkFXLCBORVRMSU5L X0dFTkVSSUMpOwogIGlmIChzb2NrID09IC0xKSB7CiAgICByZXR1cm47CiAgfQogIGlkID0gbmV0 bGlua19xdWVyeV9mYW1pbHlfaWQoJm5sbXNnLCBzb2NrLCBXR19HRU5MX05BTUUsIHRydWUpOwog IGlmIChpZCA9PSAtMSkKICAgIGdvdG8gZXJyb3I7CiAgbmV0bGlua19pbml0KCZubG1zZywgaWQs IDAsICZnZW5saGRyLCBzaXplb2YoZ2VubGhkcikpOwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdH REVWSUNFX0FfSUZOQU1FLCBpZm5hbWVfYSwgc3RybGVuKGlmbmFtZV9hKSArIDEpOwogIG5ldGxp bmtfYXR0cigmbmxtc2csIFdHREVWSUNFX0FfUFJJVkFURV9LRVksIHByaXZhdGVfYSwgMzIpOwog IG5ldGxpbmtfYXR0cigmbmxtc2csIFdHREVWSUNFX0FfTElTVEVOX1BPUlQsICZsaXN0ZW5fYSwg Mik7CiAgbmV0bGlua19uZXN0KCZubG1zZywgTkxBX0ZfTkVTVEVEIHwgV0dERVZJQ0VfQV9QRUVS Uyk7CiAgbmV0bGlua19uZXN0KCZubG1zZywgTkxBX0ZfTkVTVEVEIHwgMCk7CiAgbmV0bGlua19h dHRyKCZubG1zZywgV0dQRUVSX0FfUFVCTElDX0tFWSwgcHVibGljX2IsIDMyKTsKICBuZXRsaW5r X2F0dHIoJm5sbXNnLCBXR1BFRVJfQV9FTkRQT0lOVCwgJmVuZHBvaW50X2JfdjQsCiAgICAgICAg ICAgICAgIHNpemVvZihlbmRwb2ludF9iX3Y0KSk7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dQ RUVSX0FfUEVSU0lTVEVOVF9LRUVQQUxJVkVfSU5URVJWQUwsCiAgICAgICAgICAgICAgICZwZXJz aXN0ZW50X2tlZXBhbGl2ZXNbMF0sIDIpOwogIG5ldGxpbmtfbmVzdCgmbmxtc2csIE5MQV9GX05F U1RFRCB8IFdHUEVFUl9BX0FMTE9XRURJUFMpOwogIG5ldGxpbmtfbmVzdCgmbmxtc2csIE5MQV9G X05FU1RFRCB8IDApOwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdHQUxMT1dFRElQX0FfRkFNSUxZ LCAmYWZfaW5ldCwgMik7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9JUEFE RFIsICZmaXJzdF9oYWxmX3Y0LAogICAgICAgICAgICAgICBzaXplb2YoZmlyc3RfaGFsZl92NCkp OwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdHQUxMT1dFRElQX0FfQ0lEUl9NQVNLLCAmaGFsZl9j aWRyLCAxKTsKICBuZXRsaW5rX2RvbmUoJm5sbXNnKTsKICBuZXRsaW5rX25lc3QoJm5sbXNnLCBO TEFfRl9ORVNURUQgfCAwKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0FMTE9XRURJUF9BX0ZB TUlMWSwgJmFmX2luZXQ2LCAyKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0FMTE9XRURJUF9B X0lQQUREUiwgJmZpcnN0X2hhbGZfdjYsCiAgICAgICAgICAgICAgIHNpemVvZihmaXJzdF9oYWxm X3Y2KSk7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9DSURSX01BU0ssICZo YWxmX2NpZHIsIDEpOwogIG5ldGxpbmtfZG9uZSgmbmxtc2cpOwogIG5ldGxpbmtfZG9uZSgmbmxt c2cpOwogIG5ldGxpbmtfZG9uZSgmbmxtc2cpOwogIG5ldGxpbmtfbmVzdCgmbmxtc2csIE5MQV9G X05FU1RFRCB8IDApOwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdHUEVFUl9BX1BVQkxJQ19LRVks IHB1YmxpY19jLCAzMik7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dQRUVSX0FfRU5EUE9JTlQs ICZlbmRwb2ludF9jX3Y2LAogICAgICAgICAgICAgICBzaXplb2YoZW5kcG9pbnRfY192NikpOwog IG5ldGxpbmtfYXR0cigmbmxtc2csIFdHUEVFUl9BX1BFUlNJU1RFTlRfS0VFUEFMSVZFX0lOVEVS VkFMLAogICAgICAgICAgICAgICAmcGVyc2lzdGVudF9rZWVwYWxpdmVzWzFdLCAyKTsKICBuZXRs aW5rX25lc3QoJm5sbXNnLCBOTEFfRl9ORVNURUQgfCBXR1BFRVJfQV9BTExPV0VESVBTKTsKICBu ZXRsaW5rX25lc3QoJm5sbXNnLCBOTEFfRl9ORVNURUQgfCAwKTsKICBuZXRsaW5rX2F0dHIoJm5s bXNnLCBXR0FMTE9XRURJUF9BX0ZBTUlMWSwgJmFmX2luZXQsIDIpOwogIG5ldGxpbmtfYXR0cigm bmxtc2csIFdHQUxMT1dFRElQX0FfSVBBRERSLCAmc2Vjb25kX2hhbGZfdjQsCiAgICAgICAgICAg ICAgIHNpemVvZihzZWNvbmRfaGFsZl92NCkpOwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdHQUxM T1dFRElQX0FfQ0lEUl9NQVNLLCAmaGFsZl9jaWRyLCAxKTsKICBuZXRsaW5rX2RvbmUoJm5sbXNn KTsKICBuZXRsaW5rX25lc3QoJm5sbXNnLCBOTEFfRl9ORVNURUQgfCAwKTsKICBuZXRsaW5rX2F0 dHIoJm5sbXNnLCBXR0FMTE9XRURJUF9BX0ZBTUlMWSwgJmFmX2luZXQ2LCAyKTsKICBuZXRsaW5r X2F0dHIoJm5sbXNnLCBXR0FMTE9XRURJUF9BX0lQQUREUiwgJnNlY29uZF9oYWxmX3Y2LAogICAg ICAgICAgICAgICBzaXplb2Yoc2Vjb25kX2hhbGZfdjYpKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNn LCBXR0FMTE9XRURJUF9BX0NJRFJfTUFTSywgJmhhbGZfY2lkciwgMSk7CiAgbmV0bGlua19kb25l KCZubG1zZyk7CiAgbmV0bGlua19kb25lKCZubG1zZyk7CiAgbmV0bGlua19kb25lKCZubG1zZyk7 CiAgbmV0bGlua19kb25lKCZubG1zZyk7CiAgZXJyID0gbmV0bGlua19zZW5kKCZubG1zZywgc29j ayk7CiAgaWYgKGVyciA8IDApIHsKICB9CiAgbmV0bGlua19pbml0KCZubG1zZywgaWQsIDAsICZn ZW5saGRyLCBzaXplb2YoZ2VubGhkcikpOwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdHREVWSUNF X0FfSUZOQU1FLCBpZm5hbWVfYiwgc3RybGVuKGlmbmFtZV9iKSArIDEpOwogIG5ldGxpbmtfYXR0 cigmbmxtc2csIFdHREVWSUNFX0FfUFJJVkFURV9LRVksIHByaXZhdGVfYiwgMzIpOwogIG5ldGxp bmtfYXR0cigmbmxtc2csIFdHREVWSUNFX0FfTElTVEVOX1BPUlQsICZsaXN0ZW5fYiwgMik7CiAg bmV0bGlua19uZXN0KCZubG1zZywgTkxBX0ZfTkVTVEVEIHwgV0dERVZJQ0VfQV9QRUVSUyk7CiAg bmV0bGlua19uZXN0KCZubG1zZywgTkxBX0ZfTkVTVEVEIHwgMCk7CiAgbmV0bGlua19hdHRyKCZu bG1zZywgV0dQRUVSX0FfUFVCTElDX0tFWSwgcHVibGljX2EsIDMyKTsKICBuZXRsaW5rX2F0dHIo Jm5sbXNnLCBXR1BFRVJfQV9FTkRQT0lOVCwgJmVuZHBvaW50X2FfdjYsCiAgICAgICAgICAgICAg IHNpemVvZihlbmRwb2ludF9hX3Y2KSk7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dQRUVSX0Ff UEVSU0lTVEVOVF9LRUVQQUxJVkVfSU5URVJWQUwsCiAgICAgICAgICAgICAgICZwZXJzaXN0ZW50 X2tlZXBhbGl2ZXNbMl0sIDIpOwogIG5ldGxpbmtfbmVzdCgmbmxtc2csIE5MQV9GX05FU1RFRCB8 IFdHUEVFUl9BX0FMTE9XRURJUFMpOwogIG5ldGxpbmtfbmVzdCgmbmxtc2csIE5MQV9GX05FU1RF RCB8IDApOwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdHQUxMT1dFRElQX0FfRkFNSUxZLCAmYWZf aW5ldCwgMik7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9JUEFERFIsICZm aXJzdF9oYWxmX3Y0LAogICAgICAgICAgICAgICBzaXplb2YoZmlyc3RfaGFsZl92NCkpOwogIG5l dGxpbmtfYXR0cigmbmxtc2csIFdHQUxMT1dFRElQX0FfQ0lEUl9NQVNLLCAmaGFsZl9jaWRyLCAx KTsKICBuZXRsaW5rX2RvbmUoJm5sbXNnKTsKICBuZXRsaW5rX25lc3QoJm5sbXNnLCBOTEFfRl9O RVNURUQgfCAwKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0FMTE9XRURJUF9BX0ZBTUlMWSwg JmFmX2luZXQ2LCAyKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0FMTE9XRURJUF9BX0lQQURE UiwgJmZpcnN0X2hhbGZfdjYsCiAgICAgICAgICAgICAgIHNpemVvZihmaXJzdF9oYWxmX3Y2KSk7 CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9DSURSX01BU0ssICZoYWxmX2Np ZHIsIDEpOwogIG5ldGxpbmtfZG9uZSgmbmxtc2cpOwogIG5ldGxpbmtfZG9uZSgmbmxtc2cpOwog IG5ldGxpbmtfZG9uZSgmbmxtc2cpOwogIG5ldGxpbmtfbmVzdCgmbmxtc2csIE5MQV9GX05FU1RF RCB8IDApOwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdHUEVFUl9BX1BVQkxJQ19LRVksIHB1Ymxp Y19jLCAzMik7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dQRUVSX0FfRU5EUE9JTlQsICZlbmRw b2ludF9jX3Y0LAogICAgICAgICAgICAgICBzaXplb2YoZW5kcG9pbnRfY192NCkpOwogIG5ldGxp bmtfYXR0cigmbmxtc2csIFdHUEVFUl9BX1BFUlNJU1RFTlRfS0VFUEFMSVZFX0lOVEVSVkFMLAog ICAgICAgICAgICAgICAmcGVyc2lzdGVudF9rZWVwYWxpdmVzWzNdLCAyKTsKICBuZXRsaW5rX25l c3QoJm5sbXNnLCBOTEFfRl9ORVNURUQgfCBXR1BFRVJfQV9BTExPV0VESVBTKTsKICBuZXRsaW5r X25lc3QoJm5sbXNnLCBOTEFfRl9ORVNURUQgfCAwKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBX R0FMTE9XRURJUF9BX0ZBTUlMWSwgJmFmX2luZXQsIDIpOwogIG5ldGxpbmtfYXR0cigmbmxtc2cs IFdHQUxMT1dFRElQX0FfSVBBRERSLCAmc2Vjb25kX2hhbGZfdjQsCiAgICAgICAgICAgICAgIHNp emVvZihzZWNvbmRfaGFsZl92NCkpOwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdHQUxMT1dFRElQ X0FfQ0lEUl9NQVNLLCAmaGFsZl9jaWRyLCAxKTsKICBuZXRsaW5rX2RvbmUoJm5sbXNnKTsKICBu ZXRsaW5rX25lc3QoJm5sbXNnLCBOTEFfRl9ORVNURUQgfCAwKTsKICBuZXRsaW5rX2F0dHIoJm5s bXNnLCBXR0FMTE9XRURJUF9BX0ZBTUlMWSwgJmFmX2luZXQ2LCAyKTsKICBuZXRsaW5rX2F0dHIo Jm5sbXNnLCBXR0FMTE9XRURJUF9BX0lQQUREUiwgJnNlY29uZF9oYWxmX3Y2LAogICAgICAgICAg ICAgICBzaXplb2Yoc2Vjb25kX2hhbGZfdjYpKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0FM TE9XRURJUF9BX0NJRFJfTUFTSywgJmhhbGZfY2lkciwgMSk7CiAgbmV0bGlua19kb25lKCZubG1z Zyk7CiAgbmV0bGlua19kb25lKCZubG1zZyk7CiAgbmV0bGlua19kb25lKCZubG1zZyk7CiAgbmV0 bGlua19kb25lKCZubG1zZyk7CiAgZXJyID0gbmV0bGlua19zZW5kKCZubG1zZywgc29jayk7CiAg aWYgKGVyciA8IDApIHsKICB9CiAgbmV0bGlua19pbml0KCZubG1zZywgaWQsIDAsICZnZW5saGRy LCBzaXplb2YoZ2VubGhkcikpOwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdHREVWSUNFX0FfSUZO QU1FLCBpZm5hbWVfYywgc3RybGVuKGlmbmFtZV9jKSArIDEpOwogIG5ldGxpbmtfYXR0cigmbmxt c2csIFdHREVWSUNFX0FfUFJJVkFURV9LRVksIHByaXZhdGVfYywgMzIpOwogIG5ldGxpbmtfYXR0 cigmbmxtc2csIFdHREVWSUNFX0FfTElTVEVOX1BPUlQsICZsaXN0ZW5fYywgMik7CiAgbmV0bGlu a19uZXN0KCZubG1zZywgTkxBX0ZfTkVTVEVEIHwgV0dERVZJQ0VfQV9QRUVSUyk7CiAgbmV0bGlu a19uZXN0KCZubG1zZywgTkxBX0ZfTkVTVEVEIHwgMCk7CiAgbmV0bGlua19hdHRyKCZubG1zZywg V0dQRUVSX0FfUFVCTElDX0tFWSwgcHVibGljX2EsIDMyKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNn LCBXR1BFRVJfQV9FTkRQT0lOVCwgJmVuZHBvaW50X2FfdjYsCiAgICAgICAgICAgICAgIHNpemVv ZihlbmRwb2ludF9hX3Y2KSk7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dQRUVSX0FfUEVSU0lT VEVOVF9LRUVQQUxJVkVfSU5URVJWQUwsCiAgICAgICAgICAgICAgICZwZXJzaXN0ZW50X2tlZXBh bGl2ZXNbNF0sIDIpOwogIG5ldGxpbmtfbmVzdCgmbmxtc2csIE5MQV9GX05FU1RFRCB8IFdHUEVF Ul9BX0FMTE9XRURJUFMpOwogIG5ldGxpbmtfbmVzdCgmbmxtc2csIE5MQV9GX05FU1RFRCB8IDAp OwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdHQUxMT1dFRElQX0FfRkFNSUxZLCAmYWZfaW5ldCwg Mik7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9JUEFERFIsICZmaXJzdF9o YWxmX3Y0LAogICAgICAgICAgICAgICBzaXplb2YoZmlyc3RfaGFsZl92NCkpOwogIG5ldGxpbmtf YXR0cigmbmxtc2csIFdHQUxMT1dFRElQX0FfQ0lEUl9NQVNLLCAmaGFsZl9jaWRyLCAxKTsKICBu ZXRsaW5rX2RvbmUoJm5sbXNnKTsKICBuZXRsaW5rX25lc3QoJm5sbXNnLCBOTEFfRl9ORVNURUQg fCAwKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0FMTE9XRURJUF9BX0ZBTUlMWSwgJmFmX2lu ZXQ2LCAyKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0FMTE9XRURJUF9BX0lQQUREUiwgJmZp cnN0X2hhbGZfdjYsCiAgICAgICAgICAgICAgIHNpemVvZihmaXJzdF9oYWxmX3Y2KSk7CiAgbmV0 bGlua19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9DSURSX01BU0ssICZoYWxmX2NpZHIsIDEp OwogIG5ldGxpbmtfZG9uZSgmbmxtc2cpOwogIG5ldGxpbmtfZG9uZSgmbmxtc2cpOwogIG5ldGxp bmtfZG9uZSgmbmxtc2cpOwogIG5ldGxpbmtfbmVzdCgmbmxtc2csIE5MQV9GX05FU1RFRCB8IDAp OwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdHUEVFUl9BX1BVQkxJQ19LRVksIHB1YmxpY19iLCAz Mik7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dQRUVSX0FfRU5EUE9JTlQsICZlbmRwb2ludF9i X3Y0LAogICAgICAgICAgICAgICBzaXplb2YoZW5kcG9pbnRfYl92NCkpOwogIG5ldGxpbmtfYXR0 cigmbmxtc2csIFdHUEVFUl9BX1BFUlNJU1RFTlRfS0VFUEFMSVZFX0lOVEVSVkFMLAogICAgICAg ICAgICAgICAmcGVyc2lzdGVudF9rZWVwYWxpdmVzWzVdLCAyKTsKICBuZXRsaW5rX25lc3QoJm5s bXNnLCBOTEFfRl9ORVNURUQgfCBXR1BFRVJfQV9BTExPV0VESVBTKTsKICBuZXRsaW5rX25lc3Qo Jm5sbXNnLCBOTEFfRl9ORVNURUQgfCAwKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0FMTE9X RURJUF9BX0ZBTUlMWSwgJmFmX2luZXQsIDIpOwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdHQUxM T1dFRElQX0FfSVBBRERSLCAmc2Vjb25kX2hhbGZfdjQsCiAgICAgICAgICAgICAgIHNpemVvZihz ZWNvbmRfaGFsZl92NCkpOwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdHQUxMT1dFRElQX0FfQ0lE Ul9NQVNLLCAmaGFsZl9jaWRyLCAxKTsKICBuZXRsaW5rX2RvbmUoJm5sbXNnKTsKICBuZXRsaW5r X25lc3QoJm5sbXNnLCBOTEFfRl9ORVNURUQgfCAwKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBX R0FMTE9XRURJUF9BX0ZBTUlMWSwgJmFmX2luZXQ2LCAyKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNn LCBXR0FMTE9XRURJUF9BX0lQQUREUiwgJnNlY29uZF9oYWxmX3Y2LAogICAgICAgICAgICAgICBz aXplb2Yoc2Vjb25kX2hhbGZfdjYpKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0FMTE9XRURJ UF9BX0NJRFJfTUFTSywgJmhhbGZfY2lkciwgMSk7CiAgbmV0bGlua19kb25lKCZubG1zZyk7CiAg bmV0bGlua19kb25lKCZubG1zZyk7CiAgbmV0bGlua19kb25lKCZubG1zZyk7CiAgbmV0bGlua19k b25lKCZubG1zZyk7CiAgZXJyID0gbmV0bGlua19zZW5kKCZubG1zZywgc29jayk7CiAgaWYgKGVy ciA8IDApIHsKICB9CgplcnJvcjoKICBjbG9zZShzb2NrKTsKfQoKc3RhdGljIHZvaWQgaW5pdGlh bGl6ZV9uZXRkZXZpY2VzKHZvaWQpCnsKICBjaGFyIG5ldGRldnNpbVsxNl07CiAgc3ByaW50Zihu ZXRkZXZzaW0sICJuZXRkZXZzaW0lZCIsIChpbnQpcHJvY2lkKTsKICBzdHJ1Y3QgewogICAgY29u c3QgY2hhciogdHlwZTsKICAgIGNvbnN0IGNoYXIqIGRldjsKICB9IGRldnR5cGVzW10gPSB7CiAg ICAgIHsiaXA2Z3JldGFwIiwgImlwNmdyZXRhcDAifSwgeyJicmlkZ2UiLCAiYnJpZGdlMCJ9LCB7 InZjYW4iLCAidmNhbjAifSwKICAgICAgeyJib25kIiwgImJvbmQwIn0sICAgICAgICAgICB7InRl YW0iLCAidGVhbTAifSwgICAgIHsiZHVtbXkiLCAiZHVtbXkwIn0sCiAgICAgIHsibmxtb24iLCAi bmxtb24wIn0sICAgICAgICAgeyJjYWlmIiwgImNhaWYwIn0sICAgICB7ImJhdGFkdiIsICJiYXRh ZHYwIn0sCiAgICAgIHsidnhjYW4iLCAidnhjYW4xIn0sICAgICAgICAgeyJ2ZXRoIiwgMH0sICAg ICAgICAgICB7IndpcmVndWFyZCIsICJ3ZzAifSwKICAgICAgeyJ3aXJlZ3VhcmQiLCAid2cxIn0s ICAgICAgICB7IndpcmVndWFyZCIsICJ3ZzIifSwKICB9OwogIGNvbnN0IGNoYXIqIGRldm1hc3Rl cnNbXSA9IHsiYnJpZGdlIiwgImJvbmQiLCAidGVhbSIsICJiYXRhZHYifTsKICBzdHJ1Y3Qgewog ICAgY29uc3QgY2hhciogbmFtZTsKICAgIGludCBtYWNzaXplOwogICAgYm9vbCBub2lwdjY7CiAg fSBkZXZpY2VzW10gPSB7CiAgICAgIHsibG8iLCBFVEhfQUxFTn0sCiAgICAgIHsic2l0MCIsIDB9 LAogICAgICB7ImJyaWRnZTAiLCBFVEhfQUxFTn0sCiAgICAgIHsidmNhbjAiLCAwLCB0cnVlfSwK ICAgICAgeyJ0dW5sMCIsIDB9LAogICAgICB7ImdyZTAiLCAwfSwKICAgICAgeyJncmV0YXAwIiwg RVRIX0FMRU59LAogICAgICB7ImlwX3Z0aTAiLCAwfSwKICAgICAgeyJpcDZfdnRpMCIsIDB9LAog ICAgICB7ImlwNnRubDAiLCAwfSwKICAgICAgeyJpcDZncmUwIiwgMH0sCiAgICAgIHsiaXA2Z3Jl dGFwMCIsIEVUSF9BTEVOfSwKICAgICAgeyJlcnNwYW4wIiwgRVRIX0FMRU59LAogICAgICB7ImJv bmQwIiwgRVRIX0FMRU59LAogICAgICB7InZldGgwIiwgRVRIX0FMRU59LAogICAgICB7InZldGgx IiwgRVRIX0FMRU59LAogICAgICB7InRlYW0wIiwgRVRIX0FMRU59LAogICAgICB7InZldGgwX3Rv X2JyaWRnZSIsIEVUSF9BTEVOfSwKICAgICAgeyJ2ZXRoMV90b19icmlkZ2UiLCBFVEhfQUxFTn0s CiAgICAgIHsidmV0aDBfdG9fYm9uZCIsIEVUSF9BTEVOfSwKICAgICAgeyJ2ZXRoMV90b19ib25k IiwgRVRIX0FMRU59LAogICAgICB7InZldGgwX3RvX3RlYW0iLCBFVEhfQUxFTn0sCiAgICAgIHsi dmV0aDFfdG9fdGVhbSIsIEVUSF9BTEVOfSwKICAgICAgeyJ2ZXRoMF90b19oc3IiLCBFVEhfQUxF Tn0sCiAgICAgIHsidmV0aDFfdG9faHNyIiwgRVRIX0FMRU59LAogICAgICB7ImhzcjAiLCAwfSwK ICAgICAgeyJkdW1teTAiLCBFVEhfQUxFTn0sCiAgICAgIHsibmxtb24wIiwgMH0sCiAgICAgIHsi dnhjYW4wIiwgMCwgdHJ1ZX0sCiAgICAgIHsidnhjYW4xIiwgMCwgdHJ1ZX0sCiAgICAgIHsiY2Fp ZjAiLCBFVEhfQUxFTn0sCiAgICAgIHsiYmF0YWR2MCIsIEVUSF9BTEVOfSwKICAgICAge25ldGRl dnNpbSwgRVRIX0FMRU59LAogICAgICB7Inhmcm0wIiwgRVRIX0FMRU59LAogICAgICB7InZldGgw X3ZpcnRfd2lmaSIsIEVUSF9BTEVOfSwKICAgICAgeyJ2ZXRoMV92aXJ0X3dpZmkiLCBFVEhfQUxF Tn0sCiAgICAgIHsidmlydF93aWZpMCIsIEVUSF9BTEVOfSwKICAgICAgeyJ2ZXRoMF92bGFuIiwg RVRIX0FMRU59LAogICAgICB7InZldGgxX3ZsYW4iLCBFVEhfQUxFTn0sCiAgICAgIHsidmxhbjAi LCBFVEhfQUxFTn0sCiAgICAgIHsidmxhbjEiLCBFVEhfQUxFTn0sCiAgICAgIHsibWFjdmxhbjAi LCBFVEhfQUxFTn0sCiAgICAgIHsibWFjdmxhbjEiLCBFVEhfQUxFTn0sCiAgICAgIHsiaXB2bGFu MCIsIEVUSF9BTEVOfSwKICAgICAgeyJpcHZsYW4xIiwgRVRIX0FMRU59LAogICAgICB7InZldGgw X21hY3Z0YXAiLCBFVEhfQUxFTn0sCiAgICAgIHsidmV0aDFfbWFjdnRhcCIsIEVUSF9BTEVOfSwK ICAgICAgeyJtYWN2dGFwMCIsIEVUSF9BTEVOfSwKICAgICAgeyJtYWNzZWMwIiwgRVRIX0FMRU59 LAogICAgICB7InZldGgwX3RvX2JhdGFkdiIsIEVUSF9BTEVOfSwKICAgICAgeyJ2ZXRoMV90b19i YXRhZHYiLCBFVEhfQUxFTn0sCiAgICAgIHsiYmF0YWR2X3NsYXZlXzAiLCBFVEhfQUxFTn0sCiAg ICAgIHsiYmF0YWR2X3NsYXZlXzEiLCBFVEhfQUxFTn0sCiAgICAgIHsiZ2VuZXZlMCIsIEVUSF9B TEVOfSwKICAgICAgeyJnZW5ldmUxIiwgRVRIX0FMRU59LAogICAgICB7IndnMCIsIDB9LAogICAg ICB7IndnMSIsIDB9LAogICAgICB7IndnMiIsIDB9LAogIH07CiAgaW50IHNvY2sgPSBzb2NrZXQo QUZfTkVUTElOSywgU09DS19SQVcsIE5FVExJTktfUk9VVEUpOwogIGlmIChzb2NrID09IC0xKQog ICAgZXhpdCgxKTsKICB1bnNpZ25lZCBpOwogIGZvciAoaSA9IDA7IGkgPCBzaXplb2YoZGV2dHlw ZXMpIC8gc2l6ZW9mKGRldnR5cGVzWzBdKTsgaSsrKQogICAgbmV0bGlua19hZGRfZGV2aWNlKCZu bG1zZywgc29jaywgZGV2dHlwZXNbaV0udHlwZSwgZGV2dHlwZXNbaV0uZGV2KTsKICBmb3IgKGkg PSAwOyBpIDwgc2l6ZW9mKGRldm1hc3RlcnMpIC8gKHNpemVvZihkZXZtYXN0ZXJzWzBdKSk7IGkr KykgewogICAgY2hhciBtYXN0ZXJbMzJdLCBzbGF2ZTBbMzJdLCB2ZXRoMFszMl0sIHNsYXZlMVsz Ml0sIHZldGgxWzMyXTsKICAgIHNwcmludGYoc2xhdmUwLCAiJXNfc2xhdmVfMCIsIGRldm1hc3Rl cnNbaV0pOwogICAgc3ByaW50Zih2ZXRoMCwgInZldGgwX3RvXyVzIiwgZGV2bWFzdGVyc1tpXSk7 CiAgICBuZXRsaW5rX2FkZF92ZXRoKCZubG1zZywgc29jaywgc2xhdmUwLCB2ZXRoMCk7CiAgICBz cHJpbnRmKHNsYXZlMSwgIiVzX3NsYXZlXzEiLCBkZXZtYXN0ZXJzW2ldKTsKICAgIHNwcmludGYo dmV0aDEsICJ2ZXRoMV90b18lcyIsIGRldm1hc3RlcnNbaV0pOwogICAgbmV0bGlua19hZGRfdmV0 aCgmbmxtc2csIHNvY2ssIHNsYXZlMSwgdmV0aDEpOwogICAgc3ByaW50ZihtYXN0ZXIsICIlczAi LCBkZXZtYXN0ZXJzW2ldKTsKICAgIG5ldGxpbmtfZGV2aWNlX2NoYW5nZSgmbmxtc2csIHNvY2ss IHNsYXZlMCwgZmFsc2UsIG1hc3RlciwgMCwgMCwgTlVMTCk7CiAgICBuZXRsaW5rX2RldmljZV9j aGFuZ2UoJm5sbXNnLCBzb2NrLCBzbGF2ZTEsIGZhbHNlLCBtYXN0ZXIsIDAsIDAsIE5VTEwpOwog IH0KICBuZXRsaW5rX2FkZF94ZnJtKCZubG1zZywgc29jaywgInhmcm0wIik7CiAgbmV0bGlua19k ZXZpY2VfY2hhbmdlKCZubG1zZywgc29jaywgImJyaWRnZV9zbGF2ZV8wIiwgdHJ1ZSwgMCwgMCwg MCwgTlVMTCk7CiAgbmV0bGlua19kZXZpY2VfY2hhbmdlKCZubG1zZywgc29jaywgImJyaWRnZV9z bGF2ZV8xIiwgdHJ1ZSwgMCwgMCwgMCwgTlVMTCk7CiAgbmV0bGlua19hZGRfdmV0aCgmbmxtc2cs IHNvY2ssICJoc3Jfc2xhdmVfMCIsICJ2ZXRoMF90b19oc3IiKTsKICBuZXRsaW5rX2FkZF92ZXRo KCZubG1zZywgc29jaywgImhzcl9zbGF2ZV8xIiwgInZldGgxX3RvX2hzciIpOwogIG5ldGxpbmtf YWRkX2hzcigmbmxtc2csIHNvY2ssICJoc3IwIiwgImhzcl9zbGF2ZV8wIiwgImhzcl9zbGF2ZV8x Iik7CiAgbmV0bGlua19kZXZpY2VfY2hhbmdlKCZubG1zZywgc29jaywgImhzcl9zbGF2ZV8wIiwg dHJ1ZSwgMCwgMCwgMCwgTlVMTCk7CiAgbmV0bGlua19kZXZpY2VfY2hhbmdlKCZubG1zZywgc29j aywgImhzcl9zbGF2ZV8xIiwgdHJ1ZSwgMCwgMCwgMCwgTlVMTCk7CiAgbmV0bGlua19hZGRfdmV0 aCgmbmxtc2csIHNvY2ssICJ2ZXRoMF92aXJ0X3dpZmkiLCAidmV0aDFfdmlydF93aWZpIik7CiAg bmV0bGlua19hZGRfbGlua2VkKCZubG1zZywgc29jaywgInZpcnRfd2lmaSIsICJ2aXJ0X3dpZmkw IiwKICAgICAgICAgICAgICAgICAgICAgInZldGgxX3ZpcnRfd2lmaSIpOwogIG5ldGxpbmtfYWRk X3ZldGgoJm5sbXNnLCBzb2NrLCAidmV0aDBfdmxhbiIsICJ2ZXRoMV92bGFuIik7CiAgbmV0bGlu a19hZGRfdmxhbigmbmxtc2csIHNvY2ssICJ2bGFuMCIsICJ2ZXRoMF92bGFuIiwgMCwgaHRvbnMo RVRIX1BfODAyMVEpKTsKICBuZXRsaW5rX2FkZF92bGFuKCZubG1zZywgc29jaywgInZsYW4xIiwg InZldGgwX3ZsYW4iLCAxLCBodG9ucyhFVEhfUF84MDIxQUQpKTsKICBuZXRsaW5rX2FkZF9tYWN2 bGFuKCZubG1zZywgc29jaywgIm1hY3ZsYW4wIiwgInZldGgxX3ZsYW4iKTsKICBuZXRsaW5rX2Fk ZF9tYWN2bGFuKCZubG1zZywgc29jaywgIm1hY3ZsYW4xIiwgInZldGgxX3ZsYW4iKTsKICBuZXRs aW5rX2FkZF9pcHZsYW4oJm5sbXNnLCBzb2NrLCAiaXB2bGFuMCIsICJ2ZXRoMF92bGFuIiwgSVBW TEFOX01PREVfTDIsIDApOwogIG5ldGxpbmtfYWRkX2lwdmxhbigmbmxtc2csIHNvY2ssICJpcHZs YW4xIiwgInZldGgwX3ZsYW4iLCBJUFZMQU5fTU9ERV9MM1MsCiAgICAgICAgICAgICAgICAgICAg IElQVkxBTl9GX1ZFUEEpOwogIG5ldGxpbmtfYWRkX3ZldGgoJm5sbXNnLCBzb2NrLCAidmV0aDBf bWFjdnRhcCIsICJ2ZXRoMV9tYWN2dGFwIik7CiAgbmV0bGlua19hZGRfbGlua2VkKCZubG1zZywg c29jaywgIm1hY3Z0YXAiLCAibWFjdnRhcDAiLCAidmV0aDBfbWFjdnRhcCIpOwogIG5ldGxpbmtf YWRkX2xpbmtlZCgmbmxtc2csIHNvY2ssICJtYWNzZWMiLCAibWFjc2VjMCIsICJ2ZXRoMV9tYWN2 dGFwIik7CiAgY2hhciBhZGRyWzMyXTsKICBzcHJpbnRmKGFkZHIsIERFVl9JUFY0LCAxNCArIDEw KTsKICBzdHJ1Y3QgaW5fYWRkciBnZW5ldmVfYWRkcjQ7CiAgaWYgKGluZXRfcHRvbihBRl9JTkVU LCBhZGRyLCAmZ2VuZXZlX2FkZHI0KSA8PSAwKQogICAgZXhpdCgxKTsKICBzdHJ1Y3QgaW42X2Fk ZHIgZ2VuZXZlX2FkZHI2OwogIGlmIChpbmV0X3B0b24oQUZfSU5FVDYsICJmYzAwOjowMSIsICZn ZW5ldmVfYWRkcjYpIDw9IDApCiAgICBleGl0KDEpOwogIG5ldGxpbmtfYWRkX2dlbmV2ZSgmbmxt c2csIHNvY2ssICJnZW5ldmUwIiwgMCwgJmdlbmV2ZV9hZGRyNCwgMCk7CiAgbmV0bGlua19hZGRf Z2VuZXZlKCZubG1zZywgc29jaywgImdlbmV2ZTEiLCAxLCAwLCAmZ2VuZXZlX2FkZHI2KTsKICBu ZXRkZXZzaW1fYWRkKChpbnQpcHJvY2lkLCA0KTsKICBuZXRsaW5rX3dpcmVndWFyZF9zZXR1cCgp OwogIGZvciAoaSA9IDA7IGkgPCBzaXplb2YoZGV2aWNlcykgLyAoc2l6ZW9mKGRldmljZXNbMF0p KTsgaSsrKSB7CiAgICBjaGFyIGFkZHJbMzJdOwogICAgc3ByaW50ZihhZGRyLCBERVZfSVBWNCwg aSArIDEwKTsKICAgIG5ldGxpbmtfYWRkX2FkZHI0KCZubG1zZywgc29jaywgZGV2aWNlc1tpXS5u YW1lLCBhZGRyKTsKICAgIGlmICghZGV2aWNlc1tpXS5ub2lwdjYpIHsKICAgICAgc3ByaW50Zihh ZGRyLCBERVZfSVBWNiwgaSArIDEwKTsKICAgICAgbmV0bGlua19hZGRfYWRkcjYoJm5sbXNnLCBz b2NrLCBkZXZpY2VzW2ldLm5hbWUsIGFkZHIpOwogICAgfQogICAgdWludDY0X3QgbWFjYWRkciA9 IERFVl9NQUMgKyAoKGkgKyAxMHVsbCkgPDwgNDApOwogICAgbmV0bGlua19kZXZpY2VfY2hhbmdl KCZubG1zZywgc29jaywgZGV2aWNlc1tpXS5uYW1lLCB0cnVlLCAwLCAmbWFjYWRkciwKICAgICAg ICAgICAgICAgICAgICAgICAgICBkZXZpY2VzW2ldLm1hY3NpemUsIE5VTEwpOwogIH0KICBjbG9z ZShzb2NrKTsKfQpzdGF0aWMgdm9pZCBpbml0aWFsaXplX25ldGRldmljZXNfaW5pdCh2b2lkKQp7 CiAgaW50IHNvY2sgPSBzb2NrZXQoQUZfTkVUTElOSywgU09DS19SQVcsIE5FVExJTktfUk9VVEUp OwogIGlmIChzb2NrID09IC0xKQogICAgZXhpdCgxKTsKICBzdHJ1Y3QgewogICAgY29uc3QgY2hh ciogdHlwZTsKICAgIGludCBtYWNzaXplOwogICAgYm9vbCBub2lwdjY7CiAgICBib29sIG5vdXA7 CiAgfSBkZXZ0eXBlc1tdID0gewogICAgICB7Im5yIiwgNywgdHJ1ZX0sCiAgICAgIHsicm9zZSIs IDUsIHRydWUsIHRydWV9LAogIH07CiAgdW5zaWduZWQgaTsKICBmb3IgKGkgPSAwOyBpIDwgc2l6 ZW9mKGRldnR5cGVzKSAvIHNpemVvZihkZXZ0eXBlc1swXSk7IGkrKykgewogICAgY2hhciBkZXZb MzJdLCBhZGRyWzMyXTsKICAgIHNwcmludGYoZGV2LCAiJXMlZCIsIGRldnR5cGVzW2ldLnR5cGUs IChpbnQpcHJvY2lkKTsKICAgIHNwcmludGYoYWRkciwgIjE3Mi4zMC4lZC4lZCIsIGksIChpbnQp cHJvY2lkICsgMSk7CiAgICBuZXRsaW5rX2FkZF9hZGRyNCgmbmxtc2csIHNvY2ssIGRldiwgYWRk cik7CiAgICBpZiAoIWRldnR5cGVzW2ldLm5vaXB2NikgewogICAgICBzcHJpbnRmKGFkZHIsICJm ZTg4OjolMDJ4OiUwMngiLCBpLCAoaW50KXByb2NpZCArIDEpOwogICAgICBuZXRsaW5rX2FkZF9h ZGRyNigmbmxtc2csIHNvY2ssIGRldiwgYWRkcik7CiAgICB9CiAgICBpbnQgbWFjc2l6ZSA9IGRl dnR5cGVzW2ldLm1hY3NpemU7CiAgICB1aW50NjRfdCBtYWNhZGRyID0gMHhiYmJiYmIgKwogICAg ICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgbG9uZyBsb25nKWkgPDwgKDggKiAobWFjc2l6 ZSAtIDIpKSkgKwogICAgICAgICAgICAgICAgICAgICAgIChwcm9jaWQgPDwgKDggKiAobWFjc2l6 ZSAtIDEpKSk7CiAgICBuZXRsaW5rX2RldmljZV9jaGFuZ2UoJm5sbXNnLCBzb2NrLCBkZXYsICFk ZXZ0eXBlc1tpXS5ub3VwLCAwLCAmbWFjYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICBt YWNzaXplLCBOVUxMKTsKICB9CiAgY2xvc2Uoc29jayk7Cn0KCnN0YXRpYyBpbnQgcmVhZF90dW4o Y2hhciogZGF0YSwgaW50IHNpemUpCnsKICBpZiAodHVuZmQgPCAwKQogICAgcmV0dXJuIC0xOwog IGludCBydiA9IHJlYWQodHVuZmQsIGRhdGEsIHNpemUpOwogIGlmIChydiA8IDApIHsKICAgIGlm IChlcnJubyA9PSBFQUdBSU4gfHwgZXJybm8gPT0gRUJBREZEKQogICAgICByZXR1cm4gLTE7CiAg ICBleGl0KDEpOwogIH0KICByZXR1cm4gcnY7Cn0KCnN0YXRpYyB2b2lkIGZsdXNoX3R1bigpCnsK ICBjaGFyIGRhdGFbMTAwMF07CiAgd2hpbGUgKHJlYWRfdHVuKCZkYXRhWzBdLCBzaXplb2YoZGF0 YSkpICE9IC0xKSB7CiAgfQp9CgojZGVmaW5lIE1BWF9GRFMgMzAKCi8vJSBUaGlzIGNvZGUgaXMg ZGVyaXZlZCBmcm9tIHB1ZmYue2MsaH0sIGZvdW5kIGluIHRoZSB6bGliIGRldmVsb3BtZW50LiBU aGUKLy8lIG9yaWdpbmFsIGZpbGVzIGNvbWUgd2l0aCB0aGUgZm9sbG93aW5nIGNvcHlyaWdodCBu b3RpY2U6CgovLyUgQ29weXJpZ2h0IChDKSAyMDAyLTIwMTMgTWFyayBBZGxlciwgYWxsIHJpZ2h0 cyByZXNlcnZlZAovLyUgdmVyc2lvbiAyLjMsIDIxIEphbiAyMDEzCi8vJSBUaGlzIHNvZnR3YXJl IGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZAovLyUg d2FycmFudHkuICBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3IgYmUgaGVsZCBsaWFibGUgZm9y IGFueSBkYW1hZ2VzCi8vJSBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLgov LyUgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBm b3IgYW55IHB1cnBvc2UsCi8vJSBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFu ZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0Ci8vJSBmcmVlbHksIHN1YmplY3QgdG8g dGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6Ci8vJSAxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29m dHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IG5vdAovLyUgICAgY2xh aW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMg c29mdHdhcmUKLy8lICAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHBy b2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZQovLyUgICAgYXBwcmVjaWF0ZWQgYnV0IGlzIG5v dCByZXF1aXJlZC4KLy8lIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5s eSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlCi8vJSAgICBtaXNyZXByZXNlbnRlZCBh cyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuCi8vJSAzLiBUaGlzIG5vdGljZSBtYXkgbm90 IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLgovLyUg TWFyayBBZGxlciAgICBtYWRsZXJAYWx1bW5pLmNhbHRlY2guZWR1CgovLyUgQkVHSU4gQ09ERSBE RVJJVkVEIEZST00gcHVmZi57YyxofQoKI2RlZmluZSBNQVhCSVRTIDE1CiNkZWZpbmUgTUFYTENP REVTIDI4NgojZGVmaW5lIE1BWERDT0RFUyAzMAojZGVmaW5lIE1BWENPREVTIChNQVhMQ09ERVMg KyBNQVhEQ09ERVMpCiNkZWZpbmUgRklYTENPREVTIDI4OAoKc3RydWN0IHB1ZmZfc3RhdGUgewog IHVuc2lnbmVkIGNoYXIqIG91dDsKICB1bnNpZ25lZCBsb25nIG91dGxlbjsKICB1bnNpZ25lZCBs b25nIG91dGNudDsKICBjb25zdCB1bnNpZ25lZCBjaGFyKiBpbjsKICB1bnNpZ25lZCBsb25nIGlu bGVuOwogIHVuc2lnbmVkIGxvbmcgaW5jbnQ7CiAgaW50IGJpdGJ1ZjsKICBpbnQgYml0Y250Owog IGptcF9idWYgZW52Owp9OwpzdGF0aWMgaW50IHB1ZmZfYml0cyhzdHJ1Y3QgcHVmZl9zdGF0ZSog cywgaW50IG5lZWQpCnsKICBsb25nIHZhbCA9IHMtPmJpdGJ1ZjsKICB3aGlsZSAocy0+Yml0Y250 IDwgbmVlZCkgewogICAgaWYgKHMtPmluY250ID09IHMtPmlubGVuKQogICAgICBsb25nam1wKHMt PmVudiwgMSk7CiAgICB2YWwgfD0gKGxvbmcpKHMtPmluW3MtPmluY250KytdKSA8PCBzLT5iaXRj bnQ7CiAgICBzLT5iaXRjbnQgKz0gODsKICB9CiAgcy0+Yml0YnVmID0gKGludCkodmFsID4+IG5l ZWQpOwogIHMtPmJpdGNudCAtPSBuZWVkOwogIHJldHVybiAoaW50KSh2YWwgJiAoKDFMIDw8IG5l ZWQpIC0gMSkpOwp9CnN0YXRpYyBpbnQgcHVmZl9zdG9yZWQoc3RydWN0IHB1ZmZfc3RhdGUqIHMp CnsKICBzLT5iaXRidWYgPSAwOwogIHMtPmJpdGNudCA9IDA7CiAgaWYgKHMtPmluY250ICsgNCA+ IHMtPmlubGVuKQogICAgcmV0dXJuIDI7CiAgdW5zaWduZWQgbGVuID0gcy0+aW5bcy0+aW5jbnQr K107CiAgbGVuIHw9IHMtPmluW3MtPmluY250KytdIDw8IDg7CiAgaWYgKHMtPmluW3MtPmluY250 KytdICE9ICh+bGVuICYgMHhmZikgfHwKICAgICAgcy0+aW5bcy0+aW5jbnQrK10gIT0gKCh+bGVu ID4+IDgpICYgMHhmZikpCiAgICByZXR1cm4gLTI7CiAgaWYgKHMtPmluY250ICsgbGVuID4gcy0+ aW5sZW4pCiAgICByZXR1cm4gMjsKICBpZiAocy0+b3V0Y250ICsgbGVuID4gcy0+b3V0bGVuKQog ICAgcmV0dXJuIDE7CiAgZm9yICg7IGxlbi0tOyBzLT5vdXRjbnQrKywgcy0+aW5jbnQrKykgewog ICAgaWYgKHMtPmluW3MtPmluY250XSkKICAgICAgcy0+b3V0W3MtPm91dGNudF0gPSBzLT5pbltz LT5pbmNudF07CiAgfQogIHJldHVybiAwOwp9CnN0cnVjdCBwdWZmX2h1ZmZtYW4gewogIHNob3J0 KiBjb3VudDsKICBzaG9ydCogc3ltYm9sOwp9OwpzdGF0aWMgaW50IHB1ZmZfZGVjb2RlKHN0cnVj dCBwdWZmX3N0YXRlKiBzLCBjb25zdCBzdHJ1Y3QgcHVmZl9odWZmbWFuKiBoKQp7CiAgaW50IGZp cnN0ID0gMDsKICBpbnQgaW5kZXggPSAwOwogIGludCBiaXRidWYgPSBzLT5iaXRidWY7CiAgaW50 IGxlZnQgPSBzLT5iaXRjbnQ7CiAgaW50IGNvZGUgPSBmaXJzdCA9IGluZGV4ID0gMDsKICBpbnQg bGVuID0gMTsKICBzaG9ydCogbmV4dCA9IGgtPmNvdW50ICsgMTsKICB3aGlsZSAoMSkgewogICAg d2hpbGUgKGxlZnQtLSkgewogICAgICBjb2RlIHw9IGJpdGJ1ZiAmIDE7CiAgICAgIGJpdGJ1ZiA+ Pj0gMTsKICAgICAgaW50IGNvdW50ID0gKm5leHQrKzsKICAgICAgaWYgKGNvZGUgLSBjb3VudCA8 IGZpcnN0KSB7CiAgICAgICAgcy0+Yml0YnVmID0gYml0YnVmOwogICAgICAgIHMtPmJpdGNudCA9 IChzLT5iaXRjbnQgLSBsZW4pICYgNzsKICAgICAgICByZXR1cm4gaC0+c3ltYm9sW2luZGV4ICsg KGNvZGUgLSBmaXJzdCldOwogICAgICB9CiAgICAgIGluZGV4ICs9IGNvdW50OwogICAgICBmaXJz dCArPSBjb3VudDsKICAgICAgZmlyc3QgPDw9IDE7CiAgICAgIGNvZGUgPDw9IDE7CiAgICAgIGxl bisrOwogICAgfQogICAgbGVmdCA9IChNQVhCSVRTICsgMSkgLSBsZW47CiAgICBpZiAobGVmdCA9 PSAwKQogICAgICBicmVhazsKICAgIGlmIChzLT5pbmNudCA9PSBzLT5pbmxlbikKICAgICAgbG9u Z2ptcChzLT5lbnYsIDEpOwogICAgYml0YnVmID0gcy0+aW5bcy0+aW5jbnQrK107CiAgICBpZiAo bGVmdCA+IDgpCiAgICAgIGxlZnQgPSA4OwogIH0KICByZXR1cm4gLTEwOwp9CnN0YXRpYyBpbnQg cHVmZl9jb25zdHJ1Y3Qoc3RydWN0IHB1ZmZfaHVmZm1hbiogaCwgY29uc3Qgc2hvcnQqIGxlbmd0 aCwgaW50IG4pCnsKICBpbnQgbGVuOwogIGZvciAobGVuID0gMDsgbGVuIDw9IE1BWEJJVFM7IGxl bisrKQogICAgaC0+Y291bnRbbGVuXSA9IDA7CiAgaW50IHN5bWJvbDsKICBmb3IgKHN5bWJvbCA9 IDA7IHN5bWJvbCA8IG47IHN5bWJvbCsrKQogICAgKGgtPmNvdW50W2xlbmd0aFtzeW1ib2xdXSkr KzsKICBpZiAoaC0+Y291bnRbMF0gPT0gbikKICAgIHJldHVybiAwOwogIGludCBsZWZ0ID0gMTsK ICBmb3IgKGxlbiA9IDE7IGxlbiA8PSBNQVhCSVRTOyBsZW4rKykgewogICAgbGVmdCA8PD0gMTsK ICAgIGxlZnQgLT0gaC0+Y291bnRbbGVuXTsKICAgIGlmIChsZWZ0IDwgMCkKICAgICAgcmV0dXJu IGxlZnQ7CiAgfQogIHNob3J0IG9mZnNbTUFYQklUUyArIDFdOwogIG9mZnNbMV0gPSAwOwogIGZv ciAobGVuID0gMTsgbGVuIDwgTUFYQklUUzsgbGVuKyspCiAgICBvZmZzW2xlbiArIDFdID0gb2Zm c1tsZW5dICsgaC0+Y291bnRbbGVuXTsKICBmb3IgKHN5bWJvbCA9IDA7IHN5bWJvbCA8IG47IHN5 bWJvbCsrKQogICAgaWYgKGxlbmd0aFtzeW1ib2xdICE9IDApCiAgICAgIGgtPnN5bWJvbFtvZmZz W2xlbmd0aFtzeW1ib2xdXSsrXSA9IHN5bWJvbDsKICByZXR1cm4gbGVmdDsKfQpzdGF0aWMgaW50 IHB1ZmZfY29kZXMoc3RydWN0IHB1ZmZfc3RhdGUqIHMsIGNvbnN0IHN0cnVjdCBwdWZmX2h1ZmZt YW4qIGxlbmNvZGUsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcHVmZl9odWZm bWFuKiBkaXN0Y29kZSkKewogIHN0YXRpYyBjb25zdCBzaG9ydCBsZW5zWzI5XSA9IHszLCAgNCwg IDUsICA2LCAgIDcsICAgOCwgICA5LCAgIDEwLCAgMTEsIDEzLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAxNSwgMTcsIDE5LCAyMywgIDI3LCAgMzEsICAzNSwgIDQzLCAgNTEsIDU5 LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2NywgODMsIDk5LCAxMTUsIDEzMSwg MTYzLCAxOTUsIDIyNywgMjU4fTsKICBzdGF0aWMgY29uc3Qgc2hvcnQgbGV4dFsyOV0gPSB7MCwg MCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMSwgMSwgMSwgMiwgMiwgMiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMiwgMywgMywgMywgMywgNCwgNCwgNCwgNCwgNSwgNSwgNSwgNSwg MH07CiAgc3RhdGljIGNvbnN0IHNob3J0IGRpc3RzWzMwXSA9IHsKICAgICAgMSwgICAgMiwgICAg MywgICAgNCwgICAgNSwgICAgNywgICAgOSwgICAgMTMsICAgIDE3LCAgICAyNSwKICAgICAgMzMs ICAgNDksICAgNjUsICAgOTcsICAgMTI5LCAgMTkzLCAgMjU3LCAgMzg1LCAgIDUxMywgICA3Njks CiAgICAgIDEwMjUsIDE1MzcsIDIwNDksIDMwNzMsIDQwOTcsIDYxNDUsIDgxOTMsIDEyMjg5LCAx NjM4NSwgMjQ1Nzd9OwogIHN0YXRpYyBjb25zdCBzaG9ydCBkZXh0WzMwXSA9IHswLCAwLCAwLCAg MCwgIDEsICAxLCAgMiwgIDIsICAzLCAgMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgNCwgNCwgNSwgIDUsICA2LCAgNiwgIDcsICA3LCAgOCwgIDgsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDksIDksIDEwLCAxMCwgMTEsIDExLCAxMiwgMTIsIDEzLCAxM307CiAg aW50IHN5bWJvbDsKICBkbyB7CiAgICBzeW1ib2wgPSBwdWZmX2RlY29kZShzLCBsZW5jb2RlKTsK ICAgIGlmIChzeW1ib2wgPCAwKQogICAgICByZXR1cm4gc3ltYm9sOwogICAgaWYgKHN5bWJvbCA8 IDI1NikgewogICAgICBpZiAocy0+b3V0Y250ID09IHMtPm91dGxlbikKICAgICAgICByZXR1cm4g MTsKICAgICAgaWYgKHN5bWJvbCkKICAgICAgICBzLT5vdXRbcy0+b3V0Y250XSA9IHN5bWJvbDsK ICAgICAgcy0+b3V0Y250Kys7CiAgICB9IGVsc2UgaWYgKHN5bWJvbCA+IDI1NikgewogICAgICBz eW1ib2wgLT0gMjU3OwogICAgICBpZiAoc3ltYm9sID49IDI5KQogICAgICAgIHJldHVybiAtMTA7 CiAgICAgIGludCBsZW4gPSBsZW5zW3N5bWJvbF0gKyBwdWZmX2JpdHMocywgbGV4dFtzeW1ib2xd KTsKICAgICAgc3ltYm9sID0gcHVmZl9kZWNvZGUocywgZGlzdGNvZGUpOwogICAgICBpZiAoc3lt Ym9sIDwgMCkKICAgICAgICByZXR1cm4gc3ltYm9sOwogICAgICB1bnNpZ25lZCBkaXN0ID0gZGlz dHNbc3ltYm9sXSArIHB1ZmZfYml0cyhzLCBkZXh0W3N5bWJvbF0pOwogICAgICBpZiAoZGlzdCA+ IHMtPm91dGNudCkKICAgICAgICByZXR1cm4gLTExOwogICAgICBpZiAocy0+b3V0Y250ICsgbGVu ID4gcy0+b3V0bGVuKQogICAgICAgIHJldHVybiAxOwogICAgICB3aGlsZSAobGVuLS0pIHsKICAg ICAgICBpZiAoZGlzdCA8PSBzLT5vdXRjbnQgJiYgcy0+b3V0W3MtPm91dGNudCAtIGRpc3RdKQog ICAgICAgICAgcy0+b3V0W3MtPm91dGNudF0gPSBzLT5vdXRbcy0+b3V0Y250IC0gZGlzdF07CiAg ICAgICAgcy0+b3V0Y250Kys7CiAgICAgIH0KICAgIH0KICB9IHdoaWxlIChzeW1ib2wgIT0gMjU2 KTsKICByZXR1cm4gMDsKfQpzdGF0aWMgaW50IHB1ZmZfZml4ZWQoc3RydWN0IHB1ZmZfc3RhdGUq IHMpCnsKICBzdGF0aWMgaW50IHZpcmdpbiA9IDE7CiAgc3RhdGljIHNob3J0IGxlbmNudFtNQVhC SVRTICsgMV0sIGxlbnN5bVtGSVhMQ09ERVNdOwogIHN0YXRpYyBzaG9ydCBkaXN0Y250W01BWEJJ VFMgKyAxXSwgZGlzdHN5bVtNQVhEQ09ERVNdOwogIHN0YXRpYyBzdHJ1Y3QgcHVmZl9odWZmbWFu IGxlbmNvZGUsIGRpc3Rjb2RlOwogIGlmICh2aXJnaW4pIHsKICAgIGxlbmNvZGUuY291bnQgPSBs ZW5jbnQ7CiAgICBsZW5jb2RlLnN5bWJvbCA9IGxlbnN5bTsKICAgIGRpc3Rjb2RlLmNvdW50ID0g ZGlzdGNudDsKICAgIGRpc3Rjb2RlLnN5bWJvbCA9IGRpc3RzeW07CiAgICBzaG9ydCBsZW5ndGhz W0ZJWExDT0RFU107CiAgICBpbnQgc3ltYm9sOwogICAgZm9yIChzeW1ib2wgPSAwOyBzeW1ib2wg PCAxNDQ7IHN5bWJvbCsrKQogICAgICBsZW5ndGhzW3N5bWJvbF0gPSA4OwogICAgZm9yICg7IHN5 bWJvbCA8IDI1Njsgc3ltYm9sKyspCiAgICAgIGxlbmd0aHNbc3ltYm9sXSA9IDk7CiAgICBmb3Ig KDsgc3ltYm9sIDwgMjgwOyBzeW1ib2wrKykKICAgICAgbGVuZ3Roc1tzeW1ib2xdID0gNzsKICAg IGZvciAoOyBzeW1ib2wgPCBGSVhMQ09ERVM7IHN5bWJvbCsrKQogICAgICBsZW5ndGhzW3N5bWJv bF0gPSA4OwogICAgcHVmZl9jb25zdHJ1Y3QoJmxlbmNvZGUsIGxlbmd0aHMsIEZJWExDT0RFUyk7 CiAgICBmb3IgKHN5bWJvbCA9IDA7IHN5bWJvbCA8IE1BWERDT0RFUzsgc3ltYm9sKyspCiAgICAg IGxlbmd0aHNbc3ltYm9sXSA9IDU7CiAgICBwdWZmX2NvbnN0cnVjdCgmZGlzdGNvZGUsIGxlbmd0 aHMsIE1BWERDT0RFUyk7CiAgICB2aXJnaW4gPSAwOwogIH0KICByZXR1cm4gcHVmZl9jb2Rlcyhz LCAmbGVuY29kZSwgJmRpc3Rjb2RlKTsKfQpzdGF0aWMgaW50IHB1ZmZfZHluYW1pYyhzdHJ1Y3Qg cHVmZl9zdGF0ZSogcykKewogIHN0YXRpYyBjb25zdCBzaG9ydCBvcmRlclsxOV0gPSB7MTYsIDE3 LCAxOCwgMCwgOCwgIDcsIDksICA2LCAxMCwgNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDExLCA0LCAgMTIsIDMsIDEzLCAyLCAxNCwgMSwgMTV9OwogIGludCBubGVuID0gcHVm Zl9iaXRzKHMsIDUpICsgMjU3OwogIGludCBuZGlzdCA9IHB1ZmZfYml0cyhzLCA1KSArIDE7CiAg aW50IG5jb2RlID0gcHVmZl9iaXRzKHMsIDQpICsgNDsKICBpZiAobmxlbiA+IE1BWExDT0RFUyB8 fCBuZGlzdCA+IE1BWERDT0RFUykKICAgIHJldHVybiAtMzsKICBzaG9ydCBsZW5ndGhzW01BWENP REVTXTsKICBpbnQgaW5kZXg7CiAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbmNvZGU7IGluZGV4 KyspCiAgICBsZW5ndGhzW29yZGVyW2luZGV4XV0gPSBwdWZmX2JpdHMocywgMyk7CiAgZm9yICg7 IGluZGV4IDwgMTk7IGluZGV4KyspCiAgICBsZW5ndGhzW29yZGVyW2luZGV4XV0gPSAwOwogIHNo b3J0IGxlbmNudFtNQVhCSVRTICsgMV0sIGxlbnN5bVtNQVhMQ09ERVNdOwogIHN0cnVjdCBwdWZm X2h1ZmZtYW4gbGVuY29kZSA9IHtsZW5jbnQsIGxlbnN5bX07CiAgaW50IGVyciA9IHB1ZmZfY29u c3RydWN0KCZsZW5jb2RlLCBsZW5ndGhzLCAxOSk7CiAgaWYgKGVyciAhPSAwKQogICAgcmV0dXJu IC00OwogIGluZGV4ID0gMDsKICB3aGlsZSAoaW5kZXggPCBubGVuICsgbmRpc3QpIHsKICAgIGlu dCBzeW1ib2w7CiAgICBpbnQgbGVuOwogICAgc3ltYm9sID0gcHVmZl9kZWNvZGUocywgJmxlbmNv ZGUpOwogICAgaWYgKHN5bWJvbCA8IDApCiAgICAgIHJldHVybiBzeW1ib2w7CiAgICBpZiAoc3lt Ym9sIDwgMTYpCiAgICAgIGxlbmd0aHNbaW5kZXgrK10gPSBzeW1ib2w7CiAgICBlbHNlIHsKICAg ICAgbGVuID0gMDsKICAgICAgaWYgKHN5bWJvbCA9PSAxNikgewogICAgICAgIGlmIChpbmRleCA9 PSAwKQogICAgICAgICAgcmV0dXJuIC01OwogICAgICAgIGxlbiA9IGxlbmd0aHNbaW5kZXggLSAx XTsKICAgICAgICBzeW1ib2wgPSAzICsgcHVmZl9iaXRzKHMsIDIpOwogICAgICB9IGVsc2UgaWYg KHN5bWJvbCA9PSAxNykKICAgICAgICBzeW1ib2wgPSAzICsgcHVmZl9iaXRzKHMsIDMpOwogICAg ICBlbHNlCiAgICAgICAgc3ltYm9sID0gMTEgKyBwdWZmX2JpdHMocywgNyk7CiAgICAgIGlmIChp bmRleCArIHN5bWJvbCA+IG5sZW4gKyBuZGlzdCkKICAgICAgICByZXR1cm4gLTY7CiAgICAgIHdo aWxlIChzeW1ib2wtLSkKICAgICAgICBsZW5ndGhzW2luZGV4KytdID0gbGVuOwogICAgfQogIH0K ICBpZiAobGVuZ3Roc1syNTZdID09IDApCiAgICByZXR1cm4gLTk7CiAgZXJyID0gcHVmZl9jb25z dHJ1Y3QoJmxlbmNvZGUsIGxlbmd0aHMsIG5sZW4pOwogIGlmIChlcnIgJiYgKGVyciA8IDAgfHwg bmxlbiAhPSBsZW5jb2RlLmNvdW50WzBdICsgbGVuY29kZS5jb3VudFsxXSkpCiAgICByZXR1cm4g LTc7CiAgc2hvcnQgZGlzdGNudFtNQVhCSVRTICsgMV0sIGRpc3RzeW1bTUFYRENPREVTXTsKICBz dHJ1Y3QgcHVmZl9odWZmbWFuIGRpc3Rjb2RlID0ge2Rpc3RjbnQsIGRpc3RzeW19OwogIGVyciA9 IHB1ZmZfY29uc3RydWN0KCZkaXN0Y29kZSwgbGVuZ3RocyArIG5sZW4sIG5kaXN0KTsKICBpZiAo ZXJyICYmIChlcnIgPCAwIHx8IG5kaXN0ICE9IGRpc3Rjb2RlLmNvdW50WzBdICsgZGlzdGNvZGUu Y291bnRbMV0pKQogICAgcmV0dXJuIC04OwogIHJldHVybiBwdWZmX2NvZGVzKHMsICZsZW5jb2Rl LCAmZGlzdGNvZGUpOwp9CnN0YXRpYyBpbnQgcHVmZih1bnNpZ25lZCBjaGFyKiBkZXN0LCB1bnNp Z25lZCBsb25nKiBkZXN0bGVuLAogICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciog c291cmNlLCB1bnNpZ25lZCBsb25nIHNvdXJjZWxlbikKewogIHN0cnVjdCBwdWZmX3N0YXRlIHMg PSB7CiAgICAgIC5vdXQgPSBkZXN0LAogICAgICAub3V0bGVuID0gKmRlc3RsZW4sCiAgICAgIC5v dXRjbnQgPSAwLAogICAgICAuaW4gPSBzb3VyY2UsCiAgICAgIC5pbmxlbiA9IHNvdXJjZWxlbiwK ICAgICAgLmluY250ID0gMCwKICAgICAgLmJpdGJ1ZiA9IDAsCiAgICAgIC5iaXRjbnQgPSAwLAog IH07CiAgaW50IGVycjsKICBpZiAoc2V0am1wKHMuZW52KSAhPSAwKQogICAgZXJyID0gMjsKICBl bHNlIHsKICAgIGludCBsYXN0OwogICAgZG8gewogICAgICBsYXN0ID0gcHVmZl9iaXRzKCZzLCAx KTsKICAgICAgaW50IHR5cGUgPSBwdWZmX2JpdHMoJnMsIDIpOwogICAgICBlcnIgPSB0eXBlID09 IDAgPyBwdWZmX3N0b3JlZCgmcykKICAgICAgICAgICAgICAgICAgICAgIDogKHR5cGUgPT0gMSA/ IHB1ZmZfZml4ZWQoJnMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAodHlw ZSA9PSAyID8gcHVmZl9keW5hbWljKCZzKSA6IC0xKSk7CiAgICAgIGlmIChlcnIgIT0gMCkKICAg ICAgICBicmVhazsKICAgIH0gd2hpbGUgKCFsYXN0KTsKICB9CiAgKmRlc3RsZW4gPSBzLm91dGNu dDsKICByZXR1cm4gZXJyOwp9CgovLyUgRU5EIENPREUgREVSSVZFRCBGUk9NIHB1ZmYue2MsaH0K CiNkZWZpbmUgWkxJQl9IRUFERVJfV0lEVEggMgoKc3RhdGljIGludCBwdWZmX3psaWJfdG9fZmls ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgbG9uZyBzb3VyY2VsZW4sIGludCBkZXN0X2ZkKQp7CiAgaWYgKHNvdXJjZWxl biA8IFpMSUJfSEVBREVSX1dJRFRIKQogICAgcmV0dXJuIDA7CiAgc291cmNlICs9IFpMSUJfSEVB REVSX1dJRFRIOwogIHNvdXJjZWxlbiAtPSBaTElCX0hFQURFUl9XSURUSDsKICBjb25zdCB1bnNp Z25lZCBsb25nIG1heF9kZXN0bGVuID0gMTMyIDw8IDIwOwogIHZvaWQqIHJldCA9IG1tYXAoMCwg bWF4X2Rlc3RsZW4sIFBST1RfV1JJVEUgfCBQUk9UX1JFQUQsCiAgICAgICAgICAgICAgICAgICBN QVBfUFJJVkFURSB8IE1BUF9BTk9OLCAtMSwgMCk7CiAgaWYgKHJldCA9PSBNQVBfRkFJTEVEKQog ICAgcmV0dXJuIC0xOwogIHVuc2lnbmVkIGNoYXIqIGRlc3QgPSAodW5zaWduZWQgY2hhciopcmV0 OwogIHVuc2lnbmVkIGxvbmcgZGVzdGxlbiA9IG1heF9kZXN0bGVuOwogIGludCBlcnIgPSBwdWZm KGRlc3QsICZkZXN0bGVuLCBzb3VyY2UsIHNvdXJjZWxlbik7CiAgaWYgKGVycikgewogICAgbXVu bWFwKGRlc3QsIG1heF9kZXN0bGVuKTsKICAgIGVycm5vID0gLWVycjsKICAgIHJldHVybiAtMTsK ICB9CiAgaWYgKHdyaXRlKGRlc3RfZmQsIGRlc3QsIGRlc3RsZW4pICE9IChzc2l6ZV90KWRlc3Rs ZW4pIHsKICAgIG11bm1hcChkZXN0LCBtYXhfZGVzdGxlbik7CiAgICByZXR1cm4gLTE7CiAgfQog IHJldHVybiBtdW5tYXAoZGVzdCwgbWF4X2Rlc3RsZW4pOwp9CgpzdGF0aWMgaW50IHNldHVwX2xv b3BfZGV2aWNlKHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxvbmcgc2l6ZSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBsb29wbmFtZSwgaW50KiBsb29wZmRf cCkKewogIGludCBlcnIgPSAwLCBsb29wZmQgPSAtMTsKICBpbnQgbWVtZmQgPSBzeXNjYWxsKF9f TlJfbWVtZmRfY3JlYXRlLCAic3l6a2FsbGVyIiwgMCk7CiAgaWYgKG1lbWZkID09IC0xKSB7CiAg ICBlcnIgPSBlcnJubzsKICAgIGdvdG8gZXJyb3I7CiAgfQogIGlmIChwdWZmX3psaWJfdG9fZmls ZShkYXRhLCBzaXplLCBtZW1mZCkpIHsKICAgIGVyciA9IGVycm5vOwogICAgZ290byBlcnJvcl9j bG9zZV9tZW1mZDsKICB9CiAgbG9vcGZkID0gb3Blbihsb29wbmFtZSwgT19SRFdSKTsKICBpZiAo bG9vcGZkID09IC0xKSB7CiAgICBlcnIgPSBlcnJubzsKICAgIGdvdG8gZXJyb3JfY2xvc2VfbWVt ZmQ7CiAgfQogIGlmIChpb2N0bChsb29wZmQsIExPT1BfU0VUX0ZELCBtZW1mZCkpIHsKICAgIGlm IChlcnJubyAhPSBFQlVTWSkgewogICAgICBlcnIgPSBlcnJubzsKICAgICAgZ290byBlcnJvcl9j bG9zZV9sb29wOwogICAgfQogICAgaW9jdGwobG9vcGZkLCBMT09QX0NMUl9GRCwgMCk7CiAgICB1 c2xlZXAoMTAwMCk7CiAgICBpZiAoaW9jdGwobG9vcGZkLCBMT09QX1NFVF9GRCwgbWVtZmQpKSB7 CiAgICAgIGVyciA9IGVycm5vOwogICAgICBnb3RvIGVycm9yX2Nsb3NlX2xvb3A7CiAgICB9CiAg fQogIGNsb3NlKG1lbWZkKTsKICAqbG9vcGZkX3AgPSBsb29wZmQ7CiAgcmV0dXJuIDA7CgplcnJv cl9jbG9zZV9sb29wOgogIGNsb3NlKGxvb3BmZCk7CmVycm9yX2Nsb3NlX21lbWZkOgogIGNsb3Nl KG1lbWZkKTsKZXJyb3I6CiAgZXJybm8gPSBlcnI7CiAgcmV0dXJuIC0xOwp9CgpzdGF0aWMgdm9p ZCByZXNldF9sb29wX2RldmljZShjb25zdCBjaGFyKiBsb29wbmFtZSkKewogIGludCBsb29wZmQg PSBvcGVuKGxvb3BuYW1lLCBPX1JEV1IpOwogIGlmIChsb29wZmQgPT0gLTEpIHsKICAgIHJldHVy bjsKICB9CiAgaWYgKGlvY3RsKGxvb3BmZCwgTE9PUF9DTFJfRkQsIDApKSB7CiAgfQogIGNsb3Nl KGxvb3BmZCk7Cn0KCnN0YXRpYyBsb25nIHN5el9tb3VudF9pbWFnZSh2b2xhdGlsZSBsb25nIGZz YXJnLCB2b2xhdGlsZSBsb25nIGRpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvbGF0 aWxlIGxvbmcgZmxhZ3MsIHZvbGF0aWxlIGxvbmcgb3B0c2FyZywKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZvbGF0aWxlIGxvbmcgY2hhbmdlX2RpciwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgc2l6ZSwgdm9sYXRpbGUgbG9uZyBpbWFnZSkK ewogIHVuc2lnbmVkIGNoYXIqIGRhdGEgPSAodW5zaWduZWQgY2hhciopaW1hZ2U7CiAgaW50IHJl cyA9IC0xLCBlcnIgPSAwLCBuZWVkX2xvb3BfZGV2aWNlID0gISFzaXplOwogIGNoYXIqIG1vdW50 X29wdHMgPSAoY2hhciopb3B0c2FyZzsKICBjaGFyKiB0YXJnZXQgPSAoY2hhciopZGlyOwogIGNo YXIqIGZzID0gKGNoYXIqKWZzYXJnOwogIGNoYXIqIHNvdXJjZSA9IE5VTEw7CiAgY2hhciBsb29w bmFtZVs2NF07CiAgaWYgKG5lZWRfbG9vcF9kZXZpY2UpIHsKICAgIGludCBsb29wZmQ7CiAgICBt ZW1zZXQobG9vcG5hbWUsIDAsIHNpemVvZihsb29wbmFtZSkpOwogICAgc25wcmludGYobG9vcG5h bWUsIHNpemVvZihsb29wbmFtZSksICIvZGV2L2xvb3AlbGx1IiwgcHJvY2lkKTsKICAgIGlmIChz ZXR1cF9sb29wX2RldmljZShkYXRhLCBzaXplLCBsb29wbmFtZSwgJmxvb3BmZCkgPT0gLTEpCiAg ICAgIHJldHVybiAtMTsKICAgIGNsb3NlKGxvb3BmZCk7CiAgICBzb3VyY2UgPSBsb29wbmFtZTsK ICB9CiAgbWtkaXIodGFyZ2V0LCAwNzc3KTsKICBjaGFyIG9wdHNbMjU2XTsKICBtZW1zZXQob3B0 cywgMCwgc2l6ZW9mKG9wdHMpKTsKICBpZiAoc3RybGVuKG1vdW50X29wdHMpID4gKHNpemVvZihv cHRzKSAtIDMyKSkgewogIH0KICBzdHJuY3B5KG9wdHMsIG1vdW50X29wdHMsIHNpemVvZihvcHRz KSAtIDMyKTsKICBpZiAoc3RyY21wKGZzLCAiaXNvOTY2MCIpID09IDApIHsKICAgIGZsYWdzIHw9 IE1TX1JET05MWTsKICB9IGVsc2UgaWYgKHN0cm5jbXAoZnMsICJleHQiLCAzKSA9PSAwKSB7CiAg ICBib29sIGhhc19yZW1vdW50X3JvID0gZmFsc2U7CiAgICBjaGFyKiByZW1vdW50X3JvX3N0YXJ0 ID0gc3Ryc3RyKG9wdHMsICJlcnJvcnM9cmVtb3VudC1ybyIpOwogICAgaWYgKHJlbW91bnRfcm9f c3RhcnQgIT0gTlVMTCkgewogICAgICBjaGFyIGFmdGVyID0gKihyZW1vdW50X3JvX3N0YXJ0ICsg c3RybGVuKCJlcnJvcnM9cmVtb3VudC1ybyIpKTsKICAgICAgY2hhciBiZWZvcmUgPSByZW1vdW50 X3JvX3N0YXJ0ID09IG9wdHMgPyAnXDAnIDogKihyZW1vdW50X3JvX3N0YXJ0IC0gMSk7CiAgICAg IGhhc19yZW1vdW50X3JvID0gKChiZWZvcmUgPT0gJ1wwJyB8fCBiZWZvcmUgPT0gJywnKSAmJgog ICAgICAgICAgICAgICAgICAgICAgICAoYWZ0ZXIgPT0gJ1wwJyB8fCBhZnRlciA9PSAnLCcpKTsK ICAgIH0KICAgIGlmIChzdHJzdHIob3B0cywgImVycm9ycz1wYW5pYyIpIHx8ICFoYXNfcmVtb3Vu dF9ybykKICAgICAgc3RyY2F0KG9wdHMsICIsZXJyb3JzPWNvbnRpbnVlIik7CiAgfSBlbHNlIGlm IChzdHJjbXAoZnMsICJ4ZnMiKSA9PSAwKSB7CiAgICBzdHJjYXQob3B0cywgIixub3V1aWQiKTsK ICB9CiAgcmVzID0gbW91bnQoc291cmNlLCB0YXJnZXQsIGZzLCBmbGFncywgb3B0cyk7CiAgaWYg KHJlcyA9PSAtMSkgewogICAgZXJyID0gZXJybm87CiAgICBnb3RvIGVycm9yX2NsZWFyX2xvb3A7 CiAgfQogIHJlcyA9IG9wZW4odGFyZ2V0LCBPX1JET05MWSB8IE9fRElSRUNUT1JZKTsKICBpZiAo cmVzID09IC0xKSB7CiAgICBlcnIgPSBlcnJubzsKICAgIGdvdG8gZXJyb3JfY2xlYXJfbG9vcDsK ICB9CiAgaWYgKGNoYW5nZV9kaXIpIHsKICAgIHJlcyA9IGNoZGlyKHRhcmdldCk7CiAgICBpZiAo cmVzID09IC0xKSB7CiAgICAgIGVyciA9IGVycm5vOwogICAgfQogIH0KCmVycm9yX2NsZWFyX2xv b3A6CiAgaWYgKG5lZWRfbG9vcF9kZXZpY2UpCiAgICByZXNldF9sb29wX2RldmljZShsb29wbmFt ZSk7CiAgZXJybm8gPSBlcnI7CiAgcmV0dXJuIHJlczsKfQoKI2RlZmluZSBYVF9UQUJMRV9TSVpF IDE1MzYKI2RlZmluZSBYVF9NQVhfRU5UUklFUyAxMAoKc3RydWN0IHh0X2NvdW50ZXJzIHsKICB1 aW50NjRfdCBwY250LCBiY250Owp9OwoKc3RydWN0IGlwdF9nZXRpbmZvIHsKICBjaGFyIG5hbWVb MzJdOwogIHVuc2lnbmVkIGludCB2YWxpZF9ob29rczsKICB1bnNpZ25lZCBpbnQgaG9va19lbnRy eVs1XTsKICB1bnNpZ25lZCBpbnQgdW5kZXJmbG93WzVdOwogIHVuc2lnbmVkIGludCBudW1fZW50 cmllczsKICB1bnNpZ25lZCBpbnQgc2l6ZTsKfTsKCnN0cnVjdCBpcHRfZ2V0X2VudHJpZXMgewog IGNoYXIgbmFtZVszMl07CiAgdW5zaWduZWQgaW50IHNpemU7CiAgdWludDY0X3QgZW50cnl0YWJs ZVtYVF9UQUJMRV9TSVpFIC8gc2l6ZW9mKHVpbnQ2NF90KV07Cn07CgpzdHJ1Y3QgaXB0X3JlcGxh Y2UgewogIGNoYXIgbmFtZVszMl07CiAgdW5zaWduZWQgaW50IHZhbGlkX2hvb2tzOwogIHVuc2ln bmVkIGludCBudW1fZW50cmllczsKICB1bnNpZ25lZCBpbnQgc2l6ZTsKICB1bnNpZ25lZCBpbnQg aG9va19lbnRyeVs1XTsKICB1bnNpZ25lZCBpbnQgdW5kZXJmbG93WzVdOwogIHVuc2lnbmVkIGlu dCBudW1fY291bnRlcnM7CiAgc3RydWN0IHh0X2NvdW50ZXJzKiBjb3VudGVyczsKICB1aW50NjRf dCBlbnRyeXRhYmxlW1hUX1RBQkxFX1NJWkUgLyBzaXplb2YodWludDY0X3QpXTsKfTsKCnN0cnVj dCBpcHRfdGFibGVfZGVzYyB7CiAgY29uc3QgY2hhciogbmFtZTsKICBzdHJ1Y3QgaXB0X2dldGlu Zm8gaW5mbzsKICBzdHJ1Y3QgaXB0X3JlcGxhY2UgcmVwbGFjZTsKfTsKCnN0YXRpYyBzdHJ1Y3Qg aXB0X3RhYmxlX2Rlc2MgaXB2NF90YWJsZXNbXSA9IHsKICAgIHsubmFtZSA9ICJmaWx0ZXIifSwg ey5uYW1lID0gIm5hdCJ9LCAgICAgIHsubmFtZSA9ICJtYW5nbGUifSwKICAgIHsubmFtZSA9ICJy YXcifSwgICAgey5uYW1lID0gInNlY3VyaXR5In0sCn07CgpzdGF0aWMgc3RydWN0IGlwdF90YWJs ZV9kZXNjIGlwdjZfdGFibGVzW10gPSB7CiAgICB7Lm5hbWUgPSAiZmlsdGVyIn0sIHsubmFtZSA9 ICJuYXQifSwgICAgICB7Lm5hbWUgPSAibWFuZ2xlIn0sCiAgICB7Lm5hbWUgPSAicmF3In0sICAg IHsubmFtZSA9ICJzZWN1cml0eSJ9LAp9OwoKI2RlZmluZSBJUFRfQkFTRV9DVEwgNjQKI2RlZmlu ZSBJUFRfU09fU0VUX1JFUExBQ0UgKElQVF9CQVNFX0NUTCkKI2RlZmluZSBJUFRfU09fR0VUX0lO Rk8gKElQVF9CQVNFX0NUTCkKI2RlZmluZSBJUFRfU09fR0VUX0VOVFJJRVMgKElQVF9CQVNFX0NU TCArIDEpCgpzdHJ1Y3QgYXJwdF9nZXRpbmZvIHsKICBjaGFyIG5hbWVbMzJdOwogIHVuc2lnbmVk IGludCB2YWxpZF9ob29rczsKICB1bnNpZ25lZCBpbnQgaG9va19lbnRyeVszXTsKICB1bnNpZ25l ZCBpbnQgdW5kZXJmbG93WzNdOwogIHVuc2lnbmVkIGludCBudW1fZW50cmllczsKICB1bnNpZ25l ZCBpbnQgc2l6ZTsKfTsKCnN0cnVjdCBhcnB0X2dldF9lbnRyaWVzIHsKICBjaGFyIG5hbWVbMzJd OwogIHVuc2lnbmVkIGludCBzaXplOwogIHVpbnQ2NF90IGVudHJ5dGFibGVbWFRfVEFCTEVfU0la RSAvIHNpemVvZih1aW50NjRfdCldOwp9OwoKc3RydWN0IGFycHRfcmVwbGFjZSB7CiAgY2hhciBu YW1lWzMyXTsKICB1bnNpZ25lZCBpbnQgdmFsaWRfaG9va3M7CiAgdW5zaWduZWQgaW50IG51bV9l bnRyaWVzOwogIHVuc2lnbmVkIGludCBzaXplOwogIHVuc2lnbmVkIGludCBob29rX2VudHJ5WzNd OwogIHVuc2lnbmVkIGludCB1bmRlcmZsb3dbM107CiAgdW5zaWduZWQgaW50IG51bV9jb3VudGVy czsKICBzdHJ1Y3QgeHRfY291bnRlcnMqIGNvdW50ZXJzOwogIHVpbnQ2NF90IGVudHJ5dGFibGVb WFRfVEFCTEVfU0laRSAvIHNpemVvZih1aW50NjRfdCldOwp9OwoKc3RydWN0IGFycHRfdGFibGVf ZGVzYyB7CiAgY29uc3QgY2hhciogbmFtZTsKICBzdHJ1Y3QgYXJwdF9nZXRpbmZvIGluZm87CiAg c3RydWN0IGFycHRfcmVwbGFjZSByZXBsYWNlOwp9OwoKc3RhdGljIHN0cnVjdCBhcnB0X3RhYmxl X2Rlc2MgYXJwdF90YWJsZXNbXSA9IHsKICAgIHsubmFtZSA9ICJmaWx0ZXIifSwKfTsKCiNkZWZp bmUgQVJQVF9CQVNFX0NUTCA5NgojZGVmaW5lIEFSUFRfU09fU0VUX1JFUExBQ0UgKEFSUFRfQkFT RV9DVEwpCiNkZWZpbmUgQVJQVF9TT19HRVRfSU5GTyAoQVJQVF9CQVNFX0NUTCkKI2RlZmluZSBB UlBUX1NPX0dFVF9FTlRSSUVTIChBUlBUX0JBU0VfQ1RMICsgMSkKCnN0YXRpYyB2b2lkIGNoZWNr cG9pbnRfaXB0YWJsZXMoc3RydWN0IGlwdF90YWJsZV9kZXNjKiB0YWJsZXMsIGludCBudW1fdGFi bGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmYW1pbHksIGludCBsZXZl bCkKewogIGludCBmZCA9IHNvY2tldChmYW1pbHksIFNPQ0tfU1RSRUFNLCBJUFBST1RPX1RDUCk7 CiAgaWYgKGZkID09IC0xKSB7CiAgICBzd2l0Y2ggKGVycm5vKSB7CiAgICBjYXNlIEVBRk5PU1VQ UE9SVDoKICAgIGNhc2UgRU5PUFJPVE9PUFQ6CiAgICAgIHJldHVybjsKICAgIH0KICAgIGV4aXQo MSk7CiAgfQogIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtX3RhYmxlczsgaSsrKSB7CiAgICBzdHJ1 Y3QgaXB0X3RhYmxlX2Rlc2MqIHRhYmxlID0gJnRhYmxlc1tpXTsKICAgIHN0cmNweSh0YWJsZS0+ aW5mby5uYW1lLCB0YWJsZS0+bmFtZSk7CiAgICBzdHJjcHkodGFibGUtPnJlcGxhY2UubmFtZSwg dGFibGUtPm5hbWUpOwogICAgc29ja2xlbl90IG9wdGxlbiA9IHNpemVvZih0YWJsZS0+aW5mbyk7 CiAgICBpZiAoZ2V0c29ja29wdChmZCwgbGV2ZWwsIElQVF9TT19HRVRfSU5GTywgJnRhYmxlLT5p bmZvLCAmb3B0bGVuKSkgewogICAgICBzd2l0Y2ggKGVycm5vKSB7CiAgICAgIGNhc2UgRVBFUk06 CiAgICAgIGNhc2UgRU5PRU5UOgogICAgICBjYXNlIEVOT1BST1RPT1BUOgogICAgICAgIGNvbnRp bnVlOwogICAgICB9CiAgICAgIGV4aXQoMSk7CiAgICB9CiAgICBpZiAodGFibGUtPmluZm8uc2l6 ZSA+IHNpemVvZih0YWJsZS0+cmVwbGFjZS5lbnRyeXRhYmxlKSkKICAgICAgZXhpdCgxKTsKICAg IGlmICh0YWJsZS0+aW5mby5udW1fZW50cmllcyA+IFhUX01BWF9FTlRSSUVTKQogICAgICBleGl0 KDEpOwogICAgc3RydWN0IGlwdF9nZXRfZW50cmllcyBlbnRyaWVzOwogICAgbWVtc2V0KCZlbnRy aWVzLCAwLCBzaXplb2YoZW50cmllcykpOwogICAgc3RyY3B5KGVudHJpZXMubmFtZSwgdGFibGUt Pm5hbWUpOwogICAgZW50cmllcy5zaXplID0gdGFibGUtPmluZm8uc2l6ZTsKICAgIG9wdGxlbiA9 IHNpemVvZihlbnRyaWVzKSAtIHNpemVvZihlbnRyaWVzLmVudHJ5dGFibGUpICsgdGFibGUtPmlu Zm8uc2l6ZTsKICAgIGlmIChnZXRzb2Nrb3B0KGZkLCBsZXZlbCwgSVBUX1NPX0dFVF9FTlRSSUVT LCAmZW50cmllcywgJm9wdGxlbikpCiAgICAgIGV4aXQoMSk7CiAgICB0YWJsZS0+cmVwbGFjZS52 YWxpZF9ob29rcyA9IHRhYmxlLT5pbmZvLnZhbGlkX2hvb2tzOwogICAgdGFibGUtPnJlcGxhY2Uu bnVtX2VudHJpZXMgPSB0YWJsZS0+aW5mby5udW1fZW50cmllczsKICAgIHRhYmxlLT5yZXBsYWNl LnNpemUgPSB0YWJsZS0+aW5mby5zaXplOwogICAgbWVtY3B5KHRhYmxlLT5yZXBsYWNlLmhvb2tf ZW50cnksIHRhYmxlLT5pbmZvLmhvb2tfZW50cnksCiAgICAgICAgICAgc2l6ZW9mKHRhYmxlLT5y ZXBsYWNlLmhvb2tfZW50cnkpKTsKICAgIG1lbWNweSh0YWJsZS0+cmVwbGFjZS51bmRlcmZsb3cs IHRhYmxlLT5pbmZvLnVuZGVyZmxvdywKICAgICAgICAgICBzaXplb2YodGFibGUtPnJlcGxhY2Uu dW5kZXJmbG93KSk7CiAgICBtZW1jcHkodGFibGUtPnJlcGxhY2UuZW50cnl0YWJsZSwgZW50cmll cy5lbnRyeXRhYmxlLCB0YWJsZS0+aW5mby5zaXplKTsKICB9CiAgY2xvc2UoZmQpOwp9CgpzdGF0 aWMgdm9pZCByZXNldF9pcHRhYmxlcyhzdHJ1Y3QgaXB0X3RhYmxlX2Rlc2MqIHRhYmxlcywgaW50 IG51bV90YWJsZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmYW1pbHksIGludCBs ZXZlbCkKewogIGludCBmZCA9IHNvY2tldChmYW1pbHksIFNPQ0tfU1RSRUFNLCBJUFBST1RPX1RD UCk7CiAgaWYgKGZkID09IC0xKSB7CiAgICBzd2l0Y2ggKGVycm5vKSB7CiAgICBjYXNlIEVBRk5P U1VQUE9SVDoKICAgIGNhc2UgRU5PUFJPVE9PUFQ6CiAgICAgIHJldHVybjsKICAgIH0KICAgIGV4 aXQoMSk7CiAgfQogIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtX3RhYmxlczsgaSsrKSB7CiAgICBz dHJ1Y3QgaXB0X3RhYmxlX2Rlc2MqIHRhYmxlID0gJnRhYmxlc1tpXTsKICAgIGlmICh0YWJsZS0+ aW5mby52YWxpZF9ob29rcyA9PSAwKQogICAgICBjb250aW51ZTsKICAgIHN0cnVjdCBpcHRfZ2V0 aW5mbyBpbmZvOwogICAgbWVtc2V0KCZpbmZvLCAwLCBzaXplb2YoaW5mbykpOwogICAgc3RyY3B5 KGluZm8ubmFtZSwgdGFibGUtPm5hbWUpOwogICAgc29ja2xlbl90IG9wdGxlbiA9IHNpemVvZihp bmZvKTsKICAgIGlmIChnZXRzb2Nrb3B0KGZkLCBsZXZlbCwgSVBUX1NPX0dFVF9JTkZPLCAmaW5m bywgJm9wdGxlbikpCiAgICAgIGV4aXQoMSk7CiAgICBpZiAobWVtY21wKCZ0YWJsZS0+aW5mbywg JmluZm8sIHNpemVvZih0YWJsZS0+aW5mbykpID09IDApIHsKICAgICAgc3RydWN0IGlwdF9nZXRf ZW50cmllcyBlbnRyaWVzOwogICAgICBtZW1zZXQoJmVudHJpZXMsIDAsIHNpemVvZihlbnRyaWVz KSk7CiAgICAgIHN0cmNweShlbnRyaWVzLm5hbWUsIHRhYmxlLT5uYW1lKTsKICAgICAgZW50cmll cy5zaXplID0gdGFibGUtPmluZm8uc2l6ZTsKICAgICAgb3B0bGVuID0gc2l6ZW9mKGVudHJpZXMp IC0gc2l6ZW9mKGVudHJpZXMuZW50cnl0YWJsZSkgKyBlbnRyaWVzLnNpemU7CiAgICAgIGlmIChn ZXRzb2Nrb3B0KGZkLCBsZXZlbCwgSVBUX1NPX0dFVF9FTlRSSUVTLCAmZW50cmllcywgJm9wdGxl bikpCiAgICAgICAgZXhpdCgxKTsKICAgICAgaWYgKG1lbWNtcCh0YWJsZS0+cmVwbGFjZS5lbnRy eXRhYmxlLCBlbnRyaWVzLmVudHJ5dGFibGUsCiAgICAgICAgICAgICAgICAgdGFibGUtPmluZm8u c2l6ZSkgPT0gMCkKICAgICAgICBjb250aW51ZTsKICAgIH0KICAgIHN0cnVjdCB4dF9jb3VudGVy cyBjb3VudGVyc1tYVF9NQVhfRU5UUklFU107CiAgICB0YWJsZS0+cmVwbGFjZS5udW1fY291bnRl cnMgPSBpbmZvLm51bV9lbnRyaWVzOwogICAgdGFibGUtPnJlcGxhY2UuY291bnRlcnMgPSBjb3Vu dGVyczsKICAgIG9wdGxlbiA9IHNpemVvZih0YWJsZS0+cmVwbGFjZSkgLSBzaXplb2YodGFibGUt PnJlcGxhY2UuZW50cnl0YWJsZSkgKwogICAgICAgICAgICAgdGFibGUtPnJlcGxhY2Uuc2l6ZTsK ICAgIGlmIChzZXRzb2Nrb3B0KGZkLCBsZXZlbCwgSVBUX1NPX1NFVF9SRVBMQUNFLCAmdGFibGUt PnJlcGxhY2UsIG9wdGxlbikpCiAgICAgIGV4aXQoMSk7CiAgfQogIGNsb3NlKGZkKTsKfQoKc3Rh dGljIHZvaWQgY2hlY2twb2ludF9hcnB0YWJsZXModm9pZCkKewogIGludCBmZCA9IHNvY2tldChB Rl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19UQ1ApOwogIGlmIChmZCA9PSAtMSkgewogICAg c3dpdGNoIChlcnJubykgewogICAgY2FzZSBFQUZOT1NVUFBPUlQ6CiAgICBjYXNlIEVOT1BST1RP T1BUOgogICAgICByZXR1cm47CiAgICB9CiAgICBleGl0KDEpOwogIH0KICBmb3IgKHVuc2lnbmVk IGkgPSAwOyBpIDwgc2l6ZW9mKGFycHRfdGFibGVzKSAvIHNpemVvZihhcnB0X3RhYmxlc1swXSk7 IGkrKykgewogICAgc3RydWN0IGFycHRfdGFibGVfZGVzYyogdGFibGUgPSAmYXJwdF90YWJsZXNb aV07CiAgICBzdHJjcHkodGFibGUtPmluZm8ubmFtZSwgdGFibGUtPm5hbWUpOwogICAgc3RyY3B5 KHRhYmxlLT5yZXBsYWNlLm5hbWUsIHRhYmxlLT5uYW1lKTsKICAgIHNvY2tsZW5fdCBvcHRsZW4g PSBzaXplb2YodGFibGUtPmluZm8pOwogICAgaWYgKGdldHNvY2tvcHQoZmQsIFNPTF9JUCwgQVJQ VF9TT19HRVRfSU5GTywgJnRhYmxlLT5pbmZvLCAmb3B0bGVuKSkgewogICAgICBzd2l0Y2ggKGVy cm5vKSB7CiAgICAgIGNhc2UgRVBFUk06CiAgICAgIGNhc2UgRU5PRU5UOgogICAgICBjYXNlIEVO T1BST1RPT1BUOgogICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgICAgIGV4aXQoMSk7CiAgICB9 CiAgICBpZiAodGFibGUtPmluZm8uc2l6ZSA+IHNpemVvZih0YWJsZS0+cmVwbGFjZS5lbnRyeXRh YmxlKSkKICAgICAgZXhpdCgxKTsKICAgIGlmICh0YWJsZS0+aW5mby5udW1fZW50cmllcyA+IFhU X01BWF9FTlRSSUVTKQogICAgICBleGl0KDEpOwogICAgc3RydWN0IGFycHRfZ2V0X2VudHJpZXMg ZW50cmllczsKICAgIG1lbXNldCgmZW50cmllcywgMCwgc2l6ZW9mKGVudHJpZXMpKTsKICAgIHN0 cmNweShlbnRyaWVzLm5hbWUsIHRhYmxlLT5uYW1lKTsKICAgIGVudHJpZXMuc2l6ZSA9IHRhYmxl LT5pbmZvLnNpemU7CiAgICBvcHRsZW4gPSBzaXplb2YoZW50cmllcykgLSBzaXplb2YoZW50cmll cy5lbnRyeXRhYmxlKSArIHRhYmxlLT5pbmZvLnNpemU7CiAgICBpZiAoZ2V0c29ja29wdChmZCwg U09MX0lQLCBBUlBUX1NPX0dFVF9FTlRSSUVTLCAmZW50cmllcywgJm9wdGxlbikpCiAgICAgIGV4 aXQoMSk7CiAgICB0YWJsZS0+cmVwbGFjZS52YWxpZF9ob29rcyA9IHRhYmxlLT5pbmZvLnZhbGlk X2hvb2tzOwogICAgdGFibGUtPnJlcGxhY2UubnVtX2VudHJpZXMgPSB0YWJsZS0+aW5mby5udW1f ZW50cmllczsKICAgIHRhYmxlLT5yZXBsYWNlLnNpemUgPSB0YWJsZS0+aW5mby5zaXplOwogICAg bWVtY3B5KHRhYmxlLT5yZXBsYWNlLmhvb2tfZW50cnksIHRhYmxlLT5pbmZvLmhvb2tfZW50cnks CiAgICAgICAgICAgc2l6ZW9mKHRhYmxlLT5yZXBsYWNlLmhvb2tfZW50cnkpKTsKICAgIG1lbWNw eSh0YWJsZS0+cmVwbGFjZS51bmRlcmZsb3csIHRhYmxlLT5pbmZvLnVuZGVyZmxvdywKICAgICAg ICAgICBzaXplb2YodGFibGUtPnJlcGxhY2UudW5kZXJmbG93KSk7CiAgICBtZW1jcHkodGFibGUt PnJlcGxhY2UuZW50cnl0YWJsZSwgZW50cmllcy5lbnRyeXRhYmxlLCB0YWJsZS0+aW5mby5zaXpl KTsKICB9CiAgY2xvc2UoZmQpOwp9CgpzdGF0aWMgdm9pZCByZXNldF9hcnB0YWJsZXMoKQp7CiAg aW50IGZkID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfU1RSRUFNLCBJUFBST1RPX1RDUCk7CiAgaWYg KGZkID09IC0xKSB7CiAgICBzd2l0Y2ggKGVycm5vKSB7CiAgICBjYXNlIEVBRk5PU1VQUE9SVDoK ICAgIGNhc2UgRU5PUFJPVE9PUFQ6CiAgICAgIHJldHVybjsKICAgIH0KICAgIGV4aXQoMSk7CiAg fQogIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplb2YoYXJwdF90YWJsZXMpIC8gc2l6ZW9m KGFycHRfdGFibGVzWzBdKTsgaSsrKSB7CiAgICBzdHJ1Y3QgYXJwdF90YWJsZV9kZXNjKiB0YWJs ZSA9ICZhcnB0X3RhYmxlc1tpXTsKICAgIGlmICh0YWJsZS0+aW5mby52YWxpZF9ob29rcyA9PSAw KQogICAgICBjb250aW51ZTsKICAgIHN0cnVjdCBhcnB0X2dldGluZm8gaW5mbzsKICAgIG1lbXNl dCgmaW5mbywgMCwgc2l6ZW9mKGluZm8pKTsKICAgIHN0cmNweShpbmZvLm5hbWUsIHRhYmxlLT5u YW1lKTsKICAgIHNvY2tsZW5fdCBvcHRsZW4gPSBzaXplb2YoaW5mbyk7CiAgICBpZiAoZ2V0c29j a29wdChmZCwgU09MX0lQLCBBUlBUX1NPX0dFVF9JTkZPLCAmaW5mbywgJm9wdGxlbikpCiAgICAg IGV4aXQoMSk7CiAgICBpZiAobWVtY21wKCZ0YWJsZS0+aW5mbywgJmluZm8sIHNpemVvZih0YWJs ZS0+aW5mbykpID09IDApIHsKICAgICAgc3RydWN0IGFycHRfZ2V0X2VudHJpZXMgZW50cmllczsK ICAgICAgbWVtc2V0KCZlbnRyaWVzLCAwLCBzaXplb2YoZW50cmllcykpOwogICAgICBzdHJjcHko ZW50cmllcy5uYW1lLCB0YWJsZS0+bmFtZSk7CiAgICAgIGVudHJpZXMuc2l6ZSA9IHRhYmxlLT5p bmZvLnNpemU7CiAgICAgIG9wdGxlbiA9IHNpemVvZihlbnRyaWVzKSAtIHNpemVvZihlbnRyaWVz LmVudHJ5dGFibGUpICsgZW50cmllcy5zaXplOwogICAgICBpZiAoZ2V0c29ja29wdChmZCwgU09M X0lQLCBBUlBUX1NPX0dFVF9FTlRSSUVTLCAmZW50cmllcywgJm9wdGxlbikpCiAgICAgICAgZXhp dCgxKTsKICAgICAgaWYgKG1lbWNtcCh0YWJsZS0+cmVwbGFjZS5lbnRyeXRhYmxlLCBlbnRyaWVz LmVudHJ5dGFibGUsCiAgICAgICAgICAgICAgICAgdGFibGUtPmluZm8uc2l6ZSkgPT0gMCkKICAg ICAgICBjb250aW51ZTsKICAgIH0gZWxzZSB7CiAgICB9CiAgICBzdHJ1Y3QgeHRfY291bnRlcnMg Y291bnRlcnNbWFRfTUFYX0VOVFJJRVNdOwogICAgdGFibGUtPnJlcGxhY2UubnVtX2NvdW50ZXJz ID0gaW5mby5udW1fZW50cmllczsKICAgIHRhYmxlLT5yZXBsYWNlLmNvdW50ZXJzID0gY291bnRl cnM7CiAgICBvcHRsZW4gPSBzaXplb2YodGFibGUtPnJlcGxhY2UpIC0gc2l6ZW9mKHRhYmxlLT5y ZXBsYWNlLmVudHJ5dGFibGUpICsKICAgICAgICAgICAgIHRhYmxlLT5yZXBsYWNlLnNpemU7CiAg ICBpZiAoc2V0c29ja29wdChmZCwgU09MX0lQLCBBUlBUX1NPX1NFVF9SRVBMQUNFLCAmdGFibGUt PnJlcGxhY2UsIG9wdGxlbikpCiAgICAgIGV4aXQoMSk7CiAgfQogIGNsb3NlKGZkKTsKfQoKI2Rl ZmluZSBORl9CUl9OVU1IT09LUyA2CiNkZWZpbmUgRUJUX1RBQkxFX01BWE5BTUVMRU4gMzIKI2Rl ZmluZSBFQlRfQ0hBSU5fTUFYTkFNRUxFTiAzMgojZGVmaW5lIEVCVF9CQVNFX0NUTCAxMjgKI2Rl ZmluZSBFQlRfU09fU0VUX0VOVFJJRVMgKEVCVF9CQVNFX0NUTCkKI2RlZmluZSBFQlRfU09fR0VU X0lORk8gKEVCVF9CQVNFX0NUTCkKI2RlZmluZSBFQlRfU09fR0VUX0VOVFJJRVMgKEVCVF9TT19H RVRfSU5GTyArIDEpCiNkZWZpbmUgRUJUX1NPX0dFVF9JTklUX0lORk8gKEVCVF9TT19HRVRfRU5U UklFUyArIDEpCiNkZWZpbmUgRUJUX1NPX0dFVF9JTklUX0VOVFJJRVMgKEVCVF9TT19HRVRfSU5J VF9JTkZPICsgMSkKCnN0cnVjdCBlYnRfcmVwbGFjZSB7CiAgY2hhciBuYW1lW0VCVF9UQUJMRV9N QVhOQU1FTEVOXTsKICB1bnNpZ25lZCBpbnQgdmFsaWRfaG9va3M7CiAgdW5zaWduZWQgaW50IG5l bnRyaWVzOwogIHVuc2lnbmVkIGludCBlbnRyaWVzX3NpemU7CiAgc3RydWN0IGVidF9lbnRyaWVz KiBob29rX2VudHJ5W05GX0JSX05VTUhPT0tTXTsKICB1bnNpZ25lZCBpbnQgbnVtX2NvdW50ZXJz OwogIHN0cnVjdCBlYnRfY291bnRlciogY291bnRlcnM7CiAgY2hhciogZW50cmllczsKfTsKCnN0 cnVjdCBlYnRfZW50cmllcyB7CiAgdW5zaWduZWQgaW50IGRpc3Rpbmd1aXNoZXI7CiAgY2hhciBu YW1lW0VCVF9DSEFJTl9NQVhOQU1FTEVOXTsKICB1bnNpZ25lZCBpbnQgY291bnRlcl9vZmZzZXQ7 CiAgaW50IHBvbGljeTsKICB1bnNpZ25lZCBpbnQgbmVudHJpZXM7CiAgY2hhciBkYXRhWzBdIF9f YXR0cmlidXRlX18oKGFsaWduZWQoX19hbGlnbm9mX18oc3RydWN0IGVidF9yZXBsYWNlKSkpKTsK fTsKCnN0cnVjdCBlYnRfdGFibGVfZGVzYyB7CiAgY29uc3QgY2hhciogbmFtZTsKICBzdHJ1Y3Qg ZWJ0X3JlcGxhY2UgcmVwbGFjZTsKICBjaGFyIGVudHJ5dGFibGVbWFRfVEFCTEVfU0laRV07Cn07 CgpzdGF0aWMgc3RydWN0IGVidF90YWJsZV9kZXNjIGVidF90YWJsZXNbXSA9IHsKICAgIHsubmFt ZSA9ICJmaWx0ZXIifSwKICAgIHsubmFtZSA9ICJuYXQifSwKICAgIHsubmFtZSA9ICJicm91dGUi fSwKfTsKCnN0YXRpYyB2b2lkIGNoZWNrcG9pbnRfZWJ0YWJsZXModm9pZCkKewogIGludCBmZCA9 IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19UQ1ApOwogIGlmIChmZCA9PSAt MSkgewogICAgc3dpdGNoIChlcnJubykgewogICAgY2FzZSBFQUZOT1NVUFBPUlQ6CiAgICBjYXNl IEVOT1BST1RPT1BUOgogICAgICByZXR1cm47CiAgICB9CiAgICBleGl0KDEpOwogIH0KICBmb3Ig KHNpemVfdCBpID0gMDsgaSA8IHNpemVvZihlYnRfdGFibGVzKSAvIHNpemVvZihlYnRfdGFibGVz WzBdKTsgaSsrKSB7CiAgICBzdHJ1Y3QgZWJ0X3RhYmxlX2Rlc2MqIHRhYmxlID0gJmVidF90YWJs ZXNbaV07CiAgICBzdHJjcHkodGFibGUtPnJlcGxhY2UubmFtZSwgdGFibGUtPm5hbWUpOwogICAg c29ja2xlbl90IG9wdGxlbiA9IHNpemVvZih0YWJsZS0+cmVwbGFjZSk7CiAgICBpZiAoZ2V0c29j a29wdChmZCwgU09MX0lQLCBFQlRfU09fR0VUX0lOSVRfSU5GTywgJnRhYmxlLT5yZXBsYWNlLAog ICAgICAgICAgICAgICAgICAgJm9wdGxlbikpIHsKICAgICAgc3dpdGNoIChlcnJubykgewogICAg ICBjYXNlIEVQRVJNOgogICAgICBjYXNlIEVOT0VOVDoKICAgICAgY2FzZSBFTk9QUk9UT09QVDoK ICAgICAgICBjb250aW51ZTsKICAgICAgfQogICAgICBleGl0KDEpOwogICAgfQogICAgaWYgKHRh YmxlLT5yZXBsYWNlLmVudHJpZXNfc2l6ZSA+IHNpemVvZih0YWJsZS0+ZW50cnl0YWJsZSkpCiAg ICAgIGV4aXQoMSk7CiAgICB0YWJsZS0+cmVwbGFjZS5udW1fY291bnRlcnMgPSAwOwogICAgdGFi bGUtPnJlcGxhY2UuZW50cmllcyA9IHRhYmxlLT5lbnRyeXRhYmxlOwogICAgb3B0bGVuID0gc2l6 ZW9mKHRhYmxlLT5yZXBsYWNlKSArIHRhYmxlLT5yZXBsYWNlLmVudHJpZXNfc2l6ZTsKICAgIGlm IChnZXRzb2Nrb3B0KGZkLCBTT0xfSVAsIEVCVF9TT19HRVRfSU5JVF9FTlRSSUVTLCAmdGFibGUt PnJlcGxhY2UsCiAgICAgICAgICAgICAgICAgICAmb3B0bGVuKSkKICAgICAgZXhpdCgxKTsKICB9 CiAgY2xvc2UoZmQpOwp9CgpzdGF0aWMgdm9pZCByZXNldF9lYnRhYmxlcygpCnsKICBpbnQgZmQg PSBzb2NrZXQoQUZfSU5FVCwgU09DS19TVFJFQU0sIElQUFJPVE9fVENQKTsKICBpZiAoZmQgPT0g LTEpIHsKICAgIHN3aXRjaCAoZXJybm8pIHsKICAgIGNhc2UgRUFGTk9TVVBQT1JUOgogICAgY2Fz ZSBFTk9QUk9UT09QVDoKICAgICAgcmV0dXJuOwogICAgfQogICAgZXhpdCgxKTsKICB9CiAgZm9y ICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemVvZihlYnRfdGFibGVzKSAvIHNpemVvZihlYnRfdGFi bGVzWzBdKTsgaSsrKSB7CiAgICBzdHJ1Y3QgZWJ0X3RhYmxlX2Rlc2MqIHRhYmxlID0gJmVidF90 YWJsZXNbaV07CiAgICBpZiAodGFibGUtPnJlcGxhY2UudmFsaWRfaG9va3MgPT0gMCkKICAgICAg Y29udGludWU7CiAgICBzdHJ1Y3QgZWJ0X3JlcGxhY2UgcmVwbGFjZTsKICAgIG1lbXNldCgmcmVw bGFjZSwgMCwgc2l6ZW9mKHJlcGxhY2UpKTsKICAgIHN0cmNweShyZXBsYWNlLm5hbWUsIHRhYmxl LT5uYW1lKTsKICAgIHNvY2tsZW5fdCBvcHRsZW4gPSBzaXplb2YocmVwbGFjZSk7CiAgICBpZiAo Z2V0c29ja29wdChmZCwgU09MX0lQLCBFQlRfU09fR0VUX0lORk8sICZyZXBsYWNlLCAmb3B0bGVu KSkKICAgICAgZXhpdCgxKTsKICAgIHJlcGxhY2UubnVtX2NvdW50ZXJzID0gMDsKICAgIHRhYmxl LT5yZXBsYWNlLmVudHJpZXMgPSAwOwogICAgZm9yICh1bnNpZ25lZCBoID0gMDsgaCA8IE5GX0JS X05VTUhPT0tTOyBoKyspCiAgICAgIHRhYmxlLT5yZXBsYWNlLmhvb2tfZW50cnlbaF0gPSAwOwog ICAgaWYgKG1lbWNtcCgmdGFibGUtPnJlcGxhY2UsICZyZXBsYWNlLCBzaXplb2YodGFibGUtPnJl cGxhY2UpKSA9PSAwKSB7CiAgICAgIGNoYXIgZW50cnl0YWJsZVtYVF9UQUJMRV9TSVpFXTsKICAg ICAgbWVtc2V0KCZlbnRyeXRhYmxlLCAwLCBzaXplb2YoZW50cnl0YWJsZSkpOwogICAgICByZXBs YWNlLmVudHJpZXMgPSBlbnRyeXRhYmxlOwogICAgICBvcHRsZW4gPSBzaXplb2YocmVwbGFjZSkg KyByZXBsYWNlLmVudHJpZXNfc2l6ZTsKICAgICAgaWYgKGdldHNvY2tvcHQoZmQsIFNPTF9JUCwg RUJUX1NPX0dFVF9FTlRSSUVTLCAmcmVwbGFjZSwgJm9wdGxlbikpCiAgICAgICAgZXhpdCgxKTsK ICAgICAgaWYgKG1lbWNtcCh0YWJsZS0+ZW50cnl0YWJsZSwgZW50cnl0YWJsZSwgcmVwbGFjZS5l bnRyaWVzX3NpemUpID09IDApCiAgICAgICAgY29udGludWU7CiAgICB9CiAgICBmb3IgKHVuc2ln bmVkIGogPSAwLCBoID0gMDsgaCA8IE5GX0JSX05VTUhPT0tTOyBoKyspIHsKICAgICAgaWYgKHRh YmxlLT5yZXBsYWNlLnZhbGlkX2hvb2tzICYgKDEgPDwgaCkpIHsKICAgICAgICB0YWJsZS0+cmVw bGFjZS5ob29rX2VudHJ5W2hdID0KICAgICAgICAgICAgKHN0cnVjdCBlYnRfZW50cmllcyopdGFi bGUtPmVudHJ5dGFibGUgKyBqOwogICAgICAgIGorKzsKICAgICAgfQogICAgfQogICAgdGFibGUt PnJlcGxhY2UuZW50cmllcyA9IHRhYmxlLT5lbnRyeXRhYmxlOwogICAgb3B0bGVuID0gc2l6ZW9m KHRhYmxlLT5yZXBsYWNlKSArIHRhYmxlLT5yZXBsYWNlLmVudHJpZXNfc2l6ZTsKICAgIGlmIChz ZXRzb2Nrb3B0KGZkLCBTT0xfSVAsIEVCVF9TT19TRVRfRU5UUklFUywgJnRhYmxlLT5yZXBsYWNl LCBvcHRsZW4pKQogICAgICBleGl0KDEpOwogIH0KICBjbG9zZShmZCk7Cn0KCnN0YXRpYyB2b2lk IGNoZWNrcG9pbnRfbmV0X25hbWVzcGFjZSh2b2lkKQp7CiAgY2hlY2twb2ludF9lYnRhYmxlcygp OwogIGNoZWNrcG9pbnRfYXJwdGFibGVzKCk7CiAgY2hlY2twb2ludF9pcHRhYmxlcyhpcHY0X3Rh Ymxlcywgc2l6ZW9mKGlwdjRfdGFibGVzKSAvIHNpemVvZihpcHY0X3RhYmxlc1swXSksCiAgICAg ICAgICAgICAgICAgICAgICBBRl9JTkVULCBTT0xfSVApOwogIGNoZWNrcG9pbnRfaXB0YWJsZXMo aXB2Nl90YWJsZXMsIHNpemVvZihpcHY2X3RhYmxlcykgLyBzaXplb2YoaXB2Nl90YWJsZXNbMF0p LAogICAgICAgICAgICAgICAgICAgICAgQUZfSU5FVDYsIFNPTF9JUFY2KTsKfQoKc3RhdGljIHZv aWQgcmVzZXRfbmV0X25hbWVzcGFjZSh2b2lkKQp7CiAgcmVzZXRfZWJ0YWJsZXMoKTsKICByZXNl dF9hcnB0YWJsZXMoKTsKICByZXNldF9pcHRhYmxlcyhpcHY0X3RhYmxlcywgc2l6ZW9mKGlwdjRf dGFibGVzKSAvIHNpemVvZihpcHY0X3RhYmxlc1swXSksCiAgICAgICAgICAgICAgICAgQUZfSU5F VCwgU09MX0lQKTsKICByZXNldF9pcHRhYmxlcyhpcHY2X3RhYmxlcywgc2l6ZW9mKGlwdjZfdGFi bGVzKSAvIHNpemVvZihpcHY2X3RhYmxlc1swXSksCiAgICAgICAgICAgICAgICAgQUZfSU5FVDYs IFNPTF9JUFY2KTsKfQoKc3RhdGljIHZvaWQgc2V0dXBfY29tbW9uKCkKewogIGlmIChtb3VudCgw LCAiL3N5cy9mcy9mdXNlL2Nvbm5lY3Rpb25zIiwgImZ1c2VjdGwiLCAwLCAwKSkgewogIH0KfQoK c3RhdGljIHZvaWQgc2V0dXBfYmluZGVyZnMoKQp7CiAgaWYgKG1rZGlyKCIvZGV2L2JpbmRlcmZz IiwgMDc3NykpIHsKICB9CiAgaWYgKG1vdW50KCJiaW5kZXIiLCAiL2Rldi9iaW5kZXJmcyIsICJi aW5kZXIiLCAwLCBOVUxMKSkgewogIH0KICBpZiAoc3ltbGluaygiL2Rldi9iaW5kZXJmcyIsICIu L2JpbmRlcmZzIikpIHsKICB9Cn0KCnN0YXRpYyB2b2lkIGxvb3AoKTsKCnN0YXRpYyB2b2lkIHNh bmRib3hfY29tbW9uKCkKewogIHByY3RsKFBSX1NFVF9QREVBVEhTSUcsIFNJR0tJTEwsIDAsIDAs IDApOwogIHNldHNpZCgpOwogIHN0cnVjdCBybGltaXQgcmxpbTsKICBybGltLnJsaW1fY3VyID0g cmxpbS5ybGltX21heCA9ICgyMDAgPDwgMjApOwogIHNldHJsaW1pdChSTElNSVRfQVMsICZybGlt KTsKICBybGltLnJsaW1fY3VyID0gcmxpbS5ybGltX21heCA9IDMyIDw8IDIwOwogIHNldHJsaW1p dChSTElNSVRfTUVNTE9DSywgJnJsaW0pOwogIHJsaW0ucmxpbV9jdXIgPSBybGltLnJsaW1fbWF4 ID0gMTM2IDw8IDIwOwogIHNldHJsaW1pdChSTElNSVRfRlNJWkUsICZybGltKTsKICBybGltLnJs aW1fY3VyID0gcmxpbS5ybGltX21heCA9IDEgPDwgMjA7CiAgc2V0cmxpbWl0KFJMSU1JVF9TVEFD SywgJnJsaW0pOwogIHJsaW0ucmxpbV9jdXIgPSBybGltLnJsaW1fbWF4ID0gMTI4IDw8IDIwOwog IHNldHJsaW1pdChSTElNSVRfQ09SRSwgJnJsaW0pOwogIHJsaW0ucmxpbV9jdXIgPSBybGltLnJs aW1fbWF4ID0gMjU2OwogIHNldHJsaW1pdChSTElNSVRfTk9GSUxFLCAmcmxpbSk7CiAgaWYgKHVu c2hhcmUoQ0xPTkVfTkVXTlMpKSB7CiAgfQogIGlmIChtb3VudChOVUxMLCAiLyIsIE5VTEwsIE1T X1JFQyB8IE1TX1BSSVZBVEUsIE5VTEwpKSB7CiAgfQogIGlmICh1bnNoYXJlKENMT05FX05FV0lQ QykpIHsKICB9CiAgaWYgKHVuc2hhcmUoMHgwMjAwMDAwMCkpIHsKICB9CiAgaWYgKHVuc2hhcmUo Q0xPTkVfTkVXVVRTKSkgewogIH0KICBpZiAodW5zaGFyZShDTE9ORV9TWVNWU0VNKSkgewogIH0K ICB0eXBlZGVmIHN0cnVjdCB7CiAgICBjb25zdCBjaGFyKiBuYW1lOwogICAgY29uc3QgY2hhciog dmFsdWU7CiAgfSBzeXNjdGxfdDsKICBzdGF0aWMgY29uc3Qgc3lzY3RsX3Qgc3lzY3Rsc1tdID0g ewogICAgICB7Ii9wcm9jL3N5cy9rZXJuZWwvc2htbWF4IiwgIjE2Nzc3MjE2In0sCiAgICAgIHsi L3Byb2Mvc3lzL2tlcm5lbC9zaG1hbGwiLCAiNTM2ODcwOTEyIn0sCiAgICAgIHsiL3Byb2Mvc3lz L2tlcm5lbC9zaG1tbmkiLCAiMTAyNCJ9LAogICAgICB7Ii9wcm9jL3N5cy9rZXJuZWwvbXNnbWF4 IiwgIjgxOTIifSwKICAgICAgeyIvcHJvYy9zeXMva2VybmVsL21zZ21uaSIsICIxMDI0In0sCiAg ICAgIHsiL3Byb2Mvc3lzL2tlcm5lbC9tc2dtbmIiLCAiMTAyNCJ9LAogICAgICB7Ii9wcm9jL3N5 cy9rZXJuZWwvc2VtIiwgIjEwMjQgMTA0ODU3NiA1MDAgMTAyNCJ9LAogIH07CiAgdW5zaWduZWQg aTsKICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKHN5c2N0bHMpIC8gc2l6ZW9mKHN5c2N0bHNbMF0p OyBpKyspCiAgICB3cml0ZV9maWxlKHN5c2N0bHNbaV0ubmFtZSwgc3lzY3Rsc1tpXS52YWx1ZSk7 Cn0KCnN0YXRpYyBpbnQgd2FpdF9mb3JfbG9vcChpbnQgcGlkKQp7CiAgaWYgKHBpZCA8IDApCiAg ICBleGl0KDEpOwogIGludCBzdGF0dXMgPSAwOwogIHdoaWxlICh3YWl0cGlkKC0xLCAmc3RhdHVz LCBfX1dBTEwpICE9IHBpZCkgewogIH0KICByZXR1cm4gV0VYSVRTVEFUVVMoc3RhdHVzKTsKfQoK c3RhdGljIHZvaWQgZHJvcF9jYXBzKHZvaWQpCnsKICBzdHJ1Y3QgX191c2VyX2NhcF9oZWFkZXJf c3RydWN0IGNhcF9oZHIgPSB7fTsKICBzdHJ1Y3QgX191c2VyX2NhcF9kYXRhX3N0cnVjdCBjYXBf ZGF0YVsyXSA9IHt9OwogIGNhcF9oZHIudmVyc2lvbiA9IF9MSU5VWF9DQVBBQklMSVRZX1ZFUlNJ T05fMzsKICBjYXBfaGRyLnBpZCA9IGdldHBpZCgpOwogIGlmIChzeXNjYWxsKFNZU19jYXBnZXQs ICZjYXBfaGRyLCAmY2FwX2RhdGEpKQogICAgZXhpdCgxKTsKICBjb25zdCBpbnQgZHJvcCA9ICgx IDw8IENBUF9TWVNfUFRSQUNFKSB8ICgxIDw8IENBUF9TWVNfTklDRSk7CiAgY2FwX2RhdGFbMF0u ZWZmZWN0aXZlICY9IH5kcm9wOwogIGNhcF9kYXRhWzBdLnBlcm1pdHRlZCAmPSB+ZHJvcDsKICBj YXBfZGF0YVswXS5pbmhlcml0YWJsZSAmPSB+ZHJvcDsKICBpZiAoc3lzY2FsbChTWVNfY2Fwc2V0 LCAmY2FwX2hkciwgJmNhcF9kYXRhKSkKICAgIGV4aXQoMSk7Cn0KCnN0YXRpYyBpbnQgZG9fc2Fu ZGJveF9ub25lKHZvaWQpCnsKICBpZiAodW5zaGFyZShDTE9ORV9ORVdQSUQpKSB7CiAgfQogIGlu dCBwaWQgPSBmb3JrKCk7CiAgaWYgKHBpZCAhPSAwKQogICAgcmV0dXJuIHdhaXRfZm9yX2xvb3Ao cGlkKTsKICBzZXR1cF9jb21tb24oKTsKICBzYW5kYm94X2NvbW1vbigpOwogIGRyb3BfY2Fwcygp OwogIGluaXRpYWxpemVfbmV0ZGV2aWNlc19pbml0KCk7CiAgaWYgKHVuc2hhcmUoQ0xPTkVfTkVX TkVUKSkgewogIH0KICB3cml0ZV9maWxlKCIvcHJvYy9zeXMvbmV0L2lwdjQvcGluZ19ncm91cF9y YW5nZSIsICIwIDY1NTM1Iik7CiAgaW5pdGlhbGl6ZV90dW4oKTsKICBpbml0aWFsaXplX25ldGRl dmljZXMoKTsKICBzZXR1cF9iaW5kZXJmcygpOwogIGxvb3AoKTsKICBleGl0KDEpOwp9CgpzdGF0 aWMgdm9pZCBraWxsX2FuZF93YWl0KGludCBwaWQsIGludCogc3RhdHVzKQp7CiAga2lsbCgtcGlk LCBTSUdLSUxMKTsKICBraWxsKHBpZCwgU0lHS0lMTCk7CiAgZm9yIChpbnQgaSA9IDA7IGkgPCAx MDA7IGkrKykgewogICAgaWYgKHdhaXRwaWQoLTEsIHN0YXR1cywgV05PSEFORyB8IF9fV0FMTCkg PT0gcGlkKQogICAgICByZXR1cm47CiAgICB1c2xlZXAoMTAwMCk7CiAgfQogIERJUiogZGlyID0g b3BlbmRpcigiL3N5cy9mcy9mdXNlL2Nvbm5lY3Rpb25zIik7CiAgaWYgKGRpcikgewogICAgZm9y ICg7OykgewogICAgICBzdHJ1Y3QgZGlyZW50KiBlbnQgPSByZWFkZGlyKGRpcik7CiAgICAgIGlm ICghZW50KQogICAgICAgIGJyZWFrOwogICAgICBpZiAoc3RyY21wKGVudC0+ZF9uYW1lLCAiLiIp ID09IDAgfHwgc3RyY21wKGVudC0+ZF9uYW1lLCAiLi4iKSA9PSAwKQogICAgICAgIGNvbnRpbnVl OwogICAgICBjaGFyIGFib3J0WzMwMF07CiAgICAgIHNucHJpbnRmKGFib3J0LCBzaXplb2YoYWJv cnQpLCAiL3N5cy9mcy9mdXNlL2Nvbm5lY3Rpb25zLyVzL2Fib3J0IiwKICAgICAgICAgICAgICAg ZW50LT5kX25hbWUpOwogICAgICBpbnQgZmQgPSBvcGVuKGFib3J0LCBPX1dST05MWSk7CiAgICAg IGlmIChmZCA9PSAtMSkgewogICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgICAgIGlmICh3cml0 ZShmZCwgYWJvcnQsIDEpIDwgMCkgewogICAgICB9CiAgICAgIGNsb3NlKGZkKTsKICAgIH0KICAg IGNsb3NlZGlyKGRpcik7CiAgfSBlbHNlIHsKICB9CiAgd2hpbGUgKHdhaXRwaWQoLTEsIHN0YXR1 cywgX19XQUxMKSAhPSBwaWQpIHsKICB9Cn0KCnN0YXRpYyB2b2lkIHNldHVwX2xvb3AoKQp7CiAg Y2hlY2twb2ludF9uZXRfbmFtZXNwYWNlKCk7Cn0KCnN0YXRpYyB2b2lkIHJlc2V0X2xvb3AoKQp7 CiAgY2hhciBidWZbNjRdOwogIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIvZGV2L2xvb3Al bGx1IiwgcHJvY2lkKTsKICBpbnQgbG9vcGZkID0gb3BlbihidWYsIE9fUkRXUik7CiAgaWYgKGxv b3BmZCAhPSAtMSkgewogICAgaW9jdGwobG9vcGZkLCBMT09QX0NMUl9GRCwgMCk7CiAgICBjbG9z ZShsb29wZmQpOwogIH0KICByZXNldF9uZXRfbmFtZXNwYWNlKCk7Cn0KCnN0YXRpYyB2b2lkIHNl dHVwX3Rlc3QoKQp7CiAgcHJjdGwoUFJfU0VUX1BERUFUSFNJRywgU0lHS0lMTCwgMCwgMCwgMCk7 CiAgc2V0cGdycCgpOwogIHdyaXRlX2ZpbGUoIi9wcm9jL3NlbGYvb29tX3Njb3JlX2FkaiIsICIx MDAwIik7CiAgZmx1c2hfdHVuKCk7Cn0KCnN0YXRpYyB2b2lkIGNsb3NlX2ZkcygpCnsKICBmb3Ig KGludCBmZCA9IDM7IGZkIDwgTUFYX0ZEUzsgZmQrKykKICAgIGNsb3NlKGZkKTsKfQoKc3RhdGlj IHZvaWQgZXhlY3V0ZV9vbmUodm9pZCk7CgojZGVmaW5lIFdBSVRfRkxBR1MgX19XQUxMCgpzdGF0 aWMgdm9pZCBsb29wKHZvaWQpCnsKICBzZXR1cF9sb29wKCk7CiAgaW50IGl0ZXIgPSAwOwogIGZv ciAoOzsgaXRlcisrKSB7CiAgICByZXNldF9sb29wKCk7CiAgICBpbnQgcGlkID0gZm9yaygpOwog ICAgaWYgKHBpZCA8IDApCiAgICAgIGV4aXQoMSk7CiAgICBpZiAocGlkID09IDApIHsKICAgICAg c2V0dXBfdGVzdCgpOwogICAgICBleGVjdXRlX29uZSgpOwogICAgICBjbG9zZV9mZHMoKTsKICAg ICAgZXhpdCgwKTsKICAgIH0KICAgIGludCBzdGF0dXMgPSAwOwogICAgdWludDY0X3Qgc3RhcnQg PSBjdXJyZW50X3RpbWVfbXMoKTsKICAgIGZvciAoOzspIHsKICAgICAgaWYgKHdhaXRwaWQoLTEs ICZzdGF0dXMsIFdOT0hBTkcgfCBXQUlUX0ZMQUdTKSA9PSBwaWQpCiAgICAgICAgYnJlYWs7CiAg ICAgIHNsZWVwX21zKDEpOwogICAgICBpZiAoY3VycmVudF90aW1lX21zKCkgLSBzdGFydCA8IDUw MDApCiAgICAgICAgY29udGludWU7CiAgICAgIGtpbGxfYW5kX3dhaXQocGlkLCAmc3RhdHVzKTsK ICAgICAgYnJlYWs7CiAgICB9CiAgfQp9Cgp1aW50NjRfdCByWzJdID0gezB4ZmZmZmZmZmZmZmZm ZmZmZiwgMHhmZmZmZmZmZmZmZmZmZmZmfTsKCnZvaWQgZXhlY3V0ZV9vbmUodm9pZCkKewogIGlu dHB0cl90IHJlcyA9IDA7CiAgbWVtY3B5KCh2b2lkKikweDIwMDAxMTAwLCAicmVpc2VyZnNcMDAw IiwgOSk7CiAgbWVtY3B5KCh2b2lkKikweDIwMDAwMDQwLCAiLi9maWxlMFwwMDAiLCA4KTsKICBt ZW1jcHkoCiAgICAgICh2b2lkKikweDIwMDAzMTQwLAogICAgICAiXHg3OFx4OWNceGVjXHhkOFx4 M2RceDZiXHgxNFx4NDFceDFjXHgwNlx4ZjBceDY3XHhmNlx4MTZceDJjXHgyM1x4OTNceDdlIgog ICAgICAiXHgxMVx4YjRceDk0XHg5MFx4NzBceDYyXHg5Zlx4NDJceGUxXHgxYVx4MGJceDZiXHgx Ylx4MDlceGE5XHg0Y1x4OTVceGFiIgogICAgICAiXHg5NFx4ZjhceDZkXHhmY1x4MzhceDkyXHhj YVx4M2VceGE0XHgzN1x4NDVceGMwXHg3ZVx4NjVceDRkXHg3Nlx4MDVceDM5IgogICAgICAiXHhm MVx4NmRceDM5XHg1M1x4ZmNceDdlXHhiMFx4Y2NceGNjXHhjM1x4YmNceGZjXHhiN1x4OWNceDA5 XHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwY1x4ZGFceGU0XHg3M1x4NDlceDc2XHg5Ylx4YTRceDhlXHg1OVx4OTNceGE0IgogICAg ICAiXHgyNFx4NWRceDc3XHhiZVx4YmFceDRjXHhkMlx4OGRceGY5XHhmZFx4OGZceDhiXHgyNlx4 MjVceDJmXHg4Zlx4NTdceGViIgogICAgICAiXHg2N1x4YTdceGNiXHhlN1x4ZWJceDI0XHg4Ylx4 NmZceGQzXHhlZlx4NGRceGRiXHg5NVx4MjRceGY1XHhlMFx4NjFceGFkIgogICAgICAiXHhjYlx4 YmFceGFjXHgwN1x4ZjVceGM5XHhlZVx4ZTFceGEzXHhiYVx4N2VceGZiXHhlZVx4Y2RceGViXHg5 M1x4OTNceGUzIgogICAgICAiXHhkM1x4NjlceDRlXHg5N1x4OGJceGViXHhiM1x4YTNceGJjXHhi OFx4OWFceGY1XHg1N1x4Y2FceDZkXHgzZFx4YmZceDMzIgogICAgICAiXHhmM1x4N2RceGRmXHhm N1x4YjNceDFlXHgwZVx4MDBceDAwXHgwMFx4NzdceDU4XHhmZlx4Y2ZceGRhXHhmZlx4N2NceDNl IgogICAgICAiXHgwMFx4MDBceDAwXHhmMFx4MmJceGIzXHgzZFx4MjRceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAi XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgog ICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAg ICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw IgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAi XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgog ICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAg ICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw IgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAi XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgog ICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAg ICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw IgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAi XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgog ICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAg ICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw IgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAi XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgog ICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAg ICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw IgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAi XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgog ICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAg ICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHhjY1x4YTBceDhlXHg5ZFx4MjZceDQ5XHg0OVx4YmFceGVlXHg3Y1x4NzVceDk5 IgogICAgICAiXHhhNFx4ZmJceGY5XHg5Mlx4YTdceGVkXHg5Nlx4NmFceDAzXHgwMFx4MDBceDAw XHhmZVx4NWVceDQ5XHg5M1x4NTdceDNiIgogICAgICAiXHg5Ylx4ZjJceDliXHg2N1x4ODBceGVm XHgxZVx4ZTdceGQzXHg0ZVx4OTlceGYyXHhhMVx4ZmRceDUyXHg4Nlx4ZmVceDdlIgogICAgICAi XHgzZVx4NmNceDU4XHgwZlx4MDBceDAwXHgwMFx4ZmNceDk5XHhlMVx4YWVceDVkXHhmYVx4NzFc eGQ0XHg0ZVx4ZjdceGYyIgogICAgICAiXHgyMVx4N2ZceDkwXHgzNlx4N2JceDdiXHgzN1x4ZTNc eGRiXHgyNlx4NTdceDg3XHhjOVx4MjJceGM5XHhmZVx4MGZceGZiIgogICAgICAiXHg1Y1x4NWNc eDlmXHgxZFx4OGRceDVmXHhkOVx4NTJceGVkXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgog ICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAg ICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw IgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAi XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgog ICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAg ICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw IgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAi XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgog ICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAg ICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw IgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAi XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgog ICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAg ICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw IgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAi XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgog ICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAg ICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw IgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAi XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgog ICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAg ICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHg1Zlx4ZDlceDgxXHg2M1x4MDFceDAwXHgw MFx4MDBceDAwXHg2MVx4ZmVceGQ2XHg2OVx4NzRceDZjIgogICAgICAiXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDcwXHg1Nlx4MDBceDAw IgogICAgICAiXHgwMFx4ZmZceGZmXHhjZlx4ZWZceGQ5XHgzOSIsCiAgICAgIDQzNDUpOwogIHN5 el9tb3VudF9pbWFnZSgvKmZzPSovMHgyMDAwMTEwMCwgLypkaXI9Ki8weDIwMDAwMDQwLAogICAg ICAgICAgICAgICAgICAvKmZsYWdzPU1TX0RJUlNZTkMqLyAweDgwLCAvKm9wdHM9Ki8weDIwMDAw MGMwLAogICAgICAgICAgICAgICAgICAvKmNoZGlyPSovMHg4MSwgLypzaXplPSovMHgxMGY5LCAv KmltZz0qLzB4MjAwMDMxNDApOwogIHJlcyA9IHN5c2NhbGwoCiAgICAgIF9fTlJfb3BlbiwgLypm aWxlPSovMHVsLAogICAgICAvKmZsYWdzPU9fU1lOQ3xPX05PTkJMT0NLfE9fTk9DVFRZfE9fTk9B VElNRXxPX0xBUkdFRklMRXxPX0RJUkVDVHwweDIwNDIqLwogICAgICAweDE0Zjk0MnVsLCAvKm1v ZGU9Ki8wdWwpOwogIGlmIChyZXMgIT0gLTEpCiAgICByWzBdID0gcmVzOwogIG1lbWNweSgodm9p ZCopMHgyMDAwMDA0MCwgIi4vYnVzXDAwMCIsIDYpOwogIHJlcyA9IHN5c2NhbGwoX19OUl9vcGVu LCAvKmZpbGU9Ki8weDIwMDAwMDQwdWwsCiAgICAgICAgICAgICAgICAvKmZsYWdzPU9fU1lOQ3xP X05PQVRJTUV8T19DUkVBVHxGQVNZTkN8T19SRFdSKi8gMHgxNDMwNDJ1bCwKICAgICAgICAgICAg ICAgIC8qbW9kZT0qLzB1bCk7CiAgaWYgKHJlcyAhPSAtMSkKICAgIHJbMV0gPSByZXM7CiAgbWVt Y3B5KCh2b2lkKikweDIwMDAwMDAwLAogICAgICAgICAiXHg1ZVx4Y2RceDAxXHhjOFx4MmNceDI4 XHg1ZFx4ZTJceDk3XHg0Ylx4MDFceDMxXHg5MFx4YjkiLCAxNCk7CiAgc3lzY2FsbChfX05SX3dy aXRlLCAvKmZkPSovclsxXSwgLypidWY9Ki8weDIwMDAwMDAwdWwsIC8qY291bnQ9Ki8weGV1bCk7 CiAgc3lzY2FsbChfX05SX2Z0cnVuY2F0ZSwgLypmZD0qL3JbMV0sIC8qbGVuPSovMHgyMDA3ZmZm dWwpOwogIHN5c2NhbGwoX19OUl9zZW5kZmlsZSwgLypmZG91dD0qL3JbMF0sIC8qZmRpbj0qL3Jb MV0sIC8qb2ZmPSovMHVsLAogICAgICAgICAgLypjb3VudD0qLzB4MTAwMDAwMDIwMTAwNHVsKTsK fQppbnQgbWFpbih2b2lkKQp7CiAgc3lzY2FsbChfX05SX21tYXAsIC8qYWRkcj0qLzB4MWZmZmYw MDB1bCwgLypsZW49Ki8weDEwMDB1bCwgLypwcm90PSovMHVsLAogICAgICAgICAgLypmbGFncz1N QVBfRklYRUR8TUFQX0FOT05ZTU9VU3xNQVBfUFJJVkFURSovIDB4MzJ1bCwgLypmZD0qLy0xLAog ICAgICAgICAgLypvZmZzZXQ9Ki8wdWwpOwogIHN5c2NhbGwoX19OUl9tbWFwLCAvKmFkZHI9Ki8w eDIwMDAwMDAwdWwsIC8qbGVuPSovMHgxMDAwMDAwdWwsCiAgICAgICAgICAvKnByb3Q9UFJPVF9X UklURXxQUk9UX1JFQUR8UFJPVF9FWEVDKi8gN3VsLAogICAgICAgICAgLypmbGFncz1NQVBfRklY RUR8TUFQX0FOT05ZTU9VU3xNQVBfUFJJVkFURSovIDB4MzJ1bCwgLypmZD0qLy0xLAogICAgICAg ICAgLypvZmZzZXQ9Ki8wdWwpOwogIHN5c2NhbGwoX19OUl9tbWFwLCAvKmFkZHI9Ki8weDIxMDAw MDAwdWwsIC8qbGVuPSovMHgxMDAwdWwsIC8qcHJvdD0qLzB1bCwKICAgICAgICAgIC8qZmxhZ3M9 TUFQX0ZJWEVEfE1BUF9BTk9OWU1PVVN8TUFQX1BSSVZBVEUqLyAweDMydWwsIC8qZmQ9Ki8tMSwK ICAgICAgICAgIC8qb2Zmc2V0PSovMHVsKTsKICBmb3IgKHByb2NpZCA9IDA7IHByb2NpZCA8IDQ7 IHByb2NpZCsrKSB7CiAgICBpZiAoZm9yaygpID09IDApIHsKICAgICAgZG9fc2FuZGJveF9ub25l KCk7CiAgICB9CiAgfQogIHNsZWVwKDEwMDAwMDApOwogIHJldHVybiAwOwp9Cg== ------=ALIBOUNDARY_104631_7ffa9c290700_660a765b_3b99b9--