From patchwork Fri Dec 9 15:09:59 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vit Mojzis X-Patchwork-Id: 9468461 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 2932960231 for ; Fri, 9 Dec 2016 15:11:03 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 11DB3285AF for ; Fri, 9 Dec 2016 15:11:03 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 036192861D; Fri, 9 Dec 2016 15:11:02 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from emsm-gh1-uea10.nsa.gov (smtp.nsa.gov [8.44.101.8]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 42556285AF for ; Fri, 9 Dec 2016 15:11:00 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.33,324,1477958400"; d="scan'208";a="1788268" IronPort-PHdr: =?us-ascii?q?9a23=3AvVI5WRxVUHNlkBzXCy+O+j09IxM/srCxBDY+r6Qd?= =?us-ascii?q?1ekeKPad9pjvdHbS+e9qxAeQG96KsLQZ1aGN6+jJYi8p2d65qncMcZhBBVcuqP?= =?us-ascii?q?49uEgeOvODElDxN/XwbiY3T4xoXV5h+GynYwAOQJ6tL1LdrWev4jEMBx7xKRR6?= =?us-ascii?q?JvjvGo7Vks+7y/2+94fdbghMijexe7N/IRS5oQjfqsUdnJdvJLs2xhbVuHVDZv?= =?us-ascii?q?5YxXlvJVKdnhb84tm/8Zt++ClOuPwv6tBNX7zic6s3UbJXAjImM3so5MLwrhnM?= =?us-ascii?q?URGP5noHXWoIlBdDHhXI4wv7Xpf1tSv6q/Z91SyHNsD4Ubw4RTKv5LplRx/yjC?= =?us-ascii?q?cMKiA3/mfZhMdtiK5XuQ+tqwB6z4PSfYqbNudxfrnFcN0aW2RPQ8hfWS9ZAo6+?= =?us-ascii?q?cocCAeUOMvpXoYbjvFsDtge+CAu2Ce/z1jNEmmH60Ksn2OohCwHG2wkgEsoBv3?= =?us-ascii?q?TVsNX+KaAcUee3zKjJzDXDdO5d1DDj6IjNdRAho/CNXbNrccfK00kgCR7KjlWK?= =?us-ascii?q?poz5JT+ayuMNs22C4udmSOmhhWknqwRrrTiuwMchkpLJiZwRylDK7yl5xpg6Jc?= =?us-ascii?q?G+RUVmYtCkCINduzyVOoZ5WM8vQ3xktDwkxrAJp5K3ZjUGxIw5yxLDb/GLaZWE?= =?us-ascii?q?7xz9WOqLPDt1h3xodKihixux90Wr1/fyWdOu0FlQqypIitzMtncQ2BPN8sWHUf?= =?us-ascii?q?59/lu52TaIygDT9vlIIUAqmqrfLJ4s2qIwmYAJsUTCAy/2g1/6jLOWd0o4+uio?= =?us-ascii?q?7P7rYrP6qZ+HK4B4kAT+MqUqmsCnAOQ4NBYBX3SD9Oih27Du8lf1TbVXgvEsjK?= =?us-ascii?q?XUv47WKd4GqqKhBg9ayIcj6xKxDze819QYmGEKLElbdxKDjojpPUzOIf/hAfik?= =?us-ascii?q?hFSsjTFryOzYMb36GZjNMnjCn6vhfbZ68UJczhEzwspF65JbDbEBPur/WlXtu9?= =?us-ascii?q?zAEh85Lwu0zv78B9pm0Y8eXWOPArSFMKPJq1OI/fwgLPWWaI8Opjn9L/kl5/jz?= =?us-ascii?q?jX42glISYamo3YEKaHCjBPhnLV+WYWb3gtcGF2cGpA0+TPbliFeaSz5ce26yX7?= =?us-ascii?q?4g5jE8EI+pE5/DSZq3gLyAxye2BYVWaXpcClCNCnfob4GEVO0QZy2MOMNhlSYE?= =?us-ascii?q?Vbe5QY87yR6urBP6y6ZgLufM9C0Yr4js1N5p6O3SjhE/7jl0D9yc022UVGF1kH?= =?us-ascii?q?gISyUx3KBlrkx30k2D3rRgg/xECdxT4OtEUgQgOp7fyOx6Fsv/WgHbcdeKT1am?= =?us-ascii?q?X8+qATYrTtI+29UOeVpyG82+jhDf2CqnG6UamKGRBJw17K3cxWP8KNxhxHbDzq?= =?us-ascii?q?UhiEMmQsRXP228mqF/7xTTB5LOk0iBl6ala6Ac3CrK9GqYyWqOoV1YUAl1Uarf?= =?us-ascii?q?R3wfYVHWrdvh7EPYU7CuEagnMhdGycOaMatKZMfpjVJdRPf/I9neeGSxm2C+BB?= =?us-ascii?q?aN3LyMapDme2MD0yXBEEIEiRwc/W6aNQgiASesu2zfAyZqFVLzfUzs6/J+pWil?= =?us-ascii?q?TkAq1QGFdFBh17+v9h4Sn/ycROsZ3qgYtyc5tzV0AFG90srKC9WdugVhfb9TYd?= =?us-ascii?q?cm7Vhb0mLZshByMYa7L6B+nFIedRp4v1/23RVtFopAidQqrG8tzAdqL6KY0VdB?= =?us-ascii?q?dzeG0pDrIbDYMHf9/Aqoa6LM3VHeytmW8L8V6Psks1XjoB2pFk06/np6ydZVz2?= =?us-ascii?q?GT6YvEDAsdSp/+TkY3+AJgp7HGfCY9/ZnY1XtyPqmoqjXCwc4mBPM5yha8eNdS?= =?us-ascii?q?KL2EFA7uHM0GAMiuMvYmlESpbhIDOuBS+7U5P8end/uAwqGrJuFgkCihjWRd74?= =?us-ascii?q?B3yliM+DZkSu7Uw5YFxOmV3g+GVzfnkFetq9v3lp5AZTETGGq/1CflCZVKZq1q?= =?us-ascii?q?fIYLD2auLNGsxtlkgZ7iRWJY/ka5B1wawM+pZQaSb1vl0A1K0kQXpXinljWizz?= =?us-ascii?q?NolDEooLGS3DfTw+v+bxoLIGlLRHNtjV30O4i7k8gaXFS0bwgujBal/Vz1x7Vf?= =?us-ascii?q?pKhlNWbfW1xHfy/yL2F+VauwsKGPY8tT5JMutiVYTP6wYVaERb7huxEayT/sH3?= =?us-ascii?q?NCxDAncDGnopD5nxhjhG2DKnZ+t2TZdt90xRfb+tPcX+Rd3jwYSylkkTPXHESz?= =?us-ascii?q?P8G1/dWIkJfOquO+WHynVp1IaiTrzp2PtC2g5W1sHxK/g+q/mtr9EQg1ySX7zc?= =?us-ascii?q?VlVT3UrBbgZYnmz7q6MeR6cURzGl/87dd1GoFknos2mp4QxWAQho+J8nofjWfz?= =?us-ascii?q?LdJb1LrmbHUXWD4Lx8XY7xTk2E1/LnOF3oz5WW+bwsd7YNm6eGwW0Don789WEK?= =?us-ascii?q?eU8KBEnSxtr1qisA3efONwnjgYyfoh8nIahf8GuBY1xCWHHr8SBVVYPTDrlxmQ?= =?us-ascii?q?99CxtrhXZGKxfriozkV+m8yhA6+YogxHRXb5YYktHTVr7sllK1LM12Dz6pv4d9?= =?us-ascii?q?bOY9ITsQeUkxjegORPLpI+iOYKjzJ9OW3hpX0l1/I7jRt20JG0poeHLXlt/KW8?= =?us-ascii?q?AhNDOD36ed4c+jb3jalEhsaWxYevHpd/FToXQJvkV/WoECgdtf7/LQaBDCU8qm?= =?us-ascii?q?uHGbrYBQKf50dmoG7VE5GrL3GXOH4ZwM5kRBaDOExfmxwbUy8inpEnDAyqwtLu?= =?us-ascii?q?cFth7DAL+lH4sgdMyv5vNxTnV2fQvgOoajMqR5iDMBpZ9BtN6lzTMcOA8uJzBD?= =?us-ascii?q?1X8Ye5rAOTMGCbYRpHDX0RUEyeG1/jJqWu5cXH8+WAHOqyNfXPba+LqeNEU/eI?= =?us-ascii?q?wpKu35B88DmQM8WDJH5iD+c02kBbR3B2B9zZmykTSywQjy/NadSbqw2k+i1vtc?= =?us-ascii?q?2//vXrWBj05YuTBbtSMNNv9AqwgaifNu6fniJ5JSxf1pMWyn/C0KIf00IKiyFy?= =?us-ascii?q?azmtFqwNtTbTQ63LhKBXCR8baz90NMZT7qIzwBdCNtDBhtPyzL54geY/C01ZWl?= =?us-ascii?q?z5hsGpecsKLnmgO1PcGkmELruGJSfRzMHpeq68UqdfjOZJtx2qozmXCUvjPimF?= =?us-ascii?q?lzbzTRCjKP1MjCaYPB1ev4GxaBBtBnb/TNj+cB20LMd3jSEqwb0znn7KLnQTMS?= =?us-ascii?q?ZmfENCsLKQ9jhVgu5lFGxf9HVlIveLmz2D4+neNJkWreNhAj5omOJC/HQ617xV?= =?us-ascii?q?4TlfS/x0lyvSqdhurkq7neaR0TVnUQBBqjBRiIKMp0ViNr3T9oNcVnbc4BIN8W?= =?us-ascii?q?KQBgwQqNtqENLvpb5fx8PIlKLrNjhC9dfU8tEdB8jQM82HN3UgPQDuGD7OAwsP?= =?us-ascii?q?VSSrOn3Hh0xBjPGS8WWYroQ9qpjpgpYOULhbVV0rGfMcEUtlBtsCL4l0Xj4/jb?= =?us-ascii?q?Gbi8sI6makoxnKWMVWpJbHWeyOAf/3MjaWkaFEZwcUwbP/NYkTNY3620h8ZVRh?= =?us-ascii?q?mYTKHETQXd5TrS19cg80oEJN8H1gQWEp3ULqdB+t6mcJFfGohh42lhd+YeM1+T?= =?us-ascii?q?ft5Vc3OkTFpC8un0k0h9rlnSqRcT7qIae3RYFZFSz0t00rPZP6RwZ6dgqynEN+?= =?us-ascii?q?ODfDXbJRgKNqdXp3hw/EpZtPBflcQLVCYBAO3/6XY+4l0VdbqiW82U9I/+3FCY?= =?us-ascii?q?BhlAsra5KsqWxP2x57Zt4vOaPQPLZJzkRXhq+WpC+nyPsxzxEEKEYX7GySeDUF?= =?us-ascii?q?t1cJNrk8OiWo+eJs6RSYmzRdeGkATfwqrex29kklIeSP0zrg06JfKkC2L+GQMq?= =?us-ascii?q?SZu27GlcGVXFww0kIImlJf8rdoy8cjdFCYV0c1zLueDx4JL9bNKRlJb8pO83je?= =?us-ascii?q?ZTuBvv/TwZJ0Ioq9DfvlQvWUtKYOhUKlEh0pEJoQ4cQcBJms0V3YLMf9IL4D1x?= =?us-ascii?q?ot+BzhJE+ZA/RRZBKLjDAHrtmxzJ9tw4ZSOyodDn97MSWr4bbXvRQnj+CfU9cz?= =?us-ascii?q?eHsaWZEENn0uUs2ghyFZp2hADCWw0u8BzAiC6CX8qTrWDDj9aNpuf/iUZRVxCN?= =?us-ascii?q?2s/jU/6ae2g0bN8prCP2H6KchiutjX5OMBuZmHD/JUTb9gs0bTgIRXW3uqU2vT?= =?us-ascii?q?HtGvPJjwd5MgbdrqBXamSla/kS46T9/tPNaxKaiFmQLoRZxUsYaB2jAjKc+9Gy?= =?us-ascii?q?oRGxd3v+EM+LhwZQsdbJoneRTorRgxN7SjIAeE1dWjW3qtKTpTT/lY0eW6Z7xW?= =?us-ascii?q?wjExYe+7yHovVIo1w/Ox8UETWJEAlgveyuq7Z4lCTSjzHWRQdB/LpSo4i2duKP?= =?us-ascii?q?49wuI/wRPOtlkcNSqEefdyZ2xFpd48A0qeIXtrCmYiQV+Tk5bD6Ba2378O5ytd?= =?us-ascii?q?g8pU0epdvXfloJDfZimhV7a2ppXLrSUgd8MmrLdrMY3jOMeGs4nenjPHRpnKrg?= =?us-ascii?q?KFSDK6F+ZdmtVILyJYXfhImWUhOcMYvIpM8lc+WdklKLxOEqYsoKqmaT1+DS4d?= =?us-ascii?q?1SUZTZ+P3CQegueg3LvXjg2QcJIjMBMYsJVChd8dUzVubC0HuaGtTZnbmWifR2?= =?us-ascii?q?cXJwcT6BhD6xgblo9sZOzl5pTHTINUwT5Mv/10SjfLFoVv91bjVm6Wg0L3R+m6?= =?us-ascii?q?nuO12gJSyPbs0tgFVx5lFUhS2fpZlksyJLFwMakQsZbAsiWUekPioGLt1OymKU?= =?us-ascii?q?FLycLObV34C5HKuHHgUi0G43IUW5FAyHXeFZQUnAp5bKcrpFpMIIC6dEbx/SYk?= =?us-ascii?q?x4FzE7m+S8+r204vrWwaSCeyD9pBF+ZmvUrXWTJ/eJCkspDlO5RUQmJL+Z2dt0?= =?us-ascii?q?1WkF5xPCGj05ZcLd9C4iIUVjhVvTqdpMeySNFE2cJuAZ4AOMtwu3f8GKNBOZie?= =?us-ascii?q?uX42t6fuynDH5T8zrk22xDKpG6+3V+hZ5XERGh01J2SCrUkiF/Ej8n3P8lDLqF?= =?us-ascii?q?x0/PxWBrmOjUVwvDZyBYpCBjBX2nC5N15zVmVJs/1GKKTJdMxRW/YyZQW1NBw4?= =?us-ascii?q?Cf4rxE2J/UZ6nHf/fyxythVV+yHbXwkoSyYVmK3hmTsApcG7ITUaUY5HbS09by?= =?us-ascii?q?fZLAKWgTxXvBFaa0xxR5AVHtNF9KoB0YtS4MXCVV6mKTsZUxx6KgI4zf1fmFZD?= =?us-ascii?q?sEqCYyDSFw6oeuvUvxJqY8iRtNapI+r9/AhZkIPrquc4978MR3e+gw2iXcjer5?= =?us-ascii?q?Pgtt2NrkaOdqD4PPOnbHDcUjfMlg6/ha04D5bU4iffKgxbJIdmyXA8e5juFXbL?= =?us-ascii?q?PQhaJ6IcP0dUTq56Zslaru1YesNpdr0E9rNqBhKCWhzgApevrOVcIlbVWzveMz?= =?us-ascii?q?2L8vajroLL8bzdVe/ga9SWx3nZXq13Po116SXgFrfu1o9e5FT51ulx+UN9VFfJ?= =?us-ascii?q?LTqNrNL/KQMX/MOibFftvoU1HTPKB5d9iGLtxlpcd8UNXiKq7I8VyIhe6HbtU+?= =?us-ascii?q?J3zlb8sOtO97l+84Y356plycCuJafdMf5aq1NoAgCIBgV28ZUgGHR/R3pPbeAP?= =?us-ascii?q?NfjcZrkZjcTyq+DtDaMX9hyV++tdadTZO0HNgM6/CiuTSRZchgcOtSYaLheA1/?= =?us-ascii?q?6Cg6J7VMClqvLi100w5VixNAQKzLd35YeL4qCIvvPYbwPNzbgYXajnXsHzoa42?= =?us-ascii?q?u0OV/v0kkKQBenJubg2iDegdUtIdxmb8wqAr1y0sFdjDE6jn+P5ZWHIzhijglI?= =?us-ascii?q?xlH1UKBvMUGqKG/YZEkWc+lezZLNoWfb1clWuUCR6rCLkCyWWs6yeNJmlqnA3O?= =?us-ascii?q?2QnqQWyv9F/2sTN4QSzUwtfllkpYTbi3BUFXXyazOE94tj2PPBDyu9rspaQ19l?= =?us-ascii?q?w2PXD4tNKQjmuuJqlbH8rlJNyTOSM0vk4YjIUtRtyz3oAWAdy9INYN/3F5avvR?= =?us-ascii?q?8XirnzVAo6dAgIre+dqV9+7SHXSvgKyWsbKNxCpXynIgp1Ew9sigNu3S592NW/?= =?us-ascii?q?mny3weTyNhtAvaQx60qrvboksPOUOX0UfEhooKPs1Y3XYizE3m4vYsQM4r/gVE?= =?us-ascii?q?ConAf+8CpSz0ODbsxVafeNc3WymF3jtZAF36DF54GLIm12LopsLJknXQ9EM0SY?= =?us-ascii?q?lsbUDnggZ3D4ogI0I39FcX2jYDERQKaR2DCbGoAVrqLY4DVUcdbRSKx7e6dbkw?= =?us-ascii?q?3U1o2rOg/vPTbe1mCKoJN/ZdiBKOk0ZfGpISsK0eT6xze1lB+6HJvATiDZboX+?= =?us-ascii?q?T+n3oqKfK1Wtxa8dwet3Y64Aa/Rh+g5IxG77kFiJGHaLREYZnKvMBz9Utn4yAA?= =?us-ascii?q?djBVihhlkxy5SfwcpPzk4tXDsZqp6/yhW7wxSOgM7Bg7GXh+gIXsj1w5ptHXze?= =?us-ascii?q?hcQJXPiYvj6ABNP2KKuIHC3hZnKOoOMIyqc6xi93UGOygeP2gBPceSa/Qn/yBt?= =?us-ascii?q?Nyjc6EJYDcMRf9MYO9DNlhpOhk3uQrFT+dLRGkWEBIdra8Ao8233xSgt8ZQmTu?= =?us-ascii?q?bv9D+2JJ7Y71FXPPNPlT5sm8zGpOgUx/rSFScW7GKBaxdv3iON15mNCvj3/eWW?= =?us-ascii?q?y9HYTVAGETAsU4dbOjWC/RarRu2vlJXmSgmU8NP8gIoidEKMQXy8hLgFsrxSHu?= =?us-ascii?q?5EkCr72CZRG5voiPKUvNqs6XdXuUdcEIlp9x3FBb9TPpNlNhTkjsOrXFRzBjPj?= =?us-ascii?q?eMHIcRojoOWWyf0W4+pgK0v+ZZQWIhYFy7Lm93VVThFhSKPtvlqDW+IeesdmQu?= =?us-ascii?q?vern9J8YJgN7MPPF+FqZzlsDhIrkw2AAguaLM3tTxVaE3OnAxTW6bpt78NkQ8c?= =?us-ascii?q?XsBjuU5MA228ImQ+6CTbVa5NlqmeFOQV8imPTqwJS0hoNyR+QxWp2JVhZbSkhv?= =?us-ascii?q?VHsmJckSN7vvcqzzJnRBymuS3vvKIBwzQg96+ktD8Zo3xKUv2ekzvUCVVE1PkK?= =?us-ascii?q?grsTC2356VClfXcNY4384LhhJcT9+ogs+Hs/YRA5cC0AQ+usESbwj7mHAoaXqt?= =?us-ascii?q?JTmAaNuNnSbb+0NSUSNLM9yRLlR3RnzgfenBJo8HYWTTSh7d8kIp69OcUkxiez?= =?us-ascii?q?B2jbdUgM7blNsMTstF4HVu02Zk19wG97yMiIWjUNRNDTG2YylgUkaHtEf4hF6R?= =?us-ascii?q?IBE6konyuHvqhB/gEPejvUFZ6l+obIl8fSxXY9Vctqxn7RpqCdhJMlznNlm91w?= =?us-ascii?q?7iOVtnUdberYXNFwAnTp0IdQ1/D+be23su8bUItm1KihUPgaP8ms/Wu235trVV?= =?us-ascii?q?GhxrQaBFe5K+gDxrHaUyi5U2GYX/qEc3SUlTYjLkHy/QWoLkEwaMpSrU89MuvD?= =?us-ascii?q?hoZblw3lULN0WjufqETezGwiLeMabRw5tJ2gewwQQ+4bf/KcKvQ2wP0iFFsMaG?= =?us-ascii?q?fEHSRrC++3rFGtm5N2O2l64UrkZ+Tt7hrpMN+IFRkCDYHar4R+9ea8Rm2fJX9q?= =?us-ascii?q?1AdyM1Vs9+fDC1QxsfdRc4qQndjVnNl7ze8FeOtuMSIjvt4fgIRj5peI0M2Sax?= =?us-ascii?q?He0o7yJc3JovifG/DfykUqemJZUroeeg715Z81Pt0+W73VA7RZuw4QBa4kT5w9?= =?us-ascii?q?L23x7r17LBtvcg7NY7S5mtLlqfyNZptIvHLW9VYwLCDAux0f1Py7UxF0Y4qth3?= =?us-ascii?q?XoL5A6XihBoMF1Cht6AItPHNsNrxKgA56Qgq67kdGw+0R+u+8EqqfwD/fK1NOi?= =?us-ascii?q?34pvQ5da/0uLPC3KBKlqhERlgf6+gvDa0pn+EcniY88LVPBnQm7Zbb/LBou/JS?= =?us-ascii?q?yKOsL9Y05J7aWR0bN4UhWUYSD2QbCGtCm6O/l+5kU70IN4dvLJzDMx97HbxMfy?= =?us-ascii?q?Z2ZDqyejsX6JNJxf7FnQCuzFRB9UTPuF8Hp/HaIJd4f08/0OMdM6ytiG/wZz9C?= =?us-ascii?q?hC0NeCI6W5oE7Mwlh7dZPHI0T3wCs5XIgKIAilMUQym2PZrW7dAXtEJMi+NcZt?= =?us-ascii?q?mMqVDgDq50RpnmEtYnBOF3HwRdeVI2cbwN6+ZAyW+wJXFdYMgfC4dVQ+tqKsVe?= =?us-ascii?q?liIo9FlvmytLUbjdZpLDnCRMxbPyHWMb93MSNdDuHOpFgzfh4EqKM4WoYvapiI?= =?us-ascii?q?J0MLKkCAyTn9zQHay037a8Ss1LqVICYR6nhH1KzK0TxNpwm/pPaYjcrvXr/FbJ?= =?us-ascii?q?H2QvHSKjQqVimASjkpEkam502ku/was/qcOmgfv18UbjiVCA4JqaBltcLQAXPL?= =?us-ascii?q?me1/YJ0Kg+iXWyTxSC1jiKo/HSdKtVmKQ/UZDwXWaWHugHZEsgy4OvBM5W7lb6?= =?us-ascii?q?GfxqdNXuwZGJdDcv2YQ9vefvBTPCkoljQfOOmie93crrA50k/HTGcDFKnI7lKe?= =?us-ascii?q?RlaMQvOA3zLrQZkVv48styoq4N3QnSh3HL/TMraCoT6u7o64jCGFue3RVmktf1?= =?us-ascii?q?Y5gOQcD2md2BNAMn0LC8kJuEHxRa6Nf0lM22gyhuJ02h8DZgBzX2Zw0n1Shvm9?= =?us-ascii?q?AcxZSUMOgGOoXvIGcEh9DCks8k+S/g3yfdsAtNjRR29b8bsMU5AdLPgz6ITMPq?= =?us-ascii?q?sf2vMp0yxnoCAgtCWdFVxdhBqf86XMBKJ82qFC5W4g8vFtUEGPRi/Qf2nEx4e9?= =?us-ascii?q?FcJA2z1uoXHl1srTuOBhLr1aqJ9lAF0SGyJ5Osjd/SxdUWHzwAayvRG7HDKaID?= =?us-ascii?q?8C5TYEOzEKduhyz+9hrBnHaMzN6UWOuKI9+wOXDlOQB7613oFbIt343gW/Ly9Q?= =?us-ascii?q?eHOkEI4lhOxKkYMsYL9vQI+8EVHaZlzgCwWaqSEX3ALnrrSiEYxBxWBIwfZkE8?= =?us-ascii?q?3gQ4RfVYqR5zp/2XsdgcNXwA=3D=3D?= X-IPAS-Result: =?us-ascii?q?A2GQBgA6yUpY/wHyM5BdHAEBBAEBCgEBFwEBBAEBCgEBgww?= =?us-ascii?q?BAQEBAR9agQamYQGKWIokKQOBd4V5UwEBAQEBAQEBAgECXyiCMxqBBVtDAiQTF?= =?us-ascii?q?CAOAwkCFykICAMBLRUfCwUYBIVzgleqMj0qAosyhj6IdAERAYV9AQSIY4Yei2q?= =?us-ascii?q?GT4pSAoFxUIdrhheHZoozVmI/JIJ2gkBxhn8PF4IXAQEB?= Received: from unknown (HELO tarius.tycho.ncsc.mil) ([144.51.242.1]) by emsm-gh1-uea10.nsa.gov with ESMTP; 09 Dec 2016 15:10:57 +0000 Received: from prometheus.infosec.tycho.ncsc.mil (prometheus [192.168.25.40]) by tarius.tycho.ncsc.mil (8.14.4/8.14.4) with ESMTP id uB9FADhV018938; Fri, 9 Dec 2016 10:10:24 -0500 Received: from tarius.tycho.ncsc.mil (tarius.infosec.tycho.ncsc.mil [144.51.242.1]) by prometheus.infosec.tycho.ncsc.mil (8.15.2/8.15.2) with ESMTP id uB9FAClN038737 for ; Fri, 9 Dec 2016 10:10:12 -0500 Received: from goalie.tycho.ncsc.mil (goalie [144.51.242.250]) by tarius.tycho.ncsc.mil (8.14.4/8.14.4) with ESMTP id uB9FAB5f018935 for ; Fri, 9 Dec 2016 10:10:12 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A1ATAQAnyEpYhxy3hNFdHAEBBAEBCgEBgzcBAQEBAXmBBqc8AYl9hhaEGRkIhgCBcFMBAgEBAQEBAhMBAQEKCwkJHYVGUoFRhhSCV6osPYtehj6IdIJ7C4MKBYhjhh6LaoZPilICgXFQjgKHZoozgXeDDmOBaT00hn+CPQEBAQ X-IPAS-Result: A1ATAQAnyEpYhxy3hNFdHAEBBAEBCgEBgzcBAQEBAXmBBqc8AYl9hhaEGRkIhgCBcFMBAgEBAQEBAhMBAQEKCwkJHYVGUoFRhhSCV6osPYtehj6IdIJ7C4MKBYhjhh6LaoZPilICgXFQjgKHZoozgXeDDmOBaT00hn+CPQEBAQ X-IronPort-AV: E=Sophos;i="5.33,324,1477972800"; d="scan'208";a="5870312" Received: from emsm-gh1-uea11.corp.nsa.gov (HELO emsm-gh1-uea11.nsa.gov) ([10.208.41.37]) by goalie.tycho.ncsc.mil with ESMTP; 09 Dec 2016 10:10:10 -0500 IronPort-PHdr: =?us-ascii?q?9a23=3AGXLppRW95Kegi0BHhV3+VghUIbHV8LGtZVwlr6E/?= =?us-ascii?q?grcLSJyIuqrYYh2Pt8tkgFKBZ4jH8fUM07OQ6PG7HzFeqszQ+Fk5M7V0Hycfjs?= =?us-ascii?q?sXmwFySOWkMmbcaMDQUiohAc5ZX0Vk9XzoeWJcGcL5ekGA6ibqtW1aFRrwLxd6?= =?us-ascii?q?KfroEYDOkcu3y/qy+5rOaAlUmTaxe71/IRG4oAnLtsQbgIRuJrg1xxDUvnZGZu?= =?us-ascii?q?NayH9yK1mOhRj8/MCw/JBi8yRUpf0s8tNLXLv5caolU7FWFSwqPG8p6sLlsxnD?= =?us-ascii?q?VhaP6WAHUmoKiBpIAhPK4w/8U5zsryb1rOt92C2dPc3rUbA5XCmp4ql3RBP0ji?= =?us-ascii?q?oMKjg0+3zVhMNtlqJWuBKvqQJizYDaY4+YL+Zycr/HcN8GWWZNQtpdWipcCY28?= =?us-ascii?q?dYsPCO8BMP5XoIn8u1sFsBywBQ6uBOLuyz9InWL90Kok0+QkFgHG3g0hH9MVsH?= =?us-ascii?q?nPttX6KrodUeCvw6nU1znMc/RW2TLk5YXObxsvr/aMXbdqfsrQz0kiDxjFgUuU?= =?us-ascii?q?qYzrJT+V0PoCs3Sd4uF9Vuyvk3Yqpx9trjWr3Msgl4fEipwPxlzZ9ih0zpw5Kc?= =?us-ascii?q?O7RUN9fNWqCoFftzuAOItzWs4iQ39nuCI9yrAevJ66czUGxI49xxHBdvOHc5KH?= =?us-ascii?q?4g75WOmNJjd4gWppeLO5hxms7Uit0vPwWtWw3VpQsyZInMfAumoQ2xHQ5MWLUO?= =?us-ascii?q?Vx80S51TaKzQ/T6+VEIU4ularcLp4s2qAwlp8UsUTBHy72mV72gbSMdko65+eo?= =?us-ascii?q?6/7oYqn8qpCAMI90jxnyMr4ylcynHeQ4Lg8OUnCA+eui0L3j/Ev5QKhFj/Atjq?= =?us-ascii?q?nYsIzVJcQcpqKjBQ9VyZws5wywDzehztRL1UUAeUlIfBOBkpjBJ0DFIPe+C+y2?= =?us-ascii?q?xVurjmRF3ffDa4PgHt3oKXrRkaypKah47ExOyREb191T55tITLoGJaSgCQfKqN?= =?us-ascii?q?XEA0phYESPyOH9BYAl2w=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0E8AgD5x0pYhxy3hNFdHAEBBAEBCgEBF?= =?us-ascii?q?wEBBAEBCgEBgwwBAQEBAXmBBqZiWgGJfYYWhBkZCIF3hAmBcFMBAQEBAQEBAQI?= =?us-ascii?q?BAhABAQEKCwkJHTCCMxiBB1tpUoFRhhSCV6orPYtehj6IdIJ7C4MKBYhjhh6La?= =?us-ascii?q?oZPilICgXFQjgKHZoozgXeDcYFpPTSGf4I9AQEB?= X-IPAS-Result: =?us-ascii?q?A0E8AgD5x0pYhxy3hNFdHAEBBAEBCgEBFwEBBAEBCgEBgww?= =?us-ascii?q?BAQEBAXmBBqZiWgGJfYYWhBkZCIF3hAmBcFMBAQEBAQEBAQIBAhABAQEKCwkJH?= =?us-ascii?q?TCCMxiBB1tpUoFRhhSCV6orPYtehj6IdIJ7C4MKBYhjhh6LaoZPilICgXFQjgK?= =?us-ascii?q?HZoozgXeDcYFpPTSGf4I9AQEB?= X-IronPort-AV: E=Sophos;i="5.33,324,1477958400"; d="scan'208";a="1445757" Received: from mx1.redhat.com ([209.132.183.28]) by emsm-gh1-uea11.nsa.gov with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 09 Dec 2016 15:10:09 +0000 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id C057491D36 for ; Fri, 9 Dec 2016 15:10:07 +0000 (UTC) Received: from Thinkpad_450.brq.redhat.com ([10.40.3.114]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id uB9FA6Sh002300; Fri, 9 Dec 2016 10:10:06 -0500 From: Vit Mojzis To: selinux@tycho.nsa.gov Subject: [PATCH 1/2] python/sepolicy/sepolicy: Cleanup of gui code Date: Fri, 9 Dec 2016 16:09:59 +0100 Message-Id: <1481296200-28904-1-git-send-email-vmojzis@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Fri, 09 Dec 2016 15:10:07 +0000 (UTC) X-BeenThere: selinux@tycho.nsa.gov X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Security-Enhanced Linux \(SELinux\) mailing list" List-Post: List-Help: MIME-Version: 1.0 Errors-To: selinux-bounces@tycho.nsa.gov Sender: "Selinux" X-Virus-Scanned: ClamAV using ClamSMTP Based on 77589dd354218f1f56d1c83747799606fa1b4899 by Dan Walsh. Speed up gui loading. Some minor bug fixes. Signed-off-by: Vit Mojzis --- python/sepolicy/sepolicy/gui.py | 134 ++++++++++---------------------- python/sepolicy/sepolicy/network.py | 8 +- python/sepolicy/sepolicy/sepolicy.glade | 72 ++--------------- 3 files changed, 53 insertions(+), 161 deletions(-) diff --git a/python/sepolicy/sepolicy/gui.py b/python/sepolicy/sepolicy/gui.py index 62104e1..115e18b 100644 --- a/python/sepolicy/sepolicy/gui.py +++ b/python/sepolicy/sepolicy/gui.py @@ -112,6 +112,7 @@ class SELinuxGui(): def __init__(self, app=None, test=False): self.finish_init = False + self.advanced_init = True self.opage = START_PAGE self.dbus = SELinuxDBus() try: @@ -120,12 +121,6 @@ class SELinuxGui(): print(e) self.quit() - sepolicy_domains = sepolicy.get_all_domains() - sepolicy_domains.sort(compare) - if app and app not in sepolicy_domains: - self.error(_("%s is not a valid domain" % app)) - self.quit() - self.init_cur() self.application = app self.filter_txt = "" @@ -149,7 +144,7 @@ class SELinuxGui(): self.files_add = False self.network_add = False - self.all_list = [] + self.all_domains = [] self.installed_list = [] self.previously_modified = {} @@ -161,10 +156,10 @@ class SELinuxGui(): self.invalid_entry = False # Advanced search window **************************** self.advanced_search_window = builder.get_object("advanced_search_window") - self.advanced_search_liststore = builder.get_object("Advanced_search_liststore") - self.advanced_search_liststore.set_sort_column_id(0, Gtk.SortType.ASCENDING) self.advanced_search_filter = builder.get_object("advanced_filter") self.advanced_search_filter.set_visible_func(self.filter_the_data) + self.advanced_search_sort = builder.get_object("advanced_sort") + self.advanced_filter_entry = builder.get_object("advanced_filter_entry") self.advanced_search_treeview = builder.get_object("advanced_search_treeview") self.advanced_search = False @@ -433,12 +428,10 @@ class SELinuxGui(): # Combobox and Entry items ************************** self.combobox_menu = builder.get_object("combobox_org") # This is the combobox box object, aka the arrow next to the entry text bar - self.combobox_menu_model = builder.get_object("application_liststore") + self.application_liststore = builder.get_object("application_liststore") self.completion_entry = builder.get_object("completion_entry") # self.combobox_menu.get_child() - self.completion_entry_model = builder.get_object("application_liststore") self.entrycompletion_obj = builder.get_object("entrycompletion_obj") #self.entrycompletion_obj = Gtk.EntryCompletion() - self.entrycompletion_obj.set_model(self.completion_entry_model) self.entrycompletion_obj.set_minimum_key_length(0) self.entrycompletion_obj.set_text_column(0) self.entrycompletion_obj.set_match_func(self.match_func, None) @@ -493,20 +486,24 @@ class SELinuxGui(): self.loading = 1 path = None if test: - domains = ["httpd_t", "abrt_t"] - if app and app not in domains: - domains.append(app) + self.all_domains = ["httpd_t", "abrt_t"] + if app and app not in self.all_domains: + self.all_domains.append(app) else: - domains = sepolicy_domains - loading_gui.show() - length = len(domains) - for domain in domains: + self.all_domains = sepolicy.get_all_domains() + self.all_domains.sort(key=str.lower) + + if app and app not in self.all_domains: + self.error(_("%s is not a valid domain" % app)) + self.quit() + + loading_gui.show() + length = len(self.all_domains) + for domain in self.all_domains: # After the user selects a path in the drop down menu call # get_init_entrypoint_target(entrypoint) to get the transtype # which will give you the application - self.combo_box_initialize(domain, None) - self.advanced_search_initialize(domain) - self.all_list.append(domain) + self.combo_box_add(domain, domain) self.percentage = float(float(self.loading) / float(length)) self.progress_bar.set_fraction(self.percentage) self.progress_bar.set_pulse_step(self.percentage) @@ -516,14 +513,13 @@ class SELinuxGui(): for entrypoint in entrypoints: path = sepolicy.find_entrypoint_path(entrypoint) if path: - self.combo_box_initialize(path, None) - # Adds all files entrypoint paths that exists on disc - # into the combobox - self.advanced_search_initialize(path) + self.combo_box_add(path, domain) self.installed_list.append(path) self.loading += 1 loading_gui.hide() + self.entrycompletion_obj.set_model(self.application_liststore) + self.advanced_search_treeview.set_model(self.advanced_search_sort) dic = { "on_combo_button_clicked": self.open_combo_menu, @@ -555,7 +551,7 @@ class SELinuxGui(): "on_file_equiv_button_clicked": self.show_file_equiv_page, "on_app/system_button_clicked": self.system_interface, "on_app/users_button_clicked": self.users_interface, - "on_main_advanced_label_button_press_event": self.advanced_label_main, + "on_show_advanced_search_window": self.on_show_advanced_search_window, "on_Show_mislabeled_files_toggled": self.show_mislabeled_files, "on_Browse_button_files_clicked": self.browse_for_files, @@ -571,8 +567,6 @@ class SELinuxGui(): "on_advanced_filter_entry_changed": self.get_advanced_filter_data, "on_advanced_search_treeview_row_activated": self.advanced_item_selected, "on_Select_advanced_search_clicked": self.advanced_item_button_push, - "on_All_advanced_button_toggled": self.advanced_radio_select, - "on_Installed_advanced_button_toggled": self.advanced_radio_select, "on_info_button_button_press_event": self.on_help_button, "on_back_button_clicked": self.on_help_back_clicked, "on_forward_button_clicked": self.on_help_forward_clicked, @@ -713,7 +707,7 @@ class SELinuxGui(): def match_func(self, completion, key_string, iter, func_data): try: - if self.combobox_menu_model.get_value(iter, 0).find(key_string) != -1: + if self.application_liststore.get_value(iter, 0).find(key_string) != -1: return True return False except AttributeError: @@ -924,11 +918,11 @@ class SELinuxGui(): self.ready_mouse() def network_initialize(self, app): - netd = sepolicy.network.get_network_connect(app, "tcp", "name_connect") + netd = sepolicy.network.get_network_connect(app, "tcp", "name_connect", check_bools=True) self.net_update(app, netd, "tcp", OUTBOUND_PAGE, self.network_out_liststore) - netd = sepolicy.network.get_network_connect(app, "tcp", "name_bind") + netd = sepolicy.network.get_network_connect(app, "tcp", "name_bind", check_bools=True) self.net_update(app, netd, "tcp", INBOUND_PAGE, self.network_in_liststore) - netd = sepolicy.network.get_network_connect(app, "udp", "name_bind") + netd = sepolicy.network.get_network_connect(app, "udp", "name_bind", check_bools=True) self.net_update(app, netd, "udp", INBOUND_PAGE, self.network_in_liststore) def network_initial_data_insert(self, model, ports, portType, protocol): @@ -964,12 +958,12 @@ class SELinuxGui(): iter = liststore.get_iter(index) return liststore.get_value(iter, 0) - def combo_box_initialize(self, val, desc): + def combo_box_add(self, val, val1): if val is None: return - iter = self.combobox_menu_model.append() - for f in val: - self.combobox_menu_model.set_value(iter, 0, val) + iter = self.application_liststore.append() + self.application_liststore.set_value(iter, 0, val) + self.application_liststore.set_value(iter, 1, val1) def select_type_more(self, *args): app = self.moreTypes_treeview.get_selection() @@ -985,19 +979,18 @@ class SELinuxGui(): model, iter = row.get_selected() iter = model.convert_iter_to_child_iter(iter) iter = self.advanced_search_filter.convert_iter_to_child_iter(iter) - app = self.advanced_search_liststore.get_value(iter, 1) + app = self.application_liststore.get_value(iter, 1) if app is None: return self.advanced_filter_entry.set_text('') self.advanced_search_window.hide() self.reveal_advanced(self.main_advanced_label) self.completion_entry.set_text(app) - self.application_selected() def advanced_item_selected(self, treeview, path, *args): iter = self.advanced_search_filter.get_iter(path) iter = self.advanced_search_filter.convert_iter_to_child_iter(iter) - app = self.advanced_search_liststore.get_value(iter, 1) + app = self.application_liststore.get_value(iter, 1) self.advanced_filter_entry.set_text('') self.advanced_search_window.hide() self.reveal_advanced(self.main_advanced_label) @@ -1006,7 +999,7 @@ class SELinuxGui(): def find_application(self, app): if app and len(app) > 0: - for items in self.combobox_menu_model: + for items in self.application_liststore: if app == items[0]: return True return False @@ -1637,7 +1630,7 @@ class SELinuxGui(): self.files_type_combolist.clear() self.files_class_combolist.clear() compare = self.strip_domain(self.application) - for d in self.completion_entry_model: + for d in self.application_liststore: if d[0].startswith(compare) and d[0] != self.application and not d[0].startswith("httpd_sys"): exclude_list.append(self.strip_domain(d[0])) @@ -1716,10 +1709,10 @@ class SELinuxGui(): try: if ipage == OUTBOUND_PAGE: - netd = sepolicy.network.get_network_connect(self.application, "tcp", "name_connect") + netd = sepolicy.network.get_network_connect(self.application, "tcp", "name_connect", check_bools=True) elif ipage == INBOUND_PAGE: - netd = sepolicy.network.get_network_connect(self.application, "tcp", "name_bind") - netd += sepolicy.network.get_network_connect(self.application, "udp", "name_bind") + netd = sepolicy.network.get_network_connect(self.application, "tcp", "name_bind", check_bools=True) + netd += sepolicy.network.get_network_connect(self.application, "udp", "name_bind", check_bools=True) port_types = [] for k in netd.keys(): @@ -2552,34 +2545,7 @@ class SELinuxGui(): self.network_mls_label.set_visible(advanced) self.network_mls_entry.set_visible(advanced) - def advanced_search_initialize(self, path): - try: - if path[0] == '/': - domain = sepolicy.get_init_transtype(path) - else: - domain = path - except IndexError: - return - except OSError: - return - iter = self.advanced_search_liststore.append() - self.advanced_search_liststore.set_value(iter, 0, path) - self.advanced_search_liststore.set_value(iter, 1, domain) - user_types = sepolicy.get_user_types() - if domain in user_types + ['initrc_t']: - return - - entrypoints = sepolicy.get_entrypoints(domain) - # From entry_point = 0 to the number of keys in the dic - for exe in entrypoints: - if len(entrypoints[exe]): - file_class = entrypoints[exe][1] - for path in entrypoints[exe][0]: - iter = self.advanced_search_liststore.append() - self.advanced_search_liststore.set_value(iter, 1, domain) - self.advanced_search_liststore.set_value(iter, 0, path) - - def advanced_label_main(self, label, *args): + def on_show_advanced_search_window(self, label, *args): if label.get_text() == ADVANCED_SEARCH_LABEL[1]: label.set_text(ADVANCED_SEARCH_LABEL[0]) self.close_popup() @@ -2587,25 +2553,6 @@ class SELinuxGui(): label.set_text(ADVANCED_SEARCH_LABEL[1]) self.show_popup(self.advanced_search_window) - def advanced_radio_select(self, button): - label = "" - if button.get_active(): - label = button.get_label() - if label == '': - return - self.advanced_search_liststore.clear() - if label == "All": - for items in self.all_list: - self.advanced_search_initialize(items) - self.idle_func() - - elif label == "Installed": - if self.installed_list == []: - return - for items in self.installed_list: - self.advanced_search_initialize(items) - self.idle_func() - def set_enforce_text(self, value): if value: self.status_bar.push(self.context_id, _("System Status: Enforcing")) @@ -2615,6 +2562,9 @@ class SELinuxGui(): self.current_status_permissive.set_active(True) def set_enforce(self, button): + if not self.finish_init: + return + self.dbus.setenforce(button.get_active()) self.set_enforce_text(button.get_active()) diff --git a/python/sepolicy/sepolicy/network.py b/python/sepolicy/sepolicy/network.py index c4d95da..115f6b8 100755 --- a/python/sepolicy/sepolicy/network.py +++ b/python/sepolicy/sepolicy/network.py @@ -23,20 +23,20 @@ import sepolicy -def get_types(src, tclass, perm): +def get_types(src, tclass, perm, check_bools=False): allows = sepolicy.search([sepolicy.ALLOW], {sepolicy.SOURCE: src, sepolicy.CLASS: tclass, sepolicy.PERMS: perm}) nlist = [] if allows: - for i in map(lambda y: y[sepolicy.TARGET], filter(lambda x: set(perm).issubset(x[sepolicy.PERMS]), allows)): + for i in map(lambda y: y[sepolicy.TARGET], filter(lambda x: set(perm).issubset(x[sepolicy.PERMS]) and (not check_bools or x["enabled"]), allows)): if i not in nlist: nlist.append(i) return nlist -def get_network_connect(src, protocol, perm): +def get_network_connect(src, protocol, perm, check_bools=False): portrecs, portrecsbynum = sepolicy.gen_port_dict() d = {} - tlist = get_types(src, "%s_socket" % protocol, [perm]) + tlist = get_types(src, "%s_socket" % protocol, [perm], check_bools) if len(tlist) > 0: d[(src, protocol, perm)] = [] for i in tlist: diff --git a/python/sepolicy/sepolicy/sepolicy.glade b/python/sepolicy/sepolicy/sepolicy.glade index 00905e0..e7d96f9 100644 --- a/python/sepolicy/sepolicy/sepolicy.glade +++ b/python/sepolicy/sepolicy/sepolicy.glade @@ -2,7 +2,7 @@ - + @@ -82,7 +82,7 @@ - + True @@ -225,7 +225,7 @@ - Advanced_search_liststore + application_liststore advanced_filter @@ -256,24 +256,6 @@ application_files_filter - - - - - - - - application_liststore - - - application_filter - - - - - - - @@ -473,7 +455,7 @@ False 0 10 - Add file Equivilence Mapping. Mapping will be created when Update is applied. + Add file Equivalence Mapping. Mapping will be created when Update is applied. fill True @@ -823,7 +805,7 @@ True True False - Select Make Path Recursive iff you want to apply this label to all children of the specified directory path. objects under the directory to have this label. + Select Make Path Recursive if you want to apply this label to all children of the specified directory path. objects under the directory to have this label. 0.5 True @@ -2948,7 +2930,7 @@ Enabled Executables which will transition to a different domain, when the 'selected domain' executes them. 1 1 - Applicaton Transitions From 'select domain' + Application Transitions From 'select domain' 1 @@ -4328,46 +4310,7 @@ allow alternative access control. 0 - - - All - True - True - False - 0.5 - True - True - - - - True - True - 1 - - - - - Installed - True - True - False - 0.5 - True - All_advanced_button - - - - True - True - 2 - - - - False - True - 0 - @@ -4377,7 +4320,6 @@ allow alternative access control. True True - advanced_sort False @@ -4788,7 +4730,7 @@ allow alternative access control. False 0 10 - Select file equivalence labeling to delete.File equivalence labeling will be deleted when update is applied. + Select file equivalence labeling to delete. File equivalence labeling will be deleted when update is applied. fill True