File: //proc/676643/root/lib/python3/dist-packages/apparmor/__pycache__/regex.cpython-310.pyc
o
T��e�) � @ s@ d dl Z d dlmZmZ d dlmZ e� ZdZdZde Z dZ
dZd e d
Zd e d Z
dZd
ZdZe �de �Ze �ed e �Ze �de �Ze �de �Ze jde e jd�Ze �de �Ze �de �Ze �d�Ze �d�Ze �ed e �Ze �de �Ze �de d e �Ze �ed e �Ze �ed e �Z e �ed e �Z!e �ed e �Z"e �ed! e �Z#e �ed" e �Z$e �ed# e �Z%d$Z&e �d%e& d& �Z'e �d'e& d( d) �Z(e �d*e
d+ d, d- d. d/ e
d0 d1 e
d2 d3 d( d( e e d e �Z)e �ed4 d1 e d3 d1 e
d5 d3 d6 e
d7 d3 e �Z*d8Z+e �ed9 d- d: d, d; d- e
d< d/ e+d= d, e+d> d/ e
d? d( d6 e
d@ d3 d, dA dB e
dC d/ dD d/ e
dE d( e �Z,dFdG� Z-dHZ.e �dIe. e �Z/e �dJe. e �Z0dKdL� Z1dMdN� Z2dOdP� Z3dQdR� Z4dS )S� N)�AppArmorBug�AppArmorException)�init_translationz4^\s*(?P<audit>audit\s+)?(?P<allow>allow\s+|deny\s+)?z\s*(?P<comment>#.*?)?\s*$z\s*,z(?P<%s>(\S+|"[^"]+"))z
/\S*|"/[^"]*"z(?P<%s>(z))z|@{\S+}\S*|"@{\S+}[^"]*"))z(?P<execmode>(safe|unsafe))z<(\s+xattrs\s*=\s*\((?P<xattrs>([^)=]+(=[^)=]+)?\s?)+)\)\s*)?z)(\s+(flags\s*=\s*)?\((?P<flags>[^)]+)\))?z^\s*\}z$capability(?P<capability>(\s+\S+)+)?zA^\s*alias\s+(?P<orig_path>"??.+?"??)\s+->\s*(?P<target>"??.+?"??)zL^\s*set\s+rlimit\s+(?P<rlimit>[a-z]+)\s*<=\s*(?P<value>[^ ]+(\s+[a-zA-Z]+)?)z)^\s*(\$\{?\w*\}?)\s*=\s*(true|false)\s*,?)�flagsz@^\s*(?P<varname>@\{?\w+\}?)\s*(?P<mode>\+?=)\s*(?P<values>@*.+?)z$^\s*if\s+(not\s+)?(\$\{?\w*\}?)\s*\{z7^\s*if\s+(not\s+)?defined\s+(@\{?\w+\}?)\s*\{\s*(#.*)?$z8^\s*if\s+(not\s+)?defined\s+(\$\{?\w+\}?)\s*\{\s*(#.*)?$znetwork(?P<details>\s+.*)?z^\s*\^("??.+?"??)zE^(?P<leadingspace>\s*)(?P<hat_keyword>\^|hat\s+)(?P<hat>"??[^)]+?"??)z\s*\{z((dbus\s*,|dbus(?P<details>\s+[^#]*)\s*,)z/((mount|remount|umount|unmount)(\s+[^#]*)?\s*,)z,(signal\s*,|signal(?P<details>\s+[^#]*)\s*,)z,(ptrace\s*,|ptrace(?P<details>\s+[^#]*)\s*,)z'(pivot_root\s*,|pivot_root\s+[^#]*\s*,)z(unix\s*,|unix\s+[^#]*\s*,)z,(mqueue\s*,|mqueue(?P<details>\s+[^#]*)\s*,)z([^#"]|"[^"]*")*�^z,\s*(#.*)?$z^(?P<not_comment>�)z(?P<comment>#.*)$z^(?P<leadingspace>\s*)(�plainprofile�|�(�profilez\s+�namedprofilez(\s+�
attachmentz)?�change_profile�execcondz (\s+->\s*�
targetprofilez(?P<%s>[mrwalkPUCpucix]+)z(?P<owner>owner\s+)?z(?P<bare_file>file)z(?P<file_keyword>file\s+)?�path�perms�perms2�path2�targetz(?P<link_keyword>link\s+)z(?P<subset_keyword>subset\s+)?� link_pathz->�link_targetc C s� t �| �}|std|| d� ��i }dD ]}|�|�r/|�|�||<