teor 28d4355a6e Add networkstatus_consensus_has_ipv6() and unit tests %!s(int64=6) %!d(string=hai) anos
..
Makefile.nmake b0e92634d8 Netflow record collapsing defense. %!s(int64=7) %!d(string=hai) anos
addressmap.c fa0d24286b Convert remaining function (mostly static) to new free style %!s(int64=6) %!d(string=hai) anos
addressmap.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
bridges.c fa0d24286b Convert remaining function (mostly static) to new free style %!s(int64=6) %!d(string=hai) anos
bridges.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
channel.c 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
channel.h 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
channelpadding.c 91467e04b1 Merge branch 'bug22805_v2_squashed' %!s(int64=6) %!d(string=hai) anos
channelpadding.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
channeltls.c 6120efd771 chan: Do not re-queue after a fail cell write %!s(int64=6) %!d(string=hai) anos
channeltls.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
circpathbias.c c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
circpathbias.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
circuitbuild.c 0340c02975 Merge remote-tracking branch 'mikeperry/bug23114_squashed2' %!s(int64=6) %!d(string=hai) anos
circuitbuild.h 0340c02975 Merge remote-tracking branch 'mikeperry/bug23114_squashed2' %!s(int64=6) %!d(string=hai) anos
circuitlist.c 0340c02975 Merge remote-tracking branch 'mikeperry/bug23114_squashed2' %!s(int64=6) %!d(string=hai) anos
circuitlist.h 0340c02975 Merge remote-tracking branch 'mikeperry/bug23114_squashed2' %!s(int64=6) %!d(string=hai) anos
circuitmux.c b0cc9856ee Update free functions into macros: src/or/ part 1 %!s(int64=6) %!d(string=hai) anos
circuitmux.h 17dcce3fe1 Fix wide lines introduced by previous patch. %!s(int64=6) %!d(string=hai) anos
circuitmux_ewma.c 5ee6ca8da2 Switch to offsetof() %!s(int64=6) %!d(string=hai) anos
circuitmux_ewma.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
circuitstats.c 0340c02975 Merge remote-tracking branch 'mikeperry/bug23114_squashed2' %!s(int64=6) %!d(string=hai) anos
circuitstats.h 125df07d60 Report close and timeout rates since uptime, not based on data. %!s(int64=6) %!d(string=hai) anos
circuituse.c 0340c02975 Merge remote-tracking branch 'mikeperry/bug23114_squashed2' %!s(int64=6) %!d(string=hai) anos
circuituse.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
command.c 91467e04b1 Merge branch 'bug22805_v2_squashed' %!s(int64=6) %!d(string=hai) anos
command.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
config.c 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
config.h 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
confparse.c b0cc9856ee Update free functions into macros: src/or/ part 1 %!s(int64=6) %!d(string=hai) anos
confparse.h 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
connection.c 0792cc107e Convert connection_free to a nulling macro. %!s(int64=6) %!d(string=hai) anos
connection.h 17dcce3fe1 Fix wide lines introduced by previous patch. %!s(int64=6) %!d(string=hai) anos
connection_edge.c 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
connection_edge.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
connection_or.c 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
connection_or.h 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
conscache.c 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
conscache.h 17dcce3fe1 Fix wide lines introduced by previous patch. %!s(int64=6) %!d(string=hai) anos
consdiff.c c12d2cb2dc Request (and try to use) consensus diffs. %!s(int64=7) %!d(string=hai) anos
consdiff.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
consdiffmgr.c 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
consdiffmgr.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
control.c 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
control.h 8c02fc15ae control: Don't use void pointer for ADD_ONION secret key %!s(int64=6) %!d(string=hai) anos
cpuworker.c fa0d24286b Convert remaining function (mostly static) to new free style %!s(int64=6) %!d(string=hai) anos
cpuworker.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
dircollate.c fa0d24286b Convert remaining function (mostly static) to new free style %!s(int64=6) %!d(string=hai) anos
dircollate.h 17dcce3fe1 Fix wide lines introduced by previous patch. %!s(int64=6) %!d(string=hai) anos
directory.c 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
directory.h 17dcce3fe1 Fix wide lines introduced by previous patch. %!s(int64=6) %!d(string=hai) anos
dirserv.c 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
dirserv.h 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
dirvote.c 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
dirvote.h 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
dns.c 0792cc107e Convert connection_free to a nulling macro. %!s(int64=6) %!d(string=hai) anos
dns.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
dns_structs.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
dnsserv.c 0792cc107e Convert connection_free to a nulling macro. %!s(int64=6) %!d(string=hai) anos
dnsserv.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
entrynodes.c 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
entrynodes.h 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
ext_orport.c fa0d24286b Convert remaining function (mostly static) to new free style %!s(int64=6) %!d(string=hai) anos
ext_orport.h fa0d24286b Convert remaining function (mostly static) to new free style %!s(int64=6) %!d(string=hai) anos
fallback_dirs.inc 5b45d73293 Update fallback directory mirrors in May 2017 %!s(int64=7) %!d(string=hai) anos
fp_pair.c 176ad729d9 Change the free macro convention in the rest of src/or/*.h %!s(int64=6) %!d(string=hai) anos
fp_pair.h 176ad729d9 Change the free macro convention in the rest of src/or/*.h %!s(int64=6) %!d(string=hai) anos
geoip.c fa0d24286b Convert remaining function (mostly static) to new free style %!s(int64=6) %!d(string=hai) anos
geoip.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
git_revision.c 72b5e4a2db Move tor_git_revision into a new module. %!s(int64=6) %!d(string=hai) anos
git_revision.h bf882b0373 re-run ./scripts/maint/annotate_ifdef_directives %!s(int64=6) %!d(string=hai) anos
hibernate.c c9ad172dd4 Merge branch 'bug23571_033_squashed' %!s(int64=6) %!d(string=hai) anos
hibernate.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
hs_cache.c 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
hs_cache.h 05766eae30 hs-v3: Add an encoded descriptor client cache lookup function %!s(int64=6) %!d(string=hai) anos
hs_cell.c 7c543412fc prop224: Add a function to clear INTRO data %!s(int64=6) %!d(string=hai) anos
hs_cell.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
hs_circuit.c eb793c31cf Add error message for exit_node in hs_circ_send_introduce1() %!s(int64=6) %!d(string=hai) anos
hs_circuit.h bf882b0373 re-run ./scripts/maint/annotate_ifdef_directives %!s(int64=6) %!d(string=hai) anos
hs_circuitmap.c fa0d24286b Convert remaining function (mostly static) to new free style %!s(int64=6) %!d(string=hai) anos
hs_circuitmap.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
hs_client.c 743d0b9d91 hs-v3: Implement HS_DESC REQUESTED event %!s(int64=6) %!d(string=hai) anos
hs_client.h 5dbcd48f0e hs-v3: Attempt descriptor refetch when dirinfo changes %!s(int64=6) %!d(string=hai) anos
hs_common.c 176ad729d9 Change the free macro convention in the rest of src/or/*.h %!s(int64=6) %!d(string=hai) anos
hs_common.h 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
hs_config.c cc072b6fbf Stop users configuring IPv6-only v3 single onion services %!s(int64=6) %!d(string=hai) anos
hs_config.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
hs_control.c 9fa38bd996 Check the return value of hs_parse_address(). %!s(int64=6) %!d(string=hai) anos
hs_control.h 683fccba8f hs-v3: Add an handler for the HSPOST command %!s(int64=6) %!d(string=hai) anos
hs_descriptor.c 176ad729d9 Change the free macro convention in the rest of src/or/*.h %!s(int64=6) %!d(string=hai) anos
hs_descriptor.h 17dcce3fe1 Fix wide lines introduced by previous patch. %!s(int64=6) %!d(string=hai) anos
hs_ident.c 176ad729d9 Change the free macro convention in the rest of src/or/*.h %!s(int64=6) %!d(string=hai) anos
hs_ident.h 17dcce3fe1 Fix wide lines introduced by previous patch. %!s(int64=6) %!d(string=hai) anos
hs_intropoint.c 6045bdd4a0 hs: Avoid possible double circuit close on error %!s(int64=6) %!d(string=hai) anos
hs_intropoint.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
hs_ntor.c 70d08f764d Explicit length checks in create_rend_cpath(). %!s(int64=7) %!d(string=hai) anos
hs_ntor.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
hs_service.c 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
hs_service.h 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
include.am 743d0b9d91 hs-v3: Implement HS_DESC REQUESTED event %!s(int64=6) %!d(string=hai) anos
keypin.c 7505f452c8 Run the copyright update script. %!s(int64=7) %!d(string=hai) anos
keypin.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
main.c a7a0cebb59 Merge branch 'more_directories_squashed' %!s(int64=6) %!d(string=hai) anos
main.h ef25f957e7 Merge branch 'tor_api_squashed' %!s(int64=6) %!d(string=hai) anos
microdesc.c a7a0cebb59 Merge branch 'more_directories_squashed' %!s(int64=6) %!d(string=hai) anos
microdesc.h 176ad729d9 Change the free macro convention in the rest of src/or/*.h %!s(int64=6) %!d(string=hai) anos
networkstatus.c 28d4355a6e Add networkstatus_consensus_has_ipv6() and unit tests %!s(int64=6) %!d(string=hai) anos
networkstatus.h 28d4355a6e Add networkstatus_consensus_has_ipv6() and unit tests %!s(int64=6) %!d(string=hai) anos
nodelist.c fa0d24286b Convert remaining function (mostly static) to new free style %!s(int64=6) %!d(string=hai) anos
nodelist.h a5ef2b619d Make node_get_curve25519_onion_key() return a const ptr %!s(int64=6) %!d(string=hai) anos
ntmain.c 1df43aff41 Return instead of exiting in options_init_from_torrc() %!s(int64=6) %!d(string=hai) anos
ntmain.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
onion.c 176ad729d9 Change the free macro convention in the rest of src/or/*.h %!s(int64=6) %!d(string=hai) anos
onion.h 17dcce3fe1 Fix wide lines introduced by previous patch. %!s(int64=6) %!d(string=hai) anos
onion_fast.c 176ad729d9 Change the free macro convention in the rest of src/or/*.h %!s(int64=6) %!d(string=hai) anos
onion_fast.h 285632a61b Replace all FREE_AND_NULL* uses to take a type and a free function. %!s(int64=6) %!d(string=hai) anos
onion_ntor.c 176ad729d9 Change the free macro convention in the rest of src/or/*.h %!s(int64=6) %!d(string=hai) anos
onion_ntor.h 285632a61b Replace all FREE_AND_NULL* uses to take a type and a free function. %!s(int64=6) %!d(string=hai) anos
onion_tap.c 6c8c973191 Rename the hybrid_encrypt/decrypt functions; label them as dangerous %!s(int64=6) %!d(string=hai) anos
onion_tap.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
or.h 5f518c69aa Merge remote-tracking branch 'public/monotime_coarse_stamps' %!s(int64=6) %!d(string=hai) anos
parsecommon.c 4ff170d7b1 Fix warnings about passing uninitialized buffers into functions %!s(int64=6) %!d(string=hai) anos
parsecommon.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
periodic.c 7505f452c8 Run the copyright update script. %!s(int64=7) %!d(string=hai) anos
periodic.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
policies.c 176ad729d9 Change the free macro convention in the rest of src/or/*.h %!s(int64=6) %!d(string=hai) anos
policies.h 17dcce3fe1 Fix wide lines introduced by previous patch. %!s(int64=6) %!d(string=hai) anos
proto_cell.c b8b016940d Add unit tests for var_cell and control0 proto functions. %!s(int64=6) %!d(string=hai) anos
proto_cell.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
proto_control0.c 6ec5059723 Refactor buffer APIs to put a buf_t first. %!s(int64=6) %!d(string=hai) anos
proto_control0.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
proto_ext_or.c 6ec5059723 Refactor buffer APIs to put a buf_t first. %!s(int64=6) %!d(string=hai) anos
proto_ext_or.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
proto_http.c 6ec5059723 Refactor buffer APIs to put a buf_t first. %!s(int64=6) %!d(string=hai) anos
proto_http.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
proto_socks.c 176ad729d9 Change the free macro convention in the rest of src/or/*.h %!s(int64=6) %!d(string=hai) anos
proto_socks.h 17dcce3fe1 Fix wide lines introduced by previous patch. %!s(int64=6) %!d(string=hai) anos
protover.c 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
protover.h b189c613bb move a macro; fix a build? %!s(int64=6) %!d(string=hai) anos
protover_rust.c bf882b0373 re-run ./scripts/maint/annotate_ifdef_directives %!s(int64=6) %!d(string=hai) anos
reasons.c c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
reasons.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
relay.c 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
relay.h 17dcce3fe1 Fix wide lines introduced by previous patch. %!s(int64=6) %!d(string=hai) anos
rendcache.c db024adc90 Switch to a safer FREE_AND_NULL implementation %!s(int64=6) %!d(string=hai) anos
rendcache.h 17dcce3fe1 Fix wide lines introduced by previous patch. %!s(int64=6) %!d(string=hai) anos
rendclient.c 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
rendclient.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
rendcommon.c 176ad729d9 Change the free macro convention in the rest of src/or/*.h %!s(int64=6) %!d(string=hai) anos
rendcommon.h 17dcce3fe1 Fix wide lines introduced by previous patch. %!s(int64=6) %!d(string=hai) anos
rendmid.c c59ba01550 rephist: Remove unused crypto_pk statistics. %!s(int64=6) %!d(string=hai) anos
rendmid.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
rendservice.c 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
rendservice.h 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
rephist.c 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
rephist.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
replaycache.c 176ad729d9 Change the free macro convention in the rest of src/or/*.h %!s(int64=6) %!d(string=hai) anos
replaycache.h 17dcce3fe1 Fix wide lines introduced by previous patch. %!s(int64=6) %!d(string=hai) anos
router.c 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
router.h 285632a61b Replace all FREE_AND_NULL* uses to take a type and a free function. %!s(int64=6) %!d(string=hai) anos
routerkeys.c 3907faf2fd New accessors for keydir/cachedir access %!s(int64=6) %!d(string=hai) anos
routerkeys.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
routerlist.c 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
routerlist.h 17dcce3fe1 Fix wide lines introduced by previous patch. %!s(int64=6) %!d(string=hai) anos
routerparse.c 0626031564 Merge branch 'ticket20895' %!s(int64=6) %!d(string=hai) anos
routerparse.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
routerset.c 176ad729d9 Change the free macro convention in the rest of src/or/*.h %!s(int64=6) %!d(string=hai) anos
routerset.h 285632a61b Replace all FREE_AND_NULL* uses to take a type and a free function. %!s(int64=6) %!d(string=hai) anos
scheduler.c fcdec00685 Merge branch 'maint-0.3.2' %!s(int64=6) %!d(string=hai) anos
scheduler.h 2e8de0de3b sched: Implement SCHED_BUG() %!s(int64=6) %!d(string=hai) anos
scheduler_kist.c 5ee0cccd49 Merge branch 'macro_free_v2_squashed' %!s(int64=6) %!d(string=hai) anos
scheduler_vanilla.c 22699e3f16 sched: only log when scheduler type changes %!s(int64=6) %!d(string=hai) anos
shared_random.c fa0d24286b Convert remaining function (mostly static) to new free style %!s(int64=6) %!d(string=hai) anos
shared_random.h 285632a61b Replace all FREE_AND_NULL* uses to take a type and a free function. %!s(int64=6) %!d(string=hai) anos
shared_random_state.c fa0d24286b Convert remaining function (mostly static) to new free style %!s(int64=6) %!d(string=hai) anos
shared_random_state.h fa0d24286b Convert remaining function (mostly static) to new free style %!s(int64=6) %!d(string=hai) anos
statefile.c 176ad729d9 Change the free macro convention in the rest of src/or/*.h %!s(int64=6) %!d(string=hai) anos
statefile.h 285632a61b Replace all FREE_AND_NULL* uses to take a type and a free function. %!s(int64=6) %!d(string=hai) anos
status.c 7505f452c8 Run the copyright update script. %!s(int64=7) %!d(string=hai) anos
status.h c1deabd3b0 Run our #else/#endif annotator on our source code. %!s(int64=6) %!d(string=hai) anos
tor_api.c fa02ea102e Add a public tor_api.h with an implementation in tor_api.c %!s(int64=6) %!d(string=hai) anos
tor_api.h 7700b99fe6 easy typos while reviewing commits %!s(int64=6) %!d(string=hai) anos
tor_api_internal.h bf882b0373 re-run ./scripts/maint/annotate_ifdef_directives %!s(int64=6) %!d(string=hai) anos
tor_main.c 7700b99fe6 easy typos while reviewing commits %!s(int64=6) %!d(string=hai) anos
torcert.c 176ad729d9 Change the free macro convention in the rest of src/or/*.h %!s(int64=6) %!d(string=hai) anos
torcert.h 285632a61b Replace all FREE_AND_NULL* uses to take a type and a free function. %!s(int64=6) %!d(string=hai) anos
transports.c 176ad729d9 Change the free macro convention in the rest of src/or/*.h %!s(int64=6) %!d(string=hai) anos
transports.h 285632a61b Replace all FREE_AND_NULL* uses to take a type and a free function. %!s(int64=6) %!d(string=hai) anos